end Bounty /- One-file Erdős 1062(ii) proof candidate. The submission body is independent of local modules and data files. -/ /- Component PolicyCombinatorialFrontFast; SHA256 9f1109298a4d819400a9ca244751c04849e7fee75492eae7fa39e0a2f8219316. -/ section PolicySubmissionPart0 /- Ordinary combinatorial front: compact finite base, normalization, depth-5 closure, and both input families. -/ /- Frozen source PolicyBaseExactCompact; SHA256 e2225388355ddc67c206ff2e1867c675da6447335cd4360f12ac0457d05386a2. -/ section PolicyCombinatorialFront_PolicyBaseExactCompact /- One-file proof candidate assembled from the actual local import graph. A complete ordinary-kernel check and target axiom audit are still required. -/ /- Component Solution; SHA256 dd1b2e49c0e97dfe5eb14a613957f604da4aacacc129697486e6add57caf69ab -/ section SubmissionComponent_Solution /- Combinatorial and arithmetic lemmas for Erdős 1062(ii). -/ open Filter open scoped Topology namespace Bounty def forkFree_iff (A : Set ℕ) : Erdos1062.ForkFree A ↔ ∀ a b c, a ∈ A → b ∈ A → c ∈ A → a ≠ b → a ≠ c → a ∣ b → a ∣ c → b = c := by simp only [Erdos1062.ForkFree, Set.Subsingleton, Set.mem_ofPred_eq, Set.mem_sdiff, Set.mem_singleton_iff] aesop def forkFree_mono {A B : Set ℕ} (hAB : A ⊆ B) (hB : Erdos1062.ForkFree B) : Erdos1062.ForkFree A := by rw [forkFree_iff] at * exact fun a b c ha hb hc hab hac habd hacd => hB a b c (hAB ha) (hAB hb) (hAB hc) hab hac habd hacd def forkFree_empty : Erdos1062.ForkFree ∅ := by simp [Erdos1062.ForkFree] def exists_maximizer (n : ℕ) : ∃ A ⊆ Set.Icc 1 n, Erdos1062.ForkFree A ∧ A.ncard = Erdos1062.f n := by classical exact Nat.findGreatest_spec (P := fun k => ∃ A ⊆ Set.Icc 1 n, Erdos1062.ForkFree A ∧ A.ncard = k) (m := 0) (Nat.zero_le n) ⟨∅, Set.empty_subset _, forkFree_empty, by simp⟩ def card_le_f {n : ℕ} {A : Set ℕ} (hA : A ⊆ Set.Icc 1 n) (hfork : Erdos1062.ForkFree A) : A.ncard ≤ Erdos1062.f n := by classical apply Nat.le_findGreatest · calc A.ncard ≤ (Set.Icc 1 n).ncard := Set.ncard_le_ncard hA _ = n := by simp · exact ⟨A, hA, hfork, rfl⟩ def window_multiple {A : Set ℕ} {P : ℕ → Prop} {r a b : ℕ} (hpos : ∀ x ∈ A, 0 < x) (hwindow : ∀ x ∈ A, (P x ∧ r < 4 * x ∧ x ≤ r) ∨ (¬P x ∧ r < 6 * x ∧ 2 * x ≤ r)) (hdouble : ∀ x ∈ A, P (2 * x) ↔ ¬P x) (htriple : ∀ x ∈ A, P (3 * x) ↔ P x) (hfour : ∀ x ∈ A, P (4 * x) ↔ P x) (hfive : ∀ x ∈ A, 5 * x ∉ A) (ha : a ∈ A) (hb : b ∈ A) (hne : a ≠ b) (hdvd : a ∣ b) : (P a ∧ b = 3 * a) ∨ (¬P a ∧ b = 2 * a) := by have ha0 := hpos a ha have haw := hwindow a ha have hbw := hwindow b hb have halow : r < 6 * a := by rcases haw with h | h <;> omega have hbhigh : b ≤ r := by rcases hbw with h | h <;> omega obtain ⟨k, rfl⟩ := hdvd have hk : k < 6 := by by_contra h have hle : 6 ≤ k := by omega have hm := Nat.mul_le_mul_left a hle omega interval_cases k · simp_all · simp_all · have hp := hdouble a ha have haw := hwindow a ha have hbw := hwindow (a * 2) hb simp only [Nat.mul_comm a 2] at * rcases haw with h | h · rcases hbw with hb' | hb' · exact False.elim (hp.mp hb'.1 h.1) · omega · exact Or.inr ⟨h.1, trivial⟩ · have hp := htriple a ha have haw := hwindow a ha have hbw := hwindow (a * 3) hb simp only [Nat.mul_comm a 3] at * rcases haw with h | h · exact Or.inl ⟨h.1, trivial⟩ · rcases hbw with hb' | hb' · exact False.elim (h.1 (hp.mp hb'.1)) · omega · have hp := hfour a ha have haw := hwindow a ha have hbw := hwindow (a * 4) hb simp only [Nat.mul_comm a 4] at * rcases haw with h | h · omega · rcases hbw with hb' | hb' · exact False.elim (h.1 (hp.mp hb'.1)) · omega · exact False.elim (hfive a ha (by simpa [Nat.mul_comm] using hb)) def forkFree_window {A : Set ℕ} {P : ℕ → Prop} {r : ℕ} (hpos : ∀ x ∈ A, 0 < x) (hwindow : ∀ x ∈ A, (P x ∧ r < 4 * x ∧ x ≤ r) ∨ (¬P x ∧ r < 6 * x ∧ 2 * x ≤ r)) (hdouble : ∀ x ∈ A, P (2 * x) ↔ ¬P x) (htriple : ∀ x ∈ A, P (3 * x) ↔ P x) (hfour : ∀ x ∈ A, P (4 * x) ↔ P x) (hfive : ∀ x ∈ A, 5 * x ∉ A) : Erdos1062.ForkFree A := by rw [forkFree_iff] intro a b c ha hb hc hab hac habd hacd have h₁ := window_multiple hpos hwindow hdouble htriple hfour hfive ha hb hab habd have h₂ := window_multiple hpos hwindow hdouble htriple hfour hfive ha hc hac hacd aesop def Smooth23 (n : ℕ) : Prop := ∃ a b : ℕ, n = 2 ^ a * 3 ^ b def smooth23_pos {n : ℕ} (hn : Smooth23 n) : 0 < n := by obtain ⟨a, b, rfl⟩ := hn positivity def smooth23_not_dvd_five {n : ℕ} (hn : Smooth23 n) : ¬5 ∣ n := by obtain ⟨a, b, rfl⟩ := hn intro h have hp : Nat.Prime 5 := by decide rcases hp.dvd_mul.mp h with h | h · have h' := hp.dvd_of_dvd_pow h norm_num at h' · have h' := hp.dvd_of_dvd_pow h norm_num at h' def factorization_two_double {n : ℕ} (hn : 0 < n) : (2 * n).factorization 2 = 1 + n.factorization 2 := by rw [Nat.factorization_mul (by decide) (Nat.ne_of_gt hn), Finsupp.add_apply] rw [Nat.prime_two.factorization_self] def factorization_two_triple {n : ℕ} (hn : 0 < n) : (3 * n).factorization 2 = n.factorization 2 := by rw [Nat.factorization_mul (by decide) (Nat.ne_of_gt hn), Finsupp.add_apply] have h : (3 : ℕ).factorization 2 = 0 := Nat.factorization_eq_zero_of_not_dvd (by decide) omega def factorization_two_four {n : ℕ} (hn : 0 < n) : (4 * n).factorization 2 = 2 + n.factorization 2 := by rw [Nat.factorization_mul (by decide) (Nat.ne_of_gt hn), Finsupp.add_apply] have h : (4 : ℕ).factorization 2 = 2 := by change (2 ^ 2).factorization 2 = 2 exact Nat.factorization_pow_self Nat.prime_two omega def cutoffWindow (p r : ℕ) : Set ℕ := {n | Smooth23 n ∧ ((n.factorization 2 % 2 = p ∧ r < 4 * n ∧ n ≤ r) ∨ (n.factorization 2 % 2 ≠ p ∧ r < 6 * n ∧ 2 * n ≤ r))} def cutoffWindow_forkFree {p : ℕ} (hp : p < 2) (r : ℕ) : Erdos1062.ForkFree (cutoffWindow p r) := by apply forkFree_window (P := fun n => n.factorization 2 % 2 = p) (r := r) · intro n hn exact smooth23_pos hn.1 · intro n hn exact hn.2 · intro n hn rw [factorization_two_double (smooth23_pos hn.1)] omega · intro n hn rw [factorization_two_triple (smooth23_pos hn.1)] · intro n hn rw [factorization_two_four (smooth23_pos hn.1)] omega · intro n _ h exact smooth23_not_dvd_five h.1 (dvd_mul_right 5 n) def cutoffWindow_subset (p r : ℕ) : cutoffWindow p r ⊆ Set.Icc 1 r := by intro n hn have hpos := smooth23_pos hn.1 have hwin := hn.2 constructor · omega · rcases hwin with h | h <;> omega def cutoffWindow_finite (p r : ℕ) : (cutoffWindow p r).Finite := (Set.finite_Icc 1 r).subset (cutoffWindow_subset p r) def cutoffWindow_disjoint {p q r s : ℕ} (hcutoff : (if p = q then 4 else 6) * s ≤ r) : Disjoint (cutoffWindow p r) (cutoffWindow q s) := by apply Set.disjoint_left.mpr intro n hn hm have h₁ := hn.2 have h₂ := hm.2 by_cases hpq : p = q · simp only [hpq, if_true] at hcutoff subst q rcases h₁ with h₁ | h₁ <;> rcases h₂ with h₂ | h₂ <;> omega · simp only [hpq, if_false] at hcutoff rcases h₁ with h₁ | h₁ <;> rcases h₂ with h₂ | h₂ <;> omega def cutoffWindow_lower {p r n : ℕ} (hn : n ∈ cutoffWindow p r) : r < 6 * n := by have hpos := smooth23_pos hn.1 rcases hn.2 with h | h <;> omega def coefficient4 (n : ℕ) : ℤ := let x := 4 ^ n let y := 3 ^ Nat.log 3 x if 15 * x < 16 * y then 78 else if 9 * x < 10 * y then 30 else if 3 * x < 4 * y then -30 else if 2 * x < 3 * y then 30 else if x < 2 * y then 0 else if 3 * x < 8 * y then -60 else -12 def coefficient3 (n : ℕ) : ℤ := let x := 3 ^ n let y := 4 ^ Nat.log 4 x if 3 * x < 4 * y then 30 else if 5 * x < 8 * y then 35 else if 3 * x < 5 * y then 29 else if x < 2 * y then 24 else -60 def coefficient4_bound (n : ℕ) : |(coefficient4 n : ℝ)| ≤ 78 := by unfold coefficient4 dsimp only split_ifs <;> norm_num def coefficient3_bound (n : ℕ) : |(coefficient3 n : ℝ)| ≤ 60 := by unfold coefficient3 dsimp only split_ifs <;> norm_num def weighted_summable {a : ℕ → ℝ} {b M : ℝ} (hb : 1 < b) (ha : ∀ n, |a n| ≤ M) : Summable (fun n => a n / b ^ n) := by have hb0 : 0 < b := lt_trans zero_lt_one hb have hgeo := (summable_geometric_of_lt_one (inv_nonneg.mpr hb0.le) (inv_lt_one_of_one_lt₀ hb)).mul_left M apply hgeo.of_norm_bounded intro n rw [Real.norm_eq_abs, abs_div, abs_of_pos (pow_pos hb0 n), div_eq_mul_inv, ← inv_pow] exact mul_le_mul_of_nonneg_right (ha n) (pow_nonneg (inv_nonneg.mpr hb0.le) n) def coefficient4_summable : Summable (fun n => (coefficient4 n : ℝ) / (4 : ℝ) ^ n) := weighted_summable (by norm_num) coefficient4_bound noncomputable def explicitDensity : ℝ := (32 + (∑' n, (coefficient4 n : ℝ) / (4 : ℝ) ^ n) + (∑' n, (coefficient3 n : ℝ) / (3 : ℝ) ^ n)) / 0xb4 def weighted_shift_identity {a : ℕ → ℝ} {b M : ℝ} (hb : 1 < b) (ha : ∀ n, |a n| ≤ M) (q : ℕ) : (b ^ q - 1) * (∑' n, a n / b ^ n) = b ^ q * (∑ n ∈ Finset.range q, a n / b ^ n) + (∑' n, (a (n + q) - a n) / b ^ n) := by have hb0 : b ≠ 0 := ne_of_gt (lt_trans zero_lt_one hb) have h₁ := weighted_summable hb ha have h₂ := weighted_summable hb (fun n => ha (n + q)) have hsplit := h₁.sum_add_tsum_nat_add q have htail : b ^ q * (∑' n, a (n + q) / b ^ (n + q)) = ∑' n, a (n + q) / b ^ n := by rw [← tsum_mul_left] apply tsum_congr intro n rw [pow_add] field_simp have hscaled := congrArg (fun x : ℝ => b ^ q * x) hsplit rw [mul_add, htail] at hscaled have hdiff : (∑' n, (a (n + q) - a n) / b ^ n) = (∑' n, a (n + q) / b ^ n) - (∑' n, a n / b ^ n) := by simp only [sub_div] exact h₂.tsum_sub h₁ rw [hdiff] nlinarith def integerPrefix (a : ℕ → ℤ) (b q : ℕ) : ℤ := ∑ n ∈ Finset.range q, a n * (b : ℤ) ^ (q - n) def integerPrefix_cast (a : ℕ → ℤ) {b : ℕ} (hb : 0 < b) (q : ℕ) : (integerPrefix a b q : ℝ) = (b : ℝ) ^ q * (∑ n ∈ Finset.range q, (a n : ℝ) / (b : ℝ) ^ n) := by unfold integerPrefix push_cast rw [Finset.mul_sum] apply Finset.sum_congr rfl intro n hn have hle : n ≤ q := Nat.le_of_lt (Finset.mem_range.mp hn) have hb0 : (b : ℝ) ≠ 0 := by exact_mod_cast (Nat.ne_of_gt hb) have hp : (b : ℝ) ^ q = (b : ℝ) ^ n * (b : ℝ) ^ (q - n) := by rw [← pow_add, Nat.add_sub_of_le hle] rw [hp] field_simp def integer_weighted_shift {a : ℕ → ℤ} {b : ℕ} {M : ℝ} (hb : 1 < b) (ha : ∀ n, |(a n : ℝ)| ≤ M) (q : ℕ) : ((b : ℝ) ^ q - 1) * (∑' n, (a n : ℝ) / (b : ℝ) ^ n) = (integerPrefix a b q : ℝ) + (∑' n, ((a (n + q) - a n : ℤ) : ℝ) / (b : ℝ) ^ n) := by rw [integerPrefix_cast a (by omega) q] push_cast exact weighted_shift_identity (by exact_mod_cast hb) ha q def irrational_log_four_div_log_three : Irrational (Real.log 4 / Real.log 3) := by rintro ⟨q, hq⟩ have hlog4 : 0 < Real.log 4 := Real.log_pos (by norm_num) have hlog3 : 0 < Real.log 3 := Real.log_pos (by norm_num) have hqpos : 0 < q := by have hreal : (0 : ℝ) < q := by rw [hq] exact div_pos hlog4 hlog3 exact_mod_cast hreal have hnum : 0 < q.num := Rat.num_pos.mpr hqpos have habsI : (q.num.natAbs : ℤ) = q.num := by rw [Int.natCast_natAbs, abs_of_pos hnum] have habs : (q.num.natAbs : ℝ) = (q.num : ℝ) := by simpa only [Int.cast_natCast] using congrArg (fun z : ℤ => (z : ℝ)) habsI have hden : (q.den : ℝ) ≠ 0 := by exact_mod_cast q.den_nz have hratio : Real.log 4 / Real.log 3 = (q.num : ℝ) / (q.den : ℝ) := by rw [← hq, Rat.cast_def] have hcross := (div_eq_div_iff (ne_of_gt hlog3) hden).mp hratio have hlogs : Real.log ((4 : ℝ) ^ q.den) = Real.log ((3 : ℝ) ^ q.num.natAbs) := by rw [Real.log_pow, Real.log_pow, habs] nlinarith have hrealpow : (4 : ℝ) ^ q.den = (3 : ℝ) ^ q.num.natAbs := Real.log_injOn_pos (by exact pow_pos (by norm_num : (0 : ℝ) < 4) q.den) (by exact pow_pos (by norm_num : (0 : ℝ) < 3) q.num.natAbs) hlogs have hpow : (4 : ℕ) ^ q.den = (3 : ℕ) ^ q.num.natAbs := by exact_mod_cast hrealpow have hdiv : 2 ∣ (4 : ℕ) ^ q.den := by obtain ⟨k, hk⟩ := Nat.exists_eq_succ_of_ne_zero q.den_nz rw [hk, pow_succ] exact ⟨2 * 4 ^ k, by ring⟩ rw [hpow] at hdiv have hbad := Nat.prime_two.dvd_of_dvd_pow hdiv norm_num at hbad end Bounty end SubmissionComponent_Solution /- Component GridWork; SHA256 f152ca58e05da7e36dc3f63f1fb16436c60d2532669012b1b49e753b86708bb9 -/ section SubmissionComponent_GridWork /- A row-counting proof of the two-dimensional fork-free bound. -/ namespace Bounty def GridForkFree (A : Finset (ℕ × ℕ)) : Prop := ∀ a ∈ A, ∀ b ∈ A, ∀ c ∈ A, a ≠ b → a ≠ c → a.1 ≤ b.1 → a.2 ≤ b.2 → a.1 ≤ c.1 → a.2 ≤ c.2 → b = c def gridRow (A : Finset (ℕ × ℕ)) (y : ℕ) : Finset (ℕ × ℕ) := A.filter (fun a => a.2 = y) def gridRow_card_le_two {A : Finset (ℕ × ℕ)} (hA : GridForkFree A) (y : ℕ) : (gridRow A y).card ≤ 2 := by classical by_cases hr : (gridRow A y).Nonempty · let X := (gridRow A y).image Prod.fst have hX : X.Nonempty := hr.image Prod.fst obtain ⟨a, ha, hamin⟩ := Finset.mem_image.mp (Finset.min'_mem X hX) have hay : a.2 = y := (Finset.mem_filter.mp ha).2 have hamin' : ∀ b ∈ gridRow A y, a.1 ≤ b.1 := by intro b hb rw [hamin] exact Finset.min'_le X b.1 (Finset.mem_image_of_mem Prod.fst hb) have he : ((gridRow A y).erase a).card ≤ 1 := by apply Finset.card_le_one.mpr intro b hb c hc obtain ⟨hba, hbr⟩ := Finset.mem_erase.mp hb obtain ⟨hca, hcr⟩ := Finset.mem_erase.mp hc have hby : b.2 = y := (Finset.mem_filter.mp hbr).2 have hcy : c.2 = y := (Finset.mem_filter.mp hcr).2 exact hA a (Finset.mem_filter.mp ha).1 b (Finset.mem_filter.mp hbr).1 c (Finset.mem_filter.mp hcr).1 hba.symm hca.symm (hamin' b hbr) (by omega) (hamin' c hcr) (by omega) have hcard := Finset.card_erase_add_one ha omega · have hempty : gridRow A y = ∅ := Finset.not_nonempty_iff_eq_empty.mp hr simp [hempty] def grid_forbidden_upper {A : Finset (ℕ × ℕ)} (hA : GridForkFree A) {a b c : ℕ × ℕ} (ha : a ∈ A) (hb : b ∈ A) (hc : c ∈ A) (habrow : a.2 = b.2) (habcol : a.1 < b.1) (haccol : a.1 ≤ c.1) (hacrow : a.2 < c.2) : False := by have hab : a ≠ b := by intro h subst b omega have hac : a ≠ c := by intro h subst c omega have hbc := hA a ha b hb c hc hab hac habcol.le (by omega) haccol hacrow.le have := congrArg Prod.snd hbc omega def grid_above_pair_left {A : Finset (ℕ × ℕ)} (hA : GridForkFree A) {a b c : ℕ × ℕ} (ha : a ∈ A) (hb : b ∈ A) (hc : c ∈ A) (hab : a ≠ b) (habrow : a.2 = b.2) (hacrow : a.2 < c.2) : c.1 < a.1 ∧ c.1 < b.1 := by have habcol : a.1 ≠ b.1 := by intro h exact hab (Prod.ext h habrow) by_cases hlt : a.1 < b.1 · have h : c.1 < a.1 := by by_contra hh exact grid_forbidden_upper hA ha hb hc habrow hlt (by omega) hacrow omega · have h : c.1 < b.1 := by by_contra hh exact grid_forbidden_upper hA hb ha hc habrow.symm (by omega) (by omega) (by omega) omega def gridRows (A : Finset (ℕ × ℕ)) : Finset ℕ := A.image Prod.snd def gridDoubleRows (A : Finset (ℕ × ℕ)) : Finset ℕ := (gridRows A).filter (fun y => (gridRow A y).card = 2) def gridDoubles (A : Finset (ℕ × ℕ)) : Finset (ℕ × ℕ) := A.filter (fun a => (gridRow A a.2).card = 2) def gridDoubles_fst_injective {A : Finset (ℕ × ℕ)} (hA : GridForkFree A) : Set.InjOn Prod.fst (gridDoubles A : Set (ℕ × ℕ)) := by intro a ha b hb hfst have haA := (Finset.mem_filter.mp ha).1 have hbA := (Finset.mem_filter.mp hb).1 by_cases hrow : a.2 = b.2 · exact Prod.ext hfst hrow · by_cases hlt : a.2 < b.2 · have hcard := (Finset.mem_filter.mp ha).2 obtain ⟨c, hc, hca⟩ := Finset.exists_mem_ne (show 1 < (gridRow A a.2).card by omega) a have hcA := (Finset.mem_filter.mp hc).1 have hcy := (Finset.mem_filter.mp hc).2 have h := grid_above_pair_left hA haA hcA hbA hca.symm (by omega) hlt omega · have hcard := (Finset.mem_filter.mp hb).2 obtain ⟨c, hc, hcb⟩ := Finset.exists_mem_ne (show 1 < (gridRow A b.2).card by omega) b have hcA := (Finset.mem_filter.mp hc).1 have hcy := (Finset.mem_filter.mp hc).2 have h := grid_above_pair_left hA hbA hcA haA hcb.symm (by omega) (by omega) omega def grid_card_decomposition {A : Finset (ℕ × ℕ)} (hA : GridForkFree A) : A.card = (gridRows A).card + (gridDoubleRows A).card := by have hcard : A.card = ∑ y ∈ gridRows A, (gridRow A y).card := by simpa [gridRows, gridRow] using Finset.card_eq_sum_card_image Prod.snd A rw [hcard] calc (∑ y ∈ gridRows A, (gridRow A y).card) = ∑ y ∈ gridRows A, (1 + if (gridRow A y).card = 2 then 1 else 0) := by apply Finset.sum_congr rfl intro y hy have hupper := gridRow_card_le_two hA y have hlower : 0 < (gridRow A y).card := by obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hy apply Finset.card_pos.mpr exact ⟨a, Finset.mem_filter.mpr ⟨ha, rfl⟩⟩ split_ifs <;> omega _ = (gridRows A).card + (gridDoubleRows A).card := by simp [Finset.sum_add_distrib, gridDoubleRows] def gridDoubles_card (A : Finset (ℕ × ℕ)) : (gridDoubles A).card = 2 * (gridDoubleRows A).card := by have hfilter : A.filter (fun a => a.2 ∈ gridDoubleRows A) = gridDoubles A := by ext a simp only [Finset.mem_filter, gridDoubleRows, gridDoubles] constructor · intro h exact ⟨h.1, h.2.2⟩ · intro h exact ⟨h.1, Finset.mem_image_of_mem Prod.snd h.1, h.2⟩ have hsum := Finset.sum_card_fiberwise_eq_card_filter A (gridDoubleRows A) Prod.snd rw [hfilter] at hsum calc (gridDoubles A).card = ∑ y ∈ gridDoubleRows A, (gridRow A y).card := hsum.symm _ = ∑ _y ∈ gridDoubleRows A, 2 := by apply Finset.sum_congr rfl intro y hy exact (Finset.mem_filter.mp hy).2 _ = 2 * (gridDoubleRows A).card := by simp [Nat.mul_comm] def grid_card_bound {A : Finset (ℕ × ℕ)} {W H : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < W) (hH : ∀ a ∈ A, a.2 < H) : A.card ≤ H + W / 2 := by have hrows : (gridRows A).card ≤ H := by calc (gridRows A).card ≤ (Finset.range H).card := by apply Finset.card_le_card intro y hy obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hy exact Finset.mem_range.mpr (hH a ha) _ = H := Finset.card_range H have hdoubles : (gridDoubles A).card ≤ W := by calc (gridDoubles A).card = ((gridDoubles A).image Prod.fst).card := (Finset.card_image_iff.mpr (gridDoubles_fst_injective hA)).symm _ ≤ (Finset.range W).card := by apply Finset.card_le_card intro x hx obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hx exact Finset.mem_range.mpr (hW a (Finset.mem_filter.mp ha).1) _ = W := Finset.card_range W rw [gridDoubles_card] at hdoubles rw [grid_card_decomposition hA] omega end Bounty end SubmissionComponent_GridWork /- Component GridBoundary; SHA256 bb520fd269023ebb862cba3aee015678bb7acc03206e3afe7e4920bd975172a2 -/ section SubmissionComponent_GridBoundary /- Equality cases for the row-counting bound. -/ namespace Bounty def gridRows_card_le {A : Finset (ℕ × ℕ)} {H : ℕ} (hH : ∀ a ∈ A, a.2 < H) : (gridRows A).card ≤ H := by calc (gridRows A).card ≤ (Finset.range H).card := by apply Finset.card_le_card intro y hy obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hy exact Finset.mem_range.mpr (hH a ha) _ = H := Finset.card_range H def gridDoubles_card_le {A : Finset (ℕ × ℕ)} {W : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < W) : (gridDoubles A).card ≤ W := by calc (gridDoubles A).card = ((gridDoubles A).image Prod.fst).card := (Finset.card_image_iff.mpr (gridDoubles_fst_injective hA)).symm _ ≤ (Finset.range W).card := by apply Finset.card_le_card intro x hx obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hx exact Finset.mem_range.mpr (hW a (Finset.mem_filter.mp ha).1) _ = W := Finset.card_range W def grid_saturated_counts {A : Finset (ℕ × ℕ)} {W H : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < W) (hH : ∀ a ∈ A, a.2 < H) (hcard : A.card = H + W / 2) : (gridRows A).card = H ∧ (gridDoubleRows A).card = W / 2 := by have hr := gridRows_card_le hH have hd := gridDoubles_card_le hA hW rw [gridDoubles_card] at hd have hsum := grid_card_decomposition hA omega def grid_saturated_rows {A : Finset (ℕ × ℕ)} {W H : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < W) (hH : ∀ a ∈ A, a.2 < H) (hcard : A.card = H + W / 2) : gridRows A = Finset.range H := by apply Finset.eq_of_subset_of_card_le · intro y hy obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hy exact Finset.mem_range.mpr (hH a ha) · simp only [Finset.card_range, (grid_saturated_counts hA hW hH hcard).1] exact le_rfl def grid_saturated_even_columns {A : Finset (ℕ × ℕ)} {k H : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < 2 * k) (hH : ∀ a ∈ A, a.2 < H) (hcard : A.card = H + k) : (gridDoubles A).image Prod.fst = Finset.range (2 * k) := by apply Finset.eq_of_subset_of_card_le · intro x hx obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hx exact Finset.mem_range.mpr (hW a (Finset.mem_filter.mp ha).1) · have hd := (grid_saturated_counts hA hW hH (by omega)).2 rw [Finset.card_range, Finset.card_image_iff.mpr (gridDoubles_fst_injective hA), gridDoubles_card] omega def grid_point_below_double {A : Finset (ℕ × ℕ)} (hA : GridForkFree A) {a c : ℕ × ℕ} (ha : a ∈ gridDoubles A) (hc : c ∈ A) (hrow : a.2 < c.2) : c.1 < a.1 := by have hcard := (Finset.mem_filter.mp ha).2 obtain ⟨b, hb, hba⟩ := Finset.exists_mem_ne (show 1 < (gridRow A a.2).card by omega) a exact (grid_above_pair_left hA (Finset.mem_filter.mp ha).1 (Finset.mem_filter.mp hb).1 hc hba.symm (by simpa using (Finset.mem_filter.mp hb).2.symm) hrow).1 def grid_top_double_of_saturated_even {A : Finset (ℕ × ℕ)} {k h : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < 2 * k) (hH : ∀ a ∈ A, a.2 < h + 1) (hcard : A.card = h + 1 + k) : (gridRow A h).card = 2 := by have hrows := grid_saturated_rows hA hW hH (by omega) have hmem : h ∈ gridRows A := by rw [hrows]; exact Finset.mem_range.mpr (by omega) obtain ⟨c, hc, hch⟩ := Finset.mem_image.mp hmem have hk : 0 < k := by have := hW c hc; omega have hcols := grid_saturated_even_columns hA hW hH hcard have hzero : 0 ∈ (gridDoubles A).image Prod.fst := by rw [hcols] exact Finset.mem_range.mpr (by omega) obtain ⟨a, ha, ha0⟩ := Finset.mem_image.mp hzero have hah := hH a (Finset.mem_filter.mp ha).1 have hay : a.2 = h := by by_contra hh have := grid_point_below_double hA ha hc (by omega) omega simpa [hay] using (Finset.mem_filter.mp ha).2 def grid_bound_top_single {A : Finset (ℕ × ℕ)} {k h : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < 2 * k) (hH : ∀ a ∈ A, a.2 < h + 1) (htop : ∀ a ∈ A, a.2 = h → a.1 = 0) : A.card ≤ h + k := by have hbound := grid_card_bound hA hW hH by_contra hc have hcard : A.card = h + 1 + k := by omega have htwo := grid_top_double_of_saturated_even hA hW hH hcard have hone : (gridRow A h).card ≤ 1 := by apply Finset.card_le_one.mpr intro a ha b hb obtain ⟨haA, hay⟩ := Finset.mem_filter.mp ha obtain ⟨hbA, hby⟩ := Finset.mem_filter.mp hb exact Prod.ext (by rw [htop a haA hay, htop b hbA hby]) (by omega) omega def grid_top_pair_of_saturated_even {A : Finset (ℕ × ℕ)} {k h : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < 2 * k) (hH : ∀ a ∈ A, a.2 < h + 1) (htop : ∀ a ∈ A, a.2 = h → a.1 < 2) (hcard : A.card = h + 1 + k) : (0, h) ∈ A ∧ (1, h) ∈ A := by have htwo := grid_top_double_of_saturated_even hA hW hH hcard have heq : gridRow A h = ({(0, h), (1, h)} : Finset (ℕ × ℕ)) := by apply Finset.eq_of_subset_of_card_le · intro a ha obtain ⟨haA, hay⟩ := Finset.mem_filter.mp ha have hax := htop a haA hay have hx : a.1 = 0 ∨ a.1 = 1 := by omega rcases hx with hx | hx · have he : a = (0, h) := Prod.ext hx hay simp [he] · have he : a = (1, h) := Prod.ext hx hay simp [he] · rw [htwo] simp constructor · have hm : (0, h) ∈ gridRow A h := by rw [heq]; simp exact (Finset.mem_filter.mp hm).1 · have hm : (1, h) ∈ gridRow A h := by rw [heq]; simp exact (Finset.mem_filter.mp hm).1 end Bounty end SubmissionComponent_GridBoundary /- Component GridOdd; SHA256 5aaeb15303e19575a7f83d8109895c72326b34c1b82994a81331e1a67dca4683 -/ section SubmissionComponent_GridOdd /- Rigidity in odd-width grids with a single available top cell. -/ namespace Bounty def grid_double_row_mem {A : Finset (ℕ × ℕ)} {a b : ℕ × ℕ} (ha : a ∈ gridDoubles A) (hb : b ∈ A) (hrow : b.2 = a.2) : b ∈ gridDoubles A := by apply Finset.mem_filter.mpr exact ⟨hb, by rw [hrow]; exact (Finset.mem_filter.mp ha).2⟩ def grid_double_zero_excluded {A : Finset (ℕ × ℕ)} {h : ℕ} (hA : GridForkFree A) (hH : ∀ a ∈ A, a.2 < h + 1) (htop : ∀ a ∈ A, a.2 = h → a.1 = 0) (hmem : h ∈ gridRows A) : ∀ a ∈ gridDoubles A, a.1 ≠ 0 := by intro a ha ha0 obtain ⟨c, hc, hch⟩ := Finset.mem_image.mp hmem have hah := hH a (Finset.mem_filter.mp ha).1 by_cases hay : a.2 = h · have hcard := (Finset.mem_filter.mp ha).2 obtain ⟨b, hb, hba⟩ := Finset.exists_mem_ne (show 1 < (gridRow A a.2).card by omega) a obtain ⟨hbA, hby⟩ := Finset.mem_filter.mp hb have hb0 := htop b hbA (by omega) exact hba (Prod.ext (by omega) hby) · have := grid_point_below_double hA ha hc (by omega) omega def grid_saturated_odd_columns {A : Finset (ℕ × ℕ)} {k h : ℕ} (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < 2 * k + 1) (hH : ∀ a ∈ A, a.2 < h + 1) (htop : ∀ a ∈ A, a.2 = h → a.1 = 0) (hcard : A.card = h + 1 + k) : (gridDoubles A).image Prod.fst = Finset.Icc 1 (2 * k) := by have hrows := grid_saturated_rows hA hW hH (by omega) have hmem : h ∈ gridRows A := by rw [hrows]; exact Finset.mem_range.mpr (by omega) have hnonzero := grid_double_zero_excluded hA hH htop hmem apply Finset.eq_of_subset_of_card_le · intro x hx obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hx have haW := hW a (Finset.mem_filter.mp ha).1 have ha0 := hnonzero a ha exact Finset.mem_Icc.mpr ⟨by omega, by omega⟩ · have hd := (grid_saturated_counts hA hW hH (by omega)).2 rw [Finset.card_image_iff.mpr (gridDoubles_fst_injective hA), gridDoubles_card] simp only [Nat.card_Icc] omega def grid_double_one_two_same_row {A : Finset (ℕ × ℕ)} (hA : GridForkFree A) (hnozero : ∀ a ∈ gridDoubles A, a.1 ≠ 0) {a b : ℕ × ℕ} (ha : a ∈ gridDoubles A) (hb : b ∈ gridDoubles A) (ha1 : a.1 = 1) (hb2 : b.1 = 2) : a.2 = b.2 := by by_contra hne by_cases hlt : a.2 < b.2 · have := grid_point_below_double hA ha (Finset.mem_filter.mp hb).1 hlt omega · have hcard := (Finset.mem_filter.mp ha).2 obtain ⟨c, hc, hca⟩ := Finset.exists_mem_ne (show 1 < (gridRow A a.2).card by omega) a obtain ⟨hcA, hcy⟩ := Finset.mem_filter.mp hc have hcD := grid_double_row_mem ha hcA hcy have hc0 := hnozero c hcD have hc2 := grid_point_below_double hA hb hcA (by omega) exact hca (Prod.ext (by omega) hcy) def grid_three_in_column_forbidden {A : Finset (ℕ × ℕ)} (hA : GridForkFree A) {x y z w : ℕ} (hy : (x, y) ∈ A) (hz : (x, z) ∈ A) (hw : (x, w) ∈ A) (hyz : y < z) (hzw : z < w) : False := by have hh := hA (x, y) hy (x, z) hz (x, w) hw (by intro he; have := congrArg Prod.snd he; simpa using hyz.ne this) (by intro he; have := congrArg Prod.snd he; omega) le_rfl hyz.le le_rfl (by omega) have := congrArg Prod.snd hh omega def grid_odd_forced_pair {A : Finset (ℕ × ℕ)} {k b : ℕ} (hk : 0 < k) (hA : GridForkFree A) (hW : ∀ a ∈ A, a.1 < 2 * k + 1) (hH : ∀ a ∈ A, a.2 < b + 3) (htop : ∀ a ∈ A, a.2 = b + 2 → a.1 = 0) (hsecond : ∀ a ∈ A, a.1 = 2 → a.2 ≤ b) (hcard : A.card = b + 3 + k) : (1, b) ∈ A ∧ (2, b) ∈ A := by have hH' : ∀ a ∈ A, a.2 < (b + 2) + 1 := by intro a ha; have := hH a ha; omega have hrows := grid_saturated_rows hA hW hH (by omega) have hmem : b + 2 ∈ gridRows A := by rw [hrows] exact Finset.mem_range.mpr (by omega) have hnozero := grid_double_zero_excluded hA hH' htop hmem have hcols := grid_saturated_odd_columns hA hW hH' htop (by omega) have h1 : 1 ∈ (gridDoubles A).image Prod.fst := by rw [hcols] exact Finset.mem_Icc.mpr ⟨by omega, by omega⟩ have h2 : 2 ∈ (gridDoubles A).image Prod.fst := by rw [hcols] exact Finset.mem_Icc.mpr ⟨by omega, by omega⟩ obtain ⟨a, ha, ha1⟩ := Finset.mem_image.mp h1 obtain ⟨c, hc, hc2⟩ := Finset.mem_image.mp h2 have hrow := grid_double_one_two_same_row hA hnozero ha hc ha1 hc2 have hcb := hsecond c (Finset.mem_filter.mp hc).1 hc2 have hab : a.2 = b := by by_contra hne have hablt : a.2 < b := by omega have hzero : ∀ y, b ≤ y → y < b + 3 → (0, y) ∈ A := by intro y hby hyH have hy : y ∈ gridRows A := by rw [hrows]; exact Finset.mem_range.mpr hyH obtain ⟨d, hd, hdy⟩ := Finset.mem_image.mp hy have hdx := grid_point_below_double hA ha hd (by omega) have he : d = (0, y) := Prod.ext (by omega) hdy rwa [← he] exact grid_three_in_column_forbidden hA (hzero b (by omega) (by omega)) (hzero (b + 1) (by omega) (by omega)) (hzero (b + 2) (by omega) (by omega)) (by omega) (by omega) constructor · have he : a = (1, b) := Prod.ext ha1 hab exact he ▸ (Finset.mem_filter.mp ha).1 · have he : c = (2, b) := Prod.ext hc2 (by omega) exact he ▸ (Finset.mem_filter.mp hc).1 end Bounty end SubmissionComponent_GridOdd /- Component GridBridge; SHA256 f53cd8833bdeabaa4ab47df355c2739ef8bd82171dac1a5979bbeb05511b8711 -/ section SubmissionComponent_GridBridge /- Divisibility among two-prime smooth numbers is product order on a grid. -/ namespace Bounty def gridValue (a : ℕ × ℕ) : ℕ := 2 ^ a.1 * 3 ^ a.2 def gridValue_pos (a : ℕ × ℕ) : 0 < gridValue a := by unfold gridValue positivity def gridValue_factorization_two (a : ℕ × ℕ) : (gridValue a).factorization 2 = a.1 := by unfold gridValue rw [Nat.factorization_mul (by positivity) (by positivity), Finsupp.add_apply, Nat.factorization_pow_self Nat.prime_two] have h : (3 ^ a.2).factorization 2 = 0 := by apply Nat.factorization_eq_zero_of_not_dvd intro hd have := Nat.prime_two.dvd_of_dvd_pow hd norm_num at this omega def gridValue_factorization_three (a : ℕ × ℕ) : (gridValue a).factorization 3 = a.2 := by unfold gridValue rw [Nat.factorization_mul (by positivity) (by positivity), Finsupp.add_apply, Nat.factorization_pow_self Nat.prime_three] have h : (2 ^ a.1).factorization 3 = 0 := by apply Nat.factorization_eq_zero_of_not_dvd intro hd have := Nat.prime_three.dvd_of_dvd_pow hd norm_num at this omega def gridValue_injective : Function.Injective gridValue := by intro a b hab apply Prod.ext · have := congrArg (fun n : ℕ => n.factorization 2) hab simpa only [gridValue_factorization_two] using this · have := congrArg (fun n : ℕ => n.factorization 3) hab simpa only [gridValue_factorization_three] using this def gridValue_dvd_iff (a b : ℕ × ℕ) : gridValue a ∣ gridValue b ↔ a.1 ≤ b.1 ∧ a.2 ≤ b.2 := by constructor · intro h have hf := (Nat.factorization_le_iff_dvd (ne_of_gt (gridValue_pos a)) (ne_of_gt (gridValue_pos b))).mpr h constructor · simpa only [gridValue_factorization_two] using hf 2 · simpa only [gridValue_factorization_three] using hf 3 · rintro ⟨h₁, h₂⟩ exact mul_dvd_mul (pow_dvd_pow 2 h₁) (pow_dvd_pow 3 h₂) def gridForkFree_iff {A : Finset (ℕ × ℕ)} : GridForkFree A ↔ Erdos1062.ForkFree (gridValue '' (A : Set (ℕ × ℕ))) := by rw [forkFree_iff] constructor · intro hA x y z hx hy hz hxy hxz hdivy hdivz obtain ⟨a, ha, rfl⟩ := hx obtain ⟨b, hb, rfl⟩ := hy obtain ⟨c, hc, rfl⟩ := hz obtain ⟨hy₁, hy₂⟩ := (gridValue_dvd_iff a b).mp hdivy obtain ⟨hz₁, hz₂⟩ := (gridValue_dvd_iff a c).mp hdivz have hab : a ≠ b := by intro he; exact hxy (congrArg gridValue he) have hac : a ≠ c := by intro he; exact hxz (congrArg gridValue he) exact congrArg gridValue (hA a ha b hb c hc hab hac hy₁ hy₂ hz₁ hz₂) · intro hA a ha b hb c hc hab hac hy₁ hy₂ hz₁ hz₂ apply gridValue_injective exact hA (gridValue a) (gridValue b) (gridValue c) ⟨a, ha, rfl⟩ ⟨b, hb, rfl⟩ ⟨c, hc, rfl⟩ (fun he => hab (gridValue_injective he)) (fun he => hac (gridValue_injective he)) ((gridValue_dvd_iff a b).mpr ⟨hy₁, hy₂⟩) ((gridValue_dvd_iff a c).mpr ⟨hz₁, hz₂⟩) def gridCoordinates (n : ℕ) : ℕ × ℕ := (n.factorization 2, n.factorization 3) def gridCoordinates_value (a : ℕ × ℕ) : gridCoordinates (gridValue a) = a := by apply Prod.ext · exact gridValue_factorization_two a · exact gridValue_factorization_three a def gridValue_log_bounds {a : ℕ × ℕ} {n : ℕ} (h : gridValue a ≤ n) : a.1 ≤ Nat.log 2 n ∧ a.2 ≤ Nat.log 3 n := by have hn : n ≠ 0 := by have := gridValue_pos a; omega constructor · apply (Nat.le_log_iff_pow_le (by norm_num) hn).mpr have hp : 1 ≤ (3 : ℕ) ^ a.2 := Nat.one_le_iff_ne_zero.mpr (by positivity) exact (by unfold gridValue at h; nlinarith : 2 ^ a.1 ≤ n) · apply (Nat.le_log_iff_pow_le (by norm_num) hn).mpr have hp : 1 ≤ (2 : ℕ) ^ a.1 := Nat.one_le_iff_ne_zero.mpr (by positivity) exact (by unfold gridValue at h; nlinarith : 3 ^ a.2 ≤ n) end Bounty end SubmissionComponent_GridBridge /- Component FiveLoss; SHA256 6f0b67fcd12a16d548f86ae1f479385c0fd472ad713c8542f1851c7b1dbeedf2 -/ section SubmissionComponent_FiveLoss /- Equality in adjacent powers-of-five components forces a forbidden fork. -/ namespace Bounty def forkFree_not_double_five {S : Set ℕ} (hS : Erdos1062.ForkFree S) {a : ℕ} (ha : 0 < a) (haS : a ∈ S) (h2 : 2 * a ∈ S) (h5 : 5 * a ∈ S) : False := by have hh := (forkFree_iff S).mp hS a (2 * a) (5 * a) haS h2 h5 (by omega) (by omega) (by exact ⟨2, by ring⟩) (by exact ⟨5, by ring⟩) omega def grid_five_layer_loss {A B : Finset (ℕ × ℕ)} {S : Set ℕ} {k j b : ℕ} (hk : 0 < k) (hA : GridForkFree A) (hB : GridForkFree B) (hWA : ∀ a ∈ A, a.1 < 2 * k + 1) (hHA : ∀ a ∈ A, a.2 < b + 3) (htopA : ∀ a ∈ A, a.2 = b + 2 → a.1 = 0) (hsecondA : ∀ a ∈ A, a.1 = 2 → a.2 ≤ b) (hWB : ∀ a ∈ B, a.1 < 2 * j) (hHB : ∀ a ∈ B, a.2 < b + 1) (htopB : ∀ a ∈ B, a.2 = b → a.1 < 2) (hAS : ∀ a ∈ A, gridValue a ∈ S) (hBS : ∀ a ∈ B, 5 * gridValue a ∈ S) (hS : Erdos1062.ForkFree S) : A.card + B.card + 1 ≤ (b + 3 + k) + (b + 1 + j) := by have hAbasic := grid_card_bound hA hWA hHA have hBbasic := grid_card_bound hB hWB hHB by_contra hlt have hAc : A.card = b + 3 + k := by omega have hBc : B.card = b + 1 + j := by omega obtain ⟨ha1, ha2⟩ := grid_odd_forced_pair hk hA hWA hHA htopA hsecondA hAc obtain ⟨_, hb1⟩ := grid_top_pair_of_saturated_even hB hWB hHB htopB hBc have h1 : 2 * 3 ^ b ∈ S := by simpa [gridValue] using hAS (1, b) ha1 have h2 : 2 * (2 * 3 ^ b) ∈ S := by have hh := hAS (2, b) ha2 norm_num [gridValue] at hh convert hh using 1 ring have h5 : 5 * (2 * 3 ^ b) ∈ S := by simpa [gridValue] using hBS (1, b) hb1 exact forkFree_not_double_five hS (by positivity) h1 h2 h5 end Bounty end SubmissionComponent_FiveLoss /- Component SmoothRank; SHA256 34273eadda8c4afb918793f21e0088eb02d207953335e532c5eb54ef49396c9e -/ section SubmissionComponent_SmoothRank /- The sharp upper bound in a two-prime divisibility component. -/ namespace Bounty def smoothRankBound (n : ℕ) : ℕ := if n = 0 then 0 else Nat.log 3 n + 1 + Nat.log 2 n / 2 + if Nat.log 2 n % 2 = 1 ∧ 2 * 3 ^ Nat.log 3 n ≤ n then 1 else 0 def grid_natural_sharp_bound {A : Finset (ℕ × ℕ)} {n : ℕ} (hn : 0 < n) (hA : GridForkFree A) (hbound : ∀ a ∈ A, gridValue a ≤ n) : A.card ≤ smoothRankBound n := by have hW : ∀ a ∈ A, a.1 < Nat.log 2 n + 1 := by intro a ha exact Nat.lt_succ_of_le (gridValue_log_bounds (hbound a ha)).1 have hH : ∀ a ∈ A, a.2 < Nat.log 3 n + 1 := by intro a ha exact Nat.lt_succ_of_le (gridValue_log_bounds (hbound a ha)).2 have hbasic := grid_card_bound hA hW hH unfold smoothRankBound rw [if_neg (by omega : n ≠ 0)] by_cases hpar : Nat.log 2 n % 2 = 1 · by_cases htop : 2 * 3 ^ Nat.log 3 n ≤ n · rw [if_pos ⟨hpar, htop⟩] omega · rw [if_neg (by simp [htop])] have hWeven : ∀ a ∈ A, a.1 < 2 * ((Nat.log 2 n + 1) / 2) := by intro a ha have := hW a ha omega have hsingle : ∀ a ∈ A, a.2 = Nat.log 3 n → a.1 = 0 := by intro a ha hay by_contra hax have hpow : 2 ≤ (2 : ℕ) ^ a.1 := by calc 2 = (2 : ℕ) ^ 1 := by norm_num _ ≤ 2 ^ a.1 := Nat.pow_le_pow_right (by norm_num) (by omega) have hb := hbound a ha unfold gridValue at hb rw [hay] at hb apply htop nlinarith have hh := grid_bound_top_single hA hWeven hH hsingle omega · rw [if_neg (by simp [hpar])] omega end Bounty end SubmissionComponent_SmoothRank /- Component WindowCount; SHA256 58f33d4b9f803b7a0322843468c1288acc1863366d0070e366ddb3418be4416f -/ section SubmissionComponent_WindowCount /- Explicit finite witnesses for the two-prime rank bound. -/ namespace Bounty def log_scaled_bounds {b d n : ℕ} (hb : 1 < b) (hd : 0 < d) (hdn : d ≤ n) : d * b ^ Nat.log b (n / d) ≤ n ∧ n < b * (d * b ^ Nat.log b (n / d)) := by have hquot : n / d ≠ 0 := by have := Nat.div_pos hdn hd; omega have hlo := Nat.pow_log_le_self b hquot have hhi := Nat.lt_pow_succ_log_self hb (n / d) constructor · have hh := (Nat.le_div_iff_mul_le hd).mp hlo simpa [Nat.mul_comm] using hh · have hh := (Nat.div_lt_iff_lt_mul hd).mp hhi simpa [pow_succ, Nat.mul_comm, Nat.mul_left_comm, Nat.mul_assoc] using hh def two_pow_even (j : ℕ) : (2 : ℕ) ^ (2 * j) = 4 ^ j := by rw [pow_mul] norm_num def two_pow_odd (j : ℕ) : (2 : ℕ) ^ (2 * j + 1) = 2 * 4 ^ j := by rw [pow_add, two_pow_even] simp [Nat.mul_comm] def window0Primary (n i : ℕ) : ℕ × ℕ := (2 * Nat.log 4 (n / 3 ^ i), i) def window0Secondary (n j : ℕ) : ℕ × ℕ := (2 * j + 1, Nat.log 3 (n / 4 ^ (j + 1))) def window0Grid (n : ℕ) : Finset (ℕ × ℕ) := ((Finset.range (Nat.log 3 n + 1)).image (window0Primary n)) ∪ ((Finset.range (Nat.log 4 n)).image (window0Secondary n)) def window0Primary_injective (n : ℕ) : Function.Injective (window0Primary n) := by intro a b hab exact congrArg Prod.snd hab def window0Secondary_injective (n : ℕ) : Function.Injective (window0Secondary n) := by intro a b hab have hh := congrArg Prod.fst hab dsimp [window0Secondary] at hh omega def window0Grid_card (n : ℕ) : (window0Grid n).card = Nat.log 3 n + 1 + Nat.log 4 n := by unfold window0Grid rw [Finset.card_union_of_disjoint] · rw [Finset.card_image_of_injective _ (window0Primary_injective n), Finset.card_image_of_injective _ (window0Secondary_injective n)] simp · apply Finset.disjoint_left.mpr intro a ha hb obtain ⟨i, hi, hia⟩ := Finset.mem_image.mp ha obtain ⟨j, hj, hja⟩ := Finset.mem_image.mp hb have hh := congrArg Prod.fst (hia.trans hja.symm) dsimp [window0Primary, window0Secondary] at hh omega def window0Primary_mem {n i : ℕ} (hn : 0 < n) (hi : i ≤ Nat.log 3 n) : gridValue (window0Primary n i) ∈ cutoffWindow 0 n := by have hd : 0 < (3 : ℕ) ^ i := by positivity have hdn : (3 : ℕ) ^ i ≤ n := (Nat.le_log_iff_pow_le (by norm_num) (by omega : n ≠ 0)).mp hi have hh := log_scaled_bounds (by norm_num : 1 < (4 : ℕ)) hd hdn have hvalue : gridValue (window0Primary n i) = 3 ^ i * 4 ^ Nat.log 4 (n / 3 ^ i) := by simp [gridValue, window0Primary, two_pow_even, Nat.mul_comm] constructor · exact ⟨(window0Primary n i).1, (window0Primary n i).2, rfl⟩ · left constructor · rw [gridValue_factorization_two] simp [window0Primary] · rw [hvalue] exact ⟨hh.2, hh.1⟩ def window0Secondary_mem {n j : ℕ} (hn : 0 < n) (hj : j < Nat.log 4 n) : gridValue (window0Secondary n j) ∈ cutoffWindow 0 n := by have hd : 0 < (4 : ℕ) ^ (j + 1) := by positivity have hdn : (4 : ℕ) ^ (j + 1) ≤ n := (Nat.le_log_iff_pow_le (by norm_num) (by omega : n ≠ 0)).mp (by omega) have hh := log_scaled_bounds (by norm_num : 1 < (3 : ℕ)) hd hdn have hvalue : 2 * gridValue (window0Secondary n j) = 4 ^ (j + 1) * 3 ^ Nat.log 3 (n / 4 ^ (j + 1)) := by dsimp only [gridValue, window0Secondary] rw [two_pow_odd, pow_succ] ring constructor · exact ⟨(window0Secondary n j).1, (window0Secondary n j).2, rfl⟩ · right constructor · rw [gridValue_factorization_two] simp [window0Secondary] · rw [← hvalue] at hh constructor <;> omega def window0Grid_subset {n : ℕ} (hn : 0 < n) : ∀ a ∈ window0Grid n, gridValue a ∈ cutoffWindow 0 n := by intro a ha rcases Finset.mem_union.mp ha with ha | ha · obtain ⟨i, hi, rfl⟩ := Finset.mem_image.mp ha exact window0Primary_mem hn (by have := Finset.mem_range.mp hi; omega) · obtain ⟨j, hj, rfl⟩ := Finset.mem_image.mp ha exact window0Secondary_mem hn (Finset.mem_range.mp hj) def window0Witness (n : ℕ) : Finset ℕ := (window0Grid n).image gridValue def window0Witness_card (n : ℕ) : (window0Witness n).card = Nat.log 3 n + 1 + Nat.log 4 n := by rw [window0Witness, Finset.card_image_of_injective _ gridValue_injective, window0Grid_card] def window0Witness_subset {n : ℕ} (hn : 0 < n) : (window0Witness n : Set ℕ) ⊆ cutoffWindow 0 n := by intro x hx obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hx exact window0Grid_subset hn a ha end Bounty end SubmissionComponent_WindowCount /- Component FiveInterval; SHA256 cd96d816231a581130f9eb75453fd8593b7f671da1d2b7ef59a996b917986353 -/ section SubmissionComponent_FiveInterval /- The powers-of-five loss on its exact arithmetic interval. -/ namespace Bounty def badWindow (n : ℕ) : Prop := ∃ j b : ℕ, 4 ^ j ≤ n ∧ 4 * n < 5 * 4 ^ j ∧ 10 * 3 ^ b ≤ n ∧ n < 12 * 3 ^ b def gridValue_column_lt {a : ℕ × ℕ} {q n W : ℕ} (_hq : 0 < q) (hbound : q * gridValue a ≤ n) (hlt : n < q * 2 ^ W) : a.1 < W := by by_contra hh have hpow : (2 : ℕ) ^ W ≤ 2 ^ a.1 := Nat.pow_le_pow_right (by norm_num) (by omega) have h3 : 0 < (3 : ℕ) ^ a.2 := by positivity unfold gridValue at hbound have hmul : q * 2 ^ W ≤ q * 2 ^ a.1 := Nat.mul_le_mul_left _ hpow have hh : q * 2 ^ a.1 ≤ q * (2 ^ a.1 * 3 ^ a.2) := by nlinarith omega def gridValue_row_lt {a : ℕ × ℕ} {q n H : ℕ} (_hq : 0 < q) (hbound : q * gridValue a ≤ n) (hlt : n < q * 3 ^ H) : a.2 < H := by by_contra hh have hpow : (3 : ℕ) ^ H ≤ 3 ^ a.2 := Nat.pow_le_pow_right (by norm_num) (by omega) have h2 : 0 < (2 : ℕ) ^ a.1 := by positivity unfold gridValue at hbound have hmul : q * 3 ^ H ≤ q * 3 ^ a.2 := Nat.mul_le_mul_left _ hpow have hh : q * 3 ^ a.2 ≤ q * (2 ^ a.1 * 3 ^ a.2) := by nlinarith omega def badWindow_grid_bounds {n j b : ℕ} (h4 : 4 * n < 5 * 4 ^ j) (h3lo : 10 * 3 ^ b ≤ n) (h3hi : n < 12 * 3 ^ b) : 0 < j ∧ (∀ a : ℕ × ℕ, gridValue a ≤ n → a.1 < 2 * j + 1 ∧ a.2 < b + 3 ∧ (a.2 = b + 2 → a.1 = 0) ∧ (a.1 = 2 → a.2 ≤ b)) ∧ (∀ a : ℕ × ℕ, 5 * gridValue a ≤ n → a.1 < 2 * (j - 1) ∧ a.2 < b + 1 ∧ (a.2 = b → a.1 < 2)) := by have h3pos : 0 < (3 : ℕ) ^ b := by positivity have hj : 0 < j := by by_contra hh have he : j = 0 := by omega simp only [he, pow_zero] at h4 omega refine ⟨hj, ?_, ?_⟩ · intro a ha have ha1 : 1 * gridValue a ≤ n := by simpa using ha constructor · apply gridValue_column_lt (by norm_num : 0 < (1 : ℕ)) ha1 rw [one_mul, two_pow_odd] omega constructor · apply gridValue_row_lt (by norm_num : 0 < (1 : ℕ)) ha1 rw [one_mul, pow_add] norm_num omega constructor · intro hay have hbase : (2 : ℕ) ^ a.1 * (9 * 3 ^ b) ≤ n := by simpa [gridValue, hay, pow_add, Nat.mul_comm, Nat.mul_left_comm, Nat.mul_assoc] using ha by_contra hax have hx : 2 ≤ (2 : ℕ) ^ a.1 := by have hh := Nat.pow_le_pow_right (n := 2) (by norm_num) (show 1 ≤ a.1 by omega) simpa using hh nlinarith · intro hax by_contra hby have hy : 3 ^ (b + 1) ≤ (3 : ℕ) ^ a.2 := Nat.pow_le_pow_right (by norm_num) (by omega) rw [pow_succ] at hy have hbase : 4 * 3 ^ a.2 ≤ n := by simpa [gridValue, hax] using ha omega · intro a ha constructor · apply gridValue_column_lt (by norm_num : 0 < (5 : ℕ)) ha rw [two_pow_even] have hj' : j = (j - 1) + 1 := by omega have hpow : (4 : ℕ) ^ j = 4 * 4 ^ (j - 1) := by calc (4 : ℕ) ^ j = 4 ^ ((j - 1) + 1) := by rw [← hj'] _ = 4 * 4 ^ (j - 1) := by rw [pow_succ]; ring rw [hpow] at h4 omega constructor · apply gridValue_row_lt (by norm_num : 0 < (5 : ℕ)) ha rw [pow_succ] omega · intro hay by_contra hax have hx : 4 ≤ (2 : ℕ) ^ a.1 := by have hh := Nat.pow_le_pow_right (n := 2) (by norm_num) (show 2 ≤ a.1 by omega) simpa using hh have hbase : 5 * (2 ^ a.1 * 3 ^ b) ≤ n := by simpa [gridValue, hay] using ha nlinarith def badWindow_five_layer_loss {n j b : ℕ} {A B : Finset (ℕ × ℕ)} {S : Set ℕ} (h4 : 4 * n < 5 * 4 ^ j) (h3lo : 10 * 3 ^ b ≤ n) (h3hi : n < 12 * 3 ^ b) (hA : GridForkFree A) (hB : GridForkFree B) (hAn : ∀ a ∈ A, gridValue a ≤ n) (hBn : ∀ a ∈ B, 5 * gridValue a ≤ n) (hAS : ∀ a ∈ A, gridValue a ∈ S) (hBS : ∀ a ∈ B, 5 * gridValue a ∈ S) (hS : Erdos1062.ForkFree S) : A.card + B.card + 1 ≤ (b + 3 + j) + (b + 1 + (j - 1)) := by obtain ⟨hj, hAb, hBb⟩ := badWindow_grid_bounds h4 h3lo h3hi exact grid_five_layer_loss hj hA hB (fun a ha => (hAb a (hAn a ha)).1) (fun a ha => (hAb a (hAn a ha)).2.1) (fun a ha => (hAb a (hAn a ha)).2.2.1) (fun a ha => (hAb a (hAn a ha)).2.2.2) (fun a ha => (hBb a (hBn a ha)).1) (fun a ha => (hBb a (hBn a ha)).2.1) (fun a ha => (hBb a (hBn a ha)).2.2) hAS hBS hS end Bounty end SubmissionComponent_FiveInterval /- Component BadRank; SHA256 b6f86ea82ba214bc4e38e5a034b96a5a21963b27d80507a593dfac1a5180bb25 -/ section SubmissionComponent_BadRank /- Exact component ranks in the obstruction window and disjointness of losses. -/ namespace Bounty def badWindow_rank_values {n j b : ℕ} (h4lo : 4 ^ j ≤ n) (h4hi : 4 * n < 5 * 4 ^ j) (h3lo : 10 * 3 ^ b ≤ n) (h3hi : n < 12 * 3 ^ b) : smoothRankBound n = b + 3 + j ∧ smoothRankBound (n / 5) = b + 1 + (j - 1) := by have h3pos : 0 < (3 : ℕ) ^ b := by positivity have hn : n ≠ 0 := by omega have hn5 : n / 5 ≠ 0 := by omega have hj2 : 2 ≤ j := by by_contra hbad have hj : j = 0 ∨ j = 1 := by omega rcases hj with rfl | rfl <;> norm_num at h4hi <;> omega have hlog2 : Nat.log 2 n = 2 * j := by apply Nat.log_eq_of_pow_le_of_lt_pow · rwa [two_pow_even] · rw [two_pow_odd] omega have hlog3 : Nat.log 3 n = b + 2 := by apply Nat.log_eq_of_pow_le_of_lt_pow · rw [pow_add] norm_num omega · rw [show b + 2 + 1 = b + 3 by omega, pow_add] norm_num omega have hj' : j = (j - 2) + 2 := by omega have h4pow : (4 : ℕ) ^ j = 16 * 4 ^ (j - 2) := by calc (4 : ℕ) ^ j = 4 ^ ((j - 2) + 2) := by rw [← hj'] _ = 16 * 4 ^ (j - 2) := by rw [pow_add]; ring have hlog2half : Nat.log 2 (n / 5) = 2 * (j - 2) + 1 := by apply Nat.log_eq_of_pow_le_of_lt_pow · rw [two_pow_odd] apply (Nat.le_div_iff_mul_le (by norm_num : 0 < (5 : ℕ))).mpr rw [h4pow] at h4lo omega · apply (Nat.div_lt_iff_lt_mul (by norm_num : 0 < (5 : ℕ))).mpr rw [pow_succ, two_pow_odd] rw [h4pow] at h4hi omega have hlog3half : Nat.log 3 (n / 5) = b := by apply Nat.log_eq_of_pow_le_of_lt_pow · omega · rw [pow_succ] omega have htophalf : 2 * 3 ^ Nat.log 3 (n / 5) ≤ n / 5 := by rw [hlog3half] omega constructor · simp [smoothRankBound, hn, hlog2, hlog3] · simp only [smoothRankBound, hn5, ↓reduceIte, hlog2half, hlog3half] have hpar : (2 * (j - 2) + 1) % 2 = 1 := by omega rw [if_pos ⟨hpar, by simpa [hlog3half] using htophalf⟩] omega def badWindow_not_div_five {n : ℕ} (hn : badWindow n) : ¬badWindow (n / 5) := by rintro ⟨j, b, hjlo, hjhi, _, _⟩ obtain ⟨k, c, hklo, hkhi, _, _⟩ := hn have hpowpos : 0 < (4 : ℕ) ^ j := by positivity have hkj : j + 2 ≤ k := by by_contra hh have hp : (4 : ℕ) ^ k ≤ 4 ^ (j + 1) := Nat.pow_le_pow_right (by norm_num) (by omega) rw [pow_succ] at hp omega have hp : (4 : ℕ) ^ (j + 2) ≤ 4 ^ k := Nat.pow_le_pow_right (by norm_num) hkj rw [pow_add] at hp norm_num at hp omega def badWindow_rank_loss {n : ℕ} {A B : Finset (ℕ × ℕ)} {S : Set ℕ} (hn : badWindow n) (hA : GridForkFree A) (hB : GridForkFree B) (hAn : ∀ a ∈ A, gridValue a ≤ n) (hBn : ∀ a ∈ B, 5 * gridValue a ≤ n) (hAS : ∀ a ∈ A, gridValue a ∈ S) (hBS : ∀ a ∈ B, 5 * gridValue a ∈ S) (hS : Erdos1062.ForkFree S) : A.card + B.card + 1 ≤ smoothRankBound n + smoothRankBound (n / 5) := by obtain ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ := hn obtain ⟨hr1, hr2⟩ := badWindow_rank_values h4lo h4hi h3lo h3hi rw [hr1, hr2] exact badWindow_five_layer_loss h4hi h3lo h3hi hA hB hAn hBn hAS hBS hS end Bounty end SubmissionComponent_BadRank /- Component Core23; SHA256 103b078245eb4cd986fff5b29b6f4a857f44b4c96ccb11a574d1e6fa5dc1f7ed -/ section SubmissionComponent_Core23 /- Canonical decomposition into a coprime-to-six core and a two-prime component. -/ namespace Bounty def core23 (n : ℕ) : ℕ := ordCompl[3] (ordCompl[2] n) def core23_pos {n : ℕ} (hn : 0 < n) : 0 < core23 n := by apply Nat.ordCompl_pos 3 exact ne_of_gt (Nat.ordCompl_pos 2 (ne_of_gt hn)) def core23_le (n : ℕ) : core23 n ≤ n := (Nat.ordCompl_le (ordCompl[2] n) 3).trans (Nat.ordCompl_le n 2) def core23_decomposition (n : ℕ) : core23 n * gridValue (gridCoordinates n) = n := by have h3 : (ordCompl[2] n).factorization 3 = n.factorization 3 := by rw [Nat.factorization_ordCompl] simp have he2 := Nat.ordProj_mul_ordCompl_eq_self n 2 have he3 := Nat.ordProj_mul_ordCompl_eq_self (ordCompl[2] n) 3 rw [h3] at he3 change core23 n * (2 ^ n.factorization 2 * 3 ^ n.factorization 3) = n calc core23 n * (2 ^ n.factorization 2 * 3 ^ n.factorization 3) = 2 ^ n.factorization 2 * (3 ^ n.factorization 3 * core23 n) := by ring _ = n := by have hh : 3 ^ n.factorization 3 * core23 n = ordCompl[2] n := by simpa only [core23, h3] using he3 rw [hh] exact he2 def core23_not_dvd_two {n : ℕ} (hn : 0 < n) : ¬2 ∣ core23 n := by intro hd exact Nat.not_dvd_ordCompl Nat.prime_two (ne_of_gt hn) (hd.trans (Nat.ordCompl_dvd (ordCompl[2] n) 3)) def core23_not_dvd_three {n : ℕ} (hn : 0 < n) : ¬3 ∣ core23 n := Nat.not_dvd_ordCompl Nat.prime_three (ne_of_gt (Nat.ordCompl_pos 2 (ne_of_gt hn))) def core23_coprime {n : ℕ} (hn : 0 < n) : (core23 n).Coprime 6 := by have h2 : Nat.Coprime 2 (core23 n) := (Nat.prime_two.coprime_iff_not_dvd).mpr (core23_not_dvd_two hn) have h3 : Nat.Coprime 3 (core23 n) := (Nat.prime_three.coprime_iff_not_dvd).mpr (core23_not_dvd_three hn) simpa using (h2.mul_left h3).symm def core23_gridValue (a : ℕ × ℕ) : core23 (gridValue a) = 1 := by have hh := core23_decomposition (gridValue a) rw [gridCoordinates_value] at hh have hp := gridValue_pos a nlinarith def core23_mul (m n : ℕ) : core23 (m * n) = core23 m * core23 n := by simp only [core23, Nat.ordCompl_mul] def core23_eq_self {q : ℕ} (hq : q.Coprime 6) : core23 q = q := by have h2 : ¬2 ∣ q := by intro hd have hg := Nat.eq_one_of_dvd_coprimes hq hd (by norm_num : 2 ∣ 6) norm_num at hg have h3 : ¬3 ∣ q := by intro hd have hg := Nat.eq_one_of_dvd_coprimes hq hd (by norm_num : 3 ∣ 6) norm_num at hg unfold core23 rw [(Nat.ordCompl_eq_self_iff_zero_or_not_dvd q Nat.prime_two).mpr (Or.inr h2)] exact (Nat.ordCompl_eq_self_iff_zero_or_not_dvd q Nat.prime_three).mpr (Or.inr h3) def core23_coordinates_injective : Function.Injective (fun n => (core23 n, gridCoordinates n)) := by intro m n he have hc := congrArg Prod.fst he have hg := congrArg Prod.snd he dsimp only at hc hg calc m = core23 m * gridValue (gridCoordinates m) := (core23_decomposition m).symm _ = core23 n * gridValue (gridCoordinates n) := by rw [hc, hg] _ = n := core23_decomposition n end Bounty end SubmissionComponent_Core23 /- Component ComponentSum; SHA256 1267861b451434ccab5de81dd48d55fd7cba530d0429d8d0cab53d29994fa22a -/ section SubmissionComponent_ComponentSum /- Decomposing a finite fork-free set into its coprime-to-six components. -/ namespace Bounty def forkFree_scale_iff {q : ℕ} (hq : 0 < q) (S : Set ℕ) : Erdos1062.ForkFree ((fun m => q * m) '' S) ↔ Erdos1062.ForkFree S := by rw [forkFree_iff, forkFree_iff] have hi : Function.Injective (fun m : ℕ => q * m) := by intro a b hab dsimp only at hab exact Nat.eq_of_mul_eq_mul_left hq hab constructor · intro hh a b c ha hb hc hab hac hdab hdac apply hi exact hh (q * a) (q * b) (q * c) ⟨a, ha, rfl⟩ ⟨b, hb, rfl⟩ ⟨c, hc, rfl⟩ (fun he => hab (hi he)) (fun he => hac (hi he)) (Nat.mul_dvd_mul_left q hdab) (Nat.mul_dvd_mul_left q hdac) · intro hh a b c ha hb hc hab hac hdab hdac obtain ⟨x, hx, rfl⟩ := ha obtain ⟨y, hy, rfl⟩ := hb obtain ⟨z, hz, rfl⟩ := hc have hxy : x ≠ y := by intro he; exact hab (congrArg (fun m => q * m) he) have hxz : x ≠ z := by intro he; exact hac (congrArg (fun m => q * m) he) apply congrArg (fun m => q * m) exact hh x y z hx hy hz hxy hxz ((Nat.mul_dvd_mul_iff_left hq).mp hdab) ((Nat.mul_dvd_mul_iff_left hq).mp hdac) def coreFiber (A : Finset ℕ) (q : ℕ) : Finset ℕ := A.filter (fun n => core23 n = q) def componentGrid (A : Finset ℕ) (q : ℕ) : Finset (ℕ × ℕ) := (coreFiber A q).image gridCoordinates def componentGrid_card (A : Finset ℕ) (q : ℕ) : (componentGrid A q).card = (coreFiber A q).card := by apply Finset.card_image_iff.mpr intro m hm n hn hcoords have hmcore := (Finset.mem_filter.mp hm).2 have hncore := (Finset.mem_filter.mp hn).2 apply core23_coordinates_injective change (core23 m, gridCoordinates m) = (core23 n, gridCoordinates n) exact Prod.ext (hmcore.trans hncore.symm) hcoords def componentGrid_scaled_mem {A : Finset ℕ} {q : ℕ} {a : ℕ × ℕ} (ha : a ∈ componentGrid A q) : q * gridValue a ∈ A := by obtain ⟨n, hn, rfl⟩ := Finset.mem_image.mp ha obtain ⟨hnA, hncore⟩ := Finset.mem_filter.mp hn have hh := core23_decomposition n rw [hncore] at hh rwa [hh] def componentGrid_bound {A : Finset ℕ} {q n : ℕ} (hbound : ∀ m ∈ A, m ≤ n) : ∀ a ∈ componentGrid A q, q * gridValue a ≤ n := by intro a ha exact hbound _ (componentGrid_scaled_mem ha) def componentGrid_forkFree {A : Finset ℕ} {q : ℕ} (hq : 0 < q) (hA : Erdos1062.ForkFree (A : Set ℕ)) : GridForkFree (componentGrid A q) := by apply gridForkFree_iff.mpr apply (forkFree_scale_iff hq _).mp apply forkFree_mono _ hA rintro x ⟨y, ⟨a, ha, rfl⟩, rfl⟩ exact componentGrid_scaled_mem ha def coprimeCores (n : ℕ) : Finset ℕ := (Finset.Icc 1 n).filter (fun q => q.Coprime 6) def core23_mem_coprimeCores {A : Finset ℕ} {n m : ℕ} (hA : ∀ a ∈ A, 1 ≤ a ∧ a ≤ n) (hm : m ∈ A) : core23 m ∈ coprimeCores n := by have hmb := hA m hm apply Finset.mem_filter.mpr constructor · exact Finset.mem_Icc.mpr ⟨core23_pos (by omega), (core23_le m).trans hmb.2⟩ · exact core23_coprime (by omega) def card_eq_sum_components {A : Finset ℕ} {n : ℕ} (hA : ∀ a ∈ A, 1 ≤ a ∧ a ≤ n) : A.card = ∑ q ∈ coprimeCores n, (componentGrid A q).card := by simp only [componentGrid_card] have hh := Finset.sum_card_fiberwise_eq_card_filter A (coprimeCores n) core23 have he : A.filter (fun a => core23 a ∈ coprimeCores n) = A := by apply Finset.filter_eq_self.mpr intro a ha exact core23_mem_coprimeCores hA ha rw [he] at hh exact hh.symm def componentGrid_rank_bound {A : Finset ℕ} {n q : ℕ} (hbound : ∀ m ∈ A, m ≤ n) (hA : Erdos1062.ForkFree (A : Set ℕ)) (hq : 0 < q) : (componentGrid A q).card ≤ smoothRankBound (n / q) := by have hbd : ∀ a ∈ componentGrid A q, gridValue a ≤ n / q := by intro a ha apply (Nat.le_div_iff_mul_le hq).mpr simpa [Nat.mul_comm] using componentGrid_bound hbound a ha by_cases hnq : n / q = 0 · have he : componentGrid A q = ∅ := by apply Finset.eq_empty_iff_forall_notMem.mpr intro a ha have hp := gridValue_pos a have hh := hbd a ha omega simp [he] · exact grid_natural_sharp_bound (Nat.pos_of_ne_zero hnq) (componentGrid_forkFree hq hA) hbd end Bounty end SubmissionComponent_ComponentSum /- Component MatchingLoss; SHA256 3cef6769bb02764c68ead0a6f082283dd18b9268f21f3a7499abb7e4616e73ae -/ section SubmissionComponent_MatchingLoss /- Summing disjoint losses in a finite family of components. -/ namespace Bounty def sum_matching_losses {ι : Type*} [DecidableEq ι] (Q E : Finset ι) (g : ι → ι) (a r : ι → ℕ) (hEQ : E ⊆ Q) (hgQ : E.image g ⊆ Q) (hginj : Set.InjOn g (E : Set ι)) (hdisj : Disjoint E (E.image g)) (hbound : ∀ i ∈ Q, a i ≤ r i) (hloss : ∀ i ∈ E, a i + a (g i) + 1 ≤ r i + r (g i)) : (∑ i ∈ Q, a i) + E.card ≤ ∑ i ∈ Q, r i := by let d : ι → ℕ := fun i => r i - a i have hdecomp : ∀ i ∈ Q, a i + d i = r i := by intro i hi exact Nat.add_sub_of_le (hbound i hi) have hedge : ∀ i ∈ E, 1 ≤ d i + d (g i) := by intro i hi have hh := hloss i hi have hiQ := hEQ hi have hgiQ := hgQ (Finset.mem_image_of_mem g hi) have hd1 := hdecomp i hiQ have hd2 := hdecomp (g i) hgiQ omega have hcard : E.card ≤ ∑ i ∈ E, (d i + d (g i)) := by calc E.card = ∑ _i ∈ E, 1 := by simp _ ≤ ∑ i ∈ E, (d i + d (g i)) := Finset.sum_le_sum hedge have hsum : (∑ i ∈ E, (d i + d (g i))) = ∑ i ∈ E ∪ E.image g, d i := by rw [Finset.sum_add_distrib, Finset.sum_union hdisj, Finset.sum_image] exact fun i hi j hj hij => hginj hi hj hij rw [hsum] at hcard have hdQ : (∑ i ∈ E ∪ E.image g, d i) ≤ ∑ i ∈ Q, d i := by apply Finset.sum_le_sum_of_subset_of_nonneg · exact Finset.union_subset hEQ hgQ · intro i _ _ exact Nat.zero_le _ have hwhole : (∑ i ∈ Q, a i) + (∑ i ∈ Q, d i) = ∑ i ∈ Q, r i := by rw [← Finset.sum_add_distrib] exact Finset.sum_congr rfl hdecomp omega end Bounty end SubmissionComponent_MatchingLoss /- Component GlobalUpper; SHA256 dc239b5528393e265c4b58f66e52be64cf3971a8d022da7680ca03028464dc43 -/ section SubmissionComponent_GlobalUpper /- The global upper bound, including every disjoint powers-of-five loss. -/ namespace Bounty def badWindow_ge_ten {n : ℕ} (hn : badWindow n) : 10 ≤ n := by obtain ⟨j, b, _, _, h3lo, _⟩ := hn have hp : 0 < (3 : ℕ) ^ b := by positivity omega def componentGrid_five_loss {A : Finset ℕ} {n q : ℕ} (hbound : ∀ m ∈ A, m ≤ n) (hA : Erdos1062.ForkFree (A : Set ℕ)) (hq : 0 < q) (hbad : badWindow (n / q)) : (componentGrid A q).card + (componentGrid A (5 * q)).card + 1 ≤ smoothRankBound (n / q) + smoothRankBound (n / (5 * q)) := by let S : Set ℕ := {m | q * m ∈ A} have hS : Erdos1062.ForkFree S := by apply (forkFree_scale_iff hq S).mp apply forkFree_mono _ hA rintro m ⟨a, ha, rfl⟩ exact ha have hAn : ∀ a ∈ componentGrid A q, gridValue a ≤ n / q := by intro a ha apply (Nat.le_div_iff_mul_le hq).mpr simpa [Nat.mul_comm] using componentGrid_bound hbound a ha have hBn : ∀ a ∈ componentGrid A (5 * q), 5 * gridValue a ≤ n / q := by intro a ha apply (Nat.le_div_iff_mul_le hq).mpr simpa [Nat.mul_comm, Nat.mul_left_comm, Nat.mul_assoc] using componentGrid_bound hbound a ha have hAS : ∀ a ∈ componentGrid A q, gridValue a ∈ S := by intro a ha exact componentGrid_scaled_mem ha have hBS : ∀ a ∈ componentGrid A (5 * q), 5 * gridValue a ∈ S := by intro a ha change q * (5 * gridValue a) ∈ A simpa [Nat.mul_comm, Nat.mul_left_comm, Nat.mul_assoc] using componentGrid_scaled_mem ha have hh := badWindow_rank_loss hbad (componentGrid_forkFree hq hA) (componentGrid_forkFree (by omega : 0 < 5 * q) hA) hAn hBn hAS hBS hS simpa only [Nat.div_div_eq_div_mul, Nat.mul_comm q 5] using hh noncomputable def lossCores (n : ℕ) : Finset ℕ := open scoped Classical in (coprimeCores n).filter (fun q => badWindow (n / q)) def lossCores_subset (n : ℕ) : lossCores n ⊆ coprimeCores n := by classical exact Finset.filter_subset _ _ def lossCores_five_subset (n : ℕ) : (lossCores n).image (fun q => 5 * q) ⊆ coprimeCores n := by classical intro x hx obtain ⟨q, hq, rfl⟩ := Finset.mem_image.mp hx obtain ⟨hqQ, hbad⟩ := Finset.mem_filter.mp hq obtain ⟨hqI, hq6⟩ := Finset.mem_filter.mp hqQ obtain ⟨hq1, hqn⟩ := Finset.mem_Icc.mp hqI have hten := badWindow_ge_ten hbad have hle : 5 * q ≤ n := (Nat.le_div_iff_mul_le hq1).mp (by omega) apply Finset.mem_filter.mpr constructor · exact Finset.mem_Icc.mpr ⟨by omega, hle⟩ · exact (Nat.coprime_mul_iff_left).mpr ⟨by norm_num, hq6⟩ def lossCores_disjoint (n : ℕ) : Disjoint (lossCores n) ((lossCores n).image (fun q => 5 * q)) := by classical apply Finset.disjoint_left.mpr intro x hx hy obtain ⟨q, hq, rfl⟩ := Finset.mem_image.mp hy have hbad := (Finset.mem_filter.mp hq).2 have hbad' := (Finset.mem_filter.mp hx).2 apply badWindow_not_div_five hbad simpa only [Nat.div_div_eq_div_mul, Nat.mul_comm q 5] using hbad' def forkFree_card_with_losses {A : Finset ℕ} {n : ℕ} (hbound : ∀ m ∈ A, 1 ≤ m ∧ m ≤ n) (hA : Erdos1062.ForkFree (A : Set ℕ)) : A.card + (lossCores n).card ≤ ∑ q ∈ coprimeCores n, smoothRankBound (n / q) := by classical rw [card_eq_sum_components hbound] have hi : Set.InjOn (fun q : ℕ => 5 * q) (lossCores n : Set ℕ) := by intro q hq r hr he dsimp only at he omega apply sum_matching_losses (coprimeCores n) (lossCores n) (fun q => 5 * q) (fun q => (componentGrid A q).card) (fun q => smoothRankBound (n / q)) (lossCores_subset n) (lossCores_five_subset n) hi (lossCores_disjoint n) · intro q hq have hqpos := (Finset.mem_Icc.mp (Finset.mem_filter.mp hq).1).1 exact componentGrid_rank_bound (fun m hm => (hbound m hm).2) hA hqpos · intro q hq obtain ⟨hqQ, hbad⟩ := Finset.mem_filter.mp hq have hqpos := (Finset.mem_Icc.mp (Finset.mem_filter.mp hqQ).1).1 exact componentGrid_five_loss (fun m hm => (hbound m hm).2) hA hqpos hbad noncomputable def globalUpper (n : ℕ) : ℕ := (∑ q ∈ coprimeCores n, smoothRankBound (n / q)) - (lossCores n).card def f_le_globalUpper (n : ℕ) : Erdos1062.f n ≤ globalUpper n := by classical obtain ⟨A, hAb, hAf, hAc⟩ := exists_maximizer n have hfin : A.Finite := (Set.finite_Icc 1 n).subset hAb let T := hfin.toFinset have hT : (T : Set ℕ) = A := Set.Finite.coe_toFinset _ have hbound : ∀ m ∈ T, 1 ≤ m ∧ m ≤ n := by intro m hm have hmA : m ∈ A := by rwa [← hT] exact hAb hmA have hfree : Erdos1062.ForkFree (T : Set ℕ) := by rwa [hT] have hh := forkFree_card_with_losses hbound hfree have hc : T.card = Erdos1062.f n := by rw [← Set.ncard_coe_finset, hT, hAc] rw [hc] at hh unfold globalUpper omega end Bounty end SubmissionComponent_GlobalUpper /- Component WindowExact; SHA256 7c1db549ba2a17e00ad4334fbee770863cdc4286251a8486ec2c0c60d3d8f68f -/ section SubmissionComponent_WindowExact /- Each cutoff window is exactly its explicit witness. -/ namespace Bounty def log_scaled_eq {b d n k : ℕ} (hd : 0 < d) (hlo : d * b ^ k ≤ n) (hhi : n < b * (d * b ^ k)) : Nat.log b (n / d) = k := by apply Nat.log_eq_of_pow_le_of_lt_pow · apply (Nat.le_div_iff_mul_le hd).mpr simpa [Nat.mul_comm] using hlo · apply (Nat.div_lt_iff_lt_mul hd).mpr simpa [pow_succ, Nat.mul_comm, Nat.mul_left_comm, Nat.mul_assoc] using hhi def cutoffWindow0_grid_mem {n a b : ℕ} (hm : gridValue (a, b) ∈ cutoffWindow 0 n) : (a, b) ∈ window0Grid n := by have hn : 0 < n := by have hp := gridValue_pos (a, b) have hh := (cutoffWindow_subset 0 n hm).2 omega have hbounds := gridValue_log_bounds (cutoffWindow_subset 0 n hm).2 rcases hm.2 with hm | hm · rw [gridValue_factorization_two] at hm change a % 2 = 0 ∧ n < 4 * (2 ^ a * 3 ^ b) ∧ 2 ^ a * 3 ^ b ≤ n at hm have ha : a = 2 * (a / 2) := by omega have hpow : (2 : ℕ) ^ a = 4 ^ (a / 2) := by calc (2 : ℕ) ^ a = 2 ^ (2 * (a / 2)) := by rw [← ha] _ = 4 ^ (a / 2) := two_pow_even _ have hlog : Nat.log 4 (n / 3 ^ b) = a / 2 := by apply log_scaled_eq (by positivity) · rw [hpow] at hm nlinarith [hm.2.2] · rw [hpow] at hm nlinarith [hm.2.1] apply Finset.mem_union_left apply Finset.mem_image.mpr refine ⟨b, Finset.mem_range.mpr (by omega), ?_⟩ apply Prod.ext · dsimp [window0Primary] omega · rfl · rw [gridValue_factorization_two] at hm change a % 2 ≠ 0 ∧ n < 6 * (2 ^ a * 3 ^ b) ∧ 2 * (2 ^ a * 3 ^ b) ≤ n at hm have ha : a = 2 * (a / 2) + 1 := by omega have hpow : (2 : ℕ) ^ a = 2 * 4 ^ (a / 2) := by calc (2 : ℕ) ^ a = 2 ^ (2 * (a / 2) + 1) := by rw [← ha] _ = 2 * 4 ^ (a / 2) := two_pow_odd _ have hvalue : 2 * (2 ^ a * 3 ^ b) = 4 ^ (a / 2 + 1) * 3 ^ b := by rw [hpow, pow_succ] ring have hlog : Nat.log 3 (n / 4 ^ (a / 2 + 1)) = b := by apply log_scaled_eq (by positivity) · rw [← hvalue] exact hm.2.2 · rw [← hvalue] omega have hj : a / 2 < Nat.log 4 n := by have hp : 0 < (3 : ℕ) ^ b := by positivity have hh : (4 : ℕ) ^ (a / 2 + 1) ≤ n := by rw [hvalue] at hm nlinarith [hm.2.2] have := (Nat.le_log_iff_pow_le (by norm_num : 1 < (4 : ℕ)) (by omega : n ≠ 0)).mpr hh omega apply Finset.mem_union_right apply Finset.mem_image.mpr refine ⟨a / 2, Finset.mem_range.mpr hj, ?_⟩ apply Prod.ext · dsimp [window0Secondary] omega · exact hlog def cutoffWindow0_eq {n : ℕ} (hn : 0 < n) : cutoffWindow 0 n = (window0Witness n : Set ℕ) := by apply Set.Subset.antisymm · intro m hm obtain ⟨a, b, he⟩ := hm.1 have he' : m = gridValue (a, b) := he rw [he'] at hm ⊢ exact Finset.mem_image_of_mem _ (cutoffWindow0_grid_mem hm) · exact window0Witness_subset hn def cutoffWindow0_ncard {n : ℕ} (hn : 0 < n) : (cutoffWindow 0 n).ncard = Nat.log 3 n + 1 + Nat.log 4 n := by rw [cutoffWindow0_eq hn, Set.ncard_coe_finset, window0Witness_card] end Bounty end SubmissionComponent_WindowExact /- Component WindowCountOne; SHA256 f7fe9933c5b7f1a612fa7f98d6b23aef403bd701a01ae219e695e60056ee5b7b -/ section SubmissionComponent_WindowCountOne /- The other parity of the cutoff construction and exact component rank. -/ namespace Bounty def window1Witness (n : ℕ) : Finset ℕ := insert (3 ^ Nat.log 3 (n / 2)) ((window0Witness (n / 2)).image (fun m => 2 * m)) def window1Witness_card (n : ℕ) : (window1Witness n).card = Nat.log 3 (n / 2) + Nat.log 4 (n / 2) + 2 := by have hnot : 3 ^ Nat.log 3 (n / 2) ∉ (window0Witness (n / 2)).image (fun m => 2 * m) := by intro hh obtain ⟨m, hm, he⟩ := Finset.mem_image.mp hh have hd : 2 ∣ 3 ^ Nat.log 3 (n / 2) := ⟨m, he.symm⟩ have := Nat.prime_two.dvd_of_dvd_pow hd norm_num at this have hi : Function.Injective (fun m : ℕ => 2 * m) := by intro a b hab dsimp only at hab omega rw [window1Witness, Finset.card_insert_of_notMem hnot, Finset.card_image_of_injective _ hi, window0Witness_card] omega def window1_base_mem {n : ℕ} (hn : 2 ≤ n) : 3 ^ Nat.log 3 (n / 2) ∈ cutoffWindow 1 n := by have hn' : n / 2 ≠ 0 := by omega have hlo := Nat.pow_log_le_self 3 hn' have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < (3 : ℕ)) (n / 2) rw [pow_succ] at hhi have hpow : (3 ^ Nat.log 3 (n / 2)).factorization 2 = 0 := by have hh := gridValue_factorization_two (0, Nat.log 3 (n / 2)) simpa [gridValue] using hh constructor · exact ⟨0, Nat.log 3 (n / 2), by simp⟩ · right exact ⟨by omega, by omega, by omega⟩ def window1_double_mem {n m : ℕ} (hm : m ∈ cutoffWindow 0 (n / 2)) : 2 * m ∈ cutoffWindow 1 n := by have hmpos := smooth23_pos hm.1 have hfactor := factorization_two_double hmpos constructor · obtain ⟨a, b, he⟩ := hm.1 exact ⟨a + 1, b, by rw [he, pow_succ]; ring⟩ · rcases hm.2 with hm | hm · left exact ⟨by omega, by omega, by omega⟩ · right exact ⟨by omega, by omega, by omega⟩ def window1Witness_subset {n : ℕ} (hn : 2 ≤ n) : (window1Witness n : Set ℕ) ⊆ cutoffWindow 1 n := by intro m hm rcases Finset.mem_insert.mp hm with rfl | hm · exact window1_base_mem hn · obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hm exact window1_double_mem (window0Witness_subset (by omega : 0 < n / 2) ha) def log_four_eq (n : ℕ) : Nat.log 4 n = Nat.log 2 n / 2 := by exact Nat.log_pow_left 2 2 n def log_three_half {n : ℕ} (_hn : 0 < n) (htop : 2 * 3 ^ Nat.log 3 n ≤ n) : Nat.log 3 (n / 2) = Nat.log 3 n := by have hp : 0 < (3 : ℕ) ^ Nat.log 3 n := by positivity have hn2 : n / 2 ≠ 0 := by omega apply le_antisymm · apply Nat.log_mono_right exact Nat.div_le_self n 2 · apply (Nat.le_log_iff_pow_le (by norm_num) hn2).mpr omega def log_four_half_odd {n : ℕ} (hpar : Nat.log 2 n % 2 = 1) : Nat.log 4 (n / 2) = Nat.log 4 n := by rw [log_four_eq, log_four_eq, Nat.log_div_base] omega end Bounty end SubmissionComponent_WindowCountOne /- Component WindowExactOne; SHA256 e41d375d05a6e50965b8238113172fa9284275332240b2f251738df55ef0ae51 -/ section SubmissionComponent_WindowExactOne /- Exact cardinalities and lower-endpoint cases of both cutoff windows. -/ namespace Bounty def cutoffWindow1_half {n m : ℕ} (hs : Smooth23 m) (hm : 2 * m ∈ cutoffWindow 1 n) : m ∈ cutoffWindow 0 (n / 2) := by have hfactor := factorization_two_double (smooth23_pos hs) constructor · exact hs · rcases hm.2 with hm | hm · left exact ⟨by omega, by omega, by omega⟩ · right exact ⟨by omega, by omega, by omega⟩ def cutoffWindow1_eq {n : ℕ} (hn : 2 ≤ n) : cutoffWindow 1 n = (window1Witness n : Set ℕ) := by apply Set.Subset.antisymm · intro m hm obtain ⟨a, b, he⟩ := hm.1 have he' : m = gridValue (a, b) := he rw [he'] at hm ⊢ by_cases ha : a = 0 · have hmem : 3 ^ b ∈ cutoffWindow 1 n := by simpa [ha, gridValue] using hm have hfactor : (3 ^ b).factorization 2 = 0 := by simpa [gridValue] using gridValue_factorization_two (0, b) have hwindow : n < 6 * 3 ^ b ∧ 2 * 3 ^ b ≤ n := by rcases hmem.2 with h | h · omega · exact h.2 have hlog : Nat.log 3 (n / 2) = b := by apply Nat.log_eq_of_pow_le_of_lt_pow · omega · rw [pow_succ] omega change gridValue (a, b) ∈ window1Witness n have hvalue : gridValue (a, b) = 3 ^ Nat.log 3 (n / 2) := by simp [gridValue, ha, hlog] rw [hvalue] exact Finset.mem_insert_self _ _ · have ha' : a = (a - 1) + 1 := by omega have hvalue : gridValue (a, b) = 2 * gridValue (a - 1, b) := by change 2 ^ a * 3 ^ b = 2 * (2 ^ (a - 1) * 3 ^ b) conv_lhs => rw [ha', pow_succ] ring rw [hvalue] at hm ⊢ have hs : Smooth23 (gridValue (a - 1, b)) := ⟨a - 1, b, rfl⟩ have hhalf := cutoffWindow1_half hs hm rw [cutoffWindow0_eq (by omega : 0 < n / 2)] at hhalf apply Finset.mem_insert_of_mem exact Finset.mem_image_of_mem _ hhalf · exact window1Witness_subset hn def cutoffWindow1_ncard {n : ℕ} (hn : 2 ≤ n) : (cutoffWindow 1 n).ncard = Nat.log 3 (n / 2) + Nat.log 4 (n / 2) + 2 := by rw [cutoffWindow1_eq hn, Set.ncard_coe_finset, window1Witness_card] def cutoffWindow_zero (p : ℕ) : cutoffWindow p 0 = ∅ := by apply Set.eq_empty_iff_forall_notMem.mpr intro m hm have hh := cutoffWindow_subset p 0 hm have := hh.1 have := hh.2 omega def cutoffWindow1_one : cutoffWindow 1 1 = ∅ := by apply Set.eq_empty_iff_forall_notMem.mpr intro m hm have hbound := cutoffWindow_subset 1 1 hm have hm1 : m = 1 := by have := hbound.1; have := hbound.2; omega subst m have hfactor : (1 : ℕ).factorization 2 = 0 := by simp rcases hm.2 with hh | hh <;> omega def cutoffCount (p n : ℕ) : ℕ := if p = 0 then if n = 0 then 0 else Nat.log 3 n + 1 + Nat.log 4 n else if n < 2 then 0 else Nat.log 3 (n / 2) + Nat.log 4 (n / 2) + 2 def cutoffWindow_ncard {p : ℕ} (hp : p < 2) (n : ℕ) : (cutoffWindow p n).ncard = cutoffCount p n := by by_cases hp0 : p = 0 · subst p by_cases hn : n = 0 · subst n simp [cutoffCount, cutoffWindow_zero] · rw [cutoffWindow0_ncard (by omega)] simp [cutoffCount, hn] · have hp1 : p = 1 := by omega subst p by_cases hn : n < 2 · have he : n = 0 ∨ n = 1 := by omega rcases he with rfl | rfl <;> simp [cutoffWindow_zero, cutoffWindow1_one, cutoffCount] · rw [cutoffWindow1_ncard (by omega)] simp [cutoffCount, hn] def cutoffCount_mono (p : ℕ) : Monotone (cutoffCount p) := by intro n m hnm have h3 := Nat.log_mono_right (b := 3) hnm have h4 := Nat.log_mono_right (b := 4) hnm have hhalf : n / 2 ≤ m / 2 := Nat.div_le_div_right hnm have h3half := Nat.log_mono_right (b := 3) hhalf have h4half := Nat.log_mono_right (b := 4) hhalf unfold cutoffCount split_ifs <;> omega end Bounty end SubmissionComponent_WindowExactOne /- Component GlobalWindow; SHA256 a7b66394c6115a86e778d7fc92d0e6bee6f5ffa829a479daa37161887b5349d6 -/ section SubmissionComponent_GlobalWindow /- A local-to-global criterion for the cutoff construction. -/ namespace Bounty def core23_small_multiplier {a b n : ℕ} (_ha : 0 < a) (hb : 0 < b) (hlow : n < 8 * a) (hhigh : b ≤ n) (hab : a ∣ b) (hne : a ≠ b) (h5 : b ≠ 5 * a) (h7 : b ≠ 7 * a) : core23 b = core23 a := by obtain ⟨k, rfl⟩ := hab have hk : k < 8 := by nlinarith have hk0 : 0 < k := by nlinarith have hk1 : k ≠ 1 := by intro he; simp [he] at hne have hk5 : k ≠ 5 := by intro he; apply h5; rw [he]; ring have hk7 : k ≠ 7 := by intro he; apply h7; rw [he]; ring have hs : Smooth23 k := by have hc : k = 2 ∨ k = 3 ∨ k = 4 ∨ k = 6 := by omega rcases hc with rfl | rfl | rfl | rfl · exact ⟨1, 0, by norm_num⟩ · exact ⟨0, 1, by norm_num⟩ · exact ⟨2, 0, by norm_num⟩ · exact ⟨1, 1, by norm_num⟩ obtain ⟨x, y, he⟩ := hs have hcore : core23 k = 1 := by rw [he] exact core23_gridValue (x, y) rw [core23_mul, hcore, mul_one] def forkFree_of_components_above_eighth {S : Set ℕ} {n : ℕ} (hbound : ∀ a ∈ S, 0 < a ∧ n < 8 * a ∧ a ≤ n) (h5 : ∀ a ∈ S, 5 * a ∉ S) (h7 : ∀ a ∈ S, 7 * a ∉ S) (hcomponents : ∀ q, Erdos1062.ForkFree (S ∩ {a | core23 a = q})) : Erdos1062.ForkFree S := by rw [forkFree_iff] intro a b c ha hb hc hab hac hdab hdac have habcore : core23 b = core23 a := by exact core23_small_multiplier (hbound a ha).1 (hbound b hb).1 (hbound a ha).2.1 (hbound b hb).2.2 hdab hab (by intro he; exact h5 a ha (he ▸ hb)) (by intro he; exact h7 a ha (he ▸ hb)) have haccore : core23 c = core23 a := by exact core23_small_multiplier (hbound a ha).1 (hbound c hc).1 (hbound a ha).2.1 (hbound c hc).2.2 hdac hac (by intro he; exact h5 a ha (he ▸ hc)) (by intro he; exact h7 a ha (he ▸ hc)) exact (forkFree_iff _).mp (hcomponents (core23 a)) a b c ⟨ha, rfl⟩ ⟨hb, habcore⟩ ⟨hc, haccore⟩ hab hac hdab hdac end Bounty end SubmissionComponent_GlobalWindow /- Component SelectedFamily; SHA256 24f7ad88a998e9eac12aa46e63b7af28a81b696f27571d0aa2f32b30cfc6d7c2 -/ section SubmissionComponent_SelectedFamily /- Assembling compatible cutoff windows in disjoint arithmetic components. -/ namespace Bounty noncomputable def scaledCutoff (q p r : ℕ) : Finset ℕ := (cutoffWindow_finite p r).toFinset.image (fun s => q * s) noncomputable def selectedFamily (Q : Finset ℕ) (p r : ℕ → ℕ) : Finset ℕ := Q.biUnion (fun q => scaledCutoff q (p q) (r q)) def mem_scaledCutoff {a q p r : ℕ} : a ∈ scaledCutoff q p r ↔ ∃ s ∈ cutoffWindow p r, a = q * s := by simp [scaledCutoff, eq_comm] def mem_selectedFamily {a : ℕ} {Q : Finset ℕ} {p r : ℕ → ℕ} : a ∈ selectedFamily Q p r ↔ ∃ q ∈ Q, ∃ s ∈ cutoffWindow (p q) (r q), a = q * s := by simp only [selectedFamily, Finset.mem_biUnion, mem_scaledCutoff] def smooth23_core {s : ℕ} (hs : Smooth23 s) : core23 s = 1 := by obtain ⟨a, b, rfl⟩ := hs exact core23_gridValue (a, b) def scaledCutoff_core {a q p r : ℕ} (hq : q.Coprime 6) (ha : a ∈ scaledCutoff q p r) : core23 a = q := by obtain ⟨s, hs, rfl⟩ := mem_scaledCutoff.mp ha rw [core23_mul, core23_eq_self hq, smooth23_core hs.1, mul_one] def scaledCutoff_card {q p r : ℕ} (hq : 0 < q) (hp : p < 2) : (scaledCutoff q p r).card = cutoffCount p r := by have hi : Function.Injective (fun s : ℕ => q * s) := by intro a b hab exact Nat.eq_of_mul_eq_mul_left hq hab rw [scaledCutoff, Finset.card_image_of_injective _ hi, ← Set.ncard_eq_toFinset_card (cutoffWindow p r) (cutoffWindow_finite p r), cutoffWindow_ncard hp] def scaledCutoff_forkFree {q p r : ℕ} (hq : 0 < q) (hp : p < 2) : Erdos1062.ForkFree (scaledCutoff q p r : Set ℕ) := by have he : (scaledCutoff q p r : Set ℕ) = (fun s => q * s) '' cutoffWindow p r := by ext a simp only [Finset.mem_coe, mem_scaledCutoff, Set.mem_image] constructor · rintro ⟨s, hs, he⟩ exact ⟨s, hs, he.symm⟩ · rintro ⟨s, hs, he⟩ exact ⟨s, hs, he.symm⟩ rw [he] exact (forkFree_scale_iff hq _).mpr (cutoffWindow_forkFree hp r) def selectedFamily_card {Q : Finset ℕ} {p r : ℕ → ℕ} (hQ : ∀ q ∈ Q, 0 < q ∧ q.Coprime 6) (hp : ∀ q ∈ Q, p q < 2) : (selectedFamily Q p r).card = ∑ q ∈ Q, cutoffCount (p q) (r q) := by have hd : ∀ q ∈ Q, ∀ t ∈ Q, q ≠ t → Disjoint (scaledCutoff q (p q) (r q)) (scaledCutoff t (p t) (r t)) := by intro q hq t ht hne apply Finset.disjoint_left.mpr intro a ha hb exact hne ((scaledCutoff_core (hQ q hq).2 ha).symm.trans (scaledCutoff_core (hQ t ht).2 hb)) rw [selectedFamily, Finset.card_biUnion hd] apply Finset.sum_congr rfl intro q hq exact scaledCutoff_card (hQ q hq).1 (hp q hq) def selectedFamily_components {Q : Finset ℕ} {p r : ℕ → ℕ} (hQ : ∀ q ∈ Q, 0 < q ∧ q.Coprime 6) (hp : ∀ q ∈ Q, p q < 2) (q : ℕ) : Erdos1062.ForkFree ((selectedFamily Q p r : Set ℕ) ∩ {a | core23 a = q}) := by by_cases hqQ : q ∈ Q · apply forkFree_mono _ (scaledCutoff_forkFree (r := r q) (hQ q hqQ).1 (hp q hqQ)) intro a ha obtain ⟨t, ht, s, hs, he⟩ := mem_selectedFamily.mp ha.1 have hmem : a ∈ scaledCutoff t (p t) (r t) := mem_scaledCutoff.mpr ⟨s, hs, he⟩ have hcore := scaledCutoff_core (hQ t ht).2 hmem have htq : t = q := hcore.symm.trans ha.2 rwa [htq] at hmem · have he : ((selectedFamily Q p r : Set ℕ) ∩ {a | core23 a = q}) = ∅ := by apply Set.eq_empty_iff_forall_notMem.mpr intro a ha obtain ⟨t, ht, s, hs, he⟩ := mem_selectedFamily.mp ha.1 have hmem : a ∈ scaledCutoff t (p t) (r t) := mem_scaledCutoff.mpr ⟨s, hs, he⟩ have hcore := scaledCutoff_core (hQ t ht).2 hmem have htq : t = q := hcore.symm.trans ha.2 exact hqQ (htq ▸ ht) rw [he] exact forkFree_empty def selectedFamily_exclude_multiple {Q : Finset ℕ} {p r : ℕ → ℕ} {d : ℕ} (hQ : ∀ q ∈ Q, 0 < q ∧ q.Coprime 6) (hd : 0 < d) (hd6 : d.Coprime 6) (hdisj : ∀ q ∈ Q, d * q ∈ Q → Disjoint (cutoffWindow (p q) (r q)) (cutoffWindow (p (d * q)) (r (d * q)))) : ∀ a ∈ selectedFamily Q p r, d * a ∉ selectedFamily Q p r := by intro a ha hb obtain ⟨q, hq, s, hs, has⟩ := mem_selectedFamily.mp ha obtain ⟨t, ht, u, hu, hbu⟩ := mem_selectedFamily.mp hb have hcorea : core23 a = q := scaledCutoff_core (hQ q hq).2 (mem_scaledCutoff.mpr ⟨s, hs, has⟩) have hcoreb : core23 (d * a) = t := scaledCutoff_core (hQ t ht).2 (mem_scaledCutoff.mpr ⟨u, hu, hbu⟩) have htq : t = d * q := by rw [core23_mul, core23_eq_self hd6, hcorea] at hcoreb exact hcoreb.symm have hsu : s = u := by apply Nat.eq_of_mul_eq_mul_left (mul_pos hd (hQ q hq).1) calc (d * q) * s = d * (q * s) := by ring _ = d * a := by rw [has] _ = t * u := hbu _ = (d * q) * u := by rw [htq] have hD := hdisj q hq (htq ▸ ht) have hu' : s ∈ cutoffWindow (p (d * q)) (r (d * q)) := by rw [hsu] rwa [htq] at hu exact Set.disjoint_left.mp hD hs hu' def selectedFamily_forkFree {Q : Finset ℕ} {p r : ℕ → ℕ} {n : ℕ} (hQ : ∀ q ∈ Q, 0 < q ∧ q.Coprime 6) (hp : ∀ q ∈ Q, p q < 2) (hcut : ∀ q ∈ Q, q * r q ≤ n) (hlow : ∀ q ∈ Q, ∀ s ∈ cutoffWindow (p q) (r q), n < 8 * (q * s)) (h5 : ∀ q ∈ Q, 5 * q ∈ Q → (if p q = p (5 * q) then 4 else 6) * r (5 * q) ≤ r q) (h7 : ∀ q ∈ Q, 7 * q ∈ Q → (if p q = p (7 * q) then 4 else 6) * r (7 * q) ≤ r q) : Erdos1062.ForkFree (selectedFamily Q p r : Set ℕ) := by apply forkFree_of_components_above_eighth · intro a ha obtain ⟨q, hq, s, hs, rfl⟩ := mem_selectedFamily.mp ha refine ⟨mul_pos (hQ q hq).1 (smooth23_pos hs.1), hlow q hq s hs, ?_⟩ have hsr := (cutoffWindow_subset (p q) (r q) hs).2 exact (Nat.mul_le_mul_left q hsr).trans (hcut q hq) · exact selectedFamily_exclude_multiple hQ (by norm_num : 0 < (5 : ℕ)) (by norm_num) (fun q hq ht => cutoffWindow_disjoint (h5 q hq ht)) · exact selectedFamily_exclude_multiple hQ (by norm_num : 0 < (7 : ℕ)) (by norm_num) (fun q hq ht => cutoffWindow_disjoint (h7 q hq ht)) · exact selectedFamily_components hQ hp end Bounty end SubmissionComponent_SelectedFamily /- Component CutoffCertificate; SHA256 c10fb000d64bdd10e74f201284ed9e9f3922358a9af8997fb0a9338b14a450eb -/ section SubmissionComponent_CutoffCertificate /- The precise certificate needed to attain the global upper bound. -/ namespace Bounty noncomputable def lossChildren (n : ℕ) : Finset ℕ := (lossCores n).image (fun q => 5 * q) noncomputable def componentQuota (n q : ℕ) : ℕ := open scoped Classical in smoothRankBound (n / q) - if q ∈ lossChildren n then 1 else 0 def smoothRankBound_pos {n : ℕ} (hn : 0 < n) : 0 < smoothRankBound n := by unfold smoothRankBound rw [if_neg (ne_of_gt hn)] omega def lossChildren_rank_pos {n q : ℕ} (hq : q ∈ lossChildren n) : 0 < smoothRankBound (n / q) := by classical obtain ⟨t, ht, rfl⟩ := Finset.mem_image.mp hq have hbad := (Finset.mem_filter.mp ht).2 have hten := badWindow_ge_ten hbad have hn : 0 < n / (5 * t) := by rw [Nat.mul_comm 5 t, ← Nat.div_div_eq_div_mul] omega exact smoothRankBound_pos hn def componentQuota_sum (n : ℕ) : (∑ q ∈ coprimeCores n, componentQuota n q) = globalUpper n := by classical have hsubset : lossChildren n ⊆ coprimeCores n := lossCores_five_subset n have hfilter : (coprimeCores n).filter (fun q => q ∈ lossChildren n) = lossChildren n := by ext q simp only [Finset.mem_filter] exact ⟨fun h => h.2, fun h => ⟨hsubset h, h⟩⟩ have hsum : (∑ q ∈ coprimeCores n, if q ∈ lossChildren n then 1 else 0) = (lossChildren n).card := by rw [Finset.sum_boole, hfilter] norm_cast have hcard : (lossChildren n).card = (lossCores n).card := by apply Finset.card_image_of_injective intro a b hab dsimp only at hab omega unfold componentQuota globalUpper rw [Finset.sum_tsub_distrib, hsum, hcard] intro q hq split_ifs with hh · exact lossChildren_rank_pos hh · exact Nat.zero_le _ structure CutoffCertificate (n : ℕ) where parity : ℕ → ℕ cutoff : ℕ → ℕ parity_lt : ∀ q ∈ coprimeCores n, parity q < 2 cutoff_bound : ∀ q ∈ coprimeCores n, q * cutoff q ≤ n lower_bound : ∀ q ∈ coprimeCores n, ∀ s ∈ cutoffWindow (parity q) (cutoff q), n < 8 * (q * s) compatible_five : ∀ q ∈ coprimeCores n, 5 * q ∈ coprimeCores n → (if parity q = parity (5 * q) then 4 else 6) * cutoff (5 * q) ≤ cutoff q compatible_seven : ∀ q ∈ coprimeCores n, 7 * q ∈ coprimeCores n → (if parity q = parity (7 * q) then 4 else 6) * cutoff (7 * q) ≤ cutoff q quota : ∀ q ∈ coprimeCores n, cutoffCount (parity q) (cutoff q) = componentQuota n q def cutoffCertificate_witness {n : ℕ} (C : CutoffCertificate n) : ∃ A : Finset ℕ, (∀ m ∈ A, 1 ≤ m ∧ m ≤ n) ∧ Erdos1062.ForkFree (A : Set ℕ) ∧ A.card = globalUpper n := by have hQ : ∀ q ∈ coprimeCores n, 0 < q ∧ q.Coprime 6 := by intro q hq obtain ⟨hqI, hq6⟩ := Finset.mem_filter.mp hq exact ⟨(Finset.mem_Icc.mp hqI).1, hq6⟩ refine ⟨selectedFamily (coprimeCores n) C.parity C.cutoff, ?_, ?_, ?_⟩ · intro m hm obtain ⟨q, hq, s, hs, rfl⟩ := mem_selectedFamily.mp hm constructor · exact mul_pos (hQ q hq).1 (smooth23_pos hs.1) · exact (Nat.mul_le_mul_left q (cutoffWindow_subset _ _ hs).2).trans (C.cutoff_bound q hq) · exact selectedFamily_forkFree hQ C.parity_lt C.cutoff_bound C.lower_bound C.compatible_five C.compatible_seven · rw [selectedFamily_card hQ C.parity_lt] calc (∑ q ∈ coprimeCores n, cutoffCount (C.parity q) (C.cutoff q)) = ∑ q ∈ coprimeCores n, componentQuota n q := Finset.sum_congr rfl C.quota _ = globalUpper n := componentQuota_sum n def f_eq_globalUpper_of_certificate {n : ℕ} (C : CutoffCertificate n) : Erdos1062.f n = globalUpper n := by apply le_antisymm (f_le_globalUpper n) obtain ⟨A, hbound, hfree, hcard⟩ := cutoffCertificate_witness C rw [← hcard, ← Set.ncard_coe_finset] apply card_le_f _ hfree intro m hm exact hbound m hm end Bounty end SubmissionComponent_CutoffCertificate /- Component QuotaIdentity; SHA256 dbd6804f74b09f50a215146d881d7238a4c9fbb7ebd802a406146a78919c99b9 -/ section SubmissionComponent_QuotaIdentity /- The component quota is the type-dependent quota of the rational recursion. -/ namespace Bounty def lossChildren_iff {n q : ℕ} (hq : q ∈ coprimeCores n) : q ∈ lossChildren n ↔ 5 ∣ q ∧ badWindow (n / (q / 5)) := by classical constructor · intro hh obtain ⟨t, ht, rfl⟩ := Finset.mem_image.mp hh constructor · exact dvd_mul_right 5 t · simpa using (Finset.mem_filter.mp ht).2 · rintro ⟨⟨t, rfl⟩, hbad⟩ have htQ : t ∈ coprimeCores n := by obtain ⟨hqI, hq6⟩ := Finset.mem_filter.mp hq obtain ⟨hqpos, hqn⟩ := Finset.mem_Icc.mp hqI apply Finset.mem_filter.mpr exact ⟨Finset.mem_Icc.mpr ⟨by omega, by omega⟩, (Nat.coprime_mul_iff_left.mp hq6).2⟩ apply Finset.mem_image_of_mem apply Finset.mem_filter.mpr exact ⟨htQ, by simpa using hbad⟩ def quotient_ge_one_of_core_mem {n q : ℕ} (hq : q ∈ coprimeCores n) : 1 ≤ (n : ℚ) / q := by obtain ⟨hqI, _⟩ := Finset.mem_filter.mp hq obtain ⟨hqpos, hqn⟩ := Finset.mem_Icc.mp hqI apply (le_div_iff₀ (by exact_mod_cast hqpos : (0 : ℚ) < q)).mpr simpa using (show (q : ℚ) ≤ n by exact_mod_cast hqn) def rational_scaled_quotient (n q d : ℕ) : (n : ℚ) / (d * q : ℕ) = ((n : ℚ) / q) / d := by rw [div_div] congr 1 push_cast ring def floor_five_quotient {n q : ℕ} (hq : 0 < q) (h5 : 5 ∣ q) : ⌊5 * ((n : ℚ) / q)⌋₊ = n / (q / 5) := by obtain ⟨t, rfl⟩ := h5 have ht : (t : ℚ) ≠ 0 := by exact_mod_cast (by omega : t ≠ 0) have he : 5 * ((n : ℚ) / (5 * t : ℕ)) = (n : ℚ) / t := by push_cast field_simp rw [he, Nat.floor_div_eq_div] simp noncomputable def rationalQuota (eps : Bool) (u : ℚ) : ℕ := open scoped Classical in smoothRankBound ⌊u⌋₊ - if eps = true ∧ badWindow ⌊5 * u⌋₊ then 1 else 0 def componentQuota_eq_rationalQuota {n q : ℕ} (hq : q ∈ coprimeCores n) : componentQuota n q = rationalQuota (decide (5 ∣ q)) ((n : ℚ) / q) := by classical have hqpos := (Finset.mem_Icc.mp (Finset.mem_filter.mp hq).1).1 unfold componentQuota rationalQuota rw [Nat.floor_div_eq_div] by_cases h5 : 5 ∣ q · rw [floor_five_quotient hqpos h5] simp [lossChildren_iff hq, h5] · simp [lossChildren_iff hq, h5] end Bounty end SubmissionComponent_QuotaIdentity /- Component ComputableWindow; SHA256 f52220eca8eacfad95e815a69b744ca4fc7b894f14bf7a4c259862092a3d5b5b -/ section SubmissionComponent_ComputableWindow /- A finite decision procedure for the obstruction window. -/ namespace Bounty def badWindow_iff_bounded (n : ℕ) : badWindow n ↔ ∃ j ∈ Finset.range (Nat.log 4 n + 1), ∃ b ∈ Finset.range (Nat.log 3 n + 1), 4 ^ j ≤ n ∧ 4 * n < 5 * 4 ^ j ∧ 10 * 3 ^ b ≤ n ∧ n < 12 * 3 ^ b := by constructor · intro hn have hn0 : n ≠ 0 := by have := badWindow_ge_ten hn; omega obtain ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ := hn have hj : j ≤ Nat.log 4 n := (Nat.le_log_iff_pow_le (by norm_num) hn0).mpr h4lo have hb : b ≤ Nat.log 3 n := (Nat.le_log_iff_pow_le (by norm_num) hn0).mpr (by omega) exact ⟨j, Finset.mem_range.mpr (by omega), b, Finset.mem_range.mpr (by omega), h4lo, h4hi, h3lo, h3hi⟩ · rintro ⟨j, _, b, _, h4lo, h4hi, h3lo, h3hi⟩ exact ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ def badWindow_decidable (n : ℕ) : Decidable (badWindow n) := decidable_of_iff (∃ j ∈ Finset.range (Nat.log 4 n + 1), ∃ b ∈ Finset.range (Nat.log 3 n + 1), 4 ^ j ≤ n ∧ 4 * n < 5 * 4 ^ j ∧ 10 * 3 ^ b ≤ n ∧ n < 12 * 3 ^ b) (badWindow_iff_bounded n).symm def quotaValue (eps : Bool) (u : ℚ) : ℕ := letI := badWindow_decidable smoothRankBound ⌊u⌋₊ - if eps = true ∧ badWindow ⌊5 * u⌋₊ then 1 else 0 def quotaValue_eq (eps : Bool) (u : ℚ) : quotaValue eps u = rationalQuota eps u := by unfold quotaValue rationalQuota by_cases hh : eps = true ∧ badWindow ⌊5 * u⌋₊ <;> simp [hh] end Bounty end SubmissionComponent_ComputableWindow /- Component RationalWindow; SHA256 fc6f9921cfc61e6dd3b976f94a8b5eb3871e61cd7531794cdd557224d3edd899 -/ section SubmissionComponent_RationalWindow /- Rational cutoffs retain the strict endpoints required by the construction. -/ namespace Bounty def rationalWindow (p : ℕ) (r : ℚ) : Set ℕ := cutoffWindow p ⌊r⌋₊ def rationalWindow_lower {p n : ℕ} {r : ℚ} (hn : n ∈ rationalWindow p r) : r < 6 * (n : ℚ) := by have hh : ⌊r⌋₊ < 6 * n := cutoffWindow_lower hn have hlt := Nat.lt_of_floor_lt hh exact_mod_cast hlt def rationalWindow_eighth {p n : ℕ} {r u : ℚ} (hn : n ∈ rationalWindow p r) (hru : 3 * u ≤ 4 * r) : u < 8 * (n : ℚ) := by have hh := rationalWindow_lower hn linarith def floor_scaled_le {r s : ℚ} (hs : 0 ≤ s) {d : ℕ} (hd : (d : ℚ) * s ≤ r) : d * ⌊s⌋₊ ≤ ⌊r⌋₊ := by have hr : 0 ≤ r := (mul_nonneg (Nat.cast_nonneg d) hs).trans hd apply (Nat.le_floor_iff hr).mpr push_cast exact (mul_le_mul_of_nonneg_left (Nat.floor_le hs) (Nat.cast_nonneg d)).trans hd def rationalWindow_scaled_eighth {n q s p : ℕ} {r : ℚ} (hq : 0 < q) (hcut : 3 * ((n : ℚ) / q) ≤ 4 * r) (hs : s ∈ rationalWindow p r) : n < 8 * (q * s) := by have hsq := rationalWindow_eighth hs hcut have hmul := (div_lt_iff₀ (by exact_mod_cast hq : (0 : ℚ) < q)).mp hsq exact_mod_cast (by nlinarith : (n : ℚ) < 8 * ((q : ℚ) * s)) end Bounty end SubmissionComponent_RationalWindow /- Component CutoffLevels; SHA256 d5fec12465da57274832497430fd6445c0531c87ef263e82a296f7c981d1adc1 -/ section SubmissionComponent_CutoffLevels /- Exact half-open intervals on which a cutoff window has prescribed size. -/ namespace Bounty def cutoffCount_unbounded (p k : ℕ) : ∃ r, k ≤ cutoffCount p r := by by_cases hp : p = 0 · refine ⟨3 ^ k, ?_⟩ have hn : (3 : ℕ) ^ k ≠ 0 := by positivity simp only [cutoffCount, hp, ↓reduceIte, hn, Nat.log_pow (by norm_num : 1 < (3 : ℕ))] omega · refine ⟨2 * 3 ^ k, ?_⟩ have hk : 0 < (3 : ℕ) ^ k := by positivity have hn : ¬2 * 3 ^ k < 2 := by omega have hdiv : (2 * 3 ^ k : ℕ) / 2 = 3 ^ k := by omega simp only [cutoffCount, hp, ↓reduceIte, hn, hdiv, Nat.log_pow (by norm_num : 1 < (3 : ℕ))] omega noncomputable def lowerCutoff (p k : ℕ) : ℕ := Nat.find (cutoffCount_unbounded p k) def lowerCutoff_spec (p k : ℕ) : k ≤ cutoffCount p (lowerCutoff p k) := Nat.find_spec (cutoffCount_unbounded p k) def lowerCutoff_le_iff (p k r : ℕ) : lowerCutoff p k ≤ r ↔ k ≤ cutoffCount p r := by constructor · intro hh exact (lowerCutoff_spec p k).trans (cutoffCount_mono p hh) · intro hh exact Nat.find_min' (cutoffCount_unbounded p k) hh def lt_lowerCutoff_iff (p k r : ℕ) : r < lowerCutoff p k ↔ cutoffCount p r < k := by have hh := lowerCutoff_le_iff p k r omega def cutoffCount_level_iff (p k r : ℕ) : cutoffCount p r = k ↔ lowerCutoff p k ≤ r ∧ r < lowerCutoff p (k + 1) := by rw [lowerCutoff_le_iff, lt_lowerCutoff_iff] omega def cutoffCount_floor_level_iff (p k : ℕ) {r : ℚ} (hr : 0 ≤ r) : cutoffCount p ⌊r⌋₊ = k ↔ (lowerCutoff p k : ℚ) ≤ r ∧ r < lowerCutoff p (k + 1) := by rw [cutoffCount_level_iff, Nat.le_floor_iff hr, Nat.floor_lt hr] end Bounty end SubmissionComponent_CutoffLevels /- Component CutoffRecursion; SHA256 08fe00aa39b943b9462552b350e5ad8b75eeb4b09779eaa98722b584170efac6 -/ section SubmissionComponent_CutoffRecursion /- The candidate cutoff recursion; universal availability is still to be proved. -/ namespace Bounty noncomputable def cutoffTrial (u : ℚ) (k p : ℕ) (c5 c7 : ℕ × ℚ) : ℚ := max (max (3 * u / 4) (lowerCutoff p k : ℚ)) (max ((if p = c5.1 then 4 else 6) * c5.2) ((if p = c7.1 then 4 else 6) * c7.2)) def cutoffAvailable (u : ℚ) (k p : ℕ) (c5 c7 : ℕ × ℚ) : Prop := cutoffTrial u k p c5 c7 ≤ u ∧ cutoffTrial u k p c5 c7 < lowerCutoff p (k + 1) noncomputable def cutoffAvailable_decidable (u : ℚ) (k p : ℕ) (c5 c7 : ℕ × ℚ) : Decidable (cutoffAvailable u k p c5 c7) := by unfold cutoffAvailable infer_instance noncomputable def cutoffCandidate (eps : Bool) (u : ℚ) (c5 c7 : ℕ × ℚ) : ℕ × ℚ := letI := cutoffAvailable_decidable let k := quotaValue eps u let preferred := Nat.log 2 ⌊u⌋₊ % 2 let p := if cutoffAvailable u k preferred c5 c7 then preferred else 1 - preferred (p, cutoffTrial u k p c5 c7) def floor_div_lt_floor {u : ℚ} {d : ℕ} (hu : 1 ≤ u) (hd : 1 < d) : ⌊u / d⌋₊ < ⌊u⌋₊ := by rw [Nat.floor_div_natCast] apply Nat.div_lt_self · exact (Nat.le_floor_iff (by linarith : 0 ≤ u)).mpr hu · exact hd noncomputable def cutoffState (eps : Bool) (u : ℚ) : ℕ × ℚ := if hu : u < 1 then (0, 0) else cutoffCandidate eps u (cutoffState true (u / 5)) (cutoffState eps (u / 7)) termination_by ⌊u⌋₊ decreasing_by · exact floor_div_lt_floor (d := 5) (by linarith) (by norm_num) · exact floor_div_lt_floor (d := 7) (by linarith) (by norm_num) def cutoffTrial_bounds (u : ℚ) (k p : ℕ) (c5 c7 : ℕ × ℚ) : 3 * u / 4 ≤ cutoffTrial u k p c5 c7 ∧ (lowerCutoff p k : ℚ) ≤ cutoffTrial u k p c5 c7 ∧ (if p = c5.1 then 4 else 6) * c5.2 ≤ cutoffTrial u k p c5 c7 ∧ (if p = c7.1 then 4 else 6) * c7.2 ≤ cutoffTrial u k p c5 c7 := by unfold cutoffTrial exact ⟨(le_max_left _ _).trans (le_max_left _ _), (le_max_right _ _).trans (le_max_left _ _), (le_max_left _ _).trans (le_max_right _ _), (le_max_right _ _).trans (le_max_right _ _)⟩ def cutoffTrial_size {u : ℚ} {k p : ℕ} {c5 c7 : ℕ × ℚ} (hu : 0 ≤ u) (hvalid : cutoffAvailable u k p c5 c7) : cutoffCount p ⌊cutoffTrial u k p c5 c7⌋₊ = k := by have hh := cutoffTrial_bounds u k p c5 c7 have hr : 0 ≤ cutoffTrial u k p c5 c7 := by linarith [hh.1] apply (cutoffCount_floor_level_iff p k hr).mpr exact ⟨hh.2.1, hvalid.2⟩ def cutoffCandidate_parity (eps : Bool) (u : ℚ) (c5 c7 : ℕ × ℚ) : (cutoffCandidate eps u c5 c7).1 < 2 := by unfold cutoffCandidate dsimp only split_ifs <;> omega def cutoffCandidate_eq_trial (eps : Bool) (u : ℚ) (c5 c7 : ℕ × ℚ) : (cutoffCandidate eps u c5 c7).2 = cutoffTrial u (quotaValue eps u) (cutoffCandidate eps u c5 c7).1 c5 c7 := by unfold cutoffCandidate dsimp only def cutoffState_of_small {eps : Bool} {u : ℚ} (hu : u < 1) : cutoffState eps u = (0, 0) := by rw [cutoffState, dif_pos hu] def cutoffState_of_large {eps : Bool} {u : ℚ} (hu : 1 ≤ u) : cutoffState eps u = cutoffCandidate eps u (cutoffState true (u / 5)) (cutoffState eps (u / 7)) := by rw [cutoffState, dif_neg (by linarith)] def cutoffState_parity (eps : Bool) (u : ℚ) : (cutoffState eps u).1 < 2 := by by_cases hu : u < 1 · rw [cutoffState_of_small hu] norm_num · rw [cutoffState_of_large (le_of_not_gt hu)] exact cutoffCandidate_parity _ _ _ _ end Bounty end SubmissionComponent_CutoffRecursion /- Component CutoffBase; SHA256 92ba667e4f197efc465542c84024b066863a3afc820f9c082bf897aee13ad6d6 -/ section SubmissionComponent_CutoffBase /- Initial rational intervals on which trial availability can be proved directly. -/ namespace Bounty def lowerCutoff_eq_of_step {p k r : ℕ} (hr : 0 < r) (hlo : k ≤ cutoffCount p r) (hprev : cutoffCount p (r - 1) < k) : lowerCutoff p k = r := by have hh := (lowerCutoff_le_iff p k r).mpr hlo have hp := (lt_lowerCutoff_iff p k (r - 1)).mpr hprev omega def badWindow_ge_270 {n : ℕ} (hn : badWindow n) : 0x10e ≤ n := by obtain ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ := hn by_contra hsmall have hj : j < 5 := by by_contra hh have hp : (4 : ℕ) ^ 5 ≤ 4 ^ j := Nat.pow_le_pow_right (by norm_num) (by omega) norm_num at hp omega have hb : b < 3 := by by_contra hh have hp : (3 : ℕ) ^ 3 ≤ 3 ^ b := Nat.pow_le_pow_right (by norm_num) (by omega) norm_num at hp omega interval_cases j <;> interval_cases b <;> norm_num at * <;> omega end Bounty end SubmissionComponent_CutoffBase /- Component BaseStates; SHA256 16daa0038fe381a7831ec0be6b457ec5de7a0046266e1219618ef2c8e4ae7eaf -/ section SubmissionComponent_BaseStates /- Explicit initial values of the candidate recursion. -/ namespace Bounty end Bounty end SubmissionComponent_BaseStates /- Component BaseSixteen; SHA256 3a10dc0f3b114809e15c19ac9f757b1bc903b853edd8462f5c7150f8864e81f9 -/ section SubmissionComponent_BaseSixteen /- Trial availability throughout the initial interval below sixteen. -/ namespace Bounty end Bounty end SubmissionComponent_BaseSixteen /- Component WindowLogBounds; SHA256 d22a772f9048d9d734776debabd97a8b2218845f4718da76f7a8e2f27f37f76d -/ section SubmissionComponent_WindowLogBounds /- Canonical obstruction indices and logarithms on rational verification intervals. -/ namespace Bounty def badWindow_log_indices {n j b : ℕ} (h4lo : 4 ^ j ≤ n) (h4hi : 4 * n < 5 * 4 ^ j) (h3lo : 10 * 3 ^ b ≤ n) (h3hi : n < 12 * 3 ^ b) : Nat.log 4 n = j ∧ Nat.log 3 n = b + 2 := by constructor · apply Nat.log_eq_of_pow_le_of_lt_pow h4lo rw [pow_succ] omega · apply Nat.log_eq_of_pow_le_of_lt_pow · rw [pow_add] norm_num omega · rw [show b + 2 + 1 = b + 3 by omega, pow_add] norm_num omega def badWindow_iff_canonical (n : ℕ) : badWindow n ↔ 4 ^ Nat.log 4 n ≤ n ∧ 4 * n < 5 * 4 ^ Nat.log 4 n ∧ 10 * 3 ^ (Nat.log 3 n - 2) ≤ n ∧ n < 12 * 3 ^ (Nat.log 3 n - 2) := by constructor · rintro ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ obtain ⟨hj, hb⟩ := badWindow_log_indices h4lo h4hi h3lo h3hi rw [hj, hb, Nat.add_sub_cancel] exact ⟨h4lo, h4hi, h3lo, h3hi⟩ · intro hh exact ⟨Nat.log 4 n, Nat.log 3 n - 2, hh⟩ def log_floor_of_bounds {u : ℚ} {b k : ℕ} (hu : 0 ≤ u) (hlo : ((b ^ k : ℕ) : ℚ) ≤ u) (hhi : u < ((b ^ (k + 1) : ℕ) : ℚ)) : Nat.log b ⌊u⌋₊ = k := by apply Nat.log_eq_of_pow_le_of_lt_pow · exact (Nat.le_floor_iff hu).mpr hlo · exact (Nat.floor_lt hu).mpr hhi def smoothRank_floor_of_indices {u : ℚ} {a b : ℕ} (hu : 1 ≤ u) (ha : Nat.log 2 ⌊u⌋₊ = a) (hb : Nat.log 3 ⌊u⌋₊ = b) : smoothRankBound ⌊u⌋₊ = b + 1 + a / 2 + if a % 2 = 1 ∧ ((2 * 3 ^ b : ℕ) : ℚ) ≤ u then 1 else 0 := by have hu0 : 0 ≤ u := by linarith have hn : ⌊u⌋₊ ≠ 0 := by have hh : 1 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu omega unfold smoothRankBound rw [if_neg hn, ha, hb] simp only [Nat.le_floor_iff hu0] end Bounty end SubmissionComponent_WindowLogBounds /- Component CutoffTable; SHA256 f573fc818b82ce302cb6a099e022c9f4e1ce81c04db88879700fcc8673c0f4ea -/ section SubmissionComponent_CutoffTable /- Rational interval tables and a checked route from their recursion equations to states. -/ namespace Bounty structure CutoffPiece where lo : ℚ hi : ℚ parity : ℕ slope : ℚ intercept : ℚ def CutoffPiece.value (row : CutoffPiece) (u : ℚ) : ℕ × ℚ := (row.parity, row.slope * u + row.intercept) def cutoffTableEval : List CutoffPiece → ℚ → ℕ × ℚ | [], _ => (0, 0) | row :: rows, u => if u < row.hi then row.value u else cutoffTableEval rows u def cutoffTableSpan : ℚ → ℚ → List CutoffPiece → Prop | lo, hi, [] => lo = hi | lo, hi, row :: rows => row.lo = lo ∧ row.lo < row.hi ∧ cutoffTableSpan row.hi hi rows def cutoffTableEval_eq_of_mem {rows : List CutoffPiece} {row : CutoffPiece} {u : ℚ} (horder : rows.Pairwise (fun x y => x.hi ≤ y.lo)) (hmem : row ∈ rows) (hlo : row.lo ≤ u) (hhi : u < row.hi) : cutoffTableEval rows u = row.value u := by induction rows with | nil => simp at hmem | cons first rest ih => obtain ⟨hfirst, hrest⟩ := List.pairwise_cons.mp horder rcases List.mem_cons.mp hmem with heq | hmem · subst row simp [cutoffTableEval, hhi] · have hnot : ¬u < first.hi := not_lt_of_ge ((hfirst row hmem).trans hlo) rw [cutoffTableEval, if_neg hnot] exact ih hrest hmem def cutoffTableSpan_lower {rows : List CutoffPiece} {lo hi : ℚ} (hspan : cutoffTableSpan lo hi rows) {row : CutoffPiece} (hmem : row ∈ rows) : lo ≤ row.lo := by induction rows generalizing lo with | nil => simp at hmem | cons first rest ih => obtain ⟨heq, hlt, hrest⟩ := hspan rcases List.mem_cons.mp hmem with hr | hmem · subst row exact heq.ge · exact (heq ▸ hlt.le).trans (ih hrest hmem) def cutoffTableSpan_ordered {rows : List CutoffPiece} {lo hi : ℚ} (hspan : cutoffTableSpan lo hi rows) : rows.Pairwise (fun x y => x.hi ≤ y.lo) := by induction rows generalizing lo with | nil => simp | cons row rest ih => obtain ⟨_, _, hrest⟩ := hspan apply List.pairwise_cons.mpr exact ⟨fun _ hmem => cutoffTableSpan_lower hrest hmem, ih hrest⟩ def cutoffState_eq_table {limit : ℚ} (rows : Bool → List CutoffPiece) (hsmall : ∀ eps u, u < 1 → cutoffTableEval (rows eps) u = (0, 0)) (hstep : ∀ eps u, 1 ≤ u → u < limit → cutoffCandidate eps u (cutoffTableEval (rows true) (u / 5)) (cutoffTableEval (rows eps) (u / 7)) = cutoffTableEval (rows eps) u) : ∀ eps u, u < limit → cutoffState eps u = cutoffTableEval (rows eps) u := by have hall : ∀ m : ℕ, ∀ eps u, ⌊u⌋₊ = m → u < limit → cutoffState eps u = cutoffTableEval (rows eps) u := by intro m induction m using Nat.strong_induction_on with | h m ih => intro eps u hm hlim by_cases hu : u < 1 · rw [cutoffState_of_small hu, hsmall eps u hu] · have hu1 : 1 ≤ u := le_of_not_gt hu have h5lt : ⌊u / 5⌋₊ < m := by rw [← hm] exact floor_div_lt_floor hu1 (by norm_num : 1 < (5 : ℕ)) have h7lt : ⌊u / 7⌋₊ < m := by rw [← hm] exact floor_div_lt_floor hu1 (by norm_num : 1 < (7 : ℕ)) have h5 := ih _ h5lt true (u / 5) rfl (by linarith : u / 5 < limit) have h7 := ih _ h7lt eps (u / 7) rfl (by linarith : u / 7 < limit) rw [cutoffState_of_large hu1, h5, h7] exact hstep eps u hu1 hlim intro eps u hlim exact hall ⌊u⌋₊ eps u rfl hlim def cutoffTrial_eq_of_bounds {u r : ℚ} {k p : ℕ} {c5 c7 : ℕ × ℚ} (hbase : 3 * u / 4 ≤ r) (hlevel : (lowerCutoff p k : ℚ) ≤ r) (hfive : (if p = c5.1 then 4 else 6) * c5.2 ≤ r) (hseven : (if p = c7.1 then 4 else 6) * c7.2 ≤ r) (heq : r = 3 * u / 4 ∨ r = (lowerCutoff p k : ℚ) ∨ r = (if p = c5.1 then 4 else 6) * c5.2 ∨ r = (if p = c7.1 then 4 else 6) * c7.2) : cutoffTrial u k p c5 c7 = r := by apply le_antisymm · exact max_le (max_le hbase hlevel) (max_le hfive hseven) · have hb := cutoffTrial_bounds u k p c5 c7 rcases heq with heq | heq | heq | heq · exact heq ▸ hb.1 · exact heq ▸ hb.2.1 · exact heq ▸ hb.2.2.1 · exact heq ▸ hb.2.2.2 def cutoffCandidate_eq_preferred {eps : Bool} {u : ℚ} {k p : ℕ} {c5 c7 : ℕ × ℚ} (hq : quotaValue eps u = k) (hp : Nat.log 2 ⌊u⌋₊ % 2 = p) (ha : cutoffAvailable u k p c5 c7) : cutoffCandidate eps u c5 c7 = (p, cutoffTrial u k p c5 c7) := by simp [cutoffCandidate, hq, hp, ha] def cutoffCandidate_eq_alternate {eps : Bool} {u : ℚ} {k p : ℕ} {c5 c7 : ℕ × ℚ} (hq : quotaValue eps u = k) (hp : Nat.log 2 ⌊u⌋₊ % 2 = p) (ha : ¬cutoffAvailable u k p c5 c7) : cutoffCandidate eps u c5 c7 = (1 - p, cutoffTrial u k (1 - p) c5 c7) := by simp [cutoffCandidate, hq, hp, ha] end Bounty end SubmissionComponent_CutoffTable /- Component BaseTableData; SHA256 8fcfeb97c99481d4991146d5419e8d046b51401696241edc194c6f4608e898d6 -/ section SubmissionComponent_BaseTableData /- Candidate base-table data, with kernel proofs of ordering and cutoff thresholds. -/ namespace Bounty def basePieces0 : List CutoffPiece := [⟨0, 1, 0, 0, 0⟩, ⟨1, (4 / 3), 0, 0, 1⟩, ⟨(4 / 3), 2, 0, (3 / 4), 0⟩, ⟨2, (8 / 3), 1, 0, 2⟩, ⟨(8 / 3), 4, 1, (3 / 4), 0⟩, ⟨4, (16 / 3), 0, 0, 4⟩, ⟨(16 / 3), 8, 0, (3 / 4), 0⟩, ⟨8, (80 / 9), 1, 0, 8⟩, ⟨(80 / 9), 10, 1, (9 / 10), 0⟩, ⟨10, (32 / 3), 1, 0, 8⟩, ⟨(32 / 3), 16, 1, (3 / 4), 0⟩, ⟨16, (0xa0 / 9), 0, 0, 16⟩, ⟨(0xa0 / 9), 20, 0, (9 / 10), 0⟩, ⟨20, (64 / 3), 0, 0, 16⟩, ⟨(64 / 3), 27, 0, (3 / 4), 0⟩, ⟨27, 32, 0, 0, 27⟩, ⟨32, (0x140 / 9), 1, 0, 32⟩, ⟨(0x140 / 9), 40, 1, (9 / 10), 0⟩, ⟨40, (0x80 / 3), 1, 0, 32⟩, ⟨(0x80 / 3), 54, 1, (3 / 4), 0⟩, ⟨54, 64, 1, 0, 54⟩, ⟨64, (0x280 / 9), 0, 0, 64⟩, ⟨(0x280 / 9), 80, 0, (9 / 10), 0⟩, ⟨80, 81, 0, 0, 64⟩, ⟨81, 0x6c, 0, 0, 81⟩, ⟨0x6c, 0x80, 0, (3 / 4), 0⟩, ⟨0x80, 0x87, 1, 0, 0x80⟩, ⟨0x87, 0x90, 0, 0, 0x6c⟩, ⟨0x90, 0xa0, 0, (3 / 4), 0⟩, ⟨0xa0, 0xa2, 1, 0, 0x80⟩, ⟨0xa2, 0xd8, 1, 0, 0xa2⟩, ⟨0xd8, 0x100, 1, (3 / 4), 0⟩, ⟨0x100, (0xa00 / 9), 0, 0, 0x100⟩, ⟨(0xa00 / 9), 0x140, 0, (9 / 10), 0⟩, ⟨0x140, (0x400 / 3), 0, 0, 0x100⟩, ⟨(0x400 / 3), 0x17a, 0, (3 / 4), 0⟩, ⟨0x17a, 0x1b0, 0, 0, 0x144⟩, ⟨0x1b0, 0x200, 0, (3 / 4), 0⟩, ⟨0x200, (0x1400 / 9), 1, 0, 0x200⟩, ⟨(0x1400 / 9), 0x280, 1, (9 / 10), 0⟩, ⟨0x280, 0x2a3, 1, 0, 0x200⟩, ⟨0x2a3, 0x2d0, 1, 0, 0x288⟩, ⟨0x2d0, 0x320, 1, (9 / 10), 0⟩, ⟨0x320, 0x32a, 1, (3 / 4), 0⟩, ⟨0x32a, 0x360, 1, 0, 0x288⟩, ⟨0x360, 0x400, 1, (3 / 4), 0⟩, ⟨0x400, (0x2800 / 9), 0, 0, 0x400⟩, ⟨(0x2800 / 9), 0x500, 0, (9 / 10), 0⟩, ⟨0x500, (0x1000 / 3), 0, 0, 0x400⟩, ⟨(0x1000 / 3), 0x800, 0, (3 / 4), 0⟩, ⟨0x800, (0x5000 / 9), 1, 0, 0x800⟩, ⟨(0x5000 / 9), 0xa00, 1, (9 / 10), 0⟩, ⟨0xa00, (0x2000 / 3), 1, 0, 0x800⟩, ⟨(0x2000 / 3), 0xd2f, 1, (3 / 4), 0⟩, ⟨0xd2f, 0xd80, 1, 0, 0xa20⟩, ⟨0xd80, 0x1000, 1, (3 / 4), 0⟩, ⟨0x1000, (0xa000 / 9), 0, 0, 0x1000⟩, ⟨(0xa000 / 9), 0x1400, 0, (9 / 10), 0⟩, ⟨0x1400, (0x23000 / 27), 0, 0, 0x1000⟩, ⟨(0x23000 / 27), 0x15e0, 0, (27 / 35), 0⟩, ⟨0x15e0, 0x19a1, 0, (3 / 4), 0⟩, ⟨0x19a1, 0x2000, 0, 0, 0x19a1⟩, ⟨0x2000, (0x14000 / 9), 1, 0, 0x2000⟩, ⟨(0x14000 / 9), 0x2800, 1, (9 / 10), 0⟩, ⟨0x2800, (0x8000 / 3), 1, 0, 0x2000⟩, ⟨(0x8000 / 3), 0x3342, 1, (3 / 4), 0⟩, ⟨0x3342, 0x4000, 1, 0, 0x3342⟩, ⟨0x4000, (0x28000 / 9), 0, 0, 0x4000⟩, ⟨(0x28000 / 9), 0x4ce3, 0, (9 / 10), 0⟩, ⟨0x4ce3, 0x6684, 0, 0, 0x4ce3⟩, ⟨0x6684, 0x8000, 0, (3 / 4), 0⟩, ⟨0x8000, 0x8025, 1, 0, 0x8000⟩, ⟨0x8025, 0x88b0, 0, 0, 0x6684⟩, ⟨0x88b0, 0x99c6, 0, (3 / 4), 0⟩, ⟨0x99c6, 0xcd08, 1, 0, 0x99c6⟩, ⟨0xcd08, 0x10000, 1, (3 / 4), 0⟩, ⟨0x10000, (0xa0000 / 9), 0, 0, 0x10000⟩, ⟨(0xa0000 / 9), 0x1338c, 0, (9 / 10), 0⟩, ⟨0x1338c, 0x14000, 0, 0, 0x1338c⟩, ⟨0x14000, (0x40000 / 3), 0, 0, 0x10000⟩, ⟨(0x40000 / 3), 0x166ce, 0, (3 / 4), 0⟩, ⟨0x166ce, 0x19a10, 0, 0, 0x1338c⟩, ⟨0x19a10, 0x20000, 0, (3 / 4), 0⟩, ⟨0x20000, (0x140000 / 9), 1, 0, 0x20000⟩, ⟨(0x140000 / 9), 0x28000, 1, (9 / 10), 0⟩, ⟨0x28000, 0x280b9, 1, 0, 0x20000⟩, ⟨0x280b9, 0x2ab70, 1, 0, 0x26718⟩, ⟨0x2ab70, 0x300de, 1, (9 / 10), 0⟩, ⟨0x300de, 0x33420, 1, 0, 0x26718⟩, ⟨0x33420, 0x40000, 1, (3 / 4), 0⟩, ⟨0x40000, (0x280000 / 9), 0, 0, 0x40000⟩, ⟨(0x280000 / 9), 0x50000, 0, (9 / 10), 0⟩, ⟨0x50000, (0x100000 / 3), 0, 0, 0x40000⟩, ⟨(0x100000 / 3), 0x601bc, 0, (3 / 4), 0⟩, ⟨0x601bc, 0x64000, 0, 0, 0x4ce30⟩, ⟨0x64000, 0x80000, 0, (3 / 4), 0⟩, ⟨0x80000, (0x500000 / 9), 1, 0, 0x80000⟩, ⟨(0x500000 / 9), 0xa0000, 1, (9 / 10), 0⟩, ⟨0xa0000, (0x200000 / 3), 1, 0, 0x80000⟩, ⟨(0x200000 / 3), 0xc839d, 1, (3 / 4), 0⟩, ⟨0xc839d, 0xcd080, 1, 0, 0x99c60⟩, ⟨0xcd080, 0x100000, 1, (3 / 4), 0⟩, ⟨0x100000, (0xa00000 / 9), 0, 0, 0x100000⟩, ⟨(0xa00000 / 9), 0x140000, 0, (9 / 10), 0⟩, ⟨0x140000, (0x2300000 / 27), 0, 0, 0x100000⟩, ⟨(0x2300000 / 27), 0x150612, 0, (27 / 35), 0⟩, ⟨0x150612, (0x400000 / 3), 0, 0, 0x100000⟩, ⟨(0x400000 / 3), 0x1853d3, 0, (3 / 4), 0⟩, ⟨0x1853d3, 0x1921ee, 0, 0, 0x1853d3⟩] def basePieces1 : List CutoffPiece := [⟨0, 1, 0, 0, 0⟩, ⟨1, (4 / 3), 0, 0, 1⟩, ⟨(4 / 3), 2, 0, (3 / 4), 0⟩, ⟨2, (8 / 3), 1, 0, 2⟩, ⟨(8 / 3), 4, 1, (3 / 4), 0⟩, ⟨4, (16 / 3), 0, 0, 4⟩, ⟨(16 / 3), 8, 0, (3 / 4), 0⟩, ⟨8, (80 / 9), 1, 0, 8⟩, ⟨(80 / 9), 10, 1, (9 / 10), 0⟩, ⟨10, (32 / 3), 1, 0, 8⟩, ⟨(32 / 3), 16, 1, (3 / 4), 0⟩, ⟨16, (0xa0 / 9), 0, 0, 16⟩, ⟨(0xa0 / 9), 20, 0, (9 / 10), 0⟩, ⟨20, (64 / 3), 0, 0, 16⟩, ⟨(64 / 3), 27, 0, (3 / 4), 0⟩, ⟨27, 32, 0, 0, 27⟩, ⟨32, (0x140 / 9), 1, 0, 32⟩, ⟨(0x140 / 9), 40, 1, (9 / 10), 0⟩, ⟨40, (0x80 / 3), 1, 0, 32⟩, ⟨(0x80 / 3), 64, 1, (3 / 4), 0⟩, ⟨64, (0x280 / 9), 0, 0, 64⟩, ⟨(0x280 / 9), 80, 0, (9 / 10), 0⟩, ⟨80, 81, 0, 0, 64⟩, ⟨81, 0x6c, 0, 0, 81⟩, ⟨0x6c, 0x80, 0, (3 / 4), 0⟩, ⟨0x80, 0x87, 1, 0, 0x80⟩, ⟨0x87, 0x90, 0, 0, 0x6c⟩, ⟨0x90, 0xa0, 0, (3 / 4), 0⟩, ⟨0xa0, 0xa2, 1, 0, 0x80⟩, ⟨0xa2, 0xd8, 1, 0, 0xa2⟩, ⟨0xd8, 0x100, 1, (3 / 4), 0⟩, ⟨0x100, (0xa00 / 9), 0, 0, 0x100⟩, ⟨(0xa00 / 9), 0x140, 0, (9 / 10), 0⟩, ⟨0x140, (0x400 / 3), 0, 0, 0x100⟩, ⟨(0x400 / 3), 0x195, 0, (3 / 4), 0⟩, ⟨0x195, 0x1b0, 0, 0, 0x144⟩, ⟨0x1b0, 0x200, 0, (3 / 4), 0⟩, ⟨0x200, (0x1400 / 9), 1, 0, 0x200⟩, ⟨(0x1400 / 9), 0x280, 1, (9 / 10), 0⟩, ⟨0x280, 0x2a3, 1, 0, 0x200⟩, ⟨0x2a3, 0x2d0, 1, 0, 0x288⟩, ⟨0x2d0, 0x320, 1, (9 / 10), 0⟩, ⟨0x320, 0x32a, 1, (3 / 4), 0⟩, ⟨0x32a, 0x360, 1, 0, 0x288⟩, ⟨0x360, 0x400, 1, (3 / 4), 0⟩, ⟨0x400, (0x2800 / 9), 0, 0, 0x400⟩, ⟨(0x2800 / 9), 0x500, 0, (9 / 10), 0⟩, ⟨0x500, (0x1000 / 3), 0, 0, 0x400⟩, ⟨(0x1000 / 3), 0x800, 0, (3 / 4), 0⟩, ⟨0x800, (0x5000 / 9), 1, 0, 0x800⟩, ⟨(0x5000 / 9), 0xa00, 1, (9 / 10), 0⟩, ⟨0xa00, (0x2000 / 3), 1, 0, 0x800⟩, ⟨(0x2000 / 3), 0xd2f, 1, (3 / 4), 0⟩, ⟨0xd2f, 0xd80, 1, 0, 0xa20⟩, ⟨0xd80, 0x1000, 1, (3 / 4), 0⟩, ⟨0x1000, (0xa000 / 9), 0, 0, 0x1000⟩, ⟨(0xa000 / 9), 0x1400, 0, (9 / 10), 0⟩, ⟨0x1400, (0x23000 / 27), 0, 0, 0x1000⟩, ⟨(0x23000 / 27), 0x15e0, 0, (27 / 35), 0⟩, ⟨0x15e0, 0x19a1, 0, (3 / 4), 0⟩, ⟨0x19a1, 0x2000, 0, 0, 0x19a1⟩, ⟨0x2000, (0x14000 / 9), 1, 0, 0x2000⟩, ⟨(0x14000 / 9), 0x2800, 1, (9 / 10), 0⟩, ⟨0x2800, (0x8000 / 3), 1, 0, 0x2000⟩, ⟨(0x8000 / 3), (0x1338c / 5), 1, (3 / 4), 0⟩, ⟨(0x1338c / 5), 0x4000, 1, 0, 0x3342⟩, ⟨0x4000, (0x28000 / 9), 0, 0, 0x4000⟩, ⟨(0x28000 / 9), 0x4ce3, 0, (9 / 10), 0⟩, ⟨0x4ce3, 0x6684, 0, 0, 0x4ce3⟩, ⟨0x6684, 0x8000, 0, (3 / 4), 0⟩, ⟨0x8000, 0x8025, 1, 0, 0x8000⟩, ⟨0x8025, 0x88b0, 0, 0, 0x6684⟩, ⟨0x88b0, 0x99c6, 0, (3 / 4), 0⟩, ⟨0x99c6, 0xcd08, 1, 0, 0x99c6⟩, ⟨0xcd08, 0x10000, 1, (3 / 4), 0⟩, ⟨0x10000, (0xa0000 / 9), 0, 0, 0x10000⟩, ⟨(0xa0000 / 9), 0x1338c, 0, (9 / 10), 0⟩, ⟨0x1338c, 0x14000, 0, 0, 0x1338c⟩, ⟨0x14000, (0x40000 / 3), 0, 0, 0x10000⟩, ⟨(0x40000 / 3), 0x1806f, 0, (3 / 4), 0⟩, ⟨0x1806f, 0x19a10, 0, 0, 0x1338c⟩, ⟨0x19a10, 0x20000, 0, (3 / 4), 0⟩, ⟨0x20000, (0x140000 / 9), 1, 0, 0x20000⟩, ⟨(0x140000 / 9), 0x28000, 1, (9 / 10), 0⟩, ⟨0x28000, 0x280b9, 1, 0, 0x20000⟩, ⟨0x280b9, 0x2ab70, 1, 0, 0x26718⟩, ⟨0x2ab70, 0x300de, 1, (9 / 10), 0⟩, ⟨0x300de, 0x33420, 1, 0, 0x26718⟩, ⟨0x33420, 0x40000, 1, (3 / 4), 0⟩, ⟨0x40000, (0x280000 / 9), 0, 0, 0x40000⟩, ⟨(0x280000 / 9), 0x50000, 0, (9 / 10), 0⟩, ⟨0x50000, (0x100000 / 3), 0, 0, 0x40000⟩, ⟨(0x100000 / 3), 0x601bc, 0, (3 / 4), 0⟩, ⟨0x601bc, 0x64000, 0, 0, 0x4ce30⟩, ⟨0x64000, 0x80000, 0, (3 / 4), 0⟩, ⟨0x80000, (0x500000 / 9), 1, 0, 0x80000⟩, ⟨(0x500000 / 9), 0xa0000, 1, (9 / 10), 0⟩, ⟨0xa0000, (0x200000 / 3), 1, 0, 0x80000⟩, ⟨(0x200000 / 3), 0xc839d, 1, (3 / 4), 0⟩, ⟨0xc839d, 0xcd080, 1, 0, 0x99c60⟩, ⟨0xcd080, 0x100000, 1, (3 / 4), 0⟩, ⟨0x100000, (0xa00000 / 9), 0, 0, 0x100000⟩, ⟨(0xa00000 / 9), 0x140000, 0, (9 / 10), 0⟩, ⟨0x140000, (0x2300000 / 27), 0, 0, 0x100000⟩, ⟨(0x2300000 / 27), 0x150612, 0, (27 / 35), 0⟩, ⟨0x150612, (0x400000 / 3), 0, 0, 0x100000⟩, ⟨(0x400000 / 3), 0x1853d3, 0, (3 / 4), 0⟩, ⟨0x1853d3, 0x1921ee, 0, 0, 0x1853d3⟩] def basePieces (eps : Bool) : List CutoffPiece := if eps then basePieces1 else basePieces0 def basePieces0_span : cutoffTableSpan 0 0x1921ee basePieces0 := by unfold basePieces0 repeat' apply And.intro all_goals norm_num [cutoffTableSpan] def basePieces0_ordered : basePieces0.Pairwise (fun x y => x.hi ≤ y.lo) := cutoffTableSpan_ordered basePieces0_span def baseTable_eval_0_0 {u : ℚ} (hlo : 0 ≤ u) (hhi : u < 1) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0, 1, 0, 0, 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0) (by rfl)) hlo hhi exact hh def baseTable_eval_0_1 {u : ℚ} (hlo : 1 ≤ u) (hhi : u < (4 / 3)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 1) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨1, (4 / 3), 0, 0, 1⟩) basePieces0_ordered (List.mem_of_getElem? (i := 1) (by rfl)) hlo hhi exact hh def baseTable_eval_0_2 {u : ℚ} (hlo : (4 / 3) ≤ u) (hhi : u < 2) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(4 / 3), 2, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 2) (by rfl)) hlo hhi exact hh def baseTable_eval_0_3 {u : ℚ} (hlo : 2 ≤ u) (hhi : u < (8 / 3)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 2) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨2, (8 / 3), 1, 0, 2⟩) basePieces0_ordered (List.mem_of_getElem? (i := 3) (by rfl)) hlo hhi exact hh def baseTable_eval_0_4 {u : ℚ} (hlo : (8 / 3) ≤ u) (hhi : u < 4) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(8 / 3), 4, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 4) (by rfl)) hlo hhi exact hh def baseTable_eval_0_5 {u : ℚ} (hlo : 4 ≤ u) (hhi : u < (16 / 3)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 4) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨4, (16 / 3), 0, 0, 4⟩) basePieces0_ordered (List.mem_of_getElem? (i := 5) (by rfl)) hlo hhi exact hh def baseTable_eval_0_6 {u : ℚ} (hlo : (16 / 3) ≤ u) (hhi : u < 8) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(16 / 3), 8, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 6) (by rfl)) hlo hhi exact hh def baseTable_eval_0_7 {u : ℚ} (hlo : 8 ≤ u) (hhi : u < (80 / 9)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 8) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨8, (80 / 9), 1, 0, 8⟩) basePieces0_ordered (List.mem_of_getElem? (i := 7) (by rfl)) hlo hhi exact hh def baseTable_eval_0_8 {u : ℚ} (hlo : (80 / 9) ≤ u) (hhi : u < 10) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(80 / 9), 10, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 8) (by rfl)) hlo hhi exact hh def baseTable_eval_0_9 {u : ℚ} (hlo : 10 ≤ u) (hhi : u < (32 / 3)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 8) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨10, (32 / 3), 1, 0, 8⟩) basePieces0_ordered (List.mem_of_getElem? (i := 9) (by rfl)) hlo hhi exact hh def baseTable_eval_0_10 {u : ℚ} (hlo : (32 / 3) ≤ u) (hhi : u < 16) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(32 / 3), 16, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 10) (by rfl)) hlo hhi exact hh def baseTable_eval_0_11 {u : ℚ} (hlo : 16 ≤ u) (hhi : u < (0xa0 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 16) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨16, (0xa0 / 9), 0, 0, 16⟩) basePieces0_ordered (List.mem_of_getElem? (i := 11) (by rfl)) hlo hhi exact hh def baseTable_eval_0_12 {u : ℚ} (hlo : (0xa0 / 9) ≤ u) (hhi : u < 20) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0xa0 / 9), 20, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 12) (by rfl)) hlo hhi exact hh def baseTable_eval_0_13 {u : ℚ} (hlo : 20 ≤ u) (hhi : u < (64 / 3)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 16) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨20, (64 / 3), 0, 0, 16⟩) basePieces0_ordered (List.mem_of_getElem? (i := 13) (by rfl)) hlo hhi exact hh def baseTable_eval_0_14 {u : ℚ} (hlo : (64 / 3) ≤ u) (hhi : u < 27) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(64 / 3), 27, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 14) (by rfl)) hlo hhi exact hh def baseTable_eval_0_15 {u : ℚ} (hlo : 27 ≤ u) (hhi : u < 32) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 27) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨27, 32, 0, 0, 27⟩) basePieces0_ordered (List.mem_of_getElem? (i := 15) (by rfl)) hlo hhi exact hh def baseTable_eval_0_16 {u : ℚ} (hlo : 32 ≤ u) (hhi : u < (0x140 / 9)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 32) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨32, (0x140 / 9), 1, 0, 32⟩) basePieces0_ordered (List.mem_of_getElem? (i := 16) (by rfl)) hlo hhi exact hh def baseTable_eval_0_17 {u : ℚ} (hlo : (0x140 / 9) ≤ u) (hhi : u < 40) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x140 / 9), 40, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 17) (by rfl)) hlo hhi exact hh def baseTable_eval_0_18 {u : ℚ} (hlo : 40 ≤ u) (hhi : u < (0x80 / 3)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 32) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨40, (0x80 / 3), 1, 0, 32⟩) basePieces0_ordered (List.mem_of_getElem? (i := 18) (by rfl)) hlo hhi exact hh def baseTable_eval_0_19 {u : ℚ} (hlo : (0x80 / 3) ≤ u) (hhi : u < 54) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x80 / 3), 54, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 19) (by rfl)) hlo hhi exact hh def baseTable_eval_0_20 {u : ℚ} (hlo : 54 ≤ u) (hhi : u < 64) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 54) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨54, 64, 1, 0, 54⟩) basePieces0_ordered (List.mem_of_getElem? (i := 20) (by rfl)) hlo hhi exact hh def baseTable_eval_0_21 {u : ℚ} (hlo : 64 ≤ u) (hhi : u < (0x280 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 64) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨64, (0x280 / 9), 0, 0, 64⟩) basePieces0_ordered (List.mem_of_getElem? (i := 21) (by rfl)) hlo hhi exact hh def baseTable_eval_0_22 {u : ℚ} (hlo : (0x280 / 9) ≤ u) (hhi : u < 80) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x280 / 9), 80, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 22) (by rfl)) hlo hhi exact hh def baseTable_eval_0_23 {u : ℚ} (hlo : 80 ≤ u) (hhi : u < 81) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 64) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨80, 81, 0, 0, 64⟩) basePieces0_ordered (List.mem_of_getElem? (i := 23) (by rfl)) hlo hhi exact hh def baseTable_eval_0_24 {u : ℚ} (hlo : 81 ≤ u) (hhi : u < 0x6c) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 81) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨81, 0x6c, 0, 0, 81⟩) basePieces0_ordered (List.mem_of_getElem? (i := 24) (by rfl)) hlo hhi exact hh def baseTable_eval_0_25 {u : ℚ} (hlo : 0x6c ≤ u) (hhi : u < 0x80) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x6c, 0x80, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 25) (by rfl)) hlo hhi exact hh def baseTable_eval_0_26 {u : ℚ} (hlo : 0x80 ≤ u) (hhi : u < 0x87) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x80) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x80, 0x87, 1, 0, 0x80⟩) basePieces0_ordered (List.mem_of_getElem? (i := 26) (by rfl)) hlo hhi exact hh def baseTable_eval_0_27 {u : ℚ} (hlo : 0x87 ≤ u) (hhi : u < 0x90) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x6c) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x87, 0x90, 0, 0, 0x6c⟩) basePieces0_ordered (List.mem_of_getElem? (i := 27) (by rfl)) hlo hhi exact hh def baseTable_eval_0_28 {u : ℚ} (hlo : 0x90 ≤ u) (hhi : u < 0xa0) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x90, 0xa0, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 28) (by rfl)) hlo hhi exact hh def baseTable_eval_0_29 {u : ℚ} (hlo : 0xa0 ≤ u) (hhi : u < 0xa2) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x80) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xa0, 0xa2, 1, 0, 0x80⟩) basePieces0_ordered (List.mem_of_getElem? (i := 29) (by rfl)) hlo hhi exact hh def baseTable_eval_0_30 {u : ℚ} (hlo : 0xa2 ≤ u) (hhi : u < 0xd8) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0xa2) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xa2, 0xd8, 1, 0, 0xa2⟩) basePieces0_ordered (List.mem_of_getElem? (i := 30) (by rfl)) hlo hhi exact hh def baseTable_eval_0_31 {u : ℚ} (hlo : 0xd8 ≤ u) (hhi : u < 0x100) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xd8, 0x100, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 31) (by rfl)) hlo hhi exact hh def baseTable_eval_0_32 {u : ℚ} (hlo : 0x100 ≤ u) (hhi : u < (0xa00 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x100) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x100, (0xa00 / 9), 0, 0, 0x100⟩) basePieces0_ordered (List.mem_of_getElem? (i := 32) (by rfl)) hlo hhi exact hh def baseTable_eval_0_33 {u : ℚ} (hlo : (0xa00 / 9) ≤ u) (hhi : u < 0x140) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0xa00 / 9), 0x140, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 33) (by rfl)) hlo hhi exact hh def baseTable_eval_0_34 {u : ℚ} (hlo : 0x140 ≤ u) (hhi : u < (0x400 / 3)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x100) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x140, (0x400 / 3), 0, 0, 0x100⟩) basePieces0_ordered (List.mem_of_getElem? (i := 34) (by rfl)) hlo hhi exact hh def baseTable_eval_0_35 {u : ℚ} (hlo : (0x400 / 3) ≤ u) (hhi : u < 0x17a) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x400 / 3), 0x17a, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 35) (by rfl)) hlo hhi exact hh def baseTable_eval_0_36 {u : ℚ} (hlo : 0x17a ≤ u) (hhi : u < 0x1b0) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x144) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x17a, 0x1b0, 0, 0, 0x144⟩) basePieces0_ordered (List.mem_of_getElem? (i := 36) (by rfl)) hlo hhi exact hh def baseTable_eval_0_37 {u : ℚ} (hlo : 0x1b0 ≤ u) (hhi : u < 0x200) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x1b0, 0x200, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 37) (by rfl)) hlo hhi exact hh def baseTable_eval_0_38 {u : ℚ} (hlo : 0x200 ≤ u) (hhi : u < (0x1400 / 9)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x200) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x200, (0x1400 / 9), 1, 0, 0x200⟩) basePieces0_ordered (List.mem_of_getElem? (i := 38) (by rfl)) hlo hhi exact hh def baseTable_eval_0_39 {u : ℚ} (hlo : (0x1400 / 9) ≤ u) (hhi : u < 0x280) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x1400 / 9), 0x280, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 39) (by rfl)) hlo hhi exact hh def baseTable_eval_0_40 {u : ℚ} (hlo : 0x280 ≤ u) (hhi : u < 0x2a3) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x200) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x280, 0x2a3, 1, 0, 0x200⟩) basePieces0_ordered (List.mem_of_getElem? (i := 40) (by rfl)) hlo hhi exact hh def baseTable_eval_0_41 {u : ℚ} (hlo : 0x2a3 ≤ u) (hhi : u < 0x2d0) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x288) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x2a3, 0x2d0, 1, 0, 0x288⟩) basePieces0_ordered (List.mem_of_getElem? (i := 41) (by rfl)) hlo hhi exact hh def baseTable_eval_0_42 {u : ℚ} (hlo : 0x2d0 ≤ u) (hhi : u < 0x320) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x2d0, 0x320, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 42) (by rfl)) hlo hhi exact hh def baseTable_eval_0_43 {u : ℚ} (hlo : 0x320 ≤ u) (hhi : u < 0x32a) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x320, 0x32a, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 43) (by rfl)) hlo hhi exact hh def baseTable_eval_0_44 {u : ℚ} (hlo : 0x32a ≤ u) (hhi : u < 0x360) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x288) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x32a, 0x360, 1, 0, 0x288⟩) basePieces0_ordered (List.mem_of_getElem? (i := 44) (by rfl)) hlo hhi exact hh def baseTable_eval_0_45 {u : ℚ} (hlo : 0x360 ≤ u) (hhi : u < 0x400) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x360, 0x400, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 45) (by rfl)) hlo hhi exact hh def baseTable_eval_0_46 {u : ℚ} (hlo : 0x400 ≤ u) (hhi : u < (0x2800 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x400) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x400, (0x2800 / 9), 0, 0, 0x400⟩) basePieces0_ordered (List.mem_of_getElem? (i := 46) (by rfl)) hlo hhi exact hh def baseTable_eval_0_47 {u : ℚ} (hlo : (0x2800 / 9) ≤ u) (hhi : u < 0x500) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x2800 / 9), 0x500, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 47) (by rfl)) hlo hhi exact hh def baseTable_eval_0_48 {u : ℚ} (hlo : 0x500 ≤ u) (hhi : u < (0x1000 / 3)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x400) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x500, (0x1000 / 3), 0, 0, 0x400⟩) basePieces0_ordered (List.mem_of_getElem? (i := 48) (by rfl)) hlo hhi exact hh def baseTable_eval_0_49 {u : ℚ} (hlo : (0x1000 / 3) ≤ u) (hhi : u < 0x800) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x1000 / 3), 0x800, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 49) (by rfl)) hlo hhi exact hh def baseTable_eval_0_50 {u : ℚ} (hlo : 0x800 ≤ u) (hhi : u < (0x5000 / 9)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x800) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x800, (0x5000 / 9), 1, 0, 0x800⟩) basePieces0_ordered (List.mem_of_getElem? (i := 50) (by rfl)) hlo hhi exact hh def baseTable_eval_0_51 {u : ℚ} (hlo : (0x5000 / 9) ≤ u) (hhi : u < 0xa00) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x5000 / 9), 0xa00, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 51) (by rfl)) hlo hhi exact hh def baseTable_eval_0_52 {u : ℚ} (hlo : 0xa00 ≤ u) (hhi : u < (0x2000 / 3)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x800) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xa00, (0x2000 / 3), 1, 0, 0x800⟩) basePieces0_ordered (List.mem_of_getElem? (i := 52) (by rfl)) hlo hhi exact hh def baseTable_eval_0_53 {u : ℚ} (hlo : (0x2000 / 3) ≤ u) (hhi : u < 0xd2f) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x2000 / 3), 0xd2f, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 53) (by rfl)) hlo hhi exact hh def baseTable_eval_0_54 {u : ℚ} (hlo : 0xd2f ≤ u) (hhi : u < 0xd80) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0xa20) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xd2f, 0xd80, 1, 0, 0xa20⟩) basePieces0_ordered (List.mem_of_getElem? (i := 54) (by rfl)) hlo hhi exact hh def baseTable_eval_0_55 {u : ℚ} (hlo : 0xd80 ≤ u) (hhi : u < 0x1000) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xd80, 0x1000, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 55) (by rfl)) hlo hhi exact hh def baseTable_eval_0_56 {u : ℚ} (hlo : 0x1000 ≤ u) (hhi : u < (0xa000 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x1000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x1000, (0xa000 / 9), 0, 0, 0x1000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 56) (by rfl)) hlo hhi exact hh def baseTable_eval_0_57 {u : ℚ} (hlo : (0xa000 / 9) ≤ u) (hhi : u < 0x1400) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0xa000 / 9), 0x1400, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 57) (by rfl)) hlo hhi exact hh def baseTable_eval_0_58 {u : ℚ} (hlo : 0x1400 ≤ u) (hhi : u < (0x23000 / 27)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x1000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x1400, (0x23000 / 27), 0, 0, 0x1000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 58) (by rfl)) hlo hhi exact hh def baseTable_eval_0_59 {u : ℚ} (hlo : (0x23000 / 27) ≤ u) (hhi : u < 0x15e0) : cutoffTableEval (basePieces false) u = (0, (27 / 35) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x23000 / 27), 0x15e0, 0, (27 / 35), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 59) (by rfl)) hlo hhi exact hh def baseTable_eval_0_60 {u : ℚ} (hlo : 0x15e0 ≤ u) (hhi : u < 0x19a1) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x15e0, 0x19a1, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 60) (by rfl)) hlo hhi exact hh def baseTable_eval_0_61 {u : ℚ} (hlo : 0x19a1 ≤ u) (hhi : u < 0x2000) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x19a1) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x19a1, 0x2000, 0, 0, 0x19a1⟩) basePieces0_ordered (List.mem_of_getElem? (i := 61) (by rfl)) hlo hhi exact hh def baseTable_eval_0_62 {u : ℚ} (hlo : 0x2000 ≤ u) (hhi : u < (0x14000 / 9)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x2000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x2000, (0x14000 / 9), 1, 0, 0x2000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 62) (by rfl)) hlo hhi exact hh def baseTable_eval_0_63 {u : ℚ} (hlo : (0x14000 / 9) ≤ u) (hhi : u < 0x2800) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x14000 / 9), 0x2800, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 63) (by rfl)) hlo hhi exact hh def baseTable_eval_0_64 {u : ℚ} (hlo : 0x2800 ≤ u) (hhi : u < (0x8000 / 3)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x2000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x2800, (0x8000 / 3), 1, 0, 0x2000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 64) (by rfl)) hlo hhi exact hh def baseTable_eval_0_65 {u : ℚ} (hlo : (0x8000 / 3) ≤ u) (hhi : u < 0x3342) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x8000 / 3), 0x3342, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 65) (by rfl)) hlo hhi exact hh def baseTable_eval_0_66 {u : ℚ} (hlo : 0x3342 ≤ u) (hhi : u < 0x4000) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x3342) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x3342, 0x4000, 1, 0, 0x3342⟩) basePieces0_ordered (List.mem_of_getElem? (i := 66) (by rfl)) hlo hhi exact hh def baseTable_eval_0_67 {u : ℚ} (hlo : 0x4000 ≤ u) (hhi : u < (0x28000 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x4000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x4000, (0x28000 / 9), 0, 0, 0x4000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 67) (by rfl)) hlo hhi exact hh def baseTable_eval_0_68 {u : ℚ} (hlo : (0x28000 / 9) ≤ u) (hhi : u < 0x4ce3) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x28000 / 9), 0x4ce3, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 68) (by rfl)) hlo hhi exact hh def baseTable_eval_0_69 {u : ℚ} (hlo : 0x4ce3 ≤ u) (hhi : u < 0x6684) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x4ce3) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x4ce3, 0x6684, 0, 0, 0x4ce3⟩) basePieces0_ordered (List.mem_of_getElem? (i := 69) (by rfl)) hlo hhi exact hh def baseTable_eval_0_70 {u : ℚ} (hlo : 0x6684 ≤ u) (hhi : u < 0x8000) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x6684, 0x8000, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 70) (by rfl)) hlo hhi exact hh def baseTable_eval_0_71 {u : ℚ} (hlo : 0x8000 ≤ u) (hhi : u < 0x8025) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x8000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x8000, 0x8025, 1, 0, 0x8000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 71) (by rfl)) hlo hhi exact hh def baseTable_eval_0_72 {u : ℚ} (hlo : 0x8025 ≤ u) (hhi : u < 0x88b0) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x6684) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x8025, 0x88b0, 0, 0, 0x6684⟩) basePieces0_ordered (List.mem_of_getElem? (i := 72) (by rfl)) hlo hhi exact hh def baseTable_eval_0_73 {u : ℚ} (hlo : 0x88b0 ≤ u) (hhi : u < 0x99c6) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x88b0, 0x99c6, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 73) (by rfl)) hlo hhi exact hh def baseTable_eval_0_74 {u : ℚ} (hlo : 0x99c6 ≤ u) (hhi : u < 0xcd08) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x99c6) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x99c6, 0xcd08, 1, 0, 0x99c6⟩) basePieces0_ordered (List.mem_of_getElem? (i := 74) (by rfl)) hlo hhi exact hh def baseTable_eval_0_75 {u : ℚ} (hlo : 0xcd08 ≤ u) (hhi : u < 0x10000) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xcd08, 0x10000, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 75) (by rfl)) hlo hhi exact hh def baseTable_eval_0_76 {u : ℚ} (hlo : 0x10000 ≤ u) (hhi : u < (0xa0000 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x10000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x10000, (0xa0000 / 9), 0, 0, 0x10000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 76) (by rfl)) hlo hhi exact hh def baseTable_eval_0_77 {u : ℚ} (hlo : (0xa0000 / 9) ≤ u) (hhi : u < 0x1338c) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0xa0000 / 9), 0x1338c, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 77) (by rfl)) hlo hhi exact hh def baseTable_eval_0_78 {u : ℚ} (hlo : 0x1338c ≤ u) (hhi : u < 0x14000) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x1338c) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x1338c, 0x14000, 0, 0, 0x1338c⟩) basePieces0_ordered (List.mem_of_getElem? (i := 78) (by rfl)) hlo hhi exact hh def baseTable_eval_0_79 {u : ℚ} (hlo : 0x14000 ≤ u) (hhi : u < (0x40000 / 3)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x10000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x14000, (0x40000 / 3), 0, 0, 0x10000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 79) (by rfl)) hlo hhi exact hh def baseTable_eval_0_80 {u : ℚ} (hlo : (0x40000 / 3) ≤ u) (hhi : u < 0x166ce) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x40000 / 3), 0x166ce, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 80) (by rfl)) hlo hhi exact hh def baseTable_eval_0_81 {u : ℚ} (hlo : 0x166ce ≤ u) (hhi : u < 0x19a10) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x1338c) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x166ce, 0x19a10, 0, 0, 0x1338c⟩) basePieces0_ordered (List.mem_of_getElem? (i := 81) (by rfl)) hlo hhi exact hh def baseTable_eval_0_82 {u : ℚ} (hlo : 0x19a10 ≤ u) (hhi : u < 0x20000) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x19a10, 0x20000, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 82) (by rfl)) hlo hhi exact hh def baseTable_eval_0_83 {u : ℚ} (hlo : 0x20000 ≤ u) (hhi : u < (0x140000 / 9)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x20000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x20000, (0x140000 / 9), 1, 0, 0x20000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 83) (by rfl)) hlo hhi exact hh def baseTable_eval_0_84 {u : ℚ} (hlo : (0x140000 / 9) ≤ u) (hhi : u < 0x28000) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x140000 / 9), 0x28000, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 84) (by rfl)) hlo hhi exact hh def baseTable_eval_0_85 {u : ℚ} (hlo : 0x28000 ≤ u) (hhi : u < 0x280b9) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x20000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x28000, 0x280b9, 1, 0, 0x20000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 85) (by rfl)) hlo hhi exact hh def baseTable_eval_0_86 {u : ℚ} (hlo : 0x280b9 ≤ u) (hhi : u < 0x2ab70) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x26718) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x280b9, 0x2ab70, 1, 0, 0x26718⟩) basePieces0_ordered (List.mem_of_getElem? (i := 86) (by rfl)) hlo hhi exact hh def baseTable_eval_0_87 {u : ℚ} (hlo : 0x2ab70 ≤ u) (hhi : u < 0x300de) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x2ab70, 0x300de, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 87) (by rfl)) hlo hhi exact hh def baseTable_eval_0_88 {u : ℚ} (hlo : 0x300de ≤ u) (hhi : u < 0x33420) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x26718) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x300de, 0x33420, 1, 0, 0x26718⟩) basePieces0_ordered (List.mem_of_getElem? (i := 88) (by rfl)) hlo hhi exact hh def baseTable_eval_0_89 {u : ℚ} (hlo : 0x33420 ≤ u) (hhi : u < 0x40000) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x33420, 0x40000, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 89) (by rfl)) hlo hhi exact hh def baseTable_eval_0_90 {u : ℚ} (hlo : 0x40000 ≤ u) (hhi : u < (0x280000 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x40000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x40000, (0x280000 / 9), 0, 0, 0x40000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 90) (by rfl)) hlo hhi exact hh def baseTable_eval_0_91 {u : ℚ} (hlo : (0x280000 / 9) ≤ u) (hhi : u < 0x50000) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x280000 / 9), 0x50000, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 91) (by rfl)) hlo hhi exact hh def baseTable_eval_0_92 {u : ℚ} (hlo : 0x50000 ≤ u) (hhi : u < (0x100000 / 3)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x40000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x50000, (0x100000 / 3), 0, 0, 0x40000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 92) (by rfl)) hlo hhi exact hh def baseTable_eval_0_93 {u : ℚ} (hlo : (0x100000 / 3) ≤ u) (hhi : u < 0x601bc) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x100000 / 3), 0x601bc, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 93) (by rfl)) hlo hhi exact hh def baseTable_eval_0_94 {u : ℚ} (hlo : 0x601bc ≤ u) (hhi : u < 0x64000) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x4ce30) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x601bc, 0x64000, 0, 0, 0x4ce30⟩) basePieces0_ordered (List.mem_of_getElem? (i := 94) (by rfl)) hlo hhi exact hh def baseTable_eval_0_95 {u : ℚ} (hlo : 0x64000 ≤ u) (hhi : u < 0x80000) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x64000, 0x80000, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 95) (by rfl)) hlo hhi exact hh def baseTable_eval_0_96 {u : ℚ} (hlo : 0x80000 ≤ u) (hhi : u < (0x500000 / 9)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x80000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x80000, (0x500000 / 9), 1, 0, 0x80000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 96) (by rfl)) hlo hhi exact hh def baseTable_eval_0_97 {u : ℚ} (hlo : (0x500000 / 9) ≤ u) (hhi : u < 0xa0000) : cutoffTableEval (basePieces false) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x500000 / 9), 0xa0000, 1, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 97) (by rfl)) hlo hhi exact hh def baseTable_eval_0_98 {u : ℚ} (hlo : 0xa0000 ≤ u) (hhi : u < (0x200000 / 3)) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x80000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xa0000, (0x200000 / 3), 1, 0, 0x80000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 98) (by rfl)) hlo hhi exact hh def baseTable_eval_0_99 {u : ℚ} (hlo : (0x200000 / 3) ≤ u) (hhi : u < 0xc839d) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x200000 / 3), 0xc839d, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 99) (by rfl)) hlo hhi exact hh def baseTable_eval_0_100 {u : ℚ} (hlo : 0xc839d ≤ u) (hhi : u < 0xcd080) : cutoffTableEval (basePieces false) u = (1, 0 * (u) + 0x99c60) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xc839d, 0xcd080, 1, 0, 0x99c60⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x64) (by rfl)) hlo hhi exact hh def baseTable_eval_0_101 {u : ℚ} (hlo : 0xcd080 ≤ u) (hhi : u < 0x100000) : cutoffTableEval (basePieces false) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0xcd080, 0x100000, 1, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x65) (by rfl)) hlo hhi exact hh def baseTable_eval_0_102 {u : ℚ} (hlo : 0x100000 ≤ u) (hhi : u < (0xa00000 / 9)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x100000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x100000, (0xa00000 / 9), 0, 0, 0x100000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x66) (by rfl)) hlo hhi exact hh def baseTable_eval_0_103 {u : ℚ} (hlo : (0xa00000 / 9) ≤ u) (hhi : u < 0x140000) : cutoffTableEval (basePieces false) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0xa00000 / 9), 0x140000, 0, (9 / 10), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x67) (by rfl)) hlo hhi exact hh def baseTable_eval_0_104 {u : ℚ} (hlo : 0x140000 ≤ u) (hhi : u < (0x2300000 / 27)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x100000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x140000, (0x2300000 / 27), 0, 0, 0x100000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x68) (by rfl)) hlo hhi exact hh def baseTable_eval_0_105 {u : ℚ} (hlo : (0x2300000 / 27) ≤ u) (hhi : u < 0x150612) : cutoffTableEval (basePieces false) u = (0, (27 / 35) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x2300000 / 27), 0x150612, 0, (27 / 35), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x69) (by rfl)) hlo hhi exact hh def baseTable_eval_0_106 {u : ℚ} (hlo : 0x150612 ≤ u) (hhi : u < (0x400000 / 3)) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x100000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x150612, (0x400000 / 3), 0, 0, 0x100000⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x6a) (by rfl)) hlo hhi exact hh def baseTable_eval_0_107 {u : ℚ} (hlo : (0x400000 / 3) ≤ u) (hhi : u < 0x1853d3) : cutoffTableEval (basePieces false) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨(0x400000 / 3), 0x1853d3, 0, (3 / 4), 0⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x6b) (by rfl)) hlo hhi exact hh def baseTable_eval_0_108 {u : ℚ} (hlo : 0x1853d3 ≤ u) (hhi : u < 0x1921ee) : cutoffTableEval (basePieces false) u = (0, 0 * (u) + 0x1853d3) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces0) (row := ⟨0x1853d3, 0x1921ee, 0, 0, 0x1853d3⟩) basePieces0_ordered (List.mem_of_getElem? (i := 0x6c) (by rfl)) hlo hhi exact hh def basePieces1_span : cutoffTableSpan 0 0x1921ee basePieces1 := by unfold basePieces1 repeat' apply And.intro all_goals norm_num [cutoffTableSpan] def basePieces1_ordered : basePieces1.Pairwise (fun x y => x.hi ≤ y.lo) := cutoffTableSpan_ordered basePieces1_span def baseTable_eval_1_0 {u : ℚ} (hlo : 0 ≤ u) (hhi : u < 1) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0, 1, 0, 0, 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0) (by rfl)) hlo hhi exact hh def baseTable_eval_1_1 {u : ℚ} (hlo : 1 ≤ u) (hhi : u < (4 / 3)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 1) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨1, (4 / 3), 0, 0, 1⟩) basePieces1_ordered (List.mem_of_getElem? (i := 1) (by rfl)) hlo hhi exact hh def baseTable_eval_1_2 {u : ℚ} (hlo : (4 / 3) ≤ u) (hhi : u < 2) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(4 / 3), 2, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 2) (by rfl)) hlo hhi exact hh def baseTable_eval_1_3 {u : ℚ} (hlo : 2 ≤ u) (hhi : u < (8 / 3)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 2) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨2, (8 / 3), 1, 0, 2⟩) basePieces1_ordered (List.mem_of_getElem? (i := 3) (by rfl)) hlo hhi exact hh def baseTable_eval_1_4 {u : ℚ} (hlo : (8 / 3) ≤ u) (hhi : u < 4) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(8 / 3), 4, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 4) (by rfl)) hlo hhi exact hh def baseTable_eval_1_5 {u : ℚ} (hlo : 4 ≤ u) (hhi : u < (16 / 3)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 4) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨4, (16 / 3), 0, 0, 4⟩) basePieces1_ordered (List.mem_of_getElem? (i := 5) (by rfl)) hlo hhi exact hh def baseTable_eval_1_6 {u : ℚ} (hlo : (16 / 3) ≤ u) (hhi : u < 8) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(16 / 3), 8, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 6) (by rfl)) hlo hhi exact hh def baseTable_eval_1_7 {u : ℚ} (hlo : 8 ≤ u) (hhi : u < (80 / 9)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 8) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨8, (80 / 9), 1, 0, 8⟩) basePieces1_ordered (List.mem_of_getElem? (i := 7) (by rfl)) hlo hhi exact hh def baseTable_eval_1_8 {u : ℚ} (hlo : (80 / 9) ≤ u) (hhi : u < 10) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(80 / 9), 10, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 8) (by rfl)) hlo hhi exact hh def baseTable_eval_1_9 {u : ℚ} (hlo : 10 ≤ u) (hhi : u < (32 / 3)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 8) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨10, (32 / 3), 1, 0, 8⟩) basePieces1_ordered (List.mem_of_getElem? (i := 9) (by rfl)) hlo hhi exact hh def baseTable_eval_1_10 {u : ℚ} (hlo : (32 / 3) ≤ u) (hhi : u < 16) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(32 / 3), 16, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 10) (by rfl)) hlo hhi exact hh def baseTable_eval_1_11 {u : ℚ} (hlo : 16 ≤ u) (hhi : u < (0xa0 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 16) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨16, (0xa0 / 9), 0, 0, 16⟩) basePieces1_ordered (List.mem_of_getElem? (i := 11) (by rfl)) hlo hhi exact hh def baseTable_eval_1_12 {u : ℚ} (hlo : (0xa0 / 9) ≤ u) (hhi : u < 20) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0xa0 / 9), 20, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 12) (by rfl)) hlo hhi exact hh def baseTable_eval_1_13 {u : ℚ} (hlo : 20 ≤ u) (hhi : u < (64 / 3)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 16) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨20, (64 / 3), 0, 0, 16⟩) basePieces1_ordered (List.mem_of_getElem? (i := 13) (by rfl)) hlo hhi exact hh def baseTable_eval_1_14 {u : ℚ} (hlo : (64 / 3) ≤ u) (hhi : u < 27) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(64 / 3), 27, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 14) (by rfl)) hlo hhi exact hh def baseTable_eval_1_15 {u : ℚ} (hlo : 27 ≤ u) (hhi : u < 32) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 27) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨27, 32, 0, 0, 27⟩) basePieces1_ordered (List.mem_of_getElem? (i := 15) (by rfl)) hlo hhi exact hh def baseTable_eval_1_16 {u : ℚ} (hlo : 32 ≤ u) (hhi : u < (0x140 / 9)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 32) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨32, (0x140 / 9), 1, 0, 32⟩) basePieces1_ordered (List.mem_of_getElem? (i := 16) (by rfl)) hlo hhi exact hh def baseTable_eval_1_17 {u : ℚ} (hlo : (0x140 / 9) ≤ u) (hhi : u < 40) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x140 / 9), 40, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 17) (by rfl)) hlo hhi exact hh def baseTable_eval_1_18 {u : ℚ} (hlo : 40 ≤ u) (hhi : u < (0x80 / 3)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 32) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨40, (0x80 / 3), 1, 0, 32⟩) basePieces1_ordered (List.mem_of_getElem? (i := 18) (by rfl)) hlo hhi exact hh def baseTable_eval_1_19 {u : ℚ} (hlo : (0x80 / 3) ≤ u) (hhi : u < 64) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x80 / 3), 64, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 19) (by rfl)) hlo hhi exact hh def baseTable_eval_1_20 {u : ℚ} (hlo : 64 ≤ u) (hhi : u < (0x280 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 64) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨64, (0x280 / 9), 0, 0, 64⟩) basePieces1_ordered (List.mem_of_getElem? (i := 20) (by rfl)) hlo hhi exact hh def baseTable_eval_1_21 {u : ℚ} (hlo : (0x280 / 9) ≤ u) (hhi : u < 80) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x280 / 9), 80, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 21) (by rfl)) hlo hhi exact hh def baseTable_eval_1_22 {u : ℚ} (hlo : 80 ≤ u) (hhi : u < 81) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 64) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨80, 81, 0, 0, 64⟩) basePieces1_ordered (List.mem_of_getElem? (i := 22) (by rfl)) hlo hhi exact hh def baseTable_eval_1_23 {u : ℚ} (hlo : 81 ≤ u) (hhi : u < 0x6c) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 81) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨81, 0x6c, 0, 0, 81⟩) basePieces1_ordered (List.mem_of_getElem? (i := 23) (by rfl)) hlo hhi exact hh def baseTable_eval_1_24 {u : ℚ} (hlo : 0x6c ≤ u) (hhi : u < 0x80) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x6c, 0x80, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 24) (by rfl)) hlo hhi exact hh def baseTable_eval_1_25 {u : ℚ} (hlo : 0x80 ≤ u) (hhi : u < 0x87) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x80) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x80, 0x87, 1, 0, 0x80⟩) basePieces1_ordered (List.mem_of_getElem? (i := 25) (by rfl)) hlo hhi exact hh def baseTable_eval_1_26 {u : ℚ} (hlo : 0x87 ≤ u) (hhi : u < 0x90) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x6c) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x87, 0x90, 0, 0, 0x6c⟩) basePieces1_ordered (List.mem_of_getElem? (i := 26) (by rfl)) hlo hhi exact hh def baseTable_eval_1_27 {u : ℚ} (hlo : 0x90 ≤ u) (hhi : u < 0xa0) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x90, 0xa0, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 27) (by rfl)) hlo hhi exact hh def baseTable_eval_1_28 {u : ℚ} (hlo : 0xa0 ≤ u) (hhi : u < 0xa2) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x80) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xa0, 0xa2, 1, 0, 0x80⟩) basePieces1_ordered (List.mem_of_getElem? (i := 28) (by rfl)) hlo hhi exact hh def baseTable_eval_1_29 {u : ℚ} (hlo : 0xa2 ≤ u) (hhi : u < 0xd8) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0xa2) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xa2, 0xd8, 1, 0, 0xa2⟩) basePieces1_ordered (List.mem_of_getElem? (i := 29) (by rfl)) hlo hhi exact hh def baseTable_eval_1_30 {u : ℚ} (hlo : 0xd8 ≤ u) (hhi : u < 0x100) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xd8, 0x100, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 30) (by rfl)) hlo hhi exact hh def baseTable_eval_1_31 {u : ℚ} (hlo : 0x100 ≤ u) (hhi : u < (0xa00 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x100) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x100, (0xa00 / 9), 0, 0, 0x100⟩) basePieces1_ordered (List.mem_of_getElem? (i := 31) (by rfl)) hlo hhi exact hh def baseTable_eval_1_32 {u : ℚ} (hlo : (0xa00 / 9) ≤ u) (hhi : u < 0x140) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0xa00 / 9), 0x140, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 32) (by rfl)) hlo hhi exact hh def baseTable_eval_1_33 {u : ℚ} (hlo : 0x140 ≤ u) (hhi : u < (0x400 / 3)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x100) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x140, (0x400 / 3), 0, 0, 0x100⟩) basePieces1_ordered (List.mem_of_getElem? (i := 33) (by rfl)) hlo hhi exact hh def baseTable_eval_1_34 {u : ℚ} (hlo : (0x400 / 3) ≤ u) (hhi : u < 0x195) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x400 / 3), 0x195, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 34) (by rfl)) hlo hhi exact hh def baseTable_eval_1_35 {u : ℚ} (hlo : 0x195 ≤ u) (hhi : u < 0x1b0) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x144) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x195, 0x1b0, 0, 0, 0x144⟩) basePieces1_ordered (List.mem_of_getElem? (i := 35) (by rfl)) hlo hhi exact hh def baseTable_eval_1_36 {u : ℚ} (hlo : 0x1b0 ≤ u) (hhi : u < 0x200) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x1b0, 0x200, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 36) (by rfl)) hlo hhi exact hh def baseTable_eval_1_37 {u : ℚ} (hlo : 0x200 ≤ u) (hhi : u < (0x1400 / 9)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x200) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x200, (0x1400 / 9), 1, 0, 0x200⟩) basePieces1_ordered (List.mem_of_getElem? (i := 37) (by rfl)) hlo hhi exact hh def baseTable_eval_1_38 {u : ℚ} (hlo : (0x1400 / 9) ≤ u) (hhi : u < 0x280) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x1400 / 9), 0x280, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 38) (by rfl)) hlo hhi exact hh def baseTable_eval_1_39 {u : ℚ} (hlo : 0x280 ≤ u) (hhi : u < 0x2a3) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x200) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x280, 0x2a3, 1, 0, 0x200⟩) basePieces1_ordered (List.mem_of_getElem? (i := 39) (by rfl)) hlo hhi exact hh def baseTable_eval_1_40 {u : ℚ} (hlo : 0x2a3 ≤ u) (hhi : u < 0x2d0) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x288) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x2a3, 0x2d0, 1, 0, 0x288⟩) basePieces1_ordered (List.mem_of_getElem? (i := 40) (by rfl)) hlo hhi exact hh def baseTable_eval_1_41 {u : ℚ} (hlo : 0x2d0 ≤ u) (hhi : u < 0x320) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x2d0, 0x320, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 41) (by rfl)) hlo hhi exact hh def baseTable_eval_1_42 {u : ℚ} (hlo : 0x320 ≤ u) (hhi : u < 0x32a) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x320, 0x32a, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 42) (by rfl)) hlo hhi exact hh def baseTable_eval_1_43 {u : ℚ} (hlo : 0x32a ≤ u) (hhi : u < 0x360) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x288) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x32a, 0x360, 1, 0, 0x288⟩) basePieces1_ordered (List.mem_of_getElem? (i := 43) (by rfl)) hlo hhi exact hh def baseTable_eval_1_44 {u : ℚ} (hlo : 0x360 ≤ u) (hhi : u < 0x400) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x360, 0x400, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 44) (by rfl)) hlo hhi exact hh def baseTable_eval_1_45 {u : ℚ} (hlo : 0x400 ≤ u) (hhi : u < (0x2800 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x400) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x400, (0x2800 / 9), 0, 0, 0x400⟩) basePieces1_ordered (List.mem_of_getElem? (i := 45) (by rfl)) hlo hhi exact hh def baseTable_eval_1_46 {u : ℚ} (hlo : (0x2800 / 9) ≤ u) (hhi : u < 0x500) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x2800 / 9), 0x500, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 46) (by rfl)) hlo hhi exact hh def baseTable_eval_1_47 {u : ℚ} (hlo : 0x500 ≤ u) (hhi : u < (0x1000 / 3)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x400) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x500, (0x1000 / 3), 0, 0, 0x400⟩) basePieces1_ordered (List.mem_of_getElem? (i := 47) (by rfl)) hlo hhi exact hh def baseTable_eval_1_48 {u : ℚ} (hlo : (0x1000 / 3) ≤ u) (hhi : u < 0x800) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x1000 / 3), 0x800, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 48) (by rfl)) hlo hhi exact hh def baseTable_eval_1_49 {u : ℚ} (hlo : 0x800 ≤ u) (hhi : u < (0x5000 / 9)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x800) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x800, (0x5000 / 9), 1, 0, 0x800⟩) basePieces1_ordered (List.mem_of_getElem? (i := 49) (by rfl)) hlo hhi exact hh def baseTable_eval_1_50 {u : ℚ} (hlo : (0x5000 / 9) ≤ u) (hhi : u < 0xa00) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x5000 / 9), 0xa00, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 50) (by rfl)) hlo hhi exact hh def baseTable_eval_1_51 {u : ℚ} (hlo : 0xa00 ≤ u) (hhi : u < (0x2000 / 3)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x800) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xa00, (0x2000 / 3), 1, 0, 0x800⟩) basePieces1_ordered (List.mem_of_getElem? (i := 51) (by rfl)) hlo hhi exact hh def baseTable_eval_1_52 {u : ℚ} (hlo : (0x2000 / 3) ≤ u) (hhi : u < 0xd2f) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x2000 / 3), 0xd2f, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 52) (by rfl)) hlo hhi exact hh def baseTable_eval_1_53 {u : ℚ} (hlo : 0xd2f ≤ u) (hhi : u < 0xd80) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0xa20) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xd2f, 0xd80, 1, 0, 0xa20⟩) basePieces1_ordered (List.mem_of_getElem? (i := 53) (by rfl)) hlo hhi exact hh def baseTable_eval_1_54 {u : ℚ} (hlo : 0xd80 ≤ u) (hhi : u < 0x1000) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xd80, 0x1000, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 54) (by rfl)) hlo hhi exact hh def baseTable_eval_1_55 {u : ℚ} (hlo : 0x1000 ≤ u) (hhi : u < (0xa000 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x1000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x1000, (0xa000 / 9), 0, 0, 0x1000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 55) (by rfl)) hlo hhi exact hh def baseTable_eval_1_56 {u : ℚ} (hlo : (0xa000 / 9) ≤ u) (hhi : u < 0x1400) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0xa000 / 9), 0x1400, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 56) (by rfl)) hlo hhi exact hh def baseTable_eval_1_57 {u : ℚ} (hlo : 0x1400 ≤ u) (hhi : u < (0x23000 / 27)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x1000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x1400, (0x23000 / 27), 0, 0, 0x1000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 57) (by rfl)) hlo hhi exact hh def baseTable_eval_1_58 {u : ℚ} (hlo : (0x23000 / 27) ≤ u) (hhi : u < 0x15e0) : cutoffTableEval (basePieces true) u = (0, (27 / 35) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x23000 / 27), 0x15e0, 0, (27 / 35), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 58) (by rfl)) hlo hhi exact hh def baseTable_eval_1_59 {u : ℚ} (hlo : 0x15e0 ≤ u) (hhi : u < 0x19a1) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x15e0, 0x19a1, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 59) (by rfl)) hlo hhi exact hh def baseTable_eval_1_60 {u : ℚ} (hlo : 0x19a1 ≤ u) (hhi : u < 0x2000) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x19a1) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x19a1, 0x2000, 0, 0, 0x19a1⟩) basePieces1_ordered (List.mem_of_getElem? (i := 60) (by rfl)) hlo hhi exact hh def baseTable_eval_1_61 {u : ℚ} (hlo : 0x2000 ≤ u) (hhi : u < (0x14000 / 9)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x2000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x2000, (0x14000 / 9), 1, 0, 0x2000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 61) (by rfl)) hlo hhi exact hh def baseTable_eval_1_62 {u : ℚ} (hlo : (0x14000 / 9) ≤ u) (hhi : u < 0x2800) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x14000 / 9), 0x2800, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 62) (by rfl)) hlo hhi exact hh def baseTable_eval_1_63 {u : ℚ} (hlo : 0x2800 ≤ u) (hhi : u < (0x8000 / 3)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x2000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x2800, (0x8000 / 3), 1, 0, 0x2000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 63) (by rfl)) hlo hhi exact hh def baseTable_eval_1_64 {u : ℚ} (hlo : (0x8000 / 3) ≤ u) (hhi : u < (0x1338c / 5)) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x8000 / 3), (0x1338c / 5), 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 64) (by rfl)) hlo hhi exact hh def baseTable_eval_1_65 {u : ℚ} (hlo : (0x1338c / 5) ≤ u) (hhi : u < 0x4000) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x3342) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x1338c / 5), 0x4000, 1, 0, 0x3342⟩) basePieces1_ordered (List.mem_of_getElem? (i := 65) (by rfl)) hlo hhi exact hh def baseTable_eval_1_66 {u : ℚ} (hlo : 0x4000 ≤ u) (hhi : u < (0x28000 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x4000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x4000, (0x28000 / 9), 0, 0, 0x4000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 66) (by rfl)) hlo hhi exact hh def baseTable_eval_1_67 {u : ℚ} (hlo : (0x28000 / 9) ≤ u) (hhi : u < 0x4ce3) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x28000 / 9), 0x4ce3, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 67) (by rfl)) hlo hhi exact hh def baseTable_eval_1_68 {u : ℚ} (hlo : 0x4ce3 ≤ u) (hhi : u < 0x6684) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x4ce3) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x4ce3, 0x6684, 0, 0, 0x4ce3⟩) basePieces1_ordered (List.mem_of_getElem? (i := 68) (by rfl)) hlo hhi exact hh def baseTable_eval_1_69 {u : ℚ} (hlo : 0x6684 ≤ u) (hhi : u < 0x8000) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x6684, 0x8000, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 69) (by rfl)) hlo hhi exact hh def baseTable_eval_1_70 {u : ℚ} (hlo : 0x8000 ≤ u) (hhi : u < 0x8025) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x8000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x8000, 0x8025, 1, 0, 0x8000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 70) (by rfl)) hlo hhi exact hh def baseTable_eval_1_71 {u : ℚ} (hlo : 0x8025 ≤ u) (hhi : u < 0x88b0) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x6684) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x8025, 0x88b0, 0, 0, 0x6684⟩) basePieces1_ordered (List.mem_of_getElem? (i := 71) (by rfl)) hlo hhi exact hh def baseTable_eval_1_72 {u : ℚ} (hlo : 0x88b0 ≤ u) (hhi : u < 0x99c6) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x88b0, 0x99c6, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 72) (by rfl)) hlo hhi exact hh def baseTable_eval_1_73 {u : ℚ} (hlo : 0x99c6 ≤ u) (hhi : u < 0xcd08) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x99c6) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x99c6, 0xcd08, 1, 0, 0x99c6⟩) basePieces1_ordered (List.mem_of_getElem? (i := 73) (by rfl)) hlo hhi exact hh def baseTable_eval_1_74 {u : ℚ} (hlo : 0xcd08 ≤ u) (hhi : u < 0x10000) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xcd08, 0x10000, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 74) (by rfl)) hlo hhi exact hh def baseTable_eval_1_75 {u : ℚ} (hlo : 0x10000 ≤ u) (hhi : u < (0xa0000 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x10000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x10000, (0xa0000 / 9), 0, 0, 0x10000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 75) (by rfl)) hlo hhi exact hh def baseTable_eval_1_76 {u : ℚ} (hlo : (0xa0000 / 9) ≤ u) (hhi : u < 0x1338c) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0xa0000 / 9), 0x1338c, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 76) (by rfl)) hlo hhi exact hh def baseTable_eval_1_77 {u : ℚ} (hlo : 0x1338c ≤ u) (hhi : u < 0x14000) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x1338c) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x1338c, 0x14000, 0, 0, 0x1338c⟩) basePieces1_ordered (List.mem_of_getElem? (i := 77) (by rfl)) hlo hhi exact hh def baseTable_eval_1_78 {u : ℚ} (hlo : 0x14000 ≤ u) (hhi : u < (0x40000 / 3)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x10000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x14000, (0x40000 / 3), 0, 0, 0x10000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 78) (by rfl)) hlo hhi exact hh def baseTable_eval_1_79 {u : ℚ} (hlo : (0x40000 / 3) ≤ u) (hhi : u < 0x1806f) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x40000 / 3), 0x1806f, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 79) (by rfl)) hlo hhi exact hh def baseTable_eval_1_80 {u : ℚ} (hlo : 0x1806f ≤ u) (hhi : u < 0x19a10) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x1338c) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x1806f, 0x19a10, 0, 0, 0x1338c⟩) basePieces1_ordered (List.mem_of_getElem? (i := 80) (by rfl)) hlo hhi exact hh def baseTable_eval_1_81 {u : ℚ} (hlo : 0x19a10 ≤ u) (hhi : u < 0x20000) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x19a10, 0x20000, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 81) (by rfl)) hlo hhi exact hh def baseTable_eval_1_82 {u : ℚ} (hlo : 0x20000 ≤ u) (hhi : u < (0x140000 / 9)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x20000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x20000, (0x140000 / 9), 1, 0, 0x20000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 82) (by rfl)) hlo hhi exact hh def baseTable_eval_1_83 {u : ℚ} (hlo : (0x140000 / 9) ≤ u) (hhi : u < 0x28000) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x140000 / 9), 0x28000, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 83) (by rfl)) hlo hhi exact hh def baseTable_eval_1_84 {u : ℚ} (hlo : 0x28000 ≤ u) (hhi : u < 0x280b9) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x20000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x28000, 0x280b9, 1, 0, 0x20000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 84) (by rfl)) hlo hhi exact hh def baseTable_eval_1_85 {u : ℚ} (hlo : 0x280b9 ≤ u) (hhi : u < 0x2ab70) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x26718) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x280b9, 0x2ab70, 1, 0, 0x26718⟩) basePieces1_ordered (List.mem_of_getElem? (i := 85) (by rfl)) hlo hhi exact hh def baseTable_eval_1_86 {u : ℚ} (hlo : 0x2ab70 ≤ u) (hhi : u < 0x300de) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x2ab70, 0x300de, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 86) (by rfl)) hlo hhi exact hh def baseTable_eval_1_87 {u : ℚ} (hlo : 0x300de ≤ u) (hhi : u < 0x33420) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x26718) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x300de, 0x33420, 1, 0, 0x26718⟩) basePieces1_ordered (List.mem_of_getElem? (i := 87) (by rfl)) hlo hhi exact hh def baseTable_eval_1_88 {u : ℚ} (hlo : 0x33420 ≤ u) (hhi : u < 0x40000) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x33420, 0x40000, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 88) (by rfl)) hlo hhi exact hh def baseTable_eval_1_89 {u : ℚ} (hlo : 0x40000 ≤ u) (hhi : u < (0x280000 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x40000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x40000, (0x280000 / 9), 0, 0, 0x40000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 89) (by rfl)) hlo hhi exact hh def baseTable_eval_1_90 {u : ℚ} (hlo : (0x280000 / 9) ≤ u) (hhi : u < 0x50000) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x280000 / 9), 0x50000, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 90) (by rfl)) hlo hhi exact hh def baseTable_eval_1_91 {u : ℚ} (hlo : 0x50000 ≤ u) (hhi : u < (0x100000 / 3)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x40000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x50000, (0x100000 / 3), 0, 0, 0x40000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 91) (by rfl)) hlo hhi exact hh def baseTable_eval_1_92 {u : ℚ} (hlo : (0x100000 / 3) ≤ u) (hhi : u < 0x601bc) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x100000 / 3), 0x601bc, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 92) (by rfl)) hlo hhi exact hh def baseTable_eval_1_93 {u : ℚ} (hlo : 0x601bc ≤ u) (hhi : u < 0x64000) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x4ce30) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x601bc, 0x64000, 0, 0, 0x4ce30⟩) basePieces1_ordered (List.mem_of_getElem? (i := 93) (by rfl)) hlo hhi exact hh def baseTable_eval_1_94 {u : ℚ} (hlo : 0x64000 ≤ u) (hhi : u < 0x80000) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x64000, 0x80000, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 94) (by rfl)) hlo hhi exact hh def baseTable_eval_1_95 {u : ℚ} (hlo : 0x80000 ≤ u) (hhi : u < (0x500000 / 9)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x80000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x80000, (0x500000 / 9), 1, 0, 0x80000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 95) (by rfl)) hlo hhi exact hh def baseTable_eval_1_96 {u : ℚ} (hlo : (0x500000 / 9) ≤ u) (hhi : u < 0xa0000) : cutoffTableEval (basePieces true) u = (1, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x500000 / 9), 0xa0000, 1, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 96) (by rfl)) hlo hhi exact hh def baseTable_eval_1_97 {u : ℚ} (hlo : 0xa0000 ≤ u) (hhi : u < (0x200000 / 3)) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x80000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xa0000, (0x200000 / 3), 1, 0, 0x80000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 97) (by rfl)) hlo hhi exact hh def baseTable_eval_1_98 {u : ℚ} (hlo : (0x200000 / 3) ≤ u) (hhi : u < 0xc839d) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x200000 / 3), 0xc839d, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 98) (by rfl)) hlo hhi exact hh def baseTable_eval_1_99 {u : ℚ} (hlo : 0xc839d ≤ u) (hhi : u < 0xcd080) : cutoffTableEval (basePieces true) u = (1, 0 * (u) + 0x99c60) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xc839d, 0xcd080, 1, 0, 0x99c60⟩) basePieces1_ordered (List.mem_of_getElem? (i := 99) (by rfl)) hlo hhi exact hh def baseTable_eval_1_100 {u : ℚ} (hlo : 0xcd080 ≤ u) (hhi : u < 0x100000) : cutoffTableEval (basePieces true) u = (1, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0xcd080, 0x100000, 1, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0x64) (by rfl)) hlo hhi exact hh def baseTable_eval_1_101 {u : ℚ} (hlo : 0x100000 ≤ u) (hhi : u < (0xa00000 / 9)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x100000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x100000, (0xa00000 / 9), 0, 0, 0x100000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0x65) (by rfl)) hlo hhi exact hh def baseTable_eval_1_102 {u : ℚ} (hlo : (0xa00000 / 9) ≤ u) (hhi : u < 0x140000) : cutoffTableEval (basePieces true) u = (0, (9 / 10) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0xa00000 / 9), 0x140000, 0, (9 / 10), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0x66) (by rfl)) hlo hhi exact hh def baseTable_eval_1_103 {u : ℚ} (hlo : 0x140000 ≤ u) (hhi : u < (0x2300000 / 27)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x100000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x140000, (0x2300000 / 27), 0, 0, 0x100000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0x67) (by rfl)) hlo hhi exact hh def baseTable_eval_1_104 {u : ℚ} (hlo : (0x2300000 / 27) ≤ u) (hhi : u < 0x150612) : cutoffTableEval (basePieces true) u = (0, (27 / 35) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x2300000 / 27), 0x150612, 0, (27 / 35), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0x68) (by rfl)) hlo hhi exact hh def baseTable_eval_1_105 {u : ℚ} (hlo : 0x150612 ≤ u) (hhi : u < (0x400000 / 3)) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x100000) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x150612, (0x400000 / 3), 0, 0, 0x100000⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0x69) (by rfl)) hlo hhi exact hh def baseTable_eval_1_106 {u : ℚ} (hlo : (0x400000 / 3) ≤ u) (hhi : u < 0x1853d3) : cutoffTableEval (basePieces true) u = (0, (3 / 4) * (u) + 0) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨(0x400000 / 3), 0x1853d3, 0, (3 / 4), 0⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0x6a) (by rfl)) hlo hhi exact hh def baseTable_eval_1_107 {u : ℚ} (hlo : 0x1853d3 ≤ u) (hhi : u < 0x1921ee) : cutoffTableEval (basePieces true) u = (0, 0 * (u) + 0x1853d3) := by have hh := cutoffTableEval_eq_of_mem (rows := basePieces1) (row := ⟨0x1853d3, 0x1921ee, 0, 0, 0x1853d3⟩) basePieces1_ordered (List.mem_of_getElem? (i := 0x6b) (by rfl)) hlo hhi exact hh def baseTable_small (eps : Bool) (u : ℚ) (hu : u < 1) : cutoffTableEval (basePieces eps) u = (0, 0) := by cases eps <;> simp [basePieces, basePieces0, basePieces1, cutoffTableEval, CutoffPiece.value, hu] def baseLower_0_1 : lowerCutoff 0 1 = 1 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_2 : lowerCutoff 0 2 = 3 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_3 : lowerCutoff 0 3 = 4 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_4 : lowerCutoff 0 4 = 9 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_5 : lowerCutoff 0 5 = 16 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_6 : lowerCutoff 0 6 = 27 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_7 : lowerCutoff 0 7 = 64 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_8 : lowerCutoff 0 8 = 81 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_9 : lowerCutoff 0 9 = 0xf3 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_10 : lowerCutoff 0 10 = 0x100 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_11 : lowerCutoff 0 11 = 0x2d9 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_12 : lowerCutoff 0 12 = 0x400 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_13 : lowerCutoff 0 13 = 0x88b := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_14 : lowerCutoff 0 14 = 0x1000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_15 : lowerCutoff 0 15 = 0x19a1 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_16 : lowerCutoff 0 16 = 0x4000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_17 : lowerCutoff 0 17 = 0x4ce3 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_18 : lowerCutoff 0 18 = 0xe6a9 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_19 : lowerCutoff 0 19 = 0x10000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_20 : lowerCutoff 0 20 = 0x2b3fb := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_21 : lowerCutoff 0 21 = 0x40000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_22 : lowerCutoff 0 22 = 0x81bf1 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_23 : lowerCutoff 0 23 = 0x100000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_24 : lowerCutoff 0 24 = 0x1853d3 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_0_25 : lowerCutoff 0 25 = 0x400000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_2 : lowerCutoff 1 2 = 2 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_3 : lowerCutoff 1 3 = 6 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_4 : lowerCutoff 1 4 = 8 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_5 : lowerCutoff 1 5 = 18 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_6 : lowerCutoff 1 6 = 32 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_7 : lowerCutoff 1 7 = 54 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_8 : lowerCutoff 1 8 = 0x80 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_9 : lowerCutoff 1 9 = 0xa2 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_10 : lowerCutoff 1 10 = 0x1e6 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_11 : lowerCutoff 1 11 = 0x200 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_12 : lowerCutoff 1 12 = 0x5b2 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_13 : lowerCutoff 1 13 = 0x800 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_14 : lowerCutoff 1 14 = 0x1116 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_15 : lowerCutoff 1 15 = 0x2000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_16 : lowerCutoff 1 16 = 0x3342 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_17 : lowerCutoff 1 17 = 0x8000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_18 : lowerCutoff 1 18 = 0x99c6 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_19 : lowerCutoff 1 19 = 0x1cd52 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_20 : lowerCutoff 1 20 = 0x20000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_21 : lowerCutoff 1 21 = 0x567f6 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_22 : lowerCutoff 1 22 = 0x80000 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseLower_1_23 : lowerCutoff 1 23 = 0x1037e2 := lowerCutoff_eq_of_step (by decide) (by decide) (by decide) def baseStepValid (eps : Bool) (u : ℚ) : Prop := cutoffCandidate eps u (cutoffTableEval (basePieces true) (u / 5)) (cutoffTableEval (basePieces eps) (u / 7)) = cutoffTableEval (basePieces eps) u ∧ cutoffAvailable u (quotaValue eps u) (cutoffTableEval (basePieces eps) u).1 (cutoffTableEval (basePieces true) (u / 5)) (cutoffTableEval (basePieces eps) (u / 7)) end Bounty end SubmissionComponent_BaseTableData /- Component BaseIntervalArithmetic; SHA256 7553e19db62313e1f2bc843865d3a34593cca755ddb9daca4960e95c6a26bd48 -/ section SubmissionComponent_BaseIntervalArithmetic /- Finite endpoint certificates for the repeated arithmetic in the base intervals. -/ namespace Bounty abbrev intervalAffineLE (lo hi a b c d : ℚ) : Prop := a * lo + b ≤ c * lo + d ∧ a * hi + b ≤ c * hi + d abbrev intervalAffineLT (lo hi a b c d : ℚ) : Prop := a * lo + b < c * lo + d ∧ a * hi + b ≤ c * hi + d def intervalAffineLE_sound {lo hi a b c d u : ℚ} (h : intervalAffineLE lo hi a b c d) (hlo : lo ≤ u) (hhi : u ≤ hi) : a * u + b ≤ c * u + d := by rcases h with ⟨hl, hh⟩ by_cases hac : a ≤ c · have := mul_nonpos_of_nonpos_of_nonneg (sub_nonpos.mpr hac) (sub_nonneg.mpr hlo) nlinarith · have := mul_nonneg (sub_nonneg.mpr (le_of_not_ge hac)) (sub_nonneg.mpr hhi) nlinarith def intervalAffineLT_sound {lo hi a b c d u : ℚ} (h : intervalAffineLT lo hi a b c d) (hlo : lo ≤ u) (hhi : u < hi) : a * u + b < c * u + d := by rcases h with ⟨hl, hh⟩ by_cases hac : a ≤ c · have := mul_nonpos_of_nonpos_of_nonneg (sub_nonpos.mpr hac) (sub_nonneg.mpr hlo) nlinarith · have := mul_pos (sub_pos.mpr (lt_of_not_ge hac)) (sub_pos.mpr hhi) nlinarith abbrev compactRankConditions (lo hi : ℚ) (a b rank : ℕ) : Prop := 1 ≤ lo ∧ (2 ^ a : ℕ) ≤ lo ∧ hi ≤ (2 ^ (a + 1) : ℕ) ∧ (3 ^ b : ℕ) ≤ lo ∧ hi ≤ (3 ^ (b + 1) : ℕ) ∧ ((a % 2 = 1 ∧ (2 * 3 ^ b : ℕ) ≤ lo ∧ rank = b + 1 + a / 2 + 1) ∨ ((a % 2 ≠ 1 ∨ hi ≤ (2 * 3 ^ b : ℕ)) ∧ rank = b + 1 + a / 2)) def compactRankConditions_sound {lo hi u : ℚ} {a b rank : ℕ} (h : compactRankConditions lo hi a b rank) (hlo : lo ≤ u) (hhi : u < hi) : Nat.log 2 ⌊u⌋₊ = a ∧ smoothRankBound ⌊u⌋₊ = rank := by rcases h with ⟨h1, h2l, h2h, h3l, h3h, hx⟩ have hu : 1 ≤ u := h1.trans hlo have hu0 : 0 ≤ u := by linarith have ha := log_floor_of_bounds hu0 (h2l.trans hlo) (hhi.trans_le h2h) have hb := log_floor_of_bounds hu0 (h3l.trans hlo) (hhi.trans_le h3h) refine ⟨ha, ?_⟩ rw [smoothRank_floor_of_indices hu ha hb] rcases hx with ⟨hodd, hcut, hr⟩ | ⟨hcut, hr⟩ · rw [if_pos ⟨hodd, hcut.trans hlo⟩, hr] · rw [if_neg (by intro hc rcases hcut with heven | hcut · exact heven hc.1 · exact (not_le_of_gt (hhi.trans_le hcut)) hc.2), hr, Nat.add_zero] abbrev compactBadConditions (lo hi : ℚ) (j b low high : ℕ) (bad : Bool) : Prop := (low : ℚ) ≤ 5 * lo ∧ 5 * hi ≤ high ∧ 4 ^ j ≤ low ∧ high ≤ 4 ^ (j + 1) ∧ 3 ^ b ≤ low ∧ high ≤ 3 ^ (b + 1) ∧ if bad then 4 * (high - 1) < 5 * 4 ^ j ∧ 10 * 3 ^ (b - 2) ≤ low ∧ high ≤ 12 * 3 ^ (b - 2) else 5 * 4 ^ j ≤ 4 * low ∨ high ≤ 10 * 3 ^ (b - 2) ∨ 12 * 3 ^ (b - 2) ≤ low def compactBadConditions_sound {lo hi u : ℚ} {j b low high : ℕ} {bad : Bool} (h : compactBadConditions lo hi j b low high bad) (hu : 0 ≤ u) (hlo : lo ≤ u) (hhi : u < hi) : badWindow ⌊5 * u⌋₊ ↔ bad = true := by rcases h with ⟨hlo5, hhi5, h4lo, h4hi, h3lo, h3hi, hb⟩ have hu5 : 0 ≤ 5 * u := by positivity have hnlo : low ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff hu5).mpr (by linarith) have hnhi : ⌊5 * u⌋₊ < high := (Nat.floor_lt hu5).mpr (by linarith) have hj : Nat.log 4 ⌊5 * u⌋₊ = j := Nat.log_eq_of_pow_le_of_lt_pow (h4lo.trans hnlo) (hnhi.trans_le h4hi) have hc : Nat.log 3 ⌊5 * u⌋₊ = b := Nat.log_eq_of_pow_le_of_lt_pow (h3lo.trans hnlo) (hnhi.trans_le h3hi) rw [badWindow_iff_canonical, hj, hc] cases bad with | false => simp only [Bool.false_eq_true, ↓reduceIte, iff_false] at hb ⊢ intro hbad rcases hbad with ⟨_, hn4, hn3l, hn3h⟩ rcases hb with hb | hb | hb <;> omega | true => simp only [↓reduceIte] at hb simp only [iff_true] omega abbrev compactQuotaConditions (eps : Bool) (lo hi : ℚ) (a b rank quota j c low high : ℕ) (bad : Bool) : Prop := compactRankConditions lo hi a b rank ∧ if eps then compactBadConditions lo hi j c low high bad ∧ quota = rank - if bad then 1 else 0 else quota = rank def compactQuotaConditions_sound {eps : Bool} {lo hi u : ℚ} {a b rank quota j c low high : ℕ} {bad : Bool} (h : compactQuotaConditions eps lo hi a b rank quota j c low high bad) (hlo : lo ≤ u) (hhi : u < hi) : Nat.log 2 ⌊u⌋₊ = a ∧ quotaValue eps u = quota := by obtain ⟨ha, hrank⟩ := compactRankConditions_sound h.1 hlo hhi refine ⟨ha, ?_⟩ have hu : 0 ≤ u := by have := h.1.1; linarith cases eps with | false => have hq : quota = rank := h.2 simp [quotaValue, hrank, hq] | true => have hb := compactBadConditions_sound h.2.1 hu hlo hhi have hq : quota = rank - if bad then 1 else 0 := h.2.2 simp only [quotaValue, hrank, true_and, hb, ← hq] end Bounty end SubmissionComponent_BaseIntervalArithmetic /- Component BaseIntervalCutoff; SHA256 e7c7ee03ca5ad20713a0fbdb69658ee2d84715448053f98d30d7c59f9d3dde41 -/ section SubmissionComponent_BaseIntervalCutoff /- A single ordinary proof turns finite affine endpoint checks into a valid base interval. -/ namespace Bounty structure CompactQuotaData where logTwo : ℕ logThree : ℕ rank : ℕ quota : ℕ logFourFive : ℕ logThreeFive : ℕ lowFive : ℕ highFive : ℕ bad : Bool abbrev compactQuotaDataConditions (eps : Bool) (lo hi : ℚ) (d : CompactQuotaData) : Prop := compactQuotaConditions eps lo hi d.logTwo d.logThree d.rank d.quota d.logFourFive d.logThreeFive d.lowFive d.highFive d.bad abbrev compactTrialConditions (lo hi : ℚ) (p p5 p7 level next : ℕ) (s t s5 t5 s7 t7 : ℚ) : Prop := intervalAffineLE lo hi (3 / 4) 0 s t ∧ intervalAffineLE lo hi 0 level s t ∧ intervalAffineLE lo hi ((if p = p5 then 4 else 6) * s5 / 5) ((if p = p5 then 4 else 6) * t5) s t ∧ intervalAffineLE lo hi ((if p = p7 then 4 else 6) * s7 / 7) ((if p = p7 then 4 else 6) * t7) s t ∧ ((s = 3 / 4 ∧ t = 0) ∨ (s = 0 ∧ t = level) ∨ (s = (if p = p5 then 4 else 6) * s5 / 5 ∧ t = (if p = p5 then 4 else 6) * t5) ∨ (s = (if p = p7 then 4 else 6) * s7 / 7 ∧ t = (if p = p7 then 4 else 6) * t7)) ∧ intervalAffineLE lo hi s t 1 0 ∧ intervalAffineLT lo hi s t 0 next def compactTrialConditions_sound {lo hi u s t s5 t5 s7 t7 : ℚ} {p p5 p7 k level next : ℕ} (hlo : lo ≤ u) (hhi : u < hi) (hlevel : lowerCutoff p k = level) (hnext : lowerCutoff p (k + 1) = next) (h : compactTrialConditions lo hi p p5 p7 level next s t s5 t5 s7 t7) : cutoffTrial u k p (p5, s5 * (u / 5) + t5) (p7, s7 * (u / 7) + t7) = s * u + t ∧ cutoffAvailable u k p (p5, s5 * (u / 5) + t5) (p7, s7 * (u / 7) + t7) := by rcases h with ⟨hbase, hlev, hfive, hseven, heq, hself, hupper⟩ have ht : cutoffTrial u k p (p5, s5 * (u / 5) + t5) (p7, s7 * (u / 7) + t7) = s * u + t := by apply cutoffTrial_eq_of_bounds · have := intervalAffineLE_sound hbase hlo hhi.le linarith · rw [hlevel] simpa only [zero_mul, zero_add] using intervalAffineLE_sound hlev hlo hhi.le · have := intervalAffineLE_sound hfive hlo hhi.le dsimp at this ⊢ convert this using 1 <;> ring · have := intervalAffineLE_sound hseven hlo hhi.le dsimp at this ⊢ convert this using 1 <;> ring · rcases heq with ⟨rfl, rfl⟩ | ⟨rfl, rfl⟩ | ⟨rfl, rfl⟩ | ⟨rfl, rfl⟩ · exact Or.inl (by ring) · exact Or.inr (Or.inl (by rw [hlevel]; ring)) · exact Or.inr (Or.inr (Or.inl (by dsimp; ring))) · exact Or.inr (Or.inr (Or.inr (by dsimp; ring))) refine ⟨ht, ?_⟩ unfold cutoffAvailable rw [ht, hnext] constructor · simpa only [one_mul, add_zero] using intervalAffineLE_sound hself hlo hhi.le · simpa only [zero_mul, zero_add] using intervalAffineLT_sound hupper hlo hhi def compactBaseInterval_preferred (d : CompactQuotaData) {eps : Bool} {lo hi u s t s5 t5 s7 t7 : ℚ} {p p5 p7 level next : ℕ} (hlo : lo ≤ u) (hhi : u < hi) (hp : cutoffTableEval (basePieces eps) u = (p, s * u + t)) (h5 : cutoffTableEval (basePieces true) (u / 5) = (p5, s5 * (u / 5) + t5)) (h7 : cutoffTableEval (basePieces eps) (u / 7) = (p7, s7 * (u / 7) + t7)) (hlevel : lowerCutoff p d.quota = level) (hnext : lowerCutoff p (d.quota + 1) = next) (hquota : compactQuotaDataConditions eps lo hi d) (hpar : d.logTwo % 2 = p) (htrial : compactTrialConditions lo hi p p5 p7 level next s t s5 t5 s7 t7) : baseStepValid eps u := by obtain ⟨hlog, hq⟩ := compactQuotaConditions_sound hquota hlo hhi have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = p := by rw [hlog]; exact hpar obtain ⟨ht, hav⟩ := compactTrialConditions_sound hlo hhi hlevel hnext htrial unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_preferred hq hpreferred hav, ht] · simpa only [hq] using hav end Bounty end SubmissionComponent_BaseIntervalCutoff /- Component PolicyBaseIntervalsCompact; SHA256 a8bddfd75ebc14e9afb6194b944e9d20e96dabd19ded50b8bffa8fcd91896d6e -/ section SubmissionComponent_PolicyBaseIntervalsCompact namespace Bounty def baseIvlLo {L lo u : ℚ} (h : lo ≤ L) (hu : L ≤ u) : lo ≤ u := le_trans h hu def baseIvlHi {H hi u : ℚ} (h : H ≤ hi) (hu : u < H) : u < hi := lt_of_lt_of_le hu h def baseIvlLo5 {L lo u : ℚ} (h : lo * 5 ≤ L) (hu : L ≤ u) : lo ≤ u / 5 := (le_div_iff₀ (by norm_num)).2 (le_trans h hu) def baseIvlHi5 {H hi u : ℚ} (h : H ≤ hi * 5) (hu : u < H) : u / 5 < hi := (div_lt_iff₀ (by norm_num)).2 (lt_of_lt_of_le hu h) def baseIvlLo7 {L lo u : ℚ} (h : lo * 7 ≤ L) (hu : L ≤ u) : lo ≤ u / 7 := (le_div_iff₀ (by norm_num)).2 (le_trans h hu) def baseIvlHi7 {H hi u : ℚ} (h : H ≤ hi * 7) (hu : u < H) : u / 7 < hi := (div_lt_iff₀ (by norm_num)).2 (lt_of_lt_of_le hu h) def baseInterval_0_0 {u : ℚ} (hlo : 1 ≤ u) (hhi : u < (4 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_1 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨0, 0, 1, 1, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_1 baseLower_0_2 all_goals decide +kernel def baseInterval_0_1 {u : ℚ} (hlo : (4 / 3) ≤ u) (hhi : u < (9 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_2 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨0, 0, 1, 1, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_1 baseLower_0_2 all_goals decide +kernel def baseInterval_0_2 {u : ℚ} (hlo : (9 / 5) ≤ u) (hhi : u < 2) : baseStepValid false u := by have hp := baseTable_eval_0_2 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨0, 0, 1, 1, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_1 baseLower_0_2 all_goals decide +kernel def baseInterval_0_3 {u : ℚ} (hlo : 2 ≤ u) (hhi : u < (12 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_3 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 0, 2, 2, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_0_4 {u : ℚ} (hlo : (12 / 5) ≤ u) (hhi : u < (8 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_3 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 0, 2, 2, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_0_5 {u : ℚ} (hlo : (8 / 3) ≤ u) (hhi : u < 3) : baseStepValid false u := by have hp := baseTable_eval_0_4 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 0, 2, 2, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_0_6 {u : ℚ} (hlo : 3 ≤ u) (hhi : u < (16 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_4 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 1, 2, 2, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_0_7 {u : ℚ} (hlo : (16 / 5) ≤ u) (hhi : u < 4) : baseStepValid false u := by have hp := baseTable_eval_0_4 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 1, 2, 2, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_0_8 {u : ℚ} (hlo : 4 ≤ u) (hhi : u < 5) : baseStepValid false u := by have hp := baseTable_eval_0_5 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_0_9 {u : ℚ} (hlo : 5 ≤ u) (hhi : u < (16 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_5 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_1 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_0_10 {u : ℚ} (hlo : (16 / 3) ≤ u) (hhi : u < (27 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_1 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_0_11 {u : ℚ} (hlo : (27 / 5) ≤ u) (hhi : u < 6) : baseStepValid false u := by have hp := baseTable_eval_0_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_1 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_0_12 {u : ℚ} (hlo : 6 ≤ u) (hhi : u < (20 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_1 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_0_13 {u : ℚ} (hlo : (20 / 3) ≤ u) (hhi : u < 7) : baseStepValid false u := by have hp := baseTable_eval_0_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_0_14 {u : ℚ} (hlo : 7 ≤ u) (hhi : u < (36 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_0_15 {u : ℚ} (hlo : (36 / 5) ≤ u) (hhi : u < 8) : baseStepValid false u := by have hp := baseTable_eval_0_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_0_16 {u : ℚ} (hlo : 8 ≤ u) (hhi : u < (80 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_7 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 1, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_17 {u : ℚ} (hlo : (80 / 9) ≤ u) (hhi : u < 9) : baseStepValid false u := by have hp := baseTable_eval_0_8 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 1, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_18 {u : ℚ} (hlo : 9 ≤ u) (hhi : u < (28 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_8 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_19 {u : ℚ} (hlo : (28 / 3) ≤ u) (hhi : u < 10) : baseStepValid false u := by have hp := baseTable_eval_0_8 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_20 {u : ℚ} (hlo : 10 ≤ u) (hhi : u < (32 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_9 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_3 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_21 {u : ℚ} (hlo : (32 / 3) ≤ u) (hhi : u < (64 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_10 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_3 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_22 {u : ℚ} (hlo : (64 / 5) ≤ u) (hhi : u < (40 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_10 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_3 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_23 {u : ℚ} (hlo : (40 / 3) ≤ u) (hhi : u < 14) : baseStepValid false u := by have hp := baseTable_eval_0_10 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_24 {u : ℚ} (hlo : 14 ≤ u) (hhi : u < 16) : baseStepValid false u := by have hp := baseTable_eval_0_10 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_0_25 {u : ℚ} (hlo : 16 ≤ u) (hhi : u < (81 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_11 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_26 {u : ℚ} (hlo : (81 / 5) ≤ u) (hhi : u < (0xa0 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_11 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_27 {u : ℚ} (hlo : (0xa0 / 9) ≤ u) (hhi : u < 18) : baseStepValid false u := by have hp := baseTable_eval_0_12 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_28 {u : ℚ} (hlo : 18 ≤ u) (hhi : u < (56 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_12 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_29 {u : ℚ} (hlo : (56 / 3) ≤ u) (hhi : u < 20) : baseStepValid false u := by have hp := baseTable_eval_0_12 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_30 {u : ℚ} (hlo : 20 ≤ u) (hhi : u < (64 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_13 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_5 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_31 {u : ℚ} (hlo : (64 / 3) ≤ u) (hhi : u < (0x6c / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_14 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_5 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_32 {u : ℚ} (hlo : (0x6c / 5) ≤ u) (hhi : u < (80 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_14 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_5 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_33 {u : ℚ} (hlo : (80 / 3) ≤ u) (hhi : u < 27) : baseStepValid false u := by have hp := baseTable_eval_0_14 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_0_34 {u : ℚ} (hlo : 27 ≤ u) (hhi : u < 28) : baseStepValid false u := by have hp := baseTable_eval_0_15 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_6 baseLower_0_7 all_goals decide +kernel def baseInterval_0_35 {u : ℚ} (hlo : 28 ≤ u) (hhi : u < 32) : baseStepValid false u := by have hp := baseTable_eval_0_15 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_5 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_6 baseLower_0_7 all_goals decide +kernel def baseInterval_0_36 {u : ℚ} (hlo : 32 ≤ u) (hhi : u < (0x140 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_16 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_5 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_37 {u : ℚ} (hlo : (0x140 / 9) ≤ u) (hhi : u < (0x70 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_17 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_5 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_38 {u : ℚ} (hlo : (0x70 / 3) ≤ u) (hhi : u < 40) : baseStepValid false u := by have hp := baseTable_eval_0_17 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_39 {u : ℚ} (hlo : 40 ≤ u) (hhi : u < (0x80 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_18 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_7 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_40 {u : ℚ} (hlo : (0x80 / 3) ≤ u) (hhi : u < (0x190 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_7 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_41 {u : ℚ} (hlo : (0x190 / 9) ≤ u) (hhi : u < (0xf3 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_8 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_42 {u : ℚ} (hlo : (0xf3 / 5) ≤ u) (hhi : u < 50) : baseStepValid false u := by have hp := baseTable_eval_0_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_8 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_43 {u : ℚ} (hlo : 50 ≤ u) (hhi : u < (0x100 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_9 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_44 {u : ℚ} (hlo : (0x100 / 5) ≤ u) (hhi : u < (0xa0 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_9 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_45 {u : ℚ} (hlo : (0xa0 / 3) ≤ u) (hhi : u < 54) : baseStepValid false u := by have hp := baseTable_eval_0_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_0_46 {u : ℚ} (hlo : 54 ≤ u) (hhi : u < 56) : baseStepValid false u := by have hp := baseTable_eval_0_20 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_7 baseLower_1_8 all_goals decide +kernel def baseInterval_0_47 {u : ℚ} (hlo : 56 ≤ u) (hhi : u < (0x230 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_20 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_7 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_7 baseLower_1_8 all_goals decide +kernel def baseInterval_0_48 {u : ℚ} (hlo : (0x230 / 9) ≤ u) (hhi : u < 64) : baseStepValid false u := by have hp := baseTable_eval_0_20 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_8 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_7 baseLower_1_8 all_goals decide +kernel def baseInterval_0_49 {u : ℚ} (hlo : 64 ≤ u) (hhi : u < (0x144 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_21 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_8 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_0_50 {u : ℚ} (hlo : (0x144 / 5) ≤ u) (hhi : u < 70) : baseStepValid false u := by have hp := baseTable_eval_0_21 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_8 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_0_51 {u : ℚ} (hlo : 70 ≤ u) (hhi : u < (0x280 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_21 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_9 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_0_52 {u : ℚ} (hlo : (0x280 / 9) ≤ u) (hhi : u < (0xe0 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_22 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_9 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_0_53 {u : ℚ} (hlo : (0xe0 / 3) ≤ u) (hhi : u < 80) : baseStepValid false u := by have hp := baseTable_eval_0_22 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_0_54 {u : ℚ} (hlo : 80 ≤ u) (hhi : u < 81) : baseStepValid false u := by have hp := baseTable_eval_0_23 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_11 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_0_55 {u : ℚ} (hlo : 81 ≤ u) (hhi : u < (0x320 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_24 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_11 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_0_56 {u : ℚ} (hlo : (0x320 / 9) ≤ u) (hhi : u < 0x64) : baseStepValid false u := by have hp := baseTable_eval_0_24 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_12 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_0_57 {u : ℚ} (hlo : 0x64 ≤ u) (hhi : u < (0x140 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_24 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_13 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_0_58 {u : ℚ} (hlo : (0x140 / 3) ≤ u) (hhi : u < 0x6c) : baseStepValid false u := by have hp := baseTable_eval_0_24 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_0_59 {u : ℚ} (hlo : 0x6c ≤ u) (hhi : u < 0x70) : baseStepValid false u := by have hp := baseTable_eval_0_25 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_0_60 {u : ℚ} (hlo : 0x70 ≤ u) (hhi : u < (0x460 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_25 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_11 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_0_61 {u : ℚ} (hlo : (0x460 / 9) ≤ u) (hhi : u < 0x80) : baseStepValid false u := by have hp := baseTable_eval_0_25 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_12 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_0_62 {u : ℚ} (hlo : 0x80 ≤ u) (hhi : u < 0x87) : baseStepValid false u := by have hp := baseTable_eval_0_26 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_12 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_8 baseLower_1_9 all_goals decide +kernel def baseInterval_0_63 {u : ℚ} (hlo : 0x87 ≤ u) (hhi : u < 0x8c) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_27 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_12 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 8 := by simp [quotaValue, hrank] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, (9 / 10) * (u / 7) + 0) = 0 * u + 0x6c := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inr (Or.inr (Or.inl (by norm_num <;> ring))) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, (9 / 10) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, (9 / 10) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, (9 / 10) * (u / 7) + 0) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_64 {u : ℚ} (hlo : 0x8c ≤ u) (hhi : u < 0x90) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_27 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_13 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 8 := by simp [quotaValue, hrank] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) = 0 * u + 0x6c := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inr (Or.inr (Or.inl (by norm_num <;> ring))) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_65 {u : ℚ} (hlo : 0x90 ≤ u) (hhi : u < (0x2d9 / 5)) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_28 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_13 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 8 := by simp [quotaValue, hrank] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_66 {u : ℚ} (hlo : (0x2d9 / 5) ≤ u) (hhi : u < (0x1c0 / 3)) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_28 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_13 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 8 := by simp [quotaValue, hrank] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_67 {u : ℚ} (hlo : (0x1c0 / 3) ≤ u) (hhi : u < 0xa0) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_28 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_14 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 8 := by simp [quotaValue, hrank] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, (3 / 4) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, (3 / 4) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, (3 / 4) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, (3 / 4) * (u / 7) + 0) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_68 {u : ℚ} (hlo : 0xa0 ≤ u) (hhi : u < 0xa2) : baseStepValid false u := by have hp := baseTable_eval_0_29 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_16 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_14 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 8, 8, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_8 baseLower_1_9 all_goals decide +kernel def baseInterval_0_69 {u : ℚ} (hlo : 0xa2 ≤ u) (hhi : u < (0x640 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_16 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_14 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_70 {u : ℚ} (hlo : (0x640 / 9) ≤ u) (hhi : u < 0xbd) : baseStepValid false u := by have hp := baseTable_eval_0_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_17 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_14 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_71 {u : ℚ} (hlo : 0xbd ≤ u) (hhi : u < (0x3cc / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_17 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_72 {u : ℚ} (hlo : (0x3cc / 5) ≤ u) (hhi : u < 0xc8) : baseStepValid false u := by have hp := baseTable_eval_0_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_17 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_73 {u : ℚ} (hlo : 0xc8 ≤ u) (hhi : u < (0x400 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_18 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_74 {u : ℚ} (hlo : (0x400 / 5) ≤ u) (hhi : u < (0x280 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_18 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_75 {u : ℚ} (hlo : (0x280 / 3) ≤ u) (hhi : u < 0xd8) : baseStepValid false u := by have hp := baseTable_eval_0_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_76 {u : ℚ} (hlo : 0xd8 ≤ u) (hhi : u < 0xe0) : baseStepValid false u := by have hp := baseTable_eval_0_31 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_77 {u : ℚ} (hlo : 0xe0 ≤ u) (hhi : u < 0xf3) : baseStepValid false u := by have hp := baseTable_eval_0_31 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_16 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_78 {u : ℚ} (hlo : 0xf3 ≤ u) (hhi : u < (0x8c0 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_31 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_16 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 5, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_79 {u : ℚ} (hlo : (0x8c0 / 9) ≤ u) (hhi : u < 0x100) : baseStepValid false u := by have hp := baseTable_eval_0_31 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_17 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 5, 9, 9, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_0_80 {u : ℚ} (hlo : 0x100 ≤ u) (hhi : u < 0x118) : baseStepValid false u := by have hp := baseTable_eval_0_32 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_17 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_81 {u : ℚ} (hlo : 0x118 ≤ u) (hhi : u < (0xa00 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_32 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_18 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_82 {u : ℚ} (hlo : (0xa00 / 9) ≤ u) (hhi : u < (0x380 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_33 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_18 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_83 {u : ℚ} (hlo : (0x380 / 3) ≤ u) (hhi : u < 0x140) : baseStepValid false u := by have hp := baseTable_eval_0_33 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_84 {u : ℚ} (hlo : 0x140 ≤ u) (hhi : u < (0x400 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_34 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_20 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_85 {u : ℚ} (hlo : (0x400 / 3) ≤ u) (hhi : u < (0xc80 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_35 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_20 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_86 {u : ℚ} (hlo : (0xc80 / 9) ≤ u) (hhi : u < 0x17a) : baseStepValid false u := by have hp := baseTable_eval_0_35 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_21 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_87 {u : ℚ} (hlo : 0x17a ≤ u) (hhi : u < 0x190) : baseStepValid false u := by have hp := baseTable_eval_0_36 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_21 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_20 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_88 {u : ℚ} (hlo : 0x190 ≤ u) (hhi : u < 0x195) : baseStepValid false u := by have hp := baseTable_eval_0_36 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_22 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_20 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_89 {u : ℚ} (hlo : 0x195 ≤ u) (hhi : u < 0x1b0) : baseStepValid false u := by have hp := baseTable_eval_0_36 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_20 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_90 {u : ℚ} (hlo : 0x1b0 ≤ u) (hhi : u < (0x88b / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_20 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_91 {u : ℚ} (hlo : (0x88b / 5) ≤ u) (hhi : u < 0x1c0) : baseStepValid false u := by have hp := baseTable_eval_0_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_20 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_92 {u : ℚ} (hlo : 0x1c0 ≤ u) (hhi : u < 0x1e6) : baseStepValid false u := by have hp := baseTable_eval_0_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_21 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_93 {u : ℚ} (hlo : 0x1e6 ≤ u) (hhi : u < (0x1180 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_21 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_94 {u : ℚ} (hlo : (0x1180 / 9) ≤ u) (hhi : u < 0x200) : baseStepValid false u := by have hp := baseTable_eval_0_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_22 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_0_95 {u : ℚ} (hlo : 0x200 ≤ u) (hhi : u < 0x21c) : baseStepValid false u := by have hp := baseTable_eval_0_38 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_22 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_96 {u : ℚ} (hlo : 0x21c ≤ u) (hhi : u < 0x230) : baseStepValid false u := by have hp := baseTable_eval_0_38 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_22 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_97 {u : ℚ} (hlo : 0x230 ≤ u) (hhi : u < 0x237) : baseStepValid false u := by have hp := baseTable_eval_0_38 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_23 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_98 {u : ℚ} (hlo : 0x237 ≤ u) (hhi : u < (0x1400 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_38 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_99 {u : ℚ} (hlo : (0x1400 / 9) ≤ u) (hhi : u < (0xb64 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_39 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_100 {u : ℚ} (hlo : (0xb64 / 5) ≤ u) (hhi : u < 0x280) : baseStepValid false u := by have hp := baseTable_eval_0_39 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_101 {u : ℚ} (hlo : 0x280 ≤ u) (hhi : u < 0x2a3) : baseStepValid false u := by have hp := baseTable_eval_0_40 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_25 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_102 {u : ℚ} (hlo : 0x2a3 ≤ u) (hhi : u < 0x2d0) : baseStepValid false u := by have hp := baseTable_eval_0_41 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_26 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_103 {u : ℚ} (hlo : 0x2d0 ≤ u) (hhi : u < 0x2d9) : baseStepValid false u := by have hp := baseTable_eval_0_42 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_27 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_104 {u : ℚ} (hlo : 0x2d9 ≤ u) (hhi : u < 0x2f4) : baseStepValid false u := by have hp := baseTable_eval_0_42 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_27 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_105 {u : ℚ} (hlo : 0x2f4 ≤ u) (hhi : u < 0x320) : baseStepValid false u := by have hp := baseTable_eval_0_42 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_27 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_25 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_106 {u : ℚ} (hlo : 0x320 ≤ u) (hhi : u < 0x32a) : baseStepValid false u := by have hp := baseTable_eval_0_43 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_28 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_25 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_107 {u : ℚ} (hlo : 0x32a ≤ u) (hhi : u < (0x1000 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_44 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_25 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_108 {u : ℚ} (hlo : (0x1000 / 5) ≤ u) (hhi : u < 0x360) : baseStepValid false u := by have hp := baseTable_eval_0_44 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_25 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_109 {u : ℚ} (hlo : 0x360 ≤ u) (hhi : u < 0x380) : baseStepValid false u := by have hp := baseTable_eval_0_45 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_25 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_110 {u : ℚ} (hlo : 0x380 ≤ u) (hhi : u < 0x3b1) : baseStepValid false u := by have hp := baseTable_eval_0_45 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_26 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_111 {u : ℚ} (hlo : 0x3b1 ≤ u) (hhi : u < 0x3f0) : baseStepValid false u := by have hp := baseTable_eval_0_45 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_27 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_112 {u : ℚ} (hlo : 0x3f0 ≤ u) (hhi : u < 0x400) : baseStepValid false u := by have hp := baseTable_eval_0_45 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_28 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_0_113 {u : ℚ} (hlo : 0x400 ≤ u) (hhi : u < 0x438) : baseStepValid false u := by have hp := baseTable_eval_0_46 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_28 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_114 {u : ℚ} (hlo : 0x438 ≤ u) (hhi : u < 0x460) : baseStepValid false u := by have hp := baseTable_eval_0_46 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_30 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_28 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_115 {u : ℚ} (hlo : 0x460 ≤ u) (hhi : u < 0x46e) : baseStepValid false u := by have hp := baseTable_eval_0_46 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_30 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_29 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_116 {u : ℚ} (hlo : 0x46e ≤ u) (hhi : u < (0x2800 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_46 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_30 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_117 {u : ℚ} (hlo : (0x2800 / 9) ≤ u) (hhi : u < 0x500) : baseStepValid false u := by have hp := baseTable_eval_0_47 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_30 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_118 {u : ℚ} (hlo : 0x500 ≤ u) (hhi : u < (0x19a1 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_31 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_119 {u : ℚ} (hlo : (0x19a1 / 5) ≤ u) (hhi : u < (0x1000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_31 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_120 {u : ℚ} (hlo : (0x1000 / 3) ≤ u) (hhi : u < (0x3200 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_31 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_121 {u : ℚ} (hlo : (0x3200 / 9) ≤ u) (hhi : u < 0x5b2) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_32 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_122 {u : ℚ} (hlo : 0x5b2 ≤ u) (hhi : u < 0x5e8) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_32 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_123 {u : ℚ} (hlo : 0x5e8 ≤ u) (hhi : u < 0x640) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_32 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_31 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_124 {u : ℚ} (hlo : 0x640 ≤ u) (hhi : u < (0x1400 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_33 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_31 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_125 {u : ℚ} (hlo : (0x1400 / 3) ≤ u) (hhi : u < (0x222c / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_34 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_31 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_126 {u : ℚ} (hlo : (0x222c / 5) ≤ u) (hhi : u < 0x700) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_34 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_31 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_127 {u : ℚ} (hlo : 0x700 ≤ u) (hhi : u < (0x4600 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_34 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_32 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_128 {u : ℚ} (hlo : (0x4600 / 9) ≤ u) (hhi : u < 0x7e9) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_34 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_33 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_129 {u : ℚ} (hlo : 0x7e9 ≤ u) (hhi : u < 0x800) : baseStepValid false u := by have hp := baseTable_eval_0_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_35 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_33 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_0_130 {u : ℚ} (hlo : 0x800 ≤ u) (hhi : u < 0x870) : baseStepValid false u := by have hp := baseTable_eval_0_50 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_35 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_33 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 6, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_131 {u : ℚ} (hlo : 0x870 ≤ u) (hhi : u < 0x88b) : baseStepValid false u := by have hp := baseTable_eval_0_50 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_33 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 6, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_132 {u : ℚ} (hlo : 0x88b ≤ u) (hhi : u < 0x8c0) : baseStepValid false u := by have hp := baseTable_eval_0_50 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_33 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_133 {u : ℚ} (hlo : 0x8c0 ≤ u) (hhi : u < (0x5000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_50 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_34 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_134 {u : ℚ} (hlo : (0x5000 / 9) ≤ u) (hhi : u < (0x1c00 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_51 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_34 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_135 {u : ℚ} (hlo : (0x1c00 / 3) ≤ u) (hhi : u < 0xa00) : baseStepValid false u := by have hp := baseTable_eval_0_51 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_35 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_136 {u : ℚ} (hlo : 0xa00 ≤ u) (hhi : u < 0xa56) : baseStepValid false u := by have hp := baseTable_eval_0_52 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_37 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_35 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_137 {u : ℚ} (hlo : 0xa56 ≤ u) (hhi : u < (0x2000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_52 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_37 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_36 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_138 {u : ℚ} (hlo : (0x2000 / 3) ≤ u) (hhi : u < (0x6400 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_53 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_37 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_36 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_139 {u : ℚ} (hlo : (0x6400 / 9) ≤ u) (hhi : u < 0xbd0) : baseStepValid false u := by have hp := baseTable_eval_0_53 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_38 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_36 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_140 {u : ℚ} (hlo : 0xbd0 ≤ u) (hhi : u < 0xc80) : baseStepValid false u := by have hp := baseTable_eval_0_53 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_38 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_37 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_141 {u : ℚ} (hlo : 0xc80 ≤ u) (hhi : u < (0x4000 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_53 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_39 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_37 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_142 {u : ℚ} (hlo : (0x4000 / 5) ≤ u) (hhi : u < 0xd2f) : baseStepValid false u := by have hp := baseTable_eval_0_53 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_39 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_37 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_143 {u : ℚ} (hlo : 0xd2f ≤ u) (hhi : u < 0xd80) : baseStepValid false u := by have hp := baseTable_eval_0_54 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_40 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_37 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_144 {u : ℚ} (hlo : 0xd80 ≤ u) (hhi : u < 0xe00) : baseStepValid false u := by have hp := baseTable_eval_0_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_40 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_37 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_145 {u : ℚ} (hlo : 0xe00 ≤ u) (hhi : u < 0xe10) : baseStepValid false u := by have hp := baseTable_eval_0_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_40 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_146 {u : ℚ} (hlo : 0xe10 ≤ u) (hhi : u < (0x4ce3 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_41 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_147 {u : ℚ} (hlo : (0x4ce3 / 5) ≤ u) (hhi : u < (0x8c00 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_41 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_148 {u : ℚ} (hlo : (0x8c00 / 9) ≤ u) (hhi : u < 0xfa0) : baseStepValid false u := by have hp := baseTable_eval_0_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_41 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_39 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_149 {u : ℚ} (hlo : 0xfa0 ≤ u) (hhi : u < 0xfd2) : baseStepValid false u := by have hp := baseTable_eval_0_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_42 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_39 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_150 {u : ℚ} (hlo : 0xfd2 ≤ u) (hhi : u < 0x1000) : baseStepValid false u := by have hp := baseTable_eval_0_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_43 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_39 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_0_151 {u : ℚ} (hlo : 0x1000 ≤ u) (hhi : u < 0x10e0) : baseStepValid false u := by have hp := baseTable_eval_0_56 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_43 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_39 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_152 {u : ℚ} (hlo : 0x10e0 ≤ u) (hhi : u < 0x1116) : baseStepValid false u := by have hp := baseTable_eval_0_56 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_39 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_153 {u : ℚ} (hlo : 0x1116 ≤ u) (hhi : u < 0x1180) : baseStepValid false u := by have hp := baseTable_eval_0_56 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_39 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_154 {u : ℚ} (hlo : 0x1180 ≤ u) (hhi : u < (0xa000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_56 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_40 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_155 {u : ℚ} (hlo : (0xa000 / 9) ≤ u) (hhi : u < 0x1275) : baseStepValid false u := by have hp := baseTable_eval_0_57 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_40 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_156 {u : ℚ} (hlo : 0x1275 ≤ u) (hhi : u < 0x13b0) : baseStepValid false u := by have hp := baseTable_eval_0_57 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_41 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_157 {u : ℚ} (hlo : 0x13b0 ≤ u) (hhi : u < 0x1400) : baseStepValid false u := by have hp := baseTable_eval_0_57 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_42 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_158 {u : ℚ} (hlo : 0x1400 ≤ u) (hhi : u < (0x6684 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_58 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_42 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_159 {u : ℚ} (hlo : (0x6684 / 5) ≤ u) (hhi : u < (0x23000 / 27)) : baseStepValid false u := by have hp := baseTable_eval_0_58 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_42 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_160 {u : ℚ} (hlo : (0x23000 / 27) ≤ u) (hhi : u < 0x15e0) : baseStepValid false u := by have hp := baseTable_eval_0_59 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_42 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_161 {u : ℚ} (hlo : 0x15e0 ≤ u) (hhi : u < 0x1626) : baseStepValid false u := by have hp := baseTable_eval_0_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_43 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_162 {u : ℚ} (hlo : 0x1626 ≤ u) (hhi : u < (0xc800 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_44 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_163 {u : ℚ} (hlo : (0xc800 / 9) ≤ u) (hhi : u < 0x17a0) : baseStepValid false u := by have hp := baseTable_eval_0_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_46 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_44 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_164 {u : ℚ} (hlo : 0x17a0 ≤ u) (hhi : u < 0x1900) : baseStepValid false u := by have hp := baseTable_eval_0_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_46 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_45 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_165 {u : ℚ} (hlo : 0x1900 ≤ u) (hhi : u < 0x19a1) : baseStepValid false u := by have hp := baseTable_eval_0_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_47 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_45 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_0_166 {u : ℚ} (hlo : 0x19a1 ≤ u) (hhi : u < (0x5000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_61 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_47 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_45 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_15 baseLower_0_16 all_goals decide +kernel def baseInterval_0_167 {u : ℚ} (hlo : (0x5000 / 3) ≤ u) (hhi : u < 0x1c00) : baseStepValid false u := by have hp := baseTable_eval_0_61 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_45 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_15 baseLower_0_16 all_goals decide +kernel def baseInterval_0_168 {u : ℚ} (hlo : 0x1c00 ≤ u) (hhi : u < (0x11800 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_61 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_46 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_15 baseLower_0_16 all_goals decide +kernel def baseInterval_0_169 {u : ℚ} (hlo : (0x11800 / 9) ≤ u) (hhi : u < 0x2000) : baseStepValid false u := by have hp := baseTable_eval_0_61 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_47 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_15 baseLower_0_16 all_goals decide +kernel def baseInterval_0_170 {u : ℚ} (hlo : 0x2000 ≤ u) (hhi : u < 0x2300) : baseStepValid false u := by have hp := baseTable_eval_0_62 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_47 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_171 {u : ℚ} (hlo : 0x2300 ≤ u) (hhi : u < (0x14000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_62 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_172 {u : ℚ} (hlo : (0x14000 / 9) ≤ u) (hhi : u < (0x7000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_63 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_173 {u : ℚ} (hlo : (0x7000 / 3) ≤ u) (hhi : u < 0x2800) : baseStepValid false u := by have hp := baseTable_eval_0_63 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_174 {u : ℚ} (hlo : 0x2800 ≤ u) (hhi : u < (0x8000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_49 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_175 {u : ℚ} (hlo : (0x8000 / 3) ≤ u) (hhi : u < (0x19000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_65 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_49 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_176 {u : ℚ} (hlo : (0x19000 / 9) ≤ u) (hhi : u < (0xe6a9 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_65 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_50 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_177 {u : ℚ} (hlo : (0xe6a9 / 5) ≤ u) (hhi : u < 0x3200) : baseStepValid false u := by have hp := baseTable_eval_0_65 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_50 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_178 {u : ℚ} (hlo : 0x3200 ≤ u) (hhi : u < (0x10000 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_65 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_51 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_179 {u : ℚ} (hlo : (0x10000 / 5) ≤ u) (hhi : u < 0x3342) : baseStepValid false u := by have hp := baseTable_eval_0_65 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_51 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_0_180 {u : ℚ} (hlo : 0x3342 ≤ u) (hhi : u < (0xa000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_51 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_16 baseLower_1_17 all_goals decide +kernel def baseInterval_0_181 {u : ℚ} (hlo : (0xa000 / 3) ≤ u) (hhi : u < 0x3800) : baseStepValid false u := by have hp := baseTable_eval_0_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_16 baseLower_1_17 all_goals decide +kernel def baseInterval_0_182 {u : ℚ} (hlo : 0x3800 ≤ u) (hhi : u < (0x1338c / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_50 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_16 baseLower_1_17 all_goals decide +kernel def baseInterval_0_183 {u : ℚ} (hlo : (0x1338c / 5) ≤ u) (hhi : u < (0x23000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_50 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_16 baseLower_1_17 all_goals decide +kernel def baseInterval_0_184 {u : ℚ} (hlo : (0x23000 / 9) ≤ u) (hhi : u < 0x4000) : baseStepValid false u := by have hp := baseTable_eval_0_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_51 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_16 baseLower_1_17 all_goals decide +kernel def baseInterval_0_185 {u : ℚ} (hlo : 0x4000 ≤ u) (hhi : u < 0x41eb) : baseStepValid false u := by have hp := baseTable_eval_0_67 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_51 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_0_186 {u : ℚ} (hlo : 0x41eb ≤ u) (hhi : u < 0x4380) : baseStepValid false u := by have hp := baseTable_eval_0_67 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_53 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_51 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_0_187 {u : ℚ} (hlo : 0x4380 ≤ u) (hhi : u < 0x4600) : baseStepValid false u := by have hp := baseTable_eval_0_67 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_51 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_0_188 {u : ℚ} (hlo : 0x4600 ≤ u) (hhi : u < (0x28000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_67 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_52 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_0_189 {u : ℚ} (hlo : (0x28000 / 9) ≤ u) (hhi : u < (0xe000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_68 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_52 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_0_190 {u : ℚ} (hlo : (0xe000 / 3) ≤ u) (hhi : u < 0x4ce3) : baseStepValid false u := by have hp := baseTable_eval_0_68 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_53 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_0_191 {u : ℚ} (hlo : 0x4ce3 ≤ u) (hhi : u < 0x5000) : baseStepValid false u := by have hp := baseTable_eval_0_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_53 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_192 {u : ℚ} (hlo : 0x5000 ≤ u) (hhi : u < (0x32000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_55 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_53 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_193 {u : ℚ} (hlo : (0x32000 / 9) ≤ u) (hhi : u < 0x5c49) : baseStepValid false u := by have hp := baseTable_eval_0_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_56 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_53 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_194 {u : ℚ} (hlo : 0x5c49 ≤ u) (hhi : u < 0x5e80) : baseStepValid false u := by have hp := baseTable_eval_0_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_56 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_54 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_195 {u : ℚ} (hlo : 0x5e80 ≤ u) (hhi : u < 0x6400) : baseStepValid false u := by have hp := baseTable_eval_0_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_56 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_55 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_196 {u : ℚ} (hlo : 0x6400 ≤ u) (hhi : u < 0x6684) : baseStepValid false u := by have hp := baseTable_eval_0_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_57 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_55 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_197 {u : ℚ} (hlo : 0x6684 ≤ u) (hhi : u < (0xaf000 / 27)) : baseStepValid false u := by have hp := baseTable_eval_0_70 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_57 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_55 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_198 {u : ℚ} (hlo : (0xaf000 / 27) ≤ u) (hhi : u < 0x6d60) : baseStepValid false u := by have hp := baseTable_eval_0_70 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_58 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_55 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_199 {u : ℚ} (hlo : 0x6d60 ≤ u) (hhi : u < 0x7000) : baseStepValid false u := by have hp := baseTable_eval_0_70 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_59 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_55 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_200 {u : ℚ} (hlo : 0x7000 ≤ u) (hhi : u < (0x46000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_70 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_59 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_56 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_201 {u : ℚ} (hlo : (0x46000 / 9) ≤ u) (hhi : u < 0x8000) : baseStepValid false u := by have hp := baseTable_eval_0_70 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_59 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_57 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_0_202 {u : ℚ} (hlo : 0x8000 ≤ u) (hhi : u < 0x8025) : baseStepValid false u := by have hp := baseTable_eval_0_71 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_59 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_57 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 17, 17, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_17 baseLower_1_18 all_goals decide +kernel def baseInterval_0_203 {u : ℚ} (hlo : 0x8025 ≤ u) (hhi : u < 0x88b0) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_72 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_57 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 17 := by simp [quotaValue, hrank] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) = 0 * u + 0x6684 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inr (Or.inr (Or.inl (by norm_num <;> ring))) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_204 {u : ℚ} (hlo : 0x88b0 ≤ u) (hhi : u < (0x2b3fb / 5)) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_57 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 17 := by simp [quotaValue, hrank] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_205 {u : ℚ} (hlo : (0x2b3fb / 5) ≤ u) (hhi : u < 0x8c00) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_57 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 17 := by simp [quotaValue, hrank] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_206 {u : ℚ} (hlo : 0x8c00 ≤ u) (hhi : u < (0xf5000 / 27)) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_58 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 17 := by simp [quotaValue, hrank] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, 0 * (u / 7) + 0x1000) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, 0 * (u / 7) + 0x1000) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, 0 * (u / 7) + 0x1000) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, 0 * (u / 7) + 0x1000) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_207 {u : ℚ} (hlo : (0xf5000 / 27) ≤ u) (hhi : u < 0x9920) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_59 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 17 := by simp [quotaValue, hrank] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (27 / 35) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (27 / 35) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (27 / 35) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (27 / 35) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_208 {u : ℚ} (hlo : 0x9920 ≤ u) (hhi : u < 0x99c6) : baseStepValid false u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_0_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hquota : quotaValue false u = 17 := by simp [quotaValue, hrank] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (3 / 4) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (3 / 4) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (3 / 4) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (3 / 4) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_0_209 {u : ℚ} (hlo : 0x99c6 ≤ u) (hhi : u < 0xa000) : baseStepValid false u := by have hp := baseTable_eval_0_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_210 {u : ℚ} (hlo : 0xa000 ≤ u) (hhi : u < (0x64000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_61 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_211 {u : ℚ} (hlo : (0x64000 / 9) ≤ u) (hhi : u < 0xb367) : baseStepValid false u := by have hp := baseTable_eval_0_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_62 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_212 {u : ℚ} (hlo : 0xb367 ≤ u) (hhi : u < (0x39aa4 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_62 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_61 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_213 {u : ℚ} (hlo : (0x39aa4 / 5) ≤ u) (hhi : u < 0xc800) : baseStepValid false u := by have hp := baseTable_eval_0_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_62 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_61 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_214 {u : ℚ} (hlo : 0xc800 ≤ u) (hhi : u < (0x40000 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_63 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_61 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_215 {u : ℚ} (hlo : (0x40000 / 5) ≤ u) (hhi : u < 0xcd08) : baseStepValid false u := by have hp := baseTable_eval_0_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_63 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_61 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_216 {u : ℚ} (hlo : 0xcd08 ≤ u) (hhi : u < (0x28000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_75 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_63 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_61 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_217 {u : ℚ} (hlo : (0x28000 / 3) ≤ u) (hhi : u < 0xe000) : baseStepValid false u := by have hp := baseTable_eval_0_75 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_61 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_218 {u : ℚ} (hlo : 0xe000 ≤ u) (hhi : u < 0xe6a9) : baseStepValid false u := by have hp := baseTable_eval_0_75 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_62 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_219 {u : ℚ} (hlo : 0xe6a9 ≤ u) (hhi : u < (0x8c000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_75 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_62 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 10, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_220 {u : ℚ} (hlo : (0x8c000 / 9) ≤ u) (hhi : u < 0x10000) : baseStepValid false u := by have hp := baseTable_eval_0_75 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_63 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 10, 18, 18, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_0_221 {u : ℚ} (hlo : 0x10000 ≤ u) (hhi : u < 0x11800) : baseStepValid false u := by have hp := baseTable_eval_0_76 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_63 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_222 {u : ℚ} (hlo : 0x11800 ≤ u) (hhi : u < (0xa0000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_76 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_223 {u : ℚ} (hlo : (0xa0000 / 9) ≤ u) (hhi : u < (0x38000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_77 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_224 {u : ℚ} (hlo : (0x38000 / 3) ≤ u) (hhi : u < 0x1338c) : baseStepValid false u := by have hp := baseTable_eval_0_77 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_65 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_225 {u : ℚ} (hlo : 0x1338c ≤ u) (hhi : u < 0x14000) : baseStepValid false u := by have hp := baseTable_eval_0_78 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_65 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_65 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_226 {u : ℚ} (hlo : 0x14000 ≤ u) (hhi : u < (0x40000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_79 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_66 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_65 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_227 {u : ℚ} (hlo : (0x40000 / 3) ≤ u) (hhi : u < (0xc8000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_80 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_66 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_65 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_228 {u : ℚ} (hlo : (0xc8000 / 9) ≤ u) (hhi : u < 0x166ce) : baseStepValid false u := by have hp := baseTable_eval_0_80 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_67 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_65 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_229 {u : ℚ} (hlo : 0x166ce ≤ u) (hhi : u < 0x1806f) : baseStepValid false u := by have hp := baseTable_eval_0_81 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_67 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_66 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_230 {u : ℚ} (hlo : 0x1806f ≤ u) (hhi : u < 0x19a10) : baseStepValid false u := by have hp := baseTable_eval_0_81 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_66 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_231 {u : ℚ} (hlo : 0x19a10 ≤ u) (hhi : u < (0x81bf1 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_66 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_232 {u : ℚ} (hlo : (0x81bf1 / 5) ≤ u) (hhi : u < 0x1c000) : baseStepValid false u := by have hp := baseTable_eval_0_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_66 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_233 {u : ℚ} (hlo : 0x1c000 ≤ u) (hhi : u < 0x1cd52) : baseStepValid false u := by have hp := baseTable_eval_0_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_67 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_234 {u : ℚ} (hlo : 0x1cd52 ≤ u) (hhi : u < (0x118000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_67 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_235 {u : ℚ} (hlo : (0x118000 / 9) ≤ u) (hhi : u < 0x20000) : baseStepValid false u := by have hp := baseTable_eval_0_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_0_236 {u : ℚ} (hlo : 0x20000 ≤ u) (hhi : u < 0x20094) : baseStepValid false u := by have hp := baseTable_eval_0_83 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_237 {u : ℚ} (hlo : 0x20094 ≤ u) (hhi : u < 0x21a35) : baseStepValid false u := by have hp := baseTable_eval_0_83 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_69 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_238 {u : ℚ} (hlo : 0x21a35 ≤ u) (hhi : u < (0xacfec / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_83 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_69 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_239 {u : ℚ} (hlo : (0xacfec / 5) ≤ u) (hhi : u < (0x140000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_83 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_69 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_240 {u : ℚ} (hlo : (0x140000 / 9) ≤ u) (hhi : u < 0x28000) : baseStepValid false u := by have hp := baseTable_eval_0_84 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_69 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_241 {u : ℚ} (hlo : 0x28000 ≤ u) (hhi : u < 0x280b9) : baseStepValid false u := by have hp := baseTable_eval_0_85 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_70 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_242 {u : ℚ} (hlo : 0x280b9 ≤ u) (hhi : u < 0x2ab70) : baseStepValid false u := by have hp := baseTable_eval_0_86 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_71 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_243 {u : ℚ} (hlo : 0x2ab70 ≤ u) (hhi : u < 0x2b3fb) : baseStepValid false u := by have hp := baseTable_eval_0_87 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_72 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_244 {u : ℚ} (hlo : 0x2b3fb ≤ u) (hhi : u < 0x2cd9c) : baseStepValid false u := by have hp := baseTable_eval_0_87 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_72 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_245 {u : ℚ} (hlo : 0x2cd9c ≤ u) (hhi : u < 0x300de) : baseStepValid false u := by have hp := baseTable_eval_0_87 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_72 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_70 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_246 {u : ℚ} (hlo : 0x300de ≤ u) (hhi : u < (0x100000 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_88 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_70 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_247 {u : ℚ} (hlo : (0x100000 / 5) ≤ u) (hhi : u < 0x33420) : baseStepValid false u := by have hp := baseTable_eval_0_88 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_70 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_248 {u : ℚ} (hlo : 0x33420 ≤ u) (hhi : u < 0x38000) : baseStepValid false u := by have hp := baseTable_eval_0_89 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_70 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_249 {u : ℚ} (hlo : 0x38000 ≤ u) (hhi : u < 0x38103) : baseStepValid false u := by have hp := baseTable_eval_0_89 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_71 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_250 {u : ℚ} (hlo : 0x38103 ≤ u) (hhi : u < 0x3bcd0) : baseStepValid false u := by have hp := baseTable_eval_0_89 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_72 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_251 {u : ℚ} (hlo : 0x3bcd0 ≤ u) (hhi : u < 0x40000) : baseStepValid false u := by have hp := baseTable_eval_0_89 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_0_252 {u : ℚ} (hlo : 0x40000 ≤ u) (hhi : u < 0x40128) : baseStepValid false u := by have hp := baseTable_eval_0_90 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_253 {u : ℚ} (hlo : 0x40128 ≤ u) (hhi : u < 0x4346a) : baseStepValid false u := by have hp := baseTable_eval_0_90 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_74 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_254 {u : ℚ} (hlo : 0x4346a ≤ u) (hhi : u < (0x280000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_90 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_74 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_255 {u : ℚ} (hlo : (0x280000 / 9) ≤ u) (hhi : u < (0x1853d3 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_91 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_74 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_256 {u : ℚ} (hlo : (0x1853d3 / 5) ≤ u) (hhi : u < 0x50000) : baseStepValid false u := by have hp := baseTable_eval_0_91 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_74 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_257 {u : ℚ} (hlo : 0x50000 ≤ u) (hhi : u < (0x100000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_92 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_75 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_258 {u : ℚ} (hlo : (0x100000 / 3) ≤ u) (hhi : u < 0x567f6) : baseStepValid false u := by have hp := baseTable_eval_0_93 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_75 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_259 {u : ℚ} (hlo : 0x567f6 ≤ u) (hhi : u < (0x320000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_93 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_75 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_260 {u : ℚ} (hlo : (0x320000 / 9) ≤ u) (hhi : u < 0x59b38) : baseStepValid false u := by have hp := baseTable_eval_0_93 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_76 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_261 {u : ℚ} (hlo : 0x59b38 ≤ u) (hhi : u < 0x601bc) : baseStepValid false u := by have hp := baseTable_eval_0_93 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_76 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_75 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_262 {u : ℚ} (hlo : 0x601bc ≤ u) (hhi : u < 0x64000) : baseStepValid false u := by have hp := baseTable_eval_0_94 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_77 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_75 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_263 {u : ℚ} (hlo : 0x64000 ≤ u) (hhi : u < (0x206fc4 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_78 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_75 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_264 {u : ℚ} (hlo : (0x206fc4 / 5) ≤ u) (hhi : u < (0x140000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_78 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_75 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_265 {u : ℚ} (hlo : (0x140000 / 3) ≤ u) (hhi : u < 0x70000) : baseStepValid false u := by have hp := baseTable_eval_0_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_79 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_75 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_266 {u : ℚ} (hlo : 0x70000 ≤ u) (hhi : u < 0x7822b) : baseStepValid false u := by have hp := baseTable_eval_0_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_79 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_76 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_267 {u : ℚ} (hlo : 0x7822b ≤ u) (hhi : u < (0x460000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_80 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_76 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_268 {u : ℚ} (hlo : (0x460000 / 9) ≤ u) (hhi : u < 0x80000) : baseStepValid false u := by have hp := baseTable_eval_0_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_80 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_77 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_0_269 {u : ℚ} (hlo : 0x80000 ≤ u) (hhi : u < 0x80250) : baseStepValid false u := by have hp := baseTable_eval_0_96 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_80 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_77 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 11, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_270 {u : ℚ} (hlo : 0x80250 ≤ u) (hhi : u < 0x81bf1) : baseStepValid false u := by have hp := baseTable_eval_0_96 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_77 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 11, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_271 {u : ℚ} (hlo : 0x81bf1 ≤ u) (hhi : u < 0x868d4) : baseStepValid false u := by have hp := baseTable_eval_0_96 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_77 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_272 {u : ℚ} (hlo : 0x868d4 ≤ u) (hhi : u < 0x8c000) : baseStepValid false u := by have hp := baseTable_eval_0_96 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_78 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_273 {u : ℚ} (hlo : 0x8c000 ≤ u) (hhi : u < (0x500000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_96 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_79 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_274 {u : ℚ} (hlo : (0x500000 / 9) ≤ u) (hhi : u < (0x1c0000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_97 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_79 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_275 {u : ℚ} (hlo : (0x1c0000 / 3) ≤ u) (hhi : u < 0x9cfa2) : baseStepValid false u := by have hp := baseTable_eval_0_97 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_80 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_276 {u : ℚ} (hlo : 0x9cfa2 ≤ u) (hhi : u < 0xa0000) : baseStepValid false u := by have hp := baseTable_eval_0_97 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_277 {u : ℚ} (hlo : 0xa0000 ≤ u) (hhi : u < (0x200000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_98 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_82 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_278 {u : ℚ} (hlo : (0x200000 / 3) ≤ u) (hhi : u < (0x640000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_99 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_82 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_279 {u : ℚ} (hlo : (0x640000 / 9) ≤ u) (hhi : u < 0xb3670) : baseStepValid false u := by have hp := baseTable_eval_0_99 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_83 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_280 {u : ℚ} (hlo : 0xb3670 ≤ u) (hhi : u < 0xc8000) : baseStepValid false u := by have hp := baseTable_eval_0_99 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_83 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_281 {u : ℚ} (hlo : 0xc8000 ≤ u) (hhi : u < 0xc839d) : baseStepValid false u := by have hp := baseTable_eval_0_99 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_84 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_282 {u : ℚ} (hlo : 0xc839d ≤ u) (hhi : u < (0x400000 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_100 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_85 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_283 {u : ℚ} (hlo : (0x400000 / 5) ≤ u) (hhi : u < 0xcd080) : baseStepValid false u := by have hp := baseTable_eval_0_100 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_85 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_284 {u : ℚ} (hlo : 0xcd080 ≤ u) (hhi : u < 0xd5930) : baseStepValid false u := by have hp := baseTable_eval_0_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_85 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_285 {u : ℚ} (hlo : 0xd5930 ≤ u) (hhi : u < 0xe0000) : baseStepValid false u := by have hp := baseTable_eval_0_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_86 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_286 {u : ℚ} (hlo : 0xe0000 ≤ u) (hhi : u < (0x48fb79 / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_86 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_83 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_287 {u : ℚ} (hlo : (0x48fb79 / 5) ≤ u) (hhi : u < 0xf0456) : baseStepValid false u := by have hp := baseTable_eval_0_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_86 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_83 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_288 {u : ℚ} (hlo : 0xf0456 ≤ u) (hhi : u < (0x8c0000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_87 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_83 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_289 {u : ℚ} (hlo : (0x8c0000 / 9) ≤ u) (hhi : u < 0x100000) : baseStepValid false u := by have hp := baseTable_eval_0_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_87 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_84 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_0_290 {u : ℚ} (hlo : 0x100000 ≤ u) (hhi : u < 0x1004a0) : baseStepValid false u := by have hp := baseTable_eval_0_102 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_87 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_84 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_291 {u : ℚ} (hlo : 0x1004a0 ≤ u) (hhi : u < 0x1037e2) : baseStepValid false u := by have hp := baseTable_eval_0_102 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_84 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_292 {u : ℚ} (hlo : 0x1037e2 ≤ u) (hhi : u < 0x118000) : baseStepValid false u := by have hp := baseTable_eval_0_102 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_84 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_293 {u : ℚ} (hlo : 0x118000 ≤ u) (hhi : u < 0x11850f) : baseStepValid false u := by have hp := baseTable_eval_0_102 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_85 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_294 {u : ℚ} (hlo : 0x11850f ≤ u) (hhi : u < (0xa00000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_102 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_86 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_295 {u : ℚ} (hlo : (0xa00000 / 9) ≤ u) (hhi : u < 0x12b010) : baseStepValid false u := by have hp := baseTable_eval_0_103 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_86 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_296 {u : ℚ} (hlo : 0x12b010 ≤ u) (hhi : u < (0x614f4c / 5)) : baseStepValid false u := by have hp := baseTable_eval_0_103 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_87 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_297 {u : ℚ} (hlo : (0x614f4c / 5) ≤ u) (hhi : u < 0x140000) : baseStepValid false u := by have hp := baseTable_eval_0_103 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_87 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_298 {u : ℚ} (hlo : 0x140000 ≤ u) (hhi : u < (0x2300000 / 27)) : baseStepValid false u := by have hp := baseTable_eval_0_104 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_89 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_87 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_299 {u : ℚ} (hlo : (0x2300000 / 27) ≤ u) (hhi : u < 0x150612) : baseStepValid false u := by have hp := baseTable_eval_0_105 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_89 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_87 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_300 {u : ℚ} (hlo : 0x150612 ≤ u) (hhi : u < (0x400000 / 3)) : baseStepValid false u := by have hp := baseTable_eval_0_106 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_89 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_88 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_301 {u : ℚ} (hlo : (0x400000 / 3) ≤ u) (hhi : u < (0xc80000 / 9)) : baseStepValid false u := by have hp := baseTable_eval_0_107 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_89 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_88 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_302 {u : ℚ} (hlo : (0xc80000 / 9) ≤ u) (hhi : u < 0x166ce0) : baseStepValid false u := by have hp := baseTable_eval_0_107 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_90 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_88 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_303 {u : ℚ} (hlo : 0x166ce0 ≤ u) (hhi : u < 0x1853d3) : baseStepValid false u := by have hp := baseTable_eval_0_107 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_90 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_89 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_0_304 {u : ℚ} (hlo : 0x1853d3 ≤ u) (hhi : u < 0x190000) : baseStepValid false u := by have hp := baseTable_eval_0_108 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_90 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_89 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 13, 24, 24, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_24 baseLower_0_25 all_goals decide +kernel def baseInterval_0_305 {u : ℚ} (hlo : 0x190000 ≤ u) (hhi : u < 0x1921ee) : baseStepValid false u := by have hp := baseTable_eval_0_108 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_91 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_0_89 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 13, 24, 24, 0, 0, 0, 0, false⟩ hlo hhi hp h5 h7 baseLower_0_24 baseLower_0_25 all_goals decide +kernel def baseInterval_1_0 {u : ℚ} (hlo : 1 ≤ u) (hhi : u < (4 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_1 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨0, 0, 1, 1, 1, 1, 5, 7, false⟩ hlo hhi hp h5 h7 baseLower_0_1 baseLower_0_2 all_goals decide +kernel def baseInterval_1_1 {u : ℚ} (hlo : (4 / 3) ≤ u) (hhi : u < (9 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_2 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨0, 0, 1, 1, 1, 1, 6, 9, false⟩ hlo hhi hp h5 h7 baseLower_0_1 baseLower_0_2 all_goals decide +kernel def baseInterval_1_2 {u : ℚ} (hlo : (9 / 5) ≤ u) (hhi : u < 2) : baseStepValid true u := by have hp := baseTable_eval_1_2 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨0, 0, 1, 1, 1, 2, 9, 10, false⟩ hlo hhi hp h5 h7 baseLower_0_1 baseLower_0_2 all_goals decide +kernel def baseInterval_1_3 {u : ℚ} (hlo : 2 ≤ u) (hhi : u < (12 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_3 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 0, 2, 2, 1, 2, 10, 12, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_1_4 {u : ℚ} (hlo : (12 / 5) ≤ u) (hhi : u < (8 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_3 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 0, 2, 2, 1, 2, 12, 14, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_1_5 {u : ℚ} (hlo : (8 / 3) ≤ u) (hhi : u < 3) : baseStepValid true u := by have hp := baseTable_eval_1_4 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 0, 2, 2, 1, 2, 13, 15, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_1_6 {u : ℚ} (hlo : 3 ≤ u) (hhi : u < (16 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_4 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 1, 2, 2, 1, 2, 15, 16, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_1_7 {u : ℚ} (hlo : (16 / 5) ≤ u) (hhi : u < 4) : baseStepValid true u := by have hp := baseTable_eval_1_4 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨1, 1, 2, 2, 2, 2, 16, 20, false⟩ hlo hhi hp h5 h7 baseLower_1_2 baseLower_1_3 all_goals decide +kernel def baseInterval_1_8 {u : ℚ} (hlo : 4 ≤ u) (hhi : u < 5) : baseStepValid true u := by have hp := baseTable_eval_1_5 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_0 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 2, 2, 20, 25, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_1_9 {u : ℚ} (hlo : 5 ≤ u) (hhi : u < (16 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_5 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_1 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 2, 2, 25, 27, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_1_10 {u : ℚ} (hlo : (16 / 3) ≤ u) (hhi : u < (27 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_1 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 2, 2, 26, 27, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_1_11 {u : ℚ} (hlo : (27 / 5) ≤ u) (hhi : u < 6) : baseStepValid true u := by have hp := baseTable_eval_1_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_1 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 2, 3, 27, 30, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_1_12 {u : ℚ} (hlo : 6 ≤ u) (hhi : u < (20 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_1 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 2, 3, 30, 34, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_1_13 {u : ℚ} (hlo : (20 / 3) ≤ u) (hhi : u < 7) : baseStepValid true u := by have hp := baseTable_eval_1_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_0 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 2, 3, 33, 35, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_1_14 {u : ℚ} (hlo : 7 ≤ u) (hhi : u < (36 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 2, 3, 35, 36, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_1_15 {u : ℚ} (hlo : (36 / 5) ≤ u) (hhi : u < 8) : baseStepValid true u := by have hp := baseTable_eval_1_6 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨2, 1, 3, 3, 2, 3, 36, 40, false⟩ hlo hhi hp h5 h7 baseLower_0_3 baseLower_0_4 all_goals decide +kernel def baseInterval_1_16 {u : ℚ} (hlo : 8 ≤ u) (hhi : u < (80 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_7 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 1, 4, 4, 2, 3, 40, 45, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_17 {u : ℚ} (hlo : (80 / 9) ≤ u) (hhi : u < 9) : baseStepValid true u := by have hp := baseTable_eval_1_8 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 1, 4, 4, 2, 3, 44, 45, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_18 {u : ℚ} (hlo : 9 ≤ u) (hhi : u < (28 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_8 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_1 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 2, 3, 45, 47, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_19 {u : ℚ} (hlo : (28 / 3) ≤ u) (hhi : u < 10) : baseStepValid true u := by have hp := baseTable_eval_1_8 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_2 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 2, 3, 46, 50, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_20 {u : ℚ} (hlo : 10 ≤ u) (hhi : u < (32 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_9 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_3 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 2, 3, 50, 54, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_21 {u : ℚ} (hlo : (32 / 3) ≤ u) (hhi : u < (64 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_10 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_3 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 2, 3, 53, 64, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_22 {u : ℚ} (hlo : (64 / 5) ≤ u) (hhi : u < (40 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_10 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_3 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 3, 3, 64, 67, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_23 {u : ℚ} (hlo : (40 / 3) ≤ u) (hhi : u < 14) : baseStepValid true u := by have hp := baseTable_eval_1_10 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_2 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 3, 3, 66, 70, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_24 {u : ℚ} (hlo : 14 ≤ u) (hhi : u < 16) : baseStepValid true u := by have hp := baseTable_eval_1_10 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨3, 2, 4, 4, 3, 3, 70, 80, false⟩ hlo hhi hp h5 h7 baseLower_1_4 baseLower_1_5 all_goals decide +kernel def baseInterval_1_25 {u : ℚ} (hlo : 16 ≤ u) (hhi : u < (81 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_11 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 3, 80, 81, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_26 {u : ℚ} (hlo : (81 / 5) ≤ u) (hhi : u < (0xa0 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_11 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 4, 81, 89, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_27 {u : ℚ} (hlo : (0xa0 / 9) ≤ u) (hhi : u < 18) : baseStepValid true u := by have hp := baseTable_eval_1_12 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 4, 88, 90, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_28 {u : ℚ} (hlo : 18 ≤ u) (hhi : u < (56 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_12 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_3 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 4, 90, 94, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_29 {u : ℚ} (hlo : (56 / 3) ≤ u) (hhi : u < 20) : baseStepValid true u := by have hp := baseTable_eval_1_12 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_4 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 4, 93, 0x64, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_30 {u : ℚ} (hlo : 20 ≤ u) (hhi : u < (64 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_13 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_5 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 4, 0x64, 0x6b, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_31 {u : ℚ} (hlo : (64 / 3) ≤ u) (hhi : u < (0x6c / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_14 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_5 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 4, 0x6a, 0x6c, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_32 {u : ℚ} (hlo : (0x6c / 5) ≤ u) (hhi : u < (80 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_14 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_5 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 4, 0x6c, 0x86, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_33 {u : ℚ} (hlo : (80 / 3) ≤ u) (hhi : u < 27) : baseStepValid true u := by have hp := baseTable_eval_1_14 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 2, 5, 5, 3, 4, 0x85, 0x87, false⟩ hlo hhi hp h5 h7 baseLower_0_5 baseLower_0_6 all_goals decide +kernel def baseInterval_1_34 {u : ℚ} (hlo : 27 ≤ u) (hhi : u < 28) : baseStepValid true u := by have hp := baseTable_eval_1_15 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_4 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 3, 6, 6, 3, 4, 0x87, 0x8c, false⟩ hlo hhi hp h5 h7 baseLower_0_6 baseLower_0_7 all_goals decide +kernel def baseInterval_1_35 {u : ℚ} (hlo : 28 ≤ u) (hhi : u < 32) : baseStepValid true u := by have hp := baseTable_eval_1_15 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_5 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨4, 3, 6, 6, 3, 4, 0x8c, 0xa0, false⟩ hlo hhi hp h5 h7 baseLower_0_6 baseLower_0_7 all_goals decide +kernel def baseInterval_1_36 {u : ℚ} (hlo : 32 ≤ u) (hhi : u < (0x140 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_16 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_5 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 3, 4, 0xa0, 0xb2, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_37 {u : ℚ} (hlo : (0x140 / 9) ≤ u) (hhi : u < (0x70 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_17 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_5 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 3, 4, 0xb1, 0xbb, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_38 {u : ℚ} (hlo : (0x70 / 3) ≤ u) (hhi : u < 40) : baseStepValid true u := by have hp := baseTable_eval_1_17 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_6 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 3, 4, 0xba, 0xc8, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_39 {u : ℚ} (hlo : 40 ≤ u) (hhi : u < (0x80 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_18 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_7 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 3, 4, 0xc8, 0xd6, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_40 {u : ℚ} (hlo : (0x80 / 3) ≤ u) (hhi : u < (0x190 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_7 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 3, 4, 0xd5, 0xdf, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_41 {u : ℚ} (hlo : (0x190 / 9) ≤ u) (hhi : u < (0xf3 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_8 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 3, 4, 0xde, 0xf3, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_42 {u : ℚ} (hlo : (0xf3 / 5) ≤ u) (hhi : u < 50) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_8 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 3, 5, 0xf3, 0xfa, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_43 {u : ℚ} (hlo : 50 ≤ u) (hhi : u < (0x100 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_9 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 3, 5, 0xfa, 0x100, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_44 {u : ℚ} (hlo : (0x100 / 5) ≤ u) (hhi : u < (0xa0 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_9 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 4, 5, 0x100, 0x10b, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_45 {u : ℚ} (hlo : (0xa0 / 3) ≤ u) (hhi : u < 54) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 6, 6, 4, 5, 0x10a, 0x10e, false⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_46 {u : ℚ} (hlo : 54 ≤ u) (hhi : u < 56) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_6 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 7, 6, 4, 5, 0x10e, 0x118, true⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_47 {u : ℚ} (hlo : 56 ≤ u) (hhi : u < (0x230 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_7 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 7, 6, 4, 5, 0x118, 0x138, true⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_48 {u : ℚ} (hlo : (0x230 / 9) ≤ u) (hhi : u < 64) : baseStepValid true u := by have hp := baseTable_eval_1_19 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_8 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨5, 3, 7, 6, 4, 5, 0x137, 0x140, true⟩ hlo hhi hp h5 h7 baseLower_1_6 baseLower_1_7 all_goals decide +kernel def baseInterval_1_49 {u : ℚ} (hlo : 64 ≤ u) (hhi : u < (0x144 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_20 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_8 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 4, 5, 0x140, 0x144, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_1_50 {u : ℚ} (hlo : (0x144 / 5) ≤ u) (hhi : u < 70) : baseStepValid true u := by have hp := baseTable_eval_1_20 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_8 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 4, 5, 0x144, 0x15e, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_1_51 {u : ℚ} (hlo : 70 ≤ u) (hhi : u < (0x280 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_20 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_9 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 4, 5, 0x15e, 0x164, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_1_52 {u : ℚ} (hlo : (0x280 / 9) ≤ u) (hhi : u < (0xe0 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_21 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_9 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 4, 5, 0x163, 0x176, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_1_53 {u : ℚ} (hlo : (0xe0 / 3) ≤ u) (hhi : u < 80) : baseStepValid true u := by have hp := baseTable_eval_1_21 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_10 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 4, 5, 0x175, 0x190, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_1_54 {u : ℚ} (hlo : 80 ≤ u) (hhi : u < 81) : baseStepValid true u := by have hp := baseTable_eval_1_22 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_11 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 3, 7, 7, 4, 5, 0x190, 0x195, false⟩ hlo hhi hp h5 h7 baseLower_0_7 baseLower_0_8 all_goals decide +kernel def baseInterval_1_55 {u : ℚ} (hlo : 81 ≤ u) (hhi : u < (0x320 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_23 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_11 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 4, 5, 0x195, 0x1bd, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_1_56 {u : ℚ} (hlo : (0x320 / 9) ≤ u) (hhi : u < 0x64) : baseStepValid true u := by have hp := baseTable_eval_1_23 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_12 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 4, 5, 0x1bc, 0x1f4, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_1_57 {u : ℚ} (hlo : 0x64 ≤ u) (hhi : u < (0x140 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_23 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_13 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 4, 5, 0x1f4, 0x216, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_1_58 {u : ℚ} (hlo : (0x140 / 3) ≤ u) (hhi : u < 0x6c) : baseStepValid true u := by have hp := baseTable_eval_1_23 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 4, 5, 0x215, 0x21c, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_1_59 {u : ℚ} (hlo : 0x6c ≤ u) (hhi : u < 0x70) : baseStepValid true u := by have hp := baseTable_eval_1_24 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_10 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 4, 5, 0x21c, 0x230, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_1_60 {u : ℚ} (hlo : 0x70 ≤ u) (hhi : u < (0x460 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_24 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_11 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 4, 5, 0x230, 0x26f, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_1_61 {u : ℚ} (hlo : (0x460 / 9) ≤ u) (hhi : u < 0x80) : baseStepValid true u := by have hp := baseTable_eval_1_24 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_12 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨6, 4, 8, 8, 4, 5, 0x26e, 0x280, false⟩ hlo hhi hp h5 h7 baseLower_0_8 baseLower_0_9 all_goals decide +kernel def baseInterval_1_62 {u : ℚ} (hlo : 0x80 ≤ u) (hhi : u < 0x87) : baseStepValid true u := by have hp := baseTable_eval_1_25 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_14 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_12 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 8, 8, 4, 5, 0x280, 0x2a3, false⟩ hlo hhi hp h5 h7 baseLower_1_8 baseLower_1_9 all_goals decide +kernel def baseInterval_1_63 {u : ℚ} (hlo : 0x87 ≤ u) (hhi : u < 0x8c) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_26 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_12 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 5 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2a3 ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2bc := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 8 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, (9 / 10) * (u / 7) + 0) = 0 * u + 0x6c := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inr (Or.inr (Or.inl (by norm_num <;> ring))) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, (9 / 10) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, (9 / 10) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, (9 / 10) * (u / 7) + 0) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_64 {u : ℚ} (hlo : 0x8c ≤ u) (hhi : u < 0x90) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_26 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_13 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 5 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2bc ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2d0 := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 8 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) = 0 * u + 0x6c := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inr (Or.inr (Or.inl (by norm_num <;> ring))) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_65 {u : ℚ} (hlo : 0x90 ≤ u) (hhi : u < (0x2d9 / 5)) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_27 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_13 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 5 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2d0 ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2d9 := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 8 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_66 {u : ℚ} (hlo : (0x2d9 / 5) ≤ u) (hhi : u < (0x1c0 / 3)) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_27 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_13 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 6 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2d9 ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2eb := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 8 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, 0 * (u / 7) + 16) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_67 {u : ℚ} (hlo : (0x1c0 / 3) ≤ u) (hhi : u < 0xa0) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_27 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_15 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_14 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 7 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 8 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0xa2 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 4 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 6 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2ea ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x320 := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 8 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 8 0 (0, 0 * (u / 5) + 27) (0, (3 / 4) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_8] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 8 0 (0, 0 * (u / 5) + 27) (0, (3 / 4) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_9] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 8 1 (0, 0 * (u / 5) + 27) (0, (3 / 4) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 8 1 (0, 0 * (u / 5) + 27) (0, (3 / 4) * (u / 7) + 0) rw [baseLower_1_8] at hl unfold cutoffAvailable at hv rw [baseLower_1_9] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_68 {u : ℚ} (hlo : 0xa0 ≤ u) (hhi : u < 0xa2) : baseStepValid true u := by have hp := baseTable_eval_1_28 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_16 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_14 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 8, 8, 4, 6, 0x320, 0x32a, false⟩ hlo hhi hp h5 h7 baseLower_1_8 baseLower_1_9 all_goals decide +kernel def baseInterval_1_69 {u : ℚ} (hlo : 0xa2 ≤ u) (hhi : u < (0x640 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_29 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_16 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_14 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 4, 6, 0x32a, 0x379, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_70 {u : ℚ} (hlo : (0x640 / 9) ≤ u) (hhi : u < 0xbd) : baseStepValid true u := by have hp := baseTable_eval_1_29 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_17 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_14 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 4, 6, 0x378, 0x3b1, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_71 {u : ℚ} (hlo : 0xbd ≤ u) (hhi : u < (0x3cc / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_29 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_17 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 4, 6, 0x3b1, 0x3cc, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_72 {u : ℚ} (hlo : (0x3cc / 5) ≤ u) (hhi : u < 0xc8) : baseStepValid true u := by have hp := baseTable_eval_1_29 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_17 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 4, 6, 0x3cc, 0x3e8, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_73 {u : ℚ} (hlo : 0xc8 ≤ u) (hhi : u < (0x400 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_29 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_18 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 4, 6, 0x3e8, 0x400, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_74 {u : ℚ} (hlo : (0x400 / 5) ≤ u) (hhi : u < (0x280 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_29 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_18 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 5, 6, 0x400, 0x42b, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_75 {u : ℚ} (hlo : (0x280 / 3) ≤ u) (hhi : u < 0xd8) : baseStepValid true u := by have hp := baseTable_eval_1_29 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 5, 6, 0x42a, 0x438, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_76 {u : ℚ} (hlo : 0xd8 ≤ u) (hhi : u < 0xe0) : baseStepValid true u := by have hp := baseTable_eval_1_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_15 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 5, 6, 0x438, 0x460, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_77 {u : ℚ} (hlo : 0xe0 ≤ u) (hhi : u < 0xf3) : baseStepValid true u := by have hp := baseTable_eval_1_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_16 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 4, 9, 9, 5, 6, 0x460, 0x4bf, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_78 {u : ℚ} (hlo : 0xf3 ≤ u) (hhi : u < (0x8c0 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_16 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 5, 9, 9, 5, 6, 0x4bf, 0x4dd, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_79 {u : ℚ} (hlo : (0x8c0 / 9) ≤ u) (hhi : u < 0x100) : baseStepValid true u := by have hp := baseTable_eval_1_30 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_17 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨7, 5, 9, 9, 5, 6, 0x4dc, 0x500, false⟩ hlo hhi hp h5 h7 baseLower_1_9 baseLower_1_10 all_goals decide +kernel def baseInterval_1_80 {u : ℚ} (hlo : 0x100 ≤ u) (hhi : u < 0x118) : baseStepValid true u := by have hp := baseTable_eval_1_31 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_17 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x500, 0x578, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_81 {u : ℚ} (hlo : 0x118 ≤ u) (hhi : u < (0xa00 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_31 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_18 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x578, 0x58f, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_82 {u : ℚ} (hlo : (0xa00 / 9) ≤ u) (hhi : u < (0x380 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_32 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_18 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x58e, 0x5d6, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_83 {u : ℚ} (hlo : (0x380 / 3) ≤ u) (hhi : u < 0x140) : baseStepValid true u := by have hp := baseTable_eval_1_32 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_19 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x5d5, 0x640, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_84 {u : ℚ} (hlo : 0x140 ≤ u) (hhi : u < (0x400 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_33 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_20 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x640, 0x6ab, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_85 {u : ℚ} (hlo : (0x400 / 3) ≤ u) (hhi : u < (0xc80 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_34 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_20 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x6aa, 0x6f2, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_86 {u : ℚ} (hlo : (0xc80 / 9) ≤ u) (hhi : u < 0x190) : baseStepValid true u := by have hp := baseTable_eval_1_34 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_21 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x6f1, 0x7d0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_87 {u : ℚ} (hlo : 0x190 ≤ u) (hhi : u < 0x195) : baseStepValid true u := by have hp := baseTable_eval_1_34 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_22 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x7d0, 0x7e9, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_88 {u : ℚ} (hlo : 0x195 ≤ u) (hhi : u < 0x1b0) : baseStepValid true u := by have hp := baseTable_eval_1_35 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x7e9, 0x870, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_89 {u : ℚ} (hlo : 0x1b0 ≤ u) (hhi : u < (0x88b / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_36 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 6, 0x870, 0x88b, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_90 {u : ℚ} (hlo : (0x88b / 5) ≤ u) (hhi : u < 0x1c0) : baseStepValid true u := by have hp := baseTable_eval_1_36 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_19 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 7, 0x88b, 0x8c0, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_91 {u : ℚ} (hlo : 0x1c0 ≤ u) (hhi : u < 0x1e6) : baseStepValid true u := by have hp := baseTable_eval_1_36 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_20 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 7, 0x8c0, 0x97e, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_92 {u : ℚ} (hlo : 0x1e6 ≤ u) (hhi : u < (0x1180 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_36 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_20 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 7, 0x97e, 0x9b9, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_93 {u : ℚ} (hlo : (0x1180 / 9) ≤ u) (hhi : u < 0x200) : baseStepValid true u := by have hp := baseTable_eval_1_36 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_21 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨8, 5, 10, 10, 5, 7, 0x9b8, 0xa00, false⟩ hlo hhi hp h5 h7 baseLower_0_10 baseLower_0_11 all_goals decide +kernel def baseInterval_1_94 {u : ℚ} (hlo : 0x200 ≤ u) (hhi : u < 0x21c) : baseStepValid true u := by have hp := baseTable_eval_1_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_23 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_21 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xa00, 0xa8c, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_95 {u : ℚ} (hlo : 0x21c ≤ u) (hhi : u < 0x230) : baseStepValid true u := by have hp := baseTable_eval_1_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_21 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xa8c, 0xaf0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_96 {u : ℚ} (hlo : 0x230 ≤ u) (hhi : u < 0x237) : baseStepValid true u := by have hp := baseTable_eval_1_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_22 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xaf0, 0xb13, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_97 {u : ℚ} (hlo : 0x237 ≤ u) (hhi : u < (0x1400 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_37 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_23 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xb13, 0xb1d, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_98 {u : ℚ} (hlo : (0x1400 / 9) ≤ u) (hhi : u < (0xb64 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_38 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_23 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xb1c, 0xb64, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_99 {u : ℚ} (hlo : (0xb64 / 5) ≤ u) (hhi : u < 0x280) : baseStepValid true u := by have hp := baseTable_eval_1_38 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_24 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_23 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xb64, 0xc80, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_100 {u : ℚ} (hlo : 0x280 ≤ u) (hhi : u < 0x2a3) : baseStepValid true u := by have hp := baseTable_eval_1_39 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_25 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_23 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xc80, 0xd2f, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_101 {u : ℚ} (hlo : 0x2a3 ≤ u) (hhi : u < 0x2d0) : baseStepValid true u := by have hp := baseTable_eval_1_40 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_26 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_23 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xd2f, 0xe10, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_102 {u : ℚ} (hlo : 0x2d0 ≤ u) (hhi : u < 0x2d9) : baseStepValid true u := by have hp := baseTable_eval_1_41 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_27 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_23 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 5, 11, 11, 5, 7, 0xe10, 0xe3d, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_103 {u : ℚ} (hlo : 0x2d9 ≤ u) (hhi : u < 0x2f4) : baseStepValid true u := by have hp := baseTable_eval_1_41 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_27 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_23 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 5, 7, 0xe3d, 0xec4, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_104 {u : ℚ} (hlo : 0x2f4 ≤ u) (hhi : u < 0x320) : baseStepValid true u := by have hp := baseTable_eval_1_41 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_27 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 5, 7, 0xec4, 0xfa0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_105 {u : ℚ} (hlo : 0x320 ≤ u) (hhi : u < 0x32a) : baseStepValid true u := by have hp := baseTable_eval_1_42 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_28 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 5, 7, 0xfa0, 0xfd2, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_106 {u : ℚ} (hlo : 0x32a ≤ u) (hhi : u < (0x1000 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_43 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 5, 7, 0xfd2, 0x1000, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_107 {u : ℚ} (hlo : (0x1000 / 5) ≤ u) (hhi : u < 0x360) : baseStepValid true u := by have hp := baseTable_eval_1_43 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 6, 7, 0x1000, 0x10e0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_108 {u : ℚ} (hlo : 0x360 ≤ u) (hhi : u < 0x380) : baseStepValid true u := by have hp := baseTable_eval_1_44 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_24 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 6, 7, 0x10e0, 0x1180, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_109 {u : ℚ} (hlo : 0x380 ≤ u) (hhi : u < 0x3b1) : baseStepValid true u := by have hp := baseTable_eval_1_44 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_25 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 6, 7, 0x1180, 0x1275, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_110 {u : ℚ} (hlo : 0x3b1 ≤ u) (hhi : u < 0x3f0) : baseStepValid true u := by have hp := baseTable_eval_1_44 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_26 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 6, 7, 0x1275, 0x13b0, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_111 {u : ℚ} (hlo : 0x3f0 ≤ u) (hhi : u < 0x400) : baseStepValid true u := by have hp := baseTable_eval_1_44 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_27 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨9, 6, 11, 11, 6, 7, 0x13b0, 0x1400, false⟩ hlo hhi hp h5 h7 baseLower_1_11 baseLower_1_12 all_goals decide +kernel def baseInterval_1_112 {u : ℚ} (hlo : 0x400 ≤ u) (hhi : u < 0x438) : baseStepValid true u := by have hp := baseTable_eval_1_45 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_29 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_27 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 7, 0x1400, 0x1518, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_113 {u : ℚ} (hlo : 0x438 ≤ u) (hhi : u < 0x460) : baseStepValid true u := by have hp := baseTable_eval_1_45 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_30 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_27 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 7, 0x1518, 0x15e0, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_114 {u : ℚ} (hlo : 0x460 ≤ u) (hhi : u < 0x46e) : baseStepValid true u := by have hp := baseTable_eval_1_45 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_30 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_28 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 7, 0x15e0, 0x1626, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_115 {u : ℚ} (hlo : 0x46e ≤ u) (hhi : u < (0x2800 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_45 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_30 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_29 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 7, 0x1626, 0x1639, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_116 {u : ℚ} (hlo : (0x2800 / 9) ≤ u) (hhi : u < 0x500) : baseStepValid true u := by have hp := baseTable_eval_1_46 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_30 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_29 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 7, 0x1638, 0x1900, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_117 {u : ℚ} (hlo : 0x500 ≤ u) (hhi : u < (0x19a1 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_47 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_31 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_29 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 7, 0x1900, 0x19a1, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_118 {u : ℚ} (hlo : (0x19a1 / 5) ≤ u) (hhi : u < (0x1000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_47 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_31 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_29 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x19a1, 0x1aab, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_119 {u : ℚ} (hlo : (0x1000 / 3) ≤ u) (hhi : u < (0x3200 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_31 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_29 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x1aaa, 0x1bc8, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_120 {u : ℚ} (hlo : (0x3200 / 9) ≤ u) (hhi : u < 0x5b2) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_32 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_29 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x1bc7, 0x1c7a, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_121 {u : ℚ} (hlo : 0x5b2 ≤ u) (hhi : u < 0x5e8) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_32 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_29 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x1c7a, 0x1d88, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_122 {u : ℚ} (hlo : 0x5e8 ≤ u) (hhi : u < 0x640) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_32 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x1d88, 0x1f40, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_123 {u : ℚ} (hlo : 0x640 ≤ u) (hhi : u < (0x1400 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_33 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x1f40, 0x2156, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_124 {u : ℚ} (hlo : (0x1400 / 3) ≤ u) (hhi : u < (0x222c / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_34 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x2155, 0x222c, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_125 {u : ℚ} (hlo : (0x222c / 5) ≤ u) (hhi : u < 0x700) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_34 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_30 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x222c, 0x2300, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_126 {u : ℚ} (hlo : 0x700 ≤ u) (hhi : u < (0x4600 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_34 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_31 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x2300, 0x26e4, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_127 {u : ℚ} (hlo : (0x4600 / 9) ≤ u) (hhi : u < 0x7e9) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_34 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_32 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x26e3, 0x278d, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_128 {u : ℚ} (hlo : 0x7e9 ≤ u) (hhi : u < 0x800) : baseStepValid true u := by have hp := baseTable_eval_1_48 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_35 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_32 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨10, 6, 12, 12, 6, 8, 0x278d, 0x2800, false⟩ hlo hhi hp h5 h7 baseLower_0_12 baseLower_0_13 all_goals decide +kernel def baseInterval_1_129 {u : ℚ} (hlo : 0x800 ≤ u) (hhi : u < 0x870) : baseStepValid true u := by have hp := baseTable_eval_1_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_35 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_32 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 6, 13, 13, 6, 8, 0x2800, 0x2a30, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_130 {u : ℚ} (hlo : 0x870 ≤ u) (hhi : u < 0x88b) : baseStepValid true u := by have hp := baseTable_eval_1_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_32 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 6, 13, 13, 6, 8, 0x2a30, 0x2ab7, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_131 {u : ℚ} (hlo : 0x88b ≤ u) (hhi : u < 0x8c0) : baseStepValid true u := by have hp := baseTable_eval_1_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_32 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x2ab7, 0x2bc0, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_132 {u : ℚ} (hlo : 0x8c0 ≤ u) (hhi : u < (0x5000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_49 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_33 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x2bc0, 0x2c72, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_133 {u : ℚ} (hlo : (0x5000 / 9) ≤ u) (hhi : u < (0x1c00 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_50 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_33 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x2c71, 0x2eab, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_134 {u : ℚ} (hlo : (0x1c00 / 3) ≤ u) (hhi : u < 0xa00) : baseStepValid true u := by have hp := baseTable_eval_1_50 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_36 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_34 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x2eaa, 0x3200, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_135 {u : ℚ} (hlo : 0xa00 ≤ u) (hhi : u < (0x2000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_51 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_37 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_34 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x3200, 0x3556, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_136 {u : ℚ} (hlo : (0x2000 / 3) ≤ u) (hhi : u < 0xb13) : baseStepValid true u := by have hp := baseTable_eval_1_52 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_37 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_34 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x3555, 0x375f, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_137 {u : ℚ} (hlo : 0xb13 ≤ u) (hhi : u < (0x6400 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_52 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_37 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_35 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x375f, 0x378f, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_138 {u : ℚ} (hlo : (0x6400 / 9) ≤ u) (hhi : u < 0xbd0) : baseStepValid true u := by have hp := baseTable_eval_1_52 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_38 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_35 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x378e, 0x3b10, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_139 {u : ℚ} (hlo : 0xbd0 ≤ u) (hhi : u < 0xc80) : baseStepValid true u := by have hp := baseTable_eval_1_52 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_38 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_36 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x3b10, 0x3e80, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_140 {u : ℚ} (hlo : 0xc80 ≤ u) (hhi : u < (0x4000 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_52 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_39 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_36 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 6, 8, 0x3e80, 0x4000, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_141 {u : ℚ} (hlo : (0x4000 / 5) ≤ u) (hhi : u < 0xd2f) : baseStepValid true u := by have hp := baseTable_eval_1_52 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_39 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_36 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 8, 0x4000, 0x41eb, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_142 {u : ℚ} (hlo : 0xd2f ≤ u) (hhi : u < 0xd80) : baseStepValid true u := by have hp := baseTable_eval_1_53 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_40 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_36 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 8, 0x41eb, 0x4380, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_143 {u : ℚ} (hlo : 0xd80 ≤ u) (hhi : u < 0xe00) : baseStepValid true u := by have hp := baseTable_eval_1_54 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_40 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_36 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 8, 0x4380, 0x4600, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_144 {u : ℚ} (hlo : 0xe00 ≤ u) (hhi : u < 0xe10) : baseStepValid true u := by have hp := baseTable_eval_1_54 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_40 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_37 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 8, 0x4600, 0x4650, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_145 {u : ℚ} (hlo : 0xe10 ≤ u) (hhi : u < (0x4ce3 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_54 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_41 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_37 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 8, 0x4650, 0x4ce3, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_146 {u : ℚ} (hlo : (0x4ce3 / 5) ≤ u) (hhi : u < (0x8c00 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_54 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_41 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_37 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 9, 0x4ce3, 0x4dc8, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_147 {u : ℚ} (hlo : (0x8c00 / 9) ≤ u) (hhi : u < 0xfa0) : baseStepValid true u := by have hp := baseTable_eval_1_54 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_41 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 9, 0x4dc7, 0x4e20, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_148 {u : ℚ} (hlo : 0xfa0 ≤ u) (hhi : u < 0xfd2) : baseStepValid true u := by have hp := baseTable_eval_1_54 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_42 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 9, 0x4e20, 0x4f1a, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_149 {u : ℚ} (hlo : 0xfd2 ≤ u) (hhi : u < 0x1000) : baseStepValid true u := by have hp := baseTable_eval_1_54 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_43 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨11, 7, 13, 13, 7, 9, 0x4f1a, 0x5000, false⟩ hlo hhi hp h5 h7 baseLower_1_13 baseLower_1_14 all_goals decide +kernel def baseInterval_1_150 {u : ℚ} (hlo : 0x1000 ≤ u) (hhi : u < 0x10e0) : baseStepValid true u := by have hp := baseTable_eval_1_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_43 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x5000, 0x5460, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_151 {u : ℚ} (hlo : 0x10e0 ≤ u) (hhi : u < 0x1116) : baseStepValid true u := by have hp := baseTable_eval_1_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x5460, 0x556e, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_152 {u : ℚ} (hlo : 0x1116 ≤ u) (hhi : u < 0x1180) : baseStepValid true u := by have hp := baseTable_eval_1_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_38 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x556e, 0x5780, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_153 {u : ℚ} (hlo : 0x1180 ≤ u) (hhi : u < (0xa000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_55 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_39 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x5780, 0x58e4, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_154 {u : ℚ} (hlo : (0xa000 / 9) ≤ u) (hhi : u < 0x1275) : baseStepValid true u := by have hp := baseTable_eval_1_56 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_39 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x58e3, 0x5c49, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_155 {u : ℚ} (hlo : 0x1275 ≤ u) (hhi : u < 0x13b0) : baseStepValid true u := by have hp := baseTable_eval_1_56 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_40 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x5c49, 0x6270, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_156 {u : ℚ} (hlo : 0x13b0 ≤ u) (hhi : u < 0x1400) : baseStepValid true u := by have hp := baseTable_eval_1_56 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_44 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_41 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x6270, 0x6400, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_157 {u : ℚ} (hlo : 0x1400 ≤ u) (hhi : u < (0x6684 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_57 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_41 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x6400, 0x6684, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_158 {u : ℚ} (hlo : (0x6684 / 5) ≤ u) (hhi : u < (0x23000 / 27)) : baseStepValid true u := by have hp := baseTable_eval_1_57 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_41 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x6684, 0x67b5, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_159 {u : ℚ} (hlo : (0x23000 / 27) ≤ u) (hhi : u < 0x15e0) : baseStepValid true u := by have hp := baseTable_eval_1_58 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_41 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x67b4, 0x6d60, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_160 {u : ℚ} (hlo : 0x15e0 ≤ u) (hhi : u < 0x1626) : baseStepValid true u := by have hp := baseTable_eval_1_59 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_42 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x6d60, 0x6ebe, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_161 {u : ℚ} (hlo : 0x1626 ≤ u) (hhi : u < (0xc800 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_59 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_45 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_43 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x6ebe, 0x6f1d, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_162 {u : ℚ} (hlo : (0xc800 / 9) ≤ u) (hhi : u < 0x17a0) : baseStepValid true u := by have hp := baseTable_eval_1_59 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_46 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_43 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x6f1c, 0x7620, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_163 {u : ℚ} (hlo : 0x17a0 ≤ u) (hhi : u < 0x1900) : baseStepValid true u := by have hp := baseTable_eval_1_59 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_46 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_44 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x7620, 0x7d00, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_164 {u : ℚ} (hlo : 0x1900 ≤ u) (hhi : u < 0x19a1) : baseStepValid true u := by have hp := baseTable_eval_1_59 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_47 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_44 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 7, 14, 14, 7, 9, 0x7d00, 0x8025, false⟩ hlo hhi hp h5 h7 baseLower_0_14 baseLower_0_15 all_goals decide +kernel def baseInterval_1_165 {u : ℚ} (hlo : 0x19a1 ≤ u) (hhi : u < (0x5000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_47 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_44 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 8, 15, 15, 7, 9, 0x8025, 0x8556, false⟩ hlo hhi hp h5 h7 baseLower_0_15 baseLower_0_16 all_goals decide +kernel def baseInterval_1_166 {u : ℚ} (hlo : (0x5000 / 3) ≤ u) (hhi : u < 0x1c00) : baseStepValid true u := by have hp := baseTable_eval_1_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_44 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 8, 15, 15, 7, 9, 0x8555, 0x8c00, false⟩ hlo hhi hp h5 h7 baseLower_0_15 baseLower_0_16 all_goals decide +kernel def baseInterval_1_167 {u : ℚ} (hlo : 0x1c00 ≤ u) (hhi : u < (0x11800 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_45 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 8, 15, 15, 7, 9, 0x8c00, 0x9b8f, false⟩ hlo hhi hp h5 h7 baseLower_0_15 baseLower_0_16 all_goals decide +kernel def baseInterval_1_168 {u : ℚ} (hlo : (0x11800 / 9) ≤ u) (hhi : u < 0x2000) : baseStepValid true u := by have hp := baseTable_eval_1_60 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_46 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨12, 8, 15, 15, 7, 9, 0x9b8e, 0xa000, false⟩ hlo hhi hp h5 h7 baseLower_0_15 baseLower_0_16 all_goals decide +kernel def baseInterval_1_169 {u : ℚ} (hlo : 0x2000 ≤ u) (hhi : u < 0x2300) : baseStepValid true u := by have hp := baseTable_eval_1_61 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_46 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 9, 0xa000, 0xaf00, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_170 {u : ℚ} (hlo : 0x2300 ≤ u) (hhi : u < (0x14000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_61 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_47 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 9, 0xaf00, 0xb1c8, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_171 {u : ℚ} (hlo : (0x14000 / 9) ≤ u) (hhi : u < (0x7000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_62 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_47 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 9, 0xb1c7, 0xbaab, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_172 {u : ℚ} (hlo : (0x7000 / 3) ≤ u) (hhi : u < 0x2800) : baseStepValid true u := by have hp := baseTable_eval_1_62 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_48 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 9, 0xbaaa, 0xc800, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_173 {u : ℚ} (hlo : 0x2800 ≤ u) (hhi : u < (0x8000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_63 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_49 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 9, 0xc800, 0xd556, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_174 {u : ℚ} (hlo : (0x8000 / 3) ≤ u) (hhi : u < (0x19000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_49 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 9, 0xd555, 0xde39, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_175 {u : ℚ} (hlo : (0x19000 / 9) ≤ u) (hhi : u < (0xe6a9 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_50 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 9, 0xde38, 0xe6a9, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_176 {u : ℚ} (hlo : (0xe6a9 / 5) ≤ u) (hhi : u < 0x3200) : baseStepValid true u := by have hp := baseTable_eval_1_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_50 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 10, 0xe6a9, 0xfa00, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_177 {u : ℚ} (hlo : 0x3200 ≤ u) (hhi : u < (0x10000 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_51 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 7, 10, 0xfa00, 0x10000, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_178 {u : ℚ} (hlo : (0x10000 / 5) ≤ u) (hhi : u < 0x3342) : baseStepValid true u := by have hp := baseTable_eval_1_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_51 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 15, 15, 8, 10, 0x10000, 0x1004a, false⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_179 {u : ℚ} (hlo : 0x3342 ≤ u) (hhi : u < (0xa000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_51 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 15, 8, 10, 0x1004a, 0x10aab, true⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_180 {u : ℚ} (hlo : (0xa000 / 3) ≤ u) (hhi : u < 0x3800) : baseStepValid true u := by have hp := baseTable_eval_1_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_48 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 15, 8, 10, 0x10aaa, 0x11800, true⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_181 {u : ℚ} (hlo : 0x3800 ≤ u) (hhi : u < (0x1338c / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_64 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 15, 8, 10, 0x11800, 0x1338c, true⟩ hlo hhi hp h5 h7 baseLower_1_15 baseLower_1_16 all_goals decide +kernel def baseInterval_1_182 {u : ℚ} (hlo : (0x1338c / 5) ≤ u) (hhi : u < (0x23000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_65 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_49 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 16, 8, 10, 0x1338c, 0x1371d, false⟩ hlo hhi hp h5 h7 baseLower_1_16 baseLower_1_17 all_goals decide +kernel def baseInterval_1_183 {u : ℚ} (hlo : (0x23000 / 9) ≤ u) (hhi : u < 0x4000) : baseStepValid true u := by have hp := baseTable_eval_1_65 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_50 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨13, 8, 16, 16, 8, 10, 0x1371c, 0x14000, false⟩ hlo hhi hp h5 h7 baseLower_1_16 baseLower_1_17 all_goals decide +kernel def baseInterval_1_184 {u : ℚ} (hlo : 0x4000 ≤ u) (hhi : u < 0x41eb) : baseStepValid true u := by have hp := baseTable_eval_1_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_52 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_50 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 8, 10, 0x14000, 0x14997, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_1_185 {u : ℚ} (hlo : 0x41eb ≤ u) (hhi : u < 0x4380) : baseStepValid true u := by have hp := baseTable_eval_1_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_53 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_50 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 8, 10, 0x14997, 0x15180, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_1_186 {u : ℚ} (hlo : 0x4380 ≤ u) (hhi : u < 0x4600) : baseStepValid true u := by have hp := baseTable_eval_1_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_50 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 8, 10, 0x15180, 0x15e00, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_1_187 {u : ℚ} (hlo : 0x4600 ≤ u) (hhi : u < (0x28000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_66 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_51 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 8, 10, 0x15e00, 0x1638f, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_1_188 {u : ℚ} (hlo : (0x28000 / 9) ≤ u) (hhi : u < (0xe000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_67 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_51 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 8, 10, 0x1638e, 0x17556, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_1_189 {u : ℚ} (hlo : (0xe000 / 3) ≤ u) (hhi : u < 0x4ce3) : baseStepValid true u := by have hp := baseTable_eval_1_67 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_52 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 8, 16, 16, 8, 10, 0x17555, 0x1806f, false⟩ hlo hhi hp h5 h7 baseLower_0_16 baseLower_0_17 all_goals decide +kernel def baseInterval_1_190 {u : ℚ} (hlo : 0x4ce3 ≤ u) (hhi : u < 0x5000) : baseStepValid true u := by have hp := baseTable_eval_1_68 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_54 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_52 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x1806f, 0x19000, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_191 {u : ℚ} (hlo : 0x5000 ≤ u) (hhi : u < (0x32000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_68 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_55 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_52 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x19000, 0x1bc72, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_192 {u : ℚ} (hlo : (0x32000 / 9) ≤ u) (hhi : u < 0x5c49) : baseStepValid true u := by have hp := baseTable_eval_1_68 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_56 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_52 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x1bc71, 0x1cd6d, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_193 {u : ℚ} (hlo : 0x5c49 ≤ u) (hhi : u < 0x5e80) : baseStepValid true u := by have hp := baseTable_eval_1_68 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_56 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_53 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x1cd6d, 0x1d880, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_194 {u : ℚ} (hlo : 0x5e80 ≤ u) (hhi : u < 0x6400) : baseStepValid true u := by have hp := baseTable_eval_1_68 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_56 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_54 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x1d880, 0x1f400, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_195 {u : ℚ} (hlo : 0x6400 ≤ u) (hhi : u < 0x6684) : baseStepValid true u := by have hp := baseTable_eval_1_68 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_57 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_54 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x1f400, 0x20094, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_196 {u : ℚ} (hlo : 0x6684 ≤ u) (hhi : u < (0xaf000 / 27)) : baseStepValid true u := by have hp := baseTable_eval_1_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_57 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_54 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x20094, 0x20685, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_197 {u : ℚ} (hlo : (0xaf000 / 27) ≤ u) (hhi : u < 0x6d60) : baseStepValid true u := by have hp := baseTable_eval_1_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_58 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_54 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x20684, 0x222e0, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_198 {u : ℚ} (hlo : 0x6d60 ≤ u) (hhi : u < 0x7000) : baseStepValid true u := by have hp := baseTable_eval_1_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_59 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_54 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x222e0, 0x23000, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_199 {u : ℚ} (hlo : 0x7000 ≤ u) (hhi : u < (0x46000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_59 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_55 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x23000, 0x26e39, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_200 {u : ℚ} (hlo : (0x46000 / 9) ≤ u) (hhi : u < 0x8000) : baseStepValid true u := by have hp := baseTable_eval_1_69 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_59 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_56 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨14, 9, 17, 17, 8, 10, 0x26e38, 0x28000, false⟩ hlo hhi hp h5 h7 baseLower_0_17 baseLower_0_18 all_goals decide +kernel def baseInterval_1_201 {u : ℚ} (hlo : 0x8000 ≤ u) (hhi : u < 0x8025) : baseStepValid true u := by have hp := baseTable_eval_1_70 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_59 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_56 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 17, 17, 8, 10, 0x28000, 0x280b9, false⟩ hlo hhi hp h5 h7 baseLower_1_17 baseLower_1_18 all_goals decide +kernel def baseInterval_1_202 {u : ℚ} (hlo : 0x8025 ≤ u) (hhi : u < 0x88b0) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_71 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_56 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 8 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 10 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x280b9 ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2ab70 := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 17 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) = 0 * u + 0x6684 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inr (Or.inr (Or.inl (by norm_num <;> ring))) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_203 {u : ℚ} (hlo : 0x88b0 ≤ u) (hhi : u < (0x2b3fb / 5)) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_72 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_56 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 8 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 10 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2ab70 ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2b3fb := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 17 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_204 {u : ℚ} (hlo : (0x2b3fb / 5) ≤ u) (hhi : u < 0x8c00) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_72 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_56 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 8 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 11 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2b3fb ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2bc00 := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 17 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (9 / 10) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_205 {u : ℚ} (hlo : 0x8c00 ≤ u) (hhi : u < (0xf5000 / 27)) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_72 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_57 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 8 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 11 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2bc00 ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2d5ee := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 17 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, 0 * (u / 7) + 0x1000) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, 0 * (u / 7) + 0x1000) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, 0 * (u / 7) + 0x1000) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, 0 * (u / 7) + 0x1000) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_206 {u : ℚ} (hlo : (0xf5000 / 27) ≤ u) (hhi : u < 0x9920) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_72 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_58 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 8 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 11 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2d5ed ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x2fda0 := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 17 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (27 / 35) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (27 / 35) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (27 / 35) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (27 / 35) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_207 {u : ℚ} (hlo : 0x9920 ≤ u) (hhi : u < 0x99c6) : baseStepValid true u := by have hu : 1 ≤ u := by linarith have hp := baseTable_eval_1_72 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_59 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) have hl2 : Nat.log 2 ⌊u⌋₊ = 15 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hl3 : Nat.log 3 ⌊u⌋₊ = 9 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hpreferred : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by rw [hl2] have hrank : smoothRankBound ⌊u⌋₊ = 17 := by rw [smoothRank_floor_of_indices hu hl2 hl3] have hd : ¬(0x99c6 : ℚ) ≤ u := by linarith norm_num [hd] have hb4 : Nat.log 4 ⌊5 * u⌋₊ = 8 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hb3 : Nat.log 3 ⌊5 * u⌋₊ = 11 := log_floor_of_bounds (by linarith) (by norm_num <;> linarith) (by norm_num <;> linarith) have hfl : 0x2fda0 ≤ ⌊5 * u⌋₊ := (Nat.le_floor_iff (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hfh : ⌊5 * u⌋₊ < 0x300de := (Nat.floor_lt (by linarith : 0 ≤ 5 * u)).mpr (by norm_num <;> linarith) have hbad : ¬badWindow ⌊5 * u⌋₊ := by rw [badWindow_iff_canonical, hb4, hb3] norm_num omega have hquota : quotaValue true u = 17 := by simp [quotaValue, hrank, hbad] have ht : cutoffTrial u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (3 / 4) * (u / 7) + 0) = (3 / 4) * u + 0 := by apply cutoffTrial_eq_of_bounds · linarith · rw [baseLower_0_17] <;> norm_num <;> linarith · norm_num <;> linarith · norm_num <;> linarith · exact Or.inl (by norm_num <;> ring) have hav : cutoffAvailable u 17 0 (0, 0 * (u / 5) + 0x19a1) (0, (3 / 4) * (u / 7) + 0) := by unfold cutoffAvailable rw [ht, baseLower_0_18] constructor <;> norm_num <;> linarith have hnot : ¬cutoffAvailable u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (3 / 4) * (u / 7) + 0) := by intro hv obtain ⟨hb, hl, hc5, hc7⟩ := cutoffTrial_bounds u 17 1 (0, 0 * (u / 5) + 0x19a1) (0, (3 / 4) * (u / 7) + 0) rw [baseLower_1_17] at hl unfold cutoffAvailable at hv rw [baseLower_1_18] at hv norm_num at hl hc5 hc7 hv linarith only [hlo, hhi, hb, hl, hc5, hc7, hv.1, hv.2] unfold baseStepValid rw [hp, h5, h7] constructor · rw [cutoffCandidate_eq_alternate hquota hpreferred hnot] norm_num only [Nat.reduceSub] rw [ht] · simpa only [hquota] using hav def baseInterval_1_208 {u : ℚ} (hlo : 0x99c6 ≤ u) (hhi : u < 0xa000) : baseStepValid true u := by have hp := baseTable_eval_1_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_60 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_59 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 8, 11, 0x300de, 0x32000, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_209 {u : ℚ} (hlo : 0xa000 ≤ u) (hhi : u < (0x64000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_61 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_59 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 8, 11, 0x32000, 0x378e4, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_210 {u : ℚ} (hlo : (0x64000 / 9) ≤ u) (hhi : u < 0xb367) : baseStepValid true u := by have hp := baseTable_eval_1_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_62 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_59 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 8, 11, 0x378e3, 0x38103, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_211 {u : ℚ} (hlo : 0xb367 ≤ u) (hhi : u < (0x39aa4 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_62 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 8, 11, 0x38103, 0x39aa4, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_212 {u : ℚ} (hlo : (0x39aa4 / 5) ≤ u) (hhi : u < 0xc800) : baseStepValid true u := by have hp := baseTable_eval_1_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_62 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 8, 11, 0x39aa4, 0x3e800, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_213 {u : ℚ} (hlo : 0xc800 ≤ u) (hhi : u < (0x40000 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_63 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 8, 11, 0x3e800, 0x40000, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_214 {u : ℚ} (hlo : (0x40000 / 5) ≤ u) (hhi : u < 0xcd08) : baseStepValid true u := by have hp := baseTable_eval_1_73 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_63 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 9, 11, 0x40000, 0x40128, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_215 {u : ℚ} (hlo : 0xcd08 ≤ u) (hhi : u < (0x28000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_63 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 9, 11, 0x40128, 0x42aab, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_216 {u : ℚ} (hlo : (0x28000 / 3) ≤ u) (hhi : u < 0xe000) : baseStepValid true u := by have hp := baseTable_eval_1_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_60 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 9, 11, 0x42aaa, 0x46000, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_217 {u : ℚ} (hlo : 0xe000 ≤ u) (hhi : u < 0xe6a9) : baseStepValid true u := by have hp := baseTable_eval_1_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_61 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 9, 18, 18, 9, 11, 0x46000, 0x4814d, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_218 {u : ℚ} (hlo : 0xe6a9 ≤ u) (hhi : u < (0x8c000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_61 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 10, 18, 18, 9, 11, 0x4814d, 0x4dc72, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_219 {u : ℚ} (hlo : (0x8c000 / 9) ≤ u) (hhi : u < 0x10000) : baseStepValid true u := by have hp := baseTable_eval_1_74 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_62 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨15, 10, 18, 18, 9, 11, 0x4dc71, 0x50000, false⟩ hlo hhi hp h5 h7 baseLower_1_18 baseLower_1_19 all_goals decide +kernel def baseInterval_1_220 {u : ℚ} (hlo : 0x10000 ≤ u) (hhi : u < 0x11800) : baseStepValid true u := by have hp := baseTable_eval_1_75 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_62 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x50000, 0x57800, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_221 {u : ℚ} (hlo : 0x11800 ≤ u) (hhi : u < (0xa0000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_75 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_63 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x57800, 0x58e39, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_222 {u : ℚ} (hlo : (0xa0000 / 9) ≤ u) (hhi : u < (0x38000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_76 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_63 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x58e38, 0x5d556, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_223 {u : ℚ} (hlo : (0x38000 / 3) ≤ u) (hhi : u < 0x1338c) : baseStepValid true u := by have hp := baseTable_eval_1_76 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_64 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x5d555, 0x601bc, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_224 {u : ℚ} (hlo : 0x1338c ≤ u) (hhi : u < 0x14000) : baseStepValid true u := by have hp := baseTable_eval_1_77 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_65 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x601bc, 0x64000, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_225 {u : ℚ} (hlo : 0x14000 ≤ u) (hhi : u < (0x40000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_78 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_66 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x64000, 0x6aaab, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_226 {u : ℚ} (hlo : (0x40000 / 3) ≤ u) (hhi : u < (0xc8000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_79 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_66 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x6aaaa, 0x6f1c8, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_227 {u : ℚ} (hlo : (0xc8000 / 9) ≤ u) (hhi : u < 0x1806f) : baseStepValid true u := by have hp := baseTable_eval_1_79 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_67 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x6f1c7, 0x7822b, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_228 {u : ℚ} (hlo : 0x1806f ≤ u) (hhi : u < 0x19a10) : baseStepValid true u := by have hp := baseTable_eval_1_80 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x7822b, 0x80250, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_229 {u : ℚ} (hlo : 0x19a10 ≤ u) (hhi : u < (0x81bf1 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_81 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 11, 0x80250, 0x81bf1, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_230 {u : ℚ} (hlo : (0x81bf1 / 5) ≤ u) (hhi : u < (0x868d4 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_81 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_64 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 12, 0x81bf1, 0x868d4, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_231 {u : ℚ} (hlo : (0x868d4 / 5) ≤ u) (hhi : u < 0x1c000) : baseStepValid true u := by have hp := baseTable_eval_1_81 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_65 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 12, 0x868d4, 0x8c000, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_232 {u : ℚ} (hlo : 0x1c000 ≤ u) (hhi : u < 0x1cd52) : baseStepValid true u := by have hp := baseTable_eval_1_81 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_66 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 12, 0x8c000, 0x9029a, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_233 {u : ℚ} (hlo : 0x1cd52 ≤ u) (hhi : u < (0x118000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_81 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_66 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 12, 0x9029a, 0x9b8e4, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_234 {u : ℚ} (hlo : (0x118000 / 9) ≤ u) (hhi : u < 0x20000) : baseStepValid true u := by have hp := baseTable_eval_1_81 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_67 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨16, 10, 19, 19, 9, 12, 0x9b8e3, 0xa0000, false⟩ hlo hhi hp h5 h7 baseLower_0_19 baseLower_0_20 all_goals decide +kernel def baseInterval_1_235 {u : ℚ} (hlo : 0x20000 ≤ u) (hhi : u < 0x20094) : baseStepValid true u := by have hp := baseTable_eval_1_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_68 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_67 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 9, 12, 0xa0000, 0xa02e4, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_236 {u : ℚ} (hlo : 0x20094 ≤ u) (hhi : u < 0x21a35) : baseStepValid true u := by have hp := baseTable_eval_1_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_69 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_67 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 9, 12, 0xa02e4, 0xa8309, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_237 {u : ℚ} (hlo : 0x21a35 ≤ u) (hhi : u < (0xacfec / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_69 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 9, 12, 0xa8309, 0xacfec, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_238 {u : ℚ} (hlo : (0xacfec / 5) ≤ u) (hhi : u < (0x140000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_82 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_69 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 9, 12, 0xacfec, 0xb1c72, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_239 {u : ℚ} (hlo : (0x140000 / 9) ≤ u) (hhi : u < 0x28000) : baseStepValid true u := by have hp := baseTable_eval_1_83 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_69 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 9, 12, 0xb1c71, 0xc8000, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_240 {u : ℚ} (hlo : 0x28000 ≤ u) (hhi : u < 0x280b9) : baseStepValid true u := by have hp := baseTable_eval_1_84 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_70 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 9, 12, 0xc8000, 0xc839d, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_241 {u : ℚ} (hlo : 0x280b9 ≤ u) (hhi : u < 0x2ab70) : baseStepValid true u := by have hp := baseTable_eval_1_85 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_71 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 9, 12, 0xc839d, 0xd5930, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_242 {u : ℚ} (hlo : 0x2ab70 ≤ u) (hhi : u < 0x2b3fb) : baseStepValid true u := by have hp := baseTable_eval_1_86 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_72 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 10, 20, 20, 9, 12, 0xd5930, 0xd83e7, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_243 {u : ℚ} (hlo : 0x2b3fb ≤ u) (hhi : u < 0x2cd9c) : baseStepValid true u := by have hp := baseTable_eval_1_86 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_72 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_68 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 9, 12, 0xd83e7, 0xe040c, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_244 {u : ℚ} (hlo : 0x2cd9c ≤ u) (hhi : u < 0x300de) : baseStepValid true u := by have hp := baseTable_eval_1_86 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_72 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 9, 12, 0xe040c, 0xf0456, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_245 {u : ℚ} (hlo : 0x300de ≤ u) (hhi : u < (0x100000 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_87 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 9, 12, 0xf0456, 0x100000, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_246 {u : ℚ} (hlo : (0x100000 / 5) ≤ u) (hhi : u < 0x33420) : baseStepValid true u := by have hp := baseTable_eval_1_87 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 10, 12, 0x100000, 0x1004a0, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_247 {u : ℚ} (hlo : 0x33420 ≤ u) (hhi : u < 0x38000) : baseStepValid true u := by have hp := baseTable_eval_1_88 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_69 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 10, 12, 0x1004a0, 0x118000, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_248 {u : ℚ} (hlo : 0x38000 ≤ u) (hhi : u < 0x38103) : baseStepValid true u := by have hp := baseTable_eval_1_88 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_70 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 10, 12, 0x118000, 0x11850f, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_249 {u : ℚ} (hlo : 0x38103 ≤ u) (hhi : u < 0x3bcd0) : baseStepValid true u := by have hp := baseTable_eval_1_88 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_71 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 10, 12, 0x11850f, 0x12b010, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_250 {u : ℚ} (hlo : 0x3bcd0 ≤ u) (hhi : u < 0x40000) : baseStepValid true u := by have hp := baseTable_eval_1_88 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_72 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨17, 11, 20, 20, 10, 12, 0x12b010, 0x140000, false⟩ hlo hhi hp h5 h7 baseLower_1_20 baseLower_1_21 all_goals decide +kernel def baseInterval_1_251 {u : ℚ} (hlo : 0x40000 ≤ u) (hhi : u < 0x40128) : baseStepValid true u := by have hp := baseTable_eval_1_89 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_73 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_72 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 12, 0x140000, 0x1405c8, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_252 {u : ℚ} (hlo : 0x40128 ≤ u) (hhi : u < 0x4346a) : baseStepValid true u := by have hp := baseTable_eval_1_89 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_74 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_72 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 12, 0x1405c8, 0x150612, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_253 {u : ℚ} (hlo : 0x4346a ≤ u) (hhi : u < (0x280000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_89 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_74 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 12, 0x150612, 0x1638e4, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_254 {u : ℚ} (hlo : (0x280000 / 9) ≤ u) (hhi : u < (0x1853d3 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_90 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_74 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 12, 0x1638e3, 0x1853d3, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_255 {u : ℚ} (hlo : (0x1853d3 / 5) ≤ u) (hhi : u < 0x50000) : baseStepValid true u := by have hp := baseTable_eval_1_90 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_74 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x1853d3, 0x190000, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_256 {u : ℚ} (hlo : 0x50000 ≤ u) (hhi : u < (0x100000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_91 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_75 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x190000, 0x1aaaab, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_257 {u : ℚ} (hlo : (0x100000 / 3) ≤ u) (hhi : u < 0x567f6) : baseStepValid true u := by have hp := baseTable_eval_1_92 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_75 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x1aaaaa, 0x1b07ce, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_258 {u : ℚ} (hlo : 0x567f6 ≤ u) (hhi : u < (0x320000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_92 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_75 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x1b07ce, 0x1bc71d, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_259 {u : ℚ} (hlo : (0x320000 / 9) ≤ u) (hhi : u < 0x59b38) : baseStepValid true u := by have hp := baseTable_eval_1_92 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_76 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_73 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x1bc71c, 0x1c0818, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_260 {u : ℚ} (hlo : 0x59b38 ≤ u) (hhi : u < 0x601bc) : baseStepValid true u := by have hp := baseTable_eval_1_92 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_76 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x1c0818, 0x1e08ac, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_261 {u : ℚ} (hlo : 0x601bc ≤ u) (hhi : u < 0x64000) : baseStepValid true u := by have hp := baseTable_eval_1_93 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_77 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x1e08ac, 0x1f4000, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_262 {u : ℚ} (hlo : 0x64000 ≤ u) (hhi : u < (0x206fc4 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_94 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_78 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x1f4000, 0x206fc4, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_263 {u : ℚ} (hlo : (0x206fc4 / 5) ≤ u) (hhi : u < (0x140000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_94 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_78 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x206fc4, 0x215556, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_264 {u : ℚ} (hlo : (0x140000 / 3) ≤ u) (hhi : u < 0x70000) : baseStepValid true u := by have hp := baseTable_eval_1_94 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_79 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_74 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x215555, 0x230000, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_265 {u : ℚ} (hlo : 0x70000 ≤ u) (hhi : u < 0x7822b) : baseStepValid true u := by have hp := baseTable_eval_1_94 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_79 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_75 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x230000, 0x258ad7, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_266 {u : ℚ} (hlo : 0x7822b ≤ u) (hhi : u < (0x460000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_94 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_80 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_75 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x258ad7, 0x26e38f, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_267 {u : ℚ} (hlo : (0x460000 / 9) ≤ u) (hhi : u < 0x80000) : baseStepValid true u := by have hp := baseTable_eval_1_94 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_80 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_76 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨18, 11, 21, 21, 10, 13, 0x26e38e, 0x280000, false⟩ hlo hhi hp h5 h7 baseLower_0_21 baseLower_0_22 all_goals decide +kernel def baseInterval_1_268 {u : ℚ} (hlo : 0x80000 ≤ u) (hhi : u < 0x80250) : baseStepValid true u := by have hp := baseTable_eval_1_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_80 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_76 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 11, 22, 22, 10, 13, 0x280000, 0x280b90, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_269 {u : ℚ} (hlo : 0x80250 ≤ u) (hhi : u < 0x81bf1) : baseStepValid true u := by have hp := baseTable_eval_1_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_76 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 11, 22, 22, 10, 13, 0x280b90, 0x288bb5, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_270 {u : ℚ} (hlo : 0x81bf1 ≤ u) (hhi : u < 0x868d4) : baseStepValid true u := by have hp := baseTable_eval_1_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_76 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x288bb5, 0x2a0c24, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_271 {u : ℚ} (hlo : 0x868d4 ≤ u) (hhi : u < 0x8c000) : baseStepValid true u := by have hp := baseTable_eval_1_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_77 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x2a0c24, 0x2bc000, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_272 {u : ℚ} (hlo : 0x8c000 ≤ u) (hhi : u < (0x500000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_95 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_78 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x2bc000, 0x2c71c8, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_273 {u : ℚ} (hlo : (0x500000 / 9) ≤ u) (hhi : u < (0x1c0000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_96 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_78 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x2c71c7, 0x2eaaab, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_274 {u : ℚ} (hlo : (0x1c0000 / 3) ≤ u) (hhi : u < 0xa0000) : baseStepValid true u := by have hp := baseTable_eval_1_96 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_81 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_79 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x2eaaaa, 0x320000, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_275 {u : ℚ} (hlo : 0xa0000 ≤ u) (hhi : u < 0xa8309) : baseStepValid true u := by have hp := baseTable_eval_1_97 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_82 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_79 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x320000, 0x348f2d, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_276 {u : ℚ} (hlo : 0xa8309 ≤ u) (hhi : u < (0x200000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_97 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_82 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_80 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x348f2d, 0x355556, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_277 {u : ℚ} (hlo : (0x200000 / 3) ≤ u) (hhi : u < (0x640000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_98 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_82 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_80 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x355555, 0x378e39, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_278 {u : ℚ} (hlo : (0x640000 / 9) ≤ u) (hhi : u < 0xb3670) : baseStepValid true u := by have hp := baseTable_eval_1_98 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_83 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_80 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x378e38, 0x381030, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_279 {u : ℚ} (hlo : 0xb3670 ≤ u) (hhi : u < 0xc8000) : baseStepValid true u := by have hp := baseTable_eval_1_98 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_83 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x381030, 0x3e8000, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_280 {u : ℚ} (hlo : 0xc8000 ≤ u) (hhi : u < 0xc839d) : baseStepValid true u := by have hp := baseTable_eval_1_98 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_84 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x3e8000, 0x3e9211, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_281 {u : ℚ} (hlo : 0xc839d ≤ u) (hhi : u < (0x400000 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_99 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_85 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 10, 13, 0x3e9211, 0x400000, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_282 {u : ℚ} (hlo : (0x400000 / 5) ≤ u) (hhi : u < 0xcd080) : baseStepValid true u := by have hp := baseTable_eval_1_99 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_85 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 11, 13, 0x400000, 0x401280, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_283 {u : ℚ} (hlo : 0xcd080 ≤ u) (hhi : u < 0xd5930) : baseStepValid true u := by have hp := baseTable_eval_1_100 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_85 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 11, 13, 0x401280, 0x42bdf0, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_284 {u : ℚ} (hlo : 0xd5930 ≤ u) (hhi : u < 0xe0000) : baseStepValid true u := by have hp := baseTable_eval_1_100 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_86 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_81 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 11, 13, 0x42bdf0, 0x460000, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_285 {u : ℚ} (hlo : 0xe0000 ≤ u) (hhi : u < (0x48fb79 / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_100 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_86 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 11, 13, 0x460000, 0x48fb79, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_286 {u : ℚ} (hlo : (0x48fb79 / 5) ≤ u) (hhi : u < 0xf0456) : baseStepValid true u := by have hp := baseTable_eval_1_100 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_86 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 11, 14, 0x48fb79, 0x4b15ae, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_287 {u : ℚ} (hlo : 0xf0456 ≤ u) (hhi : u < (0x8c0000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_100 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_87 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_82 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 11, 14, 0x4b15ae, 0x4dc71d, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_288 {u : ℚ} (hlo : (0x8c0000 / 9) ≤ u) (hhi : u < 0x100000) : baseStepValid true u := by have hp := baseTable_eval_1_100 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_87 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_83 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨19, 12, 22, 22, 11, 14, 0x4dc71c, 0x500000, false⟩ hlo hhi hp h5 h7 baseLower_1_22 baseLower_1_23 all_goals decide +kernel def baseInterval_1_289 {u : ℚ} (hlo : 0x100000 ≤ u) (hhi : u < 0x1004a0) : baseStepValid true u := by have hp := baseTable_eval_1_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_87 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_83 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x500000, 0x501720, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_290 {u : ℚ} (hlo : 0x1004a0 ≤ u) (hhi : u < 0x1037e2) : baseStepValid true u := by have hp := baseTable_eval_1_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_83 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x501720, 0x51176a, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_291 {u : ℚ} (hlo : 0x1037e2 ≤ u) (hhi : u < 0x118000) : baseStepValid true u := by have hp := baseTable_eval_1_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_83 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x51176a, 0x578000, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_292 {u : ℚ} (hlo : 0x118000 ≤ u) (hhi : u < 0x11850f) : baseStepValid true u := by have hp := baseTable_eval_1_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_84 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x578000, 0x57994b, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_293 {u : ℚ} (hlo : 0x11850f ≤ u) (hhi : u < (0xa00000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_101 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_85 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x57994b, 0x58e38f, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_294 {u : ℚ} (hlo : (0xa00000 / 9) ≤ u) (hhi : u < 0x12b010) : baseStepValid true u := by have hp := baseTable_eval_1_102 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_85 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x58e38e, 0x5d7050, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_295 {u : ℚ} (hlo : 0x12b010 ≤ u) (hhi : u < (0x614f4c / 5)) : baseStepValid true u := by have hp := baseTable_eval_1_102 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_86 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x5d7050, 0x614f4c, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_296 {u : ℚ} (hlo : (0x614f4c / 5) ≤ u) (hhi : u < 0x140000) : baseStepValid true u := by have hp := baseTable_eval_1_102 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_88 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_86 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x614f4c, 0x640000, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_297 {u : ℚ} (hlo : 0x140000 ≤ u) (hhi : u < (0x2300000 / 27)) : baseStepValid true u := by have hp := baseTable_eval_1_103 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_89 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_86 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x640000, 0x67b426, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_298 {u : ℚ} (hlo : (0x2300000 / 27) ≤ u) (hhi : u < 0x150612) : baseStepValid true u := by have hp := baseTable_eval_1_104 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_89 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_86 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x67b425, 0x691e5a, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_299 {u : ℚ} (hlo : 0x150612 ≤ u) (hhi : u < (0x400000 / 3)) : baseStepValid true u := by have hp := baseTable_eval_1_105 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_89 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_87 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x691e5a, 0x6aaaab, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_300 {u : ℚ} (hlo : (0x400000 / 3) ≤ u) (hhi : u < (0xc80000 / 9)) : baseStepValid true u := by have hp := baseTable_eval_1_106 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_89 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_87 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x6aaaaa, 0x6f1c72, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_301 {u : ℚ} (hlo : (0xc80000 / 9) ≤ u) (hhi : u < 0x166ce0) : baseStepValid true u := by have hp := baseTable_eval_1_106 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_90 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_87 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x6f1c71, 0x702060, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_302 {u : ℚ} (hlo : 0x166ce0 ≤ u) (hhi : u < 0x1853d3) : baseStepValid true u := by have hp := baseTable_eval_1_106 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_90 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_88 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 12, 23, 23, 11, 14, 0x702060, 0x79a31f, false⟩ hlo hhi hp h5 h7 baseLower_0_23 baseLower_0_24 all_goals decide +kernel def baseInterval_1_303 {u : ℚ} (hlo : 0x1853d3 ≤ u) (hhi : u < 0x190000) : baseStepValid true u := by have hp := baseTable_eval_1_107 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_90 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_88 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 13, 24, 24, 11, 14, 0x79a31f, 0x7d0000, false⟩ hlo hhi hp h5 h7 baseLower_0_24 baseLower_0_25 all_goals decide +kernel def baseInterval_1_304 {u : ℚ} (hlo : 0x190000 ≤ u) (hhi : u < 0x1921ee) : baseStepValid true u := by have hp := baseTable_eval_1_107 (u := u) (baseIvlLo (by decide +kernel) hlo) (baseIvlHi (by decide +kernel) hhi) have h5 := baseTable_eval_1_91 (u := u / 5) (baseIvlLo5 (by decide +kernel) hlo) (baseIvlHi5 (by decide +kernel) hhi) have h7 := baseTable_eval_1_88 (u := u / 7) (baseIvlLo7 (by decide +kernel) hlo) (baseIvlHi7 (by decide +kernel) hhi) apply compactBaseInterval_preferred ⟨20, 13, 24, 24, 11, 14, 0x7d0000, 0x7da9a6, false⟩ hlo hhi hp h5 h7 baseLower_0_24 baseLower_0_25 all_goals decide +kernel def baseStepValid_0_below_limit {u : ℚ} (hlo : 1 ≤ u) (hhi : u < 0x1921ee) : baseStepValid false u := by by_cases hcut153 : u < 0x1116 · by_cases hcut76 : u < 0xd8 · by_cases hcut38 : u < (0x70 / 3) · by_cases hcut19 : u < (28 / 3) · by_cases hcut9 : u < 5 · by_cases hcut4 : u < (12 / 5) · by_cases hcut2 : u < (9 / 5) · by_cases hcut1 : u < (4 / 3) · exact baseInterval_0_0 hlo hcut1 · exact baseInterval_0_1 (le_of_not_gt hcut1) hcut2 · by_cases hcut3 : u < 2 · exact baseInterval_0_2 (le_of_not_gt hcut2) hcut3 · exact baseInterval_0_3 (le_of_not_gt hcut3) hcut4 · by_cases hcut6 : u < 3 · by_cases hcut5 : u < (8 / 3) · exact baseInterval_0_4 (le_of_not_gt hcut4) hcut5 · exact baseInterval_0_5 (le_of_not_gt hcut5) hcut6 · by_cases hcut7 : u < (16 / 5) · exact baseInterval_0_6 (le_of_not_gt hcut6) hcut7 · by_cases hcut8 : u < 4 · exact baseInterval_0_7 (le_of_not_gt hcut7) hcut8 · exact baseInterval_0_8 (le_of_not_gt hcut8) hcut9 · by_cases hcut14 : u < 7 · by_cases hcut11 : u < (27 / 5) · by_cases hcut10 : u < (16 / 3) · exact baseInterval_0_9 (le_of_not_gt hcut9) hcut10 · exact baseInterval_0_10 (le_of_not_gt hcut10) hcut11 · by_cases hcut12 : u < 6 · exact baseInterval_0_11 (le_of_not_gt hcut11) hcut12 · by_cases hcut13 : u < (20 / 3) · exact baseInterval_0_12 (le_of_not_gt hcut12) hcut13 · exact baseInterval_0_13 (le_of_not_gt hcut13) hcut14 · by_cases hcut16 : u < 8 · by_cases hcut15 : u < (36 / 5) · exact baseInterval_0_14 (le_of_not_gt hcut14) hcut15 · exact baseInterval_0_15 (le_of_not_gt hcut15) hcut16 · by_cases hcut17 : u < (80 / 9) · exact baseInterval_0_16 (le_of_not_gt hcut16) hcut17 · by_cases hcut18 : u < 9 · exact baseInterval_0_17 (le_of_not_gt hcut17) hcut18 · exact baseInterval_0_18 (le_of_not_gt hcut18) hcut19 · by_cases hcut28 : u < 18 · by_cases hcut23 : u < (40 / 3) · by_cases hcut21 : u < (32 / 3) · by_cases hcut20 : u < 10 · exact baseInterval_0_19 (le_of_not_gt hcut19) hcut20 · exact baseInterval_0_20 (le_of_not_gt hcut20) hcut21 · by_cases hcut22 : u < (64 / 5) · exact baseInterval_0_21 (le_of_not_gt hcut21) hcut22 · exact baseInterval_0_22 (le_of_not_gt hcut22) hcut23 · by_cases hcut25 : u < 16 · by_cases hcut24 : u < 14 · exact baseInterval_0_23 (le_of_not_gt hcut23) hcut24 · exact baseInterval_0_24 (le_of_not_gt hcut24) hcut25 · by_cases hcut26 : u < (81 / 5) · exact baseInterval_0_25 (le_of_not_gt hcut25) hcut26 · by_cases hcut27 : u < (0xa0 / 9) · exact baseInterval_0_26 (le_of_not_gt hcut26) hcut27 · exact baseInterval_0_27 (le_of_not_gt hcut27) hcut28 · by_cases hcut33 : u < (80 / 3) · by_cases hcut30 : u < 20 · by_cases hcut29 : u < (56 / 3) · exact baseInterval_0_28 (le_of_not_gt hcut28) hcut29 · exact baseInterval_0_29 (le_of_not_gt hcut29) hcut30 · by_cases hcut31 : u < (64 / 3) · exact baseInterval_0_30 (le_of_not_gt hcut30) hcut31 · by_cases hcut32 : u < (0x6c / 5) · exact baseInterval_0_31 (le_of_not_gt hcut31) hcut32 · exact baseInterval_0_32 (le_of_not_gt hcut32) hcut33 · by_cases hcut35 : u < 28 · by_cases hcut34 : u < 27 · exact baseInterval_0_33 (le_of_not_gt hcut33) hcut34 · exact baseInterval_0_34 (le_of_not_gt hcut34) hcut35 · by_cases hcut36 : u < 32 · exact baseInterval_0_35 (le_of_not_gt hcut35) hcut36 · by_cases hcut37 : u < (0x140 / 9) · exact baseInterval_0_36 (le_of_not_gt hcut36) hcut37 · exact baseInterval_0_37 (le_of_not_gt hcut37) hcut38 · by_cases hcut57 : u < 0x64 · by_cases hcut47 : u < 56 · by_cases hcut42 : u < (0xf3 / 5) · by_cases hcut40 : u < (0x80 / 3) · by_cases hcut39 : u < 40 · exact baseInterval_0_38 (le_of_not_gt hcut38) hcut39 · exact baseInterval_0_39 (le_of_not_gt hcut39) hcut40 · by_cases hcut41 : u < (0x190 / 9) · exact baseInterval_0_40 (le_of_not_gt hcut40) hcut41 · exact baseInterval_0_41 (le_of_not_gt hcut41) hcut42 · by_cases hcut44 : u < (0x100 / 5) · by_cases hcut43 : u < 50 · exact baseInterval_0_42 (le_of_not_gt hcut42) hcut43 · exact baseInterval_0_43 (le_of_not_gt hcut43) hcut44 · by_cases hcut45 : u < (0xa0 / 3) · exact baseInterval_0_44 (le_of_not_gt hcut44) hcut45 · by_cases hcut46 : u < 54 · exact baseInterval_0_45 (le_of_not_gt hcut45) hcut46 · exact baseInterval_0_46 (le_of_not_gt hcut46) hcut47 · by_cases hcut52 : u < (0x280 / 9) · by_cases hcut49 : u < 64 · by_cases hcut48 : u < (0x230 / 9) · exact baseInterval_0_47 (le_of_not_gt hcut47) hcut48 · exact baseInterval_0_48 (le_of_not_gt hcut48) hcut49 · by_cases hcut50 : u < (0x144 / 5) · exact baseInterval_0_49 (le_of_not_gt hcut49) hcut50 · by_cases hcut51 : u < 70 · exact baseInterval_0_50 (le_of_not_gt hcut50) hcut51 · exact baseInterval_0_51 (le_of_not_gt hcut51) hcut52 · by_cases hcut54 : u < 80 · by_cases hcut53 : u < (0xe0 / 3) · exact baseInterval_0_52 (le_of_not_gt hcut52) hcut53 · exact baseInterval_0_53 (le_of_not_gt hcut53) hcut54 · by_cases hcut55 : u < 81 · exact baseInterval_0_54 (le_of_not_gt hcut54) hcut55 · by_cases hcut56 : u < (0x320 / 9) · exact baseInterval_0_55 (le_of_not_gt hcut55) hcut56 · exact baseInterval_0_56 (le_of_not_gt hcut56) hcut57 · by_cases hcut66 : u < (0x2d9 / 5) · by_cases hcut61 : u < (0x460 / 9) · by_cases hcut59 : u < 0x6c · by_cases hcut58 : u < (0x140 / 3) · exact baseInterval_0_57 (le_of_not_gt hcut57) hcut58 · exact baseInterval_0_58 (le_of_not_gt hcut58) hcut59 · by_cases hcut60 : u < 0x70 · exact baseInterval_0_59 (le_of_not_gt hcut59) hcut60 · exact baseInterval_0_60 (le_of_not_gt hcut60) hcut61 · by_cases hcut63 : u < 0x87 · by_cases hcut62 : u < 0x80 · exact baseInterval_0_61 (le_of_not_gt hcut61) hcut62 · exact baseInterval_0_62 (le_of_not_gt hcut62) hcut63 · by_cases hcut64 : u < 0x8c · exact baseInterval_0_63 (le_of_not_gt hcut63) hcut64 · by_cases hcut65 : u < 0x90 · exact baseInterval_0_64 (le_of_not_gt hcut64) hcut65 · exact baseInterval_0_65 (le_of_not_gt hcut65) hcut66 · by_cases hcut71 : u < 0xbd · by_cases hcut68 : u < 0xa0 · by_cases hcut67 : u < (0x1c0 / 3) · exact baseInterval_0_66 (le_of_not_gt hcut66) hcut67 · exact baseInterval_0_67 (le_of_not_gt hcut67) hcut68 · by_cases hcut69 : u < 0xa2 · exact baseInterval_0_68 (le_of_not_gt hcut68) hcut69 · by_cases hcut70 : u < (0x640 / 9) · exact baseInterval_0_69 (le_of_not_gt hcut69) hcut70 · exact baseInterval_0_70 (le_of_not_gt hcut70) hcut71 · by_cases hcut73 : u < 0xc8 · by_cases hcut72 : u < (0x3cc / 5) · exact baseInterval_0_71 (le_of_not_gt hcut71) hcut72 · exact baseInterval_0_72 (le_of_not_gt hcut72) hcut73 · by_cases hcut74 : u < (0x400 / 5) · exact baseInterval_0_73 (le_of_not_gt hcut73) hcut74 · by_cases hcut75 : u < (0x280 / 3) · exact baseInterval_0_74 (le_of_not_gt hcut74) hcut75 · exact baseInterval_0_75 (le_of_not_gt hcut75) hcut76 · by_cases hcut114 : u < 0x438 · by_cases hcut95 : u < 0x200 · by_cases hcut85 : u < (0x400 / 3) · by_cases hcut80 : u < 0x100 · by_cases hcut78 : u < 0xf3 · by_cases hcut77 : u < 0xe0 · exact baseInterval_0_76 (le_of_not_gt hcut76) hcut77 · exact baseInterval_0_77 (le_of_not_gt hcut77) hcut78 · by_cases hcut79 : u < (0x8c0 / 9) · exact baseInterval_0_78 (le_of_not_gt hcut78) hcut79 · exact baseInterval_0_79 (le_of_not_gt hcut79) hcut80 · by_cases hcut82 : u < (0xa00 / 9) · by_cases hcut81 : u < 0x118 · exact baseInterval_0_80 (le_of_not_gt hcut80) hcut81 · exact baseInterval_0_81 (le_of_not_gt hcut81) hcut82 · by_cases hcut83 : u < (0x380 / 3) · exact baseInterval_0_82 (le_of_not_gt hcut82) hcut83 · by_cases hcut84 : u < 0x140 · exact baseInterval_0_83 (le_of_not_gt hcut83) hcut84 · exact baseInterval_0_84 (le_of_not_gt hcut84) hcut85 · by_cases hcut90 : u < 0x1b0 · by_cases hcut87 : u < 0x17a · by_cases hcut86 : u < (0xc80 / 9) · exact baseInterval_0_85 (le_of_not_gt hcut85) hcut86 · exact baseInterval_0_86 (le_of_not_gt hcut86) hcut87 · by_cases hcut88 : u < 0x190 · exact baseInterval_0_87 (le_of_not_gt hcut87) hcut88 · by_cases hcut89 : u < 0x195 · exact baseInterval_0_88 (le_of_not_gt hcut88) hcut89 · exact baseInterval_0_89 (le_of_not_gt hcut89) hcut90 · by_cases hcut92 : u < 0x1c0 · by_cases hcut91 : u < (0x88b / 5) · exact baseInterval_0_90 (le_of_not_gt hcut90) hcut91 · exact baseInterval_0_91 (le_of_not_gt hcut91) hcut92 · by_cases hcut93 : u < 0x1e6 · exact baseInterval_0_92 (le_of_not_gt hcut92) hcut93 · by_cases hcut94 : u < (0x1180 / 9) · exact baseInterval_0_93 (le_of_not_gt hcut93) hcut94 · exact baseInterval_0_94 (le_of_not_gt hcut94) hcut95 · by_cases hcut104 : u < 0x2d9 · by_cases hcut99 : u < (0x1400 / 9) · by_cases hcut97 : u < 0x230 · by_cases hcut96 : u < 0x21c · exact baseInterval_0_95 (le_of_not_gt hcut95) hcut96 · exact baseInterval_0_96 (le_of_not_gt hcut96) hcut97 · by_cases hcut98 : u < 0x237 · exact baseInterval_0_97 (le_of_not_gt hcut97) hcut98 · exact baseInterval_0_98 (le_of_not_gt hcut98) hcut99 · by_cases hcut101 : u < 0x280 · by_cases hcut100 : u < (0xb64 / 5) · exact baseInterval_0_99 (le_of_not_gt hcut99) hcut100 · exact baseInterval_0_100 (le_of_not_gt hcut100) hcut101 · by_cases hcut102 : u < 0x2a3 · exact baseInterval_0_101 (le_of_not_gt hcut101) hcut102 · by_cases hcut103 : u < 0x2d0 · exact baseInterval_0_102 (le_of_not_gt hcut102) hcut103 · exact baseInterval_0_103 (le_of_not_gt hcut103) hcut104 · by_cases hcut109 : u < 0x360 · by_cases hcut106 : u < 0x320 · by_cases hcut105 : u < 0x2f4 · exact baseInterval_0_104 (le_of_not_gt hcut104) hcut105 · exact baseInterval_0_105 (le_of_not_gt hcut105) hcut106 · by_cases hcut107 : u < 0x32a · exact baseInterval_0_106 (le_of_not_gt hcut106) hcut107 · by_cases hcut108 : u < (0x1000 / 5) · exact baseInterval_0_107 (le_of_not_gt hcut107) hcut108 · exact baseInterval_0_108 (le_of_not_gt hcut108) hcut109 · by_cases hcut111 : u < 0x3b1 · by_cases hcut110 : u < 0x380 · exact baseInterval_0_109 (le_of_not_gt hcut109) hcut110 · exact baseInterval_0_110 (le_of_not_gt hcut110) hcut111 · by_cases hcut112 : u < 0x3f0 · exact baseInterval_0_111 (le_of_not_gt hcut111) hcut112 · by_cases hcut113 : u < 0x400 · exact baseInterval_0_112 (le_of_not_gt hcut112) hcut113 · exact baseInterval_0_113 (le_of_not_gt hcut113) hcut114 · by_cases hcut133 : u < 0x8c0 · by_cases hcut123 : u < 0x5e8 · by_cases hcut118 : u < 0x500 · by_cases hcut116 : u < 0x46e · by_cases hcut115 : u < 0x460 · exact baseInterval_0_114 (le_of_not_gt hcut114) hcut115 · exact baseInterval_0_115 (le_of_not_gt hcut115) hcut116 · by_cases hcut117 : u < (0x2800 / 9) · exact baseInterval_0_116 (le_of_not_gt hcut116) hcut117 · exact baseInterval_0_117 (le_of_not_gt hcut117) hcut118 · by_cases hcut120 : u < (0x1000 / 3) · by_cases hcut119 : u < (0x19a1 / 5) · exact baseInterval_0_118 (le_of_not_gt hcut118) hcut119 · exact baseInterval_0_119 (le_of_not_gt hcut119) hcut120 · by_cases hcut121 : u < (0x3200 / 9) · exact baseInterval_0_120 (le_of_not_gt hcut120) hcut121 · by_cases hcut122 : u < 0x5b2 · exact baseInterval_0_121 (le_of_not_gt hcut121) hcut122 · exact baseInterval_0_122 (le_of_not_gt hcut122) hcut123 · by_cases hcut128 : u < (0x4600 / 9) · by_cases hcut125 : u < (0x1400 / 3) · by_cases hcut124 : u < 0x640 · exact baseInterval_0_123 (le_of_not_gt hcut123) hcut124 · exact baseInterval_0_124 (le_of_not_gt hcut124) hcut125 · by_cases hcut126 : u < (0x222c / 5) · exact baseInterval_0_125 (le_of_not_gt hcut125) hcut126 · by_cases hcut127 : u < 0x700 · exact baseInterval_0_126 (le_of_not_gt hcut126) hcut127 · exact baseInterval_0_127 (le_of_not_gt hcut127) hcut128 · by_cases hcut130 : u < 0x800 · by_cases hcut129 : u < 0x7e9 · exact baseInterval_0_128 (le_of_not_gt hcut128) hcut129 · exact baseInterval_0_129 (le_of_not_gt hcut129) hcut130 · by_cases hcut131 : u < 0x870 · exact baseInterval_0_130 (le_of_not_gt hcut130) hcut131 · by_cases hcut132 : u < 0x88b · exact baseInterval_0_131 (le_of_not_gt hcut131) hcut132 · exact baseInterval_0_132 (le_of_not_gt hcut132) hcut133 · by_cases hcut143 : u < 0xd2f · by_cases hcut138 : u < (0x2000 / 3) · by_cases hcut135 : u < (0x1c00 / 3) · by_cases hcut134 : u < (0x5000 / 9) · exact baseInterval_0_133 (le_of_not_gt hcut133) hcut134 · exact baseInterval_0_134 (le_of_not_gt hcut134) hcut135 · by_cases hcut136 : u < 0xa00 · exact baseInterval_0_135 (le_of_not_gt hcut135) hcut136 · by_cases hcut137 : u < 0xa56 · exact baseInterval_0_136 (le_of_not_gt hcut136) hcut137 · exact baseInterval_0_137 (le_of_not_gt hcut137) hcut138 · by_cases hcut140 : u < 0xbd0 · by_cases hcut139 : u < (0x6400 / 9) · exact baseInterval_0_138 (le_of_not_gt hcut138) hcut139 · exact baseInterval_0_139 (le_of_not_gt hcut139) hcut140 · by_cases hcut141 : u < 0xc80 · exact baseInterval_0_140 (le_of_not_gt hcut140) hcut141 · by_cases hcut142 : u < (0x4000 / 5) · exact baseInterval_0_141 (le_of_not_gt hcut141) hcut142 · exact baseInterval_0_142 (le_of_not_gt hcut142) hcut143 · by_cases hcut148 : u < (0x8c00 / 9) · by_cases hcut145 : u < 0xe00 · by_cases hcut144 : u < 0xd80 · exact baseInterval_0_143 (le_of_not_gt hcut143) hcut144 · exact baseInterval_0_144 (le_of_not_gt hcut144) hcut145 · by_cases hcut146 : u < 0xe10 · exact baseInterval_0_145 (le_of_not_gt hcut145) hcut146 · by_cases hcut147 : u < (0x4ce3 / 5) · exact baseInterval_0_146 (le_of_not_gt hcut146) hcut147 · exact baseInterval_0_147 (le_of_not_gt hcut147) hcut148 · by_cases hcut150 : u < 0xfd2 · by_cases hcut149 : u < 0xfa0 · exact baseInterval_0_148 (le_of_not_gt hcut148) hcut149 · exact baseInterval_0_149 (le_of_not_gt hcut149) hcut150 · by_cases hcut151 : u < 0x1000 · exact baseInterval_0_150 (le_of_not_gt hcut150) hcut151 · by_cases hcut152 : u < 0x10e0 · exact baseInterval_0_151 (le_of_not_gt hcut151) hcut152 · exact baseInterval_0_152 (le_of_not_gt hcut152) hcut153 · by_cases hcut229 : u < 0x166ce · by_cases hcut191 : u < 0x4ce3 · by_cases hcut172 : u < (0x14000 / 9) · by_cases hcut162 : u < 0x1626 · by_cases hcut157 : u < 0x13b0 · by_cases hcut155 : u < (0xa000 / 9) · by_cases hcut154 : u < 0x1180 · exact baseInterval_0_153 (le_of_not_gt hcut153) hcut154 · exact baseInterval_0_154 (le_of_not_gt hcut154) hcut155 · by_cases hcut156 : u < 0x1275 · exact baseInterval_0_155 (le_of_not_gt hcut155) hcut156 · exact baseInterval_0_156 (le_of_not_gt hcut156) hcut157 · by_cases hcut159 : u < (0x6684 / 5) · by_cases hcut158 : u < 0x1400 · exact baseInterval_0_157 (le_of_not_gt hcut157) hcut158 · exact baseInterval_0_158 (le_of_not_gt hcut158) hcut159 · by_cases hcut160 : u < (0x23000 / 27) · exact baseInterval_0_159 (le_of_not_gt hcut159) hcut160 · by_cases hcut161 : u < 0x15e0 · exact baseInterval_0_160 (le_of_not_gt hcut160) hcut161 · exact baseInterval_0_161 (le_of_not_gt hcut161) hcut162 · by_cases hcut167 : u < (0x5000 / 3) · by_cases hcut164 : u < 0x17a0 · by_cases hcut163 : u < (0xc800 / 9) · exact baseInterval_0_162 (le_of_not_gt hcut162) hcut163 · exact baseInterval_0_163 (le_of_not_gt hcut163) hcut164 · by_cases hcut165 : u < 0x1900 · exact baseInterval_0_164 (le_of_not_gt hcut164) hcut165 · by_cases hcut166 : u < 0x19a1 · exact baseInterval_0_165 (le_of_not_gt hcut165) hcut166 · exact baseInterval_0_166 (le_of_not_gt hcut166) hcut167 · by_cases hcut169 : u < (0x11800 / 9) · by_cases hcut168 : u < 0x1c00 · exact baseInterval_0_167 (le_of_not_gt hcut167) hcut168 · exact baseInterval_0_168 (le_of_not_gt hcut168) hcut169 · by_cases hcut170 : u < 0x2000 · exact baseInterval_0_169 (le_of_not_gt hcut169) hcut170 · by_cases hcut171 : u < 0x2300 · exact baseInterval_0_170 (le_of_not_gt hcut170) hcut171 · exact baseInterval_0_171 (le_of_not_gt hcut171) hcut172 · by_cases hcut181 : u < (0xa000 / 3) · by_cases hcut176 : u < (0x19000 / 9) · by_cases hcut174 : u < 0x2800 · by_cases hcut173 : u < (0x7000 / 3) · exact baseInterval_0_172 (le_of_not_gt hcut172) hcut173 · exact baseInterval_0_173 (le_of_not_gt hcut173) hcut174 · by_cases hcut175 : u < (0x8000 / 3) · exact baseInterval_0_174 (le_of_not_gt hcut174) hcut175 · exact baseInterval_0_175 (le_of_not_gt hcut175) hcut176 · by_cases hcut178 : u < 0x3200 · by_cases hcut177 : u < (0xe6a9 / 5) · exact baseInterval_0_176 (le_of_not_gt hcut176) hcut177 · exact baseInterval_0_177 (le_of_not_gt hcut177) hcut178 · by_cases hcut179 : u < (0x10000 / 5) · exact baseInterval_0_178 (le_of_not_gt hcut178) hcut179 · by_cases hcut180 : u < 0x3342 · exact baseInterval_0_179 (le_of_not_gt hcut179) hcut180 · exact baseInterval_0_180 (le_of_not_gt hcut180) hcut181 · by_cases hcut186 : u < 0x41eb · by_cases hcut183 : u < (0x1338c / 5) · by_cases hcut182 : u < 0x3800 · exact baseInterval_0_181 (le_of_not_gt hcut181) hcut182 · exact baseInterval_0_182 (le_of_not_gt hcut182) hcut183 · by_cases hcut184 : u < (0x23000 / 9) · exact baseInterval_0_183 (le_of_not_gt hcut183) hcut184 · by_cases hcut185 : u < 0x4000 · exact baseInterval_0_184 (le_of_not_gt hcut184) hcut185 · exact baseInterval_0_185 (le_of_not_gt hcut185) hcut186 · by_cases hcut188 : u < 0x4600 · by_cases hcut187 : u < 0x4380 · exact baseInterval_0_186 (le_of_not_gt hcut186) hcut187 · exact baseInterval_0_187 (le_of_not_gt hcut187) hcut188 · by_cases hcut189 : u < (0x28000 / 9) · exact baseInterval_0_188 (le_of_not_gt hcut188) hcut189 · by_cases hcut190 : u < (0xe000 / 3) · exact baseInterval_0_189 (le_of_not_gt hcut189) hcut190 · exact baseInterval_0_190 (le_of_not_gt hcut190) hcut191 · by_cases hcut210 : u < 0xa000 · by_cases hcut200 : u < 0x7000 · by_cases hcut195 : u < 0x5e80 · by_cases hcut193 : u < (0x32000 / 9) · by_cases hcut192 : u < 0x5000 · exact baseInterval_0_191 (le_of_not_gt hcut191) hcut192 · exact baseInterval_0_192 (le_of_not_gt hcut192) hcut193 · by_cases hcut194 : u < 0x5c49 · exact baseInterval_0_193 (le_of_not_gt hcut193) hcut194 · exact baseInterval_0_194 (le_of_not_gt hcut194) hcut195 · by_cases hcut197 : u < 0x6684 · by_cases hcut196 : u < 0x6400 · exact baseInterval_0_195 (le_of_not_gt hcut195) hcut196 · exact baseInterval_0_196 (le_of_not_gt hcut196) hcut197 · by_cases hcut198 : u < (0xaf000 / 27) · exact baseInterval_0_197 (le_of_not_gt hcut197) hcut198 · by_cases hcut199 : u < 0x6d60 · exact baseInterval_0_198 (le_of_not_gt hcut198) hcut199 · exact baseInterval_0_199 (le_of_not_gt hcut199) hcut200 · by_cases hcut205 : u < (0x2b3fb / 5) · by_cases hcut202 : u < 0x8000 · by_cases hcut201 : u < (0x46000 / 9) · exact baseInterval_0_200 (le_of_not_gt hcut200) hcut201 · exact baseInterval_0_201 (le_of_not_gt hcut201) hcut202 · by_cases hcut203 : u < 0x8025 · exact baseInterval_0_202 (le_of_not_gt hcut202) hcut203 · by_cases hcut204 : u < 0x88b0 · exact baseInterval_0_203 (le_of_not_gt hcut203) hcut204 · exact baseInterval_0_204 (le_of_not_gt hcut204) hcut205 · by_cases hcut207 : u < (0xf5000 / 27) · by_cases hcut206 : u < 0x8c00 · exact baseInterval_0_205 (le_of_not_gt hcut205) hcut206 · exact baseInterval_0_206 (le_of_not_gt hcut206) hcut207 · by_cases hcut208 : u < 0x9920 · exact baseInterval_0_207 (le_of_not_gt hcut207) hcut208 · by_cases hcut209 : u < 0x99c6 · exact baseInterval_0_208 (le_of_not_gt hcut208) hcut209 · exact baseInterval_0_209 (le_of_not_gt hcut209) hcut210 · by_cases hcut219 : u < 0xe6a9 · by_cases hcut214 : u < 0xc800 · by_cases hcut212 : u < 0xb367 · by_cases hcut211 : u < (0x64000 / 9) · exact baseInterval_0_210 (le_of_not_gt hcut210) hcut211 · exact baseInterval_0_211 (le_of_not_gt hcut211) hcut212 · by_cases hcut213 : u < (0x39aa4 / 5) · exact baseInterval_0_212 (le_of_not_gt hcut212) hcut213 · exact baseInterval_0_213 (le_of_not_gt hcut213) hcut214 · by_cases hcut216 : u < 0xcd08 · by_cases hcut215 : u < (0x40000 / 5) · exact baseInterval_0_214 (le_of_not_gt hcut214) hcut215 · exact baseInterval_0_215 (le_of_not_gt hcut215) hcut216 · by_cases hcut217 : u < (0x28000 / 3) · exact baseInterval_0_216 (le_of_not_gt hcut216) hcut217 · by_cases hcut218 : u < 0xe000 · exact baseInterval_0_217 (le_of_not_gt hcut217) hcut218 · exact baseInterval_0_218 (le_of_not_gt hcut218) hcut219 · by_cases hcut224 : u < (0x38000 / 3) · by_cases hcut221 : u < 0x10000 · by_cases hcut220 : u < (0x8c000 / 9) · exact baseInterval_0_219 (le_of_not_gt hcut219) hcut220 · exact baseInterval_0_220 (le_of_not_gt hcut220) hcut221 · by_cases hcut222 : u < 0x11800 · exact baseInterval_0_221 (le_of_not_gt hcut221) hcut222 · by_cases hcut223 : u < (0xa0000 / 9) · exact baseInterval_0_222 (le_of_not_gt hcut222) hcut223 · exact baseInterval_0_223 (le_of_not_gt hcut223) hcut224 · by_cases hcut226 : u < 0x14000 · by_cases hcut225 : u < 0x1338c · exact baseInterval_0_224 (le_of_not_gt hcut224) hcut225 · exact baseInterval_0_225 (le_of_not_gt hcut225) hcut226 · by_cases hcut227 : u < (0x40000 / 3) · exact baseInterval_0_226 (le_of_not_gt hcut226) hcut227 · by_cases hcut228 : u < (0xc8000 / 9) · exact baseInterval_0_227 (le_of_not_gt hcut227) hcut228 · exact baseInterval_0_228 (le_of_not_gt hcut228) hcut229 · by_cases hcut267 : u < 0x7822b · by_cases hcut248 : u < 0x33420 · by_cases hcut238 : u < 0x21a35 · by_cases hcut233 : u < 0x1c000 · by_cases hcut231 : u < 0x19a10 · by_cases hcut230 : u < 0x1806f · exact baseInterval_0_229 (le_of_not_gt hcut229) hcut230 · exact baseInterval_0_230 (le_of_not_gt hcut230) hcut231 · by_cases hcut232 : u < (0x81bf1 / 5) · exact baseInterval_0_231 (le_of_not_gt hcut231) hcut232 · exact baseInterval_0_232 (le_of_not_gt hcut232) hcut233 · by_cases hcut235 : u < (0x118000 / 9) · by_cases hcut234 : u < 0x1cd52 · exact baseInterval_0_233 (le_of_not_gt hcut233) hcut234 · exact baseInterval_0_234 (le_of_not_gt hcut234) hcut235 · by_cases hcut236 : u < 0x20000 · exact baseInterval_0_235 (le_of_not_gt hcut235) hcut236 · by_cases hcut237 : u < 0x20094 · exact baseInterval_0_236 (le_of_not_gt hcut236) hcut237 · exact baseInterval_0_237 (le_of_not_gt hcut237) hcut238 · by_cases hcut243 : u < 0x2ab70 · by_cases hcut240 : u < (0x140000 / 9) · by_cases hcut239 : u < (0xacfec / 5) · exact baseInterval_0_238 (le_of_not_gt hcut238) hcut239 · exact baseInterval_0_239 (le_of_not_gt hcut239) hcut240 · by_cases hcut241 : u < 0x28000 · exact baseInterval_0_240 (le_of_not_gt hcut240) hcut241 · by_cases hcut242 : u < 0x280b9 · exact baseInterval_0_241 (le_of_not_gt hcut241) hcut242 · exact baseInterval_0_242 (le_of_not_gt hcut242) hcut243 · by_cases hcut245 : u < 0x2cd9c · by_cases hcut244 : u < 0x2b3fb · exact baseInterval_0_243 (le_of_not_gt hcut243) hcut244 · exact baseInterval_0_244 (le_of_not_gt hcut244) hcut245 · by_cases hcut246 : u < 0x300de · exact baseInterval_0_245 (le_of_not_gt hcut245) hcut246 · by_cases hcut247 : u < (0x100000 / 5) · exact baseInterval_0_246 (le_of_not_gt hcut246) hcut247 · exact baseInterval_0_247 (le_of_not_gt hcut247) hcut248 · by_cases hcut257 : u < 0x50000 · by_cases hcut252 : u < 0x40000 · by_cases hcut250 : u < 0x38103 · by_cases hcut249 : u < 0x38000 · exact baseInterval_0_248 (le_of_not_gt hcut248) hcut249 · exact baseInterval_0_249 (le_of_not_gt hcut249) hcut250 · by_cases hcut251 : u < 0x3bcd0 · exact baseInterval_0_250 (le_of_not_gt hcut250) hcut251 · exact baseInterval_0_251 (le_of_not_gt hcut251) hcut252 · by_cases hcut254 : u < 0x4346a · by_cases hcut253 : u < 0x40128 · exact baseInterval_0_252 (le_of_not_gt hcut252) hcut253 · exact baseInterval_0_253 (le_of_not_gt hcut253) hcut254 · by_cases hcut255 : u < (0x280000 / 9) · exact baseInterval_0_254 (le_of_not_gt hcut254) hcut255 · by_cases hcut256 : u < (0x1853d3 / 5) · exact baseInterval_0_255 (le_of_not_gt hcut255) hcut256 · exact baseInterval_0_256 (le_of_not_gt hcut256) hcut257 · by_cases hcut262 : u < 0x601bc · by_cases hcut259 : u < 0x567f6 · by_cases hcut258 : u < (0x100000 / 3) · exact baseInterval_0_257 (le_of_not_gt hcut257) hcut258 · exact baseInterval_0_258 (le_of_not_gt hcut258) hcut259 · by_cases hcut260 : u < (0x320000 / 9) · exact baseInterval_0_259 (le_of_not_gt hcut259) hcut260 · by_cases hcut261 : u < 0x59b38 · exact baseInterval_0_260 (le_of_not_gt hcut260) hcut261 · exact baseInterval_0_261 (le_of_not_gt hcut261) hcut262 · by_cases hcut264 : u < (0x206fc4 / 5) · by_cases hcut263 : u < 0x64000 · exact baseInterval_0_262 (le_of_not_gt hcut262) hcut263 · exact baseInterval_0_263 (le_of_not_gt hcut263) hcut264 · by_cases hcut265 : u < (0x140000 / 3) · exact baseInterval_0_264 (le_of_not_gt hcut264) hcut265 · by_cases hcut266 : u < 0x70000 · exact baseInterval_0_265 (le_of_not_gt hcut265) hcut266 · exact baseInterval_0_266 (le_of_not_gt hcut266) hcut267 · by_cases hcut286 : u < 0xe0000 · by_cases hcut276 : u < 0x9cfa2 · by_cases hcut271 : u < 0x81bf1 · by_cases hcut269 : u < 0x80000 · by_cases hcut268 : u < (0x460000 / 9) · exact baseInterval_0_267 (le_of_not_gt hcut267) hcut268 · exact baseInterval_0_268 (le_of_not_gt hcut268) hcut269 · by_cases hcut270 : u < 0x80250 · exact baseInterval_0_269 (le_of_not_gt hcut269) hcut270 · exact baseInterval_0_270 (le_of_not_gt hcut270) hcut271 · by_cases hcut273 : u < 0x8c000 · by_cases hcut272 : u < 0x868d4 · exact baseInterval_0_271 (le_of_not_gt hcut271) hcut272 · exact baseInterval_0_272 (le_of_not_gt hcut272) hcut273 · by_cases hcut274 : u < (0x500000 / 9) · exact baseInterval_0_273 (le_of_not_gt hcut273) hcut274 · by_cases hcut275 : u < (0x1c0000 / 3) · exact baseInterval_0_274 (le_of_not_gt hcut274) hcut275 · exact baseInterval_0_275 (le_of_not_gt hcut275) hcut276 · by_cases hcut281 : u < 0xc8000 · by_cases hcut278 : u < (0x200000 / 3) · by_cases hcut277 : u < 0xa0000 · exact baseInterval_0_276 (le_of_not_gt hcut276) hcut277 · exact baseInterval_0_277 (le_of_not_gt hcut277) hcut278 · by_cases hcut279 : u < (0x640000 / 9) · exact baseInterval_0_278 (le_of_not_gt hcut278) hcut279 · by_cases hcut280 : u < 0xb3670 · exact baseInterval_0_279 (le_of_not_gt hcut279) hcut280 · exact baseInterval_0_280 (le_of_not_gt hcut280) hcut281 · by_cases hcut283 : u < (0x400000 / 5) · by_cases hcut282 : u < 0xc839d · exact baseInterval_0_281 (le_of_not_gt hcut281) hcut282 · exact baseInterval_0_282 (le_of_not_gt hcut282) hcut283 · by_cases hcut284 : u < 0xcd080 · exact baseInterval_0_283 (le_of_not_gt hcut283) hcut284 · by_cases hcut285 : u < 0xd5930 · exact baseInterval_0_284 (le_of_not_gt hcut284) hcut285 · exact baseInterval_0_285 (le_of_not_gt hcut285) hcut286 · by_cases hcut296 : u < 0x12b010 · by_cases hcut291 : u < 0x1004a0 · by_cases hcut288 : u < 0xf0456 · by_cases hcut287 : u < (0x48fb79 / 5) · exact baseInterval_0_286 (le_of_not_gt hcut286) hcut287 · exact baseInterval_0_287 (le_of_not_gt hcut287) hcut288 · by_cases hcut289 : u < (0x8c0000 / 9) · exact baseInterval_0_288 (le_of_not_gt hcut288) hcut289 · by_cases hcut290 : u < 0x100000 · exact baseInterval_0_289 (le_of_not_gt hcut289) hcut290 · exact baseInterval_0_290 (le_of_not_gt hcut290) hcut291 · by_cases hcut293 : u < 0x118000 · by_cases hcut292 : u < 0x1037e2 · exact baseInterval_0_291 (le_of_not_gt hcut291) hcut292 · exact baseInterval_0_292 (le_of_not_gt hcut292) hcut293 · by_cases hcut294 : u < 0x11850f · exact baseInterval_0_293 (le_of_not_gt hcut293) hcut294 · by_cases hcut295 : u < (0xa00000 / 9) · exact baseInterval_0_294 (le_of_not_gt hcut294) hcut295 · exact baseInterval_0_295 (le_of_not_gt hcut295) hcut296 · by_cases hcut301 : u < (0x400000 / 3) · by_cases hcut298 : u < 0x140000 · by_cases hcut297 : u < (0x614f4c / 5) · exact baseInterval_0_296 (le_of_not_gt hcut296) hcut297 · exact baseInterval_0_297 (le_of_not_gt hcut297) hcut298 · by_cases hcut299 : u < (0x2300000 / 27) · exact baseInterval_0_298 (le_of_not_gt hcut298) hcut299 · by_cases hcut300 : u < 0x150612 · exact baseInterval_0_299 (le_of_not_gt hcut299) hcut300 · exact baseInterval_0_300 (le_of_not_gt hcut300) hcut301 · by_cases hcut303 : u < 0x166ce0 · by_cases hcut302 : u < (0xc80000 / 9) · exact baseInterval_0_301 (le_of_not_gt hcut301) hcut302 · exact baseInterval_0_302 (le_of_not_gt hcut302) hcut303 · by_cases hcut304 : u < 0x1853d3 · exact baseInterval_0_303 (le_of_not_gt hcut303) hcut304 · by_cases hcut305 : u < 0x190000 · exact baseInterval_0_304 (le_of_not_gt hcut304) hcut305 · exact baseInterval_0_305 (le_of_not_gt hcut305) hhi def baseStepValid_1_below_limit {u : ℚ} (hlo : 1 ≤ u) (hhi : u < 0x1921ee) : baseStepValid true u := by by_cases hcut152 : u < 0x1116 · by_cases hcut76 : u < 0xd8 · by_cases hcut38 : u < (0x70 / 3) · by_cases hcut19 : u < (28 / 3) · by_cases hcut9 : u < 5 · by_cases hcut4 : u < (12 / 5) · by_cases hcut2 : u < (9 / 5) · by_cases hcut1 : u < (4 / 3) · exact baseInterval_1_0 hlo hcut1 · exact baseInterval_1_1 (le_of_not_gt hcut1) hcut2 · by_cases hcut3 : u < 2 · exact baseInterval_1_2 (le_of_not_gt hcut2) hcut3 · exact baseInterval_1_3 (le_of_not_gt hcut3) hcut4 · by_cases hcut6 : u < 3 · by_cases hcut5 : u < (8 / 3) · exact baseInterval_1_4 (le_of_not_gt hcut4) hcut5 · exact baseInterval_1_5 (le_of_not_gt hcut5) hcut6 · by_cases hcut7 : u < (16 / 5) · exact baseInterval_1_6 (le_of_not_gt hcut6) hcut7 · by_cases hcut8 : u < 4 · exact baseInterval_1_7 (le_of_not_gt hcut7) hcut8 · exact baseInterval_1_8 (le_of_not_gt hcut8) hcut9 · by_cases hcut14 : u < 7 · by_cases hcut11 : u < (27 / 5) · by_cases hcut10 : u < (16 / 3) · exact baseInterval_1_9 (le_of_not_gt hcut9) hcut10 · exact baseInterval_1_10 (le_of_not_gt hcut10) hcut11 · by_cases hcut12 : u < 6 · exact baseInterval_1_11 (le_of_not_gt hcut11) hcut12 · by_cases hcut13 : u < (20 / 3) · exact baseInterval_1_12 (le_of_not_gt hcut12) hcut13 · exact baseInterval_1_13 (le_of_not_gt hcut13) hcut14 · by_cases hcut16 : u < 8 · by_cases hcut15 : u < (36 / 5) · exact baseInterval_1_14 (le_of_not_gt hcut14) hcut15 · exact baseInterval_1_15 (le_of_not_gt hcut15) hcut16 · by_cases hcut17 : u < (80 / 9) · exact baseInterval_1_16 (le_of_not_gt hcut16) hcut17 · by_cases hcut18 : u < 9 · exact baseInterval_1_17 (le_of_not_gt hcut17) hcut18 · exact baseInterval_1_18 (le_of_not_gt hcut18) hcut19 · by_cases hcut28 : u < 18 · by_cases hcut23 : u < (40 / 3) · by_cases hcut21 : u < (32 / 3) · by_cases hcut20 : u < 10 · exact baseInterval_1_19 (le_of_not_gt hcut19) hcut20 · exact baseInterval_1_20 (le_of_not_gt hcut20) hcut21 · by_cases hcut22 : u < (64 / 5) · exact baseInterval_1_21 (le_of_not_gt hcut21) hcut22 · exact baseInterval_1_22 (le_of_not_gt hcut22) hcut23 · by_cases hcut25 : u < 16 · by_cases hcut24 : u < 14 · exact baseInterval_1_23 (le_of_not_gt hcut23) hcut24 · exact baseInterval_1_24 (le_of_not_gt hcut24) hcut25 · by_cases hcut26 : u < (81 / 5) · exact baseInterval_1_25 (le_of_not_gt hcut25) hcut26 · by_cases hcut27 : u < (0xa0 / 9) · exact baseInterval_1_26 (le_of_not_gt hcut26) hcut27 · exact baseInterval_1_27 (le_of_not_gt hcut27) hcut28 · by_cases hcut33 : u < (80 / 3) · by_cases hcut30 : u < 20 · by_cases hcut29 : u < (56 / 3) · exact baseInterval_1_28 (le_of_not_gt hcut28) hcut29 · exact baseInterval_1_29 (le_of_not_gt hcut29) hcut30 · by_cases hcut31 : u < (64 / 3) · exact baseInterval_1_30 (le_of_not_gt hcut30) hcut31 · by_cases hcut32 : u < (0x6c / 5) · exact baseInterval_1_31 (le_of_not_gt hcut31) hcut32 · exact baseInterval_1_32 (le_of_not_gt hcut32) hcut33 · by_cases hcut35 : u < 28 · by_cases hcut34 : u < 27 · exact baseInterval_1_33 (le_of_not_gt hcut33) hcut34 · exact baseInterval_1_34 (le_of_not_gt hcut34) hcut35 · by_cases hcut36 : u < 32 · exact baseInterval_1_35 (le_of_not_gt hcut35) hcut36 · by_cases hcut37 : u < (0x140 / 9) · exact baseInterval_1_36 (le_of_not_gt hcut36) hcut37 · exact baseInterval_1_37 (le_of_not_gt hcut37) hcut38 · by_cases hcut57 : u < 0x64 · by_cases hcut47 : u < 56 · by_cases hcut42 : u < (0xf3 / 5) · by_cases hcut40 : u < (0x80 / 3) · by_cases hcut39 : u < 40 · exact baseInterval_1_38 (le_of_not_gt hcut38) hcut39 · exact baseInterval_1_39 (le_of_not_gt hcut39) hcut40 · by_cases hcut41 : u < (0x190 / 9) · exact baseInterval_1_40 (le_of_not_gt hcut40) hcut41 · exact baseInterval_1_41 (le_of_not_gt hcut41) hcut42 · by_cases hcut44 : u < (0x100 / 5) · by_cases hcut43 : u < 50 · exact baseInterval_1_42 (le_of_not_gt hcut42) hcut43 · exact baseInterval_1_43 (le_of_not_gt hcut43) hcut44 · by_cases hcut45 : u < (0xa0 / 3) · exact baseInterval_1_44 (le_of_not_gt hcut44) hcut45 · by_cases hcut46 : u < 54 · exact baseInterval_1_45 (le_of_not_gt hcut45) hcut46 · exact baseInterval_1_46 (le_of_not_gt hcut46) hcut47 · by_cases hcut52 : u < (0x280 / 9) · by_cases hcut49 : u < 64 · by_cases hcut48 : u < (0x230 / 9) · exact baseInterval_1_47 (le_of_not_gt hcut47) hcut48 · exact baseInterval_1_48 (le_of_not_gt hcut48) hcut49 · by_cases hcut50 : u < (0x144 / 5) · exact baseInterval_1_49 (le_of_not_gt hcut49) hcut50 · by_cases hcut51 : u < 70 · exact baseInterval_1_50 (le_of_not_gt hcut50) hcut51 · exact baseInterval_1_51 (le_of_not_gt hcut51) hcut52 · by_cases hcut54 : u < 80 · by_cases hcut53 : u < (0xe0 / 3) · exact baseInterval_1_52 (le_of_not_gt hcut52) hcut53 · exact baseInterval_1_53 (le_of_not_gt hcut53) hcut54 · by_cases hcut55 : u < 81 · exact baseInterval_1_54 (le_of_not_gt hcut54) hcut55 · by_cases hcut56 : u < (0x320 / 9) · exact baseInterval_1_55 (le_of_not_gt hcut55) hcut56 · exact baseInterval_1_56 (le_of_not_gt hcut56) hcut57 · by_cases hcut66 : u < (0x2d9 / 5) · by_cases hcut61 : u < (0x460 / 9) · by_cases hcut59 : u < 0x6c · by_cases hcut58 : u < (0x140 / 3) · exact baseInterval_1_57 (le_of_not_gt hcut57) hcut58 · exact baseInterval_1_58 (le_of_not_gt hcut58) hcut59 · by_cases hcut60 : u < 0x70 · exact baseInterval_1_59 (le_of_not_gt hcut59) hcut60 · exact baseInterval_1_60 (le_of_not_gt hcut60) hcut61 · by_cases hcut63 : u < 0x87 · by_cases hcut62 : u < 0x80 · exact baseInterval_1_61 (le_of_not_gt hcut61) hcut62 · exact baseInterval_1_62 (le_of_not_gt hcut62) hcut63 · by_cases hcut64 : u < 0x8c · exact baseInterval_1_63 (le_of_not_gt hcut63) hcut64 · by_cases hcut65 : u < 0x90 · exact baseInterval_1_64 (le_of_not_gt hcut64) hcut65 · exact baseInterval_1_65 (le_of_not_gt hcut65) hcut66 · by_cases hcut71 : u < 0xbd · by_cases hcut68 : u < 0xa0 · by_cases hcut67 : u < (0x1c0 / 3) · exact baseInterval_1_66 (le_of_not_gt hcut66) hcut67 · exact baseInterval_1_67 (le_of_not_gt hcut67) hcut68 · by_cases hcut69 : u < 0xa2 · exact baseInterval_1_68 (le_of_not_gt hcut68) hcut69 · by_cases hcut70 : u < (0x640 / 9) · exact baseInterval_1_69 (le_of_not_gt hcut69) hcut70 · exact baseInterval_1_70 (le_of_not_gt hcut70) hcut71 · by_cases hcut73 : u < 0xc8 · by_cases hcut72 : u < (0x3cc / 5) · exact baseInterval_1_71 (le_of_not_gt hcut71) hcut72 · exact baseInterval_1_72 (le_of_not_gt hcut72) hcut73 · by_cases hcut74 : u < (0x400 / 5) · exact baseInterval_1_73 (le_of_not_gt hcut73) hcut74 · by_cases hcut75 : u < (0x280 / 3) · exact baseInterval_1_74 (le_of_not_gt hcut74) hcut75 · exact baseInterval_1_75 (le_of_not_gt hcut75) hcut76 · by_cases hcut114 : u < 0x460 · by_cases hcut95 : u < 0x21c · by_cases hcut85 : u < (0x400 / 3) · by_cases hcut80 : u < 0x100 · by_cases hcut78 : u < 0xf3 · by_cases hcut77 : u < 0xe0 · exact baseInterval_1_76 (le_of_not_gt hcut76) hcut77 · exact baseInterval_1_77 (le_of_not_gt hcut77) hcut78 · by_cases hcut79 : u < (0x8c0 / 9) · exact baseInterval_1_78 (le_of_not_gt hcut78) hcut79 · exact baseInterval_1_79 (le_of_not_gt hcut79) hcut80 · by_cases hcut82 : u < (0xa00 / 9) · by_cases hcut81 : u < 0x118 · exact baseInterval_1_80 (le_of_not_gt hcut80) hcut81 · exact baseInterval_1_81 (le_of_not_gt hcut81) hcut82 · by_cases hcut83 : u < (0x380 / 3) · exact baseInterval_1_82 (le_of_not_gt hcut82) hcut83 · by_cases hcut84 : u < 0x140 · exact baseInterval_1_83 (le_of_not_gt hcut83) hcut84 · exact baseInterval_1_84 (le_of_not_gt hcut84) hcut85 · by_cases hcut90 : u < (0x88b / 5) · by_cases hcut87 : u < 0x190 · by_cases hcut86 : u < (0xc80 / 9) · exact baseInterval_1_85 (le_of_not_gt hcut85) hcut86 · exact baseInterval_1_86 (le_of_not_gt hcut86) hcut87 · by_cases hcut88 : u < 0x195 · exact baseInterval_1_87 (le_of_not_gt hcut87) hcut88 · by_cases hcut89 : u < 0x1b0 · exact baseInterval_1_88 (le_of_not_gt hcut88) hcut89 · exact baseInterval_1_89 (le_of_not_gt hcut89) hcut90 · by_cases hcut92 : u < 0x1e6 · by_cases hcut91 : u < 0x1c0 · exact baseInterval_1_90 (le_of_not_gt hcut90) hcut91 · exact baseInterval_1_91 (le_of_not_gt hcut91) hcut92 · by_cases hcut93 : u < (0x1180 / 9) · exact baseInterval_1_92 (le_of_not_gt hcut92) hcut93 · by_cases hcut94 : u < 0x200 · exact baseInterval_1_93 (le_of_not_gt hcut93) hcut94 · exact baseInterval_1_94 (le_of_not_gt hcut94) hcut95 · by_cases hcut104 : u < 0x2f4 · by_cases hcut99 : u < (0xb64 / 5) · by_cases hcut97 : u < 0x237 · by_cases hcut96 : u < 0x230 · exact baseInterval_1_95 (le_of_not_gt hcut95) hcut96 · exact baseInterval_1_96 (le_of_not_gt hcut96) hcut97 · by_cases hcut98 : u < (0x1400 / 9) · exact baseInterval_1_97 (le_of_not_gt hcut97) hcut98 · exact baseInterval_1_98 (le_of_not_gt hcut98) hcut99 · by_cases hcut101 : u < 0x2a3 · by_cases hcut100 : u < 0x280 · exact baseInterval_1_99 (le_of_not_gt hcut99) hcut100 · exact baseInterval_1_100 (le_of_not_gt hcut100) hcut101 · by_cases hcut102 : u < 0x2d0 · exact baseInterval_1_101 (le_of_not_gt hcut101) hcut102 · by_cases hcut103 : u < 0x2d9 · exact baseInterval_1_102 (le_of_not_gt hcut102) hcut103 · exact baseInterval_1_103 (le_of_not_gt hcut103) hcut104 · by_cases hcut109 : u < 0x380 · by_cases hcut106 : u < 0x32a · by_cases hcut105 : u < 0x320 · exact baseInterval_1_104 (le_of_not_gt hcut104) hcut105 · exact baseInterval_1_105 (le_of_not_gt hcut105) hcut106 · by_cases hcut107 : u < (0x1000 / 5) · exact baseInterval_1_106 (le_of_not_gt hcut106) hcut107 · by_cases hcut108 : u < 0x360 · exact baseInterval_1_107 (le_of_not_gt hcut107) hcut108 · exact baseInterval_1_108 (le_of_not_gt hcut108) hcut109 · by_cases hcut111 : u < 0x3f0 · by_cases hcut110 : u < 0x3b1 · exact baseInterval_1_109 (le_of_not_gt hcut109) hcut110 · exact baseInterval_1_110 (le_of_not_gt hcut110) hcut111 · by_cases hcut112 : u < 0x400 · exact baseInterval_1_111 (le_of_not_gt hcut111) hcut112 · by_cases hcut113 : u < 0x438 · exact baseInterval_1_112 (le_of_not_gt hcut112) hcut113 · exact baseInterval_1_113 (le_of_not_gt hcut113) hcut114 · by_cases hcut133 : u < (0x5000 / 9) · by_cases hcut123 : u < 0x640 · by_cases hcut118 : u < (0x19a1 / 5) · by_cases hcut116 : u < (0x2800 / 9) · by_cases hcut115 : u < 0x46e · exact baseInterval_1_114 (le_of_not_gt hcut114) hcut115 · exact baseInterval_1_115 (le_of_not_gt hcut115) hcut116 · by_cases hcut117 : u < 0x500 · exact baseInterval_1_116 (le_of_not_gt hcut116) hcut117 · exact baseInterval_1_117 (le_of_not_gt hcut117) hcut118 · by_cases hcut120 : u < (0x3200 / 9) · by_cases hcut119 : u < (0x1000 / 3) · exact baseInterval_1_118 (le_of_not_gt hcut118) hcut119 · exact baseInterval_1_119 (le_of_not_gt hcut119) hcut120 · by_cases hcut121 : u < 0x5b2 · exact baseInterval_1_120 (le_of_not_gt hcut120) hcut121 · by_cases hcut122 : u < 0x5e8 · exact baseInterval_1_121 (le_of_not_gt hcut121) hcut122 · exact baseInterval_1_122 (le_of_not_gt hcut122) hcut123 · by_cases hcut128 : u < 0x7e9 · by_cases hcut125 : u < (0x222c / 5) · by_cases hcut124 : u < (0x1400 / 3) · exact baseInterval_1_123 (le_of_not_gt hcut123) hcut124 · exact baseInterval_1_124 (le_of_not_gt hcut124) hcut125 · by_cases hcut126 : u < 0x700 · exact baseInterval_1_125 (le_of_not_gt hcut125) hcut126 · by_cases hcut127 : u < (0x4600 / 9) · exact baseInterval_1_126 (le_of_not_gt hcut126) hcut127 · exact baseInterval_1_127 (le_of_not_gt hcut127) hcut128 · by_cases hcut130 : u < 0x870 · by_cases hcut129 : u < 0x800 · exact baseInterval_1_128 (le_of_not_gt hcut128) hcut129 · exact baseInterval_1_129 (le_of_not_gt hcut129) hcut130 · by_cases hcut131 : u < 0x88b · exact baseInterval_1_130 (le_of_not_gt hcut130) hcut131 · by_cases hcut132 : u < 0x8c0 · exact baseInterval_1_131 (le_of_not_gt hcut131) hcut132 · exact baseInterval_1_132 (le_of_not_gt hcut132) hcut133 · by_cases hcut142 : u < 0xd2f · by_cases hcut137 : u < 0xb13 · by_cases hcut135 : u < 0xa00 · by_cases hcut134 : u < (0x1c00 / 3) · exact baseInterval_1_133 (le_of_not_gt hcut133) hcut134 · exact baseInterval_1_134 (le_of_not_gt hcut134) hcut135 · by_cases hcut136 : u < (0x2000 / 3) · exact baseInterval_1_135 (le_of_not_gt hcut135) hcut136 · exact baseInterval_1_136 (le_of_not_gt hcut136) hcut137 · by_cases hcut139 : u < 0xbd0 · by_cases hcut138 : u < (0x6400 / 9) · exact baseInterval_1_137 (le_of_not_gt hcut137) hcut138 · exact baseInterval_1_138 (le_of_not_gt hcut138) hcut139 · by_cases hcut140 : u < 0xc80 · exact baseInterval_1_139 (le_of_not_gt hcut139) hcut140 · by_cases hcut141 : u < (0x4000 / 5) · exact baseInterval_1_140 (le_of_not_gt hcut140) hcut141 · exact baseInterval_1_141 (le_of_not_gt hcut141) hcut142 · by_cases hcut147 : u < (0x8c00 / 9) · by_cases hcut144 : u < 0xe00 · by_cases hcut143 : u < 0xd80 · exact baseInterval_1_142 (le_of_not_gt hcut142) hcut143 · exact baseInterval_1_143 (le_of_not_gt hcut143) hcut144 · by_cases hcut145 : u < 0xe10 · exact baseInterval_1_144 (le_of_not_gt hcut144) hcut145 · by_cases hcut146 : u < (0x4ce3 / 5) · exact baseInterval_1_145 (le_of_not_gt hcut145) hcut146 · exact baseInterval_1_146 (le_of_not_gt hcut146) hcut147 · by_cases hcut149 : u < 0xfd2 · by_cases hcut148 : u < 0xfa0 · exact baseInterval_1_147 (le_of_not_gt hcut147) hcut148 · exact baseInterval_1_148 (le_of_not_gt hcut148) hcut149 · by_cases hcut150 : u < 0x1000 · exact baseInterval_1_149 (le_of_not_gt hcut149) hcut150 · by_cases hcut151 : u < 0x10e0 · exact baseInterval_1_150 (le_of_not_gt hcut150) hcut151 · exact baseInterval_1_151 (le_of_not_gt hcut151) hcut152 · by_cases hcut228 : u < 0x1806f · by_cases hcut190 : u < 0x4ce3 · by_cases hcut171 : u < (0x14000 / 9) · by_cases hcut161 : u < 0x1626 · by_cases hcut156 : u < 0x13b0 · by_cases hcut154 : u < (0xa000 / 9) · by_cases hcut153 : u < 0x1180 · exact baseInterval_1_152 (le_of_not_gt hcut152) hcut153 · exact baseInterval_1_153 (le_of_not_gt hcut153) hcut154 · by_cases hcut155 : u < 0x1275 · exact baseInterval_1_154 (le_of_not_gt hcut154) hcut155 · exact baseInterval_1_155 (le_of_not_gt hcut155) hcut156 · by_cases hcut158 : u < (0x6684 / 5) · by_cases hcut157 : u < 0x1400 · exact baseInterval_1_156 (le_of_not_gt hcut156) hcut157 · exact baseInterval_1_157 (le_of_not_gt hcut157) hcut158 · by_cases hcut159 : u < (0x23000 / 27) · exact baseInterval_1_158 (le_of_not_gt hcut158) hcut159 · by_cases hcut160 : u < 0x15e0 · exact baseInterval_1_159 (le_of_not_gt hcut159) hcut160 · exact baseInterval_1_160 (le_of_not_gt hcut160) hcut161 · by_cases hcut166 : u < (0x5000 / 3) · by_cases hcut163 : u < 0x17a0 · by_cases hcut162 : u < (0xc800 / 9) · exact baseInterval_1_161 (le_of_not_gt hcut161) hcut162 · exact baseInterval_1_162 (le_of_not_gt hcut162) hcut163 · by_cases hcut164 : u < 0x1900 · exact baseInterval_1_163 (le_of_not_gt hcut163) hcut164 · by_cases hcut165 : u < 0x19a1 · exact baseInterval_1_164 (le_of_not_gt hcut164) hcut165 · exact baseInterval_1_165 (le_of_not_gt hcut165) hcut166 · by_cases hcut168 : u < (0x11800 / 9) · by_cases hcut167 : u < 0x1c00 · exact baseInterval_1_166 (le_of_not_gt hcut166) hcut167 · exact baseInterval_1_167 (le_of_not_gt hcut167) hcut168 · by_cases hcut169 : u < 0x2000 · exact baseInterval_1_168 (le_of_not_gt hcut168) hcut169 · by_cases hcut170 : u < 0x2300 · exact baseInterval_1_169 (le_of_not_gt hcut169) hcut170 · exact baseInterval_1_170 (le_of_not_gt hcut170) hcut171 · by_cases hcut180 : u < (0xa000 / 3) · by_cases hcut175 : u < (0x19000 / 9) · by_cases hcut173 : u < 0x2800 · by_cases hcut172 : u < (0x7000 / 3) · exact baseInterval_1_171 (le_of_not_gt hcut171) hcut172 · exact baseInterval_1_172 (le_of_not_gt hcut172) hcut173 · by_cases hcut174 : u < (0x8000 / 3) · exact baseInterval_1_173 (le_of_not_gt hcut173) hcut174 · exact baseInterval_1_174 (le_of_not_gt hcut174) hcut175 · by_cases hcut177 : u < 0x3200 · by_cases hcut176 : u < (0xe6a9 / 5) · exact baseInterval_1_175 (le_of_not_gt hcut175) hcut176 · exact baseInterval_1_176 (le_of_not_gt hcut176) hcut177 · by_cases hcut178 : u < (0x10000 / 5) · exact baseInterval_1_177 (le_of_not_gt hcut177) hcut178 · by_cases hcut179 : u < 0x3342 · exact baseInterval_1_178 (le_of_not_gt hcut178) hcut179 · exact baseInterval_1_179 (le_of_not_gt hcut179) hcut180 · by_cases hcut185 : u < 0x41eb · by_cases hcut182 : u < (0x1338c / 5) · by_cases hcut181 : u < 0x3800 · exact baseInterval_1_180 (le_of_not_gt hcut180) hcut181 · exact baseInterval_1_181 (le_of_not_gt hcut181) hcut182 · by_cases hcut183 : u < (0x23000 / 9) · exact baseInterval_1_182 (le_of_not_gt hcut182) hcut183 · by_cases hcut184 : u < 0x4000 · exact baseInterval_1_183 (le_of_not_gt hcut183) hcut184 · exact baseInterval_1_184 (le_of_not_gt hcut184) hcut185 · by_cases hcut187 : u < 0x4600 · by_cases hcut186 : u < 0x4380 · exact baseInterval_1_185 (le_of_not_gt hcut185) hcut186 · exact baseInterval_1_186 (le_of_not_gt hcut186) hcut187 · by_cases hcut188 : u < (0x28000 / 9) · exact baseInterval_1_187 (le_of_not_gt hcut187) hcut188 · by_cases hcut189 : u < (0xe000 / 3) · exact baseInterval_1_188 (le_of_not_gt hcut188) hcut189 · exact baseInterval_1_189 (le_of_not_gt hcut189) hcut190 · by_cases hcut209 : u < 0xa000 · by_cases hcut199 : u < 0x7000 · by_cases hcut194 : u < 0x5e80 · by_cases hcut192 : u < (0x32000 / 9) · by_cases hcut191 : u < 0x5000 · exact baseInterval_1_190 (le_of_not_gt hcut190) hcut191 · exact baseInterval_1_191 (le_of_not_gt hcut191) hcut192 · by_cases hcut193 : u < 0x5c49 · exact baseInterval_1_192 (le_of_not_gt hcut192) hcut193 · exact baseInterval_1_193 (le_of_not_gt hcut193) hcut194 · by_cases hcut196 : u < 0x6684 · by_cases hcut195 : u < 0x6400 · exact baseInterval_1_194 (le_of_not_gt hcut194) hcut195 · exact baseInterval_1_195 (le_of_not_gt hcut195) hcut196 · by_cases hcut197 : u < (0xaf000 / 27) · exact baseInterval_1_196 (le_of_not_gt hcut196) hcut197 · by_cases hcut198 : u < 0x6d60 · exact baseInterval_1_197 (le_of_not_gt hcut197) hcut198 · exact baseInterval_1_198 (le_of_not_gt hcut198) hcut199 · by_cases hcut204 : u < (0x2b3fb / 5) · by_cases hcut201 : u < 0x8000 · by_cases hcut200 : u < (0x46000 / 9) · exact baseInterval_1_199 (le_of_not_gt hcut199) hcut200 · exact baseInterval_1_200 (le_of_not_gt hcut200) hcut201 · by_cases hcut202 : u < 0x8025 · exact baseInterval_1_201 (le_of_not_gt hcut201) hcut202 · by_cases hcut203 : u < 0x88b0 · exact baseInterval_1_202 (le_of_not_gt hcut202) hcut203 · exact baseInterval_1_203 (le_of_not_gt hcut203) hcut204 · by_cases hcut206 : u < (0xf5000 / 27) · by_cases hcut205 : u < 0x8c00 · exact baseInterval_1_204 (le_of_not_gt hcut204) hcut205 · exact baseInterval_1_205 (le_of_not_gt hcut205) hcut206 · by_cases hcut207 : u < 0x9920 · exact baseInterval_1_206 (le_of_not_gt hcut206) hcut207 · by_cases hcut208 : u < 0x99c6 · exact baseInterval_1_207 (le_of_not_gt hcut207) hcut208 · exact baseInterval_1_208 (le_of_not_gt hcut208) hcut209 · by_cases hcut218 : u < 0xe6a9 · by_cases hcut213 : u < 0xc800 · by_cases hcut211 : u < 0xb367 · by_cases hcut210 : u < (0x64000 / 9) · exact baseInterval_1_209 (le_of_not_gt hcut209) hcut210 · exact baseInterval_1_210 (le_of_not_gt hcut210) hcut211 · by_cases hcut212 : u < (0x39aa4 / 5) · exact baseInterval_1_211 (le_of_not_gt hcut211) hcut212 · exact baseInterval_1_212 (le_of_not_gt hcut212) hcut213 · by_cases hcut215 : u < 0xcd08 · by_cases hcut214 : u < (0x40000 / 5) · exact baseInterval_1_213 (le_of_not_gt hcut213) hcut214 · exact baseInterval_1_214 (le_of_not_gt hcut214) hcut215 · by_cases hcut216 : u < (0x28000 / 3) · exact baseInterval_1_215 (le_of_not_gt hcut215) hcut216 · by_cases hcut217 : u < 0xe000 · exact baseInterval_1_216 (le_of_not_gt hcut216) hcut217 · exact baseInterval_1_217 (le_of_not_gt hcut217) hcut218 · by_cases hcut223 : u < (0x38000 / 3) · by_cases hcut220 : u < 0x10000 · by_cases hcut219 : u < (0x8c000 / 9) · exact baseInterval_1_218 (le_of_not_gt hcut218) hcut219 · exact baseInterval_1_219 (le_of_not_gt hcut219) hcut220 · by_cases hcut221 : u < 0x11800 · exact baseInterval_1_220 (le_of_not_gt hcut220) hcut221 · by_cases hcut222 : u < (0xa0000 / 9) · exact baseInterval_1_221 (le_of_not_gt hcut221) hcut222 · exact baseInterval_1_222 (le_of_not_gt hcut222) hcut223 · by_cases hcut225 : u < 0x14000 · by_cases hcut224 : u < 0x1338c · exact baseInterval_1_223 (le_of_not_gt hcut223) hcut224 · exact baseInterval_1_224 (le_of_not_gt hcut224) hcut225 · by_cases hcut226 : u < (0x40000 / 3) · exact baseInterval_1_225 (le_of_not_gt hcut225) hcut226 · by_cases hcut227 : u < (0xc8000 / 9) · exact baseInterval_1_226 (le_of_not_gt hcut226) hcut227 · exact baseInterval_1_227 (le_of_not_gt hcut227) hcut228 · by_cases hcut266 : u < 0x7822b · by_cases hcut247 : u < 0x33420 · by_cases hcut237 : u < 0x21a35 · by_cases hcut232 : u < 0x1c000 · by_cases hcut230 : u < (0x81bf1 / 5) · by_cases hcut229 : u < 0x19a10 · exact baseInterval_1_228 (le_of_not_gt hcut228) hcut229 · exact baseInterval_1_229 (le_of_not_gt hcut229) hcut230 · by_cases hcut231 : u < (0x868d4 / 5) · exact baseInterval_1_230 (le_of_not_gt hcut230) hcut231 · exact baseInterval_1_231 (le_of_not_gt hcut231) hcut232 · by_cases hcut234 : u < (0x118000 / 9) · by_cases hcut233 : u < 0x1cd52 · exact baseInterval_1_232 (le_of_not_gt hcut232) hcut233 · exact baseInterval_1_233 (le_of_not_gt hcut233) hcut234 · by_cases hcut235 : u < 0x20000 · exact baseInterval_1_234 (le_of_not_gt hcut234) hcut235 · by_cases hcut236 : u < 0x20094 · exact baseInterval_1_235 (le_of_not_gt hcut235) hcut236 · exact baseInterval_1_236 (le_of_not_gt hcut236) hcut237 · by_cases hcut242 : u < 0x2ab70 · by_cases hcut239 : u < (0x140000 / 9) · by_cases hcut238 : u < (0xacfec / 5) · exact baseInterval_1_237 (le_of_not_gt hcut237) hcut238 · exact baseInterval_1_238 (le_of_not_gt hcut238) hcut239 · by_cases hcut240 : u < 0x28000 · exact baseInterval_1_239 (le_of_not_gt hcut239) hcut240 · by_cases hcut241 : u < 0x280b9 · exact baseInterval_1_240 (le_of_not_gt hcut240) hcut241 · exact baseInterval_1_241 (le_of_not_gt hcut241) hcut242 · by_cases hcut244 : u < 0x2cd9c · by_cases hcut243 : u < 0x2b3fb · exact baseInterval_1_242 (le_of_not_gt hcut242) hcut243 · exact baseInterval_1_243 (le_of_not_gt hcut243) hcut244 · by_cases hcut245 : u < 0x300de · exact baseInterval_1_244 (le_of_not_gt hcut244) hcut245 · by_cases hcut246 : u < (0x100000 / 5) · exact baseInterval_1_245 (le_of_not_gt hcut245) hcut246 · exact baseInterval_1_246 (le_of_not_gt hcut246) hcut247 · by_cases hcut256 : u < 0x50000 · by_cases hcut251 : u < 0x40000 · by_cases hcut249 : u < 0x38103 · by_cases hcut248 : u < 0x38000 · exact baseInterval_1_247 (le_of_not_gt hcut247) hcut248 · exact baseInterval_1_248 (le_of_not_gt hcut248) hcut249 · by_cases hcut250 : u < 0x3bcd0 · exact baseInterval_1_249 (le_of_not_gt hcut249) hcut250 · exact baseInterval_1_250 (le_of_not_gt hcut250) hcut251 · by_cases hcut253 : u < 0x4346a · by_cases hcut252 : u < 0x40128 · exact baseInterval_1_251 (le_of_not_gt hcut251) hcut252 · exact baseInterval_1_252 (le_of_not_gt hcut252) hcut253 · by_cases hcut254 : u < (0x280000 / 9) · exact baseInterval_1_253 (le_of_not_gt hcut253) hcut254 · by_cases hcut255 : u < (0x1853d3 / 5) · exact baseInterval_1_254 (le_of_not_gt hcut254) hcut255 · exact baseInterval_1_255 (le_of_not_gt hcut255) hcut256 · by_cases hcut261 : u < 0x601bc · by_cases hcut258 : u < 0x567f6 · by_cases hcut257 : u < (0x100000 / 3) · exact baseInterval_1_256 (le_of_not_gt hcut256) hcut257 · exact baseInterval_1_257 (le_of_not_gt hcut257) hcut258 · by_cases hcut259 : u < (0x320000 / 9) · exact baseInterval_1_258 (le_of_not_gt hcut258) hcut259 · by_cases hcut260 : u < 0x59b38 · exact baseInterval_1_259 (le_of_not_gt hcut259) hcut260 · exact baseInterval_1_260 (le_of_not_gt hcut260) hcut261 · by_cases hcut263 : u < (0x206fc4 / 5) · by_cases hcut262 : u < 0x64000 · exact baseInterval_1_261 (le_of_not_gt hcut261) hcut262 · exact baseInterval_1_262 (le_of_not_gt hcut262) hcut263 · by_cases hcut264 : u < (0x140000 / 3) · exact baseInterval_1_263 (le_of_not_gt hcut263) hcut264 · by_cases hcut265 : u < 0x70000 · exact baseInterval_1_264 (le_of_not_gt hcut264) hcut265 · exact baseInterval_1_265 (le_of_not_gt hcut265) hcut266 · by_cases hcut285 : u < 0xe0000 · by_cases hcut275 : u < 0xa0000 · by_cases hcut270 : u < 0x81bf1 · by_cases hcut268 : u < 0x80000 · by_cases hcut267 : u < (0x460000 / 9) · exact baseInterval_1_266 (le_of_not_gt hcut266) hcut267 · exact baseInterval_1_267 (le_of_not_gt hcut267) hcut268 · by_cases hcut269 : u < 0x80250 · exact baseInterval_1_268 (le_of_not_gt hcut268) hcut269 · exact baseInterval_1_269 (le_of_not_gt hcut269) hcut270 · by_cases hcut272 : u < 0x8c000 · by_cases hcut271 : u < 0x868d4 · exact baseInterval_1_270 (le_of_not_gt hcut270) hcut271 · exact baseInterval_1_271 (le_of_not_gt hcut271) hcut272 · by_cases hcut273 : u < (0x500000 / 9) · exact baseInterval_1_272 (le_of_not_gt hcut272) hcut273 · by_cases hcut274 : u < (0x1c0000 / 3) · exact baseInterval_1_273 (le_of_not_gt hcut273) hcut274 · exact baseInterval_1_274 (le_of_not_gt hcut274) hcut275 · by_cases hcut280 : u < 0xc8000 · by_cases hcut277 : u < (0x200000 / 3) · by_cases hcut276 : u < 0xa8309 · exact baseInterval_1_275 (le_of_not_gt hcut275) hcut276 · exact baseInterval_1_276 (le_of_not_gt hcut276) hcut277 · by_cases hcut278 : u < (0x640000 / 9) · exact baseInterval_1_277 (le_of_not_gt hcut277) hcut278 · by_cases hcut279 : u < 0xb3670 · exact baseInterval_1_278 (le_of_not_gt hcut278) hcut279 · exact baseInterval_1_279 (le_of_not_gt hcut279) hcut280 · by_cases hcut282 : u < (0x400000 / 5) · by_cases hcut281 : u < 0xc839d · exact baseInterval_1_280 (le_of_not_gt hcut280) hcut281 · exact baseInterval_1_281 (le_of_not_gt hcut281) hcut282 · by_cases hcut283 : u < 0xcd080 · exact baseInterval_1_282 (le_of_not_gt hcut282) hcut283 · by_cases hcut284 : u < 0xd5930 · exact baseInterval_1_283 (le_of_not_gt hcut283) hcut284 · exact baseInterval_1_284 (le_of_not_gt hcut284) hcut285 · by_cases hcut295 : u < 0x12b010 · by_cases hcut290 : u < 0x1004a0 · by_cases hcut287 : u < 0xf0456 · by_cases hcut286 : u < (0x48fb79 / 5) · exact baseInterval_1_285 (le_of_not_gt hcut285) hcut286 · exact baseInterval_1_286 (le_of_not_gt hcut286) hcut287 · by_cases hcut288 : u < (0x8c0000 / 9) · exact baseInterval_1_287 (le_of_not_gt hcut287) hcut288 · by_cases hcut289 : u < 0x100000 · exact baseInterval_1_288 (le_of_not_gt hcut288) hcut289 · exact baseInterval_1_289 (le_of_not_gt hcut289) hcut290 · by_cases hcut292 : u < 0x118000 · by_cases hcut291 : u < 0x1037e2 · exact baseInterval_1_290 (le_of_not_gt hcut290) hcut291 · exact baseInterval_1_291 (le_of_not_gt hcut291) hcut292 · by_cases hcut293 : u < 0x11850f · exact baseInterval_1_292 (le_of_not_gt hcut292) hcut293 · by_cases hcut294 : u < (0xa00000 / 9) · exact baseInterval_1_293 (le_of_not_gt hcut293) hcut294 · exact baseInterval_1_294 (le_of_not_gt hcut294) hcut295 · by_cases hcut300 : u < (0x400000 / 3) · by_cases hcut297 : u < 0x140000 · by_cases hcut296 : u < (0x614f4c / 5) · exact baseInterval_1_295 (le_of_not_gt hcut295) hcut296 · exact baseInterval_1_296 (le_of_not_gt hcut296) hcut297 · by_cases hcut298 : u < (0x2300000 / 27) · exact baseInterval_1_297 (le_of_not_gt hcut297) hcut298 · by_cases hcut299 : u < 0x150612 · exact baseInterval_1_298 (le_of_not_gt hcut298) hcut299 · exact baseInterval_1_299 (le_of_not_gt hcut299) hcut300 · by_cases hcut302 : u < 0x166ce0 · by_cases hcut301 : u < (0xc80000 / 9) · exact baseInterval_1_300 (le_of_not_gt hcut300) hcut301 · exact baseInterval_1_301 (le_of_not_gt hcut301) hcut302 · by_cases hcut303 : u < 0x1853d3 · exact baseInterval_1_302 (le_of_not_gt hcut302) hcut303 · by_cases hcut304 : u < 0x190000 · exact baseInterval_1_303 (le_of_not_gt hcut303) hcut304 · exact baseInterval_1_304 (le_of_not_gt hcut304) hhi def baseStepValid_below_limit (eps : Bool) {u : ℚ} (hlo : 1 ≤ u) (hhi : u < 0x1921ee) : baseStepValid eps u := by cases eps · exact baseStepValid_0_below_limit hlo hhi · exact baseStepValid_1_below_limit hlo hhi def cutoffState_eq_base (eps : Bool) (u : ℚ) (hu : u < 0x1921ee) : cutoffState eps u = cutoffTableEval (basePieces eps) u := by apply cutoffState_eq_table basePieces baseTable_small _ eps u hu intro e v hvlo hvhi exact (baseStepValid_below_limit e hvlo hvhi).1 def cutoffAvailability_below_base (eps : Bool) {u : ℚ} (hlo : 1 ≤ u) (hhi : u < 0x1921ee) : cutoffAvailable u (quotaValue eps u) 0 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) ∨ cutoffAvailable u (quotaValue eps u) 1 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) := by have hv := (baseStepValid_below_limit eps hlo hhi).2 have hp := cutoffState_eq_base eps u hhi have h5 := cutoffState_eq_base true (u / 5) (by linarith) have h7 := cutoffState_eq_base eps (u / 7) (by linarith) rw [← hp, ← h5, ← h7] at hv have hpar := cutoffState_parity eps u have hcases : (cutoffState eps u).1 = 0 ∨ (cutoffState eps u).1 = 1 := by omega rcases hcases with hzero | hone · exact Or.inl (by simpa only [hzero] using hv) · exact Or.inr (by simpa only [hone] using hv) end Bounty end SubmissionComponent_PolicyBaseIntervalsCompact /- Component RationalCertificate; SHA256 4bf290ccbdabe7b223ee62ecbc320e7beb70013a61188aa52647bbbf8aabd452 -/ section SubmissionComponent_RationalCertificate /- Rational certificates give natural cutoff certificates without rounding gaps. -/ namespace Bounty structure RationalCutoffCertificate (n : ℕ) where parity : ℕ → ℕ cutoff : ℕ → ℚ parity_lt : ∀ q ∈ coprimeCores n, parity q < 2 cutoff_nonneg : ∀ q ∈ coprimeCores n, 0 ≤ cutoff q cutoff_bound : ∀ q ∈ coprimeCores n, cutoff q ≤ (n : ℚ) / q lower_bound : ∀ q ∈ coprimeCores n, 3 * ((n : ℚ) / q) ≤ 4 * cutoff q compatible_five : ∀ q ∈ coprimeCores n, 5 * q ∈ coprimeCores n → (if parity q = parity (5 * q) then 4 else 6) * cutoff (5 * q) ≤ cutoff q compatible_seven : ∀ q ∈ coprimeCores n, 7 * q ∈ coprimeCores n → (if parity q = parity (7 * q) then 4 else 6) * cutoff (7 * q) ≤ cutoff q quota : ∀ q ∈ coprimeCores n, cutoffCount (parity q) ⌊cutoff q⌋₊ = componentQuota n q noncomputable def RationalCutoffCertificate.toNatural {n : ℕ} (C : RationalCutoffCertificate n) : CutoffCertificate n where parity := C.parity cutoff := fun q => ⌊C.cutoff q⌋₊ parity_lt := C.parity_lt cutoff_bound := by intro q hq have hqpos := (Finset.mem_Icc.mp (Finset.mem_filter.mp hq).1).1 have hh := (Nat.floor_le (C.cutoff_nonneg q hq)).trans (C.cutoff_bound q hq) have hmul := (le_div_iff₀ (by exact_mod_cast hqpos : (0 : ℚ) < q)).mp hh exact_mod_cast (by nlinarith : (q : ℚ) * ⌊C.cutoff q⌋₊ ≤ n) lower_bound := by intro q hq s hs have hqpos := (Finset.mem_Icc.mp (Finset.mem_filter.mp hq).1).1 exact rationalWindow_scaled_eighth hqpos (C.lower_bound q hq) hs compatible_five := by intro q hq ht have hh := C.compatible_five q hq ht by_cases he : C.parity q = C.parity (5 * q) · simp only [he, ↓reduceIte] at hh ⊢ exact floor_scaled_le (C.cutoff_nonneg (5 * q) ht) hh · simp only [he, ↓reduceIte] at hh ⊢ exact floor_scaled_le (C.cutoff_nonneg (5 * q) ht) hh compatible_seven := by intro q hq ht have hh := C.compatible_seven q hq ht by_cases he : C.parity q = C.parity (7 * q) · simp only [he, ↓reduceIte] at hh ⊢ exact floor_scaled_le (C.cutoff_nonneg (7 * q) ht) hh · simp only [he, ↓reduceIte] at hh ⊢ exact floor_scaled_le (C.cutoff_nonneg (7 * q) ht) hh quota := C.quota def f_eq_globalUpper_of_rational_certificate {n : ℕ} (C : RationalCutoffCertificate n) : Erdos1062.f n = globalUpper n := f_eq_globalUpper_of_certificate C.toNatural end Bounty end SubmissionComponent_RationalCertificate /- Component RationalSystem; SHA256 b7de74307a5b0cd6cb43eb087dd137f3c1721f930d55f988aa2b75dce23b693e -/ section SubmissionComponent_RationalSystem /- A universal two-type cutoff system suffices for every extremal problem size. -/ namespace Bounty structure RationalCutoffSystem where parity : Bool → ℚ → ℕ cutoff : Bool → ℚ → ℚ parity_lt : ∀ eps u, 1 ≤ u → parity eps u < 2 cutoff_nonneg : ∀ eps u, 1 ≤ u → 0 ≤ cutoff eps u cutoff_bound : ∀ eps u, 1 ≤ u → cutoff eps u ≤ u lower_bound : ∀ eps u, 1 ≤ u → 3 * u ≤ 4 * cutoff eps u compatible_five : ∀ eps u, 5 ≤ u → (if parity eps u = parity true (u / 5) then 4 else 6) * cutoff true (u / 5) ≤ cutoff eps u compatible_seven : ∀ eps u, 7 ≤ u → (if parity eps u = parity eps (u / 7) then 4 else 6) * cutoff eps (u / 7) ≤ cutoff eps u quota : ∀ eps u, 1 ≤ u → cutoffCount (parity eps u) ⌊cutoff eps u⌋₊ = rationalQuota eps u noncomputable def RationalCutoffSystem.toCertificate (S : RationalCutoffSystem) (n : ℕ) : RationalCutoffCertificate n where parity := fun q => S.parity (decide (5 ∣ q)) ((n : ℚ) / q) cutoff := fun q => S.cutoff (decide (5 ∣ q)) ((n : ℚ) / q) parity_lt := fun q hq => S.parity_lt _ _ (quotient_ge_one_of_core_mem hq) cutoff_nonneg := fun q hq => S.cutoff_nonneg _ _ (quotient_ge_one_of_core_mem hq) cutoff_bound := fun q hq => S.cutoff_bound _ _ (quotient_ge_one_of_core_mem hq) lower_bound := fun q hq => S.lower_bound _ _ (quotient_ge_one_of_core_mem hq) compatible_five := by intro q hq ht have hqpos := (Finset.mem_Icc.mp (Finset.mem_filter.mp hq).1).1 have h5qn := (Finset.mem_Icc.mp (Finset.mem_filter.mp ht).1).2 have hu : (5 : ℚ) ≤ (n : ℚ) / q := by apply (le_div_iff₀ (by exact_mod_cast hqpos : (0 : ℚ) < q)).mpr exact_mod_cast h5qn have hflag : decide (5 ∣ 5 * q) = true := by simp have hh := S.compatible_five (decide (5 ∣ q)) ((n : ℚ) / q) hu simpa only [rational_scaled_quotient, hflag, Nat.cast_ofNat] using hh compatible_seven := by intro q hq ht have hqpos := (Finset.mem_Icc.mp (Finset.mem_filter.mp hq).1).1 have h7qn := (Finset.mem_Icc.mp (Finset.mem_filter.mp ht).1).2 have hu : (7 : ℚ) ≤ (n : ℚ) / q := by apply (le_div_iff₀ (by exact_mod_cast hqpos : (0 : ℚ) < q)).mpr exact_mod_cast h7qn have hd : (5 ∣ 7 * q) ↔ 5 ∣ q := by rw [(show Nat.Prime 5 by decide).dvd_mul] norm_num have hflag : decide (5 ∣ 7 * q) = decide (5 ∣ q) := by simp only [hd] have hh := S.compatible_seven (decide (5 ∣ q)) ((n : ℚ) / q) hu simpa only [rational_scaled_quotient, hflag, Nat.cast_ofNat] using hh quota := by intro q hq rw [componentQuota_eq_rationalQuota hq] exact S.quota _ _ (quotient_ge_one_of_core_mem hq) def f_eq_globalUpper_of_system (S : RationalCutoffSystem) (n : ℕ) : Erdos1062.f n = globalUpper n := f_eq_globalUpper_of_rational_certificate (S.toCertificate n) end Bounty end SubmissionComponent_RationalSystem /- Component CutoffValidity; SHA256 b76b811b8d2e4c826d143b84e416baa04e731af2cecbbf989464d59f3d674bd1 -/ section SubmissionComponent_CutoffValidity /- Universal trial availability is the remaining combinatorial construction obligation. -/ namespace Bounty def cutoffCandidate_available {eps : Bool} {u : ℚ} {c5 c7 : ℕ × ℚ} (h : cutoffAvailable u (quotaValue eps u) 0 c5 c7 ∨ cutoffAvailable u (quotaValue eps u) 1 c5 c7) : cutoffAvailable u (quotaValue eps u) (cutoffCandidate eps u c5 c7).1 c5 c7 := by unfold cutoffCandidate dsimp only by_cases hp0 : Nat.log 2 ⌊u⌋₊ % 2 = 0 · rw [hp0] split_ifs with hh · exact hh · simpa using h.resolve_left hh · have hp1 : Nat.log 2 ⌊u⌋₊ % 2 = 1 := by omega rw [hp1] split_ifs with hh · exact hh · simpa using h.resolve_right hh def cutoffState_eq_trial {eps : Bool} {u : ℚ} (hu : 1 ≤ u) : (cutoffState eps u).2 = cutoffTrial u (quotaValue eps u) (cutoffState eps u).1 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) := by simpa only [cutoffState_of_large hu] using cutoffCandidate_eq_trial eps u (cutoffState true (u / 5)) (cutoffState eps (u / 7)) def cutoffState_bounds {eps : Bool} {u : ℚ} (hu : 1 ≤ u) : 3 * u / 4 ≤ (cutoffState eps u).2 ∧ (lowerCutoff (cutoffState eps u).1 (quotaValue eps u) : ℚ) ≤ (cutoffState eps u).2 ∧ (if (cutoffState eps u).1 = (cutoffState true (u / 5)).1 then 4 else 6) * (cutoffState true (u / 5)).2 ≤ (cutoffState eps u).2 ∧ (if (cutoffState eps u).1 = (cutoffState eps (u / 7)).1 then 4 else 6) * (cutoffState eps (u / 7)).2 ≤ (cutoffState eps u).2 := by have hh := cutoffTrial_bounds u (quotaValue eps u) (cutoffState eps u).1 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) rwa [← cutoffState_eq_trial hu] at hh def CutoffAvailability : Prop := ∀ eps u, 1 ≤ u → cutoffAvailable u (quotaValue eps u) 0 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) ∨ cutoffAvailable u (quotaValue eps u) 1 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) def cutoffState_available (H : CutoffAvailability) {eps : Bool} {u : ℚ} (hu : 1 ≤ u) : cutoffAvailable u (quotaValue eps u) (cutoffState eps u).1 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) := by simpa only [cutoffState_of_large hu] using cutoffCandidate_available (H eps u hu) noncomputable def cutoffSystemOfAvailability (H : CutoffAvailability) : RationalCutoffSystem where parity := fun eps u => (cutoffState eps u).1 cutoff := fun eps u => (cutoffState eps u).2 parity_lt := fun eps u _ => cutoffState_parity eps u cutoff_nonneg := by intro eps u hu have hh := (cutoffState_bounds (eps := eps) hu).1 linarith cutoff_bound := by intro eps u hu have hh := (cutoffState_available H (eps := eps) hu).1 rwa [← cutoffState_eq_trial hu] at hh lower_bound := by intro eps u hu have hh := (cutoffState_bounds (eps := eps) hu).1 linarith compatible_five := by intro eps u hu exact (cutoffState_bounds (eps := eps) (by linarith : 1 ≤ u)).2.2.1 compatible_seven := by intro eps u hu exact (cutoffState_bounds (eps := eps) (by linarith : 1 ≤ u)).2.2.2 quota := by intro eps u hu have hh := cutoffTrial_size (by linarith : 0 ≤ u) (cutoffState_available H (eps := eps) hu) rw [← cutoffState_eq_trial hu] at hh rwa [quotaValue_eq] at hh def f_eq_globalUpper_of_availability (H : CutoffAvailability) (n : ℕ) : Erdos1062.f n = globalUpper n := f_eq_globalUpper_of_system (cutoffSystemOfAvailability H) n end Bounty end SubmissionComponent_CutoffValidity /- Component LocalCutoffCertificate; SHA256 36d38defe29cad748866a71ca0c76260923f99bf4676c3fe0a146c9c68e057ce -/ section SubmissionComponent_LocalCutoffCertificate /- Availability on a bounded rational interval suffices for all smaller extremal problems. -/ namespace Bounty def CutoffAvailabilityBelow (limit : ℚ) : Prop := ∀ eps u, 1 ≤ u → u < limit → cutoffAvailable u (quotaValue eps u) 0 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) ∨ cutoffAvailable u (quotaValue eps u) 1 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) end Bounty end SubmissionComponent_LocalCutoffCertificate /- Component BaseExact; SHA256 53c2821bff560ca19580f278c1d0d10265cb800b1b19e5030fd626325654654c -/ section SubmissionComponent_BaseExact /- The exact extremal formula throughout the verified finite base range. -/ namespace Bounty def cutoffAvailabilityBelow_base : CutoffAvailabilityBelow 0x1921ee := by intro eps u hlo hhi exact cutoffAvailability_below_base eps hlo hhi end Bounty end SubmissionComponent_BaseExact end PolicyCombinatorialFront_PolicyBaseExactCompact /- Frozen source PolicyClosureInputMath; SHA256 e628d9bcd519a9a1c50759276dd0f324c0c5ce733c98d201f338862911126baf. -/ section PolicyCombinatorialFront_PolicyClosureInputMath /- One-file proof candidate assembled from the actual local import graph. A complete ordinary-kernel check and target axiom audit are still required. -/ /- Component NormalizedCounts; SHA256 cc30e10e0045906b45078bdb26cb5ee7dbf0f1a8355fd72b97ec0e3cb126c06f -/ section SubmissionComponent_NormalizedCounts /- The two cutoff deficits, in the form used by the normalized closure. -/ namespace Bounty def log_four_half_even {n : ℕ} (hn : 2 ≤ n) (hpar : Nat.log 2 n % 2 = 0) : Nat.log 4 (n / 2) + 1 = Nat.log 4 n := by have hlog : 1 ≤ Nat.log 2 n := (Nat.le_log_iff_pow_le (by norm_num) (by omega : n ≠ 0)).mpr (by simpa using hn) rw [log_four_eq, log_four_eq, Nat.log_div_base] omega def log_three_half_below {n : ℕ} (hn : 2 ≤ n) (htop : ¬2 * 3 ^ Nat.log 3 n ≤ n) : Nat.log 3 (n / 2) + 1 = Nat.log 3 n := by have hlog : 1 ≤ Nat.log 3 n := by by_contra hh have hz : Nat.log 3 n = 0 := by omega simp only [hz, pow_zero, mul_one] at htop omega have hb : Nat.log 3 n - 1 + 1 = Nat.log 3 n := by omega have hp := Nat.pow_log_le_self 3 (by omega : n ≠ 0) have hp' : 3 ^ (Nat.log 3 n - 1) * 3 ≤ n := by simpa only [← pow_succ, hb] using hp have he : Nat.log 3 (n / 2) = Nat.log 3 n - 1 := by apply Nat.log_eq_of_pow_le_of_lt_pow · omega · rw [hb] omega omega def log_two_odd_iff_four_threshold {n : ℕ} (hn : 0 < n) : Nat.log 2 n % 2 = 1 ↔ 2 * 4 ^ Nat.log 4 n ≤ n := by have power (j : ℕ) : (2 : ℕ) ^ (2 * j + 1) = 2 * 4 ^ j := by rw [pow_succ, pow_mul] norm_num omega have hlo := Nat.pow_log_le_self 2 (by omega : n ≠ 0) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < (2 : ℕ)) n rw [log_four_eq] by_cases hp : Nat.log 2 n % 2 = 1 · have he : Nat.log 2 n = 2 * (Nat.log 2 n / 2) + 1 := by omega rw [he, power] at hlo exact iff_of_true hp hlo · have he : Nat.log 2 n + 1 = 2 * (Nat.log 2 n / 2) + 1 := by omega rw [Nat.succ_eq_add_one, he, power] at hhi exact iff_of_false hp (by omega) def cutoffCount_zero_deficit {n : ℕ} (hn : 0 < n) : cutoffCount 0 n + (if Nat.log 2 n % 2 = 1 ∧ 2 * 3 ^ Nat.log 3 n ≤ n then 1 else 0) = smoothRankBound n := by simp [cutoffCount, smoothRankBound, Nat.ne_of_gt hn, log_four_eq] def cutoffCount_one_deficit {n : ℕ} (hn : 2 ≤ n) : cutoffCount 1 n + (if ¬Nat.log 2 n % 2 = 1 ∧ ¬2 * 3 ^ Nat.log 3 n ≤ n then 1 else 0) = smoothRankBound n := by have hc : cutoffCount 1 n = Nat.log 3 (n / 2) + Nat.log 4 (n / 2) + 2 := by simp [cutoffCount, show ¬n < 2 by omega] have hr : smoothRankBound n = Nat.log 3 n + 1 + Nat.log 4 n + (if Nat.log 2 n % 2 = 1 ∧ 2 * 3 ^ Nat.log 3 n ≤ n then 1 else 0) := by simp [smoothRankBound, show n ≠ 0 by omega, log_four_eq] rw [hc, hr] by_cases hp : Nat.log 2 n % 2 = 1 · have h4 := log_four_half_odd hp by_cases hd : 2 * 3 ^ Nat.log 3 n ≤ n · have h3 := log_three_half (by omega : 0 < n) hd simp only [hp, hd, and_self, not_true_eq_false, reduceIte] omega · have h3 := log_three_half_below hn hd simp only [hp, hd, and_false, not_true_eq_false, false_and, reduceIte] omega · have h4 := log_four_half_even hn (by omega) by_cases hd : 2 * 3 ^ Nat.log 3 n ≤ n · have h3 := log_three_half (by omega : 0 < n) hd simp only [hp, hd, false_and, not_true_eq_false, and_false, reduceIte] omega · have h3 := log_three_half_below hn hd simp only [hp, hd, not_false_eq_true, and_self, reduceIte] omega def cutoffCount_zero_floor_deficit {u : ℚ} (hu : 1 ≤ u) : cutoffCount 0 ⌊u⌋₊ + (if 2 * (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ ≤ u ∧ 2 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ ≤ u then 1 else 0) = smoothRankBound ⌊u⌋₊ := by have hu0 : 0 ≤ u := by linarith have hn : 0 < ⌊u⌋₊ := by have hh : 1 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu omega have hh := cutoffCount_zero_deficit hn simpa only [log_two_odd_iff_four_threshold hn, Nat.le_floor_iff hu0, Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat] using hh def cutoffCount_one_floor_deficit {u : ℚ} (hu : 2 ≤ u) : cutoffCount 1 ⌊u⌋₊ + (if ¬2 * (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ ≤ u ∧ ¬2 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ ≤ u then 1 else 0) = smoothRankBound ⌊u⌋₊ := by have hu0 : 0 ≤ u := by linarith have hn : 2 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu have hh := cutoffCount_one_deficit hn simpa only [log_two_odd_iff_four_threshold (by omega : 0 < ⌊u⌋₊), Nat.le_floor_iff hu0, Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat] using hh end Bounty end SubmissionComponent_NormalizedCounts /- Component NormalizedLevels; SHA256 ce27accb82b45eddab5f148b265cc2842517defc56d50d7be12768d28eb2a147 -/ section SubmissionComponent_NormalizedLevels /- Exact threshold locations needed for normalized cutoff trials. -/ namespace Bounty def lowerCutoff_zero_at_count {n : ℕ} (hn : 0 < n) : lowerCutoff 0 (cutoffCount 0 n) = max (4 ^ Nat.log 4 n) (3 ^ Nat.log 3 n) := by let a := 4 ^ Nat.log 4 n let b := 3 ^ Nat.log 3 n have ha : a ≤ n := Nat.pow_log_le_self 4 (by omega) have hb : b ≤ n := Nat.pow_log_le_self 3 (by omega) have hab : max a b ≤ n := max_le ha hb have hpos : 0 < max a b := lt_of_lt_of_le (by dsimp [a]; positivity) (le_max_left _ _) have h4 : Nat.log 4 (max a b) = Nat.log 4 n := by apply Nat.log_eq_of_pow_le_of_lt_pow · exact le_max_left _ _ · exact lt_of_le_of_lt hab (Nat.lt_pow_succ_log_self (by norm_num) n) have h3 : Nat.log 3 (max a b) = Nat.log 3 n := by apply Nat.log_eq_of_pow_le_of_lt_pow · exact le_max_right _ _ · exact lt_of_le_of_lt hab (Nat.lt_pow_succ_log_self (by norm_num) n) have hc : cutoffCount 0 (max a b) = cutoffCount 0 n := by simp [cutoffCount, Nat.ne_of_gt hn, Nat.ne_of_gt hpos, h4, h3] apply le_antisymm · exact (lowerCutoff_le_iff _ _ _).mpr (le_of_eq hc.symm) · change max a b ≤ lowerCutoff 0 (cutoffCount 0 n) by_contra hh let r := lowerCutoff 0 (cutoffCount 0 n) have hr : r < max a b := by dsimp [r]; omega have hrn : r ≤ n := le_trans (Nat.le_of_lt hr) hab have hs : cutoffCount 0 n ≤ cutoffCount 0 r := lowerCutoff_spec _ _ have hrpos : 0 < r := by by_contra hh have hz : r = 0 := by omega simp [cutoffCount, hz, Nat.ne_of_gt hn] at hs have h4le := Nat.log_mono_right (b := 4) hrn have h3le := Nat.log_mono_right (b := 3) hrn have hcount : Nat.log 3 n + 1 + Nat.log 4 n ≤ Nat.log 3 r + 1 + Nat.log 4 r := by simpa [cutoffCount, Nat.ne_of_gt hn, Nat.ne_of_gt hrpos] using hs have h4eq : Nat.log 4 n = Nat.log 4 r := by omega have h3eq : Nat.log 3 n = Nat.log 3 r := by omega have har : a ≤ r := by dsimp [a] rw [h4eq] exact Nat.pow_log_le_self _ (by omega) have hbr : b ≤ r := by dsimp [b] rw [h3eq] exact Nat.pow_log_le_self _ (by omega) have := max_le har hbr omega def lowerCutoff_one_scale {k : ℕ} (hk : 2 ≤ k) : lowerCutoff 1 k = 2 * lowerCutoff 0 (k - 1) := by have equiv (r : ℕ) : k ≤ cutoffCount 1 r ↔ k - 1 ≤ cutoffCount 0 (r / 2) := by by_cases hr : r < 2 · have hz : r / 2 = 0 := by omega simp [cutoffCount, hr, hz] omega · have hr0 : r / 2 ≠ 0 := by omega simp only [cutoffCount, one_ne_zero, reduceIte, hr, hr0] omega apply le_antisymm · apply (lowerCutoff_le_iff _ _ _).mpr rw [equiv] simpa using lowerCutoff_spec 0 (k - 1) · have h := (equiv (lowerCutoff 1 k)).mp (lowerCutoff_spec 1 k) have hh := (lowerCutoff_le_iff 0 (k - 1) (lowerCutoff 1 k / 2)).mpr h omega def lowerCutoff_one_at_count {n : ℕ} (hn : 2 ≤ n) : lowerCutoff 1 (cutoffCount 1 n) = 2 * max (4 ^ Nat.log 4 (n / 2)) (3 ^ Nat.log 3 (n / 2)) := by have hn0 : n / 2 ≠ 0 := by omega have hc : cutoffCount 1 n = cutoffCount 0 (n / 2) + 1 := by simp [cutoffCount, show ¬n < 2 by omega, hn0] omega have hk : 2 ≤ cutoffCount 1 n := by simp [cutoffCount, show ¬n < 2 by omega] rw [lowerCutoff_one_scale hk, hc, Nat.add_sub_cancel, lowerCutoff_zero_at_count (by omega)] end Bounty end SubmissionComponent_NormalizedLevels /- Component NextLevels; SHA256 4dcf40da0403155de833962370e6c5abfcbcc143216e485e8a680c6339e02016 -/ section SubmissionComponent_NextLevels /- The next cutoff level occurs at the first subsequent power threshold. -/ namespace Bounty end Bounty end SubmissionComponent_NextLevels /- Component PreviousLevels; SHA256 9d2bcf6dd070c4d44702e2d8c626018e68ce2d18f724987a42bfb234449da2f9 -/ section SubmissionComponent_PreviousLevels /- The preceding cutoff level, separated according to its last threshold. -/ namespace Bounty def lowerCutoff_zero_previous_four {n : ℕ} (hn : 0 < n) (horder : 3 ^ Nat.log 3 n < 4 ^ Nat.log 4 n) : lowerCutoff 0 (cutoffCount 0 n - 1) = max (4 ^ (Nat.log 4 n - 1)) (3 ^ Nat.log 3 n) := by have hj : 0 < Nat.log 4 n := by by_contra hh have hz : Nat.log 4 n = 0 := by omega have hp : 0 < (3 : ℕ) ^ Nat.log 3 n := by positivity simp only [hz, pow_zero] at horder omega have hs : Nat.log 4 n - 1 + 1 = Nat.log 4 n := by omega have hp : 4 ^ (Nat.log 4 n - 1) * 4 = 4 ^ Nat.log 4 n := by rw [← pow_succ, hs] have hp0 : 0 < (4 : ℕ) ^ (Nat.log 4 n - 1) := by positivity let m := 4 ^ Nat.log 4 n - 1 have hm : 0 < m := by dsimp [m]; omega have hmn : m ≤ n := by have hh := Nat.pow_log_le_self 4 (Nat.ne_of_gt hn) dsimp [m] omega have h4 : Nat.log 4 m = Nat.log 4 n - 1 := by apply Nat.log_eq_of_pow_le_of_lt_pow · dsimp [m] omega · rw [hs] dsimp [m] omega have h3 : Nat.log 3 m = Nat.log 3 n := by apply Nat.log_eq_of_pow_le_of_lt_pow · dsimp [m] omega · exact lt_of_le_of_lt hmn (Nat.lt_pow_succ_log_self (by norm_num) n) have hc : cutoffCount 0 m = cutoffCount 0 n - 1 := by simp [cutoffCount, Nat.ne_of_gt hn, Nat.ne_of_gt hm, h4, h3] omega rw [← hc, lowerCutoff_zero_at_count hm, h4, h3] def lowerCutoff_zero_previous_three {n : ℕ} (hn : 0 < n) (horder : 4 ^ Nat.log 4 n < 3 ^ Nat.log 3 n) : lowerCutoff 0 (cutoffCount 0 n - 1) = max (4 ^ Nat.log 4 n) (3 ^ (Nat.log 3 n - 1)) := by have hj : 0 < Nat.log 3 n := by by_contra hh have hz : Nat.log 3 n = 0 := by omega have hp : 0 < (4 : ℕ) ^ Nat.log 4 n := by positivity simp only [hz, pow_zero] at horder omega have hs : Nat.log 3 n - 1 + 1 = Nat.log 3 n := by omega have hp : 3 ^ (Nat.log 3 n - 1) * 3 = 3 ^ Nat.log 3 n := by rw [← pow_succ, hs] have hp0 : 0 < (3 : ℕ) ^ (Nat.log 3 n - 1) := by positivity let m := 3 ^ Nat.log 3 n - 1 have hm : 0 < m := by dsimp [m]; omega have hmn : m ≤ n := by have hh := Nat.pow_log_le_self 3 (Nat.ne_of_gt hn) dsimp [m] omega have h3 : Nat.log 3 m = Nat.log 3 n - 1 := by apply Nat.log_eq_of_pow_le_of_lt_pow · dsimp [m] omega · rw [hs] dsimp [m] omega have h4 : Nat.log 4 m = Nat.log 4 n := by apply Nat.log_eq_of_pow_le_of_lt_pow · dsimp [m] omega · exact lt_of_le_of_lt hmn (Nat.lt_pow_succ_log_self (by norm_num) n) have hc : cutoffCount 0 m = cutoffCount 0 n - 1 := by simp [cutoffCount, Nat.ne_of_gt hn, Nat.ne_of_gt hm, h4, h3] omega rw [← hc, lowerCutoff_zero_at_count hm, h4, h3] end Bounty end SubmissionComponent_PreviousLevels /- Component PreviousParity; SHA256 724a9e910d2bead52a554109c5b06d03566ad461af430e783840df3d7bc11ff1 -/ section SubmissionComponent_PreviousParity /- Previous levels for the odd cutoff parity. -/ namespace Bounty def cutoffCount_one_ge_three {n : ℕ} (hn : 6 ≤ n) : 3 ≤ cutoffCount 1 n := by have hh : 3 ≤ n / 2 := by omega have hlog : 1 ≤ Nat.log 3 (n / 2) := (Nat.le_log_iff_pow_le (by norm_num) (by omega : n / 2 ≠ 0)).mpr (by simpa using hh) simp [cutoffCount, show ¬n < 2 by omega] omega end Bounty end SubmissionComponent_PreviousParity /- Component NormalizedPowers; SHA256 bbf6d8dbfec9260fcd9572e2f3463dfb90b21c7f47ef43df17af024e2907ebba -/ section SubmissionComponent_NormalizedPowers /- Power normalization and the two possible power bins after scaling. -/ namespace Bounty def power_floor_nat_bounds {b : ℕ} (hb : 1 < b) {u : ℚ} (hu : 1 ≤ u) : ((b ^ Nat.log b ⌊u⌋₊ : ℕ) : ℚ) ≤ u ∧ u < ((b ^ (Nat.log b ⌊u⌋₊ + 1) : ℕ) : ℚ) := by have hu0 : 0 ≤ u := by linarith have hn : ⌊u⌋₊ ≠ 0 := by have hh : 1 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu omega constructor · exact (Nat.le_floor_iff hu0).mp (Nat.pow_log_le_self b hn) · exact (Nat.floor_lt hu0).mp (Nat.lt_pow_succ_log_self hb _) def normalized_power_bounds {b : ℕ} (hb : 1 < b) {u : ℚ} (hu : 1 ≤ u) : 1 / (b : ℚ) < (b : ℚ) ^ Nat.log b ⌊u⌋₊ / u ∧ (b : ℚ) ^ Nat.log b ⌊u⌋₊ / u ≤ 1 := by have hu0 : 0 < u := by linarith have hb0 : (0 : ℚ) < b := by exact_mod_cast (by omega : 0 < b) have hh := power_floor_nat_bounds hb hu constructor · rw [div_lt_div_iff₀ hb0 hu0, one_mul] simpa only [Nat.cast_pow, Nat.cast_mul, pow_succ] using hh.2 · apply (div_le_one hu0).mpr simpa only [Nat.cast_pow] using hh.1 def power_floor_two_bins {b j : ℕ} {u : ℚ} (hu : 0 ≤ u) (hlo : (b : ℚ) ^ j ≤ u) (hhi : u < (b : ℚ) ^ (j + 2)) : (b : ℚ) ^ Nat.log b ⌊u⌋₊ = if (b : ℚ) ^ (j + 1) ≤ u then (b : ℚ) ^ (j + 1) else (b : ℚ) ^ j := by by_cases hm : (b : ℚ) ^ (j + 1) ≤ u · have he : Nat.log b ⌊u⌋₊ = j + 1 := log_floor_of_bounds hu (by simpa only [Nat.cast_pow] using hm) (by simpa only [Nat.cast_pow, Nat.add_assoc] using hhi) simp [hm, he] · have he : Nat.log b ⌊u⌋₊ = j := log_floor_of_bounds hu (by simpa only [Nat.cast_pow] using hlo) (by simpa only [Nat.cast_pow] using (lt_of_not_ge hm)) simp [hm, he] def scaled_power_two_bins {b k : ℕ} (hb : 1 < b) (hk : 0 < k) {u d : ℚ} (hu : 1 ≤ u) (hd : 0 < d) (hdlo : (b : ℚ) ^ (k - 1) < d) (hdhi : d ≤ (b : ℚ) ^ k) (hindex : k ≤ Nat.log b ⌊u⌋₊) : (b : ℚ) ^ Nat.log b ⌊u / d⌋₊ = if (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k + 1) ≤ u / d then (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k + 1) else (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) := by have hb0 : (0 : ℚ) < b := by exact_mod_cast (by omega : 0 < b) have hroot := power_floor_nat_bounds hb hu have hloRoot : (b : ℚ) ^ Nat.log b ⌊u⌋₊ ≤ u := by simpa only [Nat.cast_pow] using hroot.1 have hhiRoot : u < (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + 1) := by simpa only [Nat.cast_pow] using hroot.2 have hproduct : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) * (b : ℚ) ^ k = (b : ℚ) ^ Nat.log b ⌊u⌋₊ := by rw [← pow_add, Nat.sub_add_cancel hindex] have hproductHi : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k + 2) * (b : ℚ) ^ (k - 1) = (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + 1) := by rw [← pow_add] congr 1 omega have hlo : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) ≤ u / d := by apply (le_div_iff₀ hd).mpr calc (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) * d ≤ (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) * (b : ℚ) ^ k := mul_le_mul_of_nonneg_left hdhi (le_of_lt (pow_pos hb0 _)) _ = (b : ℚ) ^ Nat.log b ⌊u⌋₊ := hproduct _ ≤ u := hloRoot have hhi : u / d < (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k + 2) := by apply (div_lt_iff₀ hd).mpr calc u < (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + 1) := hhiRoot _ = (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k + 2) * (b : ℚ) ^ (k - 1) := hproductHi.symm _ < (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k + 2) * d := mul_lt_mul_of_pos_left hdlo (pow_pos hb0 _) exact power_floor_two_bins (div_nonneg (by linarith) (le_of_lt hd)) hlo hhi end Bounty end SubmissionComponent_NormalizedPowers /- Component PowerScales; SHA256 cd806089de0e99effeaf86cbc602fed15b71ff13aee9d2146fccbdee3b709891 -/ section SubmissionComponent_PowerScales /- The two power bins under multiplication, including the factor-five loss window. -/ namespace Bounty def multiplied_power_two_bins {b k : ℕ} (hb : 1 < b) {u d : ℚ} (hu : 1 ≤ u) (hdlo : (b : ℚ) ^ k ≤ d) (hdhi : d < (b : ℚ) ^ (k + 1)) : (b : ℚ) ^ Nat.log b ⌊d * u⌋₊ = if (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + k + 1) ≤ d * u then (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + k + 1) else (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + k) := by have hb0 : (0 : ℚ) < b := by exact_mod_cast (by omega : 0 < b) have hd0 : 0 < d := lt_of_lt_of_le (pow_pos hb0 _) hdlo have hu0 : 0 < u := by linarith have hroot := power_floor_nat_bounds hb hu have hloRoot : (b : ℚ) ^ Nat.log b ⌊u⌋₊ ≤ u := by simpa only [Nat.cast_pow] using hroot.1 have hhiRoot : u < (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + 1) := by simpa only [Nat.cast_pow] using hroot.2 have hlo : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + k) ≤ d * u := by rw [pow_add, mul_comm d u] exact mul_le_mul hloRoot hdlo (le_of_lt (pow_pos hb0 _)) (le_of_lt hu0) have hhi : d * u < (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + k + 2) := by calc d * u < (b : ℚ) ^ (k + 1) * u := mul_lt_mul_of_pos_right hdhi hu0 _ < (b : ℚ) ^ (k + 1) * (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + 1) := mul_lt_mul_of_pos_left hhiRoot (pow_pos hb0 _) _ = (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + k + 2) := by rw [← pow_add] congr 1 omega exact power_floor_two_bins (le_of_lt (mul_pos hd0 hu0)) hlo hhi def multiplied_power_normalized {b k : ℕ} (hb : 1 < b) {u d : ℚ} (hu : 1 ≤ u) (hdlo : (b : ℚ) ^ k ≤ d) (hdhi : d < (b : ℚ) ^ (k + 1)) : (b : ℚ) ^ Nat.log b ⌊d * u⌋₊ / u = if (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + k + 1) / u ≤ d then (b : ℚ) ^ Nat.log b ⌊u⌋₊ / u * (b : ℚ) ^ (k + 1) else (b : ℚ) ^ Nat.log b ⌊u⌋₊ / u * (b : ℚ) ^ k := by have hu0 : 0 < u := by linarith rw [multiplied_power_two_bins hb hu hdlo hdhi] simp only [div_le_iff₀ hu0] split_ifs <;> simp only [pow_add] <;> ring end Bounty end SubmissionComponent_PowerScales /- Component NormalizedLoss; SHA256 235c33ee30f7895b5b2820014e03a4e286c8aff6edc667644ee38e57dcab9736 -/ section SubmissionComponent_NormalizedLoss /- Exact rational endpoints for the powers-of-five obstruction window. -/ namespace Bounty def badWindow_floor_iff_powers {u : ℚ} (hu : 10 ≤ u) : badWindow ⌊u⌋₊ ↔ 4 * u < 5 * (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ ∧ 10 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ ≤ 9 * u ∧ 3 * u < 4 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ := by have hu0 : 0 ≤ u := by linarith have hn : 10 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu have hn0 : ⌊u⌋₊ ≠ 0 := by omega have ha : 1 ≤ Nat.log 4 ⌊u⌋₊ := (Nat.le_log_iff_pow_le (by norm_num) hn0).mpr (by norm_num; omega) have hb : 2 ≤ Nat.log 3 ⌊u⌋₊ := (Nat.le_log_iff_pow_le (by norm_num) hn0).mpr (by norm_num; omega) have hp4 : (4 : ℕ) ^ Nat.log 4 ⌊u⌋₊ = 4 * 4 ^ (Nat.log 4 ⌊u⌋₊ - 1) := by calc 4 ^ Nat.log 4 ⌊u⌋₊ = 4 ^ (Nat.log 4 ⌊u⌋₊ - 1 + 1) := by congr 1; omega _ = 4 * 4 ^ (Nat.log 4 ⌊u⌋₊ - 1) := by rw [pow_succ, Nat.mul_comm] have hp3 : (3 : ℕ) ^ Nat.log 3 ⌊u⌋₊ = 9 * 3 ^ (Nat.log 3 ⌊u⌋₊ - 2) := by calc 3 ^ Nat.log 3 ⌊u⌋₊ = 3 ^ (Nat.log 3 ⌊u⌋₊ - 2 + 2) := by congr 1; omega _ = 9 * 3 ^ (Nat.log 3 ⌊u⌋₊ - 2) := by rw [pow_add]; norm_num; omega have hp4q : (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ = 4 * 4 ^ (Nat.log 4 ⌊u⌋₊ - 1) := by exact_mod_cast hp4 have hp3q : (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ = 9 * 3 ^ (Nat.log 3 ⌊u⌋₊ - 2) := by exact_mod_cast hp3 rw [badWindow_iff_canonical] constructor · rintro ⟨_, h4, h3lo, h3hi⟩ have h4' : ⌊u⌋₊ < 5 * 4 ^ (Nat.log 4 ⌊u⌋₊ - 1) := by omega have h4q : u < 5 * (4 : ℚ) ^ (Nat.log 4 ⌊u⌋₊ - 1) := by exact_mod_cast (Nat.floor_lt hu0).mp h4' have h3loq : 10 * (3 : ℚ) ^ (Nat.log 3 ⌊u⌋₊ - 2) ≤ u := by exact_mod_cast (Nat.le_floor_iff hu0).mp h3lo have h3hiq : u < 12 * (3 : ℚ) ^ (Nat.log 3 ⌊u⌋₊ - 2) := by exact_mod_cast (Nat.floor_lt hu0).mp h3hi exact ⟨by nlinarith [hp4q], by nlinarith [hp3q], by nlinarith [hp3q]⟩ · rintro ⟨h4, h3lo, h3hi⟩ have h4q : u < 5 * (4 : ℚ) ^ (Nat.log 4 ⌊u⌋₊ - 1) := by nlinarith [hp4q] have h3loq : 10 * (3 : ℚ) ^ (Nat.log 3 ⌊u⌋₊ - 2) ≤ u := by nlinarith [hp3q] have h3hiq : u < 12 * (3 : ℚ) ^ (Nat.log 3 ⌊u⌋₊ - 2) := by nlinarith [hp3q] have h4' : ⌊u⌋₊ < 5 * 4 ^ (Nat.log 4 ⌊u⌋₊ - 1) := (Nat.floor_lt hu0).mpr (by exact_mod_cast h4q) have h3lo' : 10 * 3 ^ (Nat.log 3 ⌊u⌋₊ - 2) ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr (by exact_mod_cast h3loq) have h3hi' : ⌊u⌋₊ < 12 * 3 ^ (Nat.log 3 ⌊u⌋₊ - 2) := (Nat.floor_lt hu0).mpr (by exact_mod_cast h3hiq) exact ⟨Nat.pow_log_le_self 4 hn0, by omega, h3lo', h3hi'⟩ def badWindow_floor_scaled_iff {u v : ℚ} (hu : 0 < u) (hv : 10 ≤ v * u) : badWindow ⌊v * u⌋₊ ↔ 4 * v < 5 * ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ∧ 10 * ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ≤ 9 * v ∧ 3 * v < 4 * ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) := by rw [badWindow_floor_iff_powers hv] have h4 : (4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u * u = (4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ := div_mul_cancel₀ _ (ne_of_gt hu) have h3 : (3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u * u = (3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ := div_mul_cancel₀ _ (ne_of_gt hu) constructor <;> rintro ⟨h₁, h₂, h₃⟩ · exact ⟨by nlinarith, by nlinarith, by nlinarith⟩ · exact ⟨by nlinarith, by nlinarith, by nlinarith⟩ end Bounty end SubmissionComponent_NormalizedLoss /- Component ParityPowers; SHA256 fbe6af3f90e0826256f98d1a27476a9363ba98f71ea23b68fb55ef4a28132dab -/ section SubmissionComponent_ParityPowers /- The latest odd-parity thresholds in terms of the two unscaled powers. -/ namespace Bounty def log_powers_distinct {n : ℕ} (hn : 3 ≤ n) : 4 ^ Nat.log 4 n ≠ 3 ^ Nat.log 3 n := by intro he have hc : Nat.Coprime (4 ^ Nat.log 4 n) (3 ^ Nat.log 3 n) := (by norm_num : Nat.Coprime 4 3).pow _ _ rw [he, Nat.coprime_self] at hc have hlog : 1 ≤ Nat.log 3 n := (Nat.le_log_iff_pow_le (by norm_num) (by omega : n ≠ 0)).mpr (by simpa using hn) have hh : 1 < 3 ^ Nat.log 3 n := Nat.one_lt_pow (by omega) (by norm_num) omega def double_four_power_half {n : ℕ} (hn : 2 ≤ n) : 2 * (4 : ℚ) ^ Nat.log 4 (n / 2) = if 2 * 4 ^ Nat.log 4 n ≤ n then 2 * (4 : ℚ) ^ Nat.log 4 n else (4 : ℚ) ^ Nat.log 4 n / 2 := by by_cases hp : 2 * 4 ^ Nat.log 4 n ≤ n · have hp' := (log_two_odd_iff_four_threshold (by omega : 0 < n)).mpr hp have hh := log_four_half_odd hp' simp [hp, hh] · have hp' : Nat.log 2 n % 2 = 0 := by have hnot : ¬Nat.log 2 n % 2 = 1 := mt (log_two_odd_iff_four_threshold (by omega : 0 < n)).mp hp omega have hh := log_four_half_even hn hp' have he : (4 : ℚ) ^ Nat.log 4 n = 4 * (4 : ℚ) ^ Nat.log 4 (n / 2) := by rw [← hh, pow_succ] ring simp only [hp, if_false, he] ring def double_three_power_half {n : ℕ} (hn : 2 ≤ n) : 2 * (3 : ℚ) ^ Nat.log 3 (n / 2) = if 2 * 3 ^ Nat.log 3 n ≤ n then 2 * (3 : ℚ) ^ Nat.log 3 n else 2 * (3 : ℚ) ^ Nat.log 3 n / 3 := by by_cases hd : 2 * 3 ^ Nat.log 3 n ≤ n · have hh := log_three_half (by omega : 0 < n) hd simp [hd, hh] · have hh := log_three_half_below hn hd have he : (3 : ℚ) ^ Nat.log 3 n = 3 * (3 : ℚ) ^ Nat.log 3 (n / 2) := by rw [← hh, pow_succ] ring simp only [hd, if_false, he] ring def double_four_power_half_floor {u : ℚ} (hu : 2 ≤ u) : 2 * (4 : ℚ) ^ Nat.log 4 ⌊u / 2⌋₊ = if 2 * (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ ≤ u then 2 * (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ else (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / 2 := by have hu0 : 0 ≤ u := by linarith have hn : 2 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu have hh := double_four_power_half hn have hfloor : ⌊u / 2⌋₊ = ⌊u⌋₊ / 2 := Nat.floor_div_natCast u 2 simpa only [hfloor, Nat.le_floor_iff hu0, Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat] using hh def double_three_power_half_floor {u : ℚ} (hu : 2 ≤ u) : 2 * (3 : ℚ) ^ Nat.log 3 ⌊u / 2⌋₊ = if 2 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ ≤ u then 2 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ else 2 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / 3 := by have hu0 : 0 ≤ u := by linarith have hn : 2 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu have hh := double_three_power_half hn have hfloor : ⌊u / 2⌋₊ = ⌊u⌋₊ / 2 := Nat.floor_div_natCast u 2 simpa only [hfloor, Nat.le_floor_iff hu0, Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat] using hh end Bounty end SubmissionComponent_ParityPowers /- Component ProfileLevels; SHA256 5b94fd28810ff485629b707cf8d64beb0bfca2c5fc4868c19a45d69834f5fbe2 -/ section SubmissionComponent_ProfileLevels /- The current and preceding cutoff levels as rational threshold profiles. -/ namespace Bounty def cutoffPowerFour (p n : ℕ) : ℚ := if p = 0 then 4 ^ Nat.log 4 n else 2 * 4 ^ Nat.log 4 (n / 2) def cutoffPowerThree (p n : ℕ) : ℚ := if p = 0 then 3 ^ Nat.log 3 n else 2 * 3 ^ Nat.log 3 (n / 2) def rational_power_pred {b k : ℕ} (hb : 0 < b) (hk : 0 < k) : (b : ℚ) ^ (k - 1) = (b : ℚ) ^ k / b := by have hb0 : (b : ℚ) ≠ 0 := by exact_mod_cast (Nat.ne_of_gt hb) apply (eq_div_iff hb0).mpr rw [← pow_succ, show k - 1 + 1 = k by omega] def lowerCutoff_zero_previous_rational {n : ℕ} (hn : 3 ≤ n) : (lowerCutoff 0 (cutoffCount 0 n - 1) : ℚ) = if (4 : ℚ) ^ Nat.log 4 n > (3 : ℚ) ^ Nat.log 3 n then max ((4 : ℚ) ^ Nat.log 4 n / 4) ((3 : ℚ) ^ Nat.log 3 n) else max ((4 : ℚ) ^ Nat.log 4 n) ((3 : ℚ) ^ Nat.log 3 n / 3) := by by_cases hh : (3 : ℕ) ^ Nat.log 3 n < 4 ^ Nat.log 4 n · have hhq : (3 : ℚ) ^ Nat.log 3 n < 4 ^ Nat.log 4 n := by exact_mod_cast hh have hj : 0 < Nat.log 4 n := by have hp : 0 < (3 : ℕ) ^ Nat.log 3 n := by positivity by_contra he have hz : Nat.log 4 n = 0 := by omega simp only [hz, pow_zero] at hh omega rw [if_pos hhq, lowerCutoff_zero_previous_four (by omega) hh] simp only [Nat.cast_max, Nat.cast_pow, Nat.cast_ofNat] have he : (4 : ℚ) ^ (Nat.log 4 n - 1) = (4 : ℚ) ^ Nat.log 4 n / 4 := by simpa only [Nat.cast_ofNat] using rational_power_pred (by norm_num : 0 < (4 : ℕ)) hj rw [he] · have hneq := log_powers_distinct hn have hh' : (4 : ℕ) ^ Nat.log 4 n < 3 ^ Nat.log 3 n := by omega have hhq : ¬(3 : ℚ) ^ Nat.log 3 n < 4 ^ Nat.log 4 n := by exact_mod_cast hh have hj : 0 < Nat.log 3 n := by have hp : 0 < (4 : ℕ) ^ Nat.log 4 n := by positivity by_contra he have hz : Nat.log 3 n = 0 := by omega simp only [hz, pow_zero] at hh' omega rw [if_neg hhq, lowerCutoff_zero_previous_three (by omega) hh'] simp only [Nat.cast_max, Nat.cast_pow, Nat.cast_ofNat] have he : (3 : ℚ) ^ (Nat.log 3 n - 1) = (3 : ℚ) ^ Nat.log 3 n / 3 := by simpa only [Nat.cast_ofNat] using rational_power_pred (by norm_num : 0 < (3 : ℕ)) hj rw [he] def lowerCutoff_at_count_profile {p n : ℕ} (hp : p < 2) (hn : 2 ≤ n) : (lowerCutoff p (cutoffCount p n) : ℚ) = max (cutoffPowerFour p n) (cutoffPowerThree p n) := by have hp' : p = 0 ∨ p = 1 := by omega rcases hp' with rfl | rfl · rw [lowerCutoff_zero_at_count (by omega)] simp only [cutoffPowerFour, cutoffPowerThree, ↓reduceIte, Nat.cast_max, Nat.cast_pow, Nat.cast_ofNat] · rw [lowerCutoff_one_at_count hn] simp only [cutoffPowerFour, cutoffPowerThree, show ¬(1 : ℕ) = 0 by omega, if_false, Nat.cast_mul, Nat.cast_max, Nat.cast_pow, Nat.cast_ofNat] exact mul_max_of_nonneg _ _ (by norm_num : (0 : ℚ) ≤ 2) def lowerCutoff_previous_profile {p n : ℕ} (hp : p < 2) (hn : 6 ≤ n) : (lowerCutoff p (cutoffCount p n - 1) : ℚ) = if cutoffPowerFour p n > cutoffPowerThree p n then max (cutoffPowerFour p n / 4) (cutoffPowerThree p n) else max (cutoffPowerFour p n) (cutoffPowerThree p n / 3) := by have hp' : p = 0 ∨ p = 1 := by omega rcases hp' with rfl | rfl · simpa only [cutoffPowerFour, cutoffPowerThree, ↓reduceIte] using lowerCutoff_zero_previous_rational (by omega : 3 ≤ n) · have hcp := cutoffCount_one_ge_three hn have hc : cutoffCount 1 n = cutoffCount 0 (n / 2) + 1 := by simp [cutoffCount, show ¬n < 2 by omega, show n / 2 ≠ 0 by omega] omega have he : cutoffCount 1 n - 1 - 1 = cutoffCount 0 (n / 2) - 1 := by omega rw [lowerCutoff_one_scale (by omega : 2 ≤ cutoffCount 1 n - 1), he] simp only [Nat.cast_mul, Nat.cast_ofNat, cutoffPowerFour, cutoffPowerThree, show ¬(1 : ℕ) = 0 by omega, if_false] rw [lowerCutoff_zero_previous_rational (by omega : 3 ≤ n / 2)] have heq : 2 * (4 : ℚ) ^ Nat.log 4 (n / 2) > 2 * (3 : ℚ) ^ Nat.log 3 (n / 2) ↔ (4 : ℚ) ^ Nat.log 4 (n / 2) > (3 : ℚ) ^ Nat.log 3 (n / 2) := by constructor <;> intro hh <;> linarith simp only [heq] split_ifs <;> rw [mul_max_of_nonneg _ _ (by norm_num : (0 : ℚ) ≤ 2)] <;> congr 1 <;> ring end Bounty end SubmissionComponent_ProfileLevels /- Component ProfileQuota; SHA256 8e275e2f296b96cb3e20e0b237940f5fb7776c4858cb3c640c640c3a750b05f8 -/ section SubmissionComponent_ProfileQuota /- The signed difference between a quota loss and a cutoff parity deficit. -/ namespace Bounty def quotaLossValue (eps : Bool) (u : ℚ) : ℕ := letI := badWindow_decidable ⌊5 * u⌋₊ if eps = true ∧ badWindow ⌊5 * u⌋₊ then 1 else 0 def cutoffDeficit (p : ℕ) (u : ℚ) : ℕ := if p = 0 then if 2 * (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ ≤ u ∧ 2 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ ≤ u then 1 else 0 else if ¬2 * (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ ≤ u ∧ ¬2 * (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ ≤ u then 1 else 0 def cutoffDelta (eps : Bool) (p : ℕ) (u : ℚ) : ℤ := (quotaLossValue eps u : ℤ) - (cutoffDeficit p u : ℤ) def quotaLossValue_le_one (eps : Bool) (u : ℚ) : quotaLossValue eps u ≤ 1 := by unfold quotaLossValue split_ifs <;> omega def cutoffDeficit_le_one (p : ℕ) (u : ℚ) : cutoffDeficit p u ≤ 1 := by unfold cutoffDeficit split_ifs <;> omega def cutoffCount_add_deficit {p : ℕ} (hp : p < 2) {u : ℚ} (hu : 2 ≤ u) : cutoffCount p ⌊u⌋₊ + cutoffDeficit p u = smoothRankBound ⌊u⌋₊ := by have hp' : p = 0 ∨ p = 1 := by omega rcases hp' with rfl | rfl · simpa only [cutoffDeficit, ↓reduceIte] using cutoffCount_zero_floor_deficit (by linarith : 1 ≤ u) · simpa only [cutoffDeficit, show ¬(1 : ℕ) = 0 by omega, ↓reduceIte] using cutoffCount_one_floor_deficit hu def quotaLossValue_one_ge_fifty_four {eps : Bool} {u : ℚ} (hu : 0 ≤ u) (hloss : quotaLossValue eps u = 1) : 54 ≤ u := by have hb : badWindow ⌊5 * u⌋₊ := by unfold quotaLossValue at hloss split_ifs at hloss with hh · exact hh.2 have hh : (0x10e : ℚ) ≤ 5 * u := (Nat.le_floor_iff (by positivity : 0 ≤ 5 * u)).mp (badWindow_ge_270 hb) linarith def cutoffDelta_bounds (eps : Bool) (p : ℕ) (u : ℚ) : -1 ≤ cutoffDelta eps p u ∧ cutoffDelta eps p u ≤ 1 := by have hl := quotaLossValue_le_one eps u have hd := cutoffDeficit_le_one p u unfold cutoffDelta omega def quotaValue_cast_eq_count_sub_delta {eps : Bool} {p : ℕ} (hp : p < 2) {u : ℚ} (hu : 2 ≤ u) : (quotaValue eps u : ℤ) = (cutoffCount p ⌊u⌋₊ : ℤ) - cutoffDelta eps p u := by have hu0 : 0 ≤ u := by linarith have hn : 0 < ⌊u⌋₊ := by have hh : 2 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu omega have hr := smoothRankBound_pos hn have hl := quotaLossValue_le_one eps u have hc := cutoffCount_add_deficit hp hu have hdef : quotaValue eps u = smoothRankBound ⌊u⌋₊ - quotaLossValue eps u := rfl rw [hdef] unfold cutoffDelta omega def cutoffDelta_one_ge_fifty_four {eps : Bool} {p : ℕ} {u : ℚ} (hu : 0 ≤ u) (hd : cutoffDelta eps p u = 1) : 54 ≤ u := by have hl := quotaLossValue_le_one eps u have hdef := cutoffDeficit_le_one p u have he : quotaLossValue eps u = 1 := by unfold cutoffDelta at hd; omega exact quotaLossValue_one_ge_fifty_four hu he end Bounty end SubmissionComponent_ProfileQuota /- Component ProfileValidity; SHA256 4024ca34b3c981b4b47947e205aab2bac69f07f4defc22eef7a3db38aba97ff4 -/ section SubmissionComponent_ProfileValidity /- The rational closure profile is exactly the cutoff quota condition. -/ namespace Bounty def cutoffProfileLower (eps : Bool) (p : ℕ) (u : ℚ) : ℚ := if cutoffDelta eps p u = 0 then max (cutoffPowerFour p ⌊u⌋₊) (cutoffPowerThree p ⌊u⌋₊) else if cutoffPowerFour p ⌊u⌋₊ > cutoffPowerThree p ⌊u⌋₊ then max (cutoffPowerFour p ⌊u⌋₊ / 4) (cutoffPowerThree p ⌊u⌋₊) else max (cutoffPowerFour p ⌊u⌋₊) (cutoffPowerThree p ⌊u⌋₊ / 3) def cutoffProfileValid (eps : Bool) (p : ℕ) (u r : ℚ) : Prop := 0 ≤ cutoffDelta eps p u ∧ cutoffProfileLower eps p u ≤ r ∧ if cutoffDelta eps p u = 0 then r ≤ u else r < max (cutoffPowerFour p ⌊u⌋₊) (cutoffPowerThree p ⌊u⌋₊) def lowerCutoff_quota_profile {eps : Bool} {p : ℕ} (hp : p < 2) {u : ℚ} (hu : 2 ≤ u) (hd : 0 ≤ cutoffDelta eps p u) : (lowerCutoff p (quotaValue eps u) : ℚ) = cutoffProfileLower eps p u := by have hh := quotaValue_cast_eq_count_sub_delta (eps := eps) hp hu have hdhi := (cutoffDelta_bounds eps p u).2 have hu0 : 0 ≤ u := by linarith by_cases hz : cutoffDelta eps p u = 0 · have hq : quotaValue eps u = cutoffCount p ⌊u⌋₊ := by omega have hn : 2 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu rw [hq, lowerCutoff_at_count_profile hp hn] simp [cutoffProfileLower, hz] · have hd1 : cutoffDelta eps p u = 1 := by omega have hu54 := cutoffDelta_one_ge_fifty_four hu0 hd1 have hn : 6 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr (by norm_num; linarith) have hq : quotaValue eps u = cutoffCount p ⌊u⌋₊ - 1 := by omega rw [hq, lowerCutoff_previous_profile hp hn] simp [cutoffProfileLower, hz] def cutoffProfileValid_iff {eps : Bool} {p : ℕ} (hp : p < 2) {u r : ℚ} (hu : 2 ≤ u) (hr : 0 ≤ r) : cutoffProfileValid eps p u r ↔ r ≤ u ∧ cutoffCount p ⌊r⌋₊ = quotaValue eps u := by have hu0 : 0 ≤ u := by linarith have hn : 2 ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu have hbounds := (cutoffCount_floor_level_iff p (cutoffCount p ⌊u⌋₊) hu0).mp rfl have hcast := quotaValue_cast_eq_count_sub_delta (eps := eps) hp hu have hdelta := cutoffDelta_bounds eps p u have casesDelta : cutoffDelta eps p u = -1 ∨ cutoffDelta eps p u = 0 ∨ cutoffDelta eps p u = 1 := by omega rcases casesDelta with hneg | hz | hone · apply iff_of_false · intro hv have := hv.1 omega · rintro ⟨hru, hsize⟩ have hm := cutoffCount_mono p (Nat.floor_mono hru) omega · have hd : 0 ≤ cutoffDelta eps p u := by omega have hq : quotaValue eps u = cutoffCount p ⌊u⌋₊ := by omega have hlo := lowerCutoff_quota_profile (eps := eps) hp hu hd constructor · intro hv have hru : r ≤ u := by simpa only [hz, ↓reduceIte] using hv.2.2 refine ⟨hru, (cutoffCount_floor_level_iff p (quotaValue eps u) hr).mpr ?_⟩ constructor · simpa only [hlo] using hv.2.1 · rw [hq] exact hru.trans_lt hbounds.2 · rintro ⟨hru, hsize⟩ have hb := (cutoffCount_floor_level_iff p (quotaValue eps u) hr).mp hsize refine ⟨hd, ?_, ?_⟩ · simpa only [hlo] using hb.1 · simpa only [hz, ↓reduceIte] using hru · have hd : 0 ≤ cutoffDelta eps p u := by omega have hz : cutoffDelta eps p u ≠ 0 := by omega have hq : quotaValue eps u + 1 = cutoffCount p ⌊u⌋₊ := by omega have hlo := lowerCutoff_quota_profile (eps := eps) hp hu hd have hhi : (lowerCutoff p (quotaValue eps u + 1) : ℚ) = max (cutoffPowerFour p ⌊u⌋₊) (cutoffPowerThree p ⌊u⌋₊) := by rw [hq, lowerCutoff_at_count_profile hp hn] constructor · intro hv have hrhi : r < (lowerCutoff p (quotaValue eps u + 1) : ℚ) := by simpa only [hz, ↓reduceIte, hhi] using hv.2.2 have hru : r ≤ u := by rw [hq] at hrhi exact (hrhi.trans_le hbounds.1).le refine ⟨hru, (cutoffCount_floor_level_iff p (quotaValue eps u) hr).mpr ?_⟩ exact ⟨by simpa only [hlo] using hv.2.1, hrhi⟩ · rintro ⟨_, hsize⟩ have hb := (cutoffCount_floor_level_iff p (quotaValue eps u) hr).mp hsize refine ⟨hd, ?_, ?_⟩ · simpa only [hlo] using hb.1 · simpa only [hz, ↓reduceIte, hhi] using hb.2 end Bounty end SubmissionComponent_ProfileValidity /- Component ProfileTrial; SHA256 8ee28eb10e5bc33de807f03b4b6265c7e3ba75ae33b57f2ad7e40f72827c3b3e -/ section SubmissionComponent_ProfileTrial /- Equivalence between the actual recursive trial and its rational profile. -/ namespace Bounty def cutoffProfileTrial (eps : Bool) (u : ℚ) (p : ℕ) (c5 c7 : ℕ × ℚ) : ℚ := max (max (3 * u / 4) (cutoffProfileLower eps p u)) (max ((if p = c5.1 then 4 else 6) * c5.2) ((if p = c7.1 then 4 else 6) * c7.2)) def cutoffProfileTrial_bounds (eps : Bool) (u : ℚ) (p : ℕ) (c5 c7 : ℕ × ℚ) : 3 * u / 4 ≤ cutoffProfileTrial eps u p c5 c7 ∧ cutoffProfileLower eps p u ≤ cutoffProfileTrial eps u p c5 c7 ∧ (if p = c5.1 then 4 else 6) * c5.2 ≤ cutoffProfileTrial eps u p c5 c7 ∧ (if p = c7.1 then 4 else 6) * c7.2 ≤ cutoffProfileTrial eps u p c5 c7 := by unfold cutoffProfileTrial exact ⟨(le_max_left _ _).trans (le_max_left _ _), (le_max_right _ _).trans (le_max_left _ _), (le_max_left _ _).trans (le_max_right _ _), (le_max_right _ _).trans (le_max_right _ _)⟩ def cutoffTrial_eq_profile {eps : Bool} {u : ℚ} {p : ℕ} (hp : p < 2) (hu : 2 ≤ u) (hd : 0 ≤ cutoffDelta eps p u) (c5 c7 : ℕ × ℚ) : cutoffTrial u (quotaValue eps u) p c5 c7 = cutoffProfileTrial eps u p c5 c7 := by unfold cutoffTrial cutoffProfileTrial rw [lowerCutoff_quota_profile hp hu hd] def cutoffAvailable_delta_nonneg {eps : Bool} {u : ℚ} {p : ℕ} {c5 c7 : ℕ × ℚ} (hp : p < 2) (hu : 2 ≤ u) (ha : cutoffAvailable u (quotaValue eps u) p c5 c7) : 0 ≤ cutoffDelta eps p u := by have hsize := cutoffTrial_size (by linarith : 0 ≤ u) ha have hm := cutoffCount_mono p (Nat.floor_mono ha.1) have hc := quotaValue_cast_eq_count_sub_delta (eps := eps) hp hu omega def cutoffAvailable_iff_profile {eps : Bool} {u : ℚ} {p : ℕ} {c5 c7 : ℕ × ℚ} (hp : p < 2) (hu : 2 ≤ u) : cutoffAvailable u (quotaValue eps u) p c5 c7 ↔ cutoffProfileValid eps p u (cutoffProfileTrial eps u p c5 c7) := by have hb := cutoffProfileTrial_bounds eps u p c5 c7 have hr : 0 ≤ cutoffProfileTrial eps u p c5 c7 := by linarith [hb.1] constructor · intro ha have hd := cutoffAvailable_delta_nonneg hp hu ha have he := cutoffTrial_eq_profile hp hu hd c5 c7 apply (cutoffProfileValid_iff hp hu hr).mpr constructor · simpa only [he] using ha.1 · simpa only [he] using cutoffTrial_size (by linarith : 0 ≤ u) ha · intro hv have he := cutoffTrial_eq_profile hp hu hv.1 c5 c7 have hh := (cutoffProfileValid_iff hp hu hr).mp hv have hlevel := (cutoffCount_floor_level_iff p (quotaValue eps u) hr).mp hh.2 unfold cutoffAvailable rw [he] exact ⟨hh.1, hlevel.2⟩ end Bounty end SubmissionComponent_ProfileTrial /- Component DivisionPowers; SHA256 237fd97e9899f0cd27dac4ac1f01dfa4194ee8c9fb5f05cb309986c25a0b5fab -/ section SubmissionComponent_DivisionPowers /- Child powers divided by the root input, in the closure's rational coordinates. -/ namespace Bounty def divided_power_normalized {b k : ℕ} (hb : 1 < b) (hk : 0 < k) {u d : ℚ} (hu : 1 ≤ u) (hd : 0 < d) (hdlo : (b : ℚ) ^ (k - 1) < d) (hdhi : d ≤ (b : ℚ) ^ k) (hindex : k ≤ Nat.log b ⌊u⌋₊) : (b : ℚ) ^ Nat.log b ⌊u / d⌋₊ / u = if (b : ℚ) * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) / (b : ℚ) ^ k ≤ 1 / d then (b : ℚ) * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) / (b : ℚ) ^ k else ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) / (b : ℚ) ^ k := by have hu0 : 0 < u := by linarith have hb0 : (0 : ℚ) < b := by exact_mod_cast (by omega : 0 < b) have hp : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) * (b : ℚ) ^ k = (b : ℚ) ^ Nat.log b ⌊u⌋₊ := by rw [← pow_add, Nat.sub_add_cancel hindex] have hsmall : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) / u = ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) / (b : ℚ) ^ k := by apply (eq_div_iff (ne_of_gt (pow_pos hb0 _))).mpr rw [div_mul_eq_mul_div, hp] have hbig : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k + 1) / u = (b : ℚ) * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) / (b : ℚ) ^ k := by rw [pow_succ] calc (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) * b / u = b * ((b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k) / u) := by ring _ = b * (((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) / (b : ℚ) ^ k) := by rw [hsmall] _ = (b : ℚ) * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) / (b : ℚ) ^ k := by ring have hcond : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ - k + 1) ≤ u / d ↔ (b : ℚ) * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) / (b : ℚ) ^ k ≤ 1 / d := by rw [← hbig, le_div_iff₀ hd, div_le_div_iff₀ hu0 hd, one_mul] rw [scaled_power_two_bins hb hk hu hd hdlo hdhi hindex] simp only [hcond] split_ifs <;> simp only [hsmall, hbig] def multiplied_power_normalized_linear {b k : ℕ} (hb : 1 < b) {u d : ℚ} (hu : 1 ≤ u) (hdlo : (b : ℚ) ^ k ≤ d) (hdhi : d < (b : ℚ) ^ (k + 1)) : (b : ℚ) ^ Nat.log b ⌊d * u⌋₊ / u = if (b : ℚ) ^ (k + 1) * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) ≤ d then (b : ℚ) ^ (k + 1) * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) else (b : ℚ) ^ k * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) := by have hh := multiplied_power_normalized hb hu hdlo hdhi have he : (b : ℚ) ^ (Nat.log b ⌊u⌋₊ + k + 1) / u = (b : ℚ) ^ (k + 1) * ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) := by rw [show Nat.log b ⌊u⌋₊ + k + 1 = Nat.log b ⌊u⌋₊ + (k + 1) by omega, pow_add] ring simpa only [he, mul_comm] using hh end Bounty end SubmissionComponent_DivisionPowers /- Component ProfileScaling; SHA256 87a4be247874c01ebe3a829c380e270bfcc4c325f14e0e84b4a98a93c6012850 -/ section SubmissionComponent_ProfileScaling /- Normalizing the cutoff profile by a positive root input. -/ namespace Bounty def normalizedParityFour (p : ℕ) (v a : ℚ) : ℚ := if p = 0 then a else if 2 * a ≤ v then 2 * a else a / 2 def normalizedParityThree (p : ℕ) (v b : ℚ) : ℚ := if p = 0 then b else if 2 * b ≤ v then 2 * b else 2 * b / 3 def normalizedProfileLower (delta : ℤ) (a b : ℚ) : ℚ := if delta = 0 then max a b else if a > b then max (a / 4) b else max a (b / 3) def normalizedProfileValid (delta : ℤ) (v a b r : ℚ) : Prop := 0 ≤ delta ∧ normalizedProfileLower delta a b ≤ r ∧ if delta = 0 then r ≤ v else r < max a b def cutoffPowerFour_normalized (p : ℕ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffPowerFour p ⌊v * u⌋₊ / u = normalizedParityFour p v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) := by by_cases hp : p = 0 · simp [cutoffPowerFour, normalizedParityFour, hp] · have hh := double_four_power_half_floor hv have hfloor : ⌊v * u / 2⌋₊ = ⌊v * u⌋₊ / 2 := Nat.floor_div_natCast (v * u) 2 rw [hfloor] at hh have hc : 2 * ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ≤ v ↔ 2 * (4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ ≤ v * u := by rw [← mul_div_assoc, div_le_iff₀ hu] simp only [cutoffPowerFour, normalizedParityFour, hp, ↓reduceIte, hh, hc] split_ifs <;> ring def cutoffPowerThree_normalized (p : ℕ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffPowerThree p ⌊v * u⌋₊ / u = normalizedParityThree p v ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) := by by_cases hp : p = 0 · simp [cutoffPowerThree, normalizedParityThree, hp] · have hh := double_three_power_half_floor hv have hfloor : ⌊v * u / 2⌋₊ = ⌊v * u⌋₊ / 2 := Nat.floor_div_natCast (v * u) 2 rw [hfloor] at hh have hc : 2 * ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ≤ v ↔ 2 * (3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ ≤ v * u := by rw [← mul_div_assoc, div_le_iff₀ hu] simp only [cutoffPowerThree, normalizedParityThree, hp, ↓reduceIte, hh, hc] split_ifs <;> ring def normalizedProfileLower_scale (delta : ℤ) (a b : ℚ) {u : ℚ} (hu : 0 < u) : normalizedProfileLower delta a b / u = normalizedProfileLower delta (a / u) (b / u) := by unfold normalizedProfileLower simp only [div_lt_div_iff_of_pos_right hu] split_ifs <;> rw [← max_div_div_right hu.le] <;> congr 1 <;> ring def cutoffProfileLower_normalized (eps : Bool) (p : ℕ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffProfileLower eps p (v * u) / u = normalizedProfileLower (cutoffDelta eps p (v * u)) (normalizedParityFour p v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u)) (normalizedParityThree p v ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u)) := by change normalizedProfileLower (cutoffDelta eps p (v * u)) (cutoffPowerFour p ⌊v * u⌋₊) (cutoffPowerThree p ⌊v * u⌋₊) / u = _ rw [normalizedProfileLower_scale _ _ _ hu, cutoffPowerFour_normalized p hu hv, cutoffPowerThree_normalized p hu hv] def normalizedProfileValid_scale (delta : ℤ) (v a b r : ℚ) {u : ℚ} (hu : 0 < u) : (0 ≤ delta ∧ normalizedProfileLower delta a b ≤ r * u ∧ if delta = 0 then r * u ≤ v * u else r * u < max a b) ↔ normalizedProfileValid delta v (a / u) (b / u) r := by unfold normalizedProfileValid rw [← normalizedProfileLower_scale _ _ _ hu, ← div_le_iff₀ hu] simp only [mul_le_mul_iff_left₀ hu, max_div_div_right hu.le, lt_div_iff₀ hu] def cutoffProfileValid_normalized (eps : Bool) (p : ℕ) {u v r : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffProfileValid eps p (v * u) (r * u) ↔ normalizedProfileValid (cutoffDelta eps p (v * u)) v (normalizedParityFour p v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u)) (normalizedParityThree p v ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u)) r := by change (0 ≤ cutoffDelta eps p (v * u) ∧ normalizedProfileLower (cutoffDelta eps p (v * u)) (cutoffPowerFour p ⌊v * u⌋₊) (cutoffPowerThree p ⌊v * u⌋₊) ≤ r * u ∧ if cutoffDelta eps p (v * u) = 0 then r * u ≤ v * u else r * u < max (cutoffPowerFour p ⌊v * u⌋₊) (cutoffPowerThree p ⌊v * u⌋₊)) ↔ _ rw [normalizedProfileValid_scale _ _ _ _ _ hu, cutoffPowerFour_normalized p hu hv, cutoffPowerThree_normalized p hu hv] end Bounty end SubmissionComponent_ProfileScaling /- Component QuotaScaling; SHA256 1171240a9ff518c1440f9bf2a22494e770c83914d55a498c64974d1f3ff8eaea -/ section SubmissionComponent_QuotaScaling /- The normalized loss and deficit formulas used by the closure certificate. -/ namespace Bounty def normalizedDeficit (p : ℕ) (v a b : ℚ) : ℕ := if p = 0 then if 2 * a ≤ v ∧ 2 * b ≤ v then 1 else 0 else if ¬2 * a ≤ v ∧ ¬2 * b ≤ v then 1 else 0 def normalizedLossValue (eps : Bool) (v a b : ℚ) : ℕ := if eps = true ∧ 5 * v < (5 / 4 : ℚ) * a ∧ (10 / 9 : ℚ) * b ≤ 5 * v ∧ 5 * v < (4 / 3 : ℚ) * b then 1 else 0 def normalizedDelta (eps : Bool) (p : ℕ) (v a b a5 b5 : ℚ) : ℤ := (normalizedLossValue eps v a5 b5 : ℤ) - (normalizedDeficit p v a b : ℤ) def cutoffDeficit_normalized (p : ℕ) {u v : ℚ} (hu : 0 < u) : cutoffDeficit p (v * u) = normalizedDeficit p v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) := by have h4 : 2 * ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ≤ v ↔ 2 * (4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ ≤ v * u := by rw [← mul_div_assoc, div_le_iff₀ hu] have h3 : 2 * ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ≤ v ↔ 2 * (3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ ≤ v * u := by rw [← mul_div_assoc, div_le_iff₀ hu] simp only [cutoffDeficit, normalizedDeficit, h4, h3] def quotaLossValue_normalized (eps : Bool) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : quotaLossValue eps (v * u) = normalizedLossValue eps v ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) := by have hh := badWindow_floor_scaled_iff (u := u) (v := 5 * v) hu (by nlinarith : 10 ≤ (5 * v) * u) have hb : badWindow ⌊5 * (v * u)⌋₊ ↔ 4 * (5 * v) < 5 * ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ∧ 10 * ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) ≤ 9 * (5 * v) ∧ 3 * (5 * v) < 4 * ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) := by simpa only [mul_assoc] using hh have hb' : badWindow ⌊5 * (v * u)⌋₊ ↔ 5 * v < (5 / 4 : ℚ) * ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ∧ (10 / 9 : ℚ) * ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) ≤ 5 * v ∧ 5 * v < (4 / 3 : ℚ) * ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) := by rw [hb] constructor <;> rintro ⟨h₁, h₂, h₃⟩ <;> exact ⟨by linarith, by linarith, by linarith⟩ simp only [quotaLossValue, normalizedLossValue, hb'] def cutoffDelta_normalized (eps : Bool) (p : ℕ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffDelta eps p (v * u) = normalizedDelta eps p v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) := by unfold cutoffDelta normalizedDelta rw [quotaLossValue_normalized eps hu hv, cutoffDeficit_normalized p hu] end Bounty end SubmissionComponent_QuotaScaling /- Component TrialScaling; SHA256 2502d94740d81774eb053d76bb047ef55c61b1d3745b12bba6ad4a61585b1f1a -/ section SubmissionComponent_TrialScaling /- The entire recursive trial expressed in normalized coordinates. -/ namespace Bounty def normalizedProfileTrial (delta : ℤ) (v a b : ℚ) (p p5 p7 : ℕ) (r5 r7 : ℚ) : ℚ := max (max (3 * v / 4) (normalizedProfileLower delta a b)) (max ((if p = p5 then 4 else 6) * r5) ((if p = p7 then 4 else 6) * r7)) def cutoffProfileTrial_normalized (eps : Bool) (p p5 p7 : ℕ) (r5 r7 : ℚ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffProfileTrial eps (v * u) p (p5, r5 * u) (p7, r7 * u) / u = normalizedProfileTrial (cutoffDelta eps p (v * u)) v (normalizedParityFour p v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u)) (normalizedParityThree p v ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u)) p p5 p7 r5 r7 := by have hscale (a b : ℚ) : a * (b * u) / u = a * b := by field_simp have hbase : 3 * (v * u) / 4 / u = 3 * v / 4 := by field_simp unfold cutoffProfileTrial normalizedProfileTrial simp only [← max_div_div_right hu.le, hscale, hbase] rw [cutoffProfileLower_normalized eps p hu hv] def cutoffAvailable_iff_normalized {eps : Bool} {p : ℕ} (hp : p < 2) (p5 p7 : ℕ) (r5 r7 : ℚ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : let a := normalizedParityFour p v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) let b := normalizedParityThree p v ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) let delta := cutoffDelta eps p (v * u) cutoffAvailable (v * u) (quotaValue eps (v * u)) p (p5, r5 * u) (p7, r7 * u) ↔ normalizedProfileValid delta v a b (normalizedProfileTrial delta v a b p p5 p7 r5 r7) := by dsimp only rw [cutoffAvailable_iff_profile hp hv] have htrial := cutoffProfileTrial_normalized eps p p5 p7 r5 r7 hu hv have he := (div_eq_iff (ne_of_gt hu)).mp htrial rw [he, cutoffProfileValid_normalized eps p hu hv] end Bounty end SubmissionComponent_TrialScaling /- Component CandidateChoice; SHA256 3f26e35fb12df49b94cf7eb63aa2071314b6a73aa47fa0904ec45b133b93035f -/ section SubmissionComponent_CandidateChoice /- Explicit phase and value choices made by the recursive candidate. -/ namespace Bounty def preferred_phase_normalized {u v : ℚ} (hu : 0 < u) (hv : 1 ≤ v * u) : Nat.log 2 ⌊v * u⌋₊ % 2 = 1 ↔ 2 * ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ≤ v := by have hv0 : 0 ≤ v * u := by linarith have hn : 0 < ⌊v * u⌋₊ := by have hh : 1 ≤ ⌊v * u⌋₊ := (Nat.le_floor_iff hv0).mpr hv omega rw [log_two_odd_iff_four_threshold hn, Nat.le_floor_iff hv0] simp only [Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat] rw [← mul_div_assoc, div_le_iff₀ hu] def cutoffCandidate_phase_one_iff (eps : Bool) (u : ℚ) (c5 c7 : ℕ × ℚ) : (cutoffCandidate eps u c5 c7).1 = 1 ↔ if Nat.log 2 ⌊u⌋₊ % 2 = 1 then cutoffAvailable u (quotaValue eps u) 1 c5 c7 else ¬cutoffAvailable u (quotaValue eps u) 0 c5 c7 := by by_cases hp : Nat.log 2 ⌊u⌋₊ % 2 = 1 · by_cases ha : cutoffAvailable u (quotaValue eps u) 1 c5 c7 <;> simp [cutoffCandidate, hp, ha] · have hp0 : Nat.log 2 ⌊u⌋₊ % 2 = 0 := by omega by_cases ha : cutoffAvailable u (quotaValue eps u) 0 c5 c7 <;> simp [cutoffCandidate, hp0, ha] def cutoffCandidate_value_profile {eps : Bool} {u : ℚ} {c5 c7 : ℕ × ℚ} (hu : 2 ≤ u) (ha : cutoffAvailable u (quotaValue eps u) 0 c5 c7 ∨ cutoffAvailable u (quotaValue eps u) 1 c5 c7) : (cutoffCandidate eps u c5 c7).2 = if (cutoffCandidate eps u c5 c7).1 = 1 then cutoffProfileTrial eps u 1 c5 c7 else cutoffProfileTrial eps u 0 c5 c7 := by have hp := cutoffCandidate_parity eps u c5 c7 have hc := cutoffCandidate_available ha have hd := cutoffAvailable_delta_nonneg hp hu hc have he := cutoffTrial_eq_profile hp hu hd c5 c7 rw [cutoffCandidate_eq_trial, he] by_cases hphase : (cutoffCandidate eps u c5 c7).1 = 1 · simp only [hphase, ↓reduceIte] · have hzero : (cutoffCandidate eps u c5 c7).1 = 0 := by omega simp only [hzero, show ¬(0 : ℕ) = 1 by omega, ↓reduceIte] end Bounty end SubmissionComponent_CandidateChoice /- Component NormalizedStep; SHA256 eb69d34d60eb3cf1306faf2e54db3172effdbc39537fc290f3c55a93d36bbac9 -/ section SubmissionComponent_NormalizedStep /- The normalized state and trial predicates appearing in the closure inputs. -/ namespace Bounty def normalizedStateValid (eps : Bool) (p : ℕ) (v a b a5 b5 r : ℚ) : Prop := normalizedProfileValid (normalizedDelta eps p v a b a5 b5) v (normalizedParityFour p v a) (normalizedParityThree p v b) r def normalizedTrialValue (eps : Bool) (p p5 p7 : ℕ) (v a b a5 b5 r5 r7 : ℚ) : ℚ := normalizedProfileTrial (normalizedDelta eps p v a b a5 b5) v (normalizedParityFour p v a) (normalizedParityThree p v b) p p5 p7 r5 r7 def normalizedTrialAvailable (eps : Bool) (p p5 p7 : ℕ) (v a b a5 b5 r5 r7 : ℚ) : Prop := normalizedStateValid eps p v a b a5 b5 (normalizedTrialValue eps p p5 p7 v a b a5 b5 r5 r7) def cutoffProfileValid_iff_normalizedState (eps : Bool) (p : ℕ) {u v r : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffProfileValid eps p (v * u) (r * u) ↔ normalizedStateValid eps p v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) r := by rw [cutoffProfileValid_normalized eps p hu hv] unfold normalizedStateValid rw [cutoffDelta_normalized eps p hu hv] def cutoffAvailable_iff_normalizedTrial {eps : Bool} {p : ℕ} (hp : p < 2) (p5 p7 : ℕ) (r5 r7 : ℚ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffAvailable (v * u) (quotaValue eps (v * u)) p (p5, r5 * u) (p7, r7 * u) ↔ normalizedTrialAvailable eps p p5 p7 v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) r5 r7 := by have hh := cutoffAvailable_iff_normalized (eps := eps) hp p5 p7 r5 r7 hu hv dsimp only at hh unfold normalizedTrialAvailable normalizedStateValid normalizedTrialValue simpa only [cutoffDelta_normalized eps p hu hv] using hh end Bounty end SubmissionComponent_NormalizedStep /- Component ClosureRootBounds; SHA256 946665fa0be10ef0d2dbbf96fcff337840818a19d06dd563fb04e426192563b7 -/ section SubmissionComponent_ClosureRootBounds /- Uniform root and descendant bounds for the seven-step closure. -/ namespace Bounty def closure_root_log_bounds {u : ℚ} (hu : 0x1921ee ≤ u) : 10 ≤ Nat.log 4 ⌊u⌋₊ ∧ 13 ≤ Nat.log 3 ⌊u⌋₊ := by have hu0 : 0 ≤ u := by linarith have hn : 0x1921ee ≤ ⌊u⌋₊ := (Nat.le_floor_iff hu0).mpr hu have hn0 : ⌊u⌋₊ ≠ 0 := by omega constructor · apply (Nat.le_log_iff_pow_le (by norm_num) hn0).mpr norm_num omega · apply (Nat.le_log_iff_pow_le (by norm_num) hn0).mpr norm_num omega end Bounty end SubmissionComponent_ClosureRootBounds /- Component PowerCoordinates; SHA256 4bac70d657eb28cbe06f1080612987f6be0999d40af2c9a5d0dde1acce7ee6e5 -/ section SubmissionComponent_PowerCoordinates /- A common two-bin coordinate for the finite normalized closure. -/ namespace Bounty def normalizedPowerCoordinate (b : ℕ) (scale v x : ℚ) : ℚ := if (b : ℚ) * scale * x ≤ v then (b : ℚ) * scale * x else scale * x def normalizedPower_divided_coordinate {b k : ℕ} (hb : 1 < b) (hk : 0 < k) {u d : ℚ} (hu : 1 ≤ u) (hd : 0 < d) (hdlo : (b : ℚ) ^ (k - 1) < d) (hdhi : d ≤ (b : ℚ) ^ k) (hindex : k ≤ Nat.log b ⌊u⌋₊) : (b : ℚ) ^ Nat.log b ⌊u / d⌋₊ / u = normalizedPowerCoordinate b (1 / (b : ℚ) ^ k) (1 / d) ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) := by simpa only [normalizedPowerCoordinate, div_eq_mul_inv, one_mul, mul_one, mul_assoc, mul_left_comm, mul_comm] using divided_power_normalized hb hk hu hd hdlo hdhi hindex def normalizedPower_multiplied_coordinate {b k : ℕ} (hb : 1 < b) {u d : ℚ} (hu : 1 ≤ u) (hdlo : (b : ℚ) ^ k ≤ d) (hdhi : d < (b : ℚ) ^ (k + 1)) : (b : ℚ) ^ Nat.log b ⌊d * u⌋₊ / u = normalizedPowerCoordinate b ((b : ℚ) ^ k) d ((b : ℚ) ^ Nat.log b ⌊u⌋₊ / u) := by simpa only [normalizedPowerCoordinate, pow_succ, mul_assoc, mul_left_comm, mul_comm] using multiplied_power_normalized_linear hb hu hdlo hdhi end Bounty end SubmissionComponent_PowerCoordinates /- Component ClosurePowerCoordinates; SHA256 79e763138951fe9dd640f969282bca0b0f575b56fdc4db5bde1b507650e959fe -/ section SubmissionComponent_ClosurePowerCoordinates /- Exact power coordinates for the seven-step closure. -/ namespace Bounty def closurePower4_node_0_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 : ℚ) (1 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hh := normalizedPower_multiplied_coordinate (b := 4) (k := 0) (u := u) (d := (1 : ℚ)) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_0_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 : ℚ) (1 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hh := normalizedPower_multiplied_coordinate (b := 3) (k := 0) (u := u) (d := (1 : ℚ)) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_0_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (4 : ℚ) (5 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hh := normalizedPower_multiplied_coordinate (b := 4) (k := 1) (u := u) (d := (5 : ℚ)) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_0_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (3 : ℚ) (5 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hh := normalizedPower_multiplied_coordinate (b := 3) (k := 1) (u := u) (d := (5 : ℚ)) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_0_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 16 : ℚ) (1 / 7 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 2) (u := u) (d := (7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 7 : ℚ) * u = u / (7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_0_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 9 : ℚ) (1 / 7 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 2) (u := u) (d := (7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 7 : ℚ) * u = u / (7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_0_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(5 / 7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 4 : ℚ) (5 / 7 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 1 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 1) (u := u) (d := (7 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 7 : ℚ) * u = u / (7 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_0_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(5 / 7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 3 : ℚ) (5 / 7 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 1 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 1) (u := u) (d := (7 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 7 : ℚ) * u = u / (7 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_1_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 16 : ℚ) (1 / 5 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 2) (u := u) (d := (5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 5 : ℚ) * u = u / (5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_1_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 9 : ℚ) (1 / 5 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 2) (u := u) (d := (5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 5 : ℚ) * u = u / (5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_1_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 : ℚ) (1 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hh := normalizedPower_multiplied_coordinate (b := 4) (k := 0) (u := u) (d := (1 : ℚ)) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_1_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 : ℚ) (1 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hh := normalizedPower_multiplied_coordinate (b := 3) (k := 0) (u := u) (d := (1 : ℚ)) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_0_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 49 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 64 : ℚ) (1 / 49 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 3) (u := u) (d := (49 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 49 : ℚ) * u = u / (49 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_0_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 49 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 81 : ℚ) (1 / 49 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 4) (u := u) (d := (49 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 49 : ℚ) * u = u / (49 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_0_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(5 / 49 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 16 : ℚ) (5 / 49 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 2) (u := u) (d := (49 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 49 : ℚ) * u = u / (49 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_0_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(5 / 49 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 27 : ℚ) (5 / 49 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 3) (u := u) (d := (49 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 49 : ℚ) * u = u / (49 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_1_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 35 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 64 : ℚ) (1 / 35 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 3) (u := u) (d := (35 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 35 : ℚ) * u = u / (35 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_1_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 35 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 81 : ℚ) (1 / 35 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 4) (u := u) (d := (35 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 35 : ℚ) * u = u / (35 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_1_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 16 : ℚ) (1 / 7 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 2) (u := u) (d := (7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 7 : ℚ) * u = u / (7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_1_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 9 : ℚ) (1 / 7 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 2) (u := u) (d := (7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 7 : ℚ) * u = u / (7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_2_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 25 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 64 : ℚ) (1 / 25 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 3) (u := u) (d := (25 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 25 : ℚ) * u = u / (25 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_2_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 25 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 27 : ℚ) (1 / 25 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 3) (u := u) (d := (25 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 25 : ℚ) * u = u / (25 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_2_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 16 : ℚ) (1 / 5 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 2) (u := u) (d := (5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 5 : ℚ) * u = u / (5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_2_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 9 : ℚ) (1 / 5 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 2 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 2) (u := u) (d := (5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 5 : ℚ) * u = u / (5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_0_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x157 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x400 : ℚ) (1 / 0x157 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 5) (u := u) (d := (0x157 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x157 : ℚ) * u = u / (0x157 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_0_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x157 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2d9 : ℚ) (1 / 0x157 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 6) (u := u) (d := (0x157 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x157 : ℚ) * u = u / (0x157 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_0_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(5 / 0x157 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100 : ℚ) (5 / 0x157 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 4) (u := u) (d := (0x157 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0x157 : ℚ) * u = u / (0x157 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_0_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(5 / 0x157 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 81 : ℚ) (5 / 0x157 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 4) (u := u) (d := (0x157 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0x157 : ℚ) * u = u / (0x157 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_1_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xf5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100 : ℚ) (1 / 0xf5 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 4) (u := u) (d := (0xf5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xf5 : ℚ) * u = u / (0xf5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_1_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xf5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2d9 : ℚ) (1 / 0xf5 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 6) (u := u) (d := (0xf5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xf5 : ℚ) * u = u / (0xf5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_1_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 49 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 64 : ℚ) (1 / 49 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 3) (u := u) (d := (49 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 49 : ℚ) * u = u / (49 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_1_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 49 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 81 : ℚ) (1 / 49 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 4) (u := u) (d := (49 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 49 : ℚ) * u = u / (49 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_2_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xaf : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100 : ℚ) (1 / 0xaf : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 4) (u := u) (d := (0xaf : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xaf : ℚ) * u = u / (0xaf : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_2_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xaf : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xf3 : ℚ) (1 / 0xaf : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 5) (u := u) (d := (0xaf : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xaf : ℚ) * u = u / (0xaf : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_2_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 35 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 64 : ℚ) (1 / 35 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 3) (u := u) (d := (35 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 35 : ℚ) * u = u / (35 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_2_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 35 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 81 : ℚ) (1 / 35 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 4) (u := u) (d := (35 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 35 : ℚ) * u = u / (35 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_3_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x7d : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100 : ℚ) (1 / 0x7d : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 4) (u := u) (d := (0x7d : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x7d : ℚ) * u = u / (0x7d : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_3_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x7d : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xf3 : ℚ) (1 / 0x7d : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 5) (u := u) (d := (0x7d : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x7d : ℚ) * u = u / (0x7d : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_3_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 25 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 64 : ℚ) (1 / 25 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 3) (u := u) (d := (25 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 25 : ℚ) * u = u / (25 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_3_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 25 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 27 : ℚ) (1 / 25 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 3 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 3) (u := u) (d := (25 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 25 : ℚ) * u = u / (25 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_0_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x961 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (1 / 0x961 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0x961 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x961 : ℚ) * u = u / (0x961 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_0_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x961 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (1 / 0x961 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0x961 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x961 : ℚ) * u = u / (0x961 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_0_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(5 / 0x961 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x400 : ℚ) (5 / 0x961 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 5) (u := u) (d := (0x961 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0x961 : ℚ) * u = u / (0x961 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_0_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(5 / 0x961 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2d9 : ℚ) (5 / 0x961 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 6) (u := u) (d := (0x961 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0x961 : ℚ) * u = u / (0x961 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_1_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x6b3 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (1 / 0x6b3 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0x6b3 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x6b3 : ℚ) * u = u / (0x6b3 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_1_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x6b3 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x88b : ℚ) (1 / 0x6b3 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 7) (u := u) (d := (0x6b3 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x6b3 : ℚ) * u = u / (0x6b3 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_1_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x157 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x400 : ℚ) (1 / 0x157 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 5) (u := u) (d := (0x157 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x157 : ℚ) * u = u / (0x157 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_1_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x157 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2d9 : ℚ) (1 / 0x157 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 6) (u := u) (d := (0x157 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x157 : ℚ) * u = u / (0x157 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_2_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x4c9 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (1 / 0x4c9 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0x4c9 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x4c9 : ℚ) * u = u / (0x4c9 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_2_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x4c9 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x88b : ℚ) (1 / 0x4c9 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 7) (u := u) (d := (0x4c9 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x4c9 : ℚ) * u = u / (0x4c9 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_2_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xf5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100 : ℚ) (1 / 0xf5 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 4) (u := u) (d := (0xf5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xf5 : ℚ) * u = u / (0xf5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_2_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xf5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2d9 : ℚ) (1 / 0xf5 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 6) (u := u) (d := (0xf5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xf5 : ℚ) * u = u / (0xf5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_3_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x36b : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x400 : ℚ) (1 / 0x36b : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 5) (u := u) (d := (0x36b : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x36b : ℚ) * u = u / (0x36b : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_3_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x36b : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x88b : ℚ) (1 / 0x36b : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 7) (u := u) (d := (0x36b : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x36b : ℚ) * u = u / (0x36b : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_3_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xaf : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100 : ℚ) (1 / 0xaf : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 4) (u := u) (d := (0xaf : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xaf : ℚ) * u = u / (0xaf : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_3_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xaf : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xf3 : ℚ) (1 / 0xaf : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 5) (u := u) (d := (0xaf : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xaf : ℚ) * u = u / (0xaf : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_4_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x271 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x400 : ℚ) (1 / 0x271 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 5) (u := u) (d := (0x271 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x271 : ℚ) * u = u / (0x271 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_4_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x271 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2d9 : ℚ) (1 / 0x271 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 6) (u := u) (d := (0x271 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x271 : ℚ) * u = u / (0x271 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_4_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x7d : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100 : ℚ) (1 / 0x7d : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 4 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 4) (u := u) (d := (0x7d : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x7d : ℚ) * u = u / (0x7d : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_4_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x7d : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xf3 : ℚ) (1 / 0x7d : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 5) (u := u) (d := (0x7d : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x7d : ℚ) * u = u / (0x7d : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_0_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x41a7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0x41a7 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0x41a7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x41a7 : ℚ) * u = u / (0x41a7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_0_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x41a7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x4ce3 : ℚ) (1 / 0x41a7 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 9) (u := u) (d := (0x41a7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x41a7 : ℚ) * u = u / (0x41a7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_0_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(5 / 0x41a7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (5 / 0x41a7 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0x41a7 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0x41a7 : ℚ) * u = u / (0x41a7 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_0_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(5 / 0x41a7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (5 / 0x41a7 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0x41a7 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0x41a7 : ℚ) * u = u / (0x41a7 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_1_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x2ee5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x2ee5 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x2ee5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x2ee5 : ℚ) * u = u / (0x2ee5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_1_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x2ee5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x4ce3 : ℚ) (1 / 0x2ee5 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 9) (u := u) (d := (0x2ee5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x2ee5 : ℚ) * u = u / (0x2ee5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_1_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x961 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (1 / 0x961 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0x961 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x961 : ℚ) * u = u / (0x961 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_1_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x961 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (1 / 0x961 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0x961 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x961 : ℚ) * u = u / (0x961 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_2_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x217f : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x217f : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x217f : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x217f : ℚ) * u = u / (0x217f : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_2_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x217f : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x4ce3 : ℚ) (1 / 0x217f : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 9) (u := u) (d := (0x217f : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x217f : ℚ) * u = u / (0x217f : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_2_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x6b3 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (1 / 0x6b3 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0x6b3 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x6b3 : ℚ) * u = u / (0x6b3 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_2_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x6b3 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x88b : ℚ) (1 / 0x6b3 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 7) (u := u) (d := (0x6b3 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x6b3 : ℚ) * u = u / (0x6b3 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_3_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x17ed : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x17ed : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x17ed : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x17ed : ℚ) * u = u / (0x17ed : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_3_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x17ed : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (1 / 0x17ed : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0x17ed : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x17ed : ℚ) * u = u / (0x17ed : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_3_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x4c9 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (1 / 0x4c9 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0x4c9 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x4c9 : ℚ) * u = u / (0x4c9 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_3_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x4c9 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x88b : ℚ) (1 / 0x4c9 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 7) (u := u) (d := (0x4c9 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x4c9 : ℚ) * u = u / (0x4c9 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_4_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x1117 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x1117 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x1117 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1117 : ℚ) * u = u / (0x1117 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_4_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x1117 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (1 / 0x1117 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0x1117 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1117 : ℚ) * u = u / (0x1117 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_4_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x36b : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x400 : ℚ) (1 / 0x36b : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 5) (u := u) (d := (0x36b : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x36b : ℚ) * u = u / (0x36b : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_4_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x36b : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x88b : ℚ) (1 / 0x36b : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 7) (u := u) (d := (0x36b : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x36b : ℚ) * u = u / (0x36b : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_5_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xc35 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (1 / 0xc35 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0xc35 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xc35 : ℚ) * u = u / (0xc35 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_5_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xc35 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (1 / 0xc35 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0xc35 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xc35 : ℚ) * u = u / (0xc35 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_5_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x271 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x400 : ℚ) (1 / 0x271 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 5 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 5) (u := u) (d := (0x271 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x271 : ℚ) * u = u / (0x271 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_5_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x271 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2d9 : ℚ) (1 / 0x271 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 6) (u := u) (d := (0x271 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x271 : ℚ) * u = u / (0x271 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_0_6 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x1cb91 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (1 / 0x1cb91 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0x1cb91 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1cb91 : ℚ) * u = u / (0x1cb91 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_0_6 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x1cb91 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0x1cb91 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0x1cb91 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1cb91 : ℚ) * u = u / (0x1cb91 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_0_6 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(5 / 0x1cb91 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (5 / 0x1cb91 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0x1cb91 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0x1cb91 : ℚ) * u = u / (0x1cb91 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_0_6 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(5 / 0x1cb91 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xe6a9 : ℚ) (5 / 0x1cb91 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 10) (u := u) (d := (0x1cb91 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0x1cb91 : ℚ) * u = u / (0x1cb91 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_1_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x14843 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (1 / 0x14843 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0x14843 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x14843 : ℚ) * u = u / (0x14843 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_1_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x14843 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0x14843 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0x14843 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x14843 : ℚ) * u = u / (0x14843 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_1_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x41a7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0x41a7 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0x41a7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x41a7 : ℚ) * u = u / (0x41a7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_1_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x41a7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x4ce3 : ℚ) (1 / 0x41a7 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 9) (u := u) (d := (0x41a7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x41a7 : ℚ) * u = u / (0x41a7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_2_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xea79 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0xea79 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0xea79 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xea79 : ℚ) * u = u / (0xea79 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_2_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xea79 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0xea79 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0xea79 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xea79 : ℚ) * u = u / (0xea79 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_2_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x2ee5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x2ee5 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x2ee5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x2ee5 : ℚ) * u = u / (0x2ee5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_2_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x2ee5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x4ce3 : ℚ) (1 / 0x2ee5 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 9) (u := u) (d := (0x2ee5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x2ee5 : ℚ) * u = u / (0x2ee5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_3_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xa77b : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0xa77b : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0xa77b : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xa77b : ℚ) * u = u / (0xa77b : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_3_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xa77b : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xe6a9 : ℚ) (1 / 0xa77b : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 10) (u := u) (d := (0xa77b : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xa77b : ℚ) * u = u / (0xa77b : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_3_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x217f : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x217f : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x217f : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x217f : ℚ) * u = u / (0x217f : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_3_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x217f : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x4ce3 : ℚ) (1 / 0x217f : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 9) (u := u) (d := (0x217f : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x217f : ℚ) * u = u / (0x217f : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_4_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x77a1 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0x77a1 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0x77a1 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x77a1 : ℚ) * u = u / (0x77a1 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_4_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x77a1 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xe6a9 : ℚ) (1 / 0x77a1 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 10) (u := u) (d := (0x77a1 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x77a1 : ℚ) * u = u / (0x77a1 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_4_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x17ed : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x17ed : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x17ed : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x17ed : ℚ) * u = u / (0x17ed : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_4_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x17ed : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (1 / 0x17ed : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0x17ed : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x17ed : ℚ) * u = u / (0x17ed : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_5_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x5573 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0x5573 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0x5573 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x5573 : ℚ) * u = u / (0x5573 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_5_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x5573 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xe6a9 : ℚ) (1 / 0x5573 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 10) (u := u) (d := (0x5573 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x5573 : ℚ) * u = u / (0x5573 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_5_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x1117 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x1117 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x1117 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1117 : ℚ) * u = u / (0x1117 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_5_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x1117 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (1 / 0x1117 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0x1117 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1117 : ℚ) * u = u / (0x1117 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_6_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x3d09 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x3d09 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x3d09 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x3d09 : ℚ) * u = u / (0x3d09 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_6_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x3d09 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x4ce3 : ℚ) (1 / 0x3d09 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 9) (u := u) (d := (0x3d09 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x3d09 : ℚ) * u = u / (0x3d09 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_6_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xc35 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x1000 : ℚ) (1 / 0xc35 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 6 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 6) (u := u) (d := (0xc35 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xc35 : ℚ) * u = u / (0xc35 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_6_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xc35 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x19a1 : ℚ) (1 / 0xc35 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 8) (u := u) (d := (0xc35 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xc35 : ℚ) * u = u / (0xc35 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_0_7 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xc90f7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100000 : ℚ) (1 / 0xc90f7 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 10) (u := u) (d := (0xc90f7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xc90f7 : ℚ) * u = u / (0xc90f7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_0_7 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xc90f7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x1853d3 : ℚ) (1 / 0xc90f7 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 13 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 13) (u := u) (d := (0xc90f7 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xc90f7 : ℚ) * u = u / (0xc90f7 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_0_7 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(5 / 0xc90f7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (5 / 0xc90f7 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0xc90f7 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0xc90f7 : ℚ) * u = u / (0xc90f7 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_0_7 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(5 / 0xc90f7 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (5 / 0xc90f7 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0xc90f7 / 5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (5 / 0xc90f7 : ℚ) * u = u / (0xc90f7 / 5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_1_6 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x8f9d5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100000 : ℚ) (1 / 0x8f9d5 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 10) (u := u) (d := (0x8f9d5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x8f9d5 : ℚ) * u = u / (0x8f9d5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_1_6 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x8f9d5 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x1853d3 : ℚ) (1 / 0x8f9d5 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 13 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 13) (u := u) (d := (0x8f9d5 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x8f9d5 : ℚ) * u = u / (0x8f9d5 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_1_6 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x1cb91 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (1 / 0x1cb91 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0x1cb91 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1cb91 : ℚ) * u = u / (0x1cb91 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_1_6 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x1cb91 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0x1cb91 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0x1cb91 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1cb91 : ℚ) * u = u / (0x1cb91 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_2_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x6694f : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100000 : ℚ) (1 / 0x6694f : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 10) (u := u) (d := (0x6694f : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x6694f : ℚ) * u = u / (0x6694f : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_2_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x6694f : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x81bf1 : ℚ) (1 / 0x6694f : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 12 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 12) (u := u) (d := (0x6694f : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x6694f : ℚ) * u = u / (0x6694f : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_2_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x14843 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (1 / 0x14843 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0x14843 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x14843 : ℚ) * u = u / (0x14843 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_2_5 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x14843 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0x14843 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0x14843 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x14843 : ℚ) * u = u / (0x14843 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_3_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x4945d : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x100000 : ℚ) (1 / 0x4945d : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 10) (u := u) (d := (0x4945d : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x4945d : ℚ) * u = u / (0x4945d : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_3_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x4945d : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x81bf1 : ℚ) (1 / 0x4945d : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 12 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 12) (u := u) (d := (0x4945d : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x4945d : ℚ) * u = u / (0x4945d : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_3_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xea79 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0xea79 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0xea79 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xea79 : ℚ) * u = u / (0xea79 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_3_4 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xea79 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0xea79 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0xea79 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xea79 : ℚ) * u = u / (0xea79 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_4_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x34567 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (1 / 0x34567 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0x34567 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x34567 : ℚ) * u = u / (0x34567 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_4_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x34567 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x81bf1 : ℚ) (1 / 0x34567 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 12 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 12) (u := u) (d := (0x34567 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x34567 : ℚ) * u = u / (0x34567 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_4_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0xa77b : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0xa77b : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0xa77b : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xa77b : ℚ) * u = u / (0xa77b : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_4_3 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0xa77b : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xe6a9 : ℚ) (1 / 0xa77b : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 10) (u := u) (d := (0xa77b : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0xa77b : ℚ) * u = u / (0xa77b : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_5_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x25625 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (1 / 0x25625 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0x25625 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x25625 : ℚ) * u = u / (0x25625 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_5_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x25625 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0x25625 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0x25625 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x25625 : ℚ) * u = u / (0x25625 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_5_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x77a1 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0x77a1 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0x77a1 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x77a1 : ℚ) * u = u / (0x77a1 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_5_2 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x77a1 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xe6a9 : ℚ) (1 / 0x77a1 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 10) (u := u) (d := (0x77a1 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x77a1 : ℚ) * u = u / (0x77a1 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_6_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x1ab3f : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (1 / 0x1ab3f : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0x1ab3f : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1ab3f : ℚ) * u = u / (0x1ab3f : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_6_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x1ab3f : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0x1ab3f : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0x1ab3f : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1ab3f : ℚ) * u = u / (0x1ab3f : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_6_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x5573 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x10000 : ℚ) (1 / 0x5573 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 8 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 8) (u := u) (d := (0x5573 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x5573 : ℚ) * u = u / (0x5573 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_6_1 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x5573 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0xe6a9 : ℚ) (1 / 0x5573 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 10 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 10) (u := u) (d := (0x5573 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x5573 : ℚ) * u = u / (0x5573 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_node_7_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x1312d : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x40000 : ℚ) (1 / 0x1312d : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 9) (u := u) (d := (0x1312d : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1312d : ℚ) * u = u / (0x1312d : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_node_7_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x1312d : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x2b3fb : ℚ) (1 / 0x1312d : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 11 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 11) (u := u) (d := (0x1312d : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x1312d : ℚ) * u = u / (0x1312d : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower4_loss_7_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (4 : ℚ) ^ Nat.log 4 ⌊(1 / 0x3d09 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 4 (1 / 0x4000 : ℚ) (1 / 0x3d09 : ℚ) ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by have hindex : 7 ≤ Nat.log 4 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).1 omega have hh := normalizedPower_divided_coordinate (b := 4) (k := 7) (u := u) (d := (0x3d09 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x3d09 : ℚ) * u = u / (0x3d09 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] def closurePower3_loss_7_0 {u : ℚ} (hu : 0x1921ee ≤ u) : (3 : ℚ) ^ Nat.log 3 ⌊(1 / 0x3d09 : ℚ) * u⌋₊ / u = normalizedPowerCoordinate 3 (1 / 0x4ce3 : ℚ) (1 / 0x3d09 : ℚ) ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by have hindex : 9 ≤ Nat.log 3 ⌊u⌋₊ := by have hh := (closure_root_log_bounds hu).2 omega have hh := normalizedPower_divided_coordinate (b := 3) (k := 9) (u := u) (d := (0x3d09 : ℚ)) (by norm_num) (by norm_num) (by linarith : 1 ≤ u) (by norm_num) (by norm_num) (by norm_num) hindex have harg : (1 / 0x3d09 : ℚ) * u = u / (0x3d09 : ℚ) := by norm_num; ring rw [harg] convert hh using 1 <;> norm_num [normalizedPowerCoordinate] end Bounty end SubmissionComponent_ClosurePowerCoordinates /- Component ClosureRaw; SHA256 12759138e6cb4fdbcd4dcb33a6d9b8e411399dd8973691bd7f11c644cb8968f1 -/ section SubmissionComponent_ClosureRaw /- A typed finite closure formula. No contradiction theorem is asserted here. -/ namespace Bounty noncomputable def closurePhase (p : Prop) : ℕ := by classical exact if p then 1 else 0 def closurePhase_of_nat {p : ℕ} (hp : p < 2) : closurePhase (p = 1) = p := by classical by_cases hh : p = 1 · simp [closurePhase, hh] · have hz : p = 0 := by omega simp [closurePhase, hz] structure ClosureNode where i : ℕ j : ℕ v : ℚ scale4 : ℚ scale3 : ℚ lossScale4 : ℚ lossScale3 : ℚ child5 : ℕ child7 : ℕ leaf : Bool def closureNode : ℕ → ClosureNode | 0 => ⟨0, 0, 1, 1, 1, 4, 3, 2, 1, false⟩ | 1 => ⟨0, 1, (1 / 7), (1 / 16), (1 / 9), (1 / 4), (1 / 3), 4, 3, false⟩ | 2 => ⟨1, 0, (1 / 5), (1 / 16), (1 / 9), 1, 1, 5, 4, false⟩ | 3 => ⟨0, 2, (1 / 49), (1 / 64), (1 / 81), (1 / 16), (1 / 27), 7, 6, false⟩ | 4 => ⟨1, 1, (1 / 35), (1 / 64), (1 / 81), (1 / 16), (1 / 9), 8, 7, false⟩ | 5 => ⟨2, 0, (1 / 25), (1 / 64), (1 / 27), (1 / 16), (1 / 9), 9, 8, false⟩ | 6 => ⟨0, 3, (1 / 0x157), (1 / 0x400), (1 / 0x2d9), (1 / 0x100), (1 / 81), 11, 10, false⟩ | 7 => ⟨1, 2, (1 / 0xf5), (1 / 0x100), (1 / 0x2d9), (1 / 64), (1 / 81), 12, 11, false⟩ | 8 => ⟨2, 1, (1 / 0xaf), (1 / 0x100), (1 / 0xf3), (1 / 64), (1 / 81), 13, 12, false⟩ | 9 => ⟨3, 0, (1 / 0x7d), (1 / 0x100), (1 / 0xf3), (1 / 64), (1 / 27), 14, 13, false⟩ | 10 => ⟨0, 4, (1 / 0x961), (1 / 0x1000), (1 / 0x19a1), (1 / 0x400), (1 / 0x2d9), 16, 15, false⟩ | 11 => ⟨1, 3, (1 / 0x6b3), (1 / 0x1000), (1 / 0x88b), (1 / 0x400), (1 / 0x2d9), 17, 16, false⟩ | 12 => ⟨2, 2, (1 / 0x4c9), (1 / 0x1000), (1 / 0x88b), (1 / 0x100), (1 / 0x2d9), 18, 17, false⟩ | 13 => ⟨3, 1, (1 / 0x36b), (1 / 0x400), (1 / 0x88b), (1 / 0x100), (1 / 0xf3), 19, 18, false⟩ | 14 => ⟨4, 0, (1 / 0x271), (1 / 0x400), (1 / 0x2d9), (1 / 0x100), (1 / 0xf3), 20, 19, false⟩ | 15 => ⟨0, 5, (1 / 0x41a7), (1 / 0x10000), (1 / 0x4ce3), (1 / 0x1000), (1 / 0x19a1), 22, 21, false⟩ | 16 => ⟨1, 4, (1 / 0x2ee5), (1 / 0x4000), (1 / 0x4ce3), (1 / 0x1000), (1 / 0x19a1), 23, 22, false⟩ | 17 => ⟨2, 3, (1 / 0x217f), (1 / 0x4000), (1 / 0x4ce3), (1 / 0x1000), (1 / 0x88b), 24, 23, false⟩ | 18 => ⟨3, 2, (1 / 0x17ed), (1 / 0x4000), (1 / 0x19a1), (1 / 0x1000), (1 / 0x88b), 25, 24, false⟩ | 19 => ⟨4, 1, (1 / 0x1117), (1 / 0x4000), (1 / 0x19a1), (1 / 0x400), (1 / 0x88b), 26, 25, false⟩ | 20 => ⟨5, 0, (1 / 0xc35), (1 / 0x1000), (1 / 0x19a1), (1 / 0x400), (1 / 0x2d9), 27, 26, false⟩ | 21 => ⟨0, 6, (1 / 0x1cb91), (1 / 0x40000), (1 / 0x2b3fb), (1 / 0x10000), (1 / 0xe6a9), 29, 28, false⟩ | 22 => ⟨1, 5, (1 / 0x14843), (1 / 0x40000), (1 / 0x2b3fb), (1 / 0x10000), (1 / 0x4ce3), 30, 29, false⟩ | 23 => ⟨2, 4, (1 / 0xea79), (1 / 0x10000), (1 / 0x2b3fb), (1 / 0x4000), (1 / 0x4ce3), 31, 30, false⟩ | 24 => ⟨3, 3, (1 / 0xa77b), (1 / 0x10000), (1 / 0xe6a9), (1 / 0x4000), (1 / 0x4ce3), 32, 31, false⟩ | 25 => ⟨4, 2, (1 / 0x77a1), (1 / 0x10000), (1 / 0xe6a9), (1 / 0x4000), (1 / 0x19a1), 33, 32, false⟩ | 26 => ⟨5, 1, (1 / 0x5573), (1 / 0x10000), (1 / 0xe6a9), (1 / 0x4000), (1 / 0x19a1), 34, 33, false⟩ | 27 => ⟨6, 0, (1 / 0x3d09), (1 / 0x4000), (1 / 0x4ce3), (1 / 0x1000), (1 / 0x19a1), 35, 34, false⟩ | 28 => ⟨0, 7, (1 / 0xc90f7), (1 / 0x100000), (1 / 0x1853d3), (1 / 0x40000), (1 / 0x2b3fb), 37, 36, true⟩ | 29 => ⟨1, 6, (1 / 0x8f9d5), (1 / 0x100000), (1 / 0x1853d3), (1 / 0x40000), (1 / 0x2b3fb), 38, 37, true⟩ | 30 => ⟨2, 5, (1 / 0x6694f), (1 / 0x100000), (1 / 0x81bf1), (1 / 0x40000), (1 / 0x2b3fb), 39, 38, true⟩ | 31 => ⟨3, 4, (1 / 0x4945d), (1 / 0x100000), (1 / 0x81bf1), (1 / 0x10000), (1 / 0x2b3fb), 40, 39, true⟩ | 32 => ⟨4, 3, (1 / 0x34567), (1 / 0x40000), (1 / 0x81bf1), (1 / 0x10000), (1 / 0xe6a9), 41, 40, true⟩ | 33 => ⟨5, 2, (1 / 0x25625), (1 / 0x40000), (1 / 0x2b3fb), (1 / 0x10000), (1 / 0xe6a9), 42, 41, true⟩ | 34 => ⟨6, 1, (1 / 0x1ab3f), (1 / 0x40000), (1 / 0x2b3fb), (1 / 0x10000), (1 / 0xe6a9), 43, 42, true⟩ | 35 => ⟨7, 0, (1 / 0x1312d), (1 / 0x40000), (1 / 0x2b3fb), (1 / 0x4000), (1 / 0x4ce3), 44, 43, true⟩ | _ => ⟨0, 0, 0, 0, 0, 0, 0, 0, 0, false⟩ def closureNodeType (eps : Bool) (k : ℕ) : Bool := if (closureNode k).i = 0 then eps else true def closureNodeFour (k : ℕ) (X : ℚ) : ℚ := normalizedPowerCoordinate 4 (closureNode k).scale4 (closureNode k).v X def closureNodeThree (k : ℕ) (Y : ℚ) : ℚ := normalizedPowerCoordinate 3 (closureNode k).scale3 (closureNode k).v Y def closureLossFour (k : ℕ) (X : ℚ) : ℚ := normalizedPowerCoordinate 4 (closureNode k).lossScale4 (5 * (closureNode k).v) X def closureLossThree (k : ℕ) (Y : ℚ) : ℚ := normalizedPowerCoordinate 3 (closureNode k).lossScale3 (5 * (closureNode k).v) Y noncomputable def closureNodeTrial (eps : Bool) (k phase : ℕ) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ℚ := normalizedTrialValue (closureNodeType eps k) phase (closurePhase (p (closureNode k).child5)) (closurePhase (p (closureNode k).child7)) (closureNode k).v (closureNodeFour k X) (closureNodeThree k Y) (closureLossFour k X) (closureLossThree k Y) (r (closureNode k).child5) (r (closureNode k).child7) noncomputable def closureNodeAvailable (eps : Bool) (k phase : ℕ) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Prop := normalizedStateValid (closureNodeType eps k) phase (closureNode k).v (closureNodeFour k X) (closureNodeThree k Y) (closureLossFour k X) (closureLossThree k Y) (closureNodeTrial eps k phase X Y p r) noncomputable def closureNodeConstraint (eps : Bool) (k : ℕ) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Prop := by classical exact if k = 0 then ¬closureNodeAvailable eps k 0 X Y p r ∧ ¬closureNodeAvailable eps k 1 X Y p r else if (closureNode k).leaf then 3 * (closureNode k).v / 4 ≤ r k ∧ if p k then normalizedStateValid (closureNodeType eps k) 1 (closureNode k).v (closureNodeFour k X) (closureNodeThree k Y) (closureLossFour k X) (closureLossThree k Y) (r k) else normalizedStateValid (closureNodeType eps k) 0 (closureNode k).v (closureNodeFour k X) (closureNodeThree k Y) (closureLossFour k X) (closureLossThree k Y) (r k) else (closureNodeAvailable eps k 0 X Y p r ∨ closureNodeAvailable eps k 1 X Y p r) ∧ (p k ↔ if 2 * closureNodeFour k X ≤ (closureNode k).v then closureNodeAvailable eps k 1 X Y p r else ¬closureNodeAvailable eps k 0 X Y p r) ∧ r k = if p k then closureNodeTrial eps k 1 X Y p r else closureNodeTrial eps k 0 X Y p r noncomputable def ClosureRawHypothesis (eps : Bool) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Prop := 1 / 4 < X ∧ X ≤ 1 ∧ 1 / 3 < Y ∧ Y ≤ 1 ∧ ∀ k < 36, closureNodeConstraint eps k X Y p r end Bounty end SubmissionComponent_ClosureRaw /- Component ClosureInputNormalization; SHA256 b800ebbc61da502ecbc26db0dc08d07df642e49a4410f2421c92966d5572b8c5 -/ section SubmissionComponent_ClosureInputNormalization /- Normal forms shared by the mathematical definitions and finite inputs. -/ namespace Bounty def closureGamma_zero (P : Prop) [Decidable P] (r : ℚ) : (if (0 : ℕ) = closurePhase P then 4 else 6) * r = if (P ↔ False) then 4 * r else 6 * r := by classical by_cases hp : P <;> simp [closurePhase, hp] def closureGamma_one (P : Prop) [Decidable P] (r : ℚ) : (if (1 : ℕ) = closurePhase P then 4 else 6) * r = if (P ↔ True) then 4 * r else 6 * r := by classical by_cases hp : P <;> simp [closurePhase, hp] def closureIndicator_cast (P : Prop) [Decidable P] : Int.ofNat (if P then (1 : ℕ) else 0) = if P then (1 : ℤ) else 0 := by by_cases hp : P <;> simp [hp] def closureIndicator_natCast (P : Prop) [Decidable P] : (Nat.cast (if P then (1 : ℕ) else 0) : ℤ) = if P then (1 : ℤ) else 0 := by exact closureIndicator_cast P def closureCap_simplify (P : Prop) [Decidable P] (r v m : ℚ) : (if P then r ≤ (if P then v else m) else r < (if P then v else m)) ↔ if P then r ≤ v else r < m := by by_cases hp : P <;> simp [hp] def normalizedProfileTrial_left (delta : ℤ) (v a b : ℚ) (p p5 p7 : ℕ) (r5 r7 : ℚ) : normalizedProfileTrial delta v a b p p5 p7 r5 r7 = max (max (max (3 * v / 4) (normalizedProfileLower delta a b)) ((if p = p5 then 4 else 6) * r5)) ((if p = p7 then 4 else 6) * r7) := by unfold normalizedProfileTrial simp only [max_assoc] end Bounty end SubmissionComponent_ClosureInputNormalization end PolicyCombinatorialFront_PolicyClosureInputMath /- Frozen source ClosureRawDepth5Policy; SHA256 cdf58e7d4efa59a34a6df9cf802df23f66f0b327b2463a31d9ceb6bf9663e065. -/ section PolicyCombinatorialFront_ClosureRawDepth5Policy /- Depth-5 finite closure. The generator `build_closure_1062.py` finds the closure already contradictory at depth 5 (cells `5^i * 7^j`, `i + j ≤ 5`): 21 nodes instead of 36, with a Z3 proof and certificate pipeline roughly half the size. The depth-5 cells are exactly the first 21 nodes of `closureNode`, and the depth-4 nodes 10..14 already have the depth-5 nodes 15..20 as children, so no renumbering is needed: nodes 15..20 simply become leaves. `closureRawHypothesis5_of_raw` shows every model of the depth-7 hypothesis is a model of the depth-5 one, so the existing mathematical proof of `ClosureRawHypothesis` is reused unchanged. -/ namespace Bounty /-- `closureNodeConstraint` with the depth-5 nodes `15 ≤ k` treated as leaves. -/ noncomputable def closureNodeConstraint5 (eps : Bool) (k : ℕ) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Prop := by classical exact if k = 0 then ¬closureNodeAvailable eps k 0 X Y p r ∧ ¬closureNodeAvailable eps k 1 X Y p r else if 15 ≤ k then 3 * (closureNode k).v / 4 ≤ r k ∧ if p k then normalizedStateValid (closureNodeType eps k) 1 (closureNode k).v (closureNodeFour k X) (closureNodeThree k Y) (closureLossFour k X) (closureLossThree k Y) (r k) else normalizedStateValid (closureNodeType eps k) 0 (closureNode k).v (closureNodeFour k X) (closureNodeThree k Y) (closureLossFour k X) (closureLossThree k Y) (r k) else (closureNodeAvailable eps k 0 X Y p r ∨ closureNodeAvailable eps k 1 X Y p r) ∧ (p k ↔ if 2 * closureNodeFour k X ≤ (closureNode k).v then closureNodeAvailable eps k 1 X Y p r else ¬closureNodeAvailable eps k 0 X Y p r) ∧ r k = if p k then closureNodeTrial eps k 1 X Y p r else closureNodeTrial eps k 0 X Y p r noncomputable def ClosureRawHypothesis5 (eps : Bool) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Prop := 1 / 4 < X ∧ X ≤ 1 ∧ 1 / 3 < Y ∧ Y ≤ 1 ∧ ∀ k < 21, closureNodeConstraint5 eps k X Y p r /-- Every trial value dominates `3v/4`: it is a `max` whose innermost left term is `3v/4`. -/ def closureNodeTrial_ge (eps : Bool) (k phase : ℕ) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : 3 * (closureNode k).v / 4 ≤ closureNodeTrial eps k phase X Y p r := by unfold closureNodeTrial normalizedTrialValue normalizedProfileTrial exact le_trans (le_max_left _ _) (le_max_left _ _) /-- None of the first 28 nodes is a depth-7 leaf. -/ def closureNode_leaf_false (k : ℕ) (hk : k < 28) : (closureNode k).leaf = false := by interval_cases k <;> rfl /-- The depth-7 hypothesis implies the depth-5 hypothesis on the same `p`, `r`. -/ def closureRawHypothesis5_of_raw (eps : Bool) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis eps X Y p r) : ClosureRawHypothesis5 eps X Y p r := by classical obtain ⟨h1, h2, h3, h4, hall⟩ := h refine ⟨h1, h2, h3, h4, fun k hk => ?_⟩ have hc := hall k (by omega) have hleaf := closureNode_leaf_false k (by omega) unfold closureNodeConstraint at hc unfold closureNodeConstraint5 by_cases hk0 : k = 0 · simpa only [hk0, if_true] using hc · rw [if_neg hk0] at hc ⊢ rw [if_neg (by simp [hleaf])] at hc by_cases h15 : 15 ≤ k · rw [if_pos h15] obtain ⟨hor, hp, hr⟩ := hc refine ⟨?_, ?_⟩ · rw [hr] split_ifs · exact closureNodeTrial_ge eps k 1 X Y p r · exact closureNodeTrial_ge eps k 0 X Y p r · by_cases hpk : p k · rw [if_pos hpk, hr, if_pos hpk] show closureNodeAvailable eps k 1 X Y p r split_ifs at hp with hC · exact hp.mp hpk · exact hor.resolve_left (hp.mp hpk) · rw [if_neg hpk, hr, if_neg hpk] show closureNodeAvailable eps k 0 X Y p r split_ifs at hp with hC · exact hor.resolve_right (fun h1 => hpk (hp.mpr h1)) · exact not_not.mp (fun h0 => hpk (hp.mpr h0)) · rw [if_neg h15] exact hc end Bounty end PolicyCombinatorialFront_ClosureRawDepth5Policy /- Frozen source PolicyClosureInputsSelectivePair; SHA256 65a19e816381cbe450b02db974663a94b5adfc5a3591eef5bd8925734d75fbe7. -/ section PolicyCombinatorialFront_PolicyClosureInputsSelectivePair /- Ordinary shared formulas with checked selective numeric annotations. -/ namespace SelectiveSharedInputs noncomputable def q0 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (5 / 0x41a7) < (5 / 4) * if (5 / 0x41a7) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X noncomputable def q1 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (5 / 0x41a7) ≥ (10 / 9) * if (5 / 0x41a7) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q2 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (5 / 0x41a7) < (4 / 3) * if (5 / 0x41a7) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q3 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x41a7) ≥ 2 * if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X) ∧ ¬(1 / 0x41a7) ≥ 2 * if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q4 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x41a7) ≥ 2 * if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X then 2 * if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X else (if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X) / 2 noncomputable def q5 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x41a7) ≥ 2 * if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y then 2 * if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y else (2 * if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q6 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q3 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q4 X ≥ SelectiveSharedInputs.q5 Y then SelectiveSharedInputs.q4 X else SelectiveSharedInputs.q5 Y else if SelectiveSharedInputs.q4 X > SelectiveSharedInputs.q5 Y then if SelectiveSharedInputs.q4 X / 4 ≥ SelectiveSharedInputs.q5 Y then SelectiveSharedInputs.q4 X / 4 else SelectiveSharedInputs.q5 Y else if SelectiveSharedInputs.q4 X ≥ SelectiveSharedInputs.q5 Y / 3 then SelectiveSharedInputs.q4 X else SelectiveSharedInputs.q5 Y / 3 noncomputable def q7 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q3 X Y then 1 else 0) = (0 : ℤ) then r (15 : ℕ) ≤ if ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q3 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x41a7) else if SelectiveSharedInputs.q4 X ≥ SelectiveSharedInputs.q5 Y then SelectiveSharedInputs.q4 X else SelectiveSharedInputs.q5 Y else r (15 : ℕ) < if ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q3 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x41a7) else if SelectiveSharedInputs.q4 X ≥ SelectiveSharedInputs.q5 Y then SelectiveSharedInputs.q4 X else SelectiveSharedInputs.q5 Y noncomputable def q8 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x41a7) ≥ 2 * if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X) ∧ (1 / 0x41a7) ≥ 2 * if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q9 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X) ≥ if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q10 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q9 X Y then if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X else if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q11 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X) > if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q12 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X) / 4 ≥ if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q13 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q12 X Y then (if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X) / 4 else if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q14 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X) ≥ (if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q15 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q14 X Y then if (1 / 0x41a7) ≥ (1 / 0x10000) * X * 4 then (1 / 0x10000) * X * 4 else (1 / 0x10000) * X else (if (1 / 0x41a7) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q16 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q8 X Y then 1 else 0) = (0 : ℤ) then r (15 : ℕ) ≤ if ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q8 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x41a7) else SelectiveSharedInputs.q10 X Y else r (15 : ℕ) < if ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q8 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x41a7) else SelectiveSharedInputs.q10 X Y noncomputable def q17 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q8 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (r (15 : ℕ) ≥ if ((if False ∧ SelectiveSharedInputs.q0 X ∧ SelectiveSharedInputs.q1 Y ∧ SelectiveSharedInputs.q2 Y then 1 else 0) - if SelectiveSharedInputs.q8 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q10 X Y else if SelectiveSharedInputs.q11 X Y then SelectiveSharedInputs.q13 X Y else SelectiveSharedInputs.q15 X Y) ∧ SelectiveSharedInputs.q16 X Y r noncomputable def q18 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0x961) < (5 / 4) * if (1 / 0x961) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X noncomputable def q19 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x961) ≥ (10 / 9) * if (1 / 0x961) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q20 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x961) < (4 / 3) * if (1 / 0x961) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q21 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x2ee5) ≥ 2 * if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ∧ ¬(1 / 0x2ee5) ≥ 2 * if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q22 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x2ee5) ≥ 2 * if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X then 2 * if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else (if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 2 noncomputable def q23 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x2ee5) ≥ 2 * if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y then 2 * if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y else (2 * if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q24 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q21 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q22 X ≥ SelectiveSharedInputs.q23 Y then SelectiveSharedInputs.q22 X else SelectiveSharedInputs.q23 Y else if SelectiveSharedInputs.q22 X > SelectiveSharedInputs.q23 Y then if SelectiveSharedInputs.q22 X / 4 ≥ SelectiveSharedInputs.q23 Y then SelectiveSharedInputs.q22 X / 4 else SelectiveSharedInputs.q23 Y else if SelectiveSharedInputs.q22 X ≥ SelectiveSharedInputs.q23 Y / 3 then SelectiveSharedInputs.q22 X else SelectiveSharedInputs.q23 Y / 3 noncomputable def q25 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q21 X Y then 1 else 0) = (0 : ℤ) then r (16 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q21 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x2ee5) else if SelectiveSharedInputs.q22 X ≥ SelectiveSharedInputs.q23 Y then SelectiveSharedInputs.q22 X else SelectiveSharedInputs.q23 Y else r (16 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q21 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x2ee5) else if SelectiveSharedInputs.q22 X ≥ SelectiveSharedInputs.q23 Y then SelectiveSharedInputs.q22 X else SelectiveSharedInputs.q23 Y noncomputable def q26 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x2ee5) ≥ 2 * if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ∧ (1 / 0x2ee5) ≥ 2 * if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q27 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ≥ if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q28 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q27 X Y then if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q29 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) > if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q30 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 4 ≥ if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q31 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q30 X Y then (if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 4 else if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q32 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ≥ (if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q33 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q32 X Y then if (1 / 0x2ee5) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else (if (1 / 0x2ee5) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q34 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q26 X Y then 1 else 0) = (0 : ℤ) then r (16 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q26 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x2ee5) else SelectiveSharedInputs.q28 X Y else r (16 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q26 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x2ee5) else SelectiveSharedInputs.q28 X Y noncomputable def q35 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q26 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (r (16 : ℕ) ≥ if ((if True ∧ SelectiveSharedInputs.q18 X ∧ SelectiveSharedInputs.q19 Y ∧ SelectiveSharedInputs.q20 Y then 1 else 0) - if SelectiveSharedInputs.q26 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q28 X Y else if SelectiveSharedInputs.q29 X Y then SelectiveSharedInputs.q31 X Y else SelectiveSharedInputs.q33 X Y) ∧ SelectiveSharedInputs.q34 X Y r noncomputable def q36 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0x6b3) < (5 / 4) * if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X noncomputable def q37 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x6b3) ≥ (10 / 9) * if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q38 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x6b3) < (4 / 3) * if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q39 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x217f) ≥ 2 * if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ∧ ¬(1 / 0x217f) ≥ 2 * if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q40 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x217f) ≥ 2 * if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X then 2 * if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else (if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 2 noncomputable def q41 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x217f) ≥ 2 * if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y then 2 * if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y else (2 * if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q42 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q36 X ∧ SelectiveSharedInputs.q37 Y ∧ SelectiveSharedInputs.q38 Y then 1 else 0) - if SelectiveSharedInputs.q39 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q40 X ≥ SelectiveSharedInputs.q41 Y then SelectiveSharedInputs.q40 X else SelectiveSharedInputs.q41 Y else if SelectiveSharedInputs.q40 X > SelectiveSharedInputs.q41 Y then if SelectiveSharedInputs.q40 X / 4 ≥ SelectiveSharedInputs.q41 Y then SelectiveSharedInputs.q40 X / 4 else SelectiveSharedInputs.q41 Y else if SelectiveSharedInputs.q40 X ≥ SelectiveSharedInputs.q41 Y / 3 then SelectiveSharedInputs.q40 X else SelectiveSharedInputs.q41 Y / 3 noncomputable def q43 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q36 X ∧ SelectiveSharedInputs.q37 Y ∧ SelectiveSharedInputs.q38 Y then 1 else 0) - if SelectiveSharedInputs.q39 X Y then 1 else 0) = (0 : ℤ) then r (17 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q36 X ∧ SelectiveSharedInputs.q37 Y ∧ SelectiveSharedInputs.q38 Y then 1 else 0) - if SelectiveSharedInputs.q39 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x217f) else if SelectiveSharedInputs.q40 X ≥ SelectiveSharedInputs.q41 Y then SelectiveSharedInputs.q40 X else SelectiveSharedInputs.q41 Y else r (17 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q36 X ∧ SelectiveSharedInputs.q37 Y ∧ SelectiveSharedInputs.q38 Y then 1 else 0) - if SelectiveSharedInputs.q39 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x217f) else if SelectiveSharedInputs.q40 X ≥ SelectiveSharedInputs.q41 Y then SelectiveSharedInputs.q40 X else SelectiveSharedInputs.q41 Y noncomputable def q44 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x217f) ≥ 2 * if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ∧ (1 / 0x217f) ≥ 2 * if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q45 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ≥ if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q46 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q45 X Y then if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q47 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) > if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q48 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 4 ≥ if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q49 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q48 X Y then (if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 4 else if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y noncomputable def q50 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ≥ (if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q51 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q50 X Y then if (1 / 0x217f) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else (if (1 / 0x217f) ≥ (1 / 0x4ce3) * Y * 3 then (1 / 0x4ce3) * Y * 3 else (1 / 0x4ce3) * Y) / 3 noncomputable def q54 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0x4c9) < (5 / 4) * if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X noncomputable def q55 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x4c9) ≥ (10 / 9) * if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q56 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x4c9) < (4 / 3) * if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q57 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x17ed) ≥ 2 * if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ∧ ¬(1 / 0x17ed) ≥ 2 * if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q58 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x17ed) ≥ 2 * if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X then 2 * if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else (if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 2 noncomputable def q59 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x17ed) ≥ 2 * if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y then 2 * if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y else (2 * if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q60 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q57 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q58 X ≥ SelectiveSharedInputs.q59 Y then SelectiveSharedInputs.q58 X else SelectiveSharedInputs.q59 Y else if SelectiveSharedInputs.q58 X > SelectiveSharedInputs.q59 Y then if SelectiveSharedInputs.q58 X / 4 ≥ SelectiveSharedInputs.q59 Y then SelectiveSharedInputs.q58 X / 4 else SelectiveSharedInputs.q59 Y else if SelectiveSharedInputs.q58 X ≥ SelectiveSharedInputs.q59 Y / 3 then SelectiveSharedInputs.q58 X else SelectiveSharedInputs.q59 Y / 3 noncomputable def q61 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q57 X Y then 1 else 0) = (0 : ℤ) then r (18 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q57 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x17ed) else if SelectiveSharedInputs.q58 X ≥ SelectiveSharedInputs.q59 Y then SelectiveSharedInputs.q58 X else SelectiveSharedInputs.q59 Y else r (18 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q57 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x17ed) else if SelectiveSharedInputs.q58 X ≥ SelectiveSharedInputs.q59 Y then SelectiveSharedInputs.q58 X else SelectiveSharedInputs.q59 Y noncomputable def q62 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x17ed) ≥ 2 * if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ∧ (1 / 0x17ed) ≥ 2 * if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q63 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ≥ if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q64 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q63 X Y then if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q65 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) > if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q66 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 4 ≥ if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q67 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q66 X Y then (if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 4 else if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q68 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ≥ (if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q69 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q68 X Y then if (1 / 0x17ed) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else (if (1 / 0x17ed) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q70 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q62 X Y then 1 else 0) = (0 : ℤ) then r (18 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q62 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x17ed) else SelectiveSharedInputs.q64 X Y else r (18 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q62 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x17ed) else SelectiveSharedInputs.q64 X Y noncomputable def q71 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q62 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (r (18 : ℕ) ≥ if ((if True ∧ SelectiveSharedInputs.q54 X ∧ SelectiveSharedInputs.q55 Y ∧ SelectiveSharedInputs.q56 Y then 1 else 0) - if SelectiveSharedInputs.q62 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q64 X Y else if SelectiveSharedInputs.q65 X Y then SelectiveSharedInputs.q67 X Y else SelectiveSharedInputs.q69 X Y) ∧ SelectiveSharedInputs.q70 X Y r noncomputable def q72 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0x36b) < (5 / 4) * if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X noncomputable def q73 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x36b) ≥ (10 / 9) * if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q74 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x36b) < (4 / 3) * if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q75 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x1117) ≥ 2 * if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ∧ ¬(1 / 0x1117) ≥ 2 * if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q76 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x1117) ≥ 2 * if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X then 2 * if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else (if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 2 noncomputable def q77 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x1117) ≥ 2 * if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y then 2 * if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y else (2 * if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q78 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q75 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q76 X ≥ SelectiveSharedInputs.q77 Y then SelectiveSharedInputs.q76 X else SelectiveSharedInputs.q77 Y else if SelectiveSharedInputs.q76 X > SelectiveSharedInputs.q77 Y then if SelectiveSharedInputs.q76 X / 4 ≥ SelectiveSharedInputs.q77 Y then SelectiveSharedInputs.q76 X / 4 else SelectiveSharedInputs.q77 Y else if SelectiveSharedInputs.q76 X ≥ SelectiveSharedInputs.q77 Y / 3 then SelectiveSharedInputs.q76 X else SelectiveSharedInputs.q77 Y / 3 noncomputable def q79 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q75 X Y then 1 else 0) = (0 : ℤ) then r (19 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q75 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x1117) else if SelectiveSharedInputs.q76 X ≥ SelectiveSharedInputs.q77 Y then SelectiveSharedInputs.q76 X else SelectiveSharedInputs.q77 Y else r (19 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q75 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x1117) else if SelectiveSharedInputs.q76 X ≥ SelectiveSharedInputs.q77 Y then SelectiveSharedInputs.q76 X else SelectiveSharedInputs.q77 Y noncomputable def q80 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x1117) ≥ 2 * if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ∧ (1 / 0x1117) ≥ 2 * if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q81 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ≥ if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q82 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q81 X Y then if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q83 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) > if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q84 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 4 ≥ if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q85 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q84 X Y then (if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) / 4 else if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q86 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X) ≥ (if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q87 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q86 X Y then if (1 / 0x1117) ≥ (1 / 0x4000) * X * 4 then (1 / 0x4000) * X * 4 else (1 / 0x4000) * X else (if (1 / 0x1117) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q88 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q80 X Y then 1 else 0) = (0 : ℤ) then r (19 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q80 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x1117) else SelectiveSharedInputs.q82 X Y else r (19 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q80 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x1117) else SelectiveSharedInputs.q82 X Y noncomputable def q89 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q80 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (r (19 : ℕ) ≥ if ((if True ∧ SelectiveSharedInputs.q72 X ∧ SelectiveSharedInputs.q73 Y ∧ SelectiveSharedInputs.q74 Y then 1 else 0) - if SelectiveSharedInputs.q80 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q82 X Y else if SelectiveSharedInputs.q83 X Y then SelectiveSharedInputs.q85 X Y else SelectiveSharedInputs.q87 X Y) ∧ SelectiveSharedInputs.q88 X Y r noncomputable def q90 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0x271) < (5 / 4) * if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X noncomputable def q91 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x271) ≥ (10 / 9) * if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q92 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x271) < (4 / 3) * if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q93 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0xc35) ≥ 2 * if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ∧ ¬(1 / 0xc35) ≥ 2 * if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q94 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0xc35) ≥ 2 * if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X then 2 * if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else (if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 2 noncomputable def q95 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0xc35) ≥ 2 * if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y then 2 * if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y else (2 * if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q96 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q93 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q94 X ≥ SelectiveSharedInputs.q95 Y then SelectiveSharedInputs.q94 X else SelectiveSharedInputs.q95 Y else if SelectiveSharedInputs.q94 X > SelectiveSharedInputs.q95 Y then if SelectiveSharedInputs.q94 X / 4 ≥ SelectiveSharedInputs.q95 Y then SelectiveSharedInputs.q94 X / 4 else SelectiveSharedInputs.q95 Y else if SelectiveSharedInputs.q94 X ≥ SelectiveSharedInputs.q95 Y / 3 then SelectiveSharedInputs.q94 X else SelectiveSharedInputs.q95 Y / 3 noncomputable def q97 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q93 X Y then 1 else 0) = (0 : ℤ) then r (20 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q93 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xc35) else if SelectiveSharedInputs.q94 X ≥ SelectiveSharedInputs.q95 Y then SelectiveSharedInputs.q94 X else SelectiveSharedInputs.q95 Y else r (20 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q93 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xc35) else if SelectiveSharedInputs.q94 X ≥ SelectiveSharedInputs.q95 Y then SelectiveSharedInputs.q94 X else SelectiveSharedInputs.q95 Y noncomputable def q98 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0xc35) ≥ 2 * if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ∧ (1 / 0xc35) ≥ 2 * if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q99 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ≥ if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q100 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q99 X Y then if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q101 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) > if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q102 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 4 ≥ if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q103 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q102 X Y then (if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 4 else if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y noncomputable def q104 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ≥ (if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q105 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q104 X Y then if (1 / 0xc35) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else (if (1 / 0xc35) ≥ (1 / 0x19a1) * Y * 3 then (1 / 0x19a1) * Y * 3 else (1 / 0x19a1) * Y) / 3 noncomputable def q106 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => if ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q98 X Y then 1 else 0) = (0 : ℤ) then r (20 : ℕ) ≤ if ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q98 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xc35) else SelectiveSharedInputs.q100 X Y else r (20 : ℕ) < if ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q98 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xc35) else SelectiveSharedInputs.q100 X Y noncomputable def q107 : ℚ → ℚ → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y r => ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q98 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (r (20 : ℕ) ≥ if ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q98 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q100 X Y else if SelectiveSharedInputs.q101 X Y then SelectiveSharedInputs.q103 X Y else SelectiveSharedInputs.q105 X Y) ∧ SelectiveSharedInputs.q106 X Y r noncomputable def q133 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0x157) < (5 / 4) * if (1 / 0x157) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X noncomputable def q134 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x157) ≥ (10 / 9) * if (1 / 0x157) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q135 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x157) < (4 / 3) * if (1 / 0x157) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q136 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x6b3) ≥ 2 * if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ∧ (1 / 0x6b3) ≥ 2 * if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q137 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ≥ if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q138 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q137 X Y then if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q139 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) > if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q140 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 4 ≥ if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q141 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q140 X Y then (if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 4 else if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q142 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ≥ (if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q143 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q142 X Y then if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else (if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q144 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0x1acc) ≥ if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q136 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q138 X Y else if SelectiveSharedInputs.q139 X Y then SelectiveSharedInputs.q141 X Y else SelectiveSharedInputs.q143 X Y then (3 / 0x1acc) else if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q136 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q138 X Y else if SelectiveSharedInputs.q139 X Y then SelectiveSharedInputs.q141 X Y else SelectiveSharedInputs.q143 X Y noncomputable def q145 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q144 X Y ≥ if p (17 : ℕ) ↔ False then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) then SelectiveSharedInputs.q144 X Y else if p (17 : ℕ) ↔ False then 4 * r (17 : ℕ) else 6 * r (17 : ℕ)) ≥ if p (16 : ℕ) ↔ False then 4 * r (16 : ℕ) else 6 * r (16 : ℕ) noncomputable def q146 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q145 X Y p r then if SelectiveSharedInputs.q144 X Y ≥ if p (17 : ℕ) ↔ False then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) then SelectiveSharedInputs.q144 X Y else if p (17 : ℕ) ↔ False then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) else if p (16 : ℕ) ↔ False then 4 * r (16 : ℕ) else 6 * r (16 : ℕ) noncomputable def q147 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q136 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q146 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q136 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x6b3) else SelectiveSharedInputs.q138 X Y else SelectiveSharedInputs.q146 X Y p r < if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q136 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x6b3) else SelectiveSharedInputs.q138 X Y noncomputable def q148 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q136 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q146 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q136 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q138 X Y else if SelectiveSharedInputs.q139 X Y then SelectiveSharedInputs.q141 X Y else SelectiveSharedInputs.q143 X Y) ∧ SelectiveSharedInputs.q147 X Y p r noncomputable def q149 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x6b3) ≥ 2 * if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ∧ ¬(1 / 0x6b3) ≥ 2 * if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q150 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x6b3) ≥ 2 * if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X then 2 * if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else (if (1 / 0x6b3) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 2 noncomputable def q151 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x6b3) ≥ 2 * if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y then 2 * if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y else (2 * if (1 / 0x6b3) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q152 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q149 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q150 X ≥ SelectiveSharedInputs.q151 Y then SelectiveSharedInputs.q150 X else SelectiveSharedInputs.q151 Y else if SelectiveSharedInputs.q150 X > SelectiveSharedInputs.q151 Y then if SelectiveSharedInputs.q150 X / 4 ≥ SelectiveSharedInputs.q151 Y then SelectiveSharedInputs.q150 X / 4 else SelectiveSharedInputs.q151 Y else if SelectiveSharedInputs.q150 X ≥ SelectiveSharedInputs.q151 Y / 3 then SelectiveSharedInputs.q150 X else SelectiveSharedInputs.q151 Y / 3 noncomputable def q153 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0x1acc) ≥ SelectiveSharedInputs.q152 X Y then (3 / 0x1acc) else SelectiveSharedInputs.q152 X Y) ≥ if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) then if (3 / 0x1acc) ≥ SelectiveSharedInputs.q152 X Y then (3 / 0x1acc) else SelectiveSharedInputs.q152 X Y else if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) noncomputable def q154 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q153 X Y p r ≥ if p (16 : ℕ) ↔ True then 4 * r (16 : ℕ) else 6 * r (16 : ℕ) then SelectiveSharedInputs.q153 X Y p r else if p (16 : ℕ) ↔ True then 4 * r (16 : ℕ) else 6 * r (16 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q149 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x6b3) else if SelectiveSharedInputs.q150 X ≥ SelectiveSharedInputs.q151 Y then SelectiveSharedInputs.q150 X else SelectiveSharedInputs.q151 Y noncomputable def q155 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q153 X Y p r ≥ if p (16 : ℕ) ↔ True then 4 * r (16 : ℕ) else 6 * r (16 : ℕ) then SelectiveSharedInputs.q153 X Y p r else if p (16 : ℕ) ↔ True then 4 * r (16 : ℕ) else 6 * r (16 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q149 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x6b3) else if SelectiveSharedInputs.q150 X ≥ SelectiveSharedInputs.q151 Y then SelectiveSharedInputs.q150 X else SelectiveSharedInputs.q151 Y noncomputable def q156 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q149 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q153 X Y p r ≥ if p (16 : ℕ) ↔ True then 4 * r (16 : ℕ) else 6 * r (16 : ℕ) then SelectiveSharedInputs.q153 X Y p r else if p (16 : ℕ) ↔ True then 4 * r (16 : ℕ) else 6 * r (16 : ℕ)) ≥ SelectiveSharedInputs.q152 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q133 X ∧ SelectiveSharedInputs.q134 Y ∧ SelectiveSharedInputs.q135 Y then 1 else 0) - if SelectiveSharedInputs.q149 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q154 X Y p r else SelectiveSharedInputs.q155 X Y p r noncomputable def q158 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0xf5) < (5 / 4) * if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X noncomputable def q159 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0xf5) ≥ (10 / 9) * if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q160 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0xf5) < (4 / 3) * if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q161 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x4c9) ≥ 2 * if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ∧ (1 / 0x4c9) ≥ 2 * if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q162 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ≥ if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q163 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q162 X Y then if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q164 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) > if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q165 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 4 ≥ if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q166 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q165 X Y then (if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 4 else if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q167 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ≥ (if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q168 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q167 X Y then if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else (if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q169 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0x1324) ≥ if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q161 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q163 X Y else if SelectiveSharedInputs.q164 X Y then SelectiveSharedInputs.q166 X Y else SelectiveSharedInputs.q168 X Y then (3 / 0x1324) else if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q161 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q163 X Y else if SelectiveSharedInputs.q164 X Y then SelectiveSharedInputs.q166 X Y else SelectiveSharedInputs.q168 X Y noncomputable def q170 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q169 X Y ≥ if p (18 : ℕ) ↔ False then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) then SelectiveSharedInputs.q169 X Y else if p (18 : ℕ) ↔ False then 4 * r (18 : ℕ) else 6 * r (18 : ℕ)) ≥ if p (17 : ℕ) ↔ False then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) noncomputable def q171 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q170 X Y p r then if SelectiveSharedInputs.q169 X Y ≥ if p (18 : ℕ) ↔ False then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) then SelectiveSharedInputs.q169 X Y else if p (18 : ℕ) ↔ False then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) else if p (17 : ℕ) ↔ False then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) noncomputable def q172 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q161 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q171 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q161 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x4c9) else SelectiveSharedInputs.q163 X Y else SelectiveSharedInputs.q171 X Y p r < if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q161 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x4c9) else SelectiveSharedInputs.q163 X Y noncomputable def q173 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q161 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q171 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q161 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q163 X Y else if SelectiveSharedInputs.q164 X Y then SelectiveSharedInputs.q166 X Y else SelectiveSharedInputs.q168 X Y) ∧ SelectiveSharedInputs.q172 X Y p r noncomputable def q174 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x4c9) ≥ 2 * if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) ∧ ¬(1 / 0x4c9) ≥ 2 * if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q175 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x4c9) ≥ 2 * if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X then 2 * if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X else (if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X) / 2 noncomputable def q176 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x4c9) ≥ 2 * if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y then 2 * if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y else (2 * if (1 / 0x4c9) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q177 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q174 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q175 X ≥ SelectiveSharedInputs.q176 Y then SelectiveSharedInputs.q175 X else SelectiveSharedInputs.q176 Y else if SelectiveSharedInputs.q175 X > SelectiveSharedInputs.q176 Y then if SelectiveSharedInputs.q175 X / 4 ≥ SelectiveSharedInputs.q176 Y then SelectiveSharedInputs.q175 X / 4 else SelectiveSharedInputs.q176 Y else if SelectiveSharedInputs.q175 X ≥ SelectiveSharedInputs.q176 Y / 3 then SelectiveSharedInputs.q175 X else SelectiveSharedInputs.q176 Y / 3 noncomputable def q178 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0x1324) ≥ SelectiveSharedInputs.q177 X Y then (3 / 0x1324) else SelectiveSharedInputs.q177 X Y) ≥ if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) then if (3 / 0x1324) ≥ SelectiveSharedInputs.q177 X Y then (3 / 0x1324) else SelectiveSharedInputs.q177 X Y else if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) noncomputable def q179 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q178 X Y p r ≥ if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) then SelectiveSharedInputs.q178 X Y p r else if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q174 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x4c9) else if SelectiveSharedInputs.q175 X ≥ SelectiveSharedInputs.q176 Y then SelectiveSharedInputs.q175 X else SelectiveSharedInputs.q176 Y noncomputable def q180 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q178 X Y p r ≥ if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) then SelectiveSharedInputs.q178 X Y p r else if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q174 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x4c9) else if SelectiveSharedInputs.q175 X ≥ SelectiveSharedInputs.q176 Y then SelectiveSharedInputs.q175 X else SelectiveSharedInputs.q176 Y noncomputable def q181 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q174 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q178 X Y p r ≥ if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) then SelectiveSharedInputs.q178 X Y p r else if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ)) ≥ SelectiveSharedInputs.q177 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q158 X ∧ SelectiveSharedInputs.q159 Y ∧ SelectiveSharedInputs.q160 Y then 1 else 0) - if SelectiveSharedInputs.q174 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q179 X Y p r else SelectiveSharedInputs.q180 X Y p r noncomputable def q182 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 0x4c9) ≥ 2 * if (1 / 0x4c9) ≥ (1 / 0x1000) * X * 4 then (1 / 0x1000) * X * 4 else (1 / 0x1000) * X then SelectiveSharedInputs.q181 X Y p r else ¬SelectiveSharedInputs.q173 X Y p r noncomputable def q183 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0xaf) < (5 / 4) * if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X noncomputable def q184 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0xaf) ≥ (10 / 9) * if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q185 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0xaf) < (4 / 3) * if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q186 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x36b) ≥ 2 * if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) ∧ (1 / 0x36b) ≥ 2 * if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q187 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) ≥ if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q188 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q187 X Y then if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X else if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q189 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) > if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q190 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) / 4 ≥ if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q191 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q190 X Y then (if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) / 4 else if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q192 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) ≥ (if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q193 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q192 X Y then if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X else (if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q194 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0xdac) ≥ if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q186 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q188 X Y else if SelectiveSharedInputs.q189 X Y then SelectiveSharedInputs.q191 X Y else SelectiveSharedInputs.q193 X Y then (3 / 0xdac) else if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q186 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q188 X Y else if SelectiveSharedInputs.q189 X Y then SelectiveSharedInputs.q191 X Y else SelectiveSharedInputs.q193 X Y noncomputable def q195 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q194 X Y ≥ if p (19 : ℕ) ↔ False then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) then SelectiveSharedInputs.q194 X Y else if p (19 : ℕ) ↔ False then 4 * r (19 : ℕ) else 6 * r (19 : ℕ)) ≥ if p (18 : ℕ) ↔ False then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) noncomputable def q196 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q195 X Y p r then if SelectiveSharedInputs.q194 X Y ≥ if p (19 : ℕ) ↔ False then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) then SelectiveSharedInputs.q194 X Y else if p (19 : ℕ) ↔ False then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) else if p (18 : ℕ) ↔ False then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) noncomputable def q197 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q186 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q196 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q186 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x36b) else SelectiveSharedInputs.q188 X Y else SelectiveSharedInputs.q196 X Y p r < if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q186 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x36b) else SelectiveSharedInputs.q188 X Y noncomputable def q198 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q186 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q196 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q186 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q188 X Y else if SelectiveSharedInputs.q189 X Y then SelectiveSharedInputs.q191 X Y else SelectiveSharedInputs.q193 X Y) ∧ SelectiveSharedInputs.q197 X Y p r noncomputable def q199 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x36b) ≥ 2 * if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) ∧ ¬(1 / 0x36b) ≥ 2 * if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y noncomputable def q200 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x36b) ≥ 2 * if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X then 2 * if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X else (if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) / 2 noncomputable def q201 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x36b) ≥ 2 * if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y then 2 * if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y else (2 * if (1 / 0x36b) ≥ (1 / 0x88b) * Y * 3 then (1 / 0x88b) * Y * 3 else (1 / 0x88b) * Y) / 3 noncomputable def q202 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q199 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q200 X ≥ SelectiveSharedInputs.q201 Y then SelectiveSharedInputs.q200 X else SelectiveSharedInputs.q201 Y else if SelectiveSharedInputs.q200 X > SelectiveSharedInputs.q201 Y then if SelectiveSharedInputs.q200 X / 4 ≥ SelectiveSharedInputs.q201 Y then SelectiveSharedInputs.q200 X / 4 else SelectiveSharedInputs.q201 Y else if SelectiveSharedInputs.q200 X ≥ SelectiveSharedInputs.q201 Y / 3 then SelectiveSharedInputs.q200 X else SelectiveSharedInputs.q201 Y / 3 noncomputable def q203 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0xdac) ≥ SelectiveSharedInputs.q202 X Y then (3 / 0xdac) else SelectiveSharedInputs.q202 X Y) ≥ if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) then if (3 / 0xdac) ≥ SelectiveSharedInputs.q202 X Y then (3 / 0xdac) else SelectiveSharedInputs.q202 X Y else if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) noncomputable def q204 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q203 X Y p r ≥ if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) then SelectiveSharedInputs.q203 X Y p r else if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q199 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x36b) else if SelectiveSharedInputs.q200 X ≥ SelectiveSharedInputs.q201 Y then SelectiveSharedInputs.q200 X else SelectiveSharedInputs.q201 Y noncomputable def q205 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q203 X Y p r ≥ if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) then SelectiveSharedInputs.q203 X Y p r else if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q199 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x36b) else if SelectiveSharedInputs.q200 X ≥ SelectiveSharedInputs.q201 Y then SelectiveSharedInputs.q200 X else SelectiveSharedInputs.q201 Y noncomputable def q206 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q199 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q203 X Y p r ≥ if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) then SelectiveSharedInputs.q203 X Y p r else if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ)) ≥ SelectiveSharedInputs.q202 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q183 X ∧ SelectiveSharedInputs.q184 Y ∧ SelectiveSharedInputs.q185 Y then 1 else 0) - if SelectiveSharedInputs.q199 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q204 X Y p r else SelectiveSharedInputs.q205 X Y p r noncomputable def q207 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 0x36b) ≥ 2 * if (1 / 0x36b) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X then SelectiveSharedInputs.q206 X Y p r else ¬SelectiveSharedInputs.q198 X Y p r noncomputable def q208 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 0x7d) < (5 / 4) * if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X noncomputable def q209 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x7d) ≥ (10 / 9) * if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q210 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 0x7d) < (4 / 3) * if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q211 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x271) ≥ 2 * if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) ∧ (1 / 0x271) ≥ 2 * if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q212 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) ≥ if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q213 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q212 X Y then if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X else if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q214 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) > if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q215 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) / 4 ≥ if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q216 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q215 X Y then (if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) / 4 else if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q217 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) ≥ (if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y) / 3 noncomputable def q218 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q217 X Y then if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X else (if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y) / 3 noncomputable def q219 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0x9c4) ≥ if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q211 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q213 X Y else if SelectiveSharedInputs.q214 X Y then SelectiveSharedInputs.q216 X Y else SelectiveSharedInputs.q218 X Y then (3 / 0x9c4) else if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q211 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q213 X Y else if SelectiveSharedInputs.q214 X Y then SelectiveSharedInputs.q216 X Y else SelectiveSharedInputs.q218 X Y noncomputable def q220 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q219 X Y ≥ if p (20 : ℕ) ↔ False then 4 * r (20 : ℕ) else 6 * r (20 : ℕ) then SelectiveSharedInputs.q219 X Y else if p (20 : ℕ) ↔ False then 4 * r (20 : ℕ) else 6 * r (20 : ℕ)) ≥ if p (19 : ℕ) ↔ False then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) noncomputable def q221 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q220 X Y p r then if SelectiveSharedInputs.q219 X Y ≥ if p (20 : ℕ) ↔ False then 4 * r (20 : ℕ) else 6 * r (20 : ℕ) then SelectiveSharedInputs.q219 X Y else if p (20 : ℕ) ↔ False then 4 * r (20 : ℕ) else 6 * r (20 : ℕ) else if p (19 : ℕ) ↔ False then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) noncomputable def q222 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q211 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q221 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q211 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x271) else SelectiveSharedInputs.q213 X Y else SelectiveSharedInputs.q221 X Y p r < if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q211 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x271) else SelectiveSharedInputs.q213 X Y noncomputable def q223 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q211 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q221 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q211 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q213 X Y else if SelectiveSharedInputs.q214 X Y then SelectiveSharedInputs.q216 X Y else SelectiveSharedInputs.q218 X Y) ∧ SelectiveSharedInputs.q222 X Y p r noncomputable def q224 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x271) ≥ 2 * if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) ∧ ¬(1 / 0x271) ≥ 2 * if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q225 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x271) ≥ 2 * if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X then 2 * if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X else (if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X) / 2 noncomputable def q226 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x271) ≥ 2 * if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y then 2 * if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y else (2 * if (1 / 0x271) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y) / 3 noncomputable def q227 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q224 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q225 X ≥ SelectiveSharedInputs.q226 Y then SelectiveSharedInputs.q225 X else SelectiveSharedInputs.q226 Y else if SelectiveSharedInputs.q225 X > SelectiveSharedInputs.q226 Y then if SelectiveSharedInputs.q225 X / 4 ≥ SelectiveSharedInputs.q226 Y then SelectiveSharedInputs.q225 X / 4 else SelectiveSharedInputs.q226 Y else if SelectiveSharedInputs.q225 X ≥ SelectiveSharedInputs.q226 Y / 3 then SelectiveSharedInputs.q225 X else SelectiveSharedInputs.q226 Y / 3 noncomputable def q228 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0x9c4) ≥ SelectiveSharedInputs.q227 X Y then (3 / 0x9c4) else SelectiveSharedInputs.q227 X Y) ≥ if p (20 : ℕ) ↔ True then 4 * r (20 : ℕ) else 6 * r (20 : ℕ) then if (3 / 0x9c4) ≥ SelectiveSharedInputs.q227 X Y then (3 / 0x9c4) else SelectiveSharedInputs.q227 X Y else if p (20 : ℕ) ↔ True then 4 * r (20 : ℕ) else 6 * r (20 : ℕ) noncomputable def q229 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q228 X Y p r ≥ if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) then SelectiveSharedInputs.q228 X Y p r else if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q224 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x271) else if SelectiveSharedInputs.q225 X ≥ SelectiveSharedInputs.q226 Y then SelectiveSharedInputs.q225 X else SelectiveSharedInputs.q226 Y noncomputable def q230 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q228 X Y p r ≥ if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) then SelectiveSharedInputs.q228 X Y p r else if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q224 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x271) else if SelectiveSharedInputs.q225 X ≥ SelectiveSharedInputs.q226 Y then SelectiveSharedInputs.q225 X else SelectiveSharedInputs.q226 Y noncomputable def q231 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q224 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q228 X Y p r ≥ if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) then SelectiveSharedInputs.q228 X Y p r else if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ)) ≥ SelectiveSharedInputs.q227 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q208 X ∧ SelectiveSharedInputs.q209 Y ∧ SelectiveSharedInputs.q210 Y then 1 else 0) - if SelectiveSharedInputs.q224 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q229 X Y p r else SelectiveSharedInputs.q230 X Y p r noncomputable def q232 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 0x271) ≥ 2 * if (1 / 0x271) ≥ (1 / 0x400) * X * 4 then (1 / 0x400) * X * 4 else (1 / 0x400) * X then SelectiveSharedInputs.q231 X Y p r else ¬SelectiveSharedInputs.q223 X Y p r noncomputable def q258 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 49) < (5 / 4) * if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X noncomputable def q259 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 49) ≥ (10 / 9) * if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q260 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 49) < (4 / 3) * if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q261 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0xf5) ≥ 2 * if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ∧ (1 / 0xf5) ≥ 2 * if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q262 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ≥ if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q263 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q262 X Y then if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q264 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) > if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q265 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 4 ≥ if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q266 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q265 X Y then (if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 4 else if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q267 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ≥ (if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y) / 3 noncomputable def q268 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q267 X Y then if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else (if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y) / 3 noncomputable def q269 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0x3d4) ≥ if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q261 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q263 X Y else if SelectiveSharedInputs.q264 X Y then SelectiveSharedInputs.q266 X Y else SelectiveSharedInputs.q268 X Y then (3 / 0x3d4) else if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q261 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q263 X Y else if SelectiveSharedInputs.q264 X Y then SelectiveSharedInputs.q266 X Y else SelectiveSharedInputs.q268 X Y noncomputable def q270 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q269 X Y ≥ if p (12 : ℕ) ↔ False then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) then SelectiveSharedInputs.q269 X Y else if p (12 : ℕ) ↔ False then 4 * r (12 : ℕ) else 6 * r (12 : ℕ)) ≥ if p (11 : ℕ) ↔ False then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) noncomputable def q271 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q270 X Y p r then if SelectiveSharedInputs.q269 X Y ≥ if p (12 : ℕ) ↔ False then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) then SelectiveSharedInputs.q269 X Y else if p (12 : ℕ) ↔ False then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) else if p (11 : ℕ) ↔ False then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) noncomputable def q272 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q261 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q271 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q261 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xf5) else SelectiveSharedInputs.q263 X Y else SelectiveSharedInputs.q271 X Y p r < if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q261 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xf5) else SelectiveSharedInputs.q263 X Y noncomputable def q273 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q261 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q271 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q261 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q263 X Y else if SelectiveSharedInputs.q264 X Y then SelectiveSharedInputs.q266 X Y else SelectiveSharedInputs.q268 X Y) ∧ SelectiveSharedInputs.q272 X Y p r noncomputable def q274 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0xf5) ≥ 2 * if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ∧ ¬(1 / 0xf5) ≥ 2 * if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y noncomputable def q275 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0xf5) ≥ 2 * if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X then 2 * if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else (if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 2 noncomputable def q276 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0xf5) ≥ 2 * if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y then 2 * if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y else (2 * if (1 / 0xf5) ≥ (1 / 0x2d9) * Y * 3 then (1 / 0x2d9) * Y * 3 else (1 / 0x2d9) * Y) / 3 noncomputable def q277 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q274 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q275 X ≥ SelectiveSharedInputs.q276 Y then SelectiveSharedInputs.q275 X else SelectiveSharedInputs.q276 Y else if SelectiveSharedInputs.q275 X > SelectiveSharedInputs.q276 Y then if SelectiveSharedInputs.q275 X / 4 ≥ SelectiveSharedInputs.q276 Y then SelectiveSharedInputs.q275 X / 4 else SelectiveSharedInputs.q276 Y else if SelectiveSharedInputs.q275 X ≥ SelectiveSharedInputs.q276 Y / 3 then SelectiveSharedInputs.q275 X else SelectiveSharedInputs.q276 Y / 3 noncomputable def q278 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0x3d4) ≥ SelectiveSharedInputs.q277 X Y then (3 / 0x3d4) else SelectiveSharedInputs.q277 X Y) ≥ if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) then if (3 / 0x3d4) ≥ SelectiveSharedInputs.q277 X Y then (3 / 0x3d4) else SelectiveSharedInputs.q277 X Y else if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) noncomputable def q279 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q278 X Y p r ≥ if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) then SelectiveSharedInputs.q278 X Y p r else if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q274 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xf5) else if SelectiveSharedInputs.q275 X ≥ SelectiveSharedInputs.q276 Y then SelectiveSharedInputs.q275 X else SelectiveSharedInputs.q276 Y noncomputable def q280 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q278 X Y p r ≥ if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) then SelectiveSharedInputs.q278 X Y p r else if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q274 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xf5) else if SelectiveSharedInputs.q275 X ≥ SelectiveSharedInputs.q276 Y then SelectiveSharedInputs.q275 X else SelectiveSharedInputs.q276 Y noncomputable def q281 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q274 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q278 X Y p r ≥ if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) then SelectiveSharedInputs.q278 X Y p r else if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ)) ≥ SelectiveSharedInputs.q277 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q258 X ∧ SelectiveSharedInputs.q259 Y ∧ SelectiveSharedInputs.q260 Y then 1 else 0) - if SelectiveSharedInputs.q274 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q279 X Y p r else SelectiveSharedInputs.q280 X Y p r noncomputable def q282 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 0xf5) ≥ 2 * if (1 / 0xf5) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X then SelectiveSharedInputs.q281 X Y p r else ¬SelectiveSharedInputs.q273 X Y p r noncomputable def q283 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 35) < (5 / 4) * if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X noncomputable def q284 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 35) ≥ (10 / 9) * if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q285 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 35) < (4 / 3) * if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q286 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0xaf) ≥ 2 * if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ∧ (1 / 0xaf) ≥ 2 * if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q287 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ≥ if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q288 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q287 X Y then if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q289 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) > if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q290 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 4 ≥ if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q291 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q290 X Y then (if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 4 else if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q292 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ≥ (if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y) / 3 noncomputable def q293 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q292 X Y then if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else (if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y) / 3 noncomputable def q294 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0x2bc) ≥ if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q286 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q288 X Y else if SelectiveSharedInputs.q289 X Y then SelectiveSharedInputs.q291 X Y else SelectiveSharedInputs.q293 X Y then (3 / 0x2bc) else if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q286 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q288 X Y else if SelectiveSharedInputs.q289 X Y then SelectiveSharedInputs.q291 X Y else SelectiveSharedInputs.q293 X Y noncomputable def q295 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q294 X Y ≥ if p (13 : ℕ) ↔ False then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) then SelectiveSharedInputs.q294 X Y else if p (13 : ℕ) ↔ False then 4 * r (13 : ℕ) else 6 * r (13 : ℕ)) ≥ if p (12 : ℕ) ↔ False then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) noncomputable def q296 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q295 X Y p r then if SelectiveSharedInputs.q294 X Y ≥ if p (13 : ℕ) ↔ False then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) then SelectiveSharedInputs.q294 X Y else if p (13 : ℕ) ↔ False then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) else if p (12 : ℕ) ↔ False then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) noncomputable def q297 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q286 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q296 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q286 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xaf) else SelectiveSharedInputs.q288 X Y else SelectiveSharedInputs.q296 X Y p r < if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q286 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xaf) else SelectiveSharedInputs.q288 X Y noncomputable def q298 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q286 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q296 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q286 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q288 X Y else if SelectiveSharedInputs.q289 X Y then SelectiveSharedInputs.q291 X Y else SelectiveSharedInputs.q293 X Y) ∧ SelectiveSharedInputs.q297 X Y p r noncomputable def q299 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0xaf) ≥ 2 * if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ∧ ¬(1 / 0xaf) ≥ 2 * if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q300 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0xaf) ≥ 2 * if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X then 2 * if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else (if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 2 noncomputable def q301 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0xaf) ≥ 2 * if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y then 2 * if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y else (2 * if (1 / 0xaf) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y) / 3 noncomputable def q302 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q299 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q300 X ≥ SelectiveSharedInputs.q301 Y then SelectiveSharedInputs.q300 X else SelectiveSharedInputs.q301 Y else if SelectiveSharedInputs.q300 X > SelectiveSharedInputs.q301 Y then if SelectiveSharedInputs.q300 X / 4 ≥ SelectiveSharedInputs.q301 Y then SelectiveSharedInputs.q300 X / 4 else SelectiveSharedInputs.q301 Y else if SelectiveSharedInputs.q300 X ≥ SelectiveSharedInputs.q301 Y / 3 then SelectiveSharedInputs.q300 X else SelectiveSharedInputs.q301 Y / 3 noncomputable def q303 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0x2bc) ≥ SelectiveSharedInputs.q302 X Y then (3 / 0x2bc) else SelectiveSharedInputs.q302 X Y) ≥ if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) then if (3 / 0x2bc) ≥ SelectiveSharedInputs.q302 X Y then (3 / 0x2bc) else SelectiveSharedInputs.q302 X Y else if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) noncomputable def q304 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q303 X Y p r ≥ if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) then SelectiveSharedInputs.q303 X Y p r else if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q299 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xaf) else if SelectiveSharedInputs.q300 X ≥ SelectiveSharedInputs.q301 Y then SelectiveSharedInputs.q300 X else SelectiveSharedInputs.q301 Y noncomputable def q305 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q303 X Y p r ≥ if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) then SelectiveSharedInputs.q303 X Y p r else if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q299 X Y then 1 else 0) = (0 : ℤ) then (1 / 0xaf) else if SelectiveSharedInputs.q300 X ≥ SelectiveSharedInputs.q301 Y then SelectiveSharedInputs.q300 X else SelectiveSharedInputs.q301 Y noncomputable def q306 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q299 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q303 X Y p r ≥ if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) then SelectiveSharedInputs.q303 X Y p r else if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ)) ≥ SelectiveSharedInputs.q302 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q283 X ∧ SelectiveSharedInputs.q284 Y ∧ SelectiveSharedInputs.q285 Y then 1 else 0) - if SelectiveSharedInputs.q299 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q304 X Y p r else SelectiveSharedInputs.q305 X Y p r noncomputable def q307 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 0xaf) ≥ 2 * if (1 / 0xaf) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X then SelectiveSharedInputs.q306 X Y p r else ¬SelectiveSharedInputs.q298 X Y p r noncomputable def q308 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 25) < (5 / 4) * if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X noncomputable def q309 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 25) ≥ (10 / 9) * if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q310 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 25) < (4 / 3) * if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q311 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 0x7d) ≥ 2 * if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ∧ (1 / 0x7d) ≥ 2 * if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q312 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ≥ if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q313 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q312 X Y then if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q314 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) > if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q315 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 4 ≥ if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q316 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q315 X Y then (if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 4 else if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q317 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ≥ (if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y) / 3 noncomputable def q318 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q317 X Y then if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else (if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y) / 3 noncomputable def q319 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0x1f4) ≥ if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q311 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q313 X Y else if SelectiveSharedInputs.q314 X Y then SelectiveSharedInputs.q316 X Y else SelectiveSharedInputs.q318 X Y then (3 / 0x1f4) else if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q311 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q313 X Y else if SelectiveSharedInputs.q314 X Y then SelectiveSharedInputs.q316 X Y else SelectiveSharedInputs.q318 X Y noncomputable def q320 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q319 X Y ≥ if p (14 : ℕ) ↔ False then 4 * r (14 : ℕ) else 6 * r (14 : ℕ) then SelectiveSharedInputs.q319 X Y else if p (14 : ℕ) ↔ False then 4 * r (14 : ℕ) else 6 * r (14 : ℕ)) ≥ if p (13 : ℕ) ↔ False then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) noncomputable def q321 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q320 X Y p r then if SelectiveSharedInputs.q319 X Y ≥ if p (14 : ℕ) ↔ False then 4 * r (14 : ℕ) else 6 * r (14 : ℕ) then SelectiveSharedInputs.q319 X Y else if p (14 : ℕ) ↔ False then 4 * r (14 : ℕ) else 6 * r (14 : ℕ) else if p (13 : ℕ) ↔ False then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) noncomputable def q322 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q311 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q321 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q311 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x7d) else SelectiveSharedInputs.q313 X Y else SelectiveSharedInputs.q321 X Y p r < if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q311 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x7d) else SelectiveSharedInputs.q313 X Y noncomputable def q323 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q311 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q321 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q311 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q313 X Y else if SelectiveSharedInputs.q314 X Y then SelectiveSharedInputs.q316 X Y else SelectiveSharedInputs.q318 X Y) ∧ SelectiveSharedInputs.q322 X Y p r noncomputable def q324 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 0x7d) ≥ 2 * if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) ∧ ¬(1 / 0x7d) ≥ 2 * if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y noncomputable def q325 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 0x7d) ≥ 2 * if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X then 2 * if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X else (if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X) / 2 noncomputable def q326 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 0x7d) ≥ 2 * if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y then 2 * if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y else (2 * if (1 / 0x7d) ≥ (1 / 0xf3) * Y * 3 then (1 / 0xf3) * Y * 3 else (1 / 0xf3) * Y) / 3 noncomputable def q327 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q324 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q325 X ≥ SelectiveSharedInputs.q326 Y then SelectiveSharedInputs.q325 X else SelectiveSharedInputs.q326 Y else if SelectiveSharedInputs.q325 X > SelectiveSharedInputs.q326 Y then if SelectiveSharedInputs.q325 X / 4 ≥ SelectiveSharedInputs.q326 Y then SelectiveSharedInputs.q325 X / 4 else SelectiveSharedInputs.q326 Y else if SelectiveSharedInputs.q325 X ≥ SelectiveSharedInputs.q326 Y / 3 then SelectiveSharedInputs.q325 X else SelectiveSharedInputs.q326 Y / 3 noncomputable def q328 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0x1f4) ≥ SelectiveSharedInputs.q327 X Y then (3 / 0x1f4) else SelectiveSharedInputs.q327 X Y) ≥ if p (14 : ℕ) ↔ True then 4 * r (14 : ℕ) else 6 * r (14 : ℕ) then if (3 / 0x1f4) ≥ SelectiveSharedInputs.q327 X Y then (3 / 0x1f4) else SelectiveSharedInputs.q327 X Y else if p (14 : ℕ) ↔ True then 4 * r (14 : ℕ) else 6 * r (14 : ℕ) noncomputable def q329 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q328 X Y p r ≥ if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) then SelectiveSharedInputs.q328 X Y p r else if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q324 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x7d) else if SelectiveSharedInputs.q325 X ≥ SelectiveSharedInputs.q326 Y then SelectiveSharedInputs.q325 X else SelectiveSharedInputs.q326 Y noncomputable def q330 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q328 X Y p r ≥ if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) then SelectiveSharedInputs.q328 X Y p r else if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q324 X Y then 1 else 0) = (0 : ℤ) then (1 / 0x7d) else if SelectiveSharedInputs.q325 X ≥ SelectiveSharedInputs.q326 Y then SelectiveSharedInputs.q325 X else SelectiveSharedInputs.q326 Y noncomputable def q331 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q324 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q328 X Y p r ≥ if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) then SelectiveSharedInputs.q328 X Y p r else if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ)) ≥ SelectiveSharedInputs.q327 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q308 X ∧ SelectiveSharedInputs.q309 Y ∧ SelectiveSharedInputs.q310 Y then 1 else 0) - if SelectiveSharedInputs.q324 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q329 X Y p r else SelectiveSharedInputs.q330 X Y p r noncomputable def q332 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 0x7d) ≥ 2 * if (1 / 0x7d) ≥ (1 / 0x100) * X * 4 then (1 / 0x100) * X * 4 else (1 / 0x100) * X then SelectiveSharedInputs.q331 X Y p r else ¬SelectiveSharedInputs.q323 X Y p r noncomputable def q333 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (5 / 49) < (5 / 4) * if (5 / 49) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X noncomputable def q334 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (5 / 49) ≥ (10 / 9) * if (5 / 49) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q335 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (5 / 49) < (4 / 3) * if (5 / 49) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q336 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 49) ≥ 2 * if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ∧ (1 / 49) ≥ 2 * if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q337 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ≥ if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q338 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q337 X Y then if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q339 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) > if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q340 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 4 ≥ if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q341 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q340 X Y then (if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 4 else if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q342 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ≥ (if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y) / 3 noncomputable def q343 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q342 X Y then if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else (if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y) / 3 noncomputable def q344 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0xc4) ≥ if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q338 X Y else if SelectiveSharedInputs.q339 X Y then SelectiveSharedInputs.q341 X Y else SelectiveSharedInputs.q343 X Y then (3 / 0xc4) else if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q338 X Y else if SelectiveSharedInputs.q339 X Y then SelectiveSharedInputs.q341 X Y else SelectiveSharedInputs.q343 X Y noncomputable def q345 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q344 X Y ≥ if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q344 X Y else if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ)) ≥ if p (6 : ℕ) ↔ False then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) noncomputable def q346 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q345 X Y p r then if SelectiveSharedInputs.q344 X Y ≥ if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q344 X Y else if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) else if p (6 : ℕ) ↔ False then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) noncomputable def q347 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q346 X Y p r ≤ if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then (1 / 49) else SelectiveSharedInputs.q338 X Y else SelectiveSharedInputs.q346 X Y p r < if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then (1 / 49) else SelectiveSharedInputs.q338 X Y noncomputable def q348 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q346 X Y p r ≥ if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q338 X Y else if SelectiveSharedInputs.q339 X Y then SelectiveSharedInputs.q341 X Y else SelectiveSharedInputs.q343 X Y) ∧ SelectiveSharedInputs.q347 X Y p r noncomputable def q349 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 49) ≥ 2 * if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ∧ ¬(1 / 49) ≥ 2 * if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q350 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 49) ≥ 2 * if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X then 2 * if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else (if (1 / 49) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 2 noncomputable def q351 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 49) ≥ 2 * if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y then 2 * if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y else (2 * if (1 / 49) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y) / 3 noncomputable def q352 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q350 X ≥ SelectiveSharedInputs.q351 Y then SelectiveSharedInputs.q350 X else SelectiveSharedInputs.q351 Y else if SelectiveSharedInputs.q350 X > SelectiveSharedInputs.q351 Y then if SelectiveSharedInputs.q350 X / 4 ≥ SelectiveSharedInputs.q351 Y then SelectiveSharedInputs.q350 X / 4 else SelectiveSharedInputs.q351 Y else if SelectiveSharedInputs.q350 X ≥ SelectiveSharedInputs.q351 Y / 3 then SelectiveSharedInputs.q350 X else SelectiveSharedInputs.q351 Y / 3 noncomputable def q353 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0xc4) ≥ SelectiveSharedInputs.q352 X Y then (3 / 0xc4) else SelectiveSharedInputs.q352 X Y) ≥ if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then if (3 / 0xc4) ≥ SelectiveSharedInputs.q352 X Y then (3 / 0xc4) else SelectiveSharedInputs.q352 X Y else if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) noncomputable def q354 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q353 X Y p r ≥ if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) then SelectiveSharedInputs.q353 X Y p r else if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ)) ≤ if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) = (0 : ℤ) then (1 / 49) else if SelectiveSharedInputs.q350 X ≥ SelectiveSharedInputs.q351 Y then SelectiveSharedInputs.q350 X else SelectiveSharedInputs.q351 Y noncomputable def q355 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q353 X Y p r ≥ if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) then SelectiveSharedInputs.q353 X Y p r else if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ)) < if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) = (0 : ℤ) then (1 / 49) else if SelectiveSharedInputs.q350 X ≥ SelectiveSharedInputs.q351 Y then SelectiveSharedInputs.q350 X else SelectiveSharedInputs.q351 Y noncomputable def q356 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q353 X Y p r ≥ if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) then SelectiveSharedInputs.q353 X Y p r else if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ)) ≥ SelectiveSharedInputs.q352 X Y ∧ if ((if False ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q354 X Y p r else SelectiveSharedInputs.q355 X Y p r noncomputable def q358 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 7) < (5 / 4) * if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X noncomputable def q359 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 7) ≥ (10 / 9) * if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q360 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 7) < (4 / 3) * if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q361 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 35) ≥ 2 * if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ∧ (1 / 35) ≥ 2 * if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q362 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ≥ if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q363 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q362 X Y then if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q364 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) > if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q365 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 4 ≥ if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q366 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q365 X Y then (if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 4 else if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q367 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ≥ (if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y) / 3 noncomputable def q368 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q367 X Y then if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else (if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y) / 3 noncomputable def q369 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0x8c) ≥ if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q361 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q363 X Y else if SelectiveSharedInputs.q364 X Y then SelectiveSharedInputs.q366 X Y else SelectiveSharedInputs.q368 X Y then (3 / 0x8c) else if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q361 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q363 X Y else if SelectiveSharedInputs.q364 X Y then SelectiveSharedInputs.q366 X Y else SelectiveSharedInputs.q368 X Y noncomputable def q370 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q369 X Y ≥ if p (8 : ℕ) ↔ False then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) then SelectiveSharedInputs.q369 X Y else if p (8 : ℕ) ↔ False then 4 * r (8 : ℕ) else 6 * r (8 : ℕ)) ≥ if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) noncomputable def q371 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q370 X Y p r then if SelectiveSharedInputs.q369 X Y ≥ if p (8 : ℕ) ↔ False then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) then SelectiveSharedInputs.q369 X Y else if p (8 : ℕ) ↔ False then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) else if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) noncomputable def q372 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q361 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q371 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q361 X Y then 1 else 0) = (0 : ℤ) then (1 / 35) else SelectiveSharedInputs.q363 X Y else SelectiveSharedInputs.q371 X Y p r < if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q361 X Y then 1 else 0) = (0 : ℤ) then (1 / 35) else SelectiveSharedInputs.q363 X Y noncomputable def q373 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q361 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q371 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q361 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q363 X Y else if SelectiveSharedInputs.q364 X Y then SelectiveSharedInputs.q366 X Y else SelectiveSharedInputs.q368 X Y) ∧ SelectiveSharedInputs.q372 X Y p r noncomputable def q374 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 35) ≥ 2 * if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ∧ ¬(1 / 35) ≥ 2 * if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y noncomputable def q375 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 35) ≥ 2 * if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X then 2 * if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else (if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 2 noncomputable def q376 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 35) ≥ 2 * if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y then 2 * if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y else (2 * if (1 / 35) ≥ (1 / 81) * Y * 3 then (1 / 81) * Y * 3 else (1 / 81) * Y) / 3 noncomputable def q377 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q374 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q375 X ≥ SelectiveSharedInputs.q376 Y then SelectiveSharedInputs.q375 X else SelectiveSharedInputs.q376 Y else if SelectiveSharedInputs.q375 X > SelectiveSharedInputs.q376 Y then if SelectiveSharedInputs.q375 X / 4 ≥ SelectiveSharedInputs.q376 Y then SelectiveSharedInputs.q375 X / 4 else SelectiveSharedInputs.q376 Y else if SelectiveSharedInputs.q375 X ≥ SelectiveSharedInputs.q376 Y / 3 then SelectiveSharedInputs.q375 X else SelectiveSharedInputs.q376 Y / 3 noncomputable def q378 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0x8c) ≥ SelectiveSharedInputs.q377 X Y then (3 / 0x8c) else SelectiveSharedInputs.q377 X Y) ≥ if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) then if (3 / 0x8c) ≥ SelectiveSharedInputs.q377 X Y then (3 / 0x8c) else SelectiveSharedInputs.q377 X Y else if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) noncomputable def q379 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q378 X Y p r ≥ if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q378 X Y p r else if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q374 X Y then 1 else 0) = (0 : ℤ) then (1 / 35) else if SelectiveSharedInputs.q375 X ≥ SelectiveSharedInputs.q376 Y then SelectiveSharedInputs.q375 X else SelectiveSharedInputs.q376 Y noncomputable def q380 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q378 X Y p r ≥ if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q378 X Y p r else if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q374 X Y then 1 else 0) = (0 : ℤ) then (1 / 35) else if SelectiveSharedInputs.q375 X ≥ SelectiveSharedInputs.q376 Y then SelectiveSharedInputs.q375 X else SelectiveSharedInputs.q376 Y noncomputable def q381 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q374 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q378 X Y p r ≥ if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q378 X Y p r else if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ)) ≥ SelectiveSharedInputs.q377 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q358 X ∧ SelectiveSharedInputs.q359 Y ∧ SelectiveSharedInputs.q360 Y then 1 else 0) - if SelectiveSharedInputs.q374 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q379 X Y p r else SelectiveSharedInputs.q380 X Y p r noncomputable def q382 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 35) ≥ 2 * if (1 / 35) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X then SelectiveSharedInputs.q381 X Y p r else ¬SelectiveSharedInputs.q373 X Y p r noncomputable def q383 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (1 / 5) < (5 / 4) * if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X noncomputable def q384 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 5) ≥ (10 / 9) * if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q385 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (1 / 5) < (4 / 3) * if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q386 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 25) ≥ 2 * if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ∧ (1 / 25) ≥ 2 * if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q387 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ≥ if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q388 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q387 X Y then if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q389 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) > if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q390 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 4 ≥ if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q391 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q390 X Y then (if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 4 else if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q392 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ≥ (if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y) / 3 noncomputable def q393 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q392 X Y then if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else (if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y) / 3 noncomputable def q394 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0x64) ≥ if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q386 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q388 X Y else if SelectiveSharedInputs.q389 X Y then SelectiveSharedInputs.q391 X Y else SelectiveSharedInputs.q393 X Y then (3 / 0x64) else if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q386 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q388 X Y else if SelectiveSharedInputs.q389 X Y then SelectiveSharedInputs.q391 X Y else SelectiveSharedInputs.q393 X Y noncomputable def q395 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q394 X Y ≥ if p (9 : ℕ) ↔ False then 4 * r (9 : ℕ) else 6 * r (9 : ℕ) then SelectiveSharedInputs.q394 X Y else if p (9 : ℕ) ↔ False then 4 * r (9 : ℕ) else 6 * r (9 : ℕ)) ≥ if p (8 : ℕ) ↔ False then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) noncomputable def q396 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q395 X Y p r then if SelectiveSharedInputs.q394 X Y ≥ if p (9 : ℕ) ↔ False then 4 * r (9 : ℕ) else 6 * r (9 : ℕ) then SelectiveSharedInputs.q394 X Y else if p (9 : ℕ) ↔ False then 4 * r (9 : ℕ) else 6 * r (9 : ℕ) else if p (8 : ℕ) ↔ False then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) noncomputable def q397 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q386 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q396 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q386 X Y then 1 else 0) = (0 : ℤ) then (1 / 25) else SelectiveSharedInputs.q388 X Y else SelectiveSharedInputs.q396 X Y p r < if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q386 X Y then 1 else 0) = (0 : ℤ) then (1 / 25) else SelectiveSharedInputs.q388 X Y noncomputable def q398 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q386 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q396 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q386 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q388 X Y else if SelectiveSharedInputs.q389 X Y then SelectiveSharedInputs.q391 X Y else SelectiveSharedInputs.q393 X Y) ∧ SelectiveSharedInputs.q397 X Y p r noncomputable def q399 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 25) ≥ 2 * if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) ∧ ¬(1 / 25) ≥ 2 * if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y noncomputable def q400 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 25) ≥ 2 * if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X then 2 * if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X else (if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X) / 2 noncomputable def q401 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 25) ≥ 2 * if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y then 2 * if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y else (2 * if (1 / 25) ≥ (1 / 27) * Y * 3 then (1 / 27) * Y * 3 else (1 / 27) * Y) / 3 noncomputable def q402 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q399 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q400 X ≥ SelectiveSharedInputs.q401 Y then SelectiveSharedInputs.q400 X else SelectiveSharedInputs.q401 Y else if SelectiveSharedInputs.q400 X > SelectiveSharedInputs.q401 Y then if SelectiveSharedInputs.q400 X / 4 ≥ SelectiveSharedInputs.q401 Y then SelectiveSharedInputs.q400 X / 4 else SelectiveSharedInputs.q401 Y else if SelectiveSharedInputs.q400 X ≥ SelectiveSharedInputs.q401 Y / 3 then SelectiveSharedInputs.q400 X else SelectiveSharedInputs.q401 Y / 3 noncomputable def q403 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0x64) ≥ SelectiveSharedInputs.q402 X Y then (3 / 0x64) else SelectiveSharedInputs.q402 X Y) ≥ if p (9 : ℕ) ↔ True then 4 * r (9 : ℕ) else 6 * r (9 : ℕ) then if (3 / 0x64) ≥ SelectiveSharedInputs.q402 X Y then (3 / 0x64) else SelectiveSharedInputs.q402 X Y else if p (9 : ℕ) ↔ True then 4 * r (9 : ℕ) else 6 * r (9 : ℕ) noncomputable def q404 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q403 X Y p r ≥ if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) then SelectiveSharedInputs.q403 X Y p r else if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q399 X Y then 1 else 0) = (0 : ℤ) then (1 / 25) else if SelectiveSharedInputs.q400 X ≥ SelectiveSharedInputs.q401 Y then SelectiveSharedInputs.q400 X else SelectiveSharedInputs.q401 Y noncomputable def q405 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q403 X Y p r ≥ if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) then SelectiveSharedInputs.q403 X Y p r else if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q399 X Y then 1 else 0) = (0 : ℤ) then (1 / 25) else if SelectiveSharedInputs.q400 X ≥ SelectiveSharedInputs.q401 Y then SelectiveSharedInputs.q400 X else SelectiveSharedInputs.q401 Y noncomputable def q406 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q399 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q403 X Y p r ≥ if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) then SelectiveSharedInputs.q403 X Y p r else if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ)) ≥ SelectiveSharedInputs.q402 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q383 X ∧ SelectiveSharedInputs.q384 Y ∧ SelectiveSharedInputs.q385 Y then 1 else 0) - if SelectiveSharedInputs.q399 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q404 X Y p r else SelectiveSharedInputs.q405 X Y p r noncomputable def q407 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 25) ≥ 2 * if (1 / 25) ≥ (1 / 64) * X * 4 then (1 / 64) * X * 4 else (1 / 64) * X then SelectiveSharedInputs.q406 X Y p r else ¬SelectiveSharedInputs.q398 X Y p r noncomputable def q408 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => (5 / 7) < (5 / 4) * if (5 / 7) ≥ (1 / 4) * X * 4 then (1 / 4) * X * 4 else (1 / 4) * X noncomputable def q409 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (5 / 7) ≥ (10 / 9) * if (5 / 7) ≥ (1 / 3) * Y * 3 then (1 / 3) * Y * 3 else (1 / 3) * Y noncomputable def q410 : ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => (5 / 7) < (4 / 3) * if (5 / 7) ≥ (1 / 3) * Y * 3 then (1 / 3) * Y * 3 else (1 / 3) * Y noncomputable def q411 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 7) ≥ 2 * if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) ∧ (1 / 7) ≥ 2 * if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q412 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) ≥ if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q413 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q412 X Y then if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X else if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q414 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) > if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q415 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) / 4 ≥ if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q416 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q415 X Y then (if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) / 4 else if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q417 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) ≥ (if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y) / 3 noncomputable def q418 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q417 X Y then if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X else (if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y) / 3 noncomputable def q419 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 28) ≥ if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q413 X Y else if SelectiveSharedInputs.q414 X Y then SelectiveSharedInputs.q416 X Y else SelectiveSharedInputs.q418 X Y then (3 / 28) else if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q413 X Y else if SelectiveSharedInputs.q414 X Y then SelectiveSharedInputs.q416 X Y else SelectiveSharedInputs.q418 X Y noncomputable def q420 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q419 X Y ≥ if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q419 X Y else if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ)) ≥ if p (3 : ℕ) ↔ False then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) noncomputable def q421 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q420 X Y p r then if SelectiveSharedInputs.q419 X Y ≥ if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q419 X Y else if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) else if p (3 : ℕ) ↔ False then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) noncomputable def q422 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q421 X Y p r ≤ if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then (1 / 7) else SelectiveSharedInputs.q413 X Y else SelectiveSharedInputs.q421 X Y p r < if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then (1 / 7) else SelectiveSharedInputs.q413 X Y noncomputable def q423 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q421 X Y p r ≥ if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q413 X Y else if SelectiveSharedInputs.q414 X Y then SelectiveSharedInputs.q416 X Y else SelectiveSharedInputs.q418 X Y) ∧ SelectiveSharedInputs.q422 X Y p r noncomputable def q424 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 7) ≥ 2 * if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) ∧ ¬(1 / 7) ≥ 2 * if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q425 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 7) ≥ 2 * if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X then 2 * if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X else (if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) / 2 noncomputable def q426 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 7) ≥ 2 * if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y then 2 * if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y else (2 * if (1 / 7) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y) / 3 noncomputable def q427 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q425 X ≥ SelectiveSharedInputs.q426 Y then SelectiveSharedInputs.q425 X else SelectiveSharedInputs.q426 Y else if SelectiveSharedInputs.q425 X > SelectiveSharedInputs.q426 Y then if SelectiveSharedInputs.q425 X / 4 ≥ SelectiveSharedInputs.q426 Y then SelectiveSharedInputs.q425 X / 4 else SelectiveSharedInputs.q426 Y else if SelectiveSharedInputs.q425 X ≥ SelectiveSharedInputs.q426 Y / 3 then SelectiveSharedInputs.q425 X else SelectiveSharedInputs.q426 Y / 3 noncomputable def q428 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 28) ≥ SelectiveSharedInputs.q427 X Y then (3 / 28) else SelectiveSharedInputs.q427 X Y) ≥ if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then if (3 / 28) ≥ SelectiveSharedInputs.q427 X Y then (3 / 28) else SelectiveSharedInputs.q427 X Y else if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) noncomputable def q429 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q428 X Y p r ≥ if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) then SelectiveSharedInputs.q428 X Y p r else if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ)) ≤ if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) = (0 : ℤ) then (1 / 7) else if SelectiveSharedInputs.q425 X ≥ SelectiveSharedInputs.q426 Y then SelectiveSharedInputs.q425 X else SelectiveSharedInputs.q426 Y noncomputable def q430 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q428 X Y p r ≥ if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) then SelectiveSharedInputs.q428 X Y p r else if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ)) < if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) = (0 : ℤ) then (1 / 7) else if SelectiveSharedInputs.q425 X ≥ SelectiveSharedInputs.q426 Y then SelectiveSharedInputs.q425 X else SelectiveSharedInputs.q426 Y noncomputable def q431 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q428 X Y p r ≥ if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) then SelectiveSharedInputs.q428 X Y p r else if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ)) ≥ SelectiveSharedInputs.q427 X Y ∧ if ((if False ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q429 X Y p r else SelectiveSharedInputs.q430 X Y p r noncomputable def q432 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 7) ≥ 2 * if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X then SelectiveSharedInputs.q431 X Y p r else ¬SelectiveSharedInputs.q423 X Y p r noncomputable def q433 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => True ∧ (1 < (5 / 4) * if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) ∧ (1 ≥ (10 / 9) * if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y) ∧ 1 < (4 / 3) * if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y noncomputable def q434 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => ((1 / 5) ≥ 2 * if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) ∧ (1 / 5) ≥ 2 * if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q435 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) ≥ if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q436 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q435 X Y then if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X else if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q437 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) > if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q438 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) / 4 ≥ if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q439 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q438 X Y then (if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) / 4 else if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q440 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) ≥ (if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y) / 3 noncomputable def q441 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q440 X Y then if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X else (if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y) / 3 noncomputable def q442 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 20) ≥ if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q434 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q436 X Y else if SelectiveSharedInputs.q437 X Y then SelectiveSharedInputs.q439 X Y else SelectiveSharedInputs.q441 X Y then (3 / 20) else if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q434 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q436 X Y else if SelectiveSharedInputs.q437 X Y then SelectiveSharedInputs.q439 X Y else SelectiveSharedInputs.q441 X Y noncomputable def q443 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q442 X Y ≥ if p (5 : ℕ) ↔ False then 4 * r (5 : ℕ) else 6 * r (5 : ℕ) then SelectiveSharedInputs.q442 X Y else if p (5 : ℕ) ↔ False then 4 * r (5 : ℕ) else 6 * r (5 : ℕ)) ≥ if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) noncomputable def q444 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q443 X Y p r then if SelectiveSharedInputs.q442 X Y ≥ if p (5 : ℕ) ↔ False then 4 * r (5 : ℕ) else 6 * r (5 : ℕ) then SelectiveSharedInputs.q442 X Y else if p (5 : ℕ) ↔ False then 4 * r (5 : ℕ) else 6 * r (5 : ℕ) else if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) noncomputable def q445 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q434 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q444 X Y p r ≤ if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q434 X Y then 1 else 0) = (0 : ℤ) then (1 / 5) else SelectiveSharedInputs.q436 X Y else SelectiveSharedInputs.q444 X Y p r < if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q434 X Y then 1 else 0) = (0 : ℤ) then (1 / 5) else SelectiveSharedInputs.q436 X Y noncomputable def q446 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q434 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q444 X Y p r ≥ if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q434 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q436 X Y else if SelectiveSharedInputs.q437 X Y then SelectiveSharedInputs.q439 X Y else SelectiveSharedInputs.q441 X Y) ∧ SelectiveSharedInputs.q445 X Y p r noncomputable def q447 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬(1 / 5) ≥ 2 * if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) ∧ ¬(1 / 5) ≥ 2 * if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y noncomputable def q448 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if (1 / 5) ≥ 2 * if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X then 2 * if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X else (if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X) / 2 noncomputable def q449 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if (1 / 5) ≥ 2 * if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y then 2 * if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y else (2 * if (1 / 5) ≥ (1 / 9) * Y * 3 then (1 / 9) * Y * 3 else (1 / 9) * Y) / 3 noncomputable def q450 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q447 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q448 X ≥ SelectiveSharedInputs.q449 Y then SelectiveSharedInputs.q448 X else SelectiveSharedInputs.q449 Y else if SelectiveSharedInputs.q448 X > SelectiveSharedInputs.q449 Y then if SelectiveSharedInputs.q448 X / 4 ≥ SelectiveSharedInputs.q449 Y then SelectiveSharedInputs.q448 X / 4 else SelectiveSharedInputs.q449 Y else if SelectiveSharedInputs.q448 X ≥ SelectiveSharedInputs.q449 Y / 3 then SelectiveSharedInputs.q448 X else SelectiveSharedInputs.q449 Y / 3 noncomputable def q451 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 20) ≥ SelectiveSharedInputs.q450 X Y then (3 / 20) else SelectiveSharedInputs.q450 X Y) ≥ if p (5 : ℕ) ↔ True then 4 * r (5 : ℕ) else 6 * r (5 : ℕ) then if (3 / 20) ≥ SelectiveSharedInputs.q450 X Y then (3 / 20) else SelectiveSharedInputs.q450 X Y else if p (5 : ℕ) ↔ True then 4 * r (5 : ℕ) else 6 * r (5 : ℕ) noncomputable def q452 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q451 X Y p r ≥ if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q451 X Y p r else if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ)) ≤ if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q447 X Y then 1 else 0) = (0 : ℤ) then (1 / 5) else if SelectiveSharedInputs.q448 X ≥ SelectiveSharedInputs.q449 Y then SelectiveSharedInputs.q448 X else SelectiveSharedInputs.q449 Y noncomputable def q453 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q451 X Y p r ≥ if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q451 X Y p r else if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ)) < if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q447 X Y then 1 else 0) = (0 : ℤ) then (1 / 5) else if SelectiveSharedInputs.q448 X ≥ SelectiveSharedInputs.q449 Y then SelectiveSharedInputs.q448 X else SelectiveSharedInputs.q449 Y noncomputable def q454 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q447 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q451 X Y p r ≥ if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q451 X Y p r else if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ)) ≥ SelectiveSharedInputs.q450 X Y ∧ if ((if SelectiveSharedInputs.q433 X Y then 1 else 0) - if SelectiveSharedInputs.q447 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q452 X Y p r else SelectiveSharedInputs.q453 X Y p r noncomputable def q455 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 5) ≥ 2 * if (1 / 5) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X then SelectiveSharedInputs.q454 X Y p r else ¬SelectiveSharedInputs.q446 X Y p r noncomputable def q456 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => False ∧ (5 < (5 / 4) * if 5 ≥ 4 * X * 4 then 4 * X * 4 else 4 * X) ∧ (5 ≥ (10 / 9) * if 5 ≥ 3 * Y * 3 then 3 * Y * 3 else 3 * Y) ∧ 5 < (4 / 3) * if 5 ≥ 3 * Y * 3 then 3 * Y * 3 else 3 * Y noncomputable def q457 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (1 ≥ 2 * if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) ∧ 1 ≥ 2 * if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y noncomputable def q458 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) ≥ if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y noncomputable def q459 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q458 X Y then if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X else if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y noncomputable def q460 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) > if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y noncomputable def q461 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) / 4 ≥ if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y noncomputable def q462 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q461 X Y then (if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) / 4 else if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y noncomputable def q463 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) ≥ (if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y) / 3 noncomputable def q464 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if SelectiveSharedInputs.q463 X Y then if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X else (if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y) / 3 noncomputable def q465 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 4) ≥ if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q459 X Y else if SelectiveSharedInputs.q460 X Y then SelectiveSharedInputs.q462 X Y else SelectiveSharedInputs.q464 X Y then (3 / 4) else if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q459 X Y else if SelectiveSharedInputs.q460 X Y then SelectiveSharedInputs.q462 X Y else SelectiveSharedInputs.q464 X Y noncomputable def q466 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q465 X Y ≥ if p (2 : ℕ) ↔ False then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) then SelectiveSharedInputs.q465 X Y else if p (2 : ℕ) ↔ False then 4 * r (2 : ℕ) else 6 * r (2 : ℕ)) ≥ if p (1 : ℕ) ↔ False then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) noncomputable def q467 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q466 X Y p r then if SelectiveSharedInputs.q465 X Y ≥ if p (2 : ℕ) ↔ False then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) then SelectiveSharedInputs.q465 X Y else if p (2 : ℕ) ↔ False then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) else if p (1 : ℕ) ↔ False then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) noncomputable def q468 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q467 X Y p r ≤ if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then 1 else SelectiveSharedInputs.q459 X Y else SelectiveSharedInputs.q467 X Y p r < if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then 1 else SelectiveSharedInputs.q459 X Y noncomputable def q469 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q467 X Y p r ≥ if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q459 X Y else if SelectiveSharedInputs.q460 X Y then SelectiveSharedInputs.q462 X Y else SelectiveSharedInputs.q464 X Y) ∧ SelectiveSharedInputs.q468 X Y p r noncomputable def q470 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => (¬1 ≥ 2 * if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) ∧ ¬1 ≥ 2 * if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y noncomputable def q471 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X => if 1 ≥ 2 * if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X then 2 * if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X else (if 1 ≥ 1 * X * 4 then 1 * X * 4 else 1 * X) / 2 noncomputable def q472 : ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun Y => if 1 ≥ 2 * if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y then 2 * if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y else (2 * if 1 ≥ 1 * Y * 3 then 1 * Y * 3 else 1 * Y) / 3 noncomputable def q473 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q471 X ≥ SelectiveSharedInputs.q472 Y then SelectiveSharedInputs.q471 X else SelectiveSharedInputs.q472 Y else if SelectiveSharedInputs.q471 X > SelectiveSharedInputs.q472 Y then if SelectiveSharedInputs.q471 X / 4 ≥ SelectiveSharedInputs.q472 Y then SelectiveSharedInputs.q471 X / 4 else SelectiveSharedInputs.q472 Y else if SelectiveSharedInputs.q471 X ≥ SelectiveSharedInputs.q472 Y / 3 then SelectiveSharedInputs.q471 X else SelectiveSharedInputs.q472 Y / 3 noncomputable def q474 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 4) ≥ SelectiveSharedInputs.q473 X Y then (3 / 4) else SelectiveSharedInputs.q473 X Y) ≥ if p (2 : ℕ) ↔ True then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) then if (3 / 4) ≥ SelectiveSharedInputs.q473 X Y then (3 / 4) else SelectiveSharedInputs.q473 X Y else if p (2 : ℕ) ↔ True then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) noncomputable def q475 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q474 X Y p r ≥ if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) then SelectiveSharedInputs.q474 X Y p r else if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ)) ≤ if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) = (0 : ℤ) then 1 else if SelectiveSharedInputs.q471 X ≥ SelectiveSharedInputs.q472 Y then SelectiveSharedInputs.q471 X else SelectiveSharedInputs.q472 Y noncomputable def q476 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q474 X Y p r ≥ if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) then SelectiveSharedInputs.q474 X Y p r else if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ)) < if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) = (0 : ℤ) then 1 else if SelectiveSharedInputs.q471 X ≥ SelectiveSharedInputs.q472 Y then SelectiveSharedInputs.q471 X else SelectiveSharedInputs.q472 Y noncomputable def q477 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q474 X Y p r ≥ if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) then SelectiveSharedInputs.q474 X Y p r else if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ)) ≥ SelectiveSharedInputs.q473 X Y ∧ if ((if SelectiveSharedInputs.q456 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q475 X Y p r else SelectiveSharedInputs.q476 X Y p r noncomputable def q504 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 0xc4) ≥ if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q338 X Y else if SelectiveSharedInputs.q339 X Y then SelectiveSharedInputs.q341 X Y else SelectiveSharedInputs.q343 X Y then (3 / 0xc4) else if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q338 X Y else if SelectiveSharedInputs.q339 X Y then SelectiveSharedInputs.q341 X Y else SelectiveSharedInputs.q343 X Y noncomputable def q505 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q504 X Y ≥ if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q504 X Y else if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ)) ≥ if p (6 : ℕ) ↔ False then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) noncomputable def q506 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q505 X Y p r then if SelectiveSharedInputs.q504 X Y ≥ if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q504 X Y else if p (7 : ℕ) ↔ False then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) else if p (6 : ℕ) ↔ False then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) noncomputable def q507 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q506 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then (1 / 49) else SelectiveSharedInputs.q338 X Y else SelectiveSharedInputs.q506 X Y p r < if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then (1 / 49) else SelectiveSharedInputs.q338 X Y noncomputable def q508 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q506 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q336 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q338 X Y else if SelectiveSharedInputs.q339 X Y then SelectiveSharedInputs.q341 X Y else SelectiveSharedInputs.q343 X Y) ∧ SelectiveSharedInputs.q507 X Y p r noncomputable def q509 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q350 X ≥ SelectiveSharedInputs.q351 Y then SelectiveSharedInputs.q350 X else SelectiveSharedInputs.q351 Y else if SelectiveSharedInputs.q350 X > SelectiveSharedInputs.q351 Y then if SelectiveSharedInputs.q350 X / 4 ≥ SelectiveSharedInputs.q351 Y then SelectiveSharedInputs.q350 X / 4 else SelectiveSharedInputs.q351 Y else if SelectiveSharedInputs.q350 X ≥ SelectiveSharedInputs.q351 Y / 3 then SelectiveSharedInputs.q350 X else SelectiveSharedInputs.q351 Y / 3 noncomputable def q510 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 0xc4) ≥ SelectiveSharedInputs.q509 X Y then (3 / 0xc4) else SelectiveSharedInputs.q509 X Y) ≥ if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then if (3 / 0xc4) ≥ SelectiveSharedInputs.q509 X Y then (3 / 0xc4) else SelectiveSharedInputs.q509 X Y else if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) noncomputable def q511 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q510 X Y p r ≥ if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) then SelectiveSharedInputs.q510 X Y p r else if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) = (0 : ℤ) then (1 / 49) else if SelectiveSharedInputs.q350 X ≥ SelectiveSharedInputs.q351 Y then SelectiveSharedInputs.q350 X else SelectiveSharedInputs.q351 Y noncomputable def q512 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q510 X Y p r ≥ if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) then SelectiveSharedInputs.q510 X Y p r else if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) = (0 : ℤ) then (1 / 49) else if SelectiveSharedInputs.q350 X ≥ SelectiveSharedInputs.q351 Y then SelectiveSharedInputs.q350 X else SelectiveSharedInputs.q351 Y noncomputable def q513 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q510 X Y p r ≥ if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ) then SelectiveSharedInputs.q510 X Y p r else if p (6 : ℕ) ↔ True then 4 * r (6 : ℕ) else 6 * r (6 : ℕ)) ≥ SelectiveSharedInputs.q509 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q333 X ∧ SelectiveSharedInputs.q334 Y ∧ SelectiveSharedInputs.q335 Y then 1 else 0) - if SelectiveSharedInputs.q349 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q511 X Y p r else SelectiveSharedInputs.q512 X Y p r noncomputable def q515 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 28) ≥ if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q413 X Y else if SelectiveSharedInputs.q414 X Y then SelectiveSharedInputs.q416 X Y else SelectiveSharedInputs.q418 X Y then (3 / 28) else if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q413 X Y else if SelectiveSharedInputs.q414 X Y then SelectiveSharedInputs.q416 X Y else SelectiveSharedInputs.q418 X Y noncomputable def q516 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q515 X Y ≥ if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q515 X Y else if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ)) ≥ if p (3 : ℕ) ↔ False then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) noncomputable def q517 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q516 X Y p r then if SelectiveSharedInputs.q515 X Y ≥ if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q515 X Y else if p (4 : ℕ) ↔ False then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) else if p (3 : ℕ) ↔ False then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) noncomputable def q518 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q517 X Y p r ≤ if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then (1 / 7) else SelectiveSharedInputs.q413 X Y else SelectiveSharedInputs.q517 X Y p r < if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then (1 / 7) else SelectiveSharedInputs.q413 X Y noncomputable def q519 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q517 X Y p r ≥ if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q411 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q413 X Y else if SelectiveSharedInputs.q414 X Y then SelectiveSharedInputs.q416 X Y else SelectiveSharedInputs.q418 X Y) ∧ SelectiveSharedInputs.q518 X Y p r noncomputable def q520 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q425 X ≥ SelectiveSharedInputs.q426 Y then SelectiveSharedInputs.q425 X else SelectiveSharedInputs.q426 Y else if SelectiveSharedInputs.q425 X > SelectiveSharedInputs.q426 Y then if SelectiveSharedInputs.q425 X / 4 ≥ SelectiveSharedInputs.q426 Y then SelectiveSharedInputs.q425 X / 4 else SelectiveSharedInputs.q426 Y else if SelectiveSharedInputs.q425 X ≥ SelectiveSharedInputs.q426 Y / 3 then SelectiveSharedInputs.q425 X else SelectiveSharedInputs.q426 Y / 3 noncomputable def q521 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 28) ≥ SelectiveSharedInputs.q520 X Y then (3 / 28) else SelectiveSharedInputs.q520 X Y) ≥ if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then if (3 / 28) ≥ SelectiveSharedInputs.q520 X Y then (3 / 28) else SelectiveSharedInputs.q520 X Y else if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) noncomputable def q522 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q521 X Y p r ≥ if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) then SelectiveSharedInputs.q521 X Y p r else if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ)) ≤ if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) = (0 : ℤ) then (1 / 7) else if SelectiveSharedInputs.q425 X ≥ SelectiveSharedInputs.q426 Y then SelectiveSharedInputs.q425 X else SelectiveSharedInputs.q426 Y noncomputable def q523 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q521 X Y p r ≥ if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) then SelectiveSharedInputs.q521 X Y p r else if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ)) < if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) = (0 : ℤ) then (1 / 7) else if SelectiveSharedInputs.q425 X ≥ SelectiveSharedInputs.q426 Y then SelectiveSharedInputs.q425 X else SelectiveSharedInputs.q426 Y noncomputable def q524 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q521 X Y p r ≥ if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) then SelectiveSharedInputs.q521 X Y p r else if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ)) ≥ SelectiveSharedInputs.q520 X Y ∧ if ((if True ∧ SelectiveSharedInputs.q408 X ∧ SelectiveSharedInputs.q409 Y ∧ SelectiveSharedInputs.q410 Y then 1 else 0) - if SelectiveSharedInputs.q424 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q522 X Y p r else SelectiveSharedInputs.q523 X Y p r noncomputable def q525 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (1 / 7) ≥ 2 * if (1 / 7) ≥ (1 / 16) * X * 4 then (1 / 16) * X * 4 else (1 / 16) * X then SelectiveSharedInputs.q524 X Y p r else ¬SelectiveSharedInputs.q519 X Y p r noncomputable def q526 : ℚ → ℚ → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => True ∧ (5 < (5 / 4) * if 5 ≥ 4 * X * 4 then 4 * X * 4 else 4 * X) ∧ (5 ≥ (10 / 9) * if 5 ≥ 3 * Y * 3 then 3 * Y * 3 else 3 * Y) ∧ 5 < (4 / 3) * if 5 ≥ 3 * Y * 3 then 3 * Y * 3 else 3 * Y noncomputable def q527 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if (3 / 4) ≥ if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q459 X Y else if SelectiveSharedInputs.q460 X Y then SelectiveSharedInputs.q462 X Y else SelectiveSharedInputs.q464 X Y then (3 / 4) else if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q459 X Y else if SelectiveSharedInputs.q460 X Y then SelectiveSharedInputs.q462 X Y else SelectiveSharedInputs.q464 X Y noncomputable def q528 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q527 X Y ≥ if p (2 : ℕ) ↔ False then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) then SelectiveSharedInputs.q527 X Y else if p (2 : ℕ) ↔ False then 4 * r (2 : ℕ) else 6 * r (2 : ℕ)) ≥ if p (1 : ℕ) ↔ False then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) noncomputable def q529 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if SelectiveSharedInputs.q528 X Y p r then if SelectiveSharedInputs.q527 X Y ≥ if p (2 : ℕ) ↔ False then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) then SelectiveSharedInputs.q527 X Y else if p (2 : ℕ) ↔ False then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) else if p (1 : ℕ) ↔ False then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) noncomputable def q530 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q529 X Y p r ≤ if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then 1 else SelectiveSharedInputs.q459 X Y else SelectiveSharedInputs.q529 X Y p r < if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then 1 else SelectiveSharedInputs.q459 X Y noncomputable def q531 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (SelectiveSharedInputs.q529 X Y p r ≥ if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q457 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q459 X Y else if SelectiveSharedInputs.q460 X Y then SelectiveSharedInputs.q462 X Y else SelectiveSharedInputs.q464 X Y) ∧ SelectiveSharedInputs.q530 X Y p r noncomputable def q532 : ℚ → ℚ → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y => if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) = (0 : ℤ) then if SelectiveSharedInputs.q471 X ≥ SelectiveSharedInputs.q472 Y then SelectiveSharedInputs.q471 X else SelectiveSharedInputs.q472 Y else if SelectiveSharedInputs.q471 X > SelectiveSharedInputs.q472 Y then if SelectiveSharedInputs.q471 X / 4 ≥ SelectiveSharedInputs.q472 Y then SelectiveSharedInputs.q471 X / 4 else SelectiveSharedInputs.q472 Y else if SelectiveSharedInputs.q471 X ≥ SelectiveSharedInputs.q472 Y / 3 then SelectiveSharedInputs.q471 X else SelectiveSharedInputs.q472 Y / 3 noncomputable def q533 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → ℚ := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if (if (3 / 4) ≥ SelectiveSharedInputs.q532 X Y then (3 / 4) else SelectiveSharedInputs.q532 X Y) ≥ if p (2 : ℕ) ↔ True then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) then if (3 / 4) ≥ SelectiveSharedInputs.q532 X Y then (3 / 4) else SelectiveSharedInputs.q532 X Y else if p (2 : ℕ) ↔ True then 4 * r (2 : ℕ) else 6 * r (2 : ℕ) noncomputable def q534 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q533 X Y p r ≥ if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) then SelectiveSharedInputs.q533 X Y p r else if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ)) ≤ if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) = (0 : ℤ) then 1 else if SelectiveSharedInputs.q471 X ≥ SelectiveSharedInputs.q472 Y then SelectiveSharedInputs.q471 X else SelectiveSharedInputs.q472 Y noncomputable def q535 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (if SelectiveSharedInputs.q533 X Y p r ≥ if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) then SelectiveSharedInputs.q533 X Y p r else if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ)) < if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) = (0 : ℤ) then 1 else if SelectiveSharedInputs.q471 X ≥ SelectiveSharedInputs.q472 Y then SelectiveSharedInputs.q471 X else SelectiveSharedInputs.q472 Y noncomputable def q536 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) ≥ (0 : ℤ) ∧ (if SelectiveSharedInputs.q533 X Y p r ≥ if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ) then SelectiveSharedInputs.q533 X Y p r else if p (1 : ℕ) ↔ True then 4 * r (1 : ℕ) else 6 * r (1 : ℕ)) ≥ SelectiveSharedInputs.q532 X Y ∧ if ((if SelectiveSharedInputs.q526 X Y then 1 else 0) - if SelectiveSharedInputs.q470 X Y then 1 else 0) = (0 : ℤ) then SelectiveSharedInputs.q534 X Y p r else SelectiveSharedInputs.q535 X Y p r end SelectiveSharedInputs namespace ClosureOriginalInputs0 open Bounty noncomputable def input_0 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (1 / 4) < X noncomputable def input_1 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => X ≤ 1 noncomputable def input_2 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (1 / 3) < Y noncomputable def input_3 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => Y ≤ 1 noncomputable def input_15 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if p (20 : ℕ) then ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q93 X Y then 1 else 0) ≥ (0 : ℤ) ∧ r (20 : ℕ) ≥ SelectiveSharedInputs.q96 X Y ∧ SelectiveSharedInputs.q97 X Y r else SelectiveSharedInputs.q107 X Y r noncomputable def input_22 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q173 X Y p r ∨ SelectiveSharedInputs.q181 X Y p r noncomputable def input_23 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (12 : ℕ) ↔ SelectiveSharedInputs.q182 X Y p r noncomputable def input_24 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (12 : ℕ) = if p (12 : ℕ) then if SelectiveSharedInputs.q178 X Y p r ≥ if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) then SelectiveSharedInputs.q178 X Y p r else if p (17 : ℕ) ↔ True then 4 * r (17 : ℕ) else 6 * r (17 : ℕ) else SelectiveSharedInputs.q171 X Y p r noncomputable def input_25 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q198 X Y p r ∨ SelectiveSharedInputs.q206 X Y p r noncomputable def input_26 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (13 : ℕ) ↔ SelectiveSharedInputs.q207 X Y p r noncomputable def input_27 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (13 : ℕ) = if p (13 : ℕ) then if SelectiveSharedInputs.q203 X Y p r ≥ if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) then SelectiveSharedInputs.q203 X Y p r else if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) else SelectiveSharedInputs.q196 X Y p r noncomputable def input_28 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q223 X Y p r ∨ SelectiveSharedInputs.q231 X Y p r noncomputable def input_29 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (14 : ℕ) ↔ SelectiveSharedInputs.q232 X Y p r noncomputable def input_30 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (14 : ℕ) = if p (14 : ℕ) then if SelectiveSharedInputs.q228 X Y p r ≥ if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) then SelectiveSharedInputs.q228 X Y p r else if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) else SelectiveSharedInputs.q221 X Y p r noncomputable def input_34 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q273 X Y p r ∨ SelectiveSharedInputs.q281 X Y p r noncomputable def input_35 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (7 : ℕ) ↔ SelectiveSharedInputs.q282 X Y p r noncomputable def input_36 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (7 : ℕ) = if p (7 : ℕ) then if SelectiveSharedInputs.q278 X Y p r ≥ if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) then SelectiveSharedInputs.q278 X Y p r else if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) else SelectiveSharedInputs.q271 X Y p r noncomputable def input_37 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q298 X Y p r ∨ SelectiveSharedInputs.q306 X Y p r noncomputable def input_38 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (8 : ℕ) ↔ SelectiveSharedInputs.q307 X Y p r noncomputable def input_39 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (8 : ℕ) = if p (8 : ℕ) then if SelectiveSharedInputs.q303 X Y p r ≥ if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) then SelectiveSharedInputs.q303 X Y p r else if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) else SelectiveSharedInputs.q296 X Y p r noncomputable def input_40 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q323 X Y p r ∨ SelectiveSharedInputs.q331 X Y p r noncomputable def input_41 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (9 : ℕ) ↔ SelectiveSharedInputs.q332 X Y p r noncomputable def input_42 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (9 : ℕ) = if p (9 : ℕ) then if SelectiveSharedInputs.q328 X Y p r ≥ if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) then SelectiveSharedInputs.q328 X Y p r else if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) else SelectiveSharedInputs.q321 X Y p r noncomputable def input_46 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q373 X Y p r ∨ SelectiveSharedInputs.q381 X Y p r noncomputable def input_47 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (4 : ℕ) ↔ SelectiveSharedInputs.q382 X Y p r noncomputable def input_48 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (4 : ℕ) = if p (4 : ℕ) then if SelectiveSharedInputs.q378 X Y p r ≥ if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q378 X Y p r else if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) else SelectiveSharedInputs.q371 X Y p r noncomputable def input_49 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q398 X Y p r ∨ SelectiveSharedInputs.q406 X Y p r noncomputable def input_50 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (5 : ℕ) ↔ SelectiveSharedInputs.q407 X Y p r noncomputable def input_51 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (5 : ℕ) = if p (5 : ℕ) then if SelectiveSharedInputs.q403 X Y p r ≥ if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) then SelectiveSharedInputs.q403 X Y p r else if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) else SelectiveSharedInputs.q396 X Y p r noncomputable def input_52 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q423 X Y p r ∨ SelectiveSharedInputs.q431 X Y p r noncomputable def input_53 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (1 : ℕ) ↔ SelectiveSharedInputs.q432 X Y p r noncomputable def input_54 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (1 : ℕ) = if p (1 : ℕ) then if SelectiveSharedInputs.q428 X Y p r ≥ if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) then SelectiveSharedInputs.q428 X Y p r else if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) else SelectiveSharedInputs.q421 X Y p r noncomputable def input_55 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q446 X Y p r ∨ SelectiveSharedInputs.q454 X Y p r noncomputable def input_56 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (2 : ℕ) ↔ SelectiveSharedInputs.q455 X Y p r noncomputable def input_57 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (2 : ℕ) = if p (2 : ℕ) then if SelectiveSharedInputs.q451 X Y p r ≥ if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q451 X Y p r else if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) else SelectiveSharedInputs.q444 X Y p r noncomputable def input_58 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ¬SelectiveSharedInputs.q469 X Y p r ∧ ¬SelectiveSharedInputs.q477 X Y p r def raw_input_0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_0 X Y p r := by classical exact h.1 def raw_input_1 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_1 X Y p r := by classical exact h.2.1 def raw_input_2 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_2 X Y p r := by classical exact h.2.2.1 def raw_input_3 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_3 X Y p r := by classical exact h.2.2.2.1 def raw_input_15 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_15 X Y p r := by classical have hn := h.2.2.2.2 20 (by norm_num) have hs := hn.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_15 dsimp only [SelectiveSharedInputs.q90, SelectiveSharedInputs.q91, SelectiveSharedInputs.q92, SelectiveSharedInputs.q93, SelectiveSharedInputs.q94, SelectiveSharedInputs.q95, SelectiveSharedInputs.q96, SelectiveSharedInputs.q97, SelectiveSharedInputs.q98, SelectiveSharedInputs.q99, SelectiveSharedInputs.q100, SelectiveSharedInputs.q101, SelectiveSharedInputs.q102, SelectiveSharedInputs.q103, SelectiveSharedInputs.q104, SelectiveSharedInputs.q105, SelectiveSharedInputs.q106, SelectiveSharedInputs.q107] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_22 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_22 X Y p r := by classical have hn := h.2.2.2.2 12 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_22 dsimp only [SelectiveSharedInputs.q158, SelectiveSharedInputs.q159, SelectiveSharedInputs.q160, SelectiveSharedInputs.q161, SelectiveSharedInputs.q162, SelectiveSharedInputs.q163, SelectiveSharedInputs.q164, SelectiveSharedInputs.q165, SelectiveSharedInputs.q166, SelectiveSharedInputs.q167, SelectiveSharedInputs.q168, SelectiveSharedInputs.q169, SelectiveSharedInputs.q170, SelectiveSharedInputs.q171, SelectiveSharedInputs.q172, SelectiveSharedInputs.q173, SelectiveSharedInputs.q174, SelectiveSharedInputs.q175, SelectiveSharedInputs.q176, SelectiveSharedInputs.q177, SelectiveSharedInputs.q178, SelectiveSharedInputs.q179, SelectiveSharedInputs.q180, SelectiveSharedInputs.q181] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_23 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_23 X Y p r := by classical have hn := h.2.2.2.2 12 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_23 dsimp only [SelectiveSharedInputs.q158, SelectiveSharedInputs.q159, SelectiveSharedInputs.q160, SelectiveSharedInputs.q161, SelectiveSharedInputs.q162, SelectiveSharedInputs.q163, SelectiveSharedInputs.q164, SelectiveSharedInputs.q165, SelectiveSharedInputs.q166, SelectiveSharedInputs.q167, SelectiveSharedInputs.q168, SelectiveSharedInputs.q169, SelectiveSharedInputs.q170, SelectiveSharedInputs.q171, SelectiveSharedInputs.q172, SelectiveSharedInputs.q173, SelectiveSharedInputs.q174, SelectiveSharedInputs.q175, SelectiveSharedInputs.q176, SelectiveSharedInputs.q177, SelectiveSharedInputs.q178, SelectiveSharedInputs.q179, SelectiveSharedInputs.q180, SelectiveSharedInputs.q181, SelectiveSharedInputs.q182] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_24 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_24 X Y p r := by classical have hn := h.2.2.2.2 12 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_24 dsimp only [SelectiveSharedInputs.q158, SelectiveSharedInputs.q159, SelectiveSharedInputs.q160, SelectiveSharedInputs.q161, SelectiveSharedInputs.q162, SelectiveSharedInputs.q163, SelectiveSharedInputs.q164, SelectiveSharedInputs.q165, SelectiveSharedInputs.q166, SelectiveSharedInputs.q167, SelectiveSharedInputs.q168, SelectiveSharedInputs.q169, SelectiveSharedInputs.q170, SelectiveSharedInputs.q171, SelectiveSharedInputs.q174, SelectiveSharedInputs.q175, SelectiveSharedInputs.q176, SelectiveSharedInputs.q177, SelectiveSharedInputs.q178] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_25 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_25 X Y p r := by classical have hn := h.2.2.2.2 13 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_25 dsimp only [SelectiveSharedInputs.q183, SelectiveSharedInputs.q184, SelectiveSharedInputs.q185, SelectiveSharedInputs.q186, SelectiveSharedInputs.q187, SelectiveSharedInputs.q188, SelectiveSharedInputs.q189, SelectiveSharedInputs.q190, SelectiveSharedInputs.q191, SelectiveSharedInputs.q192, SelectiveSharedInputs.q193, SelectiveSharedInputs.q194, SelectiveSharedInputs.q195, SelectiveSharedInputs.q196, SelectiveSharedInputs.q197, SelectiveSharedInputs.q198, SelectiveSharedInputs.q199, SelectiveSharedInputs.q200, SelectiveSharedInputs.q201, SelectiveSharedInputs.q202, SelectiveSharedInputs.q203, SelectiveSharedInputs.q204, SelectiveSharedInputs.q205, SelectiveSharedInputs.q206] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_26 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_26 X Y p r := by classical have hn := h.2.2.2.2 13 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_26 dsimp only [SelectiveSharedInputs.q183, SelectiveSharedInputs.q184, SelectiveSharedInputs.q185, SelectiveSharedInputs.q186, SelectiveSharedInputs.q187, SelectiveSharedInputs.q188, SelectiveSharedInputs.q189, SelectiveSharedInputs.q190, SelectiveSharedInputs.q191, SelectiveSharedInputs.q192, SelectiveSharedInputs.q193, SelectiveSharedInputs.q194, SelectiveSharedInputs.q195, SelectiveSharedInputs.q196, SelectiveSharedInputs.q197, SelectiveSharedInputs.q198, SelectiveSharedInputs.q199, SelectiveSharedInputs.q200, SelectiveSharedInputs.q201, SelectiveSharedInputs.q202, SelectiveSharedInputs.q203, SelectiveSharedInputs.q204, SelectiveSharedInputs.q205, SelectiveSharedInputs.q206, SelectiveSharedInputs.q207] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_27 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_27 X Y p r := by classical have hn := h.2.2.2.2 13 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_27 dsimp only [SelectiveSharedInputs.q183, SelectiveSharedInputs.q184, SelectiveSharedInputs.q185, SelectiveSharedInputs.q186, SelectiveSharedInputs.q187, SelectiveSharedInputs.q188, SelectiveSharedInputs.q189, SelectiveSharedInputs.q190, SelectiveSharedInputs.q191, SelectiveSharedInputs.q192, SelectiveSharedInputs.q193, SelectiveSharedInputs.q194, SelectiveSharedInputs.q195, SelectiveSharedInputs.q196, SelectiveSharedInputs.q199, SelectiveSharedInputs.q200, SelectiveSharedInputs.q201, SelectiveSharedInputs.q202, SelectiveSharedInputs.q203] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_28 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_28 X Y p r := by classical have hn := h.2.2.2.2 14 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_28 dsimp only [SelectiveSharedInputs.q208, SelectiveSharedInputs.q209, SelectiveSharedInputs.q210, SelectiveSharedInputs.q211, SelectiveSharedInputs.q212, SelectiveSharedInputs.q213, SelectiveSharedInputs.q214, SelectiveSharedInputs.q215, SelectiveSharedInputs.q216, SelectiveSharedInputs.q217, SelectiveSharedInputs.q218, SelectiveSharedInputs.q219, SelectiveSharedInputs.q220, SelectiveSharedInputs.q221, SelectiveSharedInputs.q222, SelectiveSharedInputs.q223, SelectiveSharedInputs.q224, SelectiveSharedInputs.q225, SelectiveSharedInputs.q226, SelectiveSharedInputs.q227, SelectiveSharedInputs.q228, SelectiveSharedInputs.q229, SelectiveSharedInputs.q230, SelectiveSharedInputs.q231] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_29 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_29 X Y p r := by classical have hn := h.2.2.2.2 14 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_29 dsimp only [SelectiveSharedInputs.q208, SelectiveSharedInputs.q209, SelectiveSharedInputs.q210, SelectiveSharedInputs.q211, SelectiveSharedInputs.q212, SelectiveSharedInputs.q213, SelectiveSharedInputs.q214, SelectiveSharedInputs.q215, SelectiveSharedInputs.q216, SelectiveSharedInputs.q217, SelectiveSharedInputs.q218, SelectiveSharedInputs.q219, SelectiveSharedInputs.q220, SelectiveSharedInputs.q221, SelectiveSharedInputs.q222, SelectiveSharedInputs.q223, SelectiveSharedInputs.q224, SelectiveSharedInputs.q225, SelectiveSharedInputs.q226, SelectiveSharedInputs.q227, SelectiveSharedInputs.q228, SelectiveSharedInputs.q229, SelectiveSharedInputs.q230, SelectiveSharedInputs.q231, SelectiveSharedInputs.q232] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_30 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_30 X Y p r := by classical have hn := h.2.2.2.2 14 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_30 dsimp only [SelectiveSharedInputs.q208, SelectiveSharedInputs.q209, SelectiveSharedInputs.q210, SelectiveSharedInputs.q211, SelectiveSharedInputs.q212, SelectiveSharedInputs.q213, SelectiveSharedInputs.q214, SelectiveSharedInputs.q215, SelectiveSharedInputs.q216, SelectiveSharedInputs.q217, SelectiveSharedInputs.q218, SelectiveSharedInputs.q219, SelectiveSharedInputs.q220, SelectiveSharedInputs.q221, SelectiveSharedInputs.q224, SelectiveSharedInputs.q225, SelectiveSharedInputs.q226, SelectiveSharedInputs.q227, SelectiveSharedInputs.q228] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_34 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_34 X Y p r := by classical have hn := h.2.2.2.2 7 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_34 dsimp only [SelectiveSharedInputs.q258, SelectiveSharedInputs.q259, SelectiveSharedInputs.q260, SelectiveSharedInputs.q261, SelectiveSharedInputs.q262, SelectiveSharedInputs.q263, SelectiveSharedInputs.q264, SelectiveSharedInputs.q265, SelectiveSharedInputs.q266, SelectiveSharedInputs.q267, SelectiveSharedInputs.q268, SelectiveSharedInputs.q269, SelectiveSharedInputs.q270, SelectiveSharedInputs.q271, SelectiveSharedInputs.q272, SelectiveSharedInputs.q273, SelectiveSharedInputs.q274, SelectiveSharedInputs.q275, SelectiveSharedInputs.q276, SelectiveSharedInputs.q277, SelectiveSharedInputs.q278, SelectiveSharedInputs.q279, SelectiveSharedInputs.q280, SelectiveSharedInputs.q281] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_35 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_35 X Y p r := by classical have hn := h.2.2.2.2 7 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_35 dsimp only [SelectiveSharedInputs.q258, SelectiveSharedInputs.q259, SelectiveSharedInputs.q260, SelectiveSharedInputs.q261, SelectiveSharedInputs.q262, SelectiveSharedInputs.q263, SelectiveSharedInputs.q264, SelectiveSharedInputs.q265, SelectiveSharedInputs.q266, SelectiveSharedInputs.q267, SelectiveSharedInputs.q268, SelectiveSharedInputs.q269, SelectiveSharedInputs.q270, SelectiveSharedInputs.q271, SelectiveSharedInputs.q272, SelectiveSharedInputs.q273, SelectiveSharedInputs.q274, SelectiveSharedInputs.q275, SelectiveSharedInputs.q276, SelectiveSharedInputs.q277, SelectiveSharedInputs.q278, SelectiveSharedInputs.q279, SelectiveSharedInputs.q280, SelectiveSharedInputs.q281, SelectiveSharedInputs.q282] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_36 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_36 X Y p r := by classical have hn := h.2.2.2.2 7 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_36 dsimp only [SelectiveSharedInputs.q258, SelectiveSharedInputs.q259, SelectiveSharedInputs.q260, SelectiveSharedInputs.q261, SelectiveSharedInputs.q262, SelectiveSharedInputs.q263, SelectiveSharedInputs.q264, SelectiveSharedInputs.q265, SelectiveSharedInputs.q266, SelectiveSharedInputs.q267, SelectiveSharedInputs.q268, SelectiveSharedInputs.q269, SelectiveSharedInputs.q270, SelectiveSharedInputs.q271, SelectiveSharedInputs.q274, SelectiveSharedInputs.q275, SelectiveSharedInputs.q276, SelectiveSharedInputs.q277, SelectiveSharedInputs.q278] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_37 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_37 X Y p r := by classical have hn := h.2.2.2.2 8 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_37 dsimp only [SelectiveSharedInputs.q283, SelectiveSharedInputs.q284, SelectiveSharedInputs.q285, SelectiveSharedInputs.q286, SelectiveSharedInputs.q287, SelectiveSharedInputs.q288, SelectiveSharedInputs.q289, SelectiveSharedInputs.q290, SelectiveSharedInputs.q291, SelectiveSharedInputs.q292, SelectiveSharedInputs.q293, SelectiveSharedInputs.q294, SelectiveSharedInputs.q295, SelectiveSharedInputs.q296, SelectiveSharedInputs.q297, SelectiveSharedInputs.q298, SelectiveSharedInputs.q299, SelectiveSharedInputs.q300, SelectiveSharedInputs.q301, SelectiveSharedInputs.q302, SelectiveSharedInputs.q303, SelectiveSharedInputs.q304, SelectiveSharedInputs.q305, SelectiveSharedInputs.q306] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_38 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_38 X Y p r := by classical have hn := h.2.2.2.2 8 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_38 dsimp only [SelectiveSharedInputs.q283, SelectiveSharedInputs.q284, SelectiveSharedInputs.q285, SelectiveSharedInputs.q286, SelectiveSharedInputs.q287, SelectiveSharedInputs.q288, SelectiveSharedInputs.q289, SelectiveSharedInputs.q290, SelectiveSharedInputs.q291, SelectiveSharedInputs.q292, SelectiveSharedInputs.q293, SelectiveSharedInputs.q294, SelectiveSharedInputs.q295, SelectiveSharedInputs.q296, SelectiveSharedInputs.q297, SelectiveSharedInputs.q298, SelectiveSharedInputs.q299, SelectiveSharedInputs.q300, SelectiveSharedInputs.q301, SelectiveSharedInputs.q302, SelectiveSharedInputs.q303, SelectiveSharedInputs.q304, SelectiveSharedInputs.q305, SelectiveSharedInputs.q306, SelectiveSharedInputs.q307] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_39 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_39 X Y p r := by classical have hn := h.2.2.2.2 8 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_39 dsimp only [SelectiveSharedInputs.q283, SelectiveSharedInputs.q284, SelectiveSharedInputs.q285, SelectiveSharedInputs.q286, SelectiveSharedInputs.q287, SelectiveSharedInputs.q288, SelectiveSharedInputs.q289, SelectiveSharedInputs.q290, SelectiveSharedInputs.q291, SelectiveSharedInputs.q292, SelectiveSharedInputs.q293, SelectiveSharedInputs.q294, SelectiveSharedInputs.q295, SelectiveSharedInputs.q296, SelectiveSharedInputs.q299, SelectiveSharedInputs.q300, SelectiveSharedInputs.q301, SelectiveSharedInputs.q302, SelectiveSharedInputs.q303] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_40 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_40 X Y p r := by classical have hn := h.2.2.2.2 9 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_40 dsimp only [SelectiveSharedInputs.q308, SelectiveSharedInputs.q309, SelectiveSharedInputs.q310, SelectiveSharedInputs.q311, SelectiveSharedInputs.q312, SelectiveSharedInputs.q313, SelectiveSharedInputs.q314, SelectiveSharedInputs.q315, SelectiveSharedInputs.q316, SelectiveSharedInputs.q317, SelectiveSharedInputs.q318, SelectiveSharedInputs.q319, SelectiveSharedInputs.q320, SelectiveSharedInputs.q321, SelectiveSharedInputs.q322, SelectiveSharedInputs.q323, SelectiveSharedInputs.q324, SelectiveSharedInputs.q325, SelectiveSharedInputs.q326, SelectiveSharedInputs.q327, SelectiveSharedInputs.q328, SelectiveSharedInputs.q329, SelectiveSharedInputs.q330, SelectiveSharedInputs.q331] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_41 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_41 X Y p r := by classical have hn := h.2.2.2.2 9 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_41 dsimp only [SelectiveSharedInputs.q308, SelectiveSharedInputs.q309, SelectiveSharedInputs.q310, SelectiveSharedInputs.q311, SelectiveSharedInputs.q312, SelectiveSharedInputs.q313, SelectiveSharedInputs.q314, SelectiveSharedInputs.q315, SelectiveSharedInputs.q316, SelectiveSharedInputs.q317, SelectiveSharedInputs.q318, SelectiveSharedInputs.q319, SelectiveSharedInputs.q320, SelectiveSharedInputs.q321, SelectiveSharedInputs.q322, SelectiveSharedInputs.q323, SelectiveSharedInputs.q324, SelectiveSharedInputs.q325, SelectiveSharedInputs.q326, SelectiveSharedInputs.q327, SelectiveSharedInputs.q328, SelectiveSharedInputs.q329, SelectiveSharedInputs.q330, SelectiveSharedInputs.q331, SelectiveSharedInputs.q332] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_42 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_42 X Y p r := by classical have hn := h.2.2.2.2 9 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_42 dsimp only [SelectiveSharedInputs.q308, SelectiveSharedInputs.q309, SelectiveSharedInputs.q310, SelectiveSharedInputs.q311, SelectiveSharedInputs.q312, SelectiveSharedInputs.q313, SelectiveSharedInputs.q314, SelectiveSharedInputs.q315, SelectiveSharedInputs.q316, SelectiveSharedInputs.q317, SelectiveSharedInputs.q318, SelectiveSharedInputs.q319, SelectiveSharedInputs.q320, SelectiveSharedInputs.q321, SelectiveSharedInputs.q324, SelectiveSharedInputs.q325, SelectiveSharedInputs.q326, SelectiveSharedInputs.q327, SelectiveSharedInputs.q328] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_46 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_46 X Y p r := by classical have hn := h.2.2.2.2 4 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_46 dsimp only [SelectiveSharedInputs.q358, SelectiveSharedInputs.q359, SelectiveSharedInputs.q360, SelectiveSharedInputs.q361, SelectiveSharedInputs.q362, SelectiveSharedInputs.q363, SelectiveSharedInputs.q364, SelectiveSharedInputs.q365, SelectiveSharedInputs.q366, SelectiveSharedInputs.q367, SelectiveSharedInputs.q368, SelectiveSharedInputs.q369, SelectiveSharedInputs.q370, SelectiveSharedInputs.q371, SelectiveSharedInputs.q372, SelectiveSharedInputs.q373, SelectiveSharedInputs.q374, SelectiveSharedInputs.q375, SelectiveSharedInputs.q376, SelectiveSharedInputs.q377, SelectiveSharedInputs.q378, SelectiveSharedInputs.q379, SelectiveSharedInputs.q380, SelectiveSharedInputs.q381] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_47 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_47 X Y p r := by classical have hn := h.2.2.2.2 4 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_47 dsimp only [SelectiveSharedInputs.q358, SelectiveSharedInputs.q359, SelectiveSharedInputs.q360, SelectiveSharedInputs.q361, SelectiveSharedInputs.q362, SelectiveSharedInputs.q363, SelectiveSharedInputs.q364, SelectiveSharedInputs.q365, SelectiveSharedInputs.q366, SelectiveSharedInputs.q367, SelectiveSharedInputs.q368, SelectiveSharedInputs.q369, SelectiveSharedInputs.q370, SelectiveSharedInputs.q371, SelectiveSharedInputs.q372, SelectiveSharedInputs.q373, SelectiveSharedInputs.q374, SelectiveSharedInputs.q375, SelectiveSharedInputs.q376, SelectiveSharedInputs.q377, SelectiveSharedInputs.q378, SelectiveSharedInputs.q379, SelectiveSharedInputs.q380, SelectiveSharedInputs.q381, SelectiveSharedInputs.q382] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_48 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_48 X Y p r := by classical have hn := h.2.2.2.2 4 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_48 dsimp only [SelectiveSharedInputs.q358, SelectiveSharedInputs.q359, SelectiveSharedInputs.q360, SelectiveSharedInputs.q361, SelectiveSharedInputs.q362, SelectiveSharedInputs.q363, SelectiveSharedInputs.q364, SelectiveSharedInputs.q365, SelectiveSharedInputs.q366, SelectiveSharedInputs.q367, SelectiveSharedInputs.q368, SelectiveSharedInputs.q369, SelectiveSharedInputs.q370, SelectiveSharedInputs.q371, SelectiveSharedInputs.q374, SelectiveSharedInputs.q375, SelectiveSharedInputs.q376, SelectiveSharedInputs.q377, SelectiveSharedInputs.q378] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_49 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_49 X Y p r := by classical have hn := h.2.2.2.2 5 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_49 dsimp only [SelectiveSharedInputs.q383, SelectiveSharedInputs.q384, SelectiveSharedInputs.q385, SelectiveSharedInputs.q386, SelectiveSharedInputs.q387, SelectiveSharedInputs.q388, SelectiveSharedInputs.q389, SelectiveSharedInputs.q390, SelectiveSharedInputs.q391, SelectiveSharedInputs.q392, SelectiveSharedInputs.q393, SelectiveSharedInputs.q394, SelectiveSharedInputs.q395, SelectiveSharedInputs.q396, SelectiveSharedInputs.q397, SelectiveSharedInputs.q398, SelectiveSharedInputs.q399, SelectiveSharedInputs.q400, SelectiveSharedInputs.q401, SelectiveSharedInputs.q402, SelectiveSharedInputs.q403, SelectiveSharedInputs.q404, SelectiveSharedInputs.q405, SelectiveSharedInputs.q406] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_50 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_50 X Y p r := by classical have hn := h.2.2.2.2 5 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_50 dsimp only [SelectiveSharedInputs.q383, SelectiveSharedInputs.q384, SelectiveSharedInputs.q385, SelectiveSharedInputs.q386, SelectiveSharedInputs.q387, SelectiveSharedInputs.q388, SelectiveSharedInputs.q389, SelectiveSharedInputs.q390, SelectiveSharedInputs.q391, SelectiveSharedInputs.q392, SelectiveSharedInputs.q393, SelectiveSharedInputs.q394, SelectiveSharedInputs.q395, SelectiveSharedInputs.q396, SelectiveSharedInputs.q397, SelectiveSharedInputs.q398, SelectiveSharedInputs.q399, SelectiveSharedInputs.q400, SelectiveSharedInputs.q401, SelectiveSharedInputs.q402, SelectiveSharedInputs.q403, SelectiveSharedInputs.q404, SelectiveSharedInputs.q405, SelectiveSharedInputs.q406, SelectiveSharedInputs.q407] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_51 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_51 X Y p r := by classical have hn := h.2.2.2.2 5 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_51 dsimp only [SelectiveSharedInputs.q383, SelectiveSharedInputs.q384, SelectiveSharedInputs.q385, SelectiveSharedInputs.q386, SelectiveSharedInputs.q387, SelectiveSharedInputs.q388, SelectiveSharedInputs.q389, SelectiveSharedInputs.q390, SelectiveSharedInputs.q391, SelectiveSharedInputs.q392, SelectiveSharedInputs.q393, SelectiveSharedInputs.q394, SelectiveSharedInputs.q395, SelectiveSharedInputs.q396, SelectiveSharedInputs.q399, SelectiveSharedInputs.q400, SelectiveSharedInputs.q401, SelectiveSharedInputs.q402, SelectiveSharedInputs.q403] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_52 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_52 X Y p r := by classical have hn := h.2.2.2.2 1 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_52 dsimp only [SelectiveSharedInputs.q408, SelectiveSharedInputs.q409, SelectiveSharedInputs.q410, SelectiveSharedInputs.q411, SelectiveSharedInputs.q412, SelectiveSharedInputs.q413, SelectiveSharedInputs.q414, SelectiveSharedInputs.q415, SelectiveSharedInputs.q416, SelectiveSharedInputs.q417, SelectiveSharedInputs.q418, SelectiveSharedInputs.q419, SelectiveSharedInputs.q420, SelectiveSharedInputs.q421, SelectiveSharedInputs.q422, SelectiveSharedInputs.q423, SelectiveSharedInputs.q424, SelectiveSharedInputs.q425, SelectiveSharedInputs.q426, SelectiveSharedInputs.q427, SelectiveSharedInputs.q428, SelectiveSharedInputs.q429, SelectiveSharedInputs.q430, SelectiveSharedInputs.q431] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_53 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_53 X Y p r := by classical have hn := h.2.2.2.2 1 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_53 dsimp only [SelectiveSharedInputs.q408, SelectiveSharedInputs.q409, SelectiveSharedInputs.q410, SelectiveSharedInputs.q411, SelectiveSharedInputs.q412, SelectiveSharedInputs.q413, SelectiveSharedInputs.q414, SelectiveSharedInputs.q415, SelectiveSharedInputs.q416, SelectiveSharedInputs.q417, SelectiveSharedInputs.q418, SelectiveSharedInputs.q419, SelectiveSharedInputs.q420, SelectiveSharedInputs.q421, SelectiveSharedInputs.q422, SelectiveSharedInputs.q423, SelectiveSharedInputs.q424, SelectiveSharedInputs.q425, SelectiveSharedInputs.q426, SelectiveSharedInputs.q427, SelectiveSharedInputs.q428, SelectiveSharedInputs.q429, SelectiveSharedInputs.q430, SelectiveSharedInputs.q431, SelectiveSharedInputs.q432] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_54 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_54 X Y p r := by classical have hn := h.2.2.2.2 1 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_54 dsimp only [SelectiveSharedInputs.q408, SelectiveSharedInputs.q409, SelectiveSharedInputs.q410, SelectiveSharedInputs.q411, SelectiveSharedInputs.q412, SelectiveSharedInputs.q413, SelectiveSharedInputs.q414, SelectiveSharedInputs.q415, SelectiveSharedInputs.q416, SelectiveSharedInputs.q417, SelectiveSharedInputs.q418, SelectiveSharedInputs.q419, SelectiveSharedInputs.q420, SelectiveSharedInputs.q421, SelectiveSharedInputs.q424, SelectiveSharedInputs.q425, SelectiveSharedInputs.q426, SelectiveSharedInputs.q427, SelectiveSharedInputs.q428] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_55 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_55 X Y p r := by classical have hn := h.2.2.2.2 2 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_55 dsimp only [SelectiveSharedInputs.q433, SelectiveSharedInputs.q434, SelectiveSharedInputs.q435, SelectiveSharedInputs.q436, SelectiveSharedInputs.q437, SelectiveSharedInputs.q438, SelectiveSharedInputs.q439, SelectiveSharedInputs.q440, SelectiveSharedInputs.q441, SelectiveSharedInputs.q442, SelectiveSharedInputs.q443, SelectiveSharedInputs.q444, SelectiveSharedInputs.q445, SelectiveSharedInputs.q446, SelectiveSharedInputs.q447, SelectiveSharedInputs.q448, SelectiveSharedInputs.q449, SelectiveSharedInputs.q450, SelectiveSharedInputs.q451, SelectiveSharedInputs.q452, SelectiveSharedInputs.q453, SelectiveSharedInputs.q454] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_56 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_56 X Y p r := by classical have hn := h.2.2.2.2 2 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_56 dsimp only [SelectiveSharedInputs.q433, SelectiveSharedInputs.q434, SelectiveSharedInputs.q435, SelectiveSharedInputs.q436, SelectiveSharedInputs.q437, SelectiveSharedInputs.q438, SelectiveSharedInputs.q439, SelectiveSharedInputs.q440, SelectiveSharedInputs.q441, SelectiveSharedInputs.q442, SelectiveSharedInputs.q443, SelectiveSharedInputs.q444, SelectiveSharedInputs.q445, SelectiveSharedInputs.q446, SelectiveSharedInputs.q447, SelectiveSharedInputs.q448, SelectiveSharedInputs.q449, SelectiveSharedInputs.q450, SelectiveSharedInputs.q451, SelectiveSharedInputs.q452, SelectiveSharedInputs.q453, SelectiveSharedInputs.q454, SelectiveSharedInputs.q455] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_57 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_57 X Y p r := by classical have hn := h.2.2.2.2 2 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_57 dsimp only [SelectiveSharedInputs.q433, SelectiveSharedInputs.q434, SelectiveSharedInputs.q435, SelectiveSharedInputs.q436, SelectiveSharedInputs.q437, SelectiveSharedInputs.q438, SelectiveSharedInputs.q439, SelectiveSharedInputs.q440, SelectiveSharedInputs.q441, SelectiveSharedInputs.q442, SelectiveSharedInputs.q443, SelectiveSharedInputs.q444, SelectiveSharedInputs.q447, SelectiveSharedInputs.q448, SelectiveSharedInputs.q449, SelectiveSharedInputs.q450, SelectiveSharedInputs.q451] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_58 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 false X Y p r) : input_58 X Y p r := by classical have hn := h.2.2.2.2 0 (by norm_num) have hs := hn simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_58 dsimp only [SelectiveSharedInputs.q456, SelectiveSharedInputs.q457, SelectiveSharedInputs.q458, SelectiveSharedInputs.q459, SelectiveSharedInputs.q460, SelectiveSharedInputs.q461, SelectiveSharedInputs.q462, SelectiveSharedInputs.q463, SelectiveSharedInputs.q464, SelectiveSharedInputs.q465, SelectiveSharedInputs.q466, SelectiveSharedInputs.q467, SelectiveSharedInputs.q468, SelectiveSharedInputs.q469, SelectiveSharedInputs.q470, SelectiveSharedInputs.q471, SelectiveSharedInputs.q472, SelectiveSharedInputs.q473, SelectiveSharedInputs.q474, SelectiveSharedInputs.q475, SelectiveSharedInputs.q476, SelectiveSharedInputs.q477] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs end ClosureOriginalInputs0 namespace ClosureOriginalInputs1 open Bounty noncomputable def input_0 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (1 / 4) < X noncomputable def input_1 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => X ≤ 1 noncomputable def input_2 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (1 / 3) < Y noncomputable def input_3 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => Y ≤ 1 noncomputable def input_14 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => (3 / 0x30d4) ≤ r (20 : ℕ) noncomputable def input_15 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => if p (20 : ℕ) then ((if True ∧ SelectiveSharedInputs.q90 X ∧ SelectiveSharedInputs.q91 Y ∧ SelectiveSharedInputs.q92 Y then 1 else 0) - if SelectiveSharedInputs.q93 X Y then 1 else 0) ≥ (0 : ℤ) ∧ r (20 : ℕ) ≥ SelectiveSharedInputs.q96 X Y ∧ SelectiveSharedInputs.q97 X Y r else SelectiveSharedInputs.q107 X Y r noncomputable def input_25 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q198 X Y p r ∨ SelectiveSharedInputs.q206 X Y p r noncomputable def input_26 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (13 : ℕ) ↔ SelectiveSharedInputs.q207 X Y p r noncomputable def input_27 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (13 : ℕ) = if p (13 : ℕ) then if SelectiveSharedInputs.q203 X Y p r ≥ if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) then SelectiveSharedInputs.q203 X Y p r else if p (18 : ℕ) ↔ True then 4 * r (18 : ℕ) else 6 * r (18 : ℕ) else SelectiveSharedInputs.q196 X Y p r noncomputable def input_28 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q223 X Y p r ∨ SelectiveSharedInputs.q231 X Y p r noncomputable def input_29 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (14 : ℕ) ↔ SelectiveSharedInputs.q232 X Y p r noncomputable def input_30 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (14 : ℕ) = if p (14 : ℕ) then if SelectiveSharedInputs.q228 X Y p r ≥ if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) then SelectiveSharedInputs.q228 X Y p r else if p (19 : ℕ) ↔ True then 4 * r (19 : ℕ) else 6 * r (19 : ℕ) else SelectiveSharedInputs.q221 X Y p r noncomputable def input_34 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q273 X Y p r ∨ SelectiveSharedInputs.q281 X Y p r noncomputable def input_35 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (7 : ℕ) ↔ SelectiveSharedInputs.q282 X Y p r noncomputable def input_36 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (7 : ℕ) = if p (7 : ℕ) then if SelectiveSharedInputs.q278 X Y p r ≥ if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) then SelectiveSharedInputs.q278 X Y p r else if p (11 : ℕ) ↔ True then 4 * r (11 : ℕ) else 6 * r (11 : ℕ) else SelectiveSharedInputs.q271 X Y p r noncomputable def input_37 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q298 X Y p r ∨ SelectiveSharedInputs.q306 X Y p r noncomputable def input_38 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (8 : ℕ) ↔ SelectiveSharedInputs.q307 X Y p r noncomputable def input_39 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (8 : ℕ) = if p (8 : ℕ) then if SelectiveSharedInputs.q303 X Y p r ≥ if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) then SelectiveSharedInputs.q303 X Y p r else if p (12 : ℕ) ↔ True then 4 * r (12 : ℕ) else 6 * r (12 : ℕ) else SelectiveSharedInputs.q296 X Y p r noncomputable def input_40 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q323 X Y p r ∨ SelectiveSharedInputs.q331 X Y p r noncomputable def input_41 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (9 : ℕ) ↔ SelectiveSharedInputs.q332 X Y p r noncomputable def input_42 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (9 : ℕ) = if p (9 : ℕ) then if SelectiveSharedInputs.q328 X Y p r ≥ if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) then SelectiveSharedInputs.q328 X Y p r else if p (13 : ℕ) ↔ True then 4 * r (13 : ℕ) else 6 * r (13 : ℕ) else SelectiveSharedInputs.q321 X Y p r noncomputable def input_46 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q373 X Y p r ∨ SelectiveSharedInputs.q381 X Y p r noncomputable def input_47 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (4 : ℕ) ↔ SelectiveSharedInputs.q382 X Y p r noncomputable def input_48 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (4 : ℕ) = if p (4 : ℕ) then if SelectiveSharedInputs.q378 X Y p r ≥ if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) then SelectiveSharedInputs.q378 X Y p r else if p (7 : ℕ) ↔ True then 4 * r (7 : ℕ) else 6 * r (7 : ℕ) else SelectiveSharedInputs.q371 X Y p r noncomputable def input_49 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q398 X Y p r ∨ SelectiveSharedInputs.q406 X Y p r noncomputable def input_50 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (5 : ℕ) ↔ SelectiveSharedInputs.q407 X Y p r noncomputable def input_51 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (5 : ℕ) = if p (5 : ℕ) then if SelectiveSharedInputs.q403 X Y p r ≥ if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) then SelectiveSharedInputs.q403 X Y p r else if p (8 : ℕ) ↔ True then 4 * r (8 : ℕ) else 6 * r (8 : ℕ) else SelectiveSharedInputs.q396 X Y p r noncomputable def input_52 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q519 X Y p r ∨ SelectiveSharedInputs.q524 X Y p r noncomputable def input_53 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (1 : ℕ) ↔ SelectiveSharedInputs.q525 X Y p r noncomputable def input_54 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (1 : ℕ) = if p (1 : ℕ) then if SelectiveSharedInputs.q521 X Y p r ≥ if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) then SelectiveSharedInputs.q521 X Y p r else if p (3 : ℕ) ↔ True then 4 * r (3 : ℕ) else 6 * r (3 : ℕ) else SelectiveSharedInputs.q517 X Y p r noncomputable def input_55 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => SelectiveSharedInputs.q446 X Y p r ∨ SelectiveSharedInputs.q454 X Y p r noncomputable def input_56 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => p (2 : ℕ) ↔ SelectiveSharedInputs.q455 X Y p r noncomputable def input_57 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => r (2 : ℕ) = if p (2 : ℕ) then if SelectiveSharedInputs.q451 X Y p r ≥ if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) then SelectiveSharedInputs.q451 X Y p r else if p (4 : ℕ) ↔ True then 4 * r (4 : ℕ) else 6 * r (4 : ℕ) else SelectiveSharedInputs.q444 X Y p r noncomputable def input_58 : ℚ → ℚ → (ℕ → Prop) → (ℕ → ℚ) → Prop := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact fun X Y p r => ¬SelectiveSharedInputs.q531 X Y p r ∧ ¬SelectiveSharedInputs.q536 X Y p r def raw_input_0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_0 X Y p r := by classical exact h.1 def raw_input_1 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_1 X Y p r := by classical exact h.2.1 def raw_input_2 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_2 X Y p r := by classical exact h.2.2.1 def raw_input_3 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_3 X Y p r := by classical exact h.2.2.2.1 def raw_input_14 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_14 X Y p r := by classical have hn := h.2.2.2.2 20 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_14 norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_15 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_15 X Y p r := by classical have hn := h.2.2.2.2 20 (by norm_num) have hs := hn.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_15 dsimp only [SelectiveSharedInputs.q90, SelectiveSharedInputs.q91, SelectiveSharedInputs.q92, SelectiveSharedInputs.q93, SelectiveSharedInputs.q94, SelectiveSharedInputs.q95, SelectiveSharedInputs.q96, SelectiveSharedInputs.q97, SelectiveSharedInputs.q98, SelectiveSharedInputs.q99, SelectiveSharedInputs.q100, SelectiveSharedInputs.q101, SelectiveSharedInputs.q102, SelectiveSharedInputs.q103, SelectiveSharedInputs.q104, SelectiveSharedInputs.q105, SelectiveSharedInputs.q106, SelectiveSharedInputs.q107] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_25 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_25 X Y p r := by classical have hn := h.2.2.2.2 13 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_25 dsimp only [SelectiveSharedInputs.q183, SelectiveSharedInputs.q184, SelectiveSharedInputs.q185, SelectiveSharedInputs.q186, SelectiveSharedInputs.q187, SelectiveSharedInputs.q188, SelectiveSharedInputs.q189, SelectiveSharedInputs.q190, SelectiveSharedInputs.q191, SelectiveSharedInputs.q192, SelectiveSharedInputs.q193, SelectiveSharedInputs.q194, SelectiveSharedInputs.q195, SelectiveSharedInputs.q196, SelectiveSharedInputs.q197, SelectiveSharedInputs.q198, SelectiveSharedInputs.q199, SelectiveSharedInputs.q200, SelectiveSharedInputs.q201, SelectiveSharedInputs.q202, SelectiveSharedInputs.q203, SelectiveSharedInputs.q204, SelectiveSharedInputs.q205, SelectiveSharedInputs.q206] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_26 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_26 X Y p r := by classical have hn := h.2.2.2.2 13 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_26 dsimp only [SelectiveSharedInputs.q183, SelectiveSharedInputs.q184, SelectiveSharedInputs.q185, SelectiveSharedInputs.q186, SelectiveSharedInputs.q187, SelectiveSharedInputs.q188, SelectiveSharedInputs.q189, SelectiveSharedInputs.q190, SelectiveSharedInputs.q191, SelectiveSharedInputs.q192, SelectiveSharedInputs.q193, SelectiveSharedInputs.q194, SelectiveSharedInputs.q195, SelectiveSharedInputs.q196, SelectiveSharedInputs.q197, SelectiveSharedInputs.q198, SelectiveSharedInputs.q199, SelectiveSharedInputs.q200, SelectiveSharedInputs.q201, SelectiveSharedInputs.q202, SelectiveSharedInputs.q203, SelectiveSharedInputs.q204, SelectiveSharedInputs.q205, SelectiveSharedInputs.q206, SelectiveSharedInputs.q207] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_27 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_27 X Y p r := by classical have hn := h.2.2.2.2 13 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_27 dsimp only [SelectiveSharedInputs.q183, SelectiveSharedInputs.q184, SelectiveSharedInputs.q185, SelectiveSharedInputs.q186, SelectiveSharedInputs.q187, SelectiveSharedInputs.q188, SelectiveSharedInputs.q189, SelectiveSharedInputs.q190, SelectiveSharedInputs.q191, SelectiveSharedInputs.q192, SelectiveSharedInputs.q193, SelectiveSharedInputs.q194, SelectiveSharedInputs.q195, SelectiveSharedInputs.q196, SelectiveSharedInputs.q199, SelectiveSharedInputs.q200, SelectiveSharedInputs.q201, SelectiveSharedInputs.q202, SelectiveSharedInputs.q203] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_28 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_28 X Y p r := by classical have hn := h.2.2.2.2 14 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_28 dsimp only [SelectiveSharedInputs.q208, SelectiveSharedInputs.q209, SelectiveSharedInputs.q210, SelectiveSharedInputs.q211, SelectiveSharedInputs.q212, SelectiveSharedInputs.q213, SelectiveSharedInputs.q214, SelectiveSharedInputs.q215, SelectiveSharedInputs.q216, SelectiveSharedInputs.q217, SelectiveSharedInputs.q218, SelectiveSharedInputs.q219, SelectiveSharedInputs.q220, SelectiveSharedInputs.q221, SelectiveSharedInputs.q222, SelectiveSharedInputs.q223, SelectiveSharedInputs.q224, SelectiveSharedInputs.q225, SelectiveSharedInputs.q226, SelectiveSharedInputs.q227, SelectiveSharedInputs.q228, SelectiveSharedInputs.q229, SelectiveSharedInputs.q230, SelectiveSharedInputs.q231] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_29 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_29 X Y p r := by classical have hn := h.2.2.2.2 14 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_29 dsimp only [SelectiveSharedInputs.q208, SelectiveSharedInputs.q209, SelectiveSharedInputs.q210, SelectiveSharedInputs.q211, SelectiveSharedInputs.q212, SelectiveSharedInputs.q213, SelectiveSharedInputs.q214, SelectiveSharedInputs.q215, SelectiveSharedInputs.q216, SelectiveSharedInputs.q217, SelectiveSharedInputs.q218, SelectiveSharedInputs.q219, SelectiveSharedInputs.q220, SelectiveSharedInputs.q221, SelectiveSharedInputs.q222, SelectiveSharedInputs.q223, SelectiveSharedInputs.q224, SelectiveSharedInputs.q225, SelectiveSharedInputs.q226, SelectiveSharedInputs.q227, SelectiveSharedInputs.q228, SelectiveSharedInputs.q229, SelectiveSharedInputs.q230, SelectiveSharedInputs.q231, SelectiveSharedInputs.q232] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_30 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_30 X Y p r := by classical have hn := h.2.2.2.2 14 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_30 dsimp only [SelectiveSharedInputs.q208, SelectiveSharedInputs.q209, SelectiveSharedInputs.q210, SelectiveSharedInputs.q211, SelectiveSharedInputs.q212, SelectiveSharedInputs.q213, SelectiveSharedInputs.q214, SelectiveSharedInputs.q215, SelectiveSharedInputs.q216, SelectiveSharedInputs.q217, SelectiveSharedInputs.q218, SelectiveSharedInputs.q219, SelectiveSharedInputs.q220, SelectiveSharedInputs.q221, SelectiveSharedInputs.q224, SelectiveSharedInputs.q225, SelectiveSharedInputs.q226, SelectiveSharedInputs.q227, SelectiveSharedInputs.q228] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_34 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_34 X Y p r := by classical have hn := h.2.2.2.2 7 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_34 dsimp only [SelectiveSharedInputs.q258, SelectiveSharedInputs.q259, SelectiveSharedInputs.q260, SelectiveSharedInputs.q261, SelectiveSharedInputs.q262, SelectiveSharedInputs.q263, SelectiveSharedInputs.q264, SelectiveSharedInputs.q265, SelectiveSharedInputs.q266, SelectiveSharedInputs.q267, SelectiveSharedInputs.q268, SelectiveSharedInputs.q269, SelectiveSharedInputs.q270, SelectiveSharedInputs.q271, SelectiveSharedInputs.q272, SelectiveSharedInputs.q273, SelectiveSharedInputs.q274, SelectiveSharedInputs.q275, SelectiveSharedInputs.q276, SelectiveSharedInputs.q277, SelectiveSharedInputs.q278, SelectiveSharedInputs.q279, SelectiveSharedInputs.q280, SelectiveSharedInputs.q281] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_35 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_35 X Y p r := by classical have hn := h.2.2.2.2 7 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_35 dsimp only [SelectiveSharedInputs.q258, SelectiveSharedInputs.q259, SelectiveSharedInputs.q260, SelectiveSharedInputs.q261, SelectiveSharedInputs.q262, SelectiveSharedInputs.q263, SelectiveSharedInputs.q264, SelectiveSharedInputs.q265, SelectiveSharedInputs.q266, SelectiveSharedInputs.q267, SelectiveSharedInputs.q268, SelectiveSharedInputs.q269, SelectiveSharedInputs.q270, SelectiveSharedInputs.q271, SelectiveSharedInputs.q272, SelectiveSharedInputs.q273, SelectiveSharedInputs.q274, SelectiveSharedInputs.q275, SelectiveSharedInputs.q276, SelectiveSharedInputs.q277, SelectiveSharedInputs.q278, SelectiveSharedInputs.q279, SelectiveSharedInputs.q280, SelectiveSharedInputs.q281, SelectiveSharedInputs.q282] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_36 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_36 X Y p r := by classical have hn := h.2.2.2.2 7 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_36 dsimp only [SelectiveSharedInputs.q258, SelectiveSharedInputs.q259, SelectiveSharedInputs.q260, SelectiveSharedInputs.q261, SelectiveSharedInputs.q262, SelectiveSharedInputs.q263, SelectiveSharedInputs.q264, SelectiveSharedInputs.q265, SelectiveSharedInputs.q266, SelectiveSharedInputs.q267, SelectiveSharedInputs.q268, SelectiveSharedInputs.q269, SelectiveSharedInputs.q270, SelectiveSharedInputs.q271, SelectiveSharedInputs.q274, SelectiveSharedInputs.q275, SelectiveSharedInputs.q276, SelectiveSharedInputs.q277, SelectiveSharedInputs.q278] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_37 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_37 X Y p r := by classical have hn := h.2.2.2.2 8 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_37 dsimp only [SelectiveSharedInputs.q283, SelectiveSharedInputs.q284, SelectiveSharedInputs.q285, SelectiveSharedInputs.q286, SelectiveSharedInputs.q287, SelectiveSharedInputs.q288, SelectiveSharedInputs.q289, SelectiveSharedInputs.q290, SelectiveSharedInputs.q291, SelectiveSharedInputs.q292, SelectiveSharedInputs.q293, SelectiveSharedInputs.q294, SelectiveSharedInputs.q295, SelectiveSharedInputs.q296, SelectiveSharedInputs.q297, SelectiveSharedInputs.q298, SelectiveSharedInputs.q299, SelectiveSharedInputs.q300, SelectiveSharedInputs.q301, SelectiveSharedInputs.q302, SelectiveSharedInputs.q303, SelectiveSharedInputs.q304, SelectiveSharedInputs.q305, SelectiveSharedInputs.q306] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_38 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_38 X Y p r := by classical have hn := h.2.2.2.2 8 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_38 dsimp only [SelectiveSharedInputs.q283, SelectiveSharedInputs.q284, SelectiveSharedInputs.q285, SelectiveSharedInputs.q286, SelectiveSharedInputs.q287, SelectiveSharedInputs.q288, SelectiveSharedInputs.q289, SelectiveSharedInputs.q290, SelectiveSharedInputs.q291, SelectiveSharedInputs.q292, SelectiveSharedInputs.q293, SelectiveSharedInputs.q294, SelectiveSharedInputs.q295, SelectiveSharedInputs.q296, SelectiveSharedInputs.q297, SelectiveSharedInputs.q298, SelectiveSharedInputs.q299, SelectiveSharedInputs.q300, SelectiveSharedInputs.q301, SelectiveSharedInputs.q302, SelectiveSharedInputs.q303, SelectiveSharedInputs.q304, SelectiveSharedInputs.q305, SelectiveSharedInputs.q306, SelectiveSharedInputs.q307] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_39 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_39 X Y p r := by classical have hn := h.2.2.2.2 8 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_39 dsimp only [SelectiveSharedInputs.q283, SelectiveSharedInputs.q284, SelectiveSharedInputs.q285, SelectiveSharedInputs.q286, SelectiveSharedInputs.q287, SelectiveSharedInputs.q288, SelectiveSharedInputs.q289, SelectiveSharedInputs.q290, SelectiveSharedInputs.q291, SelectiveSharedInputs.q292, SelectiveSharedInputs.q293, SelectiveSharedInputs.q294, SelectiveSharedInputs.q295, SelectiveSharedInputs.q296, SelectiveSharedInputs.q299, SelectiveSharedInputs.q300, SelectiveSharedInputs.q301, SelectiveSharedInputs.q302, SelectiveSharedInputs.q303] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_40 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_40 X Y p r := by classical have hn := h.2.2.2.2 9 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_40 dsimp only [SelectiveSharedInputs.q308, SelectiveSharedInputs.q309, SelectiveSharedInputs.q310, SelectiveSharedInputs.q311, SelectiveSharedInputs.q312, SelectiveSharedInputs.q313, SelectiveSharedInputs.q314, SelectiveSharedInputs.q315, SelectiveSharedInputs.q316, SelectiveSharedInputs.q317, SelectiveSharedInputs.q318, SelectiveSharedInputs.q319, SelectiveSharedInputs.q320, SelectiveSharedInputs.q321, SelectiveSharedInputs.q322, SelectiveSharedInputs.q323, SelectiveSharedInputs.q324, SelectiveSharedInputs.q325, SelectiveSharedInputs.q326, SelectiveSharedInputs.q327, SelectiveSharedInputs.q328, SelectiveSharedInputs.q329, SelectiveSharedInputs.q330, SelectiveSharedInputs.q331] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_41 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_41 X Y p r := by classical have hn := h.2.2.2.2 9 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_41 dsimp only [SelectiveSharedInputs.q308, SelectiveSharedInputs.q309, SelectiveSharedInputs.q310, SelectiveSharedInputs.q311, SelectiveSharedInputs.q312, SelectiveSharedInputs.q313, SelectiveSharedInputs.q314, SelectiveSharedInputs.q315, SelectiveSharedInputs.q316, SelectiveSharedInputs.q317, SelectiveSharedInputs.q318, SelectiveSharedInputs.q319, SelectiveSharedInputs.q320, SelectiveSharedInputs.q321, SelectiveSharedInputs.q322, SelectiveSharedInputs.q323, SelectiveSharedInputs.q324, SelectiveSharedInputs.q325, SelectiveSharedInputs.q326, SelectiveSharedInputs.q327, SelectiveSharedInputs.q328, SelectiveSharedInputs.q329, SelectiveSharedInputs.q330, SelectiveSharedInputs.q331, SelectiveSharedInputs.q332] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_42 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_42 X Y p r := by classical have hn := h.2.2.2.2 9 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_42 dsimp only [SelectiveSharedInputs.q308, SelectiveSharedInputs.q309, SelectiveSharedInputs.q310, SelectiveSharedInputs.q311, SelectiveSharedInputs.q312, SelectiveSharedInputs.q313, SelectiveSharedInputs.q314, SelectiveSharedInputs.q315, SelectiveSharedInputs.q316, SelectiveSharedInputs.q317, SelectiveSharedInputs.q318, SelectiveSharedInputs.q319, SelectiveSharedInputs.q320, SelectiveSharedInputs.q321, SelectiveSharedInputs.q324, SelectiveSharedInputs.q325, SelectiveSharedInputs.q326, SelectiveSharedInputs.q327, SelectiveSharedInputs.q328] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_46 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_46 X Y p r := by classical have hn := h.2.2.2.2 4 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_46 dsimp only [SelectiveSharedInputs.q358, SelectiveSharedInputs.q359, SelectiveSharedInputs.q360, SelectiveSharedInputs.q361, SelectiveSharedInputs.q362, SelectiveSharedInputs.q363, SelectiveSharedInputs.q364, SelectiveSharedInputs.q365, SelectiveSharedInputs.q366, SelectiveSharedInputs.q367, SelectiveSharedInputs.q368, SelectiveSharedInputs.q369, SelectiveSharedInputs.q370, SelectiveSharedInputs.q371, SelectiveSharedInputs.q372, SelectiveSharedInputs.q373, SelectiveSharedInputs.q374, SelectiveSharedInputs.q375, SelectiveSharedInputs.q376, SelectiveSharedInputs.q377, SelectiveSharedInputs.q378, SelectiveSharedInputs.q379, SelectiveSharedInputs.q380, SelectiveSharedInputs.q381] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_47 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_47 X Y p r := by classical have hn := h.2.2.2.2 4 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_47 dsimp only [SelectiveSharedInputs.q358, SelectiveSharedInputs.q359, SelectiveSharedInputs.q360, SelectiveSharedInputs.q361, SelectiveSharedInputs.q362, SelectiveSharedInputs.q363, SelectiveSharedInputs.q364, SelectiveSharedInputs.q365, SelectiveSharedInputs.q366, SelectiveSharedInputs.q367, SelectiveSharedInputs.q368, SelectiveSharedInputs.q369, SelectiveSharedInputs.q370, SelectiveSharedInputs.q371, SelectiveSharedInputs.q372, SelectiveSharedInputs.q373, SelectiveSharedInputs.q374, SelectiveSharedInputs.q375, SelectiveSharedInputs.q376, SelectiveSharedInputs.q377, SelectiveSharedInputs.q378, SelectiveSharedInputs.q379, SelectiveSharedInputs.q380, SelectiveSharedInputs.q381, SelectiveSharedInputs.q382] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_48 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_48 X Y p r := by classical have hn := h.2.2.2.2 4 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_48 dsimp only [SelectiveSharedInputs.q358, SelectiveSharedInputs.q359, SelectiveSharedInputs.q360, SelectiveSharedInputs.q361, SelectiveSharedInputs.q362, SelectiveSharedInputs.q363, SelectiveSharedInputs.q364, SelectiveSharedInputs.q365, SelectiveSharedInputs.q366, SelectiveSharedInputs.q367, SelectiveSharedInputs.q368, SelectiveSharedInputs.q369, SelectiveSharedInputs.q370, SelectiveSharedInputs.q371, SelectiveSharedInputs.q374, SelectiveSharedInputs.q375, SelectiveSharedInputs.q376, SelectiveSharedInputs.q377, SelectiveSharedInputs.q378] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_49 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_49 X Y p r := by classical have hn := h.2.2.2.2 5 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_49 dsimp only [SelectiveSharedInputs.q383, SelectiveSharedInputs.q384, SelectiveSharedInputs.q385, SelectiveSharedInputs.q386, SelectiveSharedInputs.q387, SelectiveSharedInputs.q388, SelectiveSharedInputs.q389, SelectiveSharedInputs.q390, SelectiveSharedInputs.q391, SelectiveSharedInputs.q392, SelectiveSharedInputs.q393, SelectiveSharedInputs.q394, SelectiveSharedInputs.q395, SelectiveSharedInputs.q396, SelectiveSharedInputs.q397, SelectiveSharedInputs.q398, SelectiveSharedInputs.q399, SelectiveSharedInputs.q400, SelectiveSharedInputs.q401, SelectiveSharedInputs.q402, SelectiveSharedInputs.q403, SelectiveSharedInputs.q404, SelectiveSharedInputs.q405, SelectiveSharedInputs.q406] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_50 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_50 X Y p r := by classical have hn := h.2.2.2.2 5 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_50 dsimp only [SelectiveSharedInputs.q383, SelectiveSharedInputs.q384, SelectiveSharedInputs.q385, SelectiveSharedInputs.q386, SelectiveSharedInputs.q387, SelectiveSharedInputs.q388, SelectiveSharedInputs.q389, SelectiveSharedInputs.q390, SelectiveSharedInputs.q391, SelectiveSharedInputs.q392, SelectiveSharedInputs.q393, SelectiveSharedInputs.q394, SelectiveSharedInputs.q395, SelectiveSharedInputs.q396, SelectiveSharedInputs.q397, SelectiveSharedInputs.q398, SelectiveSharedInputs.q399, SelectiveSharedInputs.q400, SelectiveSharedInputs.q401, SelectiveSharedInputs.q402, SelectiveSharedInputs.q403, SelectiveSharedInputs.q404, SelectiveSharedInputs.q405, SelectiveSharedInputs.q406, SelectiveSharedInputs.q407] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_51 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_51 X Y p r := by classical have hn := h.2.2.2.2 5 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_51 dsimp only [SelectiveSharedInputs.q383, SelectiveSharedInputs.q384, SelectiveSharedInputs.q385, SelectiveSharedInputs.q386, SelectiveSharedInputs.q387, SelectiveSharedInputs.q388, SelectiveSharedInputs.q389, SelectiveSharedInputs.q390, SelectiveSharedInputs.q391, SelectiveSharedInputs.q392, SelectiveSharedInputs.q393, SelectiveSharedInputs.q394, SelectiveSharedInputs.q395, SelectiveSharedInputs.q396, SelectiveSharedInputs.q399, SelectiveSharedInputs.q400, SelectiveSharedInputs.q401, SelectiveSharedInputs.q402, SelectiveSharedInputs.q403] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_52 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_52 X Y p r := by classical have hn := h.2.2.2.2 1 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_52 dsimp only [SelectiveSharedInputs.q408, SelectiveSharedInputs.q409, SelectiveSharedInputs.q410, SelectiveSharedInputs.q411, SelectiveSharedInputs.q412, SelectiveSharedInputs.q413, SelectiveSharedInputs.q414, SelectiveSharedInputs.q415, SelectiveSharedInputs.q416, SelectiveSharedInputs.q417, SelectiveSharedInputs.q418, SelectiveSharedInputs.q515, SelectiveSharedInputs.q516, SelectiveSharedInputs.q517, SelectiveSharedInputs.q518, SelectiveSharedInputs.q519, SelectiveSharedInputs.q424, SelectiveSharedInputs.q425, SelectiveSharedInputs.q426, SelectiveSharedInputs.q520, SelectiveSharedInputs.q521, SelectiveSharedInputs.q522, SelectiveSharedInputs.q523, SelectiveSharedInputs.q524] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_53 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_53 X Y p r := by classical have hn := h.2.2.2.2 1 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_53 dsimp only [SelectiveSharedInputs.q408, SelectiveSharedInputs.q409, SelectiveSharedInputs.q410, SelectiveSharedInputs.q411, SelectiveSharedInputs.q412, SelectiveSharedInputs.q413, SelectiveSharedInputs.q414, SelectiveSharedInputs.q415, SelectiveSharedInputs.q416, SelectiveSharedInputs.q417, SelectiveSharedInputs.q418, SelectiveSharedInputs.q515, SelectiveSharedInputs.q516, SelectiveSharedInputs.q517, SelectiveSharedInputs.q518, SelectiveSharedInputs.q519, SelectiveSharedInputs.q424, SelectiveSharedInputs.q425, SelectiveSharedInputs.q426, SelectiveSharedInputs.q520, SelectiveSharedInputs.q521, SelectiveSharedInputs.q522, SelectiveSharedInputs.q523, SelectiveSharedInputs.q524, SelectiveSharedInputs.q525] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_54 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_54 X Y p r := by classical have hn := h.2.2.2.2 1 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_54 dsimp only [SelectiveSharedInputs.q408, SelectiveSharedInputs.q409, SelectiveSharedInputs.q410, SelectiveSharedInputs.q411, SelectiveSharedInputs.q412, SelectiveSharedInputs.q413, SelectiveSharedInputs.q414, SelectiveSharedInputs.q415, SelectiveSharedInputs.q416, SelectiveSharedInputs.q417, SelectiveSharedInputs.q418, SelectiveSharedInputs.q515, SelectiveSharedInputs.q516, SelectiveSharedInputs.q517, SelectiveSharedInputs.q424, SelectiveSharedInputs.q425, SelectiveSharedInputs.q426, SelectiveSharedInputs.q520, SelectiveSharedInputs.q521] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_55 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_55 X Y p r := by classical have hn := h.2.2.2.2 2 (by norm_num) have hs := hn.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_55 dsimp only [SelectiveSharedInputs.q433, SelectiveSharedInputs.q434, SelectiveSharedInputs.q435, SelectiveSharedInputs.q436, SelectiveSharedInputs.q437, SelectiveSharedInputs.q438, SelectiveSharedInputs.q439, SelectiveSharedInputs.q440, SelectiveSharedInputs.q441, SelectiveSharedInputs.q442, SelectiveSharedInputs.q443, SelectiveSharedInputs.q444, SelectiveSharedInputs.q445, SelectiveSharedInputs.q446, SelectiveSharedInputs.q447, SelectiveSharedInputs.q448, SelectiveSharedInputs.q449, SelectiveSharedInputs.q450, SelectiveSharedInputs.q451, SelectiveSharedInputs.q452, SelectiveSharedInputs.q453, SelectiveSharedInputs.q454] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_56 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_56 X Y p r := by classical have hn := h.2.2.2.2 2 (by norm_num) have hs := hn.2.1 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_56 dsimp only [SelectiveSharedInputs.q433, SelectiveSharedInputs.q434, SelectiveSharedInputs.q435, SelectiveSharedInputs.q436, SelectiveSharedInputs.q437, SelectiveSharedInputs.q438, SelectiveSharedInputs.q439, SelectiveSharedInputs.q440, SelectiveSharedInputs.q441, SelectiveSharedInputs.q442, SelectiveSharedInputs.q443, SelectiveSharedInputs.q444, SelectiveSharedInputs.q445, SelectiveSharedInputs.q446, SelectiveSharedInputs.q447, SelectiveSharedInputs.q448, SelectiveSharedInputs.q449, SelectiveSharedInputs.q450, SelectiveSharedInputs.q451, SelectiveSharedInputs.q452, SelectiveSharedInputs.q453, SelectiveSharedInputs.q454, SelectiveSharedInputs.q455] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_57 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_57 X Y p r := by classical have hn := h.2.2.2.2 2 (by norm_num) have hs := hn.2.2 simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_57 dsimp only [SelectiveSharedInputs.q433, SelectiveSharedInputs.q434, SelectiveSharedInputs.q435, SelectiveSharedInputs.q436, SelectiveSharedInputs.q437, SelectiveSharedInputs.q438, SelectiveSharedInputs.q439, SelectiveSharedInputs.q440, SelectiveSharedInputs.q441, SelectiveSharedInputs.q442, SelectiveSharedInputs.q443, SelectiveSharedInputs.q444, SelectiveSharedInputs.q447, SelectiveSharedInputs.q448, SelectiveSharedInputs.q449, SelectiveSharedInputs.q450, SelectiveSharedInputs.q451] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs def raw_input_58 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : ClosureRawHypothesis5 true X Y p r) : input_58 X Y p r := by classical have hn := h.2.2.2.2 0 (by norm_num) have hs := hn simp only [closureNodeConstraint5, closureNodeAvailable, closureNodeTrial, closureNodeType, closureNodeFour, closureNodeThree, closureLossFour, closureLossThree, closureNode, normalizedStateValid, normalizedTrialValue, normalizedProfileTrial_left, normalizedProfileValid, normalizedProfileLower, normalizedDelta, normalizedLossValue, normalizedDeficit, normalizedParityFour, normalizedParityThree, normalizedPowerCoordinate, closureGamma_zero, closureGamma_one, closureIndicator_cast, closureIndicator_natCast, max_def', ↓reduceIte, Nat.reduceEqDiff, Bool.false_eq_true, Bool.true_eq_false, iff_true, iff_false, ite_not, true_and, false_and, Nat.reduceLeDiff] at hs unfold input_58 dsimp only [SelectiveSharedInputs.q526, SelectiveSharedInputs.q457, SelectiveSharedInputs.q458, SelectiveSharedInputs.q459, SelectiveSharedInputs.q460, SelectiveSharedInputs.q461, SelectiveSharedInputs.q462, SelectiveSharedInputs.q463, SelectiveSharedInputs.q464, SelectiveSharedInputs.q527, SelectiveSharedInputs.q528, SelectiveSharedInputs.q529, SelectiveSharedInputs.q530, SelectiveSharedInputs.q531, SelectiveSharedInputs.q470, SelectiveSharedInputs.q471, SelectiveSharedInputs.q472, SelectiveSharedInputs.q532, SelectiveSharedInputs.q533, SelectiveSharedInputs.q534, SelectiveSharedInputs.q535, SelectiveSharedInputs.q536] norm_num only [closureIndicator_cast, closureIndicator_natCast, mul_assoc, mul_comm, mul_left_comm, div_eq_mul_inv, one_mul, mul_one, iff_true, iff_false, ite_not, true_and, false_and, ite_true, ite_false, closureCap_simplify] at hs ⊢ exact hs end ClosureOriginalInputs1 end PolicyCombinatorialFront_PolicyClosureInputsSelectivePair end PolicySubmissionPart0 /- Component ClosureSemantics; SHA256 e1a16bfa77026db4e832a66d12e20301386e1e9ab7eacf1955630edd6e7c254e. -/ section PolicySubmissionPart1 /- Typed interpretation of a finite arithmetic and Boolean expression DAG. -/ namespace ClosureSemantics structure Value where b : Bool z : Int q : Rat def zeroValue : Value := ⟨false, 0, 0⟩ def boolValue (b : Bool) : Value := ⟨b, 0, 0⟩ def intValue (z : Int) : Value := ⟨false, z, 0⟩ def ratValue (q : Rat) : Value := ⟨false, 0, q⟩ abbrev Valuation := Nat → Value inductive Op where | input : Nat → Op | qConst : Rat → Op | zConst : Int → Op | bConst : Bool → Op | alias | bNot | bOr | bAnd | bEq | ite | qEq | zEq | qLe | zLe | qLt | zLt | qAdd | zAdd | qMul | zMul | qNeg | zNeg | qSub | zSub | qDiv structure Node where op : Op children : List Nat def evalOp (input : Valuation) : Op → List Value → Value | .input k, _ => input k | .qConst c, _ => ratValue c | .zConst c, _ => intValue c | .bConst c, _ => boolValue c | .alias, [a] => a | .bNot, [a] => boolValue (!a.b) | .bOr, xs => boolValue ((xs.map Value.b).any id) | .bAnd, xs => boolValue ((xs.map Value.b).all id) | .bEq, [a, b] => boolValue (a.b == b.b) | .ite, [c, a, b] => if c.b then a else b | .qEq, [a, b] => boolValue (decide (a.q = b.q)) | .zEq, [a, b] => boolValue (decide (a.z = b.z)) | .qLe, [a, b] => boolValue (decide (a.q ≤ b.q)) | .zLe, [a, b] => boolValue (decide (a.z ≤ b.z)) | .qLt, [a, b] => boolValue (decide (a.q < b.q)) | .zLt, [a, b] => boolValue (decide (a.z < b.z)) | .qAdd, a :: rest => ratValue ((rest.map Value.q).foldl (· + ·) a.q) | .zAdd, a :: rest => intValue ((rest.map Value.z).foldl (· + ·) a.z) | .qMul, a :: rest => ratValue ((rest.map Value.q).foldl (· * ·) a.q) | .zMul, a :: rest => intValue ((rest.map Value.z).foldl (· * ·) a.z) | .qAdd, [] => ratValue 0 | .zAdd, [] => intValue 0 | .qMul, [] => ratValue 1 | .zMul, [] => intValue 1 | .qNeg, [a] => ratValue (-a.q) | .zNeg, [a] => intValue (-a.z) | .qSub, a :: rest => ratValue ((rest.map Value.q).foldl (· - ·) a.q) | .zSub, a :: rest => intValue ((rest.map Value.z).foldl (· - ·) a.z) | .qDiv, [a, b] => ratValue (a.q / b.q) | _, _ => zeroValue def evalNode (input values : Valuation) (node : Node) : Value := evalOp input node.op (node.children.map values) def evalNode_congr (input values other : Valuation) (node : Node) (h : ∀ j ∈ node.children, values j = other j) : evalNode input values node = evalNode input other node := by unfold evalNode congr 1 exact List.map_congr_left h def interpret (program : Nat → Node) (input : Valuation) : Valuation := Nat.lt_wfRel.wf.fix fun i previous => evalNode input (fun j => if h : j < i then previous j h else zeroValue) (program i) def interpret_eq (program : Nat → Node) (input : Valuation) (i : Nat) (h : ∀ j ∈ (program i).children, j < i) : interpret program input i = evalNode input (interpret program input) (program i) := by rw [interpret, WellFounded.fix_eq] apply evalNode_congr intro j hj rw [dif_pos (h j hj)] def Equations (program : Nat → Node) (input values : Valuation) : Prop := ∀ i, values i = evalNode input values (program i) def interpret_equations (program : Nat → Node) (input : Valuation) (h : ∀ i, ∀ j ∈ (program i).children, j < i) : Equations program input (interpret program input) := by intro i exact interpret_eq program input i (h i) end ClosureSemantics end PolicySubmissionPart1 /- Component PolicyLRATDirect; SHA256 37d7c27b1ff433e53e758a9ad45ecd8daeefdb13a1e07648e90ae75a365de8ec. -/ section PolicySubmissionPart2 /- Trusted list LRAT checker with directly constructed clauses; no hash-map parser. -/ namespace Bounty open Std.Sat Std.Tactic.BVDecide.LRAT Std.Tactic.BVDecide.LRAT.Internal end Bounty end PolicySubmissionPart2 /- Component PolicyLRATList; SHA256 b1512bf254baf600e187f39000a1e6c91327a13c2dfa60c86b4709aa613492a7. -/ section PolicySubmissionPart3 /- Transparent list-based LRAT inputs, retaining the trusted checker and its soundness. -/ namespace Bounty open Std.Sat Std.Tactic.BVDecide.LRAT Std.Tactic.BVDecide.LRAT.Internal end Bounty end PolicySubmissionPart3 /- Component PolicyLRATSemantics; SHA256 99246fc0f7154a56586c35576a362be2d7249e5f09c14d0d7e7d33ac47795384. -/ section PolicySubmissionPart4 /- Propositional semantics of the transparent signed-clause input representation. -/ namespace Bounty open Std.Sat Std.Tactic.BVDecide.LRAT Std.Tactic.BVDecide.LRAT.Internal def policySignedHolds (P : Nat → Prop) (z : Int) : Prop := if 0 < z then P z.natAbs else ¬ P z.natAbs def policySignedClauseHolds (P : Nat → Prop) (c : List Int) : Prop := ∃ z ∈ c, policySignedHolds P z end Bounty end PolicySubmissionPart4 /- Component ClosureCircuit; SHA256 9543e2ea042f895ae0affd1cbff0a127734830a60c82caefd6802586b4e7ecdf. -/ section PolicySubmissionPart5 /- Ordinary Tseitin-clause soundness for Boolean gates and typed DAG nodes. -/ namespace ClosureCircuit open Bounty inductive Gate where | fixedValue : Bool → Gate | neg : Nat → Gate | disj : List Nat → Gate | conj : List Nat → Gate | iff : Nat → Nat → Gate | alias : Nat → Gate | ite : Nat → Nat → Nat → Gate def Gate.inputs : Gate → List Nat | .fixedValue _ => [] | .neg a | .alias a => [a] | .disj xs | .conj xs => xs | .iff a b => [a, b] | .ite c a b => [c, a, b] def Gate.eval (B : Nat → Bool) : Gate → Bool | .fixedValue b => b | .neg a => !B a | .disj xs => xs.any B | .conj xs => xs.all B | .iff a b => B a == B b | .alias a => B a | .ite c a b => if B c then B a else B b def Gate.clauses (v : Nat) : Gate → List (List Int) | .fixedValue true => [[v]] | .fixedValue false => [[-(v : Int)]] | .neg a => [[v, a], [-(v : Int), -(a : Int)]] | .disj xs => (-(v : Int) :: xs.map (fun (a : Nat) => (a : Int))) :: xs.map (fun (a : Nat) => [(v : Int), -(a : Int)]) | .conj xs => ((v : Int) :: xs.map (fun (a : Nat) => -(a : Int))) :: xs.map (fun (a : Nat) => [-(v : Int), (a : Int)]) | .iff a b => [[-(v : Int), -(a : Int), b], [-(v : Int), a, -(b : Int)], [v, a, b], [v, -(a : Int), -(b : Int)]] | .alias a => [[-(v : Int), a], [v, -(a : Int)]] | .ite c a b => [[-(c : Int), -(a : Int), v], [-(c : Int), a, -(v : Int)], [c, -(b : Int), v], [c, b, -(v : Int)]] def Holds (B : Nat → Bool) (clause : List Int) : Prop := policySignedClauseHolds (fun i => B i = true) clause def signed_pos (B : Nat → Bool) {a : Nat} (ha : 0 < a) : policySignedHolds (fun i => B i = true) (a : Int) ↔ B a = true := by simp [policySignedHolds, Nat.ne_of_gt ha] def signed_neg (B : Nat → Bool) (a : Nat) : policySignedHolds (fun i => B i = true) (-(a : Int)) ↔ B a = false := by cases hb : B a <;> simp [policySignedHolds, hb] def holds_nil (B : Nat → Bool) : ¬ Holds B [] := by simp [Holds, policySignedClauseHolds] def holds_cons (B : Nat → Bool) (z : Int) (zs : List Int) : Holds B (z :: zs) ↔ policySignedHolds (fun i => B i = true) z ∨ Holds B zs := by simp [Holds, policySignedClauseHolds] def holds_map_pos (B : Nat → Bool) (xs : List Nat) (hpos : ∀ a ∈ xs, 0 < a) : Holds B (xs.map (fun (a : Nat) => (a : Int))) ↔ ∃ a ∈ xs, B a = true := by change (∃ z ∈ xs.map (fun (a : Nat) => (a : Int)), policySignedHolds (fun i => B i = true) z) ↔ _ constructor · rintro ⟨z, hz, hv⟩ obtain ⟨a, ha, rfl⟩ : ∃ a ∈ xs, (a : Int) = z := List.mem_map.mp hz exact ⟨a, ha, (signed_pos B (hpos a ha)).mp hv⟩ · rintro ⟨a, ha, hv⟩ exact ⟨(a : Int), List.mem_map.mpr ⟨a, ha, rfl⟩, (signed_pos B (hpos a ha)).mpr hv⟩ def holds_map_neg (B : Nat → Bool) (xs : List Nat) : Holds B (xs.map (fun (a : Nat) => -(a : Int))) ↔ ∃ a ∈ xs, B a = false := by change (∃ z ∈ xs.map (fun (a : Nat) => -(a : Int)), policySignedHolds (fun i => B i = true) z) ↔ _ constructor · rintro ⟨z, hz, hv⟩ obtain ⟨a, ha, rfl⟩ : ∃ a ∈ xs, -(a : Int) = z := List.mem_map.mp hz exact ⟨a, ha, (signed_neg B a).mp hv⟩ · rintro ⟨a, ha, hv⟩ exact ⟨-(a : Int), List.mem_map.mpr ⟨a, ha, rfl⟩, (signed_neg B a).mpr hv⟩ def gate_clauses_sound (B : Nat → Bool) (g : Gate) (v : Nat) (hv : 0 < v) (hp : ∀ a ∈ g.inputs, 0 < a) (he : B v = g.eval B) : ∀ clause ∈ g.clauses v, Holds B clause := by cases g with | fixedValue b => cases b <;> simp [Gate.clauses, Gate.eval, holds_cons, holds_nil, signed_pos B hv, signed_neg, he] | neg a => have ha : 0 < a := hp a (by simp [Gate.inputs]) simp only [Gate.clauses, List.mem_cons, List.not_mem_nil, or_false] intro clause hc rcases hc with rfl | rfl <;> simp only [holds_cons, holds_nil, signed_pos B hv, signed_pos B ha, signed_neg, or_false] <;> cases h1 : B v <;> cases h2 : B a <;> simp_all [Gate.eval] | «alias» a => have ha : 0 < a := hp a (by simp [Gate.inputs]) simp only [Gate.clauses, List.mem_cons, List.not_mem_nil, or_false] intro clause hc rcases hc with rfl | rfl <;> simp only [holds_cons, holds_nil, signed_pos B hv, signed_pos B ha, signed_neg, or_false] <;> cases h1 : B v <;> cases h2 : B a <;> simp_all [Gate.eval] | iff a b => have ha : 0 < a := hp a (by simp [Gate.inputs]) have hb : 0 < b := hp b (by simp [Gate.inputs]) simp only [Gate.clauses, List.mem_cons, List.not_mem_nil, or_false] intro clause hc rcases hc with rfl | rfl | rfl | rfl <;> simp only [holds_cons, holds_nil, signed_pos B hv, signed_pos B ha, signed_pos B hb, signed_neg, or_false] <;> cases h1 : B v <;> cases h2 : B a <;> cases h3 : B b <;> simp_all [Gate.eval] | ite c a b => have hc : 0 < c := hp c (by simp [Gate.inputs]) have ha : 0 < a := hp a (by simp [Gate.inputs]) have hb : 0 < b := hp b (by simp [Gate.inputs]) simp only [Gate.clauses, List.mem_cons, List.not_mem_nil, or_false] intro clause hcl rcases hcl with rfl | rfl | rfl | rfl <;> simp only [holds_cons, holds_nil, signed_pos B hv, signed_pos B ha, signed_pos B hb, signed_pos B hc, signed_neg, or_false] <;> cases h1 : B v <;> cases h2 : B c <;> cases h3 : B a <;> cases h4 : B b <;> simp_all [Gate.eval] | disj xs => change B v = xs.any B at he intro clause hc rcases List.mem_cons.mp hc with rfl | hc · rw [holds_cons, signed_neg, holds_map_pos B xs hp] cases h : B v with | false => exact Or.inl rfl | true => right exact List.any_eq_true.mp (by simpa only [h] using he.symm) · obtain ⟨a, ha, rfl⟩ := List.mem_map.mp hc simp only [holds_cons, holds_nil, signed_pos B hv, signed_neg, or_false] cases h : B a with | false => exact Or.inr rfl | true => left exact he.trans (List.any_eq_true.mpr ⟨a, ha, h⟩) | conj xs => change B v = xs.all B at he intro clause hc rcases List.mem_cons.mp hc with rfl | hc · rw [holds_cons, signed_pos B hv, holds_map_neg] cases h : B v with | true => exact Or.inl rfl | false => right obtain ⟨a, ha, hn⟩ := List.all_eq_false.mp (by simpa only [h] using he.symm) exact ⟨a, ha, by cases hb : B a <;> simp_all⟩ · obtain ⟨a, ha, rfl⟩ := List.mem_map.mp hc simp only [holds_cons, holds_nil, signed_neg, signed_pos B (hp a ha), or_false] cases h : B v with | false => exact Or.inl rfl | true => right exact List.all_eq_true.mp (by simpa only [h] using he.symm) a ha def Gate.toNode : Gate → ClosureSemantics.Node | .fixedValue b => ⟨.bConst b, []⟩ | .neg a => ⟨.bNot, [a]⟩ | .disj xs => ⟨.bOr, xs⟩ | .conj xs => ⟨.bAnd, xs⟩ | .iff a b => ⟨.bEq, [a, b]⟩ | .alias a => ⟨.alias, [a]⟩ | .ite c a b => ⟨.ite, [c, a, b]⟩ def evalNode_toNode (input values : ClosureSemantics.Valuation) (g : Gate) : (ClosureSemantics.evalNode input values g.toNode).b = g.eval (fun i => (values i).b) := by cases g <;> simp [Gate.toNode, Gate.eval, ClosureSemantics.evalNode, ClosureSemantics.evalOp, ClosureSemantics.boolValue, List.map_map, List.any_map, List.all_map, Function.comp_def] split_ifs <;> rfl def Gate.rename (σ : Nat → Nat) : Gate → Gate | .fixedValue b => .fixedValue b | .neg a => .neg (σ a) | .disj xs => .disj (xs.map σ) | .conj xs => .conj (xs.map σ) | .iff a b => .iff (σ a) (σ b) | .alias a => .alias (σ a) | .ite c a b => .ite (σ c) (σ a) (σ b) def Gate.inputs_rename (σ : Nat → Nat) (g : Gate) : (g.rename σ).inputs = g.inputs.map σ := by cases g <;> rfl def Gate.eval_rename (B : Nat → Bool) (σ : Nat → Nat) (g : Gate) : (g.rename σ).eval B = g.eval (fun i => B (σ i)) := by cases g <;> simp [Gate.rename, Gate.eval, List.any_map, List.all_map, Function.comp_def] def Gate.eval_congr (g : Gate) (B C : Nat → Bool) (h : ∀ i ∈ g.inputs, B i = C i) : g.eval B = g.eval C := by cases g with | fixedValue b => rfl | neg a => simp only [Gate.eval, h a (by simp [Gate.inputs])] | «alias» a => exact h a (by simp [Gate.inputs]) | iff a b => simp only [Gate.eval, h a (by simp [Gate.inputs]), h b (by simp [Gate.inputs])] | ite c a b => simp only [Gate.eval, h c (by simp [Gate.inputs]), h a (by simp [Gate.inputs]), h b (by simp [Gate.inputs])] | disj xs => have hm : xs.map B = xs.map C := List.map_congr_left h simpa [Gate.eval, List.any_map] using congrArg (fun l : List Bool => l.any id) hm | conj xs => have hm : xs.map B = xs.map C := List.map_congr_left h simpa [Gate.eval, List.all_map] using congrArg (fun l : List Bool => l.all id) hm def node_clauses_sound (input values : ClosureSemantics.Valuation) (B : Nat → Bool) (σ : Nat → Nat) (g : Gate) (out : Nat) (he : values out = ClosureSemantics.evalNode input values g.toNode) (hout : B (σ out) = (values out).b) (hinputs : ∀ a ∈ g.inputs, B (σ a) = (values a).b) (hpos_out : 0 < σ out) (hpos_inputs : ∀ a ∈ g.inputs, 0 < σ a) : ∀ clause ∈ (g.rename σ).clauses (σ out), Holds B clause := by apply gate_clauses_sound B (g.rename σ) (σ out) hpos_out · intro a ha rw [Gate.inputs_rename] at ha obtain ⟨j, hj, rfl⟩ := List.mem_map.mp ha exact hpos_inputs j hj · rw [Gate.eval_rename, hout] calc (values out).b = (ClosureSemantics.evalNode input values g.toNode).b := congrArg ClosureSemantics.Value.b he _ = g.eval (fun i => (values i).b) := evalNode_toNode input values g _ = g.eval (fun i => B (σ i)) := (Gate.eval_congr g _ _ hinputs).symm end ClosureCircuit end PolicySubmissionPart5 /- Component ClosureCircuitCheck; SHA256 5b2ebec0cdd5335935033a5233c80f9ae3d0d76c440a686f60b381c5ecd6f9c2. -/ section PolicySubmissionPart6 /- Checked membership of actual clauses among a typed node's Tseitin clauses. -/ namespace ClosureCircuit open ClosureSemantics Bounty def gateOf : (node : Node) → Option {g : Gate // node = g.toNode} | ⟨.bConst b, []⟩ => some ⟨.fixedValue b, rfl⟩ | ⟨.bNot, [a]⟩ => some ⟨.neg a, rfl⟩ | ⟨.bOr, xs⟩ => some ⟨.disj xs, rfl⟩ | ⟨.bAnd, xs⟩ => some ⟨.conj xs, rfl⟩ | ⟨.bEq, [a, b]⟩ => some ⟨.iff a b, rfl⟩ | ⟨.alias, [a]⟩ => some ⟨.alias a, rfl⟩ | ⟨.ite, [c, a, b]⟩ => some ⟨.ite c a b, rfl⟩ | _ => none def clauseSubset (source target : List Int) : Bool := source.all (fun lit => decide (lit ∈ target)) def clauseSubset_sound (P : Nat → Prop) (source target : List Int) (hc : clauseSubset source target = true) (hs : policySignedClauseHolds P source) : policySignedClauseHolds P target := by obtain ⟨lit, hlit, hv⟩ := hs have hm : ∀ z ∈ source, z ∈ target := by simpa [clauseSubset] using hc exact ⟨lit, hm lit hlit, hv⟩ def checkGateClause (program : Nat → Node) (out : Nat) (clause : List Int) : Bool := match gateOf (program out) with | none => false | some g => ((g.val.rename Nat.succ).clauses (out + 1)).any (fun c => clauseSubset c clause) def checkGateClause_sound (program : Nat → Node) (input values : Valuation) (he : Equations program input values) (out : Nat) (clause : List Int) (hc : checkGateClause program out clause = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) clause := by cases hg : gateOf (program out) with | none => simp [checkGateClause, hg] at hc | some g => have hmem : ∃ c ∈ (g.val.rename Nat.succ).clauses (out + 1), clauseSubset c clause = true := by simpa only [checkGateClause, hg, List.any_eq_true] using hc obtain ⟨c, hcm, hsub⟩ := hmem apply clauseSubset_sound _ c clause hsub apply node_clauses_sound input values (fun v => (values (v - 1)).b) Nat.succ g.val out _ _ _ (Nat.succ_pos _) (fun _ _ => Nat.succ_pos _) c hcm · rw [← g.property] exact he out · simp · intro a ha simp def checkCircuitEntry (program : Nat → Node) (clauses : Nat → List Int) : List Nat → Bool | [clauseId, out] => checkGateClause program out (clauses clauseId) | _ => false def checkCircuitEntry_sound (program : Nat → Node) (input values : Valuation) (he : Equations program input values) (clauses : Nat → List Int) (entry : List Nat) (hc : checkCircuitEntry program clauses entry = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (clauses (entry.headD 0)) := by cases entry with | nil => simp [checkCircuitEntry] at hc | cons clauseId rest => cases rest with | nil => simp [checkCircuitEntry] at hc | cons out tail => cases tail with | cons a as => simp [checkCircuitEntry] at hc | nil => exact checkGateClause_sound program input values he out (clauses clauseId) hc end ClosureCircuit end PolicySubmissionPart6 /- Component ClosureCircuitBlock; SHA256 8ce5aaa2c9bc1a33c0ca7f1c101abea44ce96741ee35c3b4e773cc7c8ddf0f83. -/ section PolicySubmissionPart7 namespace ClosureCircuit open ClosureSemantics Bounty def checkCircuitBlock (program : ℕ → Node) (clauses : ℕ → List ℤ) (records : ℕ → List ℕ) (start count : ℕ) : Bool := (List.range count).all fun i => checkCircuitEntry program clauses (records (start + i)) def checkCircuitBlock_sound (program : ℕ → Node) (input values : Valuation) (he : Equations program input values) (clauses : ℕ → List ℤ) (records : ℕ → List ℕ) (start count : ℕ) (hc : checkCircuitBlock program clauses records start count = true) (i : ℕ) (hi : i < count) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (clauses ((records (start + i)).headD 0)) := by have h : ∀ j ∈ List.range count, checkCircuitEntry program clauses (records (start + j)) = true := by simpa only [checkCircuitBlock, List.all_eq_true] using hc exact checkCircuitEntry_sound program input values he clauses (records (start + i)) (h i (List.mem_range.mpr hi)) end ClosureCircuit end PolicySubmissionPart7 /- Component PolicyLinearCertificate; SHA256 cf77a260405b54f95bd0f1310c3ffdf7b90b25d5e0e8eb394123a4f5a147618d. -/ section PolicySubmissionPart8 /- A sparse affine linear certificate checker, with ordinary kernel soundness. -/ namespace ClosureLinear abbrev Coefficients := List (ℕ × ℚ) def evalCoefficients (x : ℕ → ℚ) : Coefficients → ℚ | [] => 0 | (i, q) :: xs => q * x i + evalCoefficients x xs def insertCoefficient (a : ℕ × ℚ) : Coefficients → Coefficients | [] => [a] | b :: bs => if a.1 = b.1 then (a.1, a.2 + b.2) :: bs else b :: insertCoefficient a bs def addCoefficients : Coefficients → Coefficients → Coefficients | [], ys => ys | a :: xs, ys => insertCoefficient a (addCoefficients xs ys) def scaleCoefficients (q : ℚ) (xs : Coefficients) : Coefficients := xs.map fun a => (a.1, q * a.2) def eval_insertCoefficient (x : ℕ → ℚ) (a : ℕ × ℚ) (xs : Coefficients) : evalCoefficients x (insertCoefficient a xs) = a.2 * x a.1 + evalCoefficients x xs := by induction xs with | nil => simp [insertCoefficient, evalCoefficients] | cons b bs ih => simp only [insertCoefficient] split_ifs with h · simp only [evalCoefficients, h] ring · simp only [evalCoefficients, ih] ring def eval_addCoefficients (x : ℕ → ℚ) (xs ys : Coefficients) : evalCoefficients x (addCoefficients xs ys) = evalCoefficients x xs + evalCoefficients x ys := by induction xs with | nil => simp [addCoefficients, evalCoefficients] | cons a xs ih => simp only [addCoefficients, eval_insertCoefficient, ih, evalCoefficients] ring def eval_scaleCoefficients (x : ℕ → ℚ) (q : ℚ) (xs : Coefficients) : evalCoefficients x (scaleCoefficients q xs) = q * evalCoefficients x xs := by induction xs with | nil => simp [scaleCoefficients, evalCoefficients] | cons a xs ih => simp only [scaleCoefficients, List.map_cons, evalCoefficients] at * rw [ih] ring structure Affine where coefficients : Coefficients fixedValue : ℚ def Affine.eval (f : Affine) (x : ℕ → ℚ) : ℚ := f.fixedValue + evalCoefficients x f.coefficients def Affine.zero : Affine := ⟨[], 0⟩ def Affine.add (f g : Affine) : Affine := ⟨addCoefficients f.coefficients g.coefficients, f.fixedValue + g.fixedValue⟩ def Affine.scale (q : ℚ) (f : Affine) : Affine := ⟨scaleCoefficients q f.coefficients, q * f.fixedValue⟩ def Affine.eval_zero (x : ℕ → ℚ) : Affine.zero.eval x = 0 := by simp [Affine.zero, Affine.eval, evalCoefficients] def Affine.eval_add (f g : Affine) (x : ℕ → ℚ) : (f.add g).eval x = f.eval x + g.eval x := by simp only [Affine.add, Affine.eval, eval_addCoefficients] ring def Affine.eval_scale (q : ℚ) (f : Affine) (x : ℕ → ℚ) : (f.scale q).eval x = q * f.eval x := by simp only [Affine.scale, Affine.eval, eval_scaleCoefficients] ring structure Row where form : Affine strict : Bool def Row.Holds (r : Row) (x : ℕ → ℚ) : Prop := if r.strict then 0 < r.form.eval x else 0 ≤ r.form.eval x def Row.nonneg (r : Row) (x : ℕ → ℚ) (h : r.Holds x) : 0 ≤ r.form.eval x := by cases hs : r.strict <;> simp [Row.Holds, hs] at h · exact h · exact le_of_lt h def weightedSum : List (ℕ × Row) → Affine | [] => Affine.zero | (w, r) :: xs => (r.form.scale w).add (weightedSum xs) def hasStrict (xs : List (ℕ × Row)) : Bool := xs.any fun a => decide (0 < a.1) && a.2.strict def weightedSum_nonneg (xs : List (ℕ × Row)) (x : ℕ → ℚ) (h : ∀ a ∈ xs, a.2.Holds x) : 0 ≤ (weightedSum xs).eval x := by induction xs with | nil => simp [weightedSum, Affine.eval_zero] | cons a xs ih => have ha := (a.2.nonneg x (h a (List.mem_cons_self ..))) have hr := ih (fun b hb => h b (List.mem_cons_of_mem _ hb)) simpa [weightedSum, Affine.eval_add, Affine.eval_scale] using add_nonneg (mul_nonneg (Nat.cast_nonneg a.1) ha) hr def weightedSum_pos (xs : List (ℕ × Row)) (x : ℕ → ℚ) (h : ∀ a ∈ xs, a.2.Holds x) (hs : hasStrict xs = true) : 0 < (weightedSum xs).eval x := by induction xs with | nil => simp [hasStrict] at hs | cons a xs ih => have ha := h a (List.mem_cons_self ..) have hr : ∀ b ∈ xs, b.2.Holds x := fun b hb => h b (List.mem_cons_of_mem _ hb) have split : (0 < a.1 ∧ a.2.strict = true) ∨ hasStrict xs = true := by simpa [hasStrict, Bool.or_eq_true, Bool.and_eq_true] using hs rcases split with hfirst | hrest · have hp : 0 < a.2.form.eval x := by simpa [Row.Holds, hfirst.2] using ha have hw : (0 : ℚ) < a.1 := by exact_mod_cast hfirst.1 simpa [weightedSum, Affine.eval_add, Affine.eval_scale] using add_pos_of_pos_of_nonneg (mul_pos hw hp) (weightedSum_nonneg xs x hr) · have hp := ih hr hrest simpa [weightedSum, Affine.eval_add, Affine.eval_scale] using add_pos_of_nonneg_of_pos (mul_nonneg (Nat.cast_nonneg a.1) (a.2.nonneg x ha)) hp def zeroCoefficients (xs : Coefficients) : Bool := xs.all fun a => decide (a.2 = 0) def evalCoefficients_eq_zero (x : ℕ → ℚ) (xs : Coefficients) (h : zeroCoefficients xs = true) : evalCoefficients x xs = 0 := by induction xs with | nil => rfl | cons a xs ih => have hh : a.2 = 0 ∧ zeroCoefficients xs = true := by simpa [zeroCoefficients, Bool.and_eq_true] using h simp [evalCoefficients, hh.1, ih hh.2] def check (xs : List (ℕ × Row)) : Bool := let total := weightedSum xs zeroCoefficients total.coefficients && decide (total.fixedValue ≤ 0) && (decide (total.fixedValue < 0) || hasStrict xs) def check_sound (xs : List (ℕ × Row)) (x : ℕ → ℚ) (h : ∀ a ∈ xs, a.2.Holds x) (hc : check xs = true) : False := by have hparts : (zeroCoefficients (weightedSum xs).coefficients = true ∧ (weightedSum xs).fixedValue ≤ 0) ∧ ((weightedSum xs).fixedValue < 0 ∨ hasStrict xs = true) := by simpa [check, Bool.and_eq_true, Bool.or_eq_true] using hc have heval : (weightedSum xs).eval x = (weightedSum xs).fixedValue := by simp [Affine.eval, evalCoefficients_eq_zero x _ hparts.1.1] rcases hparts.2 with hnegative | hstrict · have hn := weightedSum_nonneg xs x h rw [heval] at hn exact (not_lt_of_ge hn) hnegative · have hp := weightedSum_pos xs x h hstrict rw [heval] at hp exact (not_lt_of_ge hparts.1.2) hp end ClosureLinear end PolicySubmissionPart8 /- Component PolicyLinearNormalization; SHA256 178c2708a3e3cf82eaa9b66fe146cea89e82a9599bee362a6d8c010f14b5c387. -/ section PolicySubmissionPart9 /- Verified arithmetic normalization used by reflected linear certificates. -/ namespace ClosureLinear open ClosureSemantics def Affine.const (q : ℚ) : Affine := ⟨[], q⟩ def Affine.variable (i : ℕ) : Affine := ⟨[(i, 1)], 0⟩ def Affine.neg (f : Affine) : Affine := f.scale (-1) def Affine.sub (f g : Affine) : Affine := f.add g.neg def Affine.eval_const (q : ℚ) (x : ℕ → ℚ) : (Affine.const q).eval x = q := by simp [Affine.const, Affine.eval, evalCoefficients] def Affine.eval_variable (i : ℕ) (x : ℕ → ℚ) : (Affine.variable i).eval x = x i := by simp [Affine.variable, Affine.eval, evalCoefficients] def Affine.eval_neg (f : Affine) (x : ℕ → ℚ) : f.neg.eval x = -f.eval x := by simp [Affine.neg, Affine.eval_scale] def Affine.eval_sub (f g : Affine) (x : ℕ → ℚ) : (f.sub g).eval x = f.eval x - g.eval x := by simp [Affine.sub, Affine.eval_add, Affine.eval_neg, sub_eq_add_neg] def Affine.eval_of_zeroCoefficients (f : Affine) (x : ℕ → ℚ) (h : zeroCoefficients f.coefficients = true) : f.eval x = f.fixedValue := by simp [Affine.eval, evalCoefficients_eq_zero x _ h] def Affine.mul? (f g : Affine) : Option Affine := if zeroCoefficients f.coefficients then some (g.scale f.fixedValue) else if zeroCoefficients g.coefficients then some (f.scale g.fixedValue) else none def Affine.div? (f g : Affine) : Option Affine := if zeroCoefficients g.coefficients then some (f.scale g.fixedValue⁻¹) else none def Affine.mul?_sound (f g out : Affine) (x : ℕ → ℚ) (h : f.mul? g = some out) : out.eval x = f.eval x * g.eval x := by unfold Affine.mul? at h split_ifs at h with hf hg · cases h rw [Affine.eval_scale, Affine.eval_of_zeroCoefficients f x hf] · cases h rw [Affine.eval_scale, Affine.eval_of_zeroCoefficients g x hg] ring def Affine.div?_sound (f g out : Affine) (x : ℕ → ℚ) (h : f.div? g = some out) : out.eval x = f.eval x / g.eval x := by unfold Affine.div? at h split_ifs at h with hg · cases h rw [Affine.eval_scale, Affine.eval_of_zeroCoefficients g x hg] simp [div_eq_mul_inv, mul_comm] def foldAdd (f : Affine) : List Affine → Affine | [] => f | g :: gs => foldAdd (f.add g) gs def foldSub (f : Affine) : List Affine → Affine | [] => f | g :: gs => foldSub (f.sub g) gs def foldMul (f : Affine) : List Affine → Option Affine | [] => some f | g :: gs => do let product ← f.mul? g foldMul product gs def eval_foldAdd (f : Affine) (fs : List Affine) (x : ℕ → ℚ) : (foldAdd f fs).eval x = (fs.map (fun g => g.eval x)).foldl (· + ·) (f.eval x) := by induction fs generalizing f with | nil => rfl | cons g gs ih => simp [foldAdd, ih, Affine.eval_add] def eval_foldSub (f : Affine) (fs : List Affine) (x : ℕ → ℚ) : (foldSub f fs).eval x = (fs.map (fun g => g.eval x)).foldl (· - ·) (f.eval x) := by induction fs generalizing f with | nil => rfl | cons g gs ih => simp [foldSub, ih, Affine.eval_sub] def eval_foldMul (f out : Affine) (fs : List Affine) (x : ℕ → ℚ) (h : foldMul f fs = some out) : out.eval x = (fs.map (fun g => g.eval x)).foldl (· * ·) (f.eval x) := by induction fs generalizing f with | nil => simpa [foldMul] using (congrArg (fun a => a.map (fun g => g.eval x)) h).symm | cons g gs ih => cases hm : f.mul? g with | none => simp [foldMul, hm] at h | some product => have hr : foldMul product gs = some out := by simpa [foldMul, hm] using h rw [ih product hr] simp [Affine.mul?_sound f g product x hm] def normalizeOp : Op → List Affine → Option Affine | .qConst q, _ => some (Affine.const q) | .zConst z, _ => some (Affine.const z) | .qAdd, [] | .zAdd, [] => some (Affine.const 0) | .qMul, [] | .zMul, [] => some (Affine.const 1) | .qAdd, f :: fs | .zAdd, f :: fs => some (foldAdd f fs) | .qSub, f :: fs | .zSub, f :: fs => some (foldSub f fs) | .qMul, f :: fs | .zMul, f :: fs => foldMul f fs | .qNeg, [f] | .zNeg, [f] => some f.neg | .qDiv, [f, g] => f.div? g | _, _ => none def evalNumbers : Op → List ℚ → Option ℚ | .qConst q, _ => some q | .zConst z, _ => some z | .qAdd, [] | .zAdd, [] => some 0 | .qMul, [] | .zMul, [] => some 1 | .qAdd, q :: qs | .zAdd, q :: qs => some (qs.foldl (· + ·) q) | .qSub, q :: qs | .zSub, q :: qs => some (qs.foldl (· - ·) q) | .qMul, q :: qs | .zMul, q :: qs => some (qs.foldl (· * ·) q) | .qNeg, [q] | .zNeg, [q] => some (-q) | .qDiv, [q, r] => some (q / r) | _, _ => none def normalizeOp_sound (op : Op) (fs : List Affine) (out : Affine) (x : ℕ → ℚ) (h : normalizeOp op fs = some out) : evalNumbers op (fs.map fun f => f.eval x) = some (out.eval x) := by fun_cases normalizeOp op fs <;> simp only [normalizeOp, evalNumbers, List.map_nil, List.map_cons, Option.some.injEq] at h ⊢ all_goals first | (cases h <;> simp [Affine.eval_const, Affine.eval_neg, eval_foldAdd, eval_foldSub]) | exact (eval_foldMul _ _ _ x h).symm | exact (Affine.div?_sound _ _ _ x h).symm def rationalOp : Op → Bool | .qConst _ | .qAdd | .qSub | .qMul | .qNeg | .qDiv => true | _ => false def integerOp : Op → Bool | .zConst _ | .zAdd | .zSub | .zMul | .zNeg => true | _ => false def intCast_foldl_add (xs : List ℤ) (a : ℤ) : ((xs.foldl (· + ·) a : ℤ) : ℚ) = (xs.map fun z => (z : ℚ)).foldl (· + ·) (a : ℚ) := by induction xs generalizing a with | nil => rfl | cons z zs ih => simpa using ih (a + z) def intCast_foldl_sub (xs : List ℤ) (a : ℤ) : ((xs.foldl (· - ·) a : ℤ) : ℚ) = (xs.map fun z => (z : ℚ)).foldl (· - ·) (a : ℚ) := by induction xs generalizing a with | nil => rfl | cons z zs ih => simpa using ih (a - z) def intCast_foldl_mul (xs : List ℤ) (a : ℤ) : ((xs.foldl (· * ·) a : ℤ) : ℚ) = (xs.map fun z => (z : ℚ)).foldl (· * ·) (a : ℚ) := by induction xs generalizing a with | nil => rfl | cons z zs ih => simpa using ih (a * z) def evalNumbers_rational (input : Valuation) (op : Op) (vs : List Value) (q : ℚ) (ho : rationalOp op = true) (h : evalNumbers op (vs.map Value.q) = some q) : (evalOp input op vs).q = q := by fun_cases evalOp input op vs <;> simp_all [rationalOp, evalOp, evalNumbers, ratValue, zeroValue] cases op <;> simp_all [rationalOp] all_goals cases vs with | nil => simp_all [evalNumbers] | cons a rest => cases rest with | nil => simp_all [evalNumbers] | cons b tail => cases tail <;> simp_all [evalNumbers] def evalNumbers_integer (input : Valuation) (op : Op) (vs : List Value) (q : ℚ) (ho : integerOp op = true) (h : evalNumbers op (vs.map fun v => (v.z : ℚ)) = some q) : ((evalOp input op vs).z : ℚ) = q := by fun_cases evalOp input op vs <;> simp_all [integerOp, evalOp, evalNumbers, intValue, zeroValue, intCast_foldl_add, intCast_foldl_sub, intCast_foldl_mul, List.map_map] all_goals first | (rw [List.flatMap_map, ← List.map_eq_flatMap]; exact h) | skip cases op <;> simp_all [integerOp] all_goals cases vs with | nil => simp_all [evalNumbers] | cons a rest => cases rest with | nil => simp_all [evalNumbers] | cons b tail => cases tail <;> simp_all [evalNumbers] def normalizeOp_rational_sound (input : Valuation) (op : Op) (fs : List Affine) (vs : List Value) (out : Affine) (x : ℕ → ℚ) (hvals : fs.map (fun f => f.eval x) = vs.map Value.q) (ho : rationalOp op = true) (h : normalizeOp op fs = some out) : out.eval x = (evalOp input op vs).q := by have hn := normalizeOp_sound op fs out x h rw [hvals] at hn exact (evalNumbers_rational input op vs _ ho hn).symm def normalizeOp_integer_sound (input : Valuation) (op : Op) (fs : List Affine) (vs : List Value) (out : Affine) (x : ℕ → ℚ) (hvals : fs.map (fun f => f.eval x) = vs.map fun v => (v.z : ℚ)) (ho : integerOp op = true) (h : normalizeOp op fs = some out) : out.eval x = ((evalOp input op vs).z : ℚ) := by have hn := normalizeOp_sound op fs out x h rw [hvals] at hn exact (evalNumbers_integer input op vs _ ho hn).symm end ClosureLinear end PolicySubmissionPart9 /- Component PolicyLinearDAG; SHA256 1f375409245a24265a43b10cca7e09610d1b0626a446f54083e3cdc44b8e343a. -/ section PolicySubmissionPart10 /- Checked affine normalization of finite arithmetic fragments of an expression DAG. -/ namespace ClosureLinear open ClosureSemantics def collect {α β : Type} (f : α → Option β) : List α → Option (List β) | [] => some [] | a :: as => do let b ← f a let bs ← collect f as pure (b :: bs) def collect_sound {α β γ : Type} (f : α → Option β) (g : β → γ) (e : α → γ) (h : ∀ a b, f a = some b → g b = e a) (as : List α) (bs : List β) (hc : collect f as = some bs) : bs.map g = as.map e := by induction as generalizing bs with | nil => simpa [collect] using hc.symm | cons a as ih => cases ha : f a with | none => simp [collect, ha] at hc | some b => cases hr : collect f as with | none => simp [collect, ha, hr] at hc | some rest => have hb : b :: rest = bs := by simpa [collect, ha, hr] using hc subst bs simp only [List.map_cons, h a b ha, ih rest hr] def closedOp : Op → Bool | .input _ => false | _ => true def evalOp_closed (op : Op) (vs : List Value) (input : Valuation) (h : closedOp op = true) : evalOp (fun _ => zeroValue) op vs = evalOp input op vs := by cases op <;> simp_all [closedOp] all_goals cases vs with | nil => rfl | cons a rest => cases rest with | nil => rfl | cons b tail => cases tail with | nil => rfl | cons c more => cases more <;> rfl def closedNode (program : ℕ → Node) : ℕ → ℕ → Option Value | 0, _ => none | fuel + 1, i => if closedOp (program i).op then do let children ← collect (closedNode program fuel) (program i).children pure (evalOp (fun _ => zeroValue) (program i).op children) else none def closedNode_sound (program : ℕ → Node) (input values : Valuation) (he : Equations program input values) (fuel i : ℕ) (v : Value) (h : closedNode program fuel i = some v) : v = values i := by induction fuel generalizing i v with | zero => simp [closedNode] at h | succ fuel ih => simp only [closedNode] at h split at h next hop => cases hc : collect (closedNode program fuel) (program i).children with | none => simp [hc] at h | some children => have hv : evalOp (fun _ => zeroValue) (program i).op children = v := by simpa [hc] using h subst v have hchildren := collect_sound (closedNode program fuel) id values (fun j w hw => ih j w hw) _ children hc simp only [List.map_id_fun, id_eq] at hchildren rw [hchildren, evalOp_closed _ _ input hop, he i] rfl next => simp_all def numericValue (integer : Bool) (v : Value) : ℚ := if integer then (v.z : ℚ) else v.q def numericOp (integer : Bool) (op : Op) : Bool := if integer then integerOp op else rationalOp op def normalizeOp_numeric_sound (integer : Bool) (input : Valuation) (op : Op) (fs : List Affine) (vs : List Value) (out : Affine) (x : ℕ → ℚ) (hvals : fs.map (fun f => f.eval x) = vs.map (numericValue integer)) (ho : numericOp integer op = true) (h : normalizeOp op fs = some out) : out.eval x = numericValue integer (evalOp input op vs) := by cases integer with | false => exact normalizeOp_rational_sound input op fs vs out x hvals ho h | true => exact normalizeOp_integer_sound input op fs vs out x hvals ho h def normalizeTerm (program : ℕ → Node) (cut : ℕ → Option ℕ) (integer : Bool) : ℕ → ℕ → Option Affine | 0, _ => none | fuel + 1, i => match cut i with | some j => some (Affine.variable j) | none => if numericOp integer (program i).op then do let fs ← collect (normalizeTerm program cut integer fuel) (program i).children normalizeOp (program i).op fs else do let v ← closedNode program (fuel + 1) i pure (Affine.const (numericValue integer v)) def normalizeTerm_sound (program : ℕ → Node) (cut : ℕ → Option ℕ) (integer : Bool) (input values : Valuation) (x : ℕ → ℚ) (he : Equations program input values) (hcut : ∀ i j, cut i = some j → x j = numericValue integer (values i)) (fuel i : ℕ) (out : Affine) (h : normalizeTerm program cut integer fuel i = some out) : out.eval x = numericValue integer (values i) := by induction fuel generalizing i out with | zero => simp [normalizeTerm] at h | succ fuel ih => cases hc : cut i with | some j => have hout : Affine.variable j = out := by simpa [normalizeTerm, hc] using h subst out exact (Affine.eval_variable j x).trans (hcut i j hc) | none => simp only [normalizeTerm, hc] at h split at h next hop => cases hfs : collect (normalizeTerm program cut integer fuel) (program i).children with | none => simp [hfs] at h | some fs => have hn : normalizeOp (program i).op fs = some out := by simpa [hfs] using h have hchildren := collect_sound (normalizeTerm program cut integer fuel) (fun f => f.eval x) (fun j => numericValue integer (values j)) (fun j f hf => ih j f hf) _ fs hfs have hv : fs.map (fun f => f.eval x) = ((program i).children.map values).map (numericValue integer) := by simpa only [List.map_map, Function.comp_def] using hchildren rw [he i] exact normalizeOp_numeric_sound integer input (program i).op fs ((program i).children.map values) out x hv hop hn next => cases hv : closedNode program (fuel + 1) i with | none => simp [hv] at h | some v => have hout : Affine.const (numericValue integer v) = out := by simpa [hv] using h subst out rw [Affine.eval_const, closedNode_sound program input values he _ i v hv] end ClosureLinear end PolicySubmissionPart10 /- Component PolicyLinearAtoms; SHA256 3c7cf73f4f3438eb44bfe2443706923a599b27209e7a39ea406262cfc30ab545. -/ section PolicySubmissionPart11 /- Sound conversion of rational and integer comparisons into affine inequalities. -/ namespace ClosureLinear open ClosureSemantics abbrev Branches := List (List Row) def Branches.Holds (bs : Branches) (x : ℕ → ℚ) : Prop := ∃ rows ∈ bs, ∀ r ∈ rows, r.Holds x def makeRow (integer strict : Bool) (f : Affine) : Row := if integer && strict then ⟨f.sub (Affine.const 1), false⟩ else ⟨f, strict⟩ def makeRow_sound (integer strict : Bool) (f : Affine) (x : ℕ → ℚ) (hi : integer = true → ∃ z : ℤ, f.eval x = z) (h : if strict then 0 < f.eval x else 0 ≤ f.eval x) : (makeRow integer strict f).Holds x := by cases integer with | false => exact h | true => cases strict with | false => exact h | true => obtain ⟨z, hz⟩ := hi rfl have hpos : (0 : ℚ) < z := by simpa [hz] using h have hzpos : 0 < z := by exact_mod_cast hpos have hone : (1 : ℚ) ≤ z := by exact_mod_cast (show (1 : ℤ) ≤ z by omega) simpa [makeRow, Row.Holds, Affine.eval_sub, Affine.eval_const, hz] using sub_nonneg.mpr hone inductive Comparison where | eq | le | lt def Comparison.eval : Comparison → ℚ → ℚ → Bool | .eq, a, b => decide (a = b) | .le, a, b => decide (a ≤ b) | .lt, a, b => decide (a < b) def atomBranches (integer : Bool) : Comparison → Bool → Affine → Affine → Branches | .eq, true, f, g => [[makeRow integer false (f.sub g), makeRow integer false (g.sub f)]] | .eq, false, f, g => [[makeRow integer true (f.sub g)], [makeRow integer true (g.sub f)]] | .le, true, f, g => [[makeRow integer false (g.sub f)]] | .le, false, f, g => [[makeRow integer true (f.sub g)]] | .lt, true, f, g => [[makeRow integer true (g.sub f)]] | .lt, false, f, g => [[makeRow integer false (f.sub g)]] def atomBranches_sound (integer : Bool) (cmp : Comparison) (positive : Bool) (f g : Affine) (x : ℕ → ℚ) (hi : integer = true → (∃ a : ℤ, f.eval x = a) ∧ (∃ b : ℤ, g.eval x = b)) (h : cmp.eval (f.eval x) (g.eval x) = positive) : (atomBranches integer cmp positive f g).Holds x := by have hfg : integer = true → ∃ z : ℤ, (f.sub g).eval x = z := by intro he obtain ⟨⟨a, ha⟩, ⟨b, hb⟩⟩ := hi he exact ⟨a - b, by simp [Affine.eval_sub, ha, hb]⟩ have hgf : integer = true → ∃ z : ℤ, (g.sub f).eval x = z := by intro he obtain ⟨⟨a, ha⟩, ⟨b, hb⟩⟩ := hi he exact ⟨b - a, by simp [Affine.eval_sub, ha, hb]⟩ cases cmp <;> cases positive <;> simp only [Comparison.eval, decide_eq_true_eq, decide_eq_false_iff_not] at h <;> simp only [atomBranches, Branches.Holds, List.mem_cons, List.not_mem_nil, or_false, exists_eq_or_imp, exists_eq_left, forall_eq_or_imp, forall_eq] at ⊢ · rcases lt_or_gt_of_ne h with hlt | hgt · right exact makeRow_sound integer true (g.sub f) x hgf (by simpa [Affine.eval_sub] using sub_pos.mpr hlt) · left exact makeRow_sound integer true (f.sub g) x hfg (by simpa [Affine.eval_sub] using sub_pos.mpr hgt) · constructor · exact makeRow_sound integer false (f.sub g) x hfg (by simp [Affine.eval_sub, h]) · exact makeRow_sound integer false (g.sub f) x hgf (by simp [Affine.eval_sub, h]) · exact makeRow_sound integer true (f.sub g) x hfg (by simpa [Affine.eval_sub] using sub_pos.mpr (lt_of_not_ge h)) · exact makeRow_sound integer false (g.sub f) x hgf (by simpa [Affine.eval_sub] using sub_nonneg.mpr h) · exact makeRow_sound integer false (f.sub g) x hfg (by simpa [Affine.eval_sub] using sub_nonneg.mpr (le_of_not_gt h)) · exact makeRow_sound integer true (g.sub f) x hgf (by simpa [Affine.eval_sub] using sub_pos.mpr h) def comparisonOp (integer : Bool) (cmp : Comparison) : Op := match integer, cmp with | false, .eq => .qEq | false, .le => .qLe | false, .lt => .qLt | true, .eq => .zEq | true, .le => .zLe | true, .lt => .zLt def comparisonOp_eval (integer : Bool) (cmp : Comparison) (input : Valuation) (a b : Value) : (evalOp input (comparisonOp integer cmp) [a, b]).b = cmp.eval (numericValue integer a) (numericValue integer b) := by cases integer <;> cases cmp <;> simp [comparisonOp, evalOp, boolValue, Comparison.eval, numericValue] def atomBranches_values (integer : Bool) (cmp : Comparison) (positive : Bool) (f g : Affine) (x : ℕ → ℚ) (input : Valuation) (a b : Value) (hf : f.eval x = numericValue integer a) (hg : g.eval x = numericValue integer b) (h : (evalOp input (comparisonOp integer cmp) [a, b]).b = positive) : (atomBranches integer cmp positive f g).Holds x := by apply atomBranches_sound integer cmp positive f g x · intro hi subst integer exact ⟨⟨a.z, hf⟩, ⟨b.z, hg⟩⟩ · rw [hf, hg] exact (comparisonOp_eval integer cmp input a b).symm.trans h end ClosureLinear end PolicySubmissionPart11 /- Component PolicyLinearBranches; SHA256 4c96643afb5a2de47b6c62823b8a60cfa81b6365fef5a092b748b42281c94e60. -/ section PolicySubmissionPart12 /- Boolean branch operations used in checked linear sequents. -/ namespace ClosureLinear def collect_members {α β : Type} (f : α → Option β) (as : List α) (bs : List β) (hc : collect f as = some bs) : (∀ a ∈ as, ∃ b ∈ bs, f a = some b) ∧ (∀ b ∈ bs, ∃ a ∈ as, f a = some b) := by induction as generalizing bs with | nil => have hb : bs = [] := by simpa [collect] using hc.symm subst bs simp | cons a as ih => cases ha : f a with | none => simp [collect, ha] at hc | some b => cases hr : collect f as with | none => simp [collect, ha, hr] at hc | some rest => have hb : b :: rest = bs := by simpa [collect, ha, hr] using hc subst bs obtain ⟨hin, hout⟩ := ih rest hr constructor · intro c hm rcases List.mem_cons.mp hm with rfl | hm · exact ⟨b, List.mem_cons_self .., ha⟩ · obtain ⟨d, hd, hfd⟩ := hin c hm exact ⟨d, List.mem_cons_of_mem _ hd, hfd⟩ · intro d hm rcases List.mem_cons.mp hm with rfl | hm · exact ⟨a, List.mem_cons_self .., ha⟩ · obtain ⟨c, hc, hfc⟩ := hout d hm exact ⟨c, List.mem_cons_of_mem _ hc, hfc⟩ def crossBranches (a b : Branches) : Branches := a.flatMap fun xs => b.map fun ys => xs ++ ys def crossBranches_sound (a b : Branches) (x : ℕ → ℚ) (ha : a.Holds x) (hb : b.Holds x) : (crossBranches a b).Holds x := by obtain ⟨xs, hxs, hx⟩ := ha obtain ⟨ys, hys, hy⟩ := hb refine ⟨xs ++ ys, ?_, ?_⟩ · exact List.mem_flatMap.mpr ⟨xs, hxs, List.mem_map.mpr ⟨ys, hys, rfl⟩⟩ · intro r hr rcases List.mem_append.mp hr with hr | hr · exact hx r hr · exact hy r hr def allBranches : List Branches → Branches | [] => [[]] | bs :: rest => crossBranches bs (allBranches rest) def allBranches_sound (bs : List Branches) (x : ℕ → ℚ) (h : ∀ b ∈ bs, b.Holds x) : (allBranches bs).Holds x := by induction bs with | nil => exact ⟨[], List.mem_cons_self .., by simp⟩ | cons b bs ih => exact crossBranches_sound b (allBranches bs) x (h b (List.mem_cons_self ..)) (ih (fun c hc => h c (List.mem_cons_of_mem _ hc))) def anyBranches_sound (bs : List Branches) (x : ℕ → ℚ) (h : ∃ b ∈ bs, b.Holds x) : Branches.Holds bs.flatten x := by obtain ⟨b, hb, rows, hr, hrows⟩ := h exact ⟨rows, List.mem_flatten.mpr ⟨b, hb, hr⟩, hrows⟩ def combineBranches (conjunction : Bool) (bs : List Branches) : Branches := if conjunction then allBranches bs else bs.flatten def combineBranches_sound (conjunction : Bool) (bs : List Branches) (x : ℕ → ℚ) (h : if conjunction then ∀ b ∈ bs, b.Holds x else ∃ b ∈ bs, b.Holds x) : (combineBranches conjunction bs).Holds x := by cases conjunction with | false => exact anyBranches_sound bs x h | true => exact allBranches_sound bs x h def combine_collect_sound (conjunction : Bool) {α : Type} (f : α → Option Branches) (values : α → Prop) (as : List α) (bs : List Branches) (x : ℕ → ℚ) (hf : ∀ a b, f a = some b → values a → b.Holds x) (hc : collect f as = some bs) (h : if conjunction then ∀ a ∈ as, values a else ∃ a ∈ as, values a) : (combineBranches conjunction bs).Holds x := by obtain ⟨hin, hout⟩ := collect_members f as bs hc apply combineBranches_sound cases conjunction with | false => obtain ⟨a, ha, hval⟩ := h obtain ⟨b, hb, hfb⟩ := hin a ha exact ⟨b, hb, hf a b hfb hval⟩ | true => intro b hb obtain ⟨a, ha, hfa⟩ := hout b hb exact hf a b hfa (h a ha) end ClosureLinear end PolicySubmissionPart12 /- Component PolicyLinearFormula; SHA256 26271c067cc0506a5457180f6b9108c21705aec0858414f2180b044640791ce2. -/ section PolicySubmissionPart13 /- Verified extraction of linear contradiction branches from Boolean DAG nodes. -/ namespace ClosureLinear open ClosureSemantics inductive FormulaRule where | fixedValue : Bool → FormulaRule | same : ℕ → FormulaRule | neg : ℕ → FormulaRule | combine : Bool → List ℕ → FormulaRule | atom : Comparison → ℕ → ℕ → FormulaRule | reject def comparisonOf (integer : Bool) : Op → Option Comparison | .qEq => if integer then none else some .eq | .qLe => if integer then none else some .le | .qLt => if integer then none else some .lt | .zEq => if integer then some .eq else none | .zLe => if integer then some .le else none | .zLt => if integer then some .lt else none | _ => none def comparisonOf_eq (integer : Bool) (op : Op) (cmp : Comparison) (h : comparisonOf integer op = some cmp) : op = comparisonOp integer cmp := by cases integer <;> cases op <;> simp_all [comparisonOf, comparisonOp] all_goals subst cmp; rfl def parseFormula (integer : Bool) (node : Node) : FormulaRule := match node.op, node.children with | .bConst b, _ => .fixedValue b | .alias, [j] => .same j | .bNot, [j] => .neg j | .bAnd, js => .combine true js | .bOr, js => .combine false js | op, js => match comparisonOf integer op, js with | some cmp, [a, b] => .atom cmp a b | _, _ => .reject def FormulaRule.Holds (integer : Bool) (input values : Valuation) (positive : Bool) : FormulaRule → Prop | .fixedValue b => b = positive | .same j => (values j).b = positive | .neg j => (values j).b = !positive | .combine conjunction js => if conjunction == positive then ∀ j ∈ js, (values j).b = positive else ∃ j ∈ js, (values j).b = positive | .atom cmp a b => (evalOp input (comparisonOp integer cmp) [values a, values b]).b = positive | .reject => True def parseFormula_sound (integer : Bool) (input values : Valuation) (node : Node) (positive : Bool) (h : (evalNode input values node).b = positive) : (parseFormula integer node).Holds integer input values positive := by fun_cases parseFormula integer node <;> simp_all [FormulaRule.Holds, evalNode, evalOp, boolValue] · cases positive <;> simp_all · cases positive <;> simp_all · rename_i cmp a b _ _ _ hc _ rw [← comparisonOf_eq integer node.op cmp hc] exact h def normalizeFormula (program : ℕ → Node) (cut : ℕ → Option ℕ) (integer : Bool) : ℕ → ℕ → Bool → Option Branches | 0, _, _ => none | fuel + 1, i, positive => match parseFormula integer (program i) with | .fixedValue b => some (if b == positive then [[]] else [[makeRow false false (Affine.const (-1))]]) | .same j => normalizeFormula program cut integer fuel j positive | .neg j => normalizeFormula program cut integer fuel j (!positive) | .combine conjunction js => do let bs ← collect (fun j => normalizeFormula program cut integer fuel j positive) js pure (combineBranches (conjunction == positive) bs) | .atom cmp a b => do let f ← normalizeTerm program cut integer fuel a let g ← normalizeTerm program cut integer fuel b pure (atomBranches integer cmp positive f g) | .reject => none def normalizeFormula_sound (program : ℕ → Node) (cut : ℕ → Option ℕ) (integer : Bool) (input values : Valuation) (x : ℕ → ℚ) (he : Equations program input values) (hcut : ∀ i j, cut i = some j → x j = numericValue integer (values i)) (fuel i : ℕ) (positive : Bool) (bs : Branches) (hn : normalizeFormula program cut integer fuel i positive = some bs) (h : (values i).b = positive) : bs.Holds x := by induction fuel generalizing i positive bs with | zero => simp [normalizeFormula] at hn | succ fuel ih => have hv : (evalNode input values (program i)).b = positive := by rw [← he i]; exact h have hs := parseFormula_sound integer input values (program i) positive hv simp only [normalizeFormula] at hn cases hr : parseFormula integer (program i) with | fixedValue b => rw [hr] at hn hs have hb : b = positive := hs subst b have hbs : [[]] = bs := by simpa using hn subst bs exact ⟨[], List.mem_cons_self .., by simp⟩ | same j => rw [hr] at hn hs exact ih j positive bs hn hs | neg j => rw [hr] at hn hs exact ih j (!positive) bs hn hs | combine conjunction js => rw [hr] at hn hs cases hc : collect (fun j => normalizeFormula program cut integer fuel j positive) js with | none => simp [hc] at hn | some children => have hbs : combineBranches (conjunction == positive) children = bs := by simpa [hc] using hn subst bs exact combine_collect_sound (conjunction == positive) (fun j => normalizeFormula program cut integer fuel j positive) (fun j => (values j).b = positive) js children x (fun j b hj hv => ih j positive b hj hv) hc hs | atom cmp a b => rw [hr] at hn hs cases hf : normalizeTerm program cut integer fuel a with | none => simp [hf] at hn | some f => cases hg : normalizeTerm program cut integer fuel b with | none => simp [hf, hg] at hn | some g => have hbs : atomBranches integer cmp positive f g = bs := by simpa [hf, hg] using hn subst bs exact atomBranches_values integer cmp positive f g x input (values a) (values b) (normalizeTerm_sound program cut integer input values x he hcut fuel a f hf) (normalizeTerm_sound program cut integer input values x he hcut fuel b g hg) hs | reject => simp [hr] at hn end ClosureLinear end PolicySubmissionPart13 /- Component PolicyLinearSequent; SHA256 175452e3dd63ee58637954deb45cb870dbd185e315751127df0ad92a239e7f7e. -/ section PolicySubmissionPart14 /- A sound, computational checker for arithmetic implication leaves. -/ namespace ClosureLinear open ClosureSemantics def selectRows (rows : List Row) (weights : List (ℕ × ℕ)) : Option (List (ℕ × Row)) := collect (fun iw => rows[iw.1]?.map (fun r => (iw.2, r))) weights def selectRows_sound (rows : List Row) (weights : List (ℕ × ℕ)) (selected : List (ℕ × Row)) (x : ℕ → ℚ) (hs : selectRows rows weights = some selected) (h : ∀ r ∈ rows, r.Holds x) : ∀ a ∈ selected, a.2.Holds x := by intro a ha obtain ⟨iw, _, hw⟩ := (collect_members _ weights selected hs).2 a ha cases hr : rows[iw.1]? with | none => simp [hr] at hw | some r => have heq : (iw.2, r) = a := by simpa [hr] using hw subst a exact h r (List.mem_of_getElem? hr) def checkBranch (rows : List Row) (weights : List (ℕ × ℕ)) : Bool := match selectRows rows weights with | some selected => check selected | none => false def checkBranch_sound (rows : List Row) (weights : List (ℕ × ℕ)) (x : ℕ → ℚ) (hc : checkBranch rows weights = true) (h : ∀ r ∈ rows, r.Holds x) : False := by cases hs : selectRows rows weights with | none => simp [checkBranch, hs] at hc | some selected => exact check_sound selected x (selectRows_sound rows weights selected x hs h) (by simpa [checkBranch, hs] using hc) def checkBranches : Branches → List (List (ℕ × ℕ)) → Bool | [], [] => true | rows :: bs, weights :: cs => checkBranch rows weights && checkBranches bs cs | _, _ => false def checkBranches_sound (bs : Branches) (certs : List (List (ℕ × ℕ))) (x : ℕ → ℚ) (hc : checkBranches bs certs = true) (h : bs.Holds x) : False := by induction bs generalizing certs with | nil => obtain ⟨rows, hr, _⟩ := h; simp at hr | cons rows bs ih => cases certs with | nil => simp [checkBranches] at hc | cons weights cs => have hp : checkBranch rows weights = true ∧ checkBranches bs cs = true := by simpa [checkBranches, Bool.and_eq_true] using hc obtain ⟨rs, hrs, hrows⟩ := h rcases List.mem_cons.mp hrs with rfl | hrs · exact checkBranch_sound rs weights x hp.1 hrows · exact ih cs hp.2 ⟨rs, hrs, hrows⟩ def normalizeSequent (program : ℕ → Node) (cut : ℕ → Option ℕ) (integer : Bool) (fuel : ℕ) (signed : List (ℕ × Bool)) : Option Branches := do let bs ← collect (fun ib => normalizeFormula program cut integer fuel ib.1 ib.2) signed pure (allBranches bs) def normalizeSequent_sound (program : ℕ → Node) (cut : ℕ → Option ℕ) (integer : Bool) (input values : Valuation) (x : ℕ → ℚ) (he : Equations program input values) (hcut : ∀ i j, cut i = some j → x j = numericValue integer (values i)) (fuel : ℕ) (signed : List (ℕ × Bool)) (bs : Branches) (hn : normalizeSequent program cut integer fuel signed = some bs) (h : ∀ ib ∈ signed, (values ib.1).b = ib.2) : bs.Holds x := by cases hc : collect (fun ib => normalizeFormula program cut integer fuel ib.1 ib.2) signed with | none => simp [normalizeSequent, hc] at hn | some children => have hbs : allBranches children = bs := by simpa [normalizeSequent, hc] using hn subst bs exact combine_collect_sound true (fun ib : ℕ × Bool => normalizeFormula program cut integer fuel ib.1 ib.2) (fun ib : ℕ × Bool => (values ib.1).b = ib.2) signed children x (fun ib b hb hv => normalizeFormula_sound program cut integer input values x he hcut fuel ib.1 ib.2 b hb hv) hc h def checkSequent (program : ℕ → Node) (cut : ℕ → Option ℕ) (integer : Bool) (fuel : ℕ) (signed : List (ℕ × Bool)) (certs : List (List (ℕ × ℕ))) : Bool := match normalizeSequent program cut integer fuel signed with | some bs => checkBranches bs certs | none => false def checkSequent_sound (program : ℕ → Node) (cut : ℕ → Option ℕ) (integer : Bool) (input values : Valuation) (x : ℕ → ℚ) (he : Equations program input values) (hcut : ∀ i j, cut i = some j → x j = numericValue integer (values i)) (fuel : ℕ) (signed : List (ℕ × Bool)) (certs : List (List (ℕ × ℕ))) (hc : checkSequent program cut integer fuel signed certs = true) (h : ∀ ib ∈ signed, (values ib.1).b = ib.2) : False := by cases hn : normalizeSequent program cut integer fuel signed with | none => simp [checkSequent, hn] at hc | some bs => exact checkBranches_sound bs certs x (by simpa [checkSequent, hn] using hc) (normalizeSequent_sound program cut integer input values x he hcut fuel signed bs hn h) def cutIndex : List ℕ → ℕ → Option ℕ | [], _ => none | a :: as, i => if i = a then some 0 else (cutIndex as i).map Nat.succ def cutIndex_get (ids : List ℕ) (i j : ℕ) (h : cutIndex ids i = some j) : ids[j]? = some i := by induction ids generalizing j with | nil => simp [cutIndex] at h | cons a as ih => by_cases hi : i = a · have hj : j = 0 := by simpa [cutIndex, hi] using h.symm subst j simp [hi] · cases hc : cutIndex as i with | none => simp [cutIndex, hi, hc] at h | some k => have hj : k + 1 = j := by simpa [cutIndex, hi, hc] using h subst j simpa using ih k hc def checkSequent_of_cuts (program : ℕ → Node) (ids : List ℕ) (integer : Bool) (input values : Valuation) (he : Equations program input values) (fuel : ℕ) (signed : List (ℕ × Bool)) (certs : List (List (ℕ × ℕ))) (hc : checkSequent program (cutIndex ids) integer fuel signed certs = true) (h : ∀ ib ∈ signed, (values ib.1).b = ib.2) : False := by apply checkSequent_sound program (cutIndex ids) integer input values (fun j => numericValue integer (values (ids[j]?.getD 0))) he _ fuel signed certs hc h intro i j hj rw [cutIndex_get ids i j hj] rfl def checkImplication (program : ℕ → Node) (ids : List ℕ) (integer : Bool) (fuel : ℕ) (premises : List ℕ) (conclusion : ℕ) (certs : List (List (ℕ × ℕ))) : Bool := checkSequent program (cutIndex ids) integer fuel (premises.map (fun i => (i, true)) ++ [(conclusion, false)]) certs def checkImplication_sound (program : ℕ → Node) (ids : List ℕ) (integer : Bool) (input values : Valuation) (he : Equations program input values) (fuel : ℕ) (premises : List ℕ) (conclusion : ℕ) (certs : List (List (ℕ × ℕ))) (hc : checkImplication program ids integer fuel premises conclusion certs = true) (h : ∀ i ∈ premises, (values i).b = true) : (values conclusion).b = true := by cases hconclusion : (values conclusion).b with | true => rfl | false => apply False.elim apply checkSequent_of_cuts program ids integer input values he fuel _ certs hc intro ib hib rcases List.mem_append.mp hib with hp | heq · obtain ⟨i, hi, rfl⟩ := List.mem_map.mp hp exact h i hi · have hi : ib = (conclusion, false) := by simpa using heq subst ib exact hconclusion end ClosureLinear end PolicySubmissionPart14 /- Component ClosurePattern; SHA256 a786e2a8c781ead32f67dfb7c900933fe95e93bd08a45ed6fef7e064b80fe035. -/ section PolicySubmissionPart15 /- A total matcher for finite expression schemas, with kernel soundness. -/ namespace ClosurePattern open ClosureSemantics inductive Pattern where | hole : Nat → Pattern | node : Op → List Pattern → Pattern def eval (env : Valuation) : Pattern → Value | .hole k => env k | .node op children => evalOp (fun _ => zeroValue) op (children.map (eval env)) def sameOp : Op → Op → Bool | .input a, .input b => a == b | .qConst a, .qConst b => a == b | .zConst a, .zConst b => a == b | .bConst a, .bConst b => a == b | .alias, .alias | .bNot, .bNot | .bOr, .bOr | .bAnd, .bAnd | .bEq, .bEq | .ite, .ite | .qEq, .qEq | .zEq, .zEq | .qLe, .qLe | .zLe, .zLe | .qLt, .qLt | .zLt, .zLt | .qAdd, .qAdd | .zAdd, .zAdd | .qMul, .qMul | .zMul, .zMul | .qNeg, .qNeg | .zNeg, .zNeg | .qSub, .qSub | .zSub, .zSub | .qDiv, .qDiv => true | _, _ => false def sameOp_sound (a b : Op) (h : sameOp a b = true) : a = b := by cases a <;> cases b <;> simp_all [sameOp] def allPairs (f : α → β → Bool) : List α → List β → Bool | [], [] => true | a :: as, b :: bs => f a b && allPairs f as bs | _, _ => false def allPairs_map_eq (f : α → β → Bool) (left : α → γ) (right : β → γ) (h : ∀ a b, f a b = true → left a = right b) (as : List α) (bs : List β) (hc : allPairs f as bs = true) : as.map left = bs.map right := by induction as generalizing bs with | nil => cases bs <;> simp_all [allPairs] | cons a as ih => cases bs with | nil => simp [allPairs] at hc | cons b bs => have hh : f a b = true ∧ allPairs f as bs = true := by simpa [allPairs, Bool.and_eq_true] using hc simp only [List.map_cons, h a b hh.1, ih bs hh.2] def check (program : Nat → Node) (cut : Nat → Option Nat) : Nat → Pattern → Nat → Bool | 0, _, _ => false | _ + 1, .hole k, i => cut i == some k | fuel + 1, .node op children, i => ClosureLinear.closedOp op && sameOp op (program i).op && allPairs (check program cut fuel) children (program i).children def check_sound (program : Nat → Node) (cut : Nat → Option Nat) (input values env : Valuation) (he : Equations program input values) (hcut : ∀ i j, cut i = some j → env j = values i) (fuel : Nat) (pattern : Pattern) (i : Nat) (hc : check program cut fuel pattern i = true) : eval env pattern = values i := by induction fuel generalizing pattern i with | zero => simp [check] at hc | succ fuel ih => cases pattern with | hole k => simp only [eval] apply hcut i k simpa [check, beq_iff_eq] using hc | node op children => have hh : (ClosureLinear.closedOp op = true ∧ sameOp op (program i).op = true) ∧ allPairs (check program cut fuel) children (program i).children = true := by simpa only [check, Bool.and_eq_true] using hc have hop := sameOp_sound op (program i).op hh.1.2 have hchildren := allPairs_map_eq (check program cut fuel) (eval env) values (fun p j hp => ih p j hp) children (program i).children hh.2 simp only [eval, hchildren] rw [ClosureLinear.evalOp_closed _ _ input hh.1.1, hop, he i] rfl def environment (ids : List Nat) (values : Valuation) : Valuation := fun j => values (ids[j]?.getD 0) def check_of_cuts (program : Nat → Node) (ids : List Nat) (input values : Valuation) (he : Equations program input values) (fuel : Nat) (pattern : Pattern) (i : Nat) (hc : check program (ClosureLinear.cutIndex ids) fuel pattern i = true) : eval (environment ids values) pattern = values i := by apply check_sound program (ClosureLinear.cutIndex ids) input values (environment ids values) he _ fuel pattern i hc intro k j hj simp only [environment, ClosureLinear.cutIndex_get ids k j hj] rfl end ClosurePattern end PolicySubmissionPart15 /- Component ClosureSchema; SHA256 813f5d94ac9b3da1870e09109161da29971933311616dd09775ec803969d51d9. -/ section PolicySubmissionPart16 /- Ordinary proved expression schemas and checked instantiation in a DAG. -/ namespace ClosurePattern open ClosureSemantics structure Schema where definitions : List (Nat × Pattern) premises : List Pattern conclusion : Pattern def Schema.Valid (s : Schema) : Prop := ∀ env : Valuation, (∀ d ∈ s.definitions, env d.1 = eval env d.2) → (∀ p ∈ s.premises, (eval env p).b = true) → (eval env s.conclusion).b = true def checkSchema (program : Nat → Node) (ids : List Nat) (fuel : Nat) (s : Schema) (premises : List Nat) (conclusion : Nat) : Bool := s.definitions.all (fun d => check program (ClosureLinear.cutIndex ids) fuel d.2 (ids[d.1]?.getD 0)) && allPairs (check program (ClosureLinear.cutIndex ids) fuel) s.premises premises && check program (ClosureLinear.cutIndex ids) fuel s.conclusion conclusion def checkSchema_sound (program : Nat → Node) (ids : List Nat) (input values : Valuation) (he : Equations program input values) (fuel : Nat) (s : Schema) (premises : List Nat) (conclusion : Nat) (hv : s.Valid) (hc : checkSchema program ids fuel s premises conclusion = true) (hp : ∀ i ∈ premises, (values i).b = true) : (values conclusion).b = true := by have hh : (s.definitions.all (fun d => check program (ClosureLinear.cutIndex ids) fuel d.2 (ids[d.1]?.getD 0)) = true ∧ allPairs (check program (ClosureLinear.cutIndex ids) fuel) s.premises premises = true) ∧ check program (ClosureLinear.cutIndex ids) fuel s.conclusion conclusion = true := by simpa only [checkSchema, Bool.and_eq_true] using hc have hd : ∀ d ∈ s.definitions, environment ids values d.1 = eval (environment ids values) d.2 := by intro d hdm exact (check_of_cuts program ids input values he fuel d.2 _ (List.all_eq_true.mp hh.1.1 d hdm)).symm have hmaps : s.premises.map (eval (environment ids values)) = premises.map values := by exact allPairs_map_eq (check program (ClosureLinear.cutIndex ids) fuel) (eval (environment ids values)) values (fun p i h => check_of_cuts program ids input values he fuel p i h) s.premises premises hh.1.2 have hps : ∀ p ∈ s.premises, (eval (environment ids values) p).b = true := by intro p hpm have hm : eval (environment ids values) p ∈ premises.map values := by rw [← hmaps] exact List.mem_map.mpr ⟨p, hpm, rfl⟩ obtain ⟨i, hi, heq⟩ := List.mem_map.mp hm rw [← heq] exact hp i hi have hout := hv (environment ids values) hd hps rw [check_of_cuts program ids input values he fuel s.conclusion conclusion hh.2] at hout exact hout end ClosurePattern end PolicySubmissionPart16 /- Component ClosureRewriteParametricCompact; SHA256 6bcd83c7277875574280a06b56029b5a6a07acbe04924865c42af66c93072a43. -/ section PolicySubmissionPart17 namespace ClosureRewriteParametric open ClosurePattern ClosureSemantics abbrev x0 : Pattern := .hole 0 abbrev x1 : Pattern := .hole 1 abbrev x2 : Pattern := .hole 2 abbrev x3 : Pattern := .hole 3 abbrev x4 : Pattern := .hole 4 abbrev x5 : Pattern := .hole 5 abbrev x6 : Pattern := .hole 6 abbrev x7 : Pattern := .hole 7 abbrev qc (n : Int) (d : Nat) : Pattern := .node (.qConst ((n : Rat) / (d : Rat))) [] abbrev zc (n : Int) : Pattern := .node (.zConst n) [] abbrev bt : Pattern := .node (.bConst true) [] abbrev bf : Pattern := .node (.bConst false) [] abbrev alias1 (a : Pattern) : Pattern := .node .alias [a] abbrev bAnd2 (a b : Pattern) : Pattern := .node .bAnd [a, b] abbrev bAnd3 (a b c : Pattern) : Pattern := .node .bAnd [a, b, c] abbrev bAndn (xs : List Pattern) : Pattern := .node .bAnd xs abbrev bEq2 (a b : Pattern) : Pattern := .node .bEq [a, b] abbrev bNot1 (a : Pattern) : Pattern := .node .bNot [a] abbrev bOr2 (a b : Pattern) : Pattern := .node .bOr [a, b] abbrev bOr3 (a b c : Pattern) : Pattern := .node .bOr [a, b, c] abbrev bOrn (xs : List Pattern) : Pattern := .node .bOr xs abbrev ite3 (a b c : Pattern) : Pattern := .node .ite [a, b, c] abbrev qAdd2 (a b : Pattern) : Pattern := .node .qAdd [a, b] abbrev qDiv2 (a b : Pattern) : Pattern := .node .qDiv [a, b] abbrev qEq2 (a b : Pattern) : Pattern := .node .qEq [a, b] abbrev qLe2 (a b : Pattern) : Pattern := .node .qLe [a, b] abbrev qLt2 (a b : Pattern) : Pattern := .node .qLt [a, b] abbrev qMul2 (a b : Pattern) : Pattern := .node .qMul [a, b] abbrev zAdd2 (a b : Pattern) : Pattern := .node .zAdd [a, b] abbrev zAdd3 (a b c : Pattern) : Pattern := .node .zAdd [a, b, c] abbrev zEq2 (a b : Pattern) : Pattern := .node .zEq [a, b] abbrev zLe2 (a b : Pattern) : Pattern := .node .zLe [a, b] abbrev zMul2 (a b : Pattern) : Pattern := .node .zMul [a, b] abbrev zSub2 (a b : Pattern) : Pattern := .node .zSub [a, b] def schema0 : Schema := ⟨[], [], (bOr2 x0 (zEq2 (zc (0)) (ite3 x0 (zc (1)) (zc (0)))))⟩ def schema0_valid : schema0.Valid := by intro env hd hp norm_num [schema0, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema1 : Schema := ⟨[], [], (bOr3 (bEq2 x0 x1) (bNot1 x0) (bNot1 x1))⟩ def schema1_valid : schema1.Valid := by intro env hd hp norm_num [schema1, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema2 : Schema := ⟨[], [], (bEq2 (alias1 (qLt2 (qDiv2 (qc (1) 1) x1) x0)) (qLt2 (alias1 (qDiv2 (qc (1) 1) x1)) (alias1 x0)))⟩ def schema2_valid : schema2.Valid := by intro env hd hp norm_num [schema2, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema3 : Schema := ⟨[], [], (bEq2 (qLt2 (alias1 (qDiv2 (qc (1) 1) x1)) x0) (bNot1 (qLe2 x0 (alias1 (qDiv2 (qc (1) 1) x1)))))⟩ def schema3_valid : schema3.Valid := by intro env hd hp norm_num [schema3, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema4 : Schema := ⟨[], [(bEq2 x0 x1)], (bEq2 (bEq2 x2 x0) (bEq2 x2 x1))⟩ def schema4_valid : schema4.Valid := by intro env hd hp norm_num [schema4, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema5 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (bNot1 x1)) (bNot1 (bEq2 x1 x0)))⟩ def schema5_valid : schema5.Valid := by intro env hd hp norm_num [schema5, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema6 : Schema := ⟨[], [(bEq2 x0 x1), (bEq2 x1 x2)], (bEq2 x0 x2)⟩ def schema6_valid : schema6.Valid := by intro env hd hp norm_num [schema6, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema7 : Schema := ⟨[], [x0, (bEq2 x0 x1)], x1⟩ def schema7_valid : schema7.Valid := by intro env hd hp norm_num [schema7, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema8 : Schema := ⟨[], [], (bEq2 (bEq2 (qLe2 x0 (alias1 (qDiv2 (qc (1) 1) x2))) x1) (bEq2 (qLe2 (qc (0) 1) (qAdd2 (alias1 (qDiv2 (qc (1) 1) x2)) (qMul2 (qc (-1) 1) x0))) x1))⟩ def schema8_valid : schema8.Valid := by intro env hd hp norm_num [schema8, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema9 : Schema := ⟨[], [(bEq2 x0 x1)], (bEq2 (bNot1 x0) (bNot1 x1))⟩ def schema9_valid : schema9.Valid := by intro env hd hp norm_num [schema9, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema10 : Schema := ⟨[], [], (qEq2 (alias1 (qMul2 (qDiv2 (qc (1) 1) x1) x0)) (qMul2 (alias1 (qDiv2 (qc (1) 1) x1)) x0))⟩ def schema10_valid : schema10.Valid := by intro env hd hp norm_num [schema10, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema11 : Schema := ⟨[], [], (bEq2 (qEq2 x0 (qMul2 (alias1 (qDiv2 (qc (1) 1) x2)) x1)) (qEq2 x0 (qMul2 x1 (alias1 (qDiv2 (qc (1) 1) x2)))))⟩ def schema11_valid : schema11.Valid := by intro env hd hp norm_num [schema11, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema12 : Schema := ⟨[], [], (bEq2 (qEq2 x0 x1) (qEq2 (qAdd2 x0 (qMul2 (qc (-1) 1) x1)) (qc (0) 1)))⟩ def schema12_valid : schema12.Valid := by intro env hd hp norm_num [schema12, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema13 : Schema := ⟨[], [], (bEq2 (qEq2 (qc (0) 1) x0) (qEq2 x0 (qc (0) 1)))⟩ def schema13_valid : schema13.Valid := by intro env hd hp norm_num [schema13, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema14 : Schema := ⟨[], [(bEq2 x0 x1)], (bEq2 x1 x0)⟩ def schema14_valid : schema14.Valid := by intro env hd hp norm_num [schema14, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema15 : Schema := ⟨[], [], (qEq2 (alias1 (qDiv2 (qc (1) 1) x0)) (qDiv2 (qc (1) 1) x0))⟩ def schema15_valid : schema15.Valid := by intro env hd hp norm_num [schema15, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema16 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (16) 1))) (qDiv2 (qc (1) 1) (qc (16) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (16) 1))) (qc (1) 16)))⟩ def schema16_valid : schema16.Valid := by intro env hd hp norm_num [schema16, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema17 : Schema := ⟨[], [(qEq2 (alias1 (qDiv2 (qc (1) 1) x0)) (qDiv2 (qc (1) 1) x0)), (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) x0)) (qDiv2 (qc (1) 1) x0)) (qEq2 (alias1 (qDiv2 (qc (1) 1) x0)) x1))], (qEq2 (alias1 (qDiv2 (qc (1) 1) x0)) x1)⟩ def schema17_valid : schema17.Valid := by intro env hd hp norm_num [schema17, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema18 : Schema := ⟨[], [], (qEq2 (alias1 (qMul2 x0 x1)) (qMul2 (alias1 x0) x1))⟩ def schema18_valid : schema18.Valid := by intro env hd hp norm_num [schema18, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema19 : Schema := ⟨[], [], (bEq2 (qEq2 x0 (qMul2 x1 x2)) (qEq2 x0 (qMul2 x2 x1)))⟩ def schema19_valid : schema19.Valid := by intro env hd hp norm_num [schema19, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema20 : Schema := ⟨[], [], (bEq2 (qEq2 x0 x1) (qEq2 (qAdd2 x1 (qMul2 (qc (-1) 1) x0)) (qc (0) 1)))⟩ def schema20_valid : schema20.Valid := by intro env hd hp norm_num [schema20, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema21 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x10000) 1))) (qDiv2 (qc (1) 1) (qc (0x10000) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x10000) 1))) (qc (1) 0x10000)))⟩ def schema21_valid : schema21.Valid := by intro env hd hp norm_num [schema21, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema22 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x41a7) 1))) (qDiv2 (qc (1) 1) (qc (0x41a7) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x41a7) 1))) (qc (1) 0x41a7)))⟩ def schema22_valid : schema22.Valid := by intro env hd hp norm_num [schema22, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema23 : Schema := ⟨[], [], (bOr2 (bNot1 x0) (qEq2 (alias1 (qDiv2 (qc (1) 1) x2)) (ite3 x0 (alias1 (qDiv2 (qc (1) 1) x2)) x1)))⟩ def schema23_valid : schema23.Valid := by intro env hd hp norm_num [schema23, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema24 : Schema := ⟨[], [], (bEq2 (alias1 (zEq2 x0 (zc (0)))) (zEq2 (alias1 x0) (zc (0))))⟩ def schema24_valid : schema24.Valid := by intro env hd hp norm_num [schema24, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema25 : Schema := ⟨[], [], (zEq2 (alias1 (zSub2 x0 x1)) (zSub2 (alias1 x0) (alias1 x1)))⟩ def schema25_valid : schema25.Valid := by intro env hd hp norm_num [schema25, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema26 : Schema := ⟨[], [], (bEq2 (zEq2 x0 (zSub2 x1 x2)) (zEq2 x0 (zAdd2 x1 (zMul2 (zc (-1)) x2))))⟩ def schema26_valid : schema26.Valid := by intro env hd hp norm_num [schema26, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema27 : Schema := ⟨[], [], (bEq2 (zEq2 x0 (zAdd2 x1 x2)) (zEq2 (zAdd3 x1 x2 (zMul2 (zc (-1)) x0)) (zc (0))))⟩ def schema27_valid : schema27.Valid := by intro env hd hp norm_num [schema27, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema28 : Schema := ⟨[], [], (bEq2 (zEq2 (zc (0)) x0) (zEq2 x0 (zc (0))))⟩ def schema28_valid : schema28.Valid := by intro env hd hp norm_num [schema28, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema29 : Schema := ⟨[], [], (bEq2 (alias1 (qLe2 x0 (qDiv2 (qc (1) 1) x1))) (qLe2 (alias1 x0) (alias1 (qDiv2 (qc (1) 1) x1))))⟩ def schema29_valid : schema29.Valid := by intro env hd hp norm_num [schema29, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema30 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 x1 (alias1 (qDiv2 (qc (1) 1) x2)))) (bEq2 x0 (qLe2 (qc (0) 1) (qAdd2 (alias1 (qDiv2 (qc (1) 1) x2)) (qMul2 (qc (-1) 1) x1)))))⟩ def schema30_valid : schema30.Valid := by intro env hd hp norm_num [schema30, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema31 : Schema := ⟨[], [], (bOr2 (bNot1 x0) (qEq2 x1 (ite3 x0 x1 x2)))⟩ def schema31_valid : schema31.Valid := by intro env hd hp norm_num [schema31, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema32 : Schema := ⟨[], [], (bOr2 x0 (qEq2 x1 (ite3 x0 x2 x1)))⟩ def schema32_valid : schema32.Valid := by intro env hd hp norm_num [schema32, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema33 : Schema := ⟨[], [], (bEq2 (alias1 (bEq2 x0 x1)) (bEq2 x0 (alias1 x1)))⟩ def schema33_valid : schema33.Valid := by intro env hd hp norm_num [schema33, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema34 : Schema := ⟨[], [], (bEq2 (alias1 (ite3 x0 x1 x2)) (ite3 (alias1 x0) (alias1 x1) (alias1 x2)))⟩ def schema34_valid : schema34.Valid := by intro env hd hp norm_num [schema34, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema35 : Schema := ⟨[], [], (bEq2 (alias1 (qLt2 x0 x1)) (qLt2 (alias1 x0) (alias1 x1)))⟩ def schema35_valid : schema35.Valid := by intro env hd hp norm_num [schema35, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema36 : Schema := ⟨[], [], (bEq2 (qLt2 x0 x1) (bNot1 (qLe2 x1 x0)))⟩ def schema36_valid : schema36.Valid := by intro env hd hp norm_num [schema36, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema37 : Schema := ⟨[], [], (bEq2 (bEq2 (qLe2 x0 x1) x2) (bEq2 (qLe2 (qc (0) 1) (qAdd2 x1 (qMul2 (qc (-1) 1) x0))) x2))⟩ def schema37_valid : schema37.Valid := by intro env hd hp norm_num [schema37, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema38 : Schema := ⟨[], [], (bOr3 (bNot1 (ite3 x0 x1 x2)) x0 x2)⟩ def schema38_valid : schema38.Valid := by intro env hd hp norm_num [schema38, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema39 : Schema := ⟨[], [], (bEq2 (alias1 (qLe2 x0 x1)) (qLe2 (alias1 x0) (alias1 x1)))⟩ def schema39_valid : schema39.Valid := by intro env hd hp norm_num [schema39, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema40 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 x1 x2)) (bEq2 x0 (qLe2 (qAdd2 x1 (qMul2 (qc (-1) 1) x2)) (qc (0) 1))))⟩ def schema40_valid : schema40.Valid := by intro env hd hp norm_num [schema40, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema41 : Schema := ⟨[], [], (qEq2 (alias1 x0) x0)⟩ def schema41_valid : schema41.Valid := by intro env hd hp norm_num [schema41, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema42 : Schema := ⟨[], [], (bEq2 (alias1 x0) x0)⟩ def schema42_valid : schema42.Valid := by intro env hd hp norm_num [schema42, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema43 : Schema := ⟨[], [], (bEq2 (bEq2 x0 bf) (bNot1 x0))⟩ def schema43_valid : schema43.Valid := by intro env hd hp norm_num [schema43, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema44 : Schema := ⟨[], [], (qEq2 (alias1 (ite3 x0 x1 x2)) (ite3 (alias1 x0) (alias1 x1) (alias1 x2)))⟩ def schema44_valid : schema44.Valid := by intro env hd hp norm_num [schema44, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema45 : Schema := ⟨[], [(qEq2 x0 x1)], (bEq2 (qEq2 x2 x0) (qEq2 x2 x1))⟩ def schema45_valid : schema45.Valid := by intro env hd hp norm_num [schema45, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema46 : Schema := ⟨[], [], (bEq2 (alias1 (qEq2 x0 x1)) (qEq2 x0 (alias1 x1)))⟩ def schema46_valid : schema46.Valid := by intro env hd hp norm_num [schema46, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema47 : Schema := ⟨[], [], (qEq2 (alias1 (ite3 x0 x1 x2)) (ite3 x0 (alias1 x1) (alias1 x2)))⟩ def schema47_valid : schema47.Valid := by intro env hd hp norm_num [schema47, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema48 : Schema := ⟨[], [(qEq2 x0 x1), (qEq2 x1 x2)], (qEq2 x0 x2)⟩ def schema48_valid : schema48.Valid := by intro env hd hp norm_num [schema48, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema49 : Schema := ⟨[], [(qEq2 x0 x1)], (bEq2 (qEq2 x0 x2) (qEq2 x1 x2))⟩ def schema49_valid : schema49.Valid := by intro env hd hp norm_num [schema49, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema50 : Schema := ⟨[], [], (bEq2 (qEq2 x0 x1) (qEq2 x1 x0))⟩ def schema50_valid : schema50.Valid := by intro env hd hp norm_num [schema50, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema51 : Schema := ⟨[], [], (qEq2 (alias1 (qMul2 x1 x0)) (qMul2 x1 (alias1 x0)))⟩ def schema51_valid : schema51.Valid := by intro env hd hp norm_num [schema51, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema52 : Schema := ⟨[], [], (bEq2 (alias1 (qLe2 x0 (qDiv2 x1 x2))) (qLe2 (alias1 x0) (alias1 (qDiv2 x1 x2))))⟩ def schema52_valid : schema52.Valid := by intro env hd hp norm_num [schema52, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema53 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 x1 (alias1 (qDiv2 x2 x3)))) (bEq2 x0 (qLe2 (qc (0) 1) (qAdd2 (alias1 (qDiv2 x2 x3)) (qMul2 (qc (-1) 1) x1)))))⟩ def schema53_valid : schema53.Valid := by intro env hd hp norm_num [schema53, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema54 : Schema := ⟨[], [], (bOr2 x0 (qEq2 x1 (ite3 x0 (alias1 (qDiv2 x2 x3)) x1)))⟩ def schema54_valid : schema54.Valid := by intro env hd hp norm_num [schema54, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema55 : Schema := ⟨[], [], (qEq2 (alias1 (ite3 x0 (qDiv2 x2 x3) x1)) (ite3 (alias1 x0) (alias1 (qDiv2 x2 x3)) (alias1 x1)))⟩ def schema55_valid : schema55.Valid := by intro env hd hp norm_num [schema55, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema56 : Schema := ⟨[], [], (bOr2 (bNot1 x0) (qEq2 (alias1 (qDiv2 x2 x3)) (ite3 x0 (alias1 (qDiv2 x2 x3)) x1)))⟩ def schema56_valid : schema56.Valid := by intro env hd hp norm_num [schema56, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema57 : Schema := ⟨[], [(qEq2 x0 x1)], (bEq2 (qEq2 (alias1 (qDiv2 x2 x3)) x0) (qEq2 (alias1 (qDiv2 x2 x3)) x1))⟩ def schema57_valid : schema57.Valid := by intro env hd hp norm_num [schema57, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema58 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (64) 1))) (qDiv2 (qc (1) 1) (qc (64) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (64) 1))) (qc (1) 64)))⟩ def schema58_valid : schema58.Valid := by intro env hd hp norm_num [schema58, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema59 : Schema := ⟨[], [], (bEq2 (qEq2 x0 (qMul2 (qc (1) 1) x1)) (qEq2 x0 x1))⟩ def schema59_valid : schema59.Valid := by intro env hd hp norm_num [schema59, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema60 : Schema := ⟨[], [(qEq2 x0 x1)], (qEq2 x1 x0)⟩ def schema60_valid : schema60.Valid := by intro env hd hp norm_num [schema60, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema61 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (35) 1))) (qDiv2 (qc (1) 1) (qc (35) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (35) 1))) (qc (1) 35)))⟩ def schema61_valid : schema61.Valid := by intro env hd hp norm_num [schema61, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema62 : Schema := ⟨[], [], (bEq2 (alias1 (qLe2 x0 (qc (1) 1))) (qLe2 (alias1 x0) (qc (1) 1)))⟩ def schema62_valid : schema62.Valid := by intro env hd hp norm_num [schema62, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema63 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 x1 (qc (1) 1))) (bEq2 x0 (qLe2 x1 (qc (1) 1))))⟩ def schema63_valid : schema63.Valid := by intro env hd hp norm_num [schema63, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema64 : Schema := ⟨[], [], (bEq2 (alias1 (qLt2 (qDiv2 (qc (1) 1) x1) x0)) (qLt2 (alias1 (qDiv2 (qc (1) 1) x1)) x0))⟩ def schema64_valid : schema64.Valid := by intro env hd hp norm_num [schema64, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema65 : Schema := ⟨[], [], (bEq2 (bEq2 (qLe2 x0 (alias1 (qDiv2 (qc (1) 1) x2))) x1) (bEq2 (qLe2 (qAdd2 x0 (qMul2 (qc (-1) 1) (alias1 (qDiv2 (qc (1) 1) x2)))) (qc (0) 1)) x1))⟩ def schema65_valid : schema65.Valid := by intro env hd hp norm_num [schema65, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema66 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (4) 1))) (qDiv2 (qc (1) 1) (qc (4) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (4) 1))) (qc (1) 4)))⟩ def schema66_valid : schema66.Valid := by intro env hd hp norm_num [schema66, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema67 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 x1 (alias1 (qDiv2 (qc (1) 1) x2)))) (bEq2 x0 (qLe2 (qAdd2 x1 (qMul2 (qc (-1) 1) (alias1 (qDiv2 (qc (1) 1) x2)))) (qc (0) 1))))⟩ def schema67_valid : schema67.Valid := by intro env hd hp norm_num [schema67, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema68 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (81) 1))) (qDiv2 (qc (1) 1) (qc (81) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (81) 1))) (qc (1) 81)))⟩ def schema68_valid : schema68.Valid := by intro env hd hp norm_num [schema68, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema69 : Schema := ⟨[], [], (bEq2 (alias1 (qLe2 x1 x0)) (qLe2 (alias1 x1) (alias1 x0)))⟩ def schema69_valid : schema69.Valid := by intro env hd hp norm_num [schema69, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema70 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 x2 x1)) (bEq2 x0 (qLe2 (qc (0) 1) (qAdd2 x1 (qMul2 (qc (-1) 1) x2)))))⟩ def schema70_valid : schema70.Valid := by intro env hd hp norm_num [schema70, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema71 : Schema := ⟨[], [], (bOr2 x0 (qEq2 x1 (ite3 x0 (alias1 (qDiv2 (qc (1) 1) x2)) x1)))⟩ def schema71_valid : schema71.Valid := by intro env hd hp norm_num [schema71, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema72 : Schema := ⟨[], [], (qEq2 (alias1 (ite3 x0 (qDiv2 (qc (1) 1) x2) x1)) (ite3 (alias1 x0) (alias1 (qDiv2 (qc (1) 1) x2)) (alias1 x1)))⟩ def schema72_valid : schema72.Valid := by intro env hd hp norm_num [schema72, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema73 : Schema := ⟨[], [(qEq2 x0 x1)], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) x2)) x0) (qEq2 (alias1 (qDiv2 (qc (1) 1) x2)) x1))⟩ def schema73_valid : schema73.Valid := by intro env hd hp norm_num [schema73, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema74 : Schema := ⟨[], [(qEq2 x0 x1), (qEq2 x1 x2), (qEq2 x2 x3)], (qEq2 x0 x3)⟩ def schema74_valid : schema74.Valid := by intro env hd hp norm_num [schema74, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema75 : Schema := ⟨[], [], (bOr3 x0 (bNot1 x1) (bNot1 (bEq2 x0 x1)))⟩ def schema75_valid : schema75.Valid := by intro env hd hp norm_num [schema75, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema76 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 x2 x1)) (bEq2 x0 (qLe2 (qAdd2 x2 (qMul2 (qc (-1) 1) x1)) (qc (0) 1))))⟩ def schema76_valid : schema76.Valid := by intro env hd hp norm_num [schema76, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema77 : Schema := ⟨[], [], (bEq2 (alias1 (bAnd3 x0 x1 x2)) (bAnd3 (alias1 x0) (alias1 x1) (alias1 x2)))⟩ def schema77_valid : schema77.Valid := by intro env hd hp norm_num [schema77, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema78 : Schema := ⟨[], [], (bEq2 (bAnd3 x0 x1 x2) (bNot1 (bOr3 (bNot1 x0) (bNot1 x1) (bNot1 x2))))⟩ def schema78_valid : schema78.Valid := by intro env hd hp norm_num [schema78, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema79 : Schema := ⟨[], [], (bEq2 (alias1 (bAndn [bf, x0, x1, x2])) (bAndn [bf, (alias1 x0), (alias1 x1), (alias1 x2)]))⟩ def schema79_valid : schema79.Valid := by intro env hd hp norm_num [schema79, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema80 : Schema := ⟨[], [], (bEq2 (bAndn [bf, x0, x1, x2]) bf)⟩ def schema80_valid : schema80.Valid := by intro env hd hp norm_num [schema80, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema81 : Schema := ⟨[], [(bEq2 x0 bf)], (bEq2 (bEq2 x1 x0) (bEq2 x1 bf))⟩ def schema81_valid : schema81.Valid := by intro env hd hp norm_num [schema81, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema82 : Schema := ⟨[], [], (zEq2 (alias1 (ite3 x0 (zc (1)) (zc (0)))) (ite3 (alias1 x0) (zc (1)) (zc (0))))⟩ def schema82_valid : schema82.Valid := by intro env hd hp norm_num [schema82, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema83 : Schema := ⟨[], [(zEq2 x0 x1)], (zEq2 x1 x0)⟩ def schema83_valid : schema83.Valid := by intro env hd hp norm_num [schema83, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema84 : Schema := ⟨[], [(zEq2 (zc (0)) x0), (zEq2 x0 x1)], (zEq2 (zc (0)) x1)⟩ def schema84_valid : schema84.Valid := by intro env hd hp norm_num [schema84, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema85 : Schema := ⟨[], [], (bOr2 (bNot1 x0) (zEq2 (zc (1)) (ite3 x0 (zc (1)) (zc (0)))))⟩ def schema85_valid : schema85.Valid := by intro env hd hp norm_num [schema85, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema86 : Schema := ⟨[], [(zEq2 x0 x1)], (bEq2 (zEq2 (zc (0)) x0) (zEq2 (zc (0)) x1))⟩ def schema86_valid : schema86.Valid := by intro env hd hp norm_num [schema86, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema87 : Schema := ⟨[], [(zEq2 (zc (1)) x0), (zEq2 x0 x1)], (zEq2 (zc (1)) x1)⟩ def schema87_valid : schema87.Valid := by intro env hd hp norm_num [schema87, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema88 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (7) 1))) (qDiv2 (qc (1) 1) (qc (7) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (7) 1))) (qc (1) 7)))⟩ def schema88_valid : schema88.Valid := by intro env hd hp norm_num [schema88, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema89 : Schema := ⟨[], [], (bOr3 (bNot1 (ite3 x0 x1 x2)) (bNot1 x0) x1)⟩ def schema89_valid : schema89.Valid := by intro env hd hp norm_num [schema89, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema90 : Schema := ⟨[], [], (bEq2 (alias1 (zLe2 (zc (0)) x0)) (zLe2 (zc (0)) (alias1 x0)))⟩ def schema90_valid : schema90.Valid := by intro env hd hp norm_num [schema90, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema91 : Schema := ⟨[], [], (bEq2 (alias1 (bOr2 x0 x1)) (bOr2 (alias1 x0) (alias1 x1)))⟩ def schema91_valid : schema91.Valid := by intro env hd hp norm_num [schema91, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema92 : Schema := ⟨[], [], (bEq2 (alias1 (bAnd2 x0 x1)) (bAnd2 (alias1 x0) (alias1 x1)))⟩ def schema92_valid : schema92.Valid := by intro env hd hp norm_num [schema92, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema93 : Schema := ⟨[], [], (bEq2 (bAnd2 x0 x1) (bNot1 (bOr2 (bNot1 x0) (bNot1 x1))))⟩ def schema93_valid : schema93.Valid := by intro env hd hp norm_num [schema93, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema94 : Schema := ⟨[], [], (bEq2 (alias1 (bNot1 x0)) (bNot1 (alias1 x0)))⟩ def schema94_valid : schema94.Valid := by intro env hd hp norm_num [schema94, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema95 : Schema := ⟨[], [], (bOr2 (bNot1 x0) (qEq2 (qc (1) 1) (ite3 x0 (qc (1) 1) x1)))⟩ def schema95_valid : schema95.Valid := by intro env hd hp norm_num [schema95, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema96 : Schema := ⟨[], [], (qEq2 (alias1 (ite3 x0 (qc (1) 1) x1)) (ite3 (alias1 x0) (qc (1) 1) (alias1 x1)))⟩ def schema96_valid : schema96.Valid := by intro env hd hp norm_num [schema96, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema97 : Schema := ⟨[], [(qEq2 x0 x1)], (bEq2 (qEq2 (qc (1) 1) x0) (qEq2 (qc (1) 1) x1))⟩ def schema97_valid : schema97.Valid := by intro env hd hp norm_num [schema97, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema98 : Schema := ⟨[], [], (qEq2 (alias1 (qDiv2 x0 x1)) (qDiv2 x0 x1))⟩ def schema98_valid : schema98.Valid := by intro env hd hp norm_num [schema98, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema99 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (4) 1))) (qDiv2 (qc (3) 1) (qc (4) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (4) 1))) (qc (3) 4)))⟩ def schema99_valid : schema99.Valid := by intro env hd hp norm_num [schema99, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema100 : Schema := ⟨[], [(qEq2 (alias1 (qDiv2 x0 x1)) (qDiv2 x0 x1)), (bEq2 (qEq2 (alias1 (qDiv2 x0 x1)) (qDiv2 x0 x1)) (qEq2 (alias1 (qDiv2 x0 x1)) x2))], (qEq2 (alias1 (qDiv2 x0 x1)) x2)⟩ def schema100_valid : schema100.Valid := by intro env hd hp norm_num [schema100, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema101 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (3) 1))) (qDiv2 (qc (1) 1) (qc (3) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (3) 1))) (qc (1) 3)))⟩ def schema101_valid : schema101.Valid := by intro env hd hp norm_num [schema101, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema102 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (5) 1))) (qDiv2 (qc (1) 1) (qc (5) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (5) 1))) (qc (1) 5)))⟩ def schema102_valid : schema102.Valid := by intro env hd hp norm_num [schema102, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema103 : Schema := ⟨[], [(qEq2 x0 x1), (qEq2 x2 x3)], (bEq2 (qEq2 x0 x2) (qEq2 x1 x3))⟩ def schema103_valid : schema103.Valid := by intro env hd hp norm_num [schema103, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema104 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (9) 1))) (qDiv2 (qc (1) 1) (qc (9) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (9) 1))) (qc (1) 9)))⟩ def schema104_valid : schema104.Valid := by intro env hd hp norm_num [schema104, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema105 : Schema := ⟨[], [(zEq2 x0 x1)], (bEq2 (zEq2 (zc (1)) x0) (zEq2 (zc (1)) x1))⟩ def schema105_valid : schema105.Valid := by intro env hd hp norm_num [schema105, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema106 : Schema := ⟨[], [], (qEq2 (alias1 (qDiv2 x0 x1)) (qDiv2 (alias1 x0) x1))⟩ def schema106_valid : schema106.Valid := by intro env hd hp norm_num [schema106, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema107 : Schema := ⟨[], [], (bEq2 (qEq2 x0 (qDiv2 x1 (qc (2) 1))) (qEq2 x0 (qMul2 (qc (1) 2) x1)))⟩ def schema107_valid : schema107.Valid := by intro env hd hp norm_num [schema107, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema108 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (bEq2 x1 bt)) (bEq2 x0 x1))⟩ def schema108_valid : schema108.Valid := by intro env hd hp norm_num [schema108, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema109 : Schema := ⟨[], [(qEq2 (alias1 (qDiv2 x2 x3)) x0), (qEq2 x0 x1)], (qEq2 (alias1 (qDiv2 x2 x3)) x1)⟩ def schema109_valid : schema109.Valid := by intro env hd hp norm_num [schema109, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema110 : Schema := ⟨[], [], (bOr3 (bNot1 (bOr2 x0 x1)) x0 x1)⟩ def schema110_valid : schema110.Valid := by intro env hd hp norm_num [schema110, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema111 : Schema := ⟨[], [], (bEq2 (qEq2 x0 (qDiv2 x1 (qc (3) 1))) (qEq2 x0 (qMul2 (qc (1) 3) x1)))⟩ def schema111_valid : schema111.Valid := by intro env hd hp norm_num [schema111, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema112 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x8c) 1))) (qDiv2 (qc (3) 1) (qc (0x8c) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x8c) 1))) (qc (3) 0x8c)))⟩ def schema112_valid : schema112.Valid := by intro env hd hp norm_num [schema112, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema113 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x100) 1))) (qDiv2 (qc (1) 1) (qc (0x100) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x100) 1))) (qc (1) 0x100)))⟩ def schema113_valid : schema113.Valid := by intro env hd hp norm_num [schema113, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema114 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x2d9) 1))) (qDiv2 (qc (1) 1) (qc (0x2d9) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x2d9) 1))) (qc (1) 0x2d9)))⟩ def schema114_valid : schema114.Valid := by intro env hd hp norm_num [schema114, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema115 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (27) 1))) (qDiv2 (qc (1) 1) (qc (27) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (27) 1))) (qc (1) 27)))⟩ def schema115_valid : schema115.Valid := by intro env hd hp norm_num [schema115, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema116 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (25) 1))) (qDiv2 (qc (1) 1) (qc (25) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (25) 1))) (qc (1) 25)))⟩ def schema116_valid : schema116.Valid := by intro env hd hp norm_num [schema116, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema117 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0xf5) 1))) (qDiv2 (qc (1) 1) (qc (0xf5) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0xf5) 1))) (qc (1) 0xf5)))⟩ def schema117_valid : schema117.Valid := by intro env hd hp norm_num [schema117, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema118 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x36b) 1))) (qDiv2 (qc (1) 1) (qc (0x36b) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x36b) 1))) (qc (1) 0x36b)))⟩ def schema118_valid : schema118.Valid := by intro env hd hp norm_num [schema118, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema119 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (20) 1))) (qDiv2 (qc (3) 1) (qc (20) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (20) 1))) (qc (3) 20)))⟩ def schema119_valid : schema119.Valid := by intro env hd hp norm_num [schema119, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema120 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x2bc) 1))) (qDiv2 (qc (3) 1) (qc (0x2bc) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x2bc) 1))) (qc (3) 0x2bc)))⟩ def schema120_valid : schema120.Valid := by intro env hd hp norm_num [schema120, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema121 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x217f) 1))) (qDiv2 (qc (1) 1) (qc (0x217f) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x217f) 1))) (qc (1) 0x217f)))⟩ def schema121_valid : schema121.Valid := by intro env hd hp norm_num [schema121, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema122 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x4000) 1))) (qDiv2 (qc (1) 1) (qc (0x4000) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x4000) 1))) (qc (1) 0x4000)))⟩ def schema122_valid : schema122.Valid := by intro env hd hp norm_num [schema122, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema123 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0xdac) 1))) (qDiv2 (qc (3) 1) (qc (0xdac) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0xdac) 1))) (qc (3) 0xdac)))⟩ def schema123_valid : schema123.Valid := by intro env hd hp norm_num [schema123, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema124 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0xaf) 1))) (qDiv2 (qc (1) 1) (qc (0xaf) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0xaf) 1))) (qc (1) 0xaf)))⟩ def schema124_valid : schema124.Valid := by intro env hd hp norm_num [schema124, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema125 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x2ee5) 1))) (qDiv2 (qc (1) 1) (qc (0x2ee5) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x2ee5) 1))) (qc (1) 0x2ee5)))⟩ def schema125_valid : schema125.Valid := by intro env hd hp norm_num [schema125, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema126 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x400) 1))) (qDiv2 (qc (1) 1) (qc (0x400) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x400) 1))) (qc (1) 0x400)))⟩ def schema126_valid : schema126.Valid := by intro env hd hp norm_num [schema126, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema127 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x7d) 1))) (qDiv2 (qc (1) 1) (qc (0x7d) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x7d) 1))) (qc (1) 0x7d)))⟩ def schema127_valid : schema127.Valid := by intro env hd hp norm_num [schema127, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema128 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x4c9) 1))) (qDiv2 (qc (1) 1) (qc (0x4c9) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x4c9) 1))) (qc (1) 0x4c9)))⟩ def schema128_valid : schema128.Valid := by intro env hd hp norm_num [schema128, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema129 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x4ce3) 1))) (qDiv2 (qc (1) 1) (qc (0x4ce3) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x4ce3) 1))) (qc (1) 0x4ce3)))⟩ def schema129_valid : schema129.Valid := by intro env hd hp norm_num [schema129, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema130 : Schema := ⟨[], [(zEq2 (zc (0)) x0)], (zEq2 x0 (zc (0)))⟩ def schema130_valid : schema130.Valid := by intro env hd hp norm_num [schema130, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema131 : Schema := ⟨[], [(zEq2 x0 x1), (zEq2 x1 (zc (0))), (zEq2 (zc (0)) x2)], (zEq2 x0 x2)⟩ def schema131_valid : schema131.Valid := by intro env hd hp norm_num [schema131, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema132 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (49) 1))) (qDiv2 (qc (1) 1) (qc (49) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (49) 1))) (qc (1) 49)))⟩ def schema132_valid : schema132.Valid := by intro env hd hp norm_num [schema132, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema133 : Schema := ⟨[], [], (bEq2 (zEq2 x0 (zc (1))) (zEq2 (zc (1)) x0))⟩ def schema133_valid : schema133.Valid := by intro env hd hp norm_num [schema133, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema134 : Schema := ⟨[], [], (bEq2 (alias1 (qLt2 x1 x0)) (qLt2 (alias1 x1) (alias1 x0)))⟩ def schema134_valid : schema134.Valid := by intro env hd hp norm_num [schema134, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema135 : Schema := ⟨[], [], (bEq2 (qLt2 x1 x0) (bNot1 (qLe2 x0 x1)))⟩ def schema135_valid : schema135.Valid := by intro env hd hp norm_num [schema135, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema136 : Schema := ⟨[], [], (bEq2 (bEq2 (qLe2 x0 x1) x2) (bEq2 (qLe2 (qAdd2 x0 (qMul2 (qc (-1) 1) x1)) (qc (0) 1)) x2))⟩ def schema136_valid : schema136.Valid := by intro env hd hp norm_num [schema136, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema137 : Schema := ⟨[], [], (bEq2 (qEq2 x0 (qDiv2 x1 (qc (4) 1))) (qEq2 x0 (qMul2 (qc (1) 4) x1)))⟩ def schema137_valid : schema137.Valid := by intro env hd hp norm_num [schema137, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema138 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x1f4) 1))) (qDiv2 (qc (3) 1) (qc (0x1f4) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x1f4) 1))) (qc (3) 0x1f4)))⟩ def schema138_valid : schema138.Valid := by intro env hd hp norm_num [schema138, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema139 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x271) 1))) (qDiv2 (qc (1) 1) (qc (0x271) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x271) 1))) (qc (1) 0x271)))⟩ def schema139_valid : schema139.Valid := by intro env hd hp norm_num [schema139, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema140 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0xf3) 1))) (qDiv2 (qc (1) 1) (qc (0xf3) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0xf3) 1))) (qc (1) 0xf3)))⟩ def schema140_valid : schema140.Valid := by intro env hd hp norm_num [schema140, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema141 : Schema := ⟨[], [], (qEq2 (alias1 (qMul2 (qDiv2 x1 x2) x0)) (qMul2 (alias1 (qDiv2 x1 x2)) (alias1 x0)))⟩ def schema141_valid : schema141.Valid := by intro env hd hp norm_num [schema141, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema142 : Schema := ⟨[], [], (bEq2 (qEq2 x0 (qMul2 (alias1 (qDiv2 x2 x3)) x1)) (qEq2 x0 (qMul2 x1 (alias1 (qDiv2 x2 x3)))))⟩ def schema142_valid : schema142.Valid := by intro env hd hp norm_num [schema142, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema143 : Schema := ⟨[], [], (qEq2 (qMul2 x0 (alias1 (qDiv2 x1 x2))) (qMul2 (alias1 (qDiv2 x1 x2)) x0))⟩ def schema143_valid : schema143.Valid := by intro env hd hp norm_num [schema143, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema144 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (5) 1) (qc (4) 1))) (qDiv2 (qc (5) 1) (qc (4) 1))) (qEq2 (alias1 (qDiv2 (qc (5) 1) (qc (4) 1))) (qc (5) 4)))⟩ def schema144_valid : schema144.Valid := by intro env hd hp norm_num [schema144, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema145 : Schema := ⟨[], [(qEq2 x0 x1), (qEq2 x1 x2), (qEq2 x2 x3), (qEq2 x3 x4)], (qEq2 x0 x4)⟩ def schema145_valid : schema145.Valid := by intro env hd hp norm_num [schema145, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema146 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x64) 1))) (qDiv2 (qc (3) 1) (qc (0x64) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x64) 1))) (qc (3) 0x64)))⟩ def schema146_valid : schema146.Valid := by intro env hd hp norm_num [schema146, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema147 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x961) 1))) (qDiv2 (qc (1) 1) (qc (0x961) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x961) 1))) (qc (1) 0x961)))⟩ def schema147_valid : schema147.Valid := by intro env hd hp norm_num [schema147, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema148 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x1000) 1))) (qDiv2 (qc (1) 1) (qc (0x1000) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x1000) 1))) (qc (1) 0x1000)))⟩ def schema148_valid : schema148.Valid := by intro env hd hp norm_num [schema148, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema149 : Schema := ⟨[], [(zEq2 x0 x1)], (bEq2 (zEq2 x0 (zc (0))) (zEq2 x1 (zc (0))))⟩ def schema149_valid : schema149.Valid := by intro env hd hp norm_num [schema149, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema150 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x9c4) 1))) (qDiv2 (qc (3) 1) (qc (0x9c4) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x9c4) 1))) (qc (3) 0x9c4)))⟩ def schema150_valid : schema150.Valid := by intro env hd hp norm_num [schema150, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema151 : Schema := ⟨[], [], (bEq2 (alias1 (ite3 x0 x1 x2)) (ite3 x0 (alias1 x1) (alias1 x2)))⟩ def schema151_valid : schema151.Valid := by intro env hd hp norm_num [schema151, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema152 : Schema := ⟨[], [], (bOr2 x0 (qEq2 x1 (ite3 x0 (qc (1) 1) x1)))⟩ def schema152_valid : schema152.Valid := by intro env hd hp norm_num [schema152, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema153 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x1117) 1))) (qDiv2 (qc (1) 1) (qc (0x1117) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x1117) 1))) (qc (1) 0x1117)))⟩ def schema153_valid : schema153.Valid := by intro env hd hp norm_num [schema153, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema154 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x19a1) 1))) (qDiv2 (qc (1) 1) (qc (0x19a1) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x19a1) 1))) (qc (1) 0x19a1)))⟩ def schema154_valid : schema154.Valid := by intro env hd hp norm_num [schema154, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema155 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x88b) 1))) (qDiv2 (qc (1) 1) (qc (0x88b) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x88b) 1))) (qc (1) 0x88b)))⟩ def schema155_valid : schema155.Valid := by intro env hd hp norm_num [schema155, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema156 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x6b3) 1))) (qDiv2 (qc (1) 1) (qc (0x6b3) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x6b3) 1))) (qc (1) 0x6b3)))⟩ def schema156_valid : schema156.Valid := by intro env hd hp norm_num [schema156, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema157 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0xc35) 1))) (qDiv2 (qc (1) 1) (qc (0xc35) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0xc35) 1))) (qc (1) 0xc35)))⟩ def schema157_valid : schema157.Valid := by intro env hd hp norm_num [schema157, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema158 : Schema := ⟨[], [(zEq2 (zc (1)) x0)], (zEq2 x0 (zc (1)))⟩ def schema158_valid : schema158.Valid := by intro env hd hp norm_num [schema158, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema159 : Schema := ⟨[], [(zEq2 (zc (0)) x0), (zEq2 x1 (zc (1)))], (bEq2 (zEq2 (zc (0)) x1) (zEq2 x0 (zc (1))))⟩ def schema159_valid : schema159.Valid := by intro env hd hp norm_num [schema159, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema160 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (4) 1) (qc (3) 1))) (qDiv2 (qc (4) 1) (qc (3) 1))) (qEq2 (alias1 (qDiv2 (qc (4) 1) (qc (3) 1))) (qc (4) 3)))⟩ def schema160_valid : schema160.Valid := by intro env hd hp norm_num [schema160, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema161 : Schema := ⟨[], [(qEq2 x0 x1), (qEq2 x1 x2), (qEq2 x2 x3), (qEq2 x3 x4), (qEq2 x4 x5)], (qEq2 x0 x5)⟩ def schema161_valid : schema161.Valid := by intro env hd hp norm_num [schema161, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema162 : Schema := ⟨[], [], (bEq2 (alias1 (qLe2 x0 x1)) (qLe2 x0 (alias1 x1)))⟩ def schema162_valid : schema162.Valid := by intro env hd hp norm_num [schema162, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema163 : Schema := ⟨[], [], (bOrn [(bNot1 (bOr3 x0 x1 x2)), x0, x1, x2])⟩ def schema163_valid : schema163.Valid := by intro env hd hp norm_num [schema163, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema164 : Schema := ⟨[], [(zEq2 x0 x1), (zEq2 x1 (zc (0)))], (zEq2 x0 (zc (0)))⟩ def schema164_valid : schema164.Valid := by intro env hd hp norm_num [schema164, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema165 : Schema := ⟨[], [(qEq2 x0 x1), (qEq2 x1 x2), (qEq2 x2 x3), (qEq2 x3 x4), (qEq2 x4 x5), (qEq2 x5 x6)], (qEq2 x0 x6)⟩ def schema165_valid : schema165.Valid := by intro env hd hp norm_num [schema165, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema166 : Schema := ⟨[], [(zEq2 x0 x1), (zEq2 x1 x2)], (zEq2 x0 x2)⟩ def schema166_valid : schema166.Valid := by intro env hd hp norm_num [schema166, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema167 : Schema := ⟨[], [], (bEq2 (zEq2 x0 (zc (0))) (zEq2 (zc (0)) x0))⟩ def schema167_valid : schema167.Valid := by intro env hd hp norm_num [schema167, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema168 : Schema := ⟨[], [], (bEq2 (alias1 (bAndn [bt, x0, x1, x2])) (bAndn [bt, (alias1 x0), (alias1 x1), (alias1 x2)]))⟩ def schema168_valid : schema168.Valid := by intro env hd hp norm_num [schema168, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema169 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (bAndn [bt, x1, x2, x3])) (bEq2 x0 (bAnd3 x1 x2 x3)))⟩ def schema169_valid : schema169.Valid := by intro env hd hp norm_num [schema169, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema170 : Schema := ⟨[], [], (bEq2 (alias1 (qLt2 (qc (1) 1) x0)) (qLt2 (qc (1) 1) (alias1 x0)))⟩ def schema170_valid : schema170.Valid := by intro env hd hp norm_num [schema170, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema171 : Schema := ⟨[], [], (bEq2 (qLt2 (qc (1) 1) x0) (bNot1 (qLe2 x0 (qc (1) 1))))⟩ def schema171_valid : schema171.Valid := by intro env hd hp norm_num [schema171, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema172 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (10) 1) (qc (9) 1))) (qDiv2 (qc (10) 1) (qc (9) 1))) (qEq2 (alias1 (qDiv2 (qc (10) 1) (qc (9) 1))) (qc (10) 9)))⟩ def schema172_valid : schema172.Valid := by intro env hd hp norm_num [schema172, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema173 : Schema := ⟨[], [(qEq2 (alias1 (qDiv2 (qc (1) 1) x2)) x0), (qEq2 x0 x1)], (qEq2 (alias1 (qDiv2 (qc (1) 1) x2)) x1)⟩ def schema173_valid : schema173.Valid := by intro env hd hp norm_num [schema173, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema174 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (28) 1))) (qDiv2 (qc (3) 1) (qc (28) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (28) 1))) (qc (3) 28)))⟩ def schema174_valid : schema174.Valid := by intro env hd hp norm_num [schema174, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema175 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (5) 1) (qc (0x41a7) 1))) (qDiv2 (qc (5) 1) (qc (0x41a7) 1))) (qEq2 (alias1 (qDiv2 (qc (5) 1) (qc (0x41a7) 1))) (qc (5) 0x41a7)))⟩ def schema175_valid : schema175.Valid := by intro env hd hp norm_num [schema175, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema176 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x157) 1))) (qDiv2 (qc (1) 1) (qc (0x157) 1))) (qEq2 (alias1 (qDiv2 (qc (1) 1) (qc (0x157) 1))) (qc (1) 0x157)))⟩ def schema176_valid : schema176.Valid := by intro env hd hp norm_num [schema176, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema177 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (5) 1) (qc (0x961) 1))) (qDiv2 (qc (5) 1) (qc (0x961) 1))) (qEq2 (alias1 (qDiv2 (qc (5) 1) (qc (0x961) 1))) (qc (5) 0x961)))⟩ def schema177_valid : schema177.Valid := by intro env hd hp norm_num [schema177, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema178 : Schema := ⟨[], [], (bEq2 (alias1 (qLt2 (qDiv2 x1 x2) x0)) (qLt2 (alias1 (qDiv2 x1 x2)) (alias1 x0)))⟩ def schema178_valid : schema178.Valid := by intro env hd hp norm_num [schema178, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema179 : Schema := ⟨[], [], (bEq2 (qLt2 (alias1 (qDiv2 x1 x2)) x0) (bNot1 (qLe2 x0 (alias1 (qDiv2 x1 x2)))))⟩ def schema179_valid : schema179.Valid := by intro env hd hp norm_num [schema179, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema180 : Schema := ⟨[], [], (bEq2 (bEq2 (qLe2 x0 (alias1 (qDiv2 x2 x3))) x1) (bEq2 (qLe2 (qc (0) 1) (qAdd2 (alias1 (qDiv2 x2 x3)) (qMul2 (qc (-1) 1) x0))) x1))⟩ def schema180_valid : schema180.Valid := by intro env hd hp norm_num [schema180, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema181 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (5) 1) (qc (7) 1))) (qDiv2 (qc (5) 1) (qc (7) 1))) (qEq2 (alias1 (qDiv2 (qc (5) 1) (qc (7) 1))) (qc (5) 7)))⟩ def schema181_valid : schema181.Valid := by intro env hd hp norm_num [schema181, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema182 : Schema := ⟨[], [], (bEq2 (alias1 (qLt2 x1 x0)) (qLt2 x1 (alias1 x0)))⟩ def schema182_valid : schema182.Valid := by intro env hd hp norm_num [schema182, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema183 : Schema := ⟨[], [], (bEq2 (alias1 (qLe2 x0 x1)) (qLe2 (alias1 x0) x1))⟩ def schema183_valid : schema183.Valid := by intro env hd hp norm_num [schema183, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema184 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 x1 x2)) (bEq2 x0 (qLe2 x1 x2)))⟩ def schema184_valid : schema184.Valid := by intro env hd hp norm_num [schema184, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema185 : Schema := ⟨[], [], (bEq2 (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x30d4) 1))) (qDiv2 (qc (3) 1) (qc (0x30d4) 1))) (qEq2 (alias1 (qDiv2 (qc (3) 1) (qc (0x30d4) 1))) (qc (3) 0x30d4)))⟩ def schema185_valid : schema185.Valid := by intro env hd hp norm_num [schema185, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema186 : Schema := ⟨[], [], (bEq2 (alias1 (qLe2 (qDiv2 x1 x2) x0)) (qLe2 (alias1 (qDiv2 x1 x2)) x0))⟩ def schema186_valid : schema186.Valid := by intro env hd hp norm_num [schema186, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema187 : Schema := ⟨[], [], (bEq2 (bEq2 x0 (qLe2 (alias1 (qDiv2 x2 x3)) x1)) (bEq2 x0 (qLe2 (qc (0) 1) (qAdd2 x1 (qMul2 (qc (-1) 1) (alias1 (qDiv2 x2 x3)))))))⟩ def schema187_valid : schema187.Valid := by intro env hd hp norm_num [schema187, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema188 : Schema := ⟨[], [], (bEq2 (alias1 (qLt2 x0 x1)) (qLt2 x0 (alias1 x1)))⟩ def schema188_valid : schema188.Valid := by intro env hd hp norm_num [schema188, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) def schema189 : Schema := ⟨[], [(zEq2 x0 (zc (0)))], (zEq2 (zc (0)) x0)⟩ def schema189_valid : schema189.Valid := by intro env hd hp norm_num [schema189, eval, evalOp, boolValue, intValue, ratValue, zeroValue] at hd hp ⊢ <;> grind (config := { splits := 64, ematch := 0, gen := 0 }) end ClosureRewriteParametric end PolicySubmissionPart17 /- Component CompactNatData; SHA256 2ab9f722c7bce53f25abfeb5db53bc4cd7258217f43b0aed46de4c663a2ba4f8. -/ section PolicySubmissionPart18 /- Packed base-64 digits of finite numerical certificate data. -/ namespace CompactNatData def step (state : List Nat × Nat × Nat) (d : Nat) : List Nat × Nat × Nat := let value := state.2.1 + d % 32 * state.2.2 if d < 32 then (value :: state.1, 0, 1) else (state.1, value, state.2.2 * 32) def read : Nat → Nat → (List Nat × Nat × Nat) → (List Nat × Nat × Nat) | 0, _, state => state | fuel + 1, packed, state => read fuel (packed / 64) (step state (packed % 64)) def decode (digits packed : Nat) : List Nat := (read digits packed ([], 0, 1)).1.reverse end CompactNatData end PolicySubmissionPart18 /- Component PackedNatTable; SHA256 4dbc0fd1f62f91219e64063380c873d611f8bd540bba3156d774d7ec2687dc0a. -/ section PolicySubmissionPart19 /- Random access to finite packed numerical records using balanced tables. -/ namespace PackedNatTable inductive Table (α : Type) where | leaf : Array α → Table α | branch : Nat → Table α → Table α → Table α def Table.get (fallback : α) : Table α → Nat → α | .leaf xs, i => xs[i]?.getD fallback | .branch cutoff left right, i => if i < cutoff then left.get fallback i else right.get fallback (i - cutoff) structure Block where offsets : Nat data : Nat def emptyBlock : Block := ⟨0, 0⟩ def Block.start (b : Block) (i : Nat) : Nat := (b.offsets >>> (13 * i)) &&& 0x1fff def Block.get (b : Block) (i : Nat) : List Nat := let first := b.start i let count := b.start (i + 1) - first let packed := (b.data >>> (6 * first)) &&& ((1 <<< (6 * count)) - 1) CompactNatData.decode count packed def records (t : Table Block) (i : Nat) : List Nat := (t.get emptyBlock (i / 32)).get (i % 32) end PackedNatTable end PolicySubmissionPart19 /- Component PackedTableAll; SHA256 9c01cd09571cad070d9e1d6443d53b7794fed50f43d7a2fa1b7fd48859621c7c. -/ section PolicySubmissionPart20 namespace PackedNatTable def Table.All (P : α → Prop) : Table α → Prop | .leaf xs => ∀ a ∈ xs, P a | .branch _ left right => left.All P ∧ right.All P def Table.get_all (P : α → Prop) (fallback : α) (hf : P fallback) (t : Table α) (ht : t.All P) (i : Nat) : P (t.get fallback i) := by induction t generalizing i with | leaf xs => cases he : xs[i]? with | none => simpa only [Table.get, he, Option.getD_none] using hf | some a => simpa only [Table.get, he, Option.getD_some] using ht a (Array.mem_of_getElem? he) | branch cutoff left right ihl ihr => obtain ⟨hl, hr⟩ := ht by_cases hi : i < cutoff · simpa only [Table.get, hi, ↓reduceIte] using ihl hl i · simpa only [Table.get, hi, ↓reduceIte] using ihr hr (i - cutoff) end PackedNatTable end PolicySubmissionPart20 /- Component ClosureSchemaParametricRegistry; SHA256 0dc7118a6102a6013eced625d3ebf736d4cb3fe5bc7c02a35a71c392bd03a4c1. -/ section PolicySubmissionPart21 namespace ClosureRewriteParametric open ClosurePattern ClosureSemantics PackedNatTable def fallback : Schema := ⟨[], [], .node (.bConst true) []⟩ def fallback_valid : fallback.Valid := by simp [Schema.Valid, fallback, eval, evalOp, boolValue] def tableLLLL : Table Schema := .leaf #[schema0, schema1, schema2, schema3, schema4, schema5, schema6, schema7, schema8, schema9, schema10] def tableLLLL_valid : tableLLLL.All Schema.Valid := by simp [Table.All, tableLLLL, schema0_valid, schema1_valid, schema2_valid, schema3_valid, schema4_valid, schema5_valid, schema6_valid, schema7_valid, schema8_valid, schema9_valid, schema10_valid] def tableLLLR : Table Schema := .leaf #[schema11, schema12, schema13, schema14, schema15, schema16, schema17, schema18, schema19, schema20, schema21, schema22] def tableLLLR_valid : tableLLLR.All Schema.Valid := by simp [Table.All, tableLLLR, schema11_valid, schema12_valid, schema13_valid, schema14_valid, schema15_valid, schema16_valid, schema17_valid, schema18_valid, schema19_valid, schema20_valid, schema21_valid, schema22_valid] def tableLLL : Table Schema := .branch 11 tableLLLL tableLLLR def tableLLL_valid : tableLLL.All Schema.Valid := ⟨tableLLLL_valid, tableLLLR_valid⟩ def tableLLRL : Table Schema := .leaf #[schema23, schema24, schema25, schema26, schema27, schema28, schema29, schema30, schema31, schema32, schema33, schema34] def tableLLRL_valid : tableLLRL.All Schema.Valid := by simp [Table.All, tableLLRL, schema23_valid, schema24_valid, schema25_valid, schema26_valid, schema27_valid, schema28_valid, schema29_valid, schema30_valid, schema31_valid, schema32_valid, schema33_valid, schema34_valid] def tableLLRR : Table Schema := .leaf #[schema35, schema36, schema37, schema38, schema39, schema40, schema41, schema42, schema43, schema44, schema45, schema46] def tableLLRR_valid : tableLLRR.All Schema.Valid := by simp [Table.All, tableLLRR, schema35_valid, schema36_valid, schema37_valid, schema38_valid, schema39_valid, schema40_valid, schema41_valid, schema42_valid, schema43_valid, schema44_valid, schema45_valid, schema46_valid] def tableLLR : Table Schema := .branch 12 tableLLRL tableLLRR def tableLLR_valid : tableLLR.All Schema.Valid := ⟨tableLLRL_valid, tableLLRR_valid⟩ def tableLL : Table Schema := .branch 23 tableLLL tableLLR def tableLL_valid : tableLL.All Schema.Valid := ⟨tableLLL_valid, tableLLR_valid⟩ def tableLRLL : Table Schema := .leaf #[schema47, schema48, schema49, schema50, schema51, schema52, schema53, schema54, schema55, schema56, schema57, schema58] def tableLRLL_valid : tableLRLL.All Schema.Valid := by simp [Table.All, tableLRLL, schema47_valid, schema48_valid, schema49_valid, schema50_valid, schema51_valid, schema52_valid, schema53_valid, schema54_valid, schema55_valid, schema56_valid, schema57_valid, schema58_valid] def tableLRLR : Table Schema := .leaf #[schema59, schema60, schema61, schema62, schema63, schema64, schema65, schema66, schema67, schema68, schema69, schema70] def tableLRLR_valid : tableLRLR.All Schema.Valid := by simp [Table.All, tableLRLR, schema59_valid, schema60_valid, schema61_valid, schema62_valid, schema63_valid, schema64_valid, schema65_valid, schema66_valid, schema67_valid, schema68_valid, schema69_valid, schema70_valid] def tableLRL : Table Schema := .branch 12 tableLRLL tableLRLR def tableLRL_valid : tableLRL.All Schema.Valid := ⟨tableLRLL_valid, tableLRLR_valid⟩ def tableLRRL : Table Schema := .leaf #[schema71, schema72, schema73, schema74, schema75, schema76, schema77, schema78, schema79, schema80, schema81, schema82] def tableLRRL_valid : tableLRRL.All Schema.Valid := by simp [Table.All, tableLRRL, schema71_valid, schema72_valid, schema73_valid, schema74_valid, schema75_valid, schema76_valid, schema77_valid, schema78_valid, schema79_valid, schema80_valid, schema81_valid, schema82_valid] def tableLRRR : Table Schema := .leaf #[schema83, schema84, schema85, schema86, schema87, schema88, schema89, schema90, schema91, schema92, schema93, schema94] def tableLRRR_valid : tableLRRR.All Schema.Valid := by simp [Table.All, tableLRRR, schema83_valid, schema84_valid, schema85_valid, schema86_valid, schema87_valid, schema88_valid, schema89_valid, schema90_valid, schema91_valid, schema92_valid, schema93_valid, schema94_valid] def tableLRR : Table Schema := .branch 12 tableLRRL tableLRRR def tableLRR_valid : tableLRR.All Schema.Valid := ⟨tableLRRL_valid, tableLRRR_valid⟩ def tableLR : Table Schema := .branch 24 tableLRL tableLRR def tableLR_valid : tableLR.All Schema.Valid := ⟨tableLRL_valid, tableLRR_valid⟩ def tableL : Table Schema := .branch 47 tableLL tableLR def tableL_valid : tableL.All Schema.Valid := ⟨tableLL_valid, tableLR_valid⟩ def tableRLLL : Table Schema := .leaf #[schema95, schema96, schema97, schema98, schema99, schema100, schema101, schema102, schema103, schema104, schema105] def tableRLLL_valid : tableRLLL.All Schema.Valid := by simp [Table.All, tableRLLL, schema95_valid, schema96_valid, schema97_valid, schema98_valid, schema99_valid, schema100_valid, schema101_valid, schema102_valid, schema103_valid, schema104_valid, schema105_valid] def tableRLLR : Table Schema := .leaf #[schema106, schema107, schema108, schema109, schema110, schema111, schema112, schema113, schema114, schema115, schema116, schema117] def tableRLLR_valid : tableRLLR.All Schema.Valid := by simp [Table.All, tableRLLR, schema106_valid, schema107_valid, schema108_valid, schema109_valid, schema110_valid, schema111_valid, schema112_valid, schema113_valid, schema114_valid, schema115_valid, schema116_valid, schema117_valid] def tableRLL : Table Schema := .branch 11 tableRLLL tableRLLR def tableRLL_valid : tableRLL.All Schema.Valid := ⟨tableRLLL_valid, tableRLLR_valid⟩ def tableRLRL : Table Schema := .leaf #[schema118, schema119, schema120, schema121, schema122, schema123, schema124, schema125, schema126, schema127, schema128, schema129] def tableRLRL_valid : tableRLRL.All Schema.Valid := by simp [Table.All, tableRLRL, schema118_valid, schema119_valid, schema120_valid, schema121_valid, schema122_valid, schema123_valid, schema124_valid, schema125_valid, schema126_valid, schema127_valid, schema128_valid, schema129_valid] def tableRLRR : Table Schema := .leaf #[schema130, schema131, schema132, schema133, schema134, schema135, schema136, schema137, schema138, schema139, schema140, schema141] def tableRLRR_valid : tableRLRR.All Schema.Valid := by simp [Table.All, tableRLRR, schema130_valid, schema131_valid, schema132_valid, schema133_valid, schema134_valid, schema135_valid, schema136_valid, schema137_valid, schema138_valid, schema139_valid, schema140_valid, schema141_valid] def tableRLR : Table Schema := .branch 12 tableRLRL tableRLRR def tableRLR_valid : tableRLR.All Schema.Valid := ⟨tableRLRL_valid, tableRLRR_valid⟩ def tableRL : Table Schema := .branch 23 tableRLL tableRLR def tableRL_valid : tableRL.All Schema.Valid := ⟨tableRLL_valid, tableRLR_valid⟩ def tableRRLL : Table Schema := .leaf #[schema142, schema143, schema144, schema145, schema146, schema147, schema148, schema149, schema150, schema151, schema152, schema153] def tableRRLL_valid : tableRRLL.All Schema.Valid := by simp [Table.All, tableRRLL, schema142_valid, schema143_valid, schema144_valid, schema145_valid, schema146_valid, schema147_valid, schema148_valid, schema149_valid, schema150_valid, schema151_valid, schema152_valid, schema153_valid] def tableRRLR : Table Schema := .leaf #[schema154, schema155, schema156, schema157, schema158, schema159, schema160, schema161, schema162, schema163, schema164, schema165] def tableRRLR_valid : tableRRLR.All Schema.Valid := by simp [Table.All, tableRRLR, schema154_valid, schema155_valid, schema156_valid, schema157_valid, schema158_valid, schema159_valid, schema160_valid, schema161_valid, schema162_valid, schema163_valid, schema164_valid, schema165_valid] def tableRRL : Table Schema := .branch 12 tableRRLL tableRRLR def tableRRL_valid : tableRRL.All Schema.Valid := ⟨tableRRLL_valid, tableRRLR_valid⟩ def tableRRRL : Table Schema := .leaf #[schema166, schema167, schema168, schema169, schema170, schema171, schema172, schema173, schema174, schema175, schema176, schema177] def tableRRRL_valid : tableRRRL.All Schema.Valid := by simp [Table.All, tableRRRL, schema166_valid, schema167_valid, schema168_valid, schema169_valid, schema170_valid, schema171_valid, schema172_valid, schema173_valid, schema174_valid, schema175_valid, schema176_valid, schema177_valid] def tableRRRR : Table Schema := .leaf #[schema178, schema179, schema180, schema181, schema182, schema183, schema184, schema185, schema186, schema187, schema188, schema189] def tableRRRR_valid : tableRRRR.All Schema.Valid := by simp [Table.All, tableRRRR, schema178_valid, schema179_valid, schema180_valid, schema181_valid, schema182_valid, schema183_valid, schema184_valid, schema185_valid, schema186_valid, schema187_valid, schema188_valid, schema189_valid] def tableRRR : Table Schema := .branch 12 tableRRRL tableRRRR def tableRRR_valid : tableRRR.All Schema.Valid := ⟨tableRRRL_valid, tableRRRR_valid⟩ def tableRR : Table Schema := .branch 24 tableRRL tableRRR def tableRR_valid : tableRR.All Schema.Valid := ⟨tableRRL_valid, tableRRR_valid⟩ def tableR : Table Schema := .branch 47 tableRL tableRR def tableR_valid : tableR.All Schema.Valid := ⟨tableRL_valid, tableRR_valid⟩ def table : Table Schema := .branch 95 tableL tableR def table_valid : table.All Schema.Valid := ⟨tableL_valid, tableR_valid⟩ def schema (i : Nat) : Schema := table.get fallback i def schema_valid (i : Nat) : (schema i).Valid := Table.get_all Schema.Valid fallback fallback_valid table table_valid i end ClosureRewriteParametric end PolicySubmissionPart21 /- Component PolicyLinearClause; SHA256 ed38b741d2cf872a03c0e92ffd071c2fac5ec580ae6dba84d77409a7803affbc. -/ section PolicySubmissionPart22 /- Arithmetic implication certificates imply the actual signed SAT clauses. -/ namespace ClosureLinear open ClosureSemantics Bounty def implicationIncluded (premises : List ℕ) (conclusion : ℕ) (clause : List ℤ) : Bool := decide (((conclusion + 1 : ℕ) : ℤ) ∈ clause) && premises.all (fun i => decide (-((i + 1 : ℕ) : ℤ) ∈ clause)) def dense_positive_holds (values : Valuation) (i : ℕ) (h : (values i).b = true) : policySignedHolds (fun v => (values (v - 1)).b = true) ((i + 1 : ℕ) : ℤ) := by have hp : (0 : ℤ) < ((i + 1 : ℕ) : ℤ) := by omega simpa only [policySignedHolds, if_pos hp, Int.natAbs_natCast, Nat.add_sub_cancel] using h def dense_negative_holds (values : Valuation) (i : ℕ) (h : (values i).b ≠ true) : policySignedHolds (fun v => (values (v - 1)).b = true) (-((i + 1 : ℕ) : ℤ)) := by have hp : ¬(0 : ℤ) < -((i + 1 : ℕ) : ℤ) := by omega simpa only [policySignedHolds, if_neg hp, Int.natAbs_neg, Int.natAbs_natCast, Nat.add_sub_cancel] using h def implicationIncluded_sound (values : Valuation) (premises : List ℕ) (conclusion : ℕ) (clause : List ℤ) (hc : implicationIncluded premises conclusion clause = true) (h : (∀ i ∈ premises, (values i).b = true) → (values conclusion).b = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) clause := by classical have hp : (((conclusion + 1 : ℕ) : ℤ) ∈ clause) ∧ ∀ i ∈ premises, -((i + 1 : ℕ) : ℤ) ∈ clause := by simpa [implicationIncluded, Bool.and_eq_true] using hc by_cases hm : ∀ i ∈ premises, (values i).b = true · exact ⟨_, hp.1, dense_positive_holds values conclusion (h hm)⟩ · push Not at hm obtain ⟨i, hi, hv⟩ := hm exact ⟨_, hp.2 i hi, dense_negative_holds values i hv⟩ def checkImplicationClause (program : ℕ → Node) (ids : List ℕ) (integer : Bool) (fuel : ℕ) (premises : List ℕ) (conclusion : ℕ) (certs : List (List (ℕ × ℕ))) (clause : List ℤ) : Bool := implicationIncluded premises conclusion clause && checkImplication program ids integer fuel premises conclusion certs def checkImplicationClause_sound (program : ℕ → Node) (ids : List ℕ) (integer : Bool) (input values : Valuation) (he : Equations program input values) (fuel : ℕ) (premises : List ℕ) (conclusion : ℕ) (certs : List (List (ℕ × ℕ))) (clause : List ℤ) (hc : checkImplicationClause program ids integer fuel premises conclusion certs clause = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) clause := by have hp : implicationIncluded premises conclusion clause = true ∧ checkImplication program ids integer fuel premises conclusion certs = true := by simpa [checkImplicationClause, Bool.and_eq_true] using hc exact implicationIncluded_sound values premises conclusion clause hp.1 (checkImplication_sound program ids integer input values he fuel premises conclusion certs hp.2) end ClosureLinear end PolicySubmissionPart22 /- Component PolicyLinearRecords; SHA256 3015b3ca06db8cd233f235e499a16993dae4a4e9e4896b710e8d43364ef16b85. -/ section PolicySubmissionPart23 /- Untrusted numerical records and bounded batches of arithmetic certificates. -/ namespace ClosureLinear open ClosureSemantics Bounty structure ArithmeticCertificate where integer : Bool fuel : ℕ conclusion : ℕ cuts : List ℕ premises : List ℕ weights : List (List (ℕ × ℕ)) def readNatList : List ℕ → Option (List ℕ × List ℕ) | [] => none | n :: xs => if n ≤ xs.length then some (xs.take n, xs.drop n) else none def readWeightPairs : ℕ → List ℕ → Option (List (ℕ × ℕ) × List ℕ) | 0, xs => some ([], xs) | n + 1, i :: w :: xs => do let (rest, tail) ← readWeightPairs n xs pure ((i, w) :: rest, tail) | _, _ => none def readWeightBranches : ℕ → List ℕ → Option (List (List (ℕ × ℕ)) × List ℕ) | 0, xs => some ([], xs) | n + 1, count :: xs => do let (weights, tail) ← readWeightPairs count xs let (rest, tail) ← readWeightBranches n tail pure (weights :: rest, tail) | _, _ => none def decodeArithmeticCertificate : List ℕ → Option ArithmeticCertificate | mode :: fuel :: conclusion :: xs => do let (cuts, xs) ← readNatList xs let (premises, xs) ← readNatList xs match xs with | count :: xs => let (weights, tail) ← readWeightBranches count xs match tail with | [] => pure ⟨mode == 1, fuel, conclusion, cuts, premises, weights⟩ | _ => none | [] => none | _ => none def checkArithmeticRecord (program : ℕ → Node) (clause : List ℤ) (record : List ℕ) : Bool := match decodeArithmeticCertificate record with | none => false | some cert => checkImplicationClause program cert.cuts cert.integer cert.fuel cert.premises cert.conclusion cert.weights clause def checkArithmeticRecord_sound (program : ℕ → Node) (input values : Valuation) (he : Equations program input values) (clause : List ℤ) (record : List ℕ) (hc : checkArithmeticRecord program clause record = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) clause := by cases hd : decodeArithmeticCertificate record with | none => simp [checkArithmeticRecord, hd] at hc | some cert => exact checkImplicationClause_sound program cert.cuts cert.integer input values he cert.fuel cert.premises cert.conclusion cert.weights clause (by simpa [checkArithmeticRecord, hd] using hc) def checkArithmeticEntry (program : ℕ → Node) (clauses : ℕ → List ℤ) : List ℕ → Bool | [] => false | clauseId :: record => checkArithmeticRecord program (clauses clauseId) record def checkArithmeticEntry_sound (program : ℕ → Node) (input values : Valuation) (he : Equations program input values) (clauses : ℕ → List ℤ) (entry : List ℕ) (hc : checkArithmeticEntry program clauses entry = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (clauses (entry.headD 0)) := by cases entry with | nil => simp [checkArithmeticEntry] at hc | cons clauseId record => exact checkArithmeticRecord_sound program input values he (clauses clauseId) record hc def checkArithmeticBlock (program : ℕ → Node) (clauses : ℕ → List ℤ) (records : ℕ → List ℕ) (start count : ℕ) : Bool := (List.range count).all fun i => checkArithmeticEntry program clauses (records (start + i)) def checkArithmeticBlock_sound (program : ℕ → Node) (input values : Valuation) (he : Equations program input values) (clauses : ℕ → List ℤ) (records : ℕ → List ℕ) (start count : ℕ) (hc : checkArithmeticBlock program clauses records start count = true) (i : ℕ) (hi : i < count) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (clauses ((records (start + i)).headD 0)) := by have h : ∀ j ∈ List.range count, checkArithmeticEntry program clauses (records (start + j)) = true := by simpa only [checkArithmeticBlock, List.all_eq_true] using hc exact checkArithmeticEntry_sound program input values he clauses (records (start + i)) (h i (List.mem_range.mpr hi)) end ClosureLinear end PolicySubmissionPart23 /- Component ClosureSchemaParametricRecords; SHA256 3c51ab537365a243c9a9ae846878c9d35657109bf657203fff54f634968efa3f. -/ section PolicySubmissionPart24 namespace ClosurePattern open ClosureSemantics Bounty structure SchemaCertificate where schemaIndex : Nat fuel : Nat conclusion : Nat cuts : List Nat premises : List Nat def decodeSchemaCertificate : List Nat → Option SchemaCertificate | schemaIndex :: fuel :: conclusion :: xs => do let (cuts, xs) ← ClosureLinear.readNatList xs let (premises, tail) ← ClosureLinear.readNatList xs match tail with | [] => pure ⟨schemaIndex, fuel, conclusion, cuts, premises⟩ | _ => none | _ => none def checkSchemaRecord (program : Nat → Node) (clause : List Int) (record : List Nat) : Bool := match decodeSchemaCertificate record with | none => false | some cert => ClosureLinear.implicationIncluded cert.premises cert.conclusion clause && checkSchema program cert.cuts cert.fuel (ClosureRewriteParametric.schema cert.schemaIndex) cert.premises cert.conclusion def checkSchemaRecord_sound (program : Nat → Node) (input values : Valuation) (he : Equations program input values) (clause : List Int) (record : List Nat) (hc : checkSchemaRecord program clause record = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) clause := by cases hd : decodeSchemaCertificate record with | none => simp [checkSchemaRecord, hd] at hc | some cert => have hh : ClosureLinear.implicationIncluded cert.premises cert.conclusion clause = true ∧ checkSchema program cert.cuts cert.fuel (ClosureRewriteParametric.schema cert.schemaIndex) cert.premises cert.conclusion = true := by simpa [checkSchemaRecord, hd, Bool.and_eq_true] using hc exact ClosureLinear.implicationIncluded_sound values cert.premises cert.conclusion clause hh.1 (checkSchema_sound program cert.cuts input values he cert.fuel (ClosureRewriteParametric.schema cert.schemaIndex) cert.premises cert.conclusion (ClosureRewriteParametric.schema_valid cert.schemaIndex) hh.2) def checkSchemaEntry (program : Nat → Node) (clauses : Nat → List Int) : List Nat → Bool | [] => false | clauseId :: record => checkSchemaRecord program (clauses clauseId) record def checkSchemaEntry_sound (program : Nat → Node) (input values : Valuation) (he : Equations program input values) (clauses : Nat → List Int) (entry : List Nat) (hc : checkSchemaEntry program clauses entry = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (clauses (entry.headD 0)) := by cases entry with | nil => simp [checkSchemaEntry] at hc | cons clauseId record => exact checkSchemaRecord_sound program input values he _ record hc def checkSchemaBlock (program : Nat → Node) (clauses : Nat → List Int) (records : Nat → List Nat) (start count : Nat) : Bool := (List.range count).all fun i => checkSchemaEntry program clauses (records (start + i)) def checkSchemaBlock_sound (program : Nat → Node) (input values : Valuation) (he : Equations program input values) (clauses : Nat → List Int) (records : Nat → List Nat) (start count : Nat) (hc : checkSchemaBlock program clauses records start count = true) (i : Nat) (hi : i < count) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (clauses ((records (start + i)).headD 0)) := by have h : ∀ j ∈ List.range count, checkSchemaEntry program clauses (records (start + j)) = true := by simpa only [checkSchemaBlock, List.all_eq_true] using hc exact checkSchemaEntry_sound program input values he clauses (records (start + i)) (h i (List.mem_range.mpr hi)) end ClosurePattern end PolicySubmissionPart24 /- Component PolicyInitialParametricData; SHA256 490025abab2651d5acd7ec2dd9fae3628428058da7a231380f5f297a0796b7f4. -/ section PolicySubmissionPart25 namespace PolicyCircuitPacked0 open PackedNatTable def tableLLLL : Table Block := .leaf #[ ⟨0x6102e01640ac0530280134094047022010407c03b01c00d406402f01600a404c023010007403401700a004401c00b0040014004000, 0x18fc0607fd7ded9e76f75cf9c73d6dcf5a73a65bdd86f65dbd966f555ad546b54dabd267a459e506763d8c8e5f1357acc4332d0cca3fe24ff883fd1ced86226146f840f90c2f42401⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x6ba82801aea07f06ba41f81ae807d06ba01f01ae707b06b9c1e81aba07906a981e01aa607706a801d81a6a075069a81d01a67073068f01c81a240710688c1c01a2306f067d81b819f606d067881b019bc06b066a81a819aa0690669c1a019a70670659819819650650658c1901963063064881881922061⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x72ec3801cba0bf072e82f81cb70bd072dc2f01cb70bb072b02e81cac0b9071d82e01c760b7071d42d81c750b5071d02d01c730b3071cc2c81c730b1071c82c01c720af071982b81c660ad070c82b01c320ab070c82a81c2c0a9070b02a01be70a706df42981b7d0a506cb82901b2b0a306cac2881b200a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x7ac04801e7c0ff079f03f81e760fd0798c3f01e630fb079883e81e620f9078fc3e01e3f0f7078c83d81df90f5077e43d01de80f3076d03c81d790f1075e43c01d760ef075d83b81d350ed074cc3b01d330eb074c83a81d320e9074943a01cf10e7073c43981ceb0e5073ac3901cbb0e3072ec3881cbb0e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x7fdc5801ff513f07fc84f81ff113d07fbc4f01feb13b07fac4e81fea13907f804e01fa613707e984d81fa513507e904d01fa313307ddc4c81f7113107cf84c01f3e12f07c944b81f2512d07c904b01f2412b07c844a81f2112907bd84a01ee012707b804981ebf12507af84901ebe12307af44881ebd121⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xa3e068028f617f0a3cc5f828f117d0a3b85f028ea17b0a3a05e828e21790a3805e028bd1770a2e45d828b71750a2c05d028ad1730a2ac5c828a91710a2885c028a016f0a1f45b8287916d0a1dc5b0286e16b0a1b45a8286a1690a0fc5a028251670a084598282016507ff45901ffc16307fec5881ff8161⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xa7e478029f51bf0a7c86f829ee1bd0a7ac6f029e91bb0a7906e829e11b90a6ec6e029a41b70a6846d8297e1b50a5f46d0297b1b30a5e46c829771b10a5d06c0296f1af0a5b46b829651ad0a5906b029621ab0a4ec6a829371a90a4cc6a029311a70a4b869829251a50a48c69029211a30a3f468828fa1a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xa9e08802a771ff0a9d87f82a751fd0a9d47f02a751fb0a9cc7e82a701f90a9bc7e02a6c1f70a9847d82a601f50a8fc7d02a3e1f30a8f47c82a3d1f10a8dc7c02a311ef0a8c07b82a301ed0a8bc7b02a2e1eb0a8b87a82a2d1e90a8b47a02a251e70a88479829ff1e50a7fc79029fe1e30a7f878829fd1e1⟩ ] def tableLLLR : Table Block := .leaf #[ ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xadd49802b6823f0ad8c8f82b3b23d0ace48f02b3323b0acc88e82b2e2390acb48e02b2c2370aca08d82b262350ac908d02b202330abf88c82af72310abd48c02af122f0abbc8b82ab522d0aac48b02aaf22b0aabc8a82aaa2290aaa88a02aa82270aaa08982aa62250aa8c8902a7e2230a9f48882a7d221⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xb190a802c6027f0b0e89f82c3827d0b0d89f02c3227b0b0b09e82c2c2790b0989e02c232770affc9d82bf82750afd49d02bf32730afc49c82bed2710afac9c02be926f0af989b82be426d0af8c9b02bbf26b0aef89a82bbc2690aee09a02bb22670aeb49982bab2650ae909902ba22630adf89882b7c261⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xb4d8b802d312bf0b4c0af82d302bd0b4b0af02d2a2bb0b49cae82d232b90b3fcae02cfc2b70b3e4ad82cf72b50b3d0ad02cf02b30b3b8ac82ce62b10b394ac02ce32af0b380ab82cbc2ad0b2e8ab02cb42ab0b2c8aa82cb02a90b2b0aa02cab2a70b2a0a982c7c2a50b1eca902c722a30b1b0a882c692a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xb7ecc802df92ff0b7e0bf82df42fd0b7ccbf02df12fb0b7b8be82ded2f90b7a4be02de82f70b798bd82de42f50b6f4bd02dba2f30b6dcbc82db52f10b6c8bc02db02ef0b6a8bb82da62ed0b690bb02da12eb0b5f4ba82d7b2e90b5ccba02d702e70b5b8b982d6c2e50b584b902d602e30b4f4b882d3b2e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xbad8d802eb533f0baaccf82eaa33d0ba9ccf02ea533b0ba8cce82ea13390ba80ce02e773370b9d0cd82e743350b9c4cd02e6f3330b9accc82e693310b8e8cc02e3932f0b8e0cb82e3632d0b8c8cb02e2d32b0b8b0ca82e2c3290b8acca02e283270b898c982e243250b888c902e213230b880c882dfe321⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xbde0e802f7437f0bdccdf82f7237d0bdc0df02f6f37b0bdb4de82f6a3790bda0de02f643770bd8cdd82f3e3750bcecdd02f373730bcd0dc82f303710bcbcdc02f2136f0bbf8db82efc36d0bbe0db02ef536b0bbc4da82eef3690bba8da02ee63670bb90d982ebe3650baf4d902ebc3630baecd882eb7361⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xe1f8f80387b3bf0e1e8ef8387a3bd0e1e8ef038793bb0e1e0ee838683b90e188ee0383d3b70e0eced838393b50e0dced038333b30e0b4ec838243b10e080ec02fff3af0bff8eb82ffd3ad0bfd8eb02ff13ab0bfbcea82fea3a90bfa0ea02fae3a70be8ce982fa23a50bdfce902f7e3a30bdf0e882f7b3a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xe6c908039b13ff0e6bcff839ad3fd0e6a4ff039a33fb0e684fe839783f90e5d0fe039723f70e5bcfd8396e3f50e5a4fd039673f30e590fc8393d3f10e4d0fc039313ef0e488fb838ff3ed0e3e4fb038f33eb0e380fa838bb3e90e2e0fa038b43e70e2acf9838a73e50e294f9038a53e30e280f8838a03e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xeafd1803abd43f0eadd0f83ab643d0eac90f03ab143b0eac10e83aad4390eaa10e03aa64370ea890d83aa04350e9b90d03a6c4330e9a90c83a674310e9950c03a6142f0e8fd0b83a3942d0e8cd0b039f642b0e7d50a839f44290e7bd0a039e84270e79109839bf4250e6e909039b94230e6dd08839b6421⟩ ] def tableLLL : Table Block := .branch 8 tableLLLL tableLLLR def tableLLRL : Table Block := .leaf #[ ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xefa52803be747f0ef8d1f83be147d0eefd1f03bbb47b0eee51e83bb54790eec51e03bad4770eea91d83ba84750ede51d03b744730eda91c83b684710ed951c03b3446f0ecc11b83b2946d0ec9d1b03b2646b0ec951a83b244690ec851a03afb4670ebcd1983af14650ebbd1903aeb4630eba51883ae5461⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xf2bd3803cab4bf0f29d2f83ca64bd0f2912f03c7d4bb0f1f12e83c774b90f1c52e03c704b70f1b52d83c694b50f19d2d03c3f4b30f0f92c83c3d4b10f0f12c03c3b4af0f0e52b83c374ad0f0cd2b03c314ab0f0bd2a83c2d4a90f0a92a03c254a70f08d2983bfd4a50eff12903bfa4a30efcd2883bee4a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xf6914803da14ff0f5fd3f83d7e4fd0f5dd3f03d704fb0f5993e83d3d4f90f4ed3e03d394f70f4d93d83d344f50f4c93d03d2b4f30f4a53c83d264f10f4913c03d204ef0f3f93b83cfd4ed0f3d53b03cf44eb0f3c53a83cef4e90f3b93a03ce54e70f38d3983cbd4e50f2e13903cb64e30f2d13883cb34e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xf9f55803e7a53f0f9d54f83e7053d0f9bd4f03e6f53b0f9a54e83e675390f9854e03e3a5370f8e54d83e375350f8d54d03e325330f8b94c83e2c5310f8994c03e2452f0f8894b83dfe52d0f7f54b03dfa52b0f7b94a83ded5290f7914a03dbe5270f6ed4983db65250f6c94903daf5230f6b14883da8521⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xfce96803f3957f0fcd15f83f3157d0fcbd5f03f2d57b0fcb15e83f2a5790fca15e03f255770fc8d5d83f215750fbf95d03ef45730fbcd5c83eef5710fbb95c03eec56f0fba95b83ee956d0fb915b03ee156b0fafd5a83eb95690fadd5a03eb55670fac95983eb05650fab55903ea95630fa9d5883ea1561⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xffa97803fe85bf0ff956f83fe45bd0ff916f03fe15bb0ff816e83fba5b90fee56e03fb85b70fed96d83fb05b50fead6d03faa5b30fea96c83fa75b10fe996c03fa45af0fe816b83f7e5ad0fdf16b03f795ab0fdd56a83f735a90fdb56a03f6a5a70fda16983f675a50fd8d6903f625a30fcf96883f3c5a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x121b9880486e5ff121b57f8486c5fd121a57f048645fb1218d7e848635f9121817e0483f5f7120ed7d8483a5f5120dd7d0482c5f3120ad7c8482a5f1120a57c048265ef120957b848245ed120917b048245eb120917a83fff5e90fff97a03ffc5e70ffe57983ff55e50ffcd7903fee5e30ffb57883feb5e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x124d1980492e63f124b18f8492963d1249d8f0492563b124858e848ff639123ed8e048f3637123b58d848ed635123a18d048e7633123818c848bb631122bd8c048ac62f122b18b848ab62d122a98b048aa62b122a58a848a9629122998a048a4627121ed898487a625121e58904876623121d18884873621⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x12885a804a2067f128819f849ff67d127fd9f049fe67b127ed9e849f9679127dd9e049f5677127cd9d849f1675127ad9d049e9673127819c849bc671126e99c049b866f126d99b849b366d126b99b049ac66b126959a849a4669125fd9a04979667125e19984973665125c99904960663124ed9884937661⟩ ] def tableLLRR : Table Block := .leaf #[ ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x12bf1b804afb6bf12be9af84af76bd12bcdaf04ae26bb12afdae84abd6b912aedae04ab76b712ad5ad84ab16b512abdad04aad6b312ab1ac84aa36b112a8dac04a796af129d9ab84a746ad129c9ab04a716ab129b5aa84a696a912995aa04a616a7128f1a984a376a5128d9a904a366a312889a884a216a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x12ed5c804bb36ff12ec9bf84bae6fd12eadbf04ba86fb12e89be84b7e6f912df5be04b7a6f712de5bd84b786f512dd1bd04b716f312db9bc84b686f112d99bc04b636ef12cfdbb84b3d6ed12cddbb04b326eb12cbdba84b2d6e912ca1ba04b236e712c89b984b226e512c81b904aff6e312bf5b884afd6e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x13181d804c3f73f130fdcf84c3e73d130f9cf04c3d73b130f5ce84c3c739130ddce04c31737130b9cd84c2d735130a1cd04c247331308dcc84c2273112ffdcc04bfd72f12fe9cb84bf972d12fd1cb04bf272b12fc1ca84bed72912fadca04be772712f99c984bbf72512ef5c904bbc72312ee1c884bb7721⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x133d1e804cf277f133bddf84ced77d133b1df04cea77b133a1de84ce677913391de04ce2777132fddd84cba775132e1dd04cb2773132c5dc84caf771132a1dc04ca476f13285db84ca076d131fddb04c7576b131a9da84c697691318dda04c6276713181d984c6076513181d904c6076313181d884c60761⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x136f5f804dbc7bf136ddef84db47bd136b9ef04dad7bb136a5ee84da77b9135ddee04d767b7135cded84d727b5135c5ed04d6f7b3135a5ec84d647b113585ec04d3d7af134f1eb84d3b7ad134e5eb04d357ab134d1ea84d2f7a9134b1ea04d2b7a7134a1e984d247a513489e904cf87a3133dde884cf67a1⟩, ⟨0xa104d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x4ee3060804ebe7ff13af1ff84eba7fd13addff04eb37fb13ac5fe84eac7f913981fe04e3f7f7138f1fd84e387f5138d1fd04e347f3138cdfc84e307f1138b9fc04e2b7ef138a5fb84e277ed13895fb04e237eb137f1fa84dfb7e9137ddfa04df37e7137c9f984df07e5137adf904de87e313791f884de37e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x13ee8186013ee8183f13ed8183e13ec4183d13ec0183c13ec0183b13ea0183a13e90183913dfc183813df4183713da0183613d98183513d88183413d80183313cec183213cdc183113cd0183013cc8182f13cb4182e13ca4182d13c90182c13c88182b13bfc182a13bec182913be4182813bd0182713bc8182613bc0182513bb4182413bac182313ba4182213b941821⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x161fc18a0161f8187f161f8187e161f4187d161e4187c161c4187b161c0187a161b41879161881878161841877161801876160c81875160c018741609c187316094187216090187116088187016084186f13ff0186e13ff0186d13fec186c13fe8186b13fe0186a13fcc186913fc4186813fc0186713fb8186613f98186513f88186413ef8186313ef0186213ee81861⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x164f818e0164e018bf164e018be164d818bd164d418bc164d018bb164a418ba1649c18b91649818b81648418b7163f818b6163f018b5163d818b4163d418b3163cc18b2163c418b1163bc18b0163ac18af163a418ae1639418ad1638c18ac1638018ab162f018aa162e818a9162d418a8162cc18a7162c018a6162b818a5162a418a41629018a31628c18a21628c18a1⟩ ] def tableLLR : Table Block := .branch 9 tableLLRL tableLLRR def tableLL : Table Block := .branch 17 tableLLL tableLLR def tableLRLL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x168a81920168a018ff167e818fe167e018fd167d818fc167d418fb167d018fa167b818f9167ac18f8167a418f71679418f61678c18f5166fc18f4166f818f3166ec18f2166d818f1166cc18f0166c818ef166c418ee166c018ed1669c18ec1669418eb1668818ea165f818e9165f018e8165d818e7165d018e6165b818e5165a418e41659018e31658c18e21658c18e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x16b94196016b94193f16b90193e16b80193d16af8193c16aec193b16ae4193a16ad4193916ad0193816acc193716acc193616a9c193516a94193416a8c1933169fc1932169f41931169e81930169e0192f169dc192e169cc192d169c8192c169b8192b169ac192a169a01929169981928169881927169841926168e01925168d81924168cc1923168c01922168b81921⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x16e9019a016e84197f16dfc197e16df0197d16dec197c16dec197b16de8197a16ddc197916dc4197816dbc197716da4197616d90197516d88197416cf0197316cdc197216cc4197116cbc197016cb0196f16ca4196e16c94196d16c90196c16bfc196b16bec196a16be4196916bd4196816bd0196716bc8196616bc4196516bbc196416bb4196316ba8196216ba41961⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1719019e01718819bf170fc19be170ec19bd170e419bc170c819bb170bc19ba170b419b9170ac19b81709c19b71709419b61708419b516ff819b416fec19b316fe419b216fdc19b116fd019b016fc819af16fbc19ae16fac19ad16fa419ac16f8c19ab16f8019aa16ef819a916ef019a816ee019a716ed819a616ec819a516eb419a416eac19a316ea419a216ea019a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x174cc1a20174c019ff174b819fe174b019fd174a419fc1749c19fb1749419fa1748819f9173f019f8173bc19f7173b419f6173a819f51739819f41739019f3172f419f2172f019f1172dc19f0172c419ef172b819ee172b019ed172a019ec1729c19eb1729419ea171fc19e9171f419e8171e819e7171d819e6171d019e5171b819e4171ac19e3171a419e21719c19e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x178901a60177f81a3f177f41a3e177f01a3d177e01a3c177dc1a3b177d01a3a177c01a39177b01a38177a41a37177981a36177901a35176f81a34176ec1a33176dc1a32176dc1a31176c81a30176c41a2f176b81a2e1768c1a2d176881a2c175e01a2b175cc1a2a175c41a29175bc1a28175b01a27175a81a261758c1a25175841a24174f81a23174f01a22174e81a21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x17ca41aa017c8c1a7f17c8c1a7e17bfc1a7d17bf41a7c17bf01a7b17bc81a7a17bb01a7917bb01a7817b9c1a7717b9c1a7617adc1a7517ac81a7417abc1a7317ab01a7217ab01a7117ab01a7017ab01a6f17aac1a6e17aac1a6d17aa81a6c17aa41a6b179e41a6a179cc1a69179b81a68179b01a67179a41a66179941a65179881a64178f41a63178c01a62178981a61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x17fd01ae017fcc1abf17fb01abe17fac1abd17f9c1abc17f981abb17f8c1aba17f841ab917efc1ab817ef81ab717ee41ab617ed81ab517ecc1ab417ec01ab317eb81ab217eb41ab117e801ab017ddc1aaf17dd41aae17dcc1aad17dc01aac17db81aab17da81aaa17da01aa917cf81aa817cf41aa717cec1aa617ce81aa517ce01aa417cd01aa317cc81aa217cb41aa1⟩ ] def tableLRLR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1a28c1b201a1fc1aff1a1f41afe1a1e41afd1a1cc1afc1a1c81afb1a1c41afa1a1c01af91a1b41af81a1ac1af71a1a41af61a1941af51a1901af41a18c1af31a1841af21a1801af11a0f41af01a0ec1aef1a0dc1aee1a0d81aed1a0c81aec1a0c81aeb1a0c41aea1a0b81ae91a0b01ae81a0a41ae71a09c1ae61a08c1ae51a0881ae41a0841ae31a0841ae217fe01ae1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1a4c41b601a4b01b3f1a4981b3e1a4901b3d1a3f81b3c1a3f41b3b1a3f01b3a1a3ec1b391a3ec1b381a3e81b371a3d81b361a3d41b351a3c41b341a3c01b331a3b81b321a3a41b311a39c1b301a3941b2f1a2f81b2e1a2f41b2d1a2f01b2c1a2e81b2b1a2e01b2a1a2dc1b291a2d41b281a2d01b271a2c01b261a2bc1b251a2b41b241a2a41b231a2901b221a28c1b21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1a8c01ba01a8b81b7f1a8ac1b7e1a8a41b7d1a8941b7c1a8901b7b1a7f81b7a1a7f01b791a7e41b781a7d41b771a7bc1b761a7a81b751a7941b741a78c1b731a6f41b721a6e41b711a6dc1b701a6d81b6f1a5f41b6e1a5f01b6d1a5e81b6c1a5d81b6b1a5c41b6a1a5bc1b691a5b41b681a5a81b671a5a01b661a5881b651a4f41b641a4f01b631a4e01b621a4dc1b61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1abbc1be01abb01bbf1aba01bbe1ab981bbd1ab841bbc1aaf81bbb1aaf01bba1aae81bb91aadc1bb81aad41bb71aac81bb61aab81bb51aab01bb41aa9c1bb31aa941bb21aa881bb11a9f81bb01a9f01baf1a9d41bae1a9bc1bad1a9b41bac1a9ac1bab1a99c1baa1a9941ba91a9841ba81a8fc1ba71a8ec1ba61a8e41ba51a8dc1ba41a8d81ba31a8d41ba21a8c41ba1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1aeec1c201aed81bff1aed01bfe1aecc1bfd1aeb81bfc1aea41bfb1ae981bfa1ae901bf91adfc1bf81adf81bf71adf81bf61adf41bf51adf01bf41ade41bf31ade41bf21ade01bf11adc41bf01adbc1bef1ada81bee1ada41bed1ad841bec1acd41beb1accc1bea1acc81be91acb41be81aca81be71aca01be61ac941be51ac8c1be41abf41be31abcc1be21abc41be1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1b1b81c601b1b01c3f1b1ac1c3e1b1981c3d1b1901c3c1b1881c3b1b1801c3a1b0ec1c391b0e81c381b0e01c371b0d41c361b0bc1c351b0b81c341b0a81c331b0a41c321b09c1c311b0901c301b0801c2f1aff81c2e1afe41c2d1afe01c2c1afd81c2b1afd41c2a1afcc1c291afc41c281afc01c271afb81c261afb41c251af981c241af901c231af841c221aef41c21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1b4c81ca01b4c41c7f1b4c01c7e1b4b01c7d1b4ac1c7c1b4a41c7b1b49c1c7a1b4901c791b4881c781b3f81c771b3f41c761b3dc1c751b3d01c741b3901c731b2fc1c721b2ec1c711b2dc1c701b2cc1c6f1b2c01c6e1b2b01c6d1b2b01c6c1b2ac1c6b1b2a81c6a1b2981c691b2981c681b2941c671b28c1c661b2801c651b1f41c641b1e81c631b1d01c621b1c41c61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1b79c1ce01b7981cbf1b7881cbe1b7841cbd1b6fc1cbc1b6f01cbb1b6e81cba1b6d81cb91b6d41cb81b6d01cb71b6bc1cb61b6ac1cb51b6a41cb41b6981cb31b6901cb21b6881cb11b5f81cb01b5f01caf1b5e81cae1b5e41cad1b5e01cac1b5d01cab1b5c41caa1b5b81ca91b5b01ca81b5a01ca71b59c1ca61b5801ca51b4f01ca41b4e41ca31b4d81ca21b4d01ca1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1baf01d201bab41cff1baa41cfe1baa01cfd1b9ec1cfc1b9d41cfb1b9d41cfa1b9c01cf91b9b81cf81b9b01cf71b9a41cf61b99c1cf51b9981cf41b9881cf31b9841cf21b8ec1cf11b8e01cf01b8d81cef1b8c81cee1b8c41ced1b8a41cec1b89c1ceb1b8981cea1b8941ce91b8801ce81b7ec1ce71b7dc1ce61b7d01ce51b7b01ce41b7a81ce31b7a01ce21b7a01ce1⟩ ] def tableLRL : Table Block := .branch 8 tableLRLL tableLRLR def tableLRRL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1e1901d601e0fc1d3f1e0fc1d3e1e0e81d3d1e0e81d3c1e0d41d3b1e0bc1d3a1e0a81d391e0801d381bffc1d371bff81d361bff41d351bff41d341bff41d331bff01d321bff01d311bfec1d301bfac1d2f1bf941d2e1bdb41d2d1bda41d2c1bda01d2b1bd8c1d2a1bcf01d291bcec1d281bce01d271bcd81d261bcd01d251bccc1d241bcbc1d231bcb01d221bb841d21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1e8841da01e8841d7f1e8801d7e1e7fc1d7d1e7ec1d7c1e7e01d7b1e7d01d7a1e7c41d791e7b41d781e7a81d771e7941d761e7841d751e7801d741e6fc1d731e6e81d721e6d41d711e6b41d701e6a41d6f1e69c1d6e1e6881d6d1e6841d6c1e5f01d6b1e5e01d6a1e5d41d691e5cc1d681e5bc1d671e5b81d661e3dc1d651e1fc1d641e1f41d631e1ec1d621e1c81d61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1eaf41de01eaf01dbf1eae41dbe1eae41dbd1eae01dbc1ead41dbb1eacc1dba1eac41db91eabc1db81eaa41db71eaa01db61ea981db51ea8c1db41ea841db31e9f41db21e9f01db11e9d41db01e9c81daf1e9b81dae1e9a01dad1e99c1dac1e9901dab1e8f81daa1e8f01da91e8e41da81e8dc1da71e8cc1da61e8bc1da51e8b81da41e8a41da31e8941da21e88c1da1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1edec1e201edd41dff1edc81dfe1edc01dfd1edb01dfc1eda01dfb1ed901dfa1ed841df91ecf81df81ecf01df71ece01df61ecdc1df51ecd81df41ecd41df31ecb81df21ecb41df11eca01df01ec9c1def1ec941dee1ec881ded1ebf01dec1ebe01deb1ebe01dea1ebdc1de91ebd81de81ebcc1de71ebc81de61ebc41de51ebb01de41eb981de31eb901de21eaf81de1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1f0e41e601f0e41e3f1f0c81e3e1f0c41e3d1f0bc1e3c1f0b81e3b1f0ac1e3a1f08c1e391f0801e381eff01e371efec1e361efd01e351efc01e341efbc1e331efa41e321ef9c1e311ef981e301ef881e2f1ef841e2e1eef01e2d1eee81e2c1eee41e2b1eed41e2a1eec81e291eebc1e281eeb41e271eeac1e261eea81e251eea41e241ee941e231ee901e221edfc1e21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1f3a41ea01f3981e7f1f3901e7e1f3801e7d1f2f81e7c1f2e81e7b1f2d81e7a1f2d01e791f2c41e781f2b01e771f2a81e761f2a01e751f2941e741f28c1e731f2881e721f1f81e711f1f81e701f1ec1e6f1f1e81e6e1f1e41e6d1f1dc1e6c1f1d81e6b1f1cc1e6a1f1c41e691f1bc1e681f1b81e671f1a81e661f1a41e651f1981e641f1901e631f1841e621f0fc1e61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1f6f81ee01f6e41ebf1f6d01ebe1f6c41ebd1f5e81ebc1f5e41ebb1f5dc1eba1f5cc1eb91f5c81eb81f5c01eb71f5b01eb61f5b01eb51f5a81eb41f5881eb31f5801eb21f4f81eb11f4e81eb01f4e01eaf1f4d01eae1f4c81ead1f4ac1eac1f4881eab1f4841eaa1f3f41ea91f3f01ea81f3e81ea71f3d81ea61f3d01ea51f3cc1ea41f3c41ea31f3b41ea21f3ac1ea1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1fa9c1f201fa941eff1fa8c1efe1f9fc1efd1f9f41efc1f9e01efb1f9d41efa1f9d01ef91f9c81ef81f9b81ef71f9b01ef61f9881ef51f9841ef41f8f41ef31f8ec1ef21f8e01ef11f8d01ef01f8c81eef1f8b41eee1f8ac1eed1f8a01eec1f8901eeb1f8881eea1f7f41ee91f7e81ee81f7e01ee71f7d81ee61f7c81ee51f7a01ee41f79c1ee31f78c1ee21f7801ee1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1fec01f601feb81f3f1fea81f3e1fea01f3d1fdf01f3c1fde81f3b1fdbc1f3a1fdb41f391fd901f381fd881f371fcfc1f361fcec1f351fce41f341fcd01f331fcc81f321fcc01f311fcb01f301fcac1f2f1fc9c1f2e1fc901f2d1fc841f2c1fbfc1f2b1fbec1f2a1fbe81f291fbc41f281fbbc1f271fba41f261fb9c1f251fb8c1f241fb841f231faec1f221fae41f21⟩ ] def tableLRRR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2238c1fa0223841f7f222ec1f7e222e41f7d222d81f7c222c41f7b222bc1f7a222841f79221a01f78221881f77220f41f76220cc1f75220c41f74220c41f73220b41f72220b01f71220ac1f70220a41f6f220a01f6e220801f6d1ffec1f6c1ffe81f6b1ffdc1f6a1ffd41f691ffb81f681ffb41f671ffa41f661ff9c1f651ff981f641fef01f631fee81f621fee01f61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x228941fe0227f81fbf227941fbe2278c1fbd226fc1fbc226e41fbb226d41fba226c81fb9225ac1fb8225981fb7225881fb6224fc1fb5224ec1fb4224e81fb3224d01fb2224cc1fb1224bc1fb0224ac1faf224a41fae224801fad223fc1fac223f81fab223f01faa223e81fa9223dc1fa8223d41fa7223d01fa6223c81fa5223bc1fa4223b41fa3223ac1fa2223a01fa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x22bc8282022bbc1fff22bac1ffe22ba41ffd22b981ffc22b881ffb22b801ffa22aec1ff922ae41ff822ad81ff722ac81ff622ac01ff522aa41ff422a981ff322a901ff222a881ff1229f81ff0229ac1fef229a01fee2299c1fed229941fec229881feb229841fea228fc1fe9228fc1fe8228e01fe7228e01fe6228dc1fe5228c81fe4228c01fe3228b41fe2228ac1fe1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x22eb4286022ea4283f22e9c283e22dfc283d22df4283c22df0283b22dec283a22de4283922de0283822ddc283722dd0283622dcc283522dc4283422dbc283322db4283222da8283122d94283022d8c282f22cf4282e22cec282d22ce0282c22ccc282b22cc4282a22c98282922c98282822c8c282722bfc282622bf8282522bf4282422be0282322bd8282222bd02821⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2329c28a023298287f23284287e231fc287d231f0287c231dc287b231d4287a231bc2879231b42878231a828772318c2876230f02875230dc2874230d42873230c82872230c42871230b02870230a0286f2308c286e22fbc286d22fac286c22fa4286b22f98286a22f88286922f80286822ef8286722ef4286622eec286522ee4286422ed4286322ec4286222ec02861⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x235bc28e0235a828bf2359828be2359428bd2358828bc2358028bb234e828ba234d828b9234cc28b8234c428b7234c028b6234a028b5234a028b42349428b32348c28b2233fc28b1233f428b0233e028af233c828ae233c828ad232f028ac232ec28ab232ec28aa232e828a9232dc28a8232d428a7232c428a6232bc28a5232b828a4232b028a3232ac28a2232a428a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x239b42920239a428ff2399828fe2399028fd238f028fc238e428fb238e028fa238dc28f9238cc28f8238c828f7238bc28f6237d828f5237d428f4237c028f3237ac28f22379c28f12378c28f02378828ef2378428ee2378028ed2378028ec236d028eb236c028ea236b428e9236b028e8236a028e72369428e62368c28e52368828e4235e828e3235dc28e2235c428e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x23e88296023df4293f23ddc293e23dc4293d23d94293c23cdc293b23cac293a23c9c293923bec293823be4293723bd4293623bcc293523bb8293423bb0293323ba4293223b94293123b8c293023af0292f23aec292e23ae0292d23ad8292c23ad4292b23ac0292a23abc292923aac292823a802927239fc2926239ec2925239e82924239e02923239d02922239b82921⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2628829a0261fc297f261e8297e261e0297d261c4297c261c0297b261ac297a261ac2979261982978261942977261802976260f42975260ec297426090297326080297223fec297123fec297023fe4296f23fd0296e23fc8296d23efc296c23ee8296b23ed8296a23ed8296923ed4296823ed4296723ed4296623ecc296523ec8296423ebc296323e90296223e8c2961⟩ ] def tableLRR : Table Block := .branch 9 tableLRRL tableLRRR def tableLR : Table Block := .branch 17 tableLRL tableLRR def tableL : Table Block := .branch 35 tableLL tableLR def tableRLLL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x264c829e0264c429bf264b029be264ac29bd264a429bc264a029bb2649c29ba2649429b92648c29b82648829b7263f829b6263f029b5263e829b4263dc29b3263d829b2263c829b12639c29b02638829af262fc29ae262f429ad262d029ac262cc29ab262c429aa262c029a9262bc29a8262b829a7262b429a6262a029a5262a029a42629829a32629429a22629029a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x267e42a20267d029ff267c829fe2678829fd266fc29fc266e829fb266e029fa266d829f9266c429f8266bc29f7266a829f6266a429f52669829f42668c29f32668829f2265fc29f1265ec29f0265e429ef265c029ee265bc29ed265bc29ec265b829eb265b829ea265b429e9265b429e8265b029e7265a829e62659029e52658829e4264e429e3264d029e2264cc29e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x26ae42a6026ae02a3f26ac02a3e26ab02a3d26a9c2a3c26a9c2a3b26a882a3a269f82a39269ec2a38269e42a37269c82a36269b42a35269a42a34269a02a332699c2a322699c2a31269982a302698c2a2f269842a2e269802a2d268f82a2c268f42a2b268f02a2a268ec2a29268a82a28268982a272688c2a262688c2a25268882a24268802a23267f82a22267f02a21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x26ee42aa026edc2a7f26ed82a7e26ec42a7d26eb42a7c26eb02a7b26eac2a7a26e9c2a7926de42a7826dd42a7726dbc2a7626db42a7526da82a7426d982a7326d902a7226cfc2a7126ce42a7026cd02a6f26cac2a6e26ca82a6d26ca82a6c26c942a6b26c902a6a26c842a6926bd42a6826bcc2a6726bc42a6626ba82a6526b982a6426b942a6326af82a6226ae82a61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x272942ae02728c2abf271e82abe271d02abd271c02abc271c02abb271bc2aba271b82ab9271a42ab8271942ab7271882ab6270d42ab5270c02ab4270bc2ab3270ac2ab22709c2ab1270902ab0270882aaf26ff82aae26ff02aad26fd82aac26fc82aab26fc42aaa26fc02aa926fac2aa826f982aa726f902aa626f8c2aa526f842aa426f802aa326ef82aa226ef42aa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x275942b20275902aff274f42afe274e82afd274d82afc274c82afb274b82afa274b42af92749c2af8274982af7274882af6274842af5273f82af4273f02af3273e82af2273e42af1273d42af0273b02aef273a82aee273a02aed273902aec273882aeb273802aea272f42ae9272ec2ae8272e82ae7272d82ae6272d42ae5272cc2ae4272bc2ae3272a82ae2272a42ae1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x278842b60277f42b3f277f02b3e277e42b3d277dc2b3c277cc2b3b277c02b3a277b82b39277b02b38277a82b37277902b362778c2b35277802b34276f82b33276ec2b32276e42b31276d42b30276d02b2f276b02b2e276a42b2d2769c2b2c276942b2b276842b2a275fc2b29275ec2b28275e42b27275dc2b26275c42b25275c02b24275b82b23275ac2b22275a42b21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x27b942ba027b902b7f27b882b7e27afc2b7d27af42b7c27af02b7b27ae82b7a27aa82b7927a902b7827a902b7727a802b76279e42b75279e02b74279d82b73279d02b72279c42b71279bc2b70279b02b6f279a42b6e279902b6d278f82b6c278f02b6b278d82b6a278d42b69278d02b68278cc2b67278bc2b66278b82b65278b42b64278942b632788c2b62278882b61⟩ ] def tableRLLR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x27fbc2be027fac2bbf27fa42bbe27f982bbd27f902bbc27ef02bbb27ec42bba27eac2bb927e9c2bb827e8c2bb727df42bb627dec2bb527de82bb427dc82bb327db82bb227db82bb127db42bb027db02baf27da42bae27da02bad27d9c2bac27d942bab27d802baa27cf02ba927cf02ba827cc02ba727cac2ba627ca02ba527c8c2ba427bd42ba327bc82ba227bbc2ba1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2a3f42c202a3dc2bff2a3bc2bfe2a3a42bfd2a3a42bfc2a3902bfb2a3902bfa2a2e82bf92a2d02bf82a2bc2bf72a2b02bf62a2a42bf52a2a42bf42a2a42bf32a2a42bf22a2a02bf12a2a02bf02a29c2bef2a2982bee2a2982bed2a1d82bec2a1c02beb2a1ac2bea2a1a42be92a1942be82a0fc2be72a0ec2be62a0e02be527fe82be427fdc2be327fd42be227fc42be1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2a7d02c602a7c82c3f2a7c42c3e2a78c2c3d2a7802c3c2a6fc2c3b2a6ec2c3a2a6e02c392a6d82c382a6d42c372a6a02c362a68c2c352a6802c342a5f02c332a5ec2c322a5e02c312a5cc2c302a5bc2c2f2a5b82c2e2a5a82c2d2a5a42c2c2a59c2c2b2a5902c2a2a5882c292a4f82c282a4f42c272a4d42c262a4b02c252a4a02c242a4982c232a4902c222a4802c21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2aabc2ca02aaac2c7f2aaa82c7e2aa942c7d2aa8c2c7c2aa882c7b2a9f82c7a2a9f42c792a9e82c782a9e02c772a9d82c762a9d42c752a9c42c742a9b42c732a9ac2c722a9a42c712a99c2c702a99c2c6f2a9842c6e2a9802c6d2a8f82c6c2a8ec2c6b2a8e42c6a2a8d42c692a8d02c682a8cc2c672a8b42c662a8a82c652a8982c642a8842c632a7f42c622a7e42c61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2acfc2ce02acf82cbf2ace82cbe2ace42cbd2ace42cbc2acd02cbb2acc82cba2acc02cb92acb42cb82aca82cb72ac982cb62ac882cb52ac842cb42abf82cb32abf02cb22abe42cb12abe02cb02abdc2caf2abd82cae2abc82cad2abc82cac2abc42cab2abb82caa2abb02ca92aba02ca82ab8c2ca72ab882ca62aaf82ca52aaf02ca42aadc2ca32aad42ca22aac82ca1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2b0882d202b0842cff2afec2cfe2afd82cfd2afb02cfc2af942cfb2af942cfa2af902cf92af902cf82af8c2cf72af882cf62af842cf52af842cf42aee42cf32aed02cf22aed02cf12aec02cf02aeac2cef2aea42cee2ae9c2ced2adf82cec2adf82ceb2adec2cea2add82ce92add42ce82add42ce72adcc2ce62adc82ce52adbc2ce42adb82ce32adac2ce22ad802ce1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2b3f82d602b3f02d3f2b3ec2d3e2b3d82d3d2b3d02d3c2b3c02d3b2b3b82d3a2b3942d392b3802d382b2fc2d372b2d42d362b1f82d352b1ec2d342b1e82d332b1e82d322b1e42d312b1e02d302b1d42d2f2b1c42d2e2b1bc2d2d2b1b02d2c2b19c2d2b2b1942d2a2b0e82d292b0e82d282b0d02d272b0c82d262b0a42d252b0a02d242b0982d232b0942d222b0902d21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2b7a82da02b79c2d7f2b7942d7e2b7902d7d2b6fc2d7c2b6f02d7b2b6e82d7a2b6e02d792b6d42d782b6cc2d772b6c02d762b6b02d752b6a82d742b6842d732b5fc2d722b5f02d712b5e02d702b5d82d6f2b5bc2d6e2b5b42d6d2b5a42d6c2b59c2d6b2b5842d6a2b4f02d692b4ec2d682b4c42d672b4b82d662b4b42d652b4a02d642b4882d632b4882d622b4842d61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2bb942de02baf82dbf2baf42dbe2bae82dbd2babc2dbc2b9c02dbb2b9bc2dba2b9b82db92b9ac2db82b9982db72b9902db62b9842db52b8fc2db42b8f02db32b8dc2db22b8d42db12b8bc2db02b8b42daf2b8ac2dae2b8a82dad2b8a02dac2b8882dab2b7f82daa2b7e42da92b7dc2da82b7d02da72b7c02da62b7bc2da52b7b82da42b7b82da32b7b42da22b7b42da1⟩ ] def tableRLL : Table Block := .branch 8 tableRLLL tableRLLR def tableRLRL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2bebc2e202be8c2dff2bddc2dfe2bdd02dfd2bdbc2dfc2bdb42dfb2bda02dfa2bd9c2df92bd9c2df82bd902df72bd8c2df62bd802df52bcfc2df42bcf82df32bcdc2df22bcd42df12bcb42df02bcac2def2bca82dee2bca42ded2bc982dec2bc942deb2bc902dea2bc882de92bbf42de82bbe82de72bbe02de62bbd82de52bbcc2de42bbc42de32bbac2de22bb9c2de1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2e2a02e602e2982e3f2e2802e3e2e2802e3d2e1f82e3c2e1f02e3b2e1e82e3a2e1e02e392e1b82e382e1a42e372e1a42e362e1a02e352e1842e342e1802e332e0f82e322e0e42e312e0cc2e302e0bc2e2f2e0b82e2e2e0a02e2d2e0882e2c2bffc2e2b2bff42e2a2bfcc2e292bfac2e282bfa42e272bf9c2e262bf882e252bf842e242bef42e232bef02e222bee82e21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2e5d42ea02e5c02e7f2e5bc2e7e2e5942e7d2e58c2e7c2e5802e7b2e4fc2e7a2e4e82e792e4e02e782e4d82e772e4c82e762e4ac2e752e4a42e742e4942e732e48c2e722e3d42e712e3cc2e702e3ac2e6f2e3ac2e6e2e3a02e6d2e3902e6c2e38c2e6b2e2ec2e6a2e2e82e692e2e42e682e2dc2e672e2d82e662e2d42e652e2cc2e642e2b82e632e2b02e622e2a82e61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2ecc42ee02ecb82ebf2ecb42ebe2ecac2ebd2ec9c2ebc2ec942ebb2ec842eba2eb842eb92eb802eb82eae82eb72ead82eb62ead02eb52eaa02eb42ea9c2eb32ea8c2eb22ea802eb12e9dc2eb02e9c82eaf2e9ac2eae2e9a42ead2e9982eac2e7fc2eab2e7e82eaa2e7e02ea92e7d42ea82e7bc2ea72e7b02ea62e6c82ea52e5e82ea42e5e82ea32e5e42ea22e5e02ea1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2f2842f202f1f82eff2f1f02efe2f1e82efd2f1c82efc2f1c02efb2f1b82efa2f1a82ef92f1a02ef82f1942ef72f1842ef62f0fc2ef52f0cc2ef42f0c82ef32eff42ef22eee42ef12eee02ef02eed82eef2eebc2eee2eea42eed2eea02eec2ee982eeb2ee902eea2edcc2ee92ed9c2ee82ed8c2ee72ed882ee62ed842ee52ecf02ee42ece02ee32ecd42ee22ecc82ee1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2f58c2f602f4e82f3f2f4e02f3e2f4dc2f3d2f4d42f3c2f4cc2f3b2f4c02f3a2f4b42f392f4ac2f382f4a42f372f4942f362f4882f352f3fc2f342f3ec2f332f3d02f322f3cc2f312f3c02f302f3b02f2f2f3a02f2e2f3982f2d2f38c2f2c2f3842f2b2f2f42f2a2f2f02f292f2ec2f282f2e02f272f2cc2f262f2c42f252f2bc2f242f2b02f232f2a02f222f2982f21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2faec2fa02fa9c2f7f2fa982f7e2fa942f7d2fa882f7c2fa842f7b2f9ec2f7a2f9b02f792f9a82f782f9a42f772f9842f762f6fc2f752f6f42f742f6f02f732f6ec2f722f6d82f712f6d42f702f6b02f6f2f6882f6e2f6802f6d2f5fc2f6c2f5e42f6b2f5d42f6a2f5d02f692f5cc2f682f5cc2f672f5c82f662f5b82f652f5b82f642f5ac2f632f5a42f622f5942f61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x328b42fe0328ac2fbf328942fbe323c42fbd323bc2fbc323b82fbb323b02fba323a42fb92fedc2fb82fed42fb72fecc2fb62feb42fb52feb02fb42fea42fb32fe9c2fb22fe902fb12fe882fb02fdf82faf2fdf42fae2fddc2fad2fdd02fac2fbf42fab2fbf02faa2fbe42fa92fbdc2fa82fbcc2fa72fbc82fa62fbb82fa52fbb42fa42fb982fa32fb8c2fa22fb842fa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x331a43820330f82fff32ffc2ffe32ff82ffd32ff42ffc32fe82ffb32fe42ffa32fdc2ff932fc02ff832eec2ff732edc2ff632eb82ff532ea02ff432ea02ff332e9c2ff232ddc2ff132dc42ff032cd42fef32ccc2fee32cbc2fed32cb42fec32bd42feb32bd42fea32af42fe932aec2fe832adc2fe732ad42fe632ab02fe5329c42fe4329bc2fe3329b42fe23298c2fe1⟩ ] def tableRLRR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x334e83860334c0383f334b0383e33494383d333fc383c333f4383b333e4383a333e03839333cc3838333c83837333c03836333b43835333b03834333a83833333a43832333a03831333843830332fc382f332ec382e332dc382d332d8382c332c4382b332b8382a332ac3829332a83828332a03827332983826332803825331f03824331e83823331b43822331b03821⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x339bc38a0339a0387f3399c387e33990387d33988387c338a4387b33898387a338903879338883878338803877337f43876337f03875337e83874337dc3873337cc3872337c43871337b03870337a4386f3379c386e33794386d33784386c336fc386b336f0386a336e03869336d83868336ac3867336a438663369c3865335fc3864335e43863335843862334fc3861⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x33c9838e033c9438bf33c9038be33c8438bd33c8038bc33bfc38bb33bf838ba33bec38b933bd838b833bb838b733ba438b633ba038b533ba038b433b9038b333b8838b233ae838b133ae038b033adc38af33ad838ae33ad838ad33ad438ac33ad038ab33ac438aa33ac038a933ab838a833ab038a733aa838a633a9c38a533a8838a433a8038a3339d438a2339d038a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x360ac39203609838ff33fd038fe33f8038fd33ee438fc33ed838fb33ed438fa33ecc38f933ec038f833eac38f733ea438f633e8c38f533df438f433df038f333de438f233de038f133ddc38f033dd438ef33dc438ee33dbc38ed33da838ec33d9438eb33d9038ea33d9038e933cf438e833cf038e733ce438e633cd438e533ccc38e433ca838e333ca438e233ca038e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x367c0396036798393f36794393e36788393d366dc393c365e0393b365dc393a365d83939365cc3938365c83937365c03936365a43935364d43934364c43933363f03932361f83931361e43930361c0392f36194392e36194392d3618c392c3618c392b3618c392a361883929361883928361843927361803926360e43925360cc3924360cc3923360c83922360bc3921⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x36be039a036bc8397f36bc0397e36bb4397d36ba4397c36b9c397b36af4397a36aec397936ad4397836abc397736aa4397636a8c397536a843974369ec3973369a43972369a0397136994397036990396f3698c396e36988396d368f4396c368e8396b368d8396a368c03969368a83968368a039673689039663688c3965367f83964367f03963367d83962367c83961⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x36f9c39e036f8c39bf36f8439be36ee839bd36ed439bc36ebc39bb36eb439ba36ea439b936e9439b836e8839b736df839b636df439b536dd839b436dcc39b336dc439b236db439b136db039b036dac39af36da039ae36d8839ad36cf039ac36ce839ab36cd839aa36cc839a936cb439a836ca839a736ca039a636c9839a536c8c39a436c8439a336bf839a236be839a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x373983a203738c39ff372fc39fe372f439fd372d439fc372cc39fb372c839fa372c439f9372bc39f8372b839f7371bc39f6371b839f5371b039f4371a439f33719039f23718839f1370f439f0370e039ef370d439ee3709839ed3709039ec3708839eb36ff839ea36ff839e936ff439e836fec39e736fdc39e636fd439e536fc439e436fbc39e336fb039e236fa439e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x377b03a60377a83a3f377a03a3e377903a3d377843a3c376f83a3b376f03a3a376e83a39376dc3a38376cc3a37376c43a36375ec3a35375a43a34375943a33375903a323758c3a31374f83a30374e83a2f374e03a2e374d43a2d374c83a2c374c03a2b374b83a2a374b03a29374ac3a28374a83a27373f83a26373f03a25373e43a24373d03a23373c83a223739c3a21⟩ ] def tableRLR : Table Block := .branch 9 tableRLRL tableRLRR def tableRL : Table Block := .branch 17 tableRLL tableRLR def tableRRLL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3a2b83aa03a2a43a7f3a2903a7e3a2903a7d3a28c3a7c37cd43a7b37ccc3a7a37cbc3a7937cb43a7837ca03a7737c903a7637c8c3a7537c843a7437be03a7337ba83a7237af43a7137ae03a7037aac3a6f37a983a6e37a883a6d379d83a6c379c43a6b379b03a6a378cc3a69378c43a68378b43a67378943a66378883a65377f83a64377e03a63377cc3a62377c03a61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3ac843ae03abf03abf3abec3abe3abec3abd3abe43abc3ab803abb3aafc3aba3aaf03ab93aae03ab83aad43ab73aad03ab63aac83ab53a7dc3ab43a7b43ab33a6f43ab23a6c43ab13a5d43ab03a5883aaf3a4fc3aae3a4a03aad3a4883aac3a3f03aab3a3e03aaa3a3dc3aa93a3d83aa83a3cc3aa73a3bc3aa63a3b43aa53a3ac3aa43a39c3aa33a3943aa23a2d03aa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3b0f83b203b0ec3aff3b0d43afe3b0c43afd3b0a43afc3b0943afb3affc3afa3afe43af93afdc3af83afc43af73afb43af63af9c3af53af943af43af8c3af33aefc3af23aee43af13aed03af03aec43aef3aeac3aee3aea03aed3ae903aec3ae883aeb3ae843aea3ade43ae93add43ae83adc03ae73adb83ae63acfc3ae53acb83ae43acb43ae33ac903ae23ac903ae1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3b7b43b603b6d03b3f3b6c83b3e3b6983b3d3b6803b3c3b5fc3b3b3b4b43b3a3b4ac3b393b4a03b383b48c3b373b4843b363b3d83b353b3d43b343b3c83b333b3b83b323b3b03b313b3903b303b3883b2f3b3843b2e3b3803b2d3b2f83b2c3b2943b2b3b2903b2a3b2883b293b1fc3b283b1e83b273b1e03b263b1bc3b253b1b43b243b19c3b233b18c3b223b0fc3b21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3badc3ba03baa43b7f3ba943b7e3ba883b7d3b9f43b7c3b9f43b7b3b9e43b7a3b9e03b793b9d43b783b9a83b773b9a43b763b9a03b753b8f43b743b8ec3b733b8e03b723b8dc3b713b8d03b703b8c83b6f3b8c03b6e3b8b43b6d3b89c3b6c3b8943b6b3b88c3b6a3b8843b693b8803b683b7f43b673b7f03b663b7e03b653b7d03b643b7cc3b633b7c43b623b7bc3b61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3e39c3be03e2903bbf3e28c3bbe3e1cc3bbd3e1bc3bbc3e1943bbb3e0e83bba3e0d03bb93bf983bb83bf943bb73bf8c3bb63bf883bb53bef03bb43be9c3bb33be943bb23be883bb13bdf83bb03bdf03baf3bdc03bae3bcc03bad3bc803bac3bbf03bab3bbec3baa3bbd43ba93bbc43ba83bbbc3ba73bbac3ba63bb983ba53bb903ba43bb8c3ba33bafc3ba23baec3ba1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3e9a83c203e9a43bff3e9903bfe3e9803bfd3e6d03bfc3e6943bfb3e6803bfa3e5fc3bf93e5cc3bf83e5c43bf73e5ac3bf63e5a43bf53e5983bf43e5843bf33e4fc3bf23e4e43bf13e4e03bf03e4d83bef3e4bc3bee3e4a03bed3e4983bec3e3f43beb3e3f03bea3e3ec3be93e3e03be83e3d83be73e3d43be63e3cc3be53e3c83be43e3c03be33e3bc3be23e3a43be1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3eee03c603eedc3c3f3eed83c3e3eec43c3d3eeb83c3c3ecf43c3b3ecf03c3a3ec843c393ebf43c383ebf03c373ebdc3c363ebd03c353ebbc3c343eaf83c333eaf43c323eaec3c313ead83c303eac83c2f3eac43c2e3eaac3c2d3ea9c3c2c3ea943c2b3ea943c2a3ea943c293ea903c283e9f83c273e9f43c263e9e43c253e9c83c243e9c43c233e9b83c223e9b03c21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3fce43ca03fccc3c7f3fcc83c7e3fcbc3c7d3fcb03c7c3fb9c3c7b3fb983c7a3fae83c793f9f43c783f9e83c773f9ac3c763f99c3c753f89c3c743f8883c733f7f43c723f7e43c713f7e03c703f7dc3c6f3f7d83c6e3f7cc3c6d3f7c43c6c3f7b43c6b3f4803c6a3f1e83c693f1e43c683f1dc3c673f0a43c663f0903c653f0843c643efcc3c633efa83c623eef83c61⟩ ] def tableRRLR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x423c03ce0423ac3cbf423943cbe423943cbd423843cbc4228c3cbb421f43cba421dc3cb9421d83cb8421cc3cb7421c03cb6421a83cb54219c3cb4421943cb3420bc3cb2420ac3cb1420a83cb0420a43caf420a03cae3fff83cad3fff43cac3ffe03cab3ffc83caa3ffc03ca93ffb03ca83ffac3ca73ff8c3ca63ff843ca53fef43ca43feec3ca33fdd83ca23fcf83ca1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x42a903d20429fc3cff429dc3cfe429cc3cfd429cc3cfc429c83cfb429b43cfa428e43cf9428c43cf8428883cf7428803cf6427fc3cf5427f03cf4427dc3cf3427b83cf2427a03cf1427a03cf04279c3cef427903cee427803ced426f43cec426ec3ceb426e43cea426dc3ce9425c83ce8424b83ce7424983ce64248c3ce5423f43ce4423e03ce3423d83ce2423c83ce1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x461f83d60461e43d3f461d03d3e461c83d3d461b83d3c461b03d3b461a03d3a461903d39460fc3d38460f03d37460dc3d36460d83d35460d43d34460d03d33460c03d32460bc3d31460903d3043ff83d2f43c9c3d2e42eb83d2d42bcc3d2c42bbc3d2b42bac3d2a42b983d2942b8c3d2842ae83d2742ad83d2642acc3d2542ac03d2442ab83d2342ab03d2242aa03d21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x469d43da0469d03d7f469c43d7e469c03d7d467f83d7c467e83d7b467c83d7a467c03d79467903d78466f83d77466f03d76466e83d75466d43d74466bc3d73465883d72465803d71464e43d70464dc3d6f464d83d6e464c43d6d464bc3d6c464b43d6b464a83d6a464943d69464803d68463c43d67463c03d66463843d65463803d64462e03d63462dc3d62462d83d61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x474b83de0474b03dbf474a03dbe4748c3dbd473f43dbc473f03dbb473e43dba473dc3db9473cc3db8473c03db7473ac3db6473a03db5473983db4473903db3470e03db2470dc3db1470d83db0470cc3daf470c83dae470c03dad470b83dac470b43dab470a43daa470a03da946fbc3da846fb03da746fa83da646cb03da546bb43da446bb03da346b943da246b883da1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x47af83e2047af03dff47ae43dfe47ad43dfd47acc3dfc47ab83dfb47aa03dfa47a9c3df947a883df847a843df7479e43df6479dc3df5479d83df4478f83df3477f03df2477d83df1477cc3df0477b43def477ac3dee476c83ded476bc3dec476b83deb4769c3dea476983de9476903de8476843de7475fc3de6475b43de5474d83de4474d43de3474d03de2474c83de1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x47fb03e6047fa83e3f47fa03e3e47f983e3d47f943e3c47ef83e3b47eec3e3a47edc3e3947ed83e3847ed03e3747ebc3e3647ea43e3547e943e3447e883e3347e803e3247dfc3e3147ddc3e3047dd43e2f47dc43e2e47dbc3e2d47da43e2c47d8c3e2b47cf03e2a47cec3e2947cdc3e2847cd83e2747cd03e2647cc83e2547cbc3e2447bb83e2347bb43e2247b883e21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4aa803ea04a9f83e7f4a9f43e7e4a9f03e7d4a9e43e7c4a9dc3e7b4a9d83e7a4a9c43e794a9b83e784a9b03e774a9a43e764a9883e754a8f03e744a8d43e734a8cc3e724a8ac3e714a8a43e704a8a03e6f4a89c3e6e4a8903e6d4a8843e6c4a7d83e6b4a5cc3e6a4a5c83e694a5ac3e684a0b43e674a0a43e664a0a03e654a09c3e644a0943e6347fc03e6247fb43e61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4b0943ee04b0843ebf4affc3ebe4aff43ebd4afe43ebc4afd83ebb4add03eba4adcc3eb94adc43eb84adb03eb74ad8c3eb64ad843eb54acf83eb44ac843eb34ac803eb24abe83eb14abe03eb04abd83eaf4abcc3eae4abb83ead4abb03eac4ab983eab4ab803eaa4aafc3ea94aaf03ea84aad43ea74aad03ea64aac43ea54aab43ea44aaac3ea34aa883ea24aa843ea1⟩ ] def tableRRL : Table Block := .branch 9 tableRRLL tableRRLR def tableRRRL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4e0a43f204e0a03eff4e0943efe4bfe83efd4bfe43efc4bfdc3efb4bfcc3efa4bfc83ef94bfb43ef84bfb03ef74bef43ef64beec3ef54bee83ef44bed43ef34bec03ef24beac3ef14bea03ef04bde03eef4bdc83eee4bb983eed4b1d03eec4b1c83eeb4b1c43eea4b1a43ee94b1a03ee84b0ec3ee74b0e03ee64b0dc3ee54b0bc3ee44b0ac3ee34b0a83ee24b0a03ee1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4f8903f604f8803f3f4f7f83f3e4f7e03f3d4f7dc3f3c4f7d03f3b4f7a43f3a4f6a83f394f6a43f384f6a03f374f6943f364f6903f354f6883f344f5fc3f334f5f83f324f5f03f314f5d43f304f5c43f2f4f5b43f2e4f5b03f2d4f5a03f2c4f3e43f2b4f3b43f2a4f3b03f294f3943f284f19c3f274e3903f264e3883f254e2fc3f244e2ec3f234e2e43f224e2d03f21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x52d983fa052d903f7f52cfc3f7e52cf43f7d52cb03f7c52cac3f7b52ca83f7a52ca03f79526803f78525e83f77525c83f76524943f754fe803f744fab43f734faa43f724faa03f714fa983f704fa903f6f4fa883f6e4f9f43f6d4f9ac3f6c4f9a03f6b4f99c3f6a4f9943f694f98c3f684f9843f674f8f83f664f8e43f654f8dc3f644f8c43f634f8b03f624f8a83f61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x533e03fe0533d83fbf532fc3fbe532e03fbd532d43fbc532d43fbb532c03fba532b03fb9532a03fb8532903fb7532883fb6531f83fb5531e03fb4531b83fb3531a83fb25319c3fb1531903fb052ff43faf52fa03fae52f9c3fad52f943fac52f8c3fab52eb43faa52e9c3fa952dfc3fa852df43fa752df03fa652de03fa552dd83fa452dcc3fa352dbc3fa252db43fa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x53b98482053aec3fff53ad43ffe53ad03ffd53ab83ffc53aac3ffb539f83ffa539e03ff9539d43ff8539cc3ff7539b83ff6539a83ff5538d43ff4538cc3ff35389c3ff2537cc3ff1537bc3ff0537b83fef5379c3fee537983fed537803fec536883feb536803fea535e83fe9535e43fe8535a43fe7535a03fe65358c3fe5535803fe4534f83fe3533f43fe2533f03fe1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x576cc4860576bc483f576ac483e576a8483d576a0483c57680483b575fc483a575ec4839575804838574fc4837574d44836574cc4835574c84834574c44833573ec4832573e04831573dc4830573cc482f573c8482e573bc482d573b4482c57394482b571e4482a571d44829571804828570f0482756f98482656f94482553ec8482453ea0482353e84482253bc04821⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x57bc848a057bc4487f57ae0487e579e8487d579dc487c579d8487b57990487a579844879578fc4878578f84877578e84876578dc4875578cc4874578b04873578a84872578a0487157898487057894486f577f8486e577e4486d577d4486c577b8486b577b4486a577b048695778c4868577884867577844866576ec4865576e84864576e44863576d84862576d44861⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x5a59048e05a4f848bf5a4f448be5a2c848bd5a2c448bc5a2b848bb5a0e848ba5a0e448b95a0d848b85a0a848b75a0a448b65a0a048b557fe048b457fd848b357fcc48b257fbc48b157fb448b057fa048af57f8848ae57ef448ad57eb848ac57eb048ab57eac48aa57cf848a957cf448a857cec48a757cac48a657bf848a557bf048a457bdc48a357bd448a257bd048a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x5acec49205ace448ff5acb848fe5acac48fd5ac8048fc5abfc48fb5abe848fa5abe048f95aaf048f85aad048f75aab848f65aaac48f55aaa848f45aaa048f35aa9448f25aa8048f15a9ec48f05a9c448ef5a98448ee5a7b848ed5a78848ec5a78448eb5a69848ea5a69448e95a68c48e85a5e448e75a5dc48e65a5d048e55a5c048e45a5b848e35a5a448e25a59448e1⟩ ] def tableRRRR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x5b4e449605b4b0493f5b4a8493e5b49c493d5b498493c5b494493b5b490493a5b48449395b3f849385b3f449375b29849365b1d849355b1c049345b0e849335b09449325afcc49315afc849305afbc492f5afa8492e5aee8492d5aed8492c5aed4492b5aecc492a5aeb849295aeb449285ae9849275add049265adc049255adbc49245adb449235ada049225ad904921⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x5fde449a05fddc497f5fa8c497e5f9e8497d5f9e4497c5f9c4497b5e8dc497a5e8d449795e8d049785e8c049775e8b849765e8b049755e89449745e88c49735e88849725e7e049715e2f849705b880496f5b7f8496e5b7f0496d5b7ec496c5b7e8496b5b7d8496a5b7cc49695b7bc49685b7a449675b79449665b78c49655b78049645b6e849635b5c049625b5bc4961⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x628e049e0628dc49bf628d449be628d049bd6268049bc625e849bb625dc49ba625a049b96258c49b8624f449b7624ec49b6624dc49b5624cc49b4624c449b3624bc49b2624ac49b1624a449b0623f449af623c449ae620a449ad620a049ac5feec49ab5fee449aa5fecc49a95febc49a85feb449a75fea449a65fe9449a55fe9049a45fe8849a35fe8049a25fdec49a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x63cd04a2063ca449ff63bac49fe63ba849fd63ba049fc63b9049fb62dac49fa62ccc49f962c8449f862c8049f762bf449f662bec49f562be049f462bc849f362bb849f262bb049f162b9849f062b8849ef62b8049ee62ae849ed62ae449ec62ad849eb62aac49ea629b049e9629ac49e8629a849e76299c49e66299849e56299049e46298849e36298049e2628e849e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x668c44a60668b84a3f668b44a3e668884a3d667fc4a3c667f04a3b666984a3a666904a39665f84a38665e84a37665e04a36665c84a35665c44a34665b84a336658c4a32664944a31664904a30663cc4a2f663c44a2e662ac4a2d662944a2c661f84a2b661f04a2a63f884a2963f844a2863db04a2763da84a2663d904a2563d804a2463cf84a2363ce04a2263cdc4a21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x670fc4aa0670f84a7f670f44a7e670ec4a7d670e44a7c670e04a7b670d04a7a670c44a79670bc4a78670a44a77670944a766708c4a7566ff44a7466ff04a7366fe44a7266fb84a7166ed04a7066ecc4a6f66ec04a6e66ebc4a6d66db44a6c66dac4a6b66d944a6a66d844a6966cfc4a6866ce44a6766ce04a6666cd44a6566ca84a64669a44a63668ec4a62668d44a61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x6a9ec4ae06a9e84abf676844abe675fc4abd675e44abc675d44abb675cc4aba675b04ab9675a84ab8675884ab7673d84ab6673cc4ab5673c44ab4673bc4ab3673b04ab2673a84ab1673984ab0673904aaf672f44aae672e44aad672e04aac672c84aab672c04aaa672a84aa9672984aa8672904aa7671f44aa6671ec4aa5671cc4aa4671b44aa3671ac4aa2671944aa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x6bed04b206bec04aff6beb44afe6bdf04afd6bde84afc6bddc4afb6bdcc4afa6bdc44af96bd904af86bd884af76bcfc4af66bcec4af56bce44af46bcb04af36bcac4af26bca04af16bbf44af06bbe84aef6bbe44aee6bbc04aed6bbb84aec6bba04aeb6bb904aea6bb884ae96bad04ae86adcc4ae76adc84ae66adb04ae56ac984ae46ac944ae36ac804ae26aaf44ae1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x764f44b60764f44b3f764f44b3e6fed84b3d6f9f04b3c6f9c44b3b6f9c44b3a6f9c44b396f9c44b386f9c44b376f9c44b366f6e44b356f6dc4b346f6c44b336f6b44b326f6ac4b316f6944b306f6904b2f6f6844b2e6f5d84b2d6f4e84b2c6f4e44b2b6bfc84b2a6bfc44b296bfb44b286bfa84b276bfa44b266bf984b256bf804b246bef04b236bee44b226bed44b21⟩ ] def tableRRR : Table Block := .branch 9 tableRRRL tableRRRR def tableRR : Table Block := .branch 18 tableRRL tableRRR def tableR : Table Block := .branch 35 tableRL tableRR def table : Table Block := .branch 70 tableL tableR def records (i : Nat) : List Nat := PackedNatTable.records table i end PolicyCircuitPacked0 namespace PolicyRewriteParametricPacked0 open PackedNatTable def tableLLLL : Table Block := .leaf #[ ⟨0x10807f03c41bc0d106082c014408f03e018c0a603d016807401a000, 0xa2b46404b74001b350428ac14f12dcc28a104287f0a1d820a2883384b710028750428a110d12dc000a1cc28710828a018c12dbc006cd430a1c430a1f472c4b6e001b350c20a1ec6284b6d0a1b010a0f4286708286e10912dac006ff41ffc0a0e030a1b08204b6a0a1a428660828680a19428610c286a0c612da400a1881ffc08286914512da02864041ffc0a18c28600c286610412d9c006ff428380828641c312d98006ff41c2108286118212d94007ff0283c08283f10112d90007fe0107fec5004b63⟩, ⟨0xe306b83181780b1053826c11007b035816809a03a016807401a000, 0xbf04293b15812eac04829340a4c830a4dc75c4baa0000a4946584ba801204292414f12e9c00028fa19512e9000710428f914f12e8c28f20428f00a39c20a3cc3384ba10028e60428f210d12e8000a38c28e40828f119412dfc00428b10a39030a3b854c4b7e0010730828ec15212df428e10428bf0a2d820a3883384b7b0028b50428e110d12de800a2cc28b10828e018c12de400710c28b10c28bd1cb12de000710c20a2ec6284b77⟩, ⟨0x11108003bc1be0cb05d029812407f03701840a804101a008401c000, 0xa8e429f3082a66141904be1001c6f071b420a98c506312f8000a8f42a3c082a6110112efc0072e81cb7070bc30a8c4506212ef80072ec1cb9082a25141844bbc0029fa0a7cc1cb90c29fd141804bbb0029e50a79829e30c29eb141804bb80029e60a79429e30c29e915f12edc04829b70a69030a7848784bb60120a00829bf19d12ed400a5f810a6845004bb40a5e010a5d8296c0829790ce12ec800a5ac10a5e04704bb10029690a59829380c297719b12ec000a5a029660a4e030a5d06684baf002f81b820a5c45644bae⟩, ⟨0x11c08783fc1e20de068830416609f04581e80cc05301f809802c000, 0x2afc042b2510d12fd00077a42afa082b2419412fcc0077a410ac84406912fc82af6042af40abb820abdc3384bf0002aed042af610d12fbc007dcc2aeb082af519412fb8007dcc10abc8406912fb40071c41c70070e030aaa8506212fac00a8e429f30a9d030aa8c706812fa40071bc1c6d082aa11419c4be8002a3d0a9d02a730c2a77141984be70a9b810a8f82a69082a7010912f9800a8f429f30a8e430a9b8706512f942a6b0a9a020a9a82a670a98c30a9b03184be4002a640a8f420a9ac5144be30a99810a8f42a650a98830a9a04104be2⟩, ⟨0x13f09304541fc0e406802fc15809504081a00b004201a0098026000, 0x2b730adc820a7f02b710a7d030add03184c260029f30a7ec20adcc4072130942b700429f30a7ec1cbd0c2b72101c44c240adb82b670829fb0ad981cbd0c2b700c1c04c23001c6d072c41cb90c2b6e141bc4c22001cbe072f420ada0506e130802b62042b310ac9c20ad8c3384bff0ad8010abe82b300a79830ad88406d12ff80077a81de9077a030ad80506c12ff42b3a0ace020ace42b370acd430acec3184bfc001cb90acb420ace85144bfb0acd810acb42a21077a030ace04104bfa001cb9042b36101ac4bf9001de8042b35101a84bf8002b2f0abe82b2d0c2b3215f12fdc2b25042b230abf420ac983384bf5⟩, ⟨0x11a08784081de0d906302cc13808903b018c0a6040019808c026000, 0xafd4607a130ec0063b810afd053c4c3a0afb010afa82be5082bed0ce130dc2be0041182bba0ab9440afb06079130d800460ae9c2bac102beb1c1e04c350af8810aeec2bbd082be4109130cc2be0042ba70aee82ae50c2be2101b44c32001181f6e07dbc40af806077130c400460ae9c2bac102bbc1c1d84c2f001182ba70aeb040aee08075130b8004607db830aed86074130b42ba3042ba10adec20ae903384c2c002b7a042ba310d130ac00addc2b78082ba2194130a80070066cc20adfc5073130a42b740429fc0a7d020add43384c27⟩, ⟨0x105076037018c0ba056827411807e035017c0a403f017807401c000, 0x2ca70b29020b2982ca30b1fc30b2a03184c70002ca00b1e020b29c5144c6f0b28810b1e02ca10b1f830b2904104c6e0010c20b28870c4c6d0010c20b1fc60a0131b000b1e02c77082c7c101131a800b1982c65082c72141fc4c69001e69042c70141f84c68002c660aff42c650c2c69141804c670000b0e8607d131940066c010b0e453c4c640019b00ade02a2d0c2c3221e131880066c01c2e082c3019d131842c250430aff420aff8307c1318000c2bfd082c26141ec4c3f001e68042c24101a44c3e⟩, ⟨0x10607c83a41b00ca0580270110075034016008e039017008c020000, 0x2cec042cf810d1329000b3a82bf9082cf718c1328c0063b830afe430b3d072c4ca20018ee0c20b3c86284ca10b3a42c68082c3c0b19c2bfd0c2c3f0c1c04c7f0b39c10b19c2c3c082ce90c1f04c7e001e68079a41e6a0c2ce7141b04c7d0b39010b3882cb9082ce50ce131ec00b2e010b3904344c7a002cb60b19820b38c6504c790010aff42c660c2ce0153131e00041e68082cbe152131dc0002cb4182884c75001042cb314f131d02caa042c790b29420b2b04244c720010b1e030c2caa242844c71⟩, ⟨0x11207f03a81ae0c3059027c124082038818c0b004b01b808c026000, 0xb6fc10b6cc2dbe082de10c1f04cbd0019b7066cc1c390c2dbf141b04cbc002d210add82da90c2db515f132e400b4842b760b6a430b6c070a6132e00066dc19b3082dae142944cb70b69410b68c2d7a082da60ce132d800b5e410b6944344cb5002d770b4e020b6906304cb4001828202d380c2da11cb132cc0060a08082d7f18a132c80002d70182904caf001828042d6f14f132b800b4802d380b4ac30b4ec5060132a80066c02d200b4ac30b4d890a3132a40066c0182b082d3419d132a02cf8042cf60b3b420b3e43384ca5⟩, ⟨0x15209f84a022810107503581860b004c81e40ca05201d809c028000, 0x2d380b4802d2b0c2e2415f133c02df0042d210a8e42db30c2e21101b44cee002b760b4842da90c2e20141804ced0b7dc10b4e82d3c082df9109133ac2df5042d380b4e42d210c2df7101b44cea00182a060ac19b60c2df5141b04ce90b7c810b6d02db6082df4109133a02df1042db60b6d020b7c83384ce70b7c010add82a390b6cc30b7c4406d133982def0b78c2de10c2a390b7882dbe0b6cc40b7c030aa133942dea042de20a8e420b7bc307c133902dec042de50b79c20b7b84244ce30b7a81066c02de20a8e430b7b060a9133880066c01c3a070e030b7a860a8133840066c02dbe0a9cc30b79875c4cbf0019b00b6f82a730c2de41c29c4cbe⟩, ⟨0x13108e84281e60e006682d814408f04101c80c404e01d00a802e000, 0xbae02aeb0badc30baec50601349c2ea6042ea40b3ec20ba9c3384d250b9f410b3e82e340add830ba98406d1349000afe42cfa0b8a830ba9457c4d230b9fc10b8d42e37082ea1109134842e7d042bf90b8d02b760c2e7f101b44d200018f0063c419b20c2e7d141b04cff0b9c010b9b82e68082e710ce133f000b99c10b9c04344cfb002e640b99420b9bc6504cfa001c019b7082e6c141cc4cf9002cfa0afe42e2a0c2e36141804cf50019b00b3e82e2a0c2e322428c4cf40019b0063c420b8c06744cf30b89410b88c2d22082e260ce133c82df5042d200b4e42d210c2e25101b44cf1⟩, ⟨0x13109004341ec0e306602e014809003f81b80b6042019007001c000, 0xaba42f61082f64142ac4d3c0bcf410bbb82ef7082f3e0ce134ec2f38042eeb0bbb42ef60c2f3d101b44d3a0bce810bcd82efd082f3b0ce134e02f38042eec0bbb42ef60c2f3a101b44d37001f7a07dd81f7b0c2f38141b04d36002eeb0bbb02ee90c2f37141804d35002eec0bbac2ee90c2f341c2984d34001f7a07dd820bcc850a5134cc00bc9c2ee9082f30142ac4d32002eec0bbac2ee90c2eef15f134b42ee50bb8c20bb902ee20bb8030bb983184d2c001f230badc20bb945144d2b0bb8410badc2ebd07dc430bb8c4104d2a001f23042ee1101ac4d29001f71042ee0101a84d28⟩ ] def tableLLLR : Table Block := .leaf #[ ⟨0x13008f842c1f40e906a82f015809604101b80b404901c0094022000, 0x1e3b078e420e0c45067135b800bfe42ef60bfb430e0907068135b4007df81f7c0838221419c4d6c002ffc0bfb420e08050ab135ac007e801f7f07d8c30bfc45062135a82fe90bf9c20bfa02fe60bf8c30bfa83184d69002f7f0be8820bfa45144d680bf9410be882fa00bf8830bf9c4104d67002f7d0bdc42f7a0c2fe5182b84d66001fa107df41f610c2fe3142b44d65002ba70bbd82f710c2f781c2b04d63001f6e07df020bdd850a51358800bc8c2f71082f74142ac4d61002ae60ab942f610c2f6d15f134fc00ab982ae50bd8430bda070a6134f8007dd01f70082f66142944d3d⟩, ⟨0x13409084442080f1070832016e0a004301c80c204d01e00a0028000, 0x39320e4dc39390c396419a136840076d41daf0839611591368000e3fc10e4c45004d7f001bfd0e3bc38780c38f921e135f8006ff41db00838f719d135f438eb0e3a820e2e838e90e2cc30e3b03184d7c0038b20e2e420e3ac4072135ec38e80438b20e2e41e650c38ea101c44d7a0e39838bf0838b90e2f81e650c38e80c1c04d79001df3078e41e610c38e6141bc4d78001e660799420e380506e135d800e0a038b20798430e2ec5060135d400798c1e610838ab141844d72001e62078fc1db10c38a0141884d71001e3d078f01e200c383d141884d700038290e0a038260c38331c1a04d6f⟩, ⟨0x11f08603e01d40dc06282c414608a03e01a00a80400198080026000, 0x39b50439300e4cc20e6dc4244db70e6cc10e4bc39320839b5102d84db6001db40439b3142c84db50038ff0439b1142d44db30e69c39770839370e5d820e5c430b4136bc39a50439760e4dc20e69c30b3136b80076b810e69450b2136b439a20e68020e684397f0e5f430e68c3184dac0039750439a2101ac4dab0e5f810e5d4397c0839a0102c44daa00397b0e5e839790c397e102c04da9001dad076ac1da50c397d142bc4da80039750439781401369c39680439660e4f020e5a43384da400393b04396811c1368c00e4e039370e4e430e59c66c4da2⟩, ⟨0x11108303e41cc0d906482e414c09604481d80be04b01c00ac028000, 0x3a6e182e04deb001bfd043a6d14f137a83a66043a640e8f820e99c3384de8003a3d043a6610d1379c00e8f03a2f083a651941379800700709c20e988507313794006ff43a2f0e3ec30e8e48784de3001bfd076c820e8dc6744de20039390439f611c1378439f30439e70e7a820e7d44244de00e7c4106ff439e60e7a430e7cc60a9136fc006ff41dbc076e830e7c460a8136f8006ff439e50e6f030e7a075c4dbc001db60439bf158136ec39b80e6c020e4c8392f0839ac0c2dc4db90e6cc10e4bc39320839b80c2cc4db8⟩, ⟨0x11708503e81d80d906102b812a08503781840a60400168080020000, 0xeb9c10ebc04344dfe001f780eaac20ebbc6504dfd001f78043aec101a44dfc0eb9010ead43aac083ae50ce137e83ae2043aab0ead02eec0c3ae4101b44df9001f7907de01f770c3ae2141b04df80eaf83abc083abd0eaec3ab90c3abf0c6137dc0079843ab1083abe145137d83aba043ab10e29c1f770c3abc104137d400798410eae8406b137d0007ddc10eae4406a137cc00eacc3aab0eac430ead857c4df20ea9c10ea943a7f083aa80ce137c000e9f810ea9c4344def003a7d0e3bc20ea986504dee001c01c20083aa3141cc4ded⟩, ⟨0x12508c04201f40e706802f015209603f81b80b404c01c0090026000, 0xeedc10ef804344e34001f790eacc20eefc6504e33001f79043bbc101a44e320eed010eec03ba9083bb50ce138c03bb2041bfd0eebc38290c3bb4182a44e2f001bfd078981e200c3bb2182a04e2e001bfd0eeb838350c3bb11d7138b43ba7043b690ed9020eea03384e2b0eb8810eacc3ab40bbb030ee9c406d138a80078fc1df9083b79142ec4e28003aab0eacc3ab10c3b6a141804e27001db6043b29142e84e25003b230ebe439bc0c3b26142e44e240039e90e2c83af90c3b211c1a04e23001df5077cc20ebfc5067138883af0043aee0eba020ebc43384dff⟩, ⟨0x12208603ec1d40dd06502f415409704381e80ce04e01e8098026000, 0xf19010f0d03c3e0f18430f1984104e69003c3a0f0e020f19060bd139a00077ec1dfa083c62142f04e67003c34043c37140139983c2e043c2c0f08820f0bc3384e64003c21043c2e11c1398c00effc39370efc030f0b466c4e62003bfe0e4dc3bf00c3c2a19a139840077f41daf083c27159139800077f810efcc5604e3d0efb410efa03be2083bee0ce138ec3bec0efac20efa03bea0ef8830efb43184e3a0038280e2e420efb04072138e438e80438280e2e41e650c3beb101c44e380038b20e0a01e610c3be915f138dc3be0043bbe0eee020ef843384e35⟩, ⟨0x12408883e81cc0d305f82b813a08903e01a40aa04701b80a4020000, 0xf2c810bdb02f6e083cb4109139f03cb0042ae50bdac2eeb0c3cb2101b44e7b001f7407dc01f750c3cb0141b04e7a0f2b810f2a83ca5083caf0ce139e43cac043ca90bfe420f2b840e1139e0007d941f63083cac143804e77003ca80bfb020f2ac50bf139d80077dc1df6076e830f1f45062139cc00efc010f1f04704e720f1d810f0d83c30083c770ce139c03c74043c350eff820f1d840b6139bc0077f010f1d050b2139b800e1e03c38083c71145139b40076c410f1bc50be139b03c680f19820f19c3c650f18830f1a43184e6b003c3c0f0d020f1a05144e6a⟩, ⟨0x11408003b41b40cf06102bc13608703a01980b004b01f00ac028000, 0x1e71079ac1f640c3d71141b04eb90af8810aeec2bbd083d700ce13ae03cb2042f6c0bdb820f5983384eb70000f4f460e313ad40046083d3c143884eb4003cfa0b0f03cf90c3d2015f13aa400b0f03cfa0f3e430f3f4506013aa000e1e438680e1e030f3d4506613a9c39b50439300e4cc20f3d03384ea6003c34043cf1142d44ea5001dfe043ce5142e84ea2003cba043ce311c13a84007d8010f2f45604ea00f2dc10f2d42ef0083cb80ce139fc3cb0042ae60bdac2eeb0c3cb7101b44e7e002ae50ab982f610c3cb6141804e7d⟩, ⟨0x13209104442060ef06e83381800ac04c82180de04f01d809c028000, 0x3dea0f7a420f7b84044eec003db80f6dc20f790507f13bac0079bc10f788507e13ba800f6e03da60f6dc30f6ec506013ba43dae0480f69820f69c307c13b9c0203da6083daf141ec4ee6001e6e043dad101a44ee50f2b010f2a42ff9083da50c1f04ee30f5f410f3fc3d21083d7f10913b843d7c043d210f3fc20f5f43384ee00f5ec10b0f02ba70f3ec30f5f0406d13afc3d7a0f5d83d730c2ba70f5d43ca80f3ec40f5ec30aa13af83d78043d750ae9c20f5e8307c13af4007db41f6507d8c30f5e0506c13af000f5d03ca80bfb030f5dc57c4ebb0f5c410f3ec3ca8083d730c1f04eba⟩, ⟨0x10807a038019a0c0058027c12208603d81a00b003f017806401a000, 0xf8ec10f6e43cfa083e3d0c1f04f21001e6e079bc1e700c3e3b141b04f200f8d810f8d03e2b083e370ce13bf400f8a810f8d84344efc003e280f6e020f8d46504efb0060f6983db80c3e3215313be80181e6e083e3015213be40003e26183944ef7006043e2514f13bd83dfc043deb0f7dc20f7f84244ef40060f7a880c3dfc242844ef30f7e43df6083df80f7d43df10c3dfa0c613bc800f7c83dea083df914513bc43df4043dea0f7cc3df00c3df610413bc00188083df41c313bbc0188083df1182804eee⟩, ⟨0x11007d83a41b00c605d82c013a09004001c40ca05101f80c4034000, 0xfbc01443ee70faec30fbc860a913ce00441ea407a8830fbc060a813cdc0443ee60fb9430fbb075c4f350110fb983ee50c3ee91c29c4f340000fae460e613cc804410fae053c4f310fac410fabc3ea6083eb20ce13cbc00fa9410fac44344f2e003ea30f9dc20fac06304f2d01e203e770c3ead1cb13cb00788083eab18a13cac00f9a83e770f9a030f9e8506013ca00443e6a0f9a030f9d490a313c9c0441c25083e7319d13c983d7b043cfa0ae9c3cfb0c3e61101b44f240f8f43dba083cfa0f6e43da60c3db10c1c04f22⟩, ⟨0x13609404541fc0ea06b830c16009c04882180d205501d809c026000, 0x106cdc20fddc5484f6f0fd9810fcec3f3d083f6810913db03f64043f360fcdc3ef60c3f66101b44f6b001b3706ce01ce10c3f64141b04f6a0028710fcd83f350c3f3c15f13da000fcd828710fcd430fce4506013d9c00f9ec3ef60fbd430fcbc57c4f65003ef60f9ec3ef50c3f2c141804f640000fc9460e813d8407810fc9053c4f600fbf43efc083ebb0fb9c3e7b0fb9840fbf840e713cf83ef0043ee70faec20fbf4307c13cf43efb0fbe020f9ec3ef70fb9830fbf0307013cf03efa043ef70f9ec20fbec307c13cec0073981ce207a8c30fbe0506c13ce83ef2043eeb0fbb420fbd04244f39⟩ ] def tableLLL : Table Block := .branch 12 tableLLLL tableLLLR def tableLLRL : Table Block := .leaf #[ ⟨0x13e093844c1f80e906b02fc13e08b03c81ac0b00410170084022000, 0xfef410f9dc3e780f9ec30fefc406d13e840070901c250739430fef4506c13e803fb5043e7b0faec3ef70c3fba101b44f7f0fedc10fcb83f30083fb910913df83fb6043f300fcb820fedc3384f7d0fed410fbd83ebb0fbdc30fed8406d13df03efd0fba03fb40c3ebb0fb9c3ee60fbdc40fed430aa13dec3ef8043ef70fb9820fed0307c13de80443f360fcd430fec090a313de40441b38083fae19d13de03fa5043f380fda420fe9c4244f770fd9010a1c43f370fbd830fe94406d13dd83f7d043f7b0fdc820fdf83384f73003f71043f7d10d13dc800fdbc3f36083f7c19413dc400428710fcd830fde454c4f70⟩, ⟨0x11f08483e01ce0d706182c013a09004001bc0c204e01b8090026000, 0x4831044823120c0482d0c483310413ed400faec29ec084831141904fb4001eb907adc2120b8506313ecc01208c482808482c10113ec801208c48220fb94312098506613ec43fbf043e790f9f020fffc3384faf0fff410ffec3ff2083ffe0ce13eb800ffc410fff44344fad003fef0f9a820fff06504fac0060f9dc3e6a0c3ff915313eac0181c24083ff715213ea83fec043fe70ffa420ffb84244fa80fef410f9a83e780f9ec30ffb0406d13e9c00f9dc3e6a0f9a030ffa057c4fa5003e6e0f9a020ff9450ab13e903fbf043e790f9f020ff844244fa2⟩, ⟨0x13409304542020f006b831c16209d04481d40c205001e80a4020000, 0x1f72044922101a44fea001f2507c8c2123cc506113f98007c901f21079e43123a0506213f94007c841ebd0848e0142ec4fe31229448a30848a412288487f0c48a60c613f880121dc48790848a514513f8448a1044879121ec487e0c48a310413f800121b04875121cc31228460ae13efc007af01eb8079fc3121fc50ad13ef8007aec1eba07a883121b8506213ef400faec29ec120883121a4706813ef0007ae41eb70848671419c4fbb120e41120a4483408483b10913ee401208c29ec0faec3120e4706513ee04836120cc2120d44832120b83120dc3184fb700482f1208c2120d85144fb6⟩, ⟨0x13709184541f80eb06a02e814c09504081b80ae0430180074020000, 0x3c74043c350eff82125f840e913ffc007d801125cc50ba13ff4496b125a82124e84969124d43125b03184ffb0029ec124e42125ac407213fe849680429ec124e41f270c496a101c44ff912598493f084939124f81f270c49680c1c04ff8001eb707bec1f230c4966141bc4ff7001f2807c9c212580506e13fd40124e029ec07c8c3124ec506013fd0493304492d124a02124d03384ff2124c410bae02eb90ab983124cc406d13fc4007dcc1f7207dc43124c4506c13fc000abac2eb80badc3124b857c4fef1249811249048fe0849270ce13fb40123f41124984344fec001f720bae02124946504feb⟩, ⟨0x11f08903ec1ce0d906002c813c08a03b01a40ac04901b008c026000, 0x127ec1127f85005838127bc49bf0849a6126f82126e430b4160c449ed0449be126982127bc30b3160c0007ce01127b450b2160bc49ea127a02127a449e7127943127ac318582e0049bd0449ea101ac582d127981126f449e40849e8102c4582c0049e31278849e10c49e6102c0582b001f3707cd41f2f0c49e5142bc582a0049bd0449e0140160a449b70449b5126ac2126e033858270049aa0449b711c160980126a049a60f2e83126d866c58250049a7126983cba0c49b319a16090007cfc1f390849b01591608c497e043cf00f3b42125fc3385820⟩, ⟨0x14209104381f40e606902f815609804081b80b0045019007c01c000, 0x12bc44aee12ba83129984aed12b9c4ab9104af20c2a8586d12bbc112bb44a66084af10c1f0586c001fb807ec01faa0c4aef141b0586b12ba0112ae44ae7084aea0c1f0586a001fae07eb01faf0c4ae8141b05869004a3f12ae04ab60c4abd141805867004ab8128fc4ab60c4abb15f161984aae044a70129a0212abc338586412aa41129984a6f1299c312ab8406d1618c4aab044a73129d4212ab4424586212aa41046129bc4a67104aab181e45861001181fb907ee8412aa46077161800046129984a6e104a741c1e0583e001184a66129b84129c47076160f40128d04a21084a3c141fc583a001f3c044a3a141f85839⟩, ⟨0x12208783e01c80d306282c813e09204101c40c204d01e00b802e000, 0x12e9c112df04b73084ba80ce162884ba5043aab12dec4b720c4ba7101b458a1001f7907de01fe00c4ba5141b058a0001e6112de4212e8850ec161fc007f80112e84406a161f800eacc3aab12de4312df457c587d12d9c112d944b3c084b680ce161e8012cec112d9c4345879004b3912ca8212d986505878002c3c12ca8212d8c50eb161dc0070079ac212d8450ea161d80128f84b2a127fc312cb45060161c80128f849ff084b28141fc5871001f3a044b26141f8587012bc81128fc4a6612ae4312bdc406d161bc4af2044ab8129984ab90c4af3101b4586e⟩, ⟨0x14109504582060ec06c03141620a004781f00ca05201d809c028000, 0x4bf6044b6c12fb84a7a0c4bfe101b458b5004a6712db04be00c4bfd1418058b412fe0112fbc4bf1084bfa109162cc4bf6044a6712fb84a7a0c4bf8101b458b2001fbd07eec1fbe0c4bf6141b058b1004b6c1299c4be00c4bf015f162bc012db04a6712f80312fac70a6162b8007ef41fbb084be91429458ad004be312f80212f9c50ab162b04bbe044bb112ea8212efc33858ab12ee4112dc84bb0129ec312ef8406d162a84bbb044bb412ed8212ef442458a912ee41129e84bb0129ec312eec406d162a0007f841fbf07f88312ee4506c1629c012dc84a7a12ebc312ed457c58a5004a7a12dc84baf0c4bb21418058a4⟩, ⟨0x138094046c2140f906c831416409f04401d00b604701a0090026000, 0x1fa707ce42132f056458ee001fa8044ca8158163ac012b9c4aeb084ca4142fc58ea003c3b0f0e42131d450ee163a038e90e39838bf0c38b20e2e438be0799440e2cc30aa1639c38ba0438b90e2c820e3a4307c1639838ec0438ba0e2cc2131a842458e4131841130d84c38084c631091638c4ba5043ab312dec4b720c4c61101b458e2003aab0eacc4b790c4c371418058bf130c84a73081184a67129bc4129d450ed162f44aa9044a6f1299c2130c8307c162f00046129984a6e104c28201d458b9001181fb90c4c26181d058b8004b34129b821309050ab162dc4bfe044bfc12db4212ffc33858b6⟩, ⟨0x11808283c41c60d206102d013608b03a81900a60460198098026000, 0x134cc1133c44ce5084d340ce1648c4d31044cf0132cc2134cc40b616488007e981134c450b2164840128d44a21084d2f142ac5920004a21133d42134b051458ff001f3d044d2a142f858fe1348c4d21084d22134804cfd0c4d240c6163f40133dc4cef084d23145163f04cff044cef133e44cfc0c4d21104163ec0133d44cf3084cff182f458fa001fa507e902133f450bc163e40133bc1133c850058f81338c1133844cb7084ce40ce163c80132d811338c47058f1004cb4126984ca50c4ce219b163c00132cc49a6132943132fc66858ef⟩, ⟨0x12f08d841c1ec0dd06682dc14608f03d819c0ac045019007801a000, 0x4bf6044bee129e82136e4307c164d00129984a7b135c03136d070ac164c8007ee41fe3084db2142945931136a04da6084da7136944da20c4da90c6164c00135cc4d76084da8145164bc4da4044d76135d04da10c4da6104164b801359c4d70135b831369060ae164b4007fa01fe407ea431368850ad164b0007f9c1fe607ea83135a45062164ac0129fc4a7b134e83135847068164a8007f941fe3084d3f1419c5929004aa2134e82134f450ab164a04d38044ca3131f82134e43385927134d81132884a7f084d38103845926001fb007ea82134d850e0164940132941134d44705924⟩, ⟨0x145097046c2080f006e832816609f04601f80d405902400b8034000, 0x4dfd044a3e12cac4a3f0c4e24101b4596a004b2a128f849ff0c4e2315f165a44dfd044b2a12cac4a3f0c4dff101b45968001fab07ce81f3b0c4dfd141b05967004aec12b9c4aeb0c4dfc15f165984dfa044df6137c42137ec3385965137e01128d04df512ae03137e8406d16590007eb41f3c07cf43137e0506c1658c0137d04a34128843137dc57c5962001fa8044deb142e8593f004b72129e84baf0c4de81c298593d001fe107efc21379850a5164f00137804baf084de4142ac593b136f84bb1084a7b12ec04b720c4baa0c1c0593a12ee4112ec04a7b084dbe0c1f05939136e44bfc084a7a12fb84b6c0c4b6d0c1c05935⟩ ] def tableLLRR : Table Block := .leaf #[ ⟨0x106079037c1a40c2059027c124082038818c0a604501a0098026000, 0x4a34137d04a210c4ef21418059a213ba8113ba04ee2084eeb0ce16680013b84113ba8434597f004ebf128d0213ba4650597e001c01e71084ee6141cc597d13aec113ae44eb0084ebc0ce165e8013abc113aec4345979004ead0b480213ae865059780060b4e02d200c4eb7153165dc018182a084eb5152165d80127fc4cf3084e60145165cc007cec1138f850be165c8007c8c4e2f084e38143b05971001fbc044e37101a85970002aeb0bae04e2f0c4e3315f165bc4e24044e2212980213894338596b⟩, ⟨0x11808203cc1be0cc05f82bc14208d03d019c0b404a01c80a802e000, 0x4fa2124e04fac0c4fb61c1a059b7001efd07bec213ed05067166d800bae02aeb138bc313dfc5060166d04f67044f6513cfc213da033859b2004f3e044f6710d166c40071a04f3c084f66194166c00071a0113d8c4069166bc013cb84f2f13cb0313cd05060166b0013cbc4f2e13cb0313cc857c59ab13c8c113c844ef8084f240ce166a8013bdc113c8c43459a9004ef5137d0213c8865059a8004a34137d0213bfc50ef1669c0181f3c084efd143a859a613bcc113bc44eec084ef40ce166904df8044df4137d44ab80c4ef3101b459a3⟩, ⟨0x14209604602080f006e831016609c04481d80be04b01c008c022000, 0x160b41122a85828160a83160bc41059e8004ffa1608c58210c582d182b859e7001f2007bf01ee30c582b142b459e6001eff07bf81ee40c4ffc1418859e513fdc113fc84fef084ff80ce167904ff613fd4213fc84ff413fbc313fdc31859e3004938124e4213fd84072167884968044938124e41f270c4ff5101c459e10029ec124e01f230c4ff315f167804fed044e32138a8213fb833859be13fac10bae04e3112db0313fb4406d166f4007dcc1f7207ef0313fac506c166f04fe5044fe113e8c213f9833859bb13f8c1444fe013e88313f9460a9166e80441eea07b90313f8c60a8166e40444fbf13ee0313f8875c59b8⟩, ⟨0x12408a040c1e80e0067830415c09a04081c40b604a01c80a4020000, 0x58b6162ac21638c65059fc005876162ac21638050ef167ec0181e7a0858be143a859fa005876162ac587e0c58ae1418059f6011161d8587e0c58a921e167d40441e7a0858a719d167d0586f04583f161a82161c442459f2004fb9124e04fa20c586f1c19459f1161b0586908586b161a058640c586d0c6167c00161944fb908586c145167bc5867044fb91619858630c5869104167b8013e8849380858671419059ed001efd07bec2161905063167b0013ee4583e085862101167ac5831160bc2160c0582e160ac3160c831859ea005825122a82160c451459e9⟩, ⟨0x13809084041da0d906282c813c08b03a018009a040018008001a000, 0x164c411648c4fa2164903164c8406d168c45930164bc592e0c4fa213f804fbf164904164c430aa168c04fe3044fe013e882164c0307c168bc592c04592413efc2164b8307c168b8007ba01ee607ba43164b0506c168b40161dc5923164883164a457c5a2c005923161dc59220c5926141805a2b163ec1162b458af0858fc0ce168a458f90458ab162b058770c58fb101b45a28001ee7079e81e7b0c58f9141b05a27163c01163b858e80858f10ce1688c01639c1163c04345a220058e6161d82163bc6505a21001c01ce60858ec141cc5a201639011638858b90858e50ce167f80162e011639043459fd⟩, ⟨0x12308803fc1d80d506082b814209104001c00b804b01e8098026000, 0x165ac593f122a43166d857c5a65005962122a42166cc50ab1699059af04596d165bc2166c44245a63166b41165ac596c1648c3166bc406d16988007b941e78079e43166b4506c1698459a60459a4165ec21669c3385a6000597a0459a610d168fc0165e0596b0859a5194168f800fbd8596b0859a2143ac5a3d001c01ce20859a0143a85a3c00593f165ac48a90c596e141805a38011164fc48a90c596921e168dc0441e7808596719d168d8593104587713e8859240c5936101b45a34164cc1164a0592a085935109168cc593204592a164a02164cc3385a32⟩, ⟨0x12108704041e20e306602e414408f03e01a80ae04a01d00a802e000, 0x5a2f045a2d1689c2168c03385a7a005a26045a2f10d169e40077a82b2f085a2e194169e00077a81168ac4069169dc4feb042aeb138c44b6c0c59fc101b45a75167e41167dc58780859fa0ce169d058f9045876162b058770c59f9101b45a730058ab161d8587e0c59f815f169c858fb0458ad162bc2167d44245a7001113efc4fb80c59ee1c29c5a6f167a81167a059e20859eb0ce169b40167841167a84345a6c0059e0164fc2167a46505a6b001c01ce20859e6141cc5a6a166f41166d459b70859bf109169a059ad04593f165b059230c59bd101b45a67⟩, ⟨0x13309004301f60ea06f834016c0a204681e80c404d01c008c022000, 0x16ab85a6c16ab4316af857c5ab0005aae169b05aad0c5ab91c2985aaf001c6907194216adc50a516ab8016ac45aad085ab5142ac5aad00016a9c60f016ab00070d86085aa6143885aab16a805a7e085a6c169a45a3b0c5a790c1c05aa8169d01169a45a6c085aa00c1f05aa7001c36185a3b168e44169fc707616a985a76045a6a169b42169e04245aa4169d01070d86169a45a6c105a76181e45aa3001c36181c63071904169d0607716a880070d86168ec5a39105a6b1c1e05aa0001c36185a3b168e44169988075169fc0070d860718c3169906074169f80168f85a39085a62142ac5a7d⟩, ⟨0x145099046c20e0f306f833817a0aa04801f00d205201f00ac028000, 0x5b36045b3016cac216cdc3385ae516cd0116bf05afd0a7cc316cd8406d16b90006e801c6b071b0316cd0506c16b8c0168c45afc16be8316cc4506016b88016bf05a3116be8316ca470ac16b80006e801c6b085b27142945abf005b2116be8216c9450ab16af8016bf05a3116be8316bfc57c5abd16bd85abd085a3116af05a6c0c5abf0c1c05aba16b98116af05a31085af60c1f05ab916bcc116bb85af0085af510916ae05ae6045aae16af05a310c5af3101b45ab7005a6c16ab85aad0c5aef141805ab516ba0116af45abf085aea10916ad05ae6045a6c16af05a310c5ae8101b45ab3001c69071941c6a0c5ae6141b05ab2⟩, ⟨0x11e08583e01c20ce05b828c11e07c034817009803e015807801c000, 0x5bb916ebc5bb70c5bbc15f16be45baa045b7e16dd8216eac3385af616e94116ce05b7d16bf0316ea8406d16bd45ba7045ba016e88216ea44245af416e94116d945b7d16bf0316e9c406d16bcc006dfc1b7e06df4316e94506c16bc8016ce05b6516dec316e84506016bc0016d945b3816dec316dfc57c5aef16dc0116db85b68085b710ce16bb4016d9c116dc04345aec001b7f16d94216dbc6505aeb001b7f045b6c101a45aea16d8c116d845b3b085b640ce16ba4016ce8116d8c4345ae8001b7e16ce0216d886505ae7001b7e045b3f101a45ae6⟩, ⟨0xf807603641980bc056027c116078036818409c0410188084028000, 0xeb01171a853c5b311718c1171845c38085c640ce16cbc0170dc11718c4345b2e005c35170cc2171886305b2d00eb08170cc3170fc72c5b2c00eb08085c3d18a16cac016ec05c28170983170b4506016ca00170a05bb0170983170ac57c5b2700016fec60f116c9005bd045bfa14f16c8c5bf3045bf116fa0216fd03385b21005be7045bf310d16c80016f945bb9085bf218c16bfc05bd0c5bb90c5bef1cb16bf805bd0c216fb46285afd005baf16ee45bb70c5bbe141805afa⟩, ⟨0x10807c039c1b20c60578278116078035016408c0390148060016000, 0x5ce0172f82173b46305b65001a76205cbe0c5cea1cb16d900069d88085ce818a16d8c5cbb045cb0172c82172f44245b61172e41171c05caf170a03172ec406d16d8003ae3af5e50c5cb9141b05b3f005c33171c05ca00c5cb115f16cf405bb171c05ca00c5cac2428c5b3c016ecebc2172a86745b3b005ca4172802172a050ab16ce85c7e045c7c171cc2171fc3385b39005c72045c7e10d16ce00171bc5c70085c7d19416cdc0185c33171c03171e854c5b360063ae085c7815216cd40005c6b183c85b32⟩, ⟨0xe806b831816c0ab04f825010e07c037817009e03f017008001a000, 0x5bff175d42176a0506416df80064fc193d085da51418c5b7d005da0175dc21768c4045b7c000175cc60f516dec05bb045d7214f16de80005d3e183d05b74001a70045d3d14f16dcc0005d30183cc5b70001a76045d2f14f16dbc5d26045d24173ec21749c3385b6c005cfa045d2610d16dac0173dc5cf8085d2519416da80185cbe173e031748854c5b69006069e02174805485b68173b81173b05ce3085cef0ce16d9c0173881173b84345b66⟩ ] def tableLLR : Table Block := .branch 12 tableLLRL tableLLRR def tableLL : Table Block := .branch 25 tableLLL tableLLR def tableLRLL : Table Block := .leaf #[ ⟨0x12f08f84241f60ed06c831816009d04581dc0cc05301f809802c000, 0x66a45b7b085e2514516ec85e21045b7b177f81b7d0c5e2310416ec40066a4117884406b16ec0006df4117880406a16ebc0177e45d75066a43177f0506016eb85df3045def177a02177d03385bab177c415bb177b85bff0c5df3182a45baa016ec192a064a03177c460a816ea405bb177b45db50c5df01d716ea0016ffc5d75176d8317790706816e980064fc193d085de21419c5ba5176c01176845dab085db210916e8c0176805d7516ffc3176c0706516e885dad176a82176b05da9176943176b83185ba1005da6176802176b45145ba0176a01176805da7176903176a84105b7f⟩, ⟨0x15b0a384c02320f9072834817c0ac04c82000de05801f00a8032000, 0x65841960064a03179b8506216f8c5e64045bb016ffc5c290c5e69101b45be2179901170a05bff170a4317994406d16f845e63179845e600c5bff177b85ded170a441799030aa16f805df1045dee16ffc21798c307c16efc05bb177b45db50c5e621c29c5bbe178f81170a45ded085e600c1f05bbd0179978819290c5e3e141b05bbc178f01177ec5df6085e3d0ce16eec5e3b178e82177ec5e39177d83178f03185bba005d75177e82178ec407216ee45e38045d75177e819ad0c5e3a101c45bb8178d85e2f085dfa178b819ad0c5e380c1c05bb700193d0668419a90c5e36141bc5bb60019ae066b42178c0506e16ed05e251788c2178905e22178803178983185bb3⟩, ⟨0x13109184401f20e506902ec15209b04401c40bc04701b0094022000, 0x67dc117dac406916fe45f3c045f3717ce4217cf84245bf70ad8010acbc2b300a798317cf0406d16fd800abe82b2f0acb4317ce0506016fd05f31045afe168c8217cc83385bf216cd01168c45afd0a7cc317cc4406d16fc405bb16ebc5bb70c5f2921e16fbc05bb5e0085f2719d16fb85efe045bbb16ec4217bfc3385bed17be4116ebc5bba16ec0317bf8406d16fb05efb045bbd16efc217bf44245beb17be4116ee45bba16ec0317bec406d16fa805bf5e05e10c5ef9141b05be90019ab066a4217bc8506116f9c0066a819a7063fc317b9c506216f9800669c1963085eb7142ec5be4⟩, ⟨0x12908c03f81d40d706002b0132085039016c08e03c0180074020000, 0x17fc05fba085ff4142ac5c2e17fb45fbd08493817ef05fb40c5fb50c1c05c2d17fa0117ef04938085fed0c1f05c2c17fa8117f805fe2085fec109170ac5fe8045fbb17ef049380c5fea101b45c2a001e3307be41efa0c5fe8141b05c29005fb417eec5fba0c5fe115f1709c017eec5fb417ee8317ef85060170985fac044f3313cd8217eb84245c2317ea8113cbc4f3013cd4317eb0406d170880067e419f5067e8317ea8506c170840005f77183d85bff00bc8117dd853c5bfe17dbc117db45f67085f700ce16ff0017d98117dbc4345bfb0019f717d90217db86505bfa⟩, ⟨0x12a08b84301fa0ea06b830015809904101b80b604701b0094022000, 0x167f0113df84f7908687310917194000686d183dc5c63001ea01821a1b050e217188683504682b1a0b421a1943385c3f1a18811a0e8683c086864109170f46833045ffc1a0a85fbb0c6862101b45c3c005ffb17ff05ffa0c683b141805c3a1a0d411a0ac682d086837109170e46833045ffb1a0a85fbb0c6835101b45c38001ef707bd41ef80c6833141b05c37005ffc17fec5ffa0c682c15f170d4017ff05ffb17fe831a09c70a6170d0007bdc1ef5086825142945c33005fff17fe821a08c50ab170c8017ed05fbb17ee8317fe070ac170c00078cc1ef9085ff6142945c2f⟩, ⟨0x13109184401fa0e606d83301760a804801ec0d005101e009c024000, 0x67d811a480406a171f001a3dc4f6d73c0c68fa141805c7b1a3bc113cc45faf0868f1109171e45faa044f2e13cc04f350c68ef101b45c780001a3a460f8171d800679860868e8143885c750068a21a1f821a2f850ab171c868bb0468b91a2d821a2f03385c701a2c4107a8061a2ac5ffb1068bb181e45c6f001ea018687a1a1f841a2e87078171b868b30468ac1a2b821a2d44245c6c1a2c411a1e868ab17fec31a2cc406d171ac007a80607bcc1ef41068b1181dc5c6a001ea018687a1a1f841a2b47076171a0007a8061a1e8687e1068a9201d45c67001ea0181ef30c68a7181d05c66⟩, ⟨0x13208f84301ea0e206582e815209604101cc0be04b019008c01a000, 0x692917d9068fb0c69b915f172c4697b0469361a5e021a5f44245caf1a5cc11a4cc69351a59031a5ec406d172b8697504696e1a5a421a5d83385cab1a5cc11a4d069351a59031a5d4406d172a806ec6e86ed0c6973141b05ca900693b1a4c821a5c450ab172a001a4cc69341a4c831a5bc57c5ca70069331a4d069320c69621c2985ca501bb1ba021a58050a51729001a4d069331a4c831a4dc50601728c017d9069291a3ec31a4b050601728469251a48c21a49069221a48031a4983185ca001cf068fb086925145171fc69210468fb1a3f419f60c6923104171f8073c046921101ac5c7d⟩, ⟨0x12b08d84341f40e306782f014a09103f01a80b204801a0094024000, 0x67e06929086a65194173980067e011a9884069173946a3a046a381a7e021a8ec3385ce31a8c811a7dc6a2c0a7e831a8e8406d17388013dc869f71a7fc31a8e45060173846a34046a2d1a8bc21a8d84245cbf1a8c8113dc86a2c0a7e831a8d0406d172f8006fa01caf072c031a8c8506c172f401a7dc4f721a7fc31a8b857c5cbb0069f713dc869ff0c6a291c2b05cba001be8072bc21a89c50a5172e401a88469ff086a25142ac5cb80069e71a79869e40c69f51c2985cb601cc1cb821a7cc50a5172d401a79c69e61a79031a7a857c5cb4004f6d1a3ddcf031a6f457c5cb2⟩, ⟨0xe906f034817e0b205102441080710320150088037016008001a000, 0x6abe183e85cfa004a811aaf453c5cf91aad811aad06aab086ab70ce173dc01aaa811aad84345cf6006aa81a9c421aad46505cf50011a9d86a710c6ab2153173d00044b021aac05485cf31aa9811aa906a7b086aa70ce173c401a9e811aa984345cf0006a781a9d821aa946305cef004a831a9d831aa8872c5cee004a83086aa018a173b40006a6f183e45ceb0078011a9b853c5cea1a99811a9906a3e086a670ce173a001a8f411a9984345ce7⟩, ⟨0x13b09404441f40da06302c813c08a03b818c09e03c017807c01c000, 0x6b67046b651acc421ada03385d301ad8011acbc6af91acc031ad9c406d174bc6b60046af51abe46b300c6b61101b45d2e1acfc6b3c1ace431abe46b3b1acd86b30106b600c2a85d2d1acf411acec6af9086b3f0c1f05d2c0019b0072801c7a0c6b3d182a05d2b1acdc11acc06b36086b390c1f05d2a001c7e071f01c7f0c6b37141b05d29006b2f1abd46b2e0c6b3515f174a001abd46b2f1acb831acc850601749c00ade06b200a8b431ac8c5060174906af0046aee1ab9421abc43385d21006ae4046af010d1748001ab882cfa086aef194173fc0042bf90b3e831abb054c5cfe001063c021aba85485cfd⟩, ⟨0x12608983f01d20dc06602ec15809904101b80b604a01b809c026000, 0xb7dc10b4e82d3c086bed0ce175986bb0046b721ade86b2f0c6be7101b45d651af9411af8c6bba086be60ce1759001aee411af944345d63006bb71adc821af906505d62002e651adc821af8450ef175840181c30086bbf143a85d601aec811aea06baa086bb4109174f46bb0042e651ade86b2f0c6bb2101b45d3c001c7d070c01c310c6bb0141b05d3b006b720b9946b790c6ba915f174e400b9cc6b79086ba6142ac5d380019b00b9946b790c6ba421e174dc0066c01c30086ba219d174d800b9946b721ade431adf05060174d46b68046b311ad9421ada84245d31⟩, ⟨0x13008e84281e60e006682d814408f04101c80c205101f009c028000, 0x1b0b411ac886b24086c6c0ce1768c6c39046c341b0d821b0ec4245d7c1b0ac10ade06b211abd431b0e4406d175ec01ac802b780a8b431b0d457c5d791b0b411ac886b24086c2f109175dc6c2b046b201ac846af50c6c2d101b45d76001c7b070b81c2f0c6c2b141b05d751b0a011b0986bfd086c290ce175cc01aff011b0a04345d72006bfa1ac8021b09c6505d71002b761ac8021b09050eb175c00070066cc21b08850ea175bc6bf7046bf21afd021afe44245d6d1acf41066c06b3b1abe431afdc60a9175b00066c06b361ace831afcc75c5d6a0019b01acd86b3a0c6bf01c29c5d69⟩ ] def tableLRLR : Table Block := .leaf #[ ⟨0x13f097045c1fa0e906c031016209a04301d40ce05301c8094022000, 0x13da46cbd086cef101c85dba1b3b0113da46cbd069b431b3b84071176e46cea1b38c21b2f46ce2069b431b3b03070176e00067f41a61069a431b3a8506f176dc0069b81a6d086ce4141b85db5006cbc13da41a690c6cbf141805db41b2d811b2a46ca2086cb70ce176c86cb4044f3c1b2a04f710c6cb6101b45db1001c680719c1cac0c6cb4141b05db0001a691b29821b2c050ec176bc0072b011b2bc406a176b801b29c4f3c1b29831b2a85060176b46ca113cc4213cd44f3013cb8317ebc3070176ac5faa044f3013cd421b284307c176a8013cbc4f2e13cb031b1e870a61769c0067e419f5086c78142945da6⟩, ⟨0x13609284481fc0ef06f032c1680a004681d80c404f01d80a8032000, 0x19b1cc9ccc31b5d4506c177bc01b4dc6d3d1b58431b5c457c5ded006d371b4f46d610c6d6c1c2b05dec019b1cc821b5a850a5177ac01b5906d61086d68142ac5dea1b4d411b4cc6cf3086d360ce177a06d2d046cf21b4944f690c6d35101b45de7004f351b3c86cf80c6d34141805de61b4bc11b4986d28086d31109177906d2d044f351b4944f690c6d2f101b45de3001939067ec19fc0c6d2d141b05de2006cf213cd46cf80c6d2715f1778001b3c84f351b3e031b48870ac176fc0064e419fb086d20142945dbe006cfa1b3e021b3f850ab176f46cef1b3b821b2f86ced1b2e031b3c03185dbb⟩, ⟨0x13308e04201ea0de06502dc14609204081d80d005501f00a802e000, 0x6de3044f711b6f44f720c6deb101b45e24006dac13dc46db00c6dea141805e231b79411b6f86de0086de7109178846de3046dac1b6f44f720c6de5101b45e20001cad072ac1cae0c6de3141b05dff004f711b6b06db00c6dbf15f177f4013dc46dac1b6c031b6e870a6177f00072b41cab086db8142945dfb006db21b6c021b6d850ab177e80006da6183ec5df801ae46086da5143885df71b5f411b5ec6d38086d7e0ce177d46d75046d371b5bc68f70c6d7d101b45df4006d3d1b4dc6d610c6d7c141805df31b5dc11b5c06d72086d79109177c46d75046d3d1b5bc68f70c6d77101b45df0⟩, ⟨0x13c09284441fc0e706a830415a09d04601e40c404f01c009c026000, 0x1b98c11b8ac6e391a79831b9bc406d178e406b9186e2b1b8a841b9b87076178e06e65046e3a1b8f021b99c4245e361b98c16b9186e391a79841b9946079178d406b919cb1cb441b98c6077178d006b9186e2b1b8a841b8ec7078178c806b9186e2b1b8a841b8d88075178c406b919cb031b8d06074178c001b8b86e2a086e32142ac5e2f1b8a011a7a46df3086e290ce178b86e220469e61a7a06d3d0c6e28101b45e2d1b89011b7e86dfc086e26109178b06e220469e71a7a06d3d0c6e24101b45e2b01cc1cb9cc431b888506c178a801a79869e71a79031b7ec5060178a06deb046de91b6a021b7b03385e25⟩, ⟨0x14409804742080f306e832816609f04601cc0c404c0198088026000, 0x69641bca86f300c6f33141805e6f1bb8011a3e468f4086ee10ce179b46ebf1baf821a3e46ebd1a3d031bb803185e6c004f6d1a3e021bafc4072179ac6ea3044f6d1a3e1d8031baf84071179a86eac0469b81a6d421bab43385e681baa8117d90692a13cbc31bab0406d1799c0067e019f7067d831baa8506c179986ea70469bc1a6f821baa44245e651ba986ea50869bc1ba9069be0c6ea70c61799001a3dc68f8086ea6101c85e631ba8c11a3dc68f87600c6ea5101c45e621ba846e7a0868f81b9e5d8031ba8c30701798406f073473c0c6ea1141bc5e6001d85d8021b9ec506e178f86e6f046e6d1b9a021b9c03385e3a⟩, ⟨0x13708f04341ec0e306902f815a09904281d80ca05201d8090026000, 0x78751e1d021e1c478731e1ac31e1d83185ea3006cbc1b2f421e1d4407217a886cec046cbc1b2f41a6d0c7874101c45ea1004f691b2f01a690c787215f17a800069ac1a69087864141845e7e001a6a0699c19bf0c783a141885e7d001a670688c21e0bc50bb179ec01bff06feb1bfec31bffc5066179e801bca869641bcc031bdb470ac179e006286ee086f6b142945e77006f651bcc021bda450ab179d86f62046f321bcac21bd8c3385e751bcf411bca86f3113db431bd88406d179d06f3d0469641bcc44f6d0c6f3f101b45e73018a1bb9bbc31bcf4506c179c801bca869641bcc031bcd857c5e70⟩, ⟨0x12d08c84141e80e306802e414809103c819009e03a014005c018000, 0x1e6d879b71e6d031e7e0506017aec01e6dc79b61e6d031e79470a617adc0068f41a3b0879e3142945eb60079bd1e6d021e78450ab17ad401e6dc79b61e6d031e6e857c5eb41e5f811e5a0797613cb831e6a8406d17ac800679861e5a079671079a91c1d85eb11e68011e5dc79790879a210917abc797e0419e618797613cb841e680607917ab80067986067cc19f410797e181dc5ead0019e61879681e59c41e5e0707817aac00679861e5a07967107973201d45eaa0019e61819f30c7971181d05ea900796b1e59c21e5bc50ab17aa0000787f183f05ea6019fc11e1f853c5ea5⟩, ⟨0x13d09584682060f006c831416209d04601ec0d005501f00ac028000, 0x67986068e431e9fc607417bc401e9e47a76087a7d142ac5ef01e98411e7ac7a271b2f031e9a4406d17bb87a63047a3d1e8e021e9903385eeb1e98411e8987a271b2f031e98c406d17ba80065f41a3f0698031e984506c17ba401e7ac7a261e89031e8f8506017ba001e89879eb1e89031e8cc70ac17b980065f41a3f087a31142945ee5007a2b1e89021e8bc50ab17b9001e89879eb1e89031e8a457c5ee31e88811e6e479ec087a230ce17b8879fc0479b61e6e079eb0c7a22101b45ee11e7f811e7dc79f9087a2010917afc79fc0479b71e6e079eb0c79fe101b45ebe001a3d068ec1a3e0c79fc141b05ebd⟩, ⟨0x143098046420a0ec06e03181700aa04b020c0d805701f80a802a000, 0x7aeb047abb1ead021ebb03385f241eba4113cf07aba16ab831ebac406d17c8c0071a01c670719831eba4506c17c887ae51eb8c21eb907ae21eb8031eb983185f21001a691eae421eb945145f201eb8411eae46cb30719831eb8c4105eff001a69047ae1101ac5efe001c66047ae0101a85efd006ca713cf07ab90c7abc141805efc1eac811eac07a6d087ab30ce17be87aaa047a6c1ea9079b60c7ab2101b45ef90019e6187a6c1e9d841eac4707617be07aaa0419e6187aa41e6d841eab0607917bd80067986068e41a3a107aaa181dc5ef50019e6187a6c1e9d841ea98707817bcc00679861e9b07a76107aa1201d45ef2⟩, ⟨0x13609284401f60e906c031415809b04201c40bc0470198088028000, 0x1deb0779c21ede450a517ce0007a8061ecc47b30107b611c1e05f35001ea0187b311ecc041ecf0807517cd0007a80607ab431ece8607417ccc01ecd07b30087b38142ac5f321ecb011ec907b26087b2e10917cc47b2b1eca821ec907b291ec9831ecb03185f300029fa0a7ec21ecac407217cbc2b700429fa0a7ec1cbd0c7b2a101c45f2e0029f30a7e81cb90c7b2515f17cb07b21047af51ebc021ec883385f2b1ebfc10acbc7af417ed031ec84406d17ca80077a81de9078c831ebfc506c17ca40072e47af3087afc143b05f28001e32047afb101a85f27002afa0acbc7af30c7af6141805f26⟩, ⟨0x143099047c2100f506f032816e0a304801e40cc05301e00a0028000, 0x1efb07bb6087bf0142ac5f6c1efa011eee07bb1087be90ce17dac7be3047bb01eedc38b20c7be8101b45f6a1ef9411eeec7bbd087be710917da47be3047b6a1eedc38b20c7be5101b45f68001df1077b41df20c7be3141b05f67007bb01eda87bb60c7bbc15f17d9401eda87bb01eed831eee4506017d907bae047bac1edac21eebc3385f621ee9811eda47b7d1eda831eeb8406d17d8400a7987b691edc431eeb457c5f601eea011edf87ba0087baa10917cf87ba60429e61edf47b6a0c7ba8101b45f3d001deb0779c1dec0c7ba6141b05f3c007b690a7987b710c7b7f141805f3a0029e61eda47b710c7b7b1c2985f39⟩, ⟨0x13d095044c1fe0ec06c031c16809d04181bc0b604701b0094022000, 0x7c6d047c631f19421f1bc4245fa11f1ac11ed887c620a79431f1b4406d17e80007acc1eaf07ad031f1ac506c17dfc01f0d07b621f0cc31f19057c5f7d007c341ed887c330c7c3f1c2985f7c001eb307abc21f0f450a517dec7c300429e81f0b421f0c84245f7a1f09810a79429e70a7b031f0c0406d17de47c280a7a820a7b029e70a79830a7b4307017dd87c260429e70a7b021f0a0307c17dd40077ac1eb507ad831f098506c17dd000a79829e50a78c31f08070ac17dc80077ac1eb5087bfe142945f71007bf80a78c21eff050ab17dc001eec07b6a1eed831efd070a617db80077c41ded087bf2142945f6d⟩, ⟨0x138095846c21a0fa071834017a0a604881f80cc05101f00ac028000, 0x7cbc047ce510d17ee000719c6ca7087ce419417edc00719c11f384406917ed87cb9047cb51f2c021f2e83385fb41b2d011b29c6ca813dc431f2e4406d17ecc013cf06ca71b29831f2d857c5fb21f2ac11f2a47ca4087cac0ce17ec07c7f047b311ecfc7b620c7cab101b45faf001ea0187b311ecc041f2a8707617eb87ca1047b601ed8c21f28c4245fac1f1fc107a8061ecfc7b62107ca1181e45fab001ea0181ead07ab841f1fc607717ea87c6d047c631f19421f1ec3385fa61f1e011f1c07c72087c7a10917e947c6b047c341f18829e50c7c78101b45fa4007b621f0d07c330c7c71141805fa2⟩ ] def tableLRL : Table Block := .branch 12 tableLRLL tableLRLR def tableLRRL : Table Block := .leaf #[ ⟨0x12208583d81c80d306402f015209c04601f40d405201e80a0026000, 0x1f3f811f3b87cef1b6b031f5ec406d17fc80070d861f3b87cec107d77201d45fef001c36181ca90c7d75181d05fee007d6f1f3b021f5cc50ab17fb40007d62183f45feb004a011f58453c5fea1f4e411f4dc7d31087d3a0ce17fa001f4c011f4e44345fe7007d2d1f4b821f4e06505fe6001c04bc21f4d4507317f947d20047cf01f3d421f4884245fe21f3f81070d861f3bc6dac107d20181e45fe1001c36181ca9072a841f3f8607717f800070d861f3b87cec107cf31c1d85fbd001c36187cee1f3b041f3c4707817ef07ce5047ce31f2f421f3983385fb9⟩, ⟨0x10107703841a20c105a028412808403981980b604f01c009c026000, 0x7e3c047e3a1f8c421f8f4338682a007e30047e3c10d1a0a401f8b87dbb087e3b18c1a0a002f40c7dbb0c7e381cb1a09c02f40c21f8d862868261f8b011f8a87e21087e2d0ce1a09001f88011f8b04346823007dfe1f6e821f8ac65068220011f6ec7dba0c7e281531a084004bd821f89854868200001f7e860fe17ff402f4047df914f17ff07de9047dbb1f6f07de10c7deb101b45ff900bd8bdcbe031f7a4506c17fe001f6e87dbb1f6e031f780506017fd801f6ec7dba1f6e031f6f857c5ff5⟩, ⟨0x10607c83a01aa0c805c02a412c08903c81a40ac04901c80a802e000, 0x12074087efd19d1a18c01fbdc7ef5087efb142ac68621fba011fb987ee0087ee90ce1a18001fafc11fba0434683f007ebc1faf421fb9c650683e001c01d821fb9050731a0f47ea4047ea21f9f021fa943386838007e7b047ea410d1a0dc01f9e44a3e087ea31941a0d80070079ac21fa8050731a0d47e73047e711f9ac21f9d03386832007e6a047e7310d1a0c401f9a47e65087e721941a0c000702f9087e6f141cc682f1f98011f6f47dee087e621091a0b47de9047dba1f6f07de10c7e60101b4682c⟩, ⟨0x10207783881a40c4058829012808303b01ac0be04c01a8090022000, 0x1febc11feb47fa7087fb00ce1a1ec01fe9811febc434687a0019371fe8421feb86506879001937047fab101a468781fd8c11fd847f38087f640ce1a1c801fcdc11fd8c4346871007f3616ebc21fd88650687000116ee45baf0c7f3f1531a1bc0056fc21fcf4548686e0001fcd060ff1a1b00763047f3314f1a1ac7f2a047f231fc9421fcb042468691fca010a3907f220a49c31fca8406d1a1a000730740750c7f28141b068670028b10a3907ef50c7f2415f1a19404828e41fbd431fbfc8786864⟩, ⟨0x100079838019a0bf059028c124083035016c08a038015005c018000, 0x88ad0488ba11c1a2c40222ac88aa222983222e466c68b00088a8222a888a60c88b619a1a2bc05f25ec0888b31591a2b806370488a1142e868ac019d98c822218850bb1a2a806796765ee0c882c1418868a9019e99e022208050611a29c7ff61ffd021ffd47ff31ffc031ffdc31868a6019e07fe8087ff61451a2947ff2047fe81ffc419360c7ff41041a2900678047ff2101ac68a3001936047ff0101a868a2007fea1fe847fe80c7fed15f1a2840007fbc18480687e0098811feec53c687d⟩, ⟨0x11207f03c41c20d405d82ac12a08403a819c0a804701a0084026000, 0x224dc1223e088bc088939103a468e4018d41224dc50b21a38c0220a088fb0889341451a38805ee048932142f868e1224a889280889292249c89230c892b0c61a3800223fc88f608892a1451a2fc89260488f62249489220c89281041a2f80223f488fb088926182f468bd018d18cc22248c50bc1a2f00223d81223e850b51a2ec88ec0488ea223802223b433868b80088bf0488ec11c1a2dc0222f488aa221fc3223ac66c68b60088bc222a8887f0c88e819a1a2d406365ec0888e51591a2d088ba0488b8222b82222ec33868b2⟩, ⟨0x13108f84442000ec06e831016609d04201cc0c805101f009c026000, 0x2622288488280c8a2b21e1a3d802625ed088a2919d1a3d4063062f5f70c89e51418868f4007fb21fdf489b10c89bf1c1a068f3018b98b02226f450671a3c88976225d42225948974225803225dc31868f1007f7d225902225d840721a3c08973047f7d225919f03225d440711a3bc8971225a8222590896967c0c89730c1c068ee018b19c19e03225c4506f1a3b4067d67c08896b141b868eb0089631fdf59e032259850601a3a8893e047fec1ff942224fc33868e8224f011fe847feb1b3c83224f8406d1a39c0064e01937064d83224f0506c1a39889390488f9223cc2224e833868e5⟩, ⟨0xee06d833817c0ae0508238102071030014c09003c0178088022000, 0x22ba8122ba08abf088aeb0ce1a4b8022af8122ba8434692d008abc22aa8222ba4630692c001e8822aa8322b9872c692b001e88088ae418a1a4a88aba048ab822abc222aec3386928008aae048aba10d1a49c022aac8aac088ab91941a4980188aaa22ab0322ad854c692500607c088ab41521a4900008aa6184846921001e8122a9453c6920008a68048a6b1401a3f4007b881228e056068fa004faf13eb02228c850ab1a3e400b6f02e2a088a2d142ac68f7⟩, ⟨0x11708203c41c20ce06082b813608b03e81a80ac04801a808801c000, 0x22cfc8b2c228d4322db466c6966008b3e22cb08a350c8b6a19a1a594007b841e77088b671591a5908b3c048b3a22cc0222cf43386962008b2f048b3c11c1a584022cb48b2c22c90322cec66c6960008a6322cb08b240c8b3819a1a4fc0079f41e77088b351591a4f80079f8122c9850ba1a4f08b22048a6a22990222c8c338693b22c801229a48a63088b22102d8693a001e7c048b20142c869390ffb010ff9c3fe9088aff0ce1a4e08afc0449fd127c0222bf8424693722be81127f049a7088afc102d86936001f3e048afa142c86935⟩, ⟨0x10607b03a41b60cd05f82b013808e03a819409e03e016808001a000, 0x1923063f422319c564697d008c31048c371401a5ec0230c41230d450b51a5e80065a01230b050ba1a5e400649012308c50ba1a5e05b36045b3016cac222ef842469740048a922de0222ec45146971001e79048baf142f8697022ea08ba6088ba722e948ba20c8ba90c61a5bc022df08b74088ba81451a5b88ba4048b7422df88ba10c8ba61041a5b4022de88b78088ba4182f4696c001ebf07af8222e8850bc1a5ac022dd0122ddc500696a22db8122db08b62088b6f0ce1a5a0022d84122db84706967⟩, ⟨0x11408283e01ca0d105f02a813808903e01a40ac0460198098026000, 0x16ec18fe088cf619d1a6bc0232dc1232e850069ae232b41230d08ca8088caf1091a6b48ca3048c33230e02232b440e91a6b08ca5048c36230e422329c42469aa2328c1230cc8c38088ca5102d869a9001966048ca3142c869a8232801231f88c74088ca10ce1a69c0231cc12328047069a6008c71230f48c2a0c8c7f19b1a6940230e08c3d230a83231f066869a4001967063f42231e456469a3231b81231b08c62088c6f0ce1a6840231841231b847069a0008c3f230f48c210c8c6d19b1a5fc0230f88c3d230843231a8668697e⟩, ⟨0x12a08b84141e40de06502cc13e08b03c01940a203e0188084024000, 0x16ec1970065a83236a460a81a79805bb235ec8d7f0c8da51d71a79005bb235ec8d7f0c8da21c29c69e3235f01234b88d7b088d7e0c1f069e200196e065b0196f0c8d7c141b069e1235c812359c8d68234b43235d0406d1a6fc0065ac18fe063fc3235c8506c1a6f80233b88d6717aa43235c450601a6f402359c8cee17aa43235a857c69bb008d2c234b48d2b0c8d3315f1a6dc0234b48d2c234ac3234c050601a6d88d24048d22233f022349433869b5008cfb048d2410d1a6d00233e88cee088d231941a6cc00705e2088d20141cc69b2016ec8cee17aa43233e087869b0⟩, ⟨0x13d096047021c0fb072034017a0ab04e022c0e805d01e80a402c000, 0x65941964088e3f142f069f7008cbb238b82238cc51469f6001921048e31142f869f5237d01237a88dec088df61091a7d08df2048dbc237a48d2c0c8df4101b469f300196d0648019210c8df2141b069f2008db5236f08cbb0c8deb15f1a7c005bb236f08cbb0c8de721e1a7bc05bb0648022379467469ee008dbf232ec22378c50ab1a7b48daf048d2c234d08d2e0c8db4101b469ec236bc1234b48d34234b83236c0406d1a7ac8dae236848d7e0c8d34236808d7b234b84236bc30aa1a7a88da9048da0234d02236b8307c1a7a48dab048da4236982236b442469e8236a415bb236808d340c8dab182a469e7⟩ ] def tableLRRR : Table Block := .leaf #[ ⟨0x11408203d81c60d006182d814a09203f01c00c605001b809c022000, 0x5ea9238d8223af05146a2b0018ff048eba142f86a2a23ad0123aa88eac088eb61091a8a08eb3048eac23aa8223ad03386a27008c2a048eb311c1a8980065a0123ab85606a25008eac235fc223ac050ab1a8908e7e048e73239d4223a804246a22239f01239c08c3d088e7e102d86a210018fc048e7c142c86a20008e6e048e741401a7f88cad048c34232a02239a433869fc239948e63088e64239888e3f0c8e660c61a7ec0238e48c31088e651451a7e88e61048c31238e88e3e0c8e631041a7e40238b88e36088e61182f469f8⟩, ⟨0x11208083b81b60c705c829811e07c037817c0a003d018008001e000, 0x19a306684223dec50671a9805efb045bbd16efc223dc43386a3f23d901232e48cb4088f650ce1a8f48f3d048cb8230f8223d9040b61a8f0006488123cf450b21a8ec8f36048d6923590223cdc3386a3a235c81233b88d68234b4323cd8406d1a8e48efa048ef823bc8223bec3386a36008ef1048efa10d1a8d4023bc08dbc088ef91941a8d000705e6088ef6141cc6a3323bb4123bac8ee2088eee0ce1a8c4023b84123bb44346a30008ebf2359c223bb06506a2f005bb02359c223ba450eb1a8b800705e2088ee7143a86a2d⟩, ⟨0x13b09384501f60ea069830015809904281b00b804601a8090028000, 0x173e05cbe260d43260ec50601a9d08ff8048ff322ed0223fe43386a7123fdc8ff6088ff323fd48bb40c8ff80c61a9c00177e45dfa088ff7101c86a6f178e01177e45dfa066b4323fd840711a9b80175d45df9066a4323fd057c6a6d0019a506690196a0c8fbf141886a6b23ec4123e848fac088fb31091a9a4023e805df9234d0323ec470651a9a08fae23eac223eb48faa23e98323ebc3186a67008fa723e80223eb85146a6623ea4123e808fa823e94323eac4106a65008d34177e4223ea450641a99000668c19a1088fa61418c6a63008fa023dfc223e904046a62008d34177e48f730c8f7d1c1a06a61⟩, ⟨0x12708b03f41da0d706182bc14208e04081b80b604b01f00ac028000, 0x72dc1c730898e7142ec6aa7262f898bc0898bd262ec98b80c98bf0c61aa980262c42a2e0898be1451aa9498ba042a2e262d098b70c98bc1041aa900262bc98ad262943262e860ae1aa8c0072d81cb2071e43262e050ad1aa880071e01262a050ba1aa8498a30498a1261dc2262903386aa00098760498a311c1a9fc0261cc1ff3261d032628866c6a7e00987207fcc98740c987f19a1a9f40071dc1c2d08987c1591a9f00070d01261ac5606a79261901260e8983c0898661091a9e09862045cbe260dc982b0c9864101b46a77001a78069e41a7a0c9862141b06a76⟩, ⟨0x12508883d01b60cd05c829412a08803b81900a003d014806c01c000, 0x9966049937126982265a040e91aaf49938264d449ed0c9937126f849a60c99660c48c6abc2658c996108996226580993e0c99640c61aaec0264d812658c406b1aae8993f049936264f422658440b11aae40264f0993b264e83264fc40b01aae0006a067703264f850af1aadc0264d81264e45006ab6126fc1126f81264d431221aad4992a0498f9264902264b04246ab2263fc1263e0987208992a103a46ab1264841263ec98f00899231091aab898ff0498f8261c822648440b61aab40071d81263fc50b21aab00263d81263f05006aaa0098f60498fa142d46aa9⟩, ⟨0x10a07b839c1b20ce06082c014009204101d00b604b01a8090026000, 0x99ed07fcc1fec0c99f919a1abc40070cc1c2d0899f61591abc00264dc12679c41251abb800099ba184906aeb0018ec0499b914f1aba800b4bc2d2b0899b1142ac6ae8006b79265b42266a85146ae7001c310499a8142f86ae6002a2d265ac22668c5146ae5001c2f0499a1142f86ae4265e89978089979265dc99730c997b0c61ab8c0265bc98f608997a1451ab8899760498f6265d499720c99781041ab840265b4996b089976182f46ae0001c75071d02265cc50bc1aafc9968049967264b82265a84246abe⟩, ⟨0x11b08403c41ba0c905c82a012a08203a818809c0400198080026000, 0x9a71049a65268fc2269c83386b24269bc10b3e89a642609c3269c4406d1ac8c0063c018f1069c83269bc506c1ac880069c02cfa269883269b490a31ac840069c018f1089a6b19d1ac80023ffc9a62089a69142ac6aff002bf90b3e89a620c9a6615f1abf89a3c04986a07fb42268f84246afc001fec049a3c11c1abec9a3a049a25267fc2268ec3386af9268e012689099ed089a3a102d86af8001c32049a38142c86af7009a23049a261401abd899fd0499fb267c42267f83386af40099f00499fd11c1abcc0267b81ff307fb03267f066c6af2⟩, ⟨0x12b08b84101e00d706382c414008f03e01a00a80400178078020000, 0x66dc1c3c070f4326cc4506c1ace89b23049af526bf8226c944246b38009aeb0b4842b760c9b231c4a06b3726c809afd089aff26bf09af80c9b210c61acd8026be49aeb089b201451acd49afb049aeb26be89af70c9afd1041acd000b4842b76089afb1449c6b330019b7066cc226be051261acc8026bb49aec26bac326bcc57c6b31001c61070f81c3b0c9aef141b06b30002dbe26b9c2a730c9aea141806b2f005a3b0a7cc2ab10c9abe1c2b06b2d001c63071b4226af050a51acb0026ad82ab1089aba142ac6b2b001c34049aa7142e86b2800996b0a8b4226a884046b27⟩, ⟨0x11b08383d01c00d206202c413a08903b01a40b204801c8094028000, 0x9bba041ff907fcc226efc40e91adcc9bbc041ffa07fd0226ef84246b7226ee8107fe41ff3089bbc102d86b71001c2c049bba142c86b70001ff8049bb9142d46b6f264a81263e49924089bb10ce1adb49b7e049ae8168ec226e80307c1ada40071881c3a070e0326df8506c1ada09b6e049b6c26d8c226dbc3386b63009b62049b6e10d1ad88026d849b2f089b6d1941ad8400add89b2f089b6a144a46b60001066cc226da050ea1acfc00b4849b2f26cb8326cfc70ac1acf40066dc1c3c089b3d142946b3c009b2f0b4849b2e0c9b34141806b3b⟩, ⟨0x12808b84001cc0d206082b413408d03e81bc0b604a01c8098026000, 0x9c25270b422718040721aea49c3d049c25270b41b310c9c3f101c46ba8270ec9c34089c2d270cc1b310c9c3d0c1c06ba7001ae106c941b2d0c9c3b141bc6ba6001b3206cc42270d4506e1ae900270b09c2506cb43270bc50601ae8c9c23049c2126fec2270903386ba1009bfa049c2310d1ae8000749c9bf8089c221941adfc00749c126ffc40691adf8026fa09be726f94326fd870a61adf0006af41ab9089bf4142946b7b009bee26f94226fc850ab1ade8026fa09be726f94326fac57c6b79169d81169a85a6d089be30ce1addc9bbf049bb826ed4226f803386b74⟩, ⟨0x13e09384502020ea06b030815c09d04501cc0be04e02000b0032000, 0x272dc1272989cb1271fc32738c406d1aef002718c9ca62729032738857c6bbb272e41272c89cb4089cbb1091aee49cb7049c63272c49c7f0c9cb9101b46bb8001d6c075a81d6d0c9cb7141b06bb7009ca62718c9ca40c9cb3141806bb5009c63272989ca40c9caf1c2986bb4001d6c075a82272b450a51aecc9c79049c6d271902271e83386bb2271dc126fe09c6c2718c3271e4406d1aec400749c1d26075ac3271dc506c1aec0006cb49c6a089c74143b06baf001d6b049c73101a86bae009c6b26fe09c6a0c9c6e141806bad271841270b89c26089c620ce1aeac9c60270fc2270b89c3e270983271843186baa⟩, ⟨0x12a08a84001d60d906402d014609203f81a00a80410168088026000, 0x1aaa181ab706ae04275c860771afcc006aa86274d09d3e109d6e1c1e06bf1001aaa189d34274f84275a480751afc0006aa8606adc32759c60741afbc0275849d3e089d65142ac6bee004f71271fc9cf60c9d321c2b06beb001cad075b82274c050a51afa80274a89cf6089d2e142ac6be9274941273ec9cfd089d271091afa09d23049c7f273dc9c7b0c9d25101b46be7001cad075b81d6f0c9d23141b06be6004f71271fc9cf60c9cfc15f1af900271fc4f71273d83273e450601af8c0009cec184a86be1001aaa182273ac50e21af809ce3049ce1272f02273903386bbd⟩, ⟨0x13408e84241e40de06582dc14c09504101d40ca05702200b4030000, 0x27794113cbc9dbc270943277b4406d1b0a00276b84f2f276b43277b050601b09c9de5049dae276f09c250c9de7101b46c250019f906afc1ae00c9de5141b06c24004f2f276b89dad0c9dbe15f1b088013cbc9dae276b43276e470ac1b0840067e41abf089db7142946c20009db1276b42276d450ab1affc9da6049da4275f822769c3386bfd009d7d049da610d1aff0007ac89cee089da51941afec007ac812768840691afe89d7a049d78274d42275ec3386bf8275c81274d09d6c26f9c3275e8406d1afdc006aa86274d09d3e109d791c1d86bf6275c8106aa86275b09be7109d74181e46bf4⟩ ] def tableLRR : Table Block := .branch 13 tableLRRL tableLRRR def tableLR : Table Block := .branch 25 tableLRL tableLRR def tableL : Table Block := .branch 50 tableLL tableLR def tableRLLL : Table Block := .leaf #[ ⟨0x13809204441fc0e506a82fc1620a304781f00ca05201d809c026000, 0x9e6a16ab89e700c9e76141806c3e005aae279a89e700c9e7415f1b0f40279846b361ace832799057c6c3b278f49e3b089e3c278e89e380c9e3e0c61b0e80075e09e2f089e3d1451b0e49e39049e2f278d41eb00c9e3b1041b0e00075e01278e4406b1b0dc007ac01278e0406a1b0d80278c09cee278bc3278cc50601b0d49e24049bea277bc2278943386c32277f8126f9c9be9276b8327890406d1b0c49e20049df6277e02278884246c2f277f8126fa09be9276b8327880406d1b0b8006af41ab906af83277f8506c1b0b4026f9c9be826f943277dc50601b0ac9ded049deb276a02277b83386c29⟩, ⟨0x143098048c22c0ff07403201680a004681e80cc05502100ac028000, 0x7b2c047b241ec98227d943386c77008c21049f3011c1b1d4006490127cac5606c7427bb811abd47cee1acc0327bc8406d1b1c09eee046b2f1f3b86b300c9eef101b46c6f27bb49e631ace431f3b89e621acd86b30109eee0c2a86c6e27bac1279887cee089eed0c1f06c6d001ca8072801c7a0c9eeb141b06c6c1af9c11adec6b73089ee51091b1ac6de5046dbe1b780227ae83386c68005aae279a89e700c9eaa1c2b06c65001c69074a8227aa050a51b1909e7f049e73279ac227a803386c63279e81279a89e72279943279fc406d1b1889e7a045aae279c89e650c9e7c101b46c61001c69074a81d2b0c9e7a141b06c60⟩, ⟨0x12208703f41d40dd06682fc15c09b04201c40b40460198088028000, 0x9eac27994a8370ca8651c1a06cb5001d2e074b022a18c50671b2d09ff6049ff427fb8227fdc3386cb2009fed049ff610d1b2c4007ac49e30089ff51941b2c0007ac4127fc840691b2bc012be049ff089fbc142ac6ca827e98127dac9f66089fa70ce1b28c9fa0045b6527da869f70c9fa6101b46ca227e88127df09f79089fa30ce1b2849fa0045b3827da869f70c9fa2101b46ca0001b7f06df81be70c9fa0141b06c7f005b6516ce09f690c9f7d15f1b1f80066a49f69089f72143b06c7b001be7049f71101a86c7a005b3816d949f690c9f6c141806c79⟩, ⟨0x136091043c1f00e406882f415809b04401c40ba04a01c8094028000, 0xa9302a4dca9360ca973141806cee2a5b412a598a96808a96f1091b3b4a96b04a9302a594a9310ca96d101b46cec001b2106bfc1b220ca96b141b06ceb00a9372a4c0a9360ca96715f1b3a402a4dca9302a4d832a58870a61b3a0006c841aff08a960142946ce700a93a2a4d822a4f850ab1b398a8fc04a8f627f9422a3f43386cbf2a3e81278c09e311f0d032a3f0406d1b2f8007ac81eb107ac032a3e8506c1b2f40273b89e30278bc32a3dc57c6cbc001d7a075e022a3bc50611b2e80075e41d76073b832a39050621b2e40075d81d3208a8b4142ec6cb7001d30074bc1cf70ca86b141886cb6⟩, ⟨0x15009e84a422c0ff076034c1840ab04881f40d805801f00a802e000, 0x9e65271ec1d780ca9f415f1b4900271ac9bf82a78032a78c50601b488a9b7049e32278b022a6e03386d202a3e81273b89e311f0d032a6dc406d1b3fca9b404a97f2a68422a6d84246cfe2a6cca9b208a97f2a6c4a9a10ca9b40c61b3f4027994a97e08a9b3101c86cfc2a6c0127994a97e075f032a6c840711b3eca9ae2a69c22a5f8a9a6075f032a6c030701b3e80074b01d70075e032a6b8506f1b3e40075f41d7c08a9a8141b86cf7009c7b279941d780ca9a0141806cf52a5f4a96608a9312a594a9300ca9680c1c06cf32a5ac12a594a93108a97d0c1f06cf22a5e812a5c8a97408a97c1091b3c4a96b04a9372a594a9310ca97a101b46cf0⟩, ⟨0x14b09c04842180f406f832816a0a304901fc0d005402080a002e000, 0xaa6a04aa682a89422a9ac3386d382a98812a890aa3c2a4c032a9a8406d1b4dc006aa862a890aa2e10aa691c1d86d362a988106aa862a8f0a93010aa64181e46d34001aaa181afd06bf842a98860771b4cc006aa862a890aa2e10aa3e1c1e06d31001aaa18aa242a8b842a8e480751b4c0006aa8606bf432a8dc60741b4bc02a8c4aa2e08aa35142ac6d2e2a7f012a788a9ba08a9fd0ce1b4aca9fa049bf82a784a9b90ca9fc101b46d2a001d27074981d250ca9fa141b06d292a7e012a7cca9f008a9f90ce1b4a0a9f72a7d822a7cca9f52a7c032a7e03186d27009c7b2a5f822a7dc40721b498a9b0049c7b2a5f81d7c0ca9f6101c46d25⟩, ⟨0x13d09604642000ef06c03141620a004781f00ca05201d809c028000, 0x74a01d2408aae6142946d6c2aaec12aad8aab108aabc0ce1b5acaaba2aae422aad8aab82aac432aaec3186d6a009c2c270b422aae840721b5a49c3d049c2c270b41b310caab9101c46d68009c25270b01b2d0caab715f1b59c01e6dca9312a9c832aabc70ac1b5900068f41b2308aaad142946d6300aaa72a9c822aaac50ab1b588aaa404aa742a9b022aa943386d612a9fc11e6dcaa73270b032aa90406d1b580aaa104aa772a9e422aa8c4246d3f2a9fc12a4c4aa73270b032aa84406d1b4f80068f41b2306c9032a9fc506c1b4f401e6dca9312a9c832a9e057c6d3b00a9311e6dcaa720caa75141806d3a⟩, ⟨0x13c095846c2100f106f032c1680a104501dc0cc05301e00a0028000, 0x1cb3072c422ad8850631b68802ace0ab3c08ab601011b684ab3304ab312acb022acd03386d7f1eba411b29c7aba16ab832accc406d1b5f8013cf06ca71eae432acc857c6d7d2aca410a7a829ed08ab2a0ce1b5ec7c260429e60a79c29ec0cab29101b46d7a2abd412abacaaed08ab260ce1b5e0aaf304aabf2aba89e6a0cab23101b46d7600a9b92aafcaabd0caafc15f1b5d002ab84aabd08aaf9142ac6d732abd412abacaaed08aaf71091b5c8aaf304a9b92aba89e6a0caaf5101b46d71001d28074901d290caaf3141b06d7000aabf2a6e4aabd0caaec141806d6e00a9b92aafcaabd0caae81c2986d6d⟩, ⟨0x12508884001d80db068031016009c04581dc0c805001b809c022000, 0x6ca81b2606bb432b0b450ad1b6e0006cac1ae708abfb142ec6db6001b2e06cac1aa30cabe5141886db5001b2f06cb422aee450611b6cc000abab184ac6db000e9812aea853c6daf001cb5072d01c7a0cab7e141886dad006af90a7e8ab370cab7b1c1a06dac001cb3072c422ade450671b6ac02ace0ab371ace832adcc50b91b6a8ab6d04ab3d2ada022adbc4246da800ab380a7e86af90cab6d1c1946da72ada8ab6708ab692ad98ab620cab6b0c61b69802ad8cab3808ab6a1451b694ab6504ab382ad90ab610cab671041b69001abe429fa08ab65141906da3⟩, ⟨0x11208283d41cc0d406282dc14809704201c40c205301d00a8028000, 0xacec04acf510d1b7ac02b3acacbb08acf41941b7a8007076608acf1141cc6de901d8cacbb2af8432b3948786de701d8c1aa208ace319d1b79802b1e812b1f850b51b794ac7004ac6e2b19022b1c43386de300ac6304ac7011c1b78802b184ac3f2b0e032b1bc66c6de100ac602b0fcac380cac6c19a1b780006bac1aa108ac691591b6fc006bb012b0e850ba1b6f4ac332b0c422b0c8ac302b0b432b0d03186dbc00ac272af8822b0cc5146dbb2b0bc12af88ac292b0b032b0c44106dba00ac252b08cac210cac2f182b86db9⟩, ⟨0x10f07f83bc1c40cf06102c814609104101bc0b004701a0098026000, 0x2b5c8ad7008ad7f18c1b7f806a520ad700cad7c1cb1b7f406a52022b5e86286dfc2b5b812b5b0ad6608ad6f0ce1b7e802b59412b5b84346df900ad642b4dc22b5b46506df8001c1da822b5a850731b7dc07632b4dcad2e0cad6121e1b7d4076306a9022b4fc6746df42b4b012b480acfa08ad2d0ce1b7ccad2a045baf2b3fcace70cad2c101b46df2016fd781d9432b4a8506c1b7c4076316ebcacfd0cad282428c6df001d8d78022b4986746def005bb916ebcacfd0cad2115f1b7b8acf504acf32b3b422b3d83386dec⟩, ⟨0x105079036c1940b7054826010a07a037016c09c03e016808001a000, 0xadfd04ade92b78c22b7f83386e362b7ec12b688ade82b58c32b7f4406d1b8d406a76a87690cadfb141b06e3401d8cada22b79832b7d090a31b8c007636a808adf219d1b8bc02b7b0ade608adf0142ac6e2e00ad702b688ade60cadea15f1b8b4000adbc184b06e2901a9412b6ec53c6e282b6d012b6c8ada908adb50ce1b89802b6a012b6d04346e2500ada62b68822b6cc6506e240062b5c0ada20cadb01531b88c019a9c22b6b85486e222b68012b5f8ad7508ada10ce1b88002b5d012b6804346dff⟩ ] def tableRLLR : Table Block := .leaf #[ ⟨0x11a08383b81bc0c805c02a013008b03c01ac0b004501a808801c000, 0x1a702b9bcaea90caebc2081b9b4aeb92bad822bae0aeb52bac432bae83186e6c00aeb22b9bc22bae45146e6b2bad012b9bcaeb32bac032bad84106e6a001a702baa422bad070c6e69001a70069d022bac46086e6800ae6f2bab022babc4046e6700ae6b04ae6e1401b998ae6004ae3e2b8d022b9843386e6100ae3304ae6011c1b98002b8c4ac3f2b88c32b8fc66c6e3f00ae302b0fcae230cae3c19a1b8f8006a9c1aa108ae391591b8f4ae2104ac7d2b1dc22b8883386e392b7fc12b1f0ac6008ae21103a46e38001aea04adff142c86e37⟩, ⟨0x11108003cc1c00cc05f02cc14c09304301b40ba04601b008c026000, 0x6a941aa308af30142f06ea100af2604af291401ba80af2104ae6d2b8b022bc883386e7e2bbfc12b9b0ac3f08af21102d86e7d001aa004aeff142c86e7c0002bbe861301b9e8005108aef9143886e792bbc812bbbcaee408aef30ce1b9dc02bb8c12bbc84346e762bbc0aeee08aeef2bba0aeea0caef10c61b9d402bb88aea908aef01941b9d0aeed04aea92bb88aee90caeee101b46e730014498270caeed184bc6e720014498272baa442bbac712e1b9c40051069cc32bba0612d1b9c0aebc04aead2badc22baf84246e6e⟩, ⟨0x1560a104b82100eb06882f415409604281c80bc05001b809c022000, 0x2bdfc12bdc87b3108afa10c1f06eb5001eac07a901ea20caf7f141b06eb40fbf43ee80fed03efa103ebb0fb9c3ee60fbdc3e7b143ee00c4c46eb20fbf4af76083ebb0fb9c3ef60fb9842bddc40e71bac0af750fbe020fbd83ef70fb9832bdd830701babc3f2e043ef70fbd822bdd4307c1bab802bdc43ee60fb9432bdd057c6ead003e7b0fbd83ef50caf6d1c2986eac001ce60738822bdac50a51baacaf3d04af282bc8c22bcf83386ea82bcec12bc9cae3008af3d102d86ea7001aa604af3b142c86ea62bcd8af3408af352bcccaf300caf370c61ba9402bca8af2608af361451ba90af3204af262bcb0af2f0caf341041ba8c02b4b8abe108af32182f46ea2⟩, ⟨0x15e0a384cc23e105078835c1860af04e02200ea05e02500dc040000, 0x269bc10afe49a642609c32e0b4406d1bba0afe504afe42bed422e090307c1bb9c00b3e82bf92698832bff450601bb94aff62bf9422609cafe42bed432bfdc30701bb90afe804afe42609c22bfd8307c1bb8cafec2bf942260acafe42bed432bfb430701bb88afea04afe4260ac22bfb0307c1bb8402609c982b2bf8c32bfac50601bb800260ac98272bf8c32bfa457c6ebf001a7b069cc1cf80cafe5141b06ebe2bf8012bee4afbb08afe21091baf4afbe041a702bed89eac0cafe0182a46ebc001a70073e41cf70cafbe182a06ebb001a702bed4a8360cafba1d71bae4afa2043e7b1ecc43ef70cafa3101b46eb72be84af730fed031ecc4af720fb983ef710afa20c2a86eb6⟩, ⟨0x10807d83a01a80c6059829813208603901900a004301b008c026000, 0x8a3504b8bb11c1bc94b8b804b8ab2e2c822e2e84246f242e1d4122dd48b3e08b8b8103a46f23008b7404b8ac142d46eff2e29412e1fcb87b08b8a60ce1bbf0022c9012e2944706efb001e7e04b8a01581bbe8b877048b7622dc022e1e03386ef62e1d4122dd48b3e08b877102d86ef5001ee004b875142c86ef426bbc126bb89ae708b8710c1f06ef300987404b86e11c1bbc80071e012e1a45606ef1001a70173e098350cb83921e1bbac0069c01a7908b83719d1bba8b82d04affc2bff822e0bc4246ee9⟩, ⟨0x11808083b81ae0c3057827012208203781880a404401b0088022000, 0x2e5b01278c0b96117ff032e5dc406d1bcf0b96e04b9642e59822e5c04246f3a2e5b01273b8b96117ff032e5b8406d1bce4007ac81eb107bd832e5b0506c1bce00278c09cee2e4fc32e59450601bcdc0273b89e302e4fc32e58c57c6f360002e4e861321bcd40073d4608b939143886f342e4a812e4a0b92208b92b0ce1bcc402e48412e4a84346f30001d26271ac22e4a46506f2f001d2604b926101a46f2e001ee204b8eb142e86f2a00687a124e058230cb8e81c2b06f28001ef307bec22e39850a51bc9c02e380582308b8e4142ac6f26⟩, ⟨0x13809204582060ec06c031415e09c04501dc0c004c01c0090026000, 0x2bcec12bc9cae3008bb30103a46f7500af2604bb27142d46f732eafc12ead4bab008bae11091bdbcadfb04ad702b7a0ad630cbabf101b46f6e00ada22b5c0ade60cbab6141806f6c2ea9812e9fcbaa108baa81091bda8baa405d8cba7c2e3e432ea9860a91bda4076306ab81aac0cbaa4182a06f6801d8cba782e6bc32ea8075c6f662e9d812e9a8ba6508ba770ce1bd94ad2a045bb92b3fcace70cba76101b46f64005baf16ee4acfd0cba6b141806f62001ae506b901aac0cb9fa141886f6000b8f927094b9b00cb9f51c1a06f3f001ae306b8422e7cc50671bcf8b97704b9622e5c422e5e44246f3d⟩, ⟨0x13d09604802060f006e830015809804201cc0c004b01c80a0026000, 0x4bc392f0ec32f19454c6fa70015c22f18c5486fa62eed4aff708bb392ee8098272bed442eff440e71be8cbbb704bba32edc822eee44246fa22eed812edc8bba308bbb70ce1be84bbb52bfb422ece4bba0260acafb510bbb61039c6fa02eecc12ee80bb3908bbb50c1f06f7f001d21073e41cf70cbbb3141b06f7e00982b2609cafe30cbbaf1c2986f7d001a7b069cc22eeb450a51bdf002edf0afb52a0d832ee9057c6f7b001cf518bb392ecdc42ed9c80751bde80073d460748832ed9460741bde402ecfcbb3708bb63142ac6f78001cf518bb392ecdc42ecf070781bddcbb3004bb262eca822ecc84246f76⟩, ⟨0xef06e03241720a804a82200f006902e814808e03c0180074020000, 0xf9dc3e6a2f2e832f39857c6fbc001bfd0f9a8bcba0cbce121e1beec006ff41c2508bcbf19d1bee802f2dcbcba08bcbd142ac6fb92f2c012f2b8bca508bcb10ce1bedc02f29012f2c04346fb600bca22f0e422f2bc6306fb50150cbc390cbcac1cb1bed0054308bcaa18a1becc000bc7e184d06fb001504bc7d14f1bebc000bc72184cc6fad003e812f1c453c6fac2f1a412f19cbc3e08bc6a0ce1bea802f0f412f1a44346fa900bc3a2f0ec22f1a06506fa8⟩, ⟨0x12608783f01ca0d105e82b413808903e01b00b804801a807801c000, 0x2f5f010a1c4bd310a28c32f6b8406d1bff4bd7e04bd322f3dc22f6804246ff72f5f010fcd8bd310a28c32f5f8406d1bfd8006cdc1b3806ffc32f5f0506c1bfd4006ff43f362f4bc32f5e490a31bfd0006ff41b3808bd7719d1bfcc02f5c4bd2f08bd75142ac6ff22f5a812f5a0bd6208bd6b0ce1bfc402f58412f5a84346ff000bd3e2f4fc22f5a46506fef001c01a7308bd66141cc6fee003f360a1c4bd2f0cbd35141806fea0028710fcd8bd2f0cbd3315f1bfa4afa2043ef61ecc43ef70cbd25101b46fe30038fb0f0e822f3d05146fe0001db304bcf2142f86fbf⟩, ⟨0x144098047c2180ef06a830415c09a04301cc0c404f01f00ac028000, 0x6cf22fadcbeb60cbee11c2987839001939064d422fafc50a51e0e02dec042de50b79c22fa9c338783426e80bea4085a3b26ba02b760b6f842fa9440e71e0c8bea30b6fc20add82db30b6f832fa9030701e0c42db4042db30add822fa8c307c1e0c0bea104b867261a822fa88338782f2fa801261d01fec08bea1104d4782e00a8a82a29ca8a60cbe7b14198782c009ae70b6f82a730cbe6c15f1e0a800a9f02a7408be61142ac78270fd9810fcec3f3d08bdbf0ce1e09000fea43f3508bdbd142ac78232f6d012f394bce708bdb61091e080bdb2043e6a2f3903a240cbdb4101b46fff001c24070941c260cbdb2141b06ffe⟩, ⟨0x141097046c2080f006c831416409e04681f00ca05101f009c026000, 0x8afc0449fd127c02323b833878722fed812fed0bf7308bfb70ce1e1b8bfae04bf722fe945d750cbfb6101b4786d00bee72fdc8bf780cbfb514180786c2feb812fb9cbfa5175d432fec0406d1e1a80061bc193b064f032feb8506c1e1a402fdc8bee72fde032fe9c57c786700bf722fb9cbf780cbfa21c2b0786600186f064ec22fe8050a51e19402fde8bf7808bf7e142ac78642fbbc11b3c8bee42fb9c32fbf8406d1e18402fadc6cf22fad832fbdc50601e0fcbef104bee52fba022fbcc424783e2fbbc12fadcbee42fb9c32fbc4406d1e0f40064e41935064e832fbbc506c1e0f001b3c8beb72fad832fb9857c783a⟩, ⟨0xf807283601920bc054827011807e03981940a404501a8098026000, 0x32cd0132cc8cb2c08cb350ce1e2a0032cac132cd043478a701ea8cb2908cb331941e29807aa04cb30101a478a532af0132ae8cab408cabd0ce1e28c032acc132af043478a2001abb32ac4232aec65078a1001abb04cab8101a478a0000329c461361e1f40779182329c050e21e1f0ca2c04ca2a328902328b4338787900ca2304ca2c10d1e1e0032880ca2108ca2b1941e1dc00703b108ca28141cc7876137fc112cb04b2e08c8f10ce1e1d04bf8044bef12fc42323bc3387873⟩ ] def tableRLL : Table Block := .branch 12 tableRLLL tableRLLR def tableRLRL : Table Block := .leaf #[ ⟨0x11508283b81bc0cb05e02a412e07e037016009203b0158078022000, 0x331dccc3808cca51941e2eccca204cc38331dccc7e0ccca3101b478ba00144cc700ccca2184bc78b900144cc70330e0433280712e1e2e000513a90ccc7d184b478b7331ac1330f0cc6608cc6d1091e2d403a632ff8cc380ccc6b2081e2d0cc683319423319ccc64331803331a431878b300cc6132ff82331a051478b23318c132ff8cc62330fc33319441078b100e98cc3808cc631c31e2c003a63aa08cc601821e2bc032ff8cc3b08cc3e1011e2b8032fe8132ff450078ad01080132fc050ba1e2ac04333fd3a50ccbae144dc78a9⟩, ⟨0x13a09484582100f406e832816e0a004001bc0b604a01c8098032000, 0xbd8bdcea03334a4506c1e3d803a61f6e8ccfa0ccd252428c78f500e98bdc23348c67478f4007dba1f6ecccfa0cccfd1418078f33339410f3e82ff90f3ec3333a8406d1e3b0cce7043cff332f42333a042478ea333981332f43cff08cce70ce1e3a4cce5042c3c0bfe43cfb0ccce6101b478e80f694cce00f5cc30bfe43ca90f2a03cfb10cce50c2a878e7003ca80bfb023338451381e39400f3e82c3c0f3e43332ec70a61e38c0079c41e6b08ccb91429478e200ccb30f3e42332dc50ab1e384cca704cca4331e42332a033878be00cc7804cca710d1e2f4cca53328c233290cc7d331fc33329831878bc⟩, ⟨0xfa077838c1a00c3059828812a08a03f01b00bc04b01b80a802e000, 0x337a4613a1e4a4006004cde814f1e4a0cde004cdbe336d4233784338792600cdb404cde010d1e4940336c8cdad08cdbf1941e490018cdb1336b43336f054c792300606208cdba1521e488000cdab184e4792000c901336a853c78ff00ee0cd74335843335fc87878fd00ee0f842335f467478fc334bc132ff0cbf608cd300ce1e3eccd2d04cbfb32fd42334bc40b61e3e803b604cd2d142c878f9334ac1333f0ccf708cd2c0ce1e3e0cd29047dbb333eccc700ccd2b101b478f7⟩, ⟨0x12708a04041e20e306402d013a088039818009a03a016807401a000, 0x339f0ce7a339c8333aa866c796400ce7b339e8ce720ccea719a1e58c0073c81cec08cea41591e5880073cc1339d450ba1e580ce702ecec2073d462aafcbb3a10bb34143b4793d339a412ece8aabf08ce700c1f0793c339a412ece4bb3a2aafc3339ac406d1e4e80073d46074881d2310ce69181dc7939001cf518bb392ecdc43398870761e4dc7c300429e81f0b42338a433879362f6d012f394bce708ce260ce1e4d4cdfb04cdf9337c02337f0338793000cdef04cdfb10d1e4bc0337b4cdb108cdfa18c1e4b8006020cdb10ccdf71cb1e4b40060202337d4628792c⟩, ⟨0x11608283d01cc0d305f82c413c08e03a819409e03e016808001a000, 0xcf2733c94233cc060bd1e5dc0074d01d3308cf2d142f0797600cf2004cf24142d4797533bd4133acccead08cef60ce1e5cccef304ceb2339ec233bd440b61e5c80073c4133bcc50b21e5c40069c0bd3f2a298333bb8878796f001a70073b4233bb0674796e33b8ccee108cee233b80cebd0ccee40c61e5b4033adcceb108cee31451e5b0cebf04ceb133ae4cebc0ccee11041e5ac033ad4a8a608cebf182f4796a001cf0073b8233af450bc1e5a4033ac4133ad0500796833aac133aa4ce7f08ceac0ce1e5980339f8133aac4707965⟩, ⟨0x11308003b01bc0ce06002b414009004001b40ba04d01f809802c000, 0xcfa204cf2333bf4233e8c33879a833e80133c88cef708cfa2103a479a7001d3504cfa0142c879a600a8a633c94233df451479a5001cee04cf7b142f879a433dd8133dd0cf6e08cf770ce1e68c033db4133dd843479a200cf6c33d80233dd465079a1001c01a7b08cf72141cc79a0001a7033d80ceb50ccf6a21e1e5f80069c01cef08cf6819d1e5f4033ad4cf2708cf3d1451e5f00073c0133cec50be1e5eccf3433cc8233ccccf3133cb4333cd4318797a00cf2933c80233cd0514797933cc0133c80cf2f33cb0333cc84107978⟩, ⟨0xfd077837c1a40c5058828812208203901900ac04301b008c020000, 0x67f6a308d9b91821e6f40365dcd9b408d9b71011e6f00365cc1365d850079bb01adc1365a450ba1e6e40067e019f7068f0336294506c1e6e0073a6f608d87e142ec79b601cf5ce9ac833619450621e6d4073e73c08d8391418479b301cf0d82608d82f143b079b2001a3c04d82e101a879b1001d3704cfb9142e879af33ed0133ec8cfa808cfb50ce1e6b8033e9c133ed047079ad00cfa4339e8cfa50ccfb319b1e6b0033bdcce7a33e94333ec066879ab001d36073b0233eb456479aa⟩, ⟨0x12708c84141e40e506602f014a09504101cc0c004e01a809401e000, 0x67f5e008da2e19d1e7c0016ebc5bb9368943368a050601e7bcd9fd04d9fa367bc2367f833879ec00d9ee04d9fd10d1e7acd9fb367e42367e8d9f3367d43367f031879ea00d9ed366c42367ec65079e9367e01366c4d9ed367d03367e4406d1e7a00051367a43367e0612f1e79c0051367a4d9b110d9f61c4b879e600145a883367cc612d1e794d9e404d9b5366fc23679842479e3019fcd977366c433679082079e236784d9be08d9e0366f4d9b90cd9e20c61e7840366e8d97708d9e11451e780d9bc04d977366ecd9b80cd9be1041e6fc067f366c42366f070c79be⟩, ⟨0x10f08103c81c60d106182c013c09004101bc0b604e01d8090026000, 0x36acc136af04347a2100dab236a90236aec6507a20001c0bf4236ae050731e7fc02f236a90da690cdaaf21e1e7f802f26b308daad19d1e7f47deb047dbf1f788236a8c33879fc00bc87e6536180336a8487879fb00bc9ac42369fc67479fa00da6404da68142d479f9368e41365d4d96f08da3a0ce1e7dcda3704d974365b82368e440b61e7d806af04da37142c879f5368d413689cda2208da360ce1e7d0da33045bb936898d9e90cda35101b479f3016fd781a843368cc506c1e7c8067f16ebcda250cda302428c79f1⟩, ⟨0xf7073036418a0ba057026c11c07e037018409c0410188080026000, 0x488aac36cdc336d888787a3601207d08db6019d1e8d4022ab08aaa36cdc336ce850601e8d0000db2a184ec7a31006d0136ca453c7a3036c88136c80daf708db230ce1e8b8036bd8136c884347a2d00daf436b88236c846307a2c006d0836b88336bf872c7a2b006d0808dafc18a1e8a8daf104daef36b98236bc83387a2800dae504daf110d1e89c036b8cdabe08daf01941e898018dae236af8336bb454c7a250061b608daeb1521e890dabc04daba36ad0236af43387a22⟩, ⟨0x12b08c04041e00dd06782ec15009104001b40ac045019007c022000, 0xdbb904dbac36e90236ee83387a6736edc122aa8dbab36e8c336ee4406d1e998007c07d1330cdbb7141b07a65004a08aac36ea8336ed490a31e990012807d08dbb319d1e98c022ab08aaa36ea8336eb450601e988dba104db3936cc4236e883387a6036dfc122aa8db3836cc0336e84406d1e8fc007c07d07e0cdb7f141b07a3e36df0136dd4db7708db7e1091e8f4db7a04dabe36dd0dab10cdb7c101b47a3c006d86dcbf0336de8506c1e8ec036b88dabe36da8336dd857c7a3a00bc8dabe36da8336dc490a31e8e402f21b708db6f19d1e8e0036d9cdb6a08db6d142ac7a37⟩, ⟨0x10607983981a60c0059027c11607e035817809c03f016007c01e000, 0x371b41371acdc6108dc6e0ce1ea880371801371b44707aa100dc3e365b8d9670cdc6c19b1ea800368ecd96e3659c3371a46687a7f01ad9ac02371985647a7e370f013699cda6108dc3d0ce1e9f0dc3a04da66368ec2370f040e91e9ec06b504dc3a142c87a7a36ff0136fe8dbf408dbfd0ce1e9d0036fcc136ff04347a7300dbf20a6dc236fec6507a72001c01fc236fe050731e9c4dbe804dbe636f80236fa43387a6c00dbbf04dbe810d1e9ac036ef0dbbd08dbe71941e9a8007013408dbe4141cc7a69⟩, ⟨0x11408183c01ba0ca05e82a812e08903e01b00be04601b008001e000, 0xdd61374e423759450ab1eae40374ecdd33374e43374f857c7ab82aa8412a9dcaa7908dd2a0ce1eac4dcfd04dcfb373c42373f83387ab000dcf004dcfd11c1eabc0373b8d96e371dc3373f066c7aae00dca5365b8dc770cdcf919a1eab406fa6b008dcf61591eab006f904dcea142c87aaa00da69372c023739c5147aa901ad013739450be1eaa0dcbe372f02372f4dcbb372e03372fc3187aa700dcb2372a82372f85147aa6372e81372a8dcb4372dc3372f04107aa500dcb0372b82372e860bd1ea9006f86f708dcb8142f07aa3⟩ ] def tableRLRR : Table Block := .leaf #[ ⟨0x11a08303c81be0c805a02a413a08903b01a40b204801c8094022000, 0x377e81374f0ddf908ddfc0c1f07aee001af206bc01af30cddfa141b07aed377dc13778cddbd08ddf80ce1ebb0ddf504ddad37788dd3b0cddf7101b47aeb001af106a901aa50cddf5141b07aea000377b0613c1eba001ae04ddeb14f1eb9c02b4dcddad2b4b833779050601eb94ddbb04ddb9376c02376f03387ae300ddaf04ddbb10d1eb880376b0ddad08ddba1941eb8402b4dcddad08ddb7143bc7ae000606a902376d450ea1eafc006bbc1aa206a8c3375d8506c1eaf00374ecdd33374e43375a470a61eaec006bc81af008dd67142947aba⟩, ⟨0x12208804081e20e006602e8158099041018809c03a0168080026000, 0xe98def937bdc337ca08787b2200e99dc4237c986747b2100df2037bdc237c9050ab1ec80037a90de7e08deea142ac7afe005c70170ccdeb20cdeb8141807afc00e98ca21379f8337aac8787afb00e99dcc237aa46747afa2a99012a8f4aa3f08de760ce1ebe4de7004dd332a890dd3c0cde71101b47af8379bcde21377f032a890de20377e4dd3c10de700c2a87af7379b4137880aa2408de6f0c1f07af6001afc06bd01aee0cde6d141b07af500ac3804de6c11c1ebd002b88c1378c44707af2001aec04de251581ebc00377fcddf9377f433788857c7aef⟩, ⟨0x10d07d038c19e0bf058827411407d036817c0a003f016007c01e000, 0xe92104e8f53a3b823a4883387b363a3fc13a384e8f42a4dc33a484406d1ecd4006af01abb06c8033a3fc506c1ecd007fc3a3cc23a3f050ec1eccc006c8013a3ec406a1ecc8032ac4e8e13a3cc33a3d850601ecc4e8ec04e8ea3a39023a3b43387b3000e8e304e8ec10d1ecbc006af0e8e108e8eb1941ecb8006af013a3a040691ecb407fe7fc08e8b4141847b2a01ff5fe9dc833a2a450621eca4df3404df3237cb0237cd43387b2700df2b04df3410d1ec98037ca8def908df331941ec9400703a908df30141cc7b24⟩, ⟨0x12b08d04181e40e106682e814809103f81b00b204201a809c028000, 0x3ae3af3b00ceb2a141b07b6a001b2906ca01aee0ceb24141887b6900e8bb270b0eabd0ceb211c1a07b68001b2706c9423abfc50671ed9c03aaf8eabd377f433abe450b91ed98eabb04eab73aacc23aaf03387b653aae417633aad8e8bb0ceabb182a47b6401d8c1af406bb833aae460a81ed8c0763377e4ddfd0ceab81d71ed889e20049df6277e023aac83387b602779c1276f49dbf08e9f70ce1ecfc6eaa0469291a4a84f2f0ce9f3101b47b3e001aa804e9bd1581ecf0006aa013a6c450ba1ece89d74049d6d275bc23a5d43387b38001abc06aec1aba0ce938141b07b37⟩, ⟨0x12c09084542040f4070833816e0a404881e80cc04c01d80a802e000, 0x3af9c613d1edf803b804ebe614f1edf403b8336b4ebb00cebbf2428c7b7b00ee018c23aef46747b7a00cdb1336b4ebb00cebb415f1ede4eba704eba33ae8023aea03387b783a3fc132ac4e8f42a4dc33ae9c406d1eddc03a384cab13a3cc33ae9057c7b763ade013add0eb6f08eb790ce1edd0e93804e8e13a4a89be80ceb78101b47b7300cab13a384e9280ceb75141807b723ad94eb3e08eb383acf418200ceb670c1c07b7001ec1fd1ff033ad94506f1edbc006084182008eb3f141b87b6d3acb0137adcdeb908eb2e1091edb0eb2a045c3337ad0c92b0ceb2c101b47b6b⟩, ⟨0x11608383d01ba0ce05d82b813408803d019c0b404a01d80a0022000, 0x1c0eec23b1a850731eebcec6204ec303b0a023b18c3387bae3b18012f0e4ec2f3b09c33b188406d1eeb405d83ba0cec60141b07bac00ee0bc3b3b0b833b0ec90a31eea803b86023b0e46747ba900bc3b2f0e4ec2e0cec31141807ba800ee0ebfa334fc33b0948787ba700ee0ef023b08c6747ba63afe013afd8ebf008ebf90ce1ee9403afbc13afe04347ba400ebee335d023afdc6507ba3001c0f8023afd050731ee88ebec04ebb33aea823afb43387ba13afa81336b4ebb23aea433afb0406d1ee8000620633bf0cebea141b07b7f⟩, ⟨0x10d07e83c01ae0c7058828012207e038817809603d0180074020000, 0x334fcecbd08ecf61451ef8003bd04ecf4142f87bbf3b3b4eceb08ecec3b3a8ece70cecee0c61eef803b384ecb908eced1451eef4ece904ecb93b38cece60ceceb1041eef003b2fcecbd08ece9182f47bbb00f8cef823b39c50bc1eee8eca304eca13b1dc23b2903387bb900ec7604eca311c1eee003b1d0cbf532fb833b28866c7bb700cd3132fd4cbee0cec7f19a1eed803ff3b708ec7c1591eed403fe04ec70142c87bb33b1b813b1b0ec6608ec6f0ce1eec803b19413b1b84347bb100ec643afe823b1b46507bb0⟩, ⟨0x10e07d039c1ac0c905b028811e081037818409c041017006c01a000, 0x33e80133c88cef708ee33102d87bfb261901260e8983c08ee320ce1efe8033d8cceb508ee2d142ac7bf700cf2004ee271401efd8edfb04edee3b7d423b7f44247bf333bcc133ac8ce7b08edfb103a47bf233bd4133acccead08edf41091efc0033ac413b7bc50b51efb803a6171c0deb20ceda621e1efa403a63af08eda419d1efa0ed2c04ed2a3b48023b4b43387be700ecff04ed2c11c1ef9803b3f4cbf53b29833b4ac66c7be500ecb432fd4eca60ced2819a1ef9003e53b708ed251591ef8c03e404ecf9142c87be1⟩, ⟨0x12f08d84201e80e006602e014a09103c01a00a40410180080026000, 0x74f01cef073c033bb80506c1f0bc03baf0cf6033ad433bafc57c7c2e3bac813ba9cee6208eeb40c1f07c2c001a70074fc1d390ceeb2182a07c2b001d3d074ec1d3e0ceead141b07c2a001a703ba98ee3a0ceea91c29c7c293b9dc13b99cee7208ee791091f09c03b9989c7b3b98833b9dc70651f098ee743b9c423b9ccee703b9b033b9d43187c2500ee6d3b99823b9d05147c243b9bc13b998ee6e3b9ac33b9c44107c2300ee62271ec23b9bc50641f0880075c81d7008ee6c1418c7c2100ee663b99423b9a84047c20001d3704ee3d1581effcee3304ee263b88823b8d03387bfc⟩, ⟨0x12e08b04041dc0e1068830016009c04401cc0c205001d80a802e000, 0x3befc1073d463bbcc9ca610efe1181e47c63001cf5181d68075a443befc60771f188efa604efa43bdec23be9c3387c6100ef7a04efa610d1f18003bde0ef7408efa51941f0fc02609cef7408efa2143ac7c3e001c01a7308efa0143a87c3d3bcfc13bcf4eef208ef610c1f07c3a001d67074fc1d390cef3f141b07c39001cf518eef23bbc043bc8080751f0e00073d46075a033bbf860741f0dc03bbe0eef008eefc142ac7c36001cf518eef23bbc043bbd470781f0d40272a09ca408eee6142ac7c323bb8813baf8eeb608eee30ce1f0c4eee004cf603baf4eea00ceee2101b47c30⟩, ⟨0x12008683e41d80d306182b413808d03f81b00b204101a009c026000, 0x3e4b813e3e8f8f408f92f0ce1f1e4f92c04f8f93e3a823e4b840e91f1e0077504f92c142c87c773e49cf92508f9263e490f9200cf9280c61f1d803e3f0f8f708f9271451f1d4f92304f8f73e488f8ff0cf9251041f1d00379f8def708f923182f47c7301dd1dc823e48050bc1f1c803e3dc13e3ec50b51f1c4afe004afb92beec23e1cc3387c6b3e1b812ececbb3408f86f0ce1f1a8ce69041cf518bb3a2aafc43e1b860791f1a40339c813e0e84707c67001cf304f8341581f19803baaceea03baa833bf9450601f194efe104eef43bba823bf883387c64⟩, ⟨0x12a08b041c1f60e806d832016a0a704a01ec0d005402080a0022000, 0xfa663e8f4fa650cfa69141807cac01fe9ed823e69450bb1f2a4077704f9731581f2a0f96a04f9683e4f823e5ac3387ca700f93d04f96a11c1f29803e4e8f8e53e4ec33e5a466c7ca500f8ea3e394f93b0cf96619a1f290077677008f9631591f28cf93704f8eb2659c23e4e44247ca13e4d8f93408f8eb3e4c499670cf9370c61f280f93504f9313e3ac23e4d83387c7f3e4b013e3e4f8ea08f935102d87c7e3e4cc12659cf93108f9340ce1f1f499e73e4c822659c99e53e4c433e4cc3187c7c3e4c0993808f8f9264dc23e4c8413f1f1ecf8fa04f8f904f9300c4f87c7a⟩, ⟨0x13109004341f40e306882f415a09c04401d00ca05201d8090026000, 0x3ebe4faf308fafd142ac7cbf0069333e8f8faf30cfaf715f1f2f8faee04faaa3eaf023ebbc3387cbd3eba4177918faa93e99843ebb860791f2f0077919e99e9c43eba460771f2ec077918faa83ea9843ead880751f2e4077919e9833ead060741f2e003eab8faa608fab2142ac7cb701de463eaa0faa610faab1c1e07cb600fa3d3e998fa650cfaa41c2987cb401eb1ea023ea8850a51f2ccfa7804fa683e8fc23e9e43387cb23e9cc13e8f4fa673e8f833e9e0406d1f2c4fa7304fa663e99cfa3e0cfa75101b47cb001eb1ea1eb433e9cc506c1f2bc03e8f4fa663e99433e9b057c7cad⟩ ] def tableRLR : Table Block := .branch 13 tableRLRL tableRLRR def tableRL : Table Block := .branch 25 tableRLL tableRLR def tableRRLL : Table Block := .leaf #[ ⟨0x12408803e41ca0d105f02a813a09004181bc0bc04b01a008c01e000, 0x1d74075cc1d390cfc29141887cf13f09413bdd0fc223baac33f09c406d1f3c00074e81ced073b833f094506c1f3bc02f4fcef742a29833f09050601f3b8fbf204fbb03e39823efcc3387cec3efb413eebcf8e508fbf2102d87ceb01dbc13efb450b21f3a803e4ec13efa84707ce900fbae04fbb11401f39cfb6704fb643ed9823eda4307c1f39803b13a977c0cfb67141b07ce53ecec13ebd8fb3608fb3d1091f390fb3104fa3e3ebd4eb370cfb3b101b47ce301bb1eb9ebc33ecc4506c1f38801a4ccfa3e3ebcc33ec8470ac1f38406ec7ae08faff142947ce0⟩, ⟨0x12a08b84281ee0e406682e814e09403e81b00b204b01d009c026000, 0x6b8bc3b3fcb833fce490a31f4a001ae6023fcdc6747d2700bc392f0ecff2e0cff3215f1f498fee5049cf8273c423fb9c4247d252748c113dc49cf7271ec33fb94406d1f490ce6b04ce613398c23f9f43387d222ac8c12abecaafd08fe670ce1f3fcfe2104fdf53f7b023f8883387cfd3f7fc122ab0fdf43f6e833f884406d1f3f0007c07d1e70cfdff141b07cfb007808aac3f7c833f7f490a31f3e801e007d08fdfb19d1f3e402f0c0fdf208fdf9142ac7cf8008aaa22ab0fdf20cfdf615f1f3dc0331c0c92b3ed8c33f1e850601f3cc0324accc703ed8c33f1e457c7cf2⟩, ⟨0x11908383e01ce0d405e82b013408c03c01940b004801c809801e000, 0x67f3fedc6ffb0d082f21e1f4f0067f066f82420b46747d3b0108271bfec2420ac50ab1f4e8fffc04ffef3ffa823fff43387d383ffe811a9d8ffee1f4b033fff0406d1f4dc012c12d12e0cfffa141b07d36004a06a713ffb433ffe08787d35004a04b423ffd86747d34006a711a9d8ffed0cfff0141807d333ff8813ff80ffba08ffe30ce1f4c403fee413ff884347d3000ffb63fedc23ff846507d2f001c1a8823fef850731f4b8ff3d04ff313fcac23fcf83387d2b3fcec12f0ecff303fbdc33fcf4406d1f4a805d81b00cff3b141b07d29⟩, ⟨0x11808283c81c20ce05d82b813c08f03e81b80b60440198084026000, 0x109e113efc4fb80d09e415f1f5dc5fea045fe017f882426ec3387d7500bd6d2a2982425c850ab1f5c87ca1047b601ed8c2424b83387d70423dc1423d508ef0908f80ce1f5ac0423b81423dc4347d6a0108ed422982423d86507d69001c1aa82423cc50731f5a0067f4229908bd0d08eb21e1f598067f067802423a46747d65422881421c908690908a30ce1f59108a004ada2421c508680d08a2101b47d6301a9daa1aa4342280506c1f588067f2b689086f0d087d21e1f584067f6a809087b19d1f58002b5c0ada2421bc3421cc57c7d3f⟩, ⟨0x13709004341f40e306802fc16209e04581dc0c605001c8094022000, 0x7aff042afa1ebd05fb40d0ab9101b47db2002b2f0abe87af30d0ab615f1f6c50aab045fbd17ed4242ab03387dae17fa0117ed05fbc124e0342aac406d1f6b4b8bb048a36228f4242aa03387daa001d782e4fc2429dc50ec1f69c007bd81429d8406a1f6987c78047c701f1c82429c83387da5272e41272c89cb4090a6d0ce1f68d0a2b0509e21a1e82428b4307c1f680007bc81eea07b903428ac506c1f5fd09fe0509f6427e02428804247d7d2f6c810f9dcbce40e8903427f8406d1f5f000f9a83e772f2e83427dc50601f5e80161dc5923164883427b870a61f5e4007ba01ee60909ec142947d78⟩, ⟨0x11f08403d41d00d806482d813e08e03d81a00b404601a0098026000, 0x11865046a76460c90f340d187d101b47df0461cc1461c5186b0918740ce1f7b40461a81461cc4347dec01186943bfc2461c86507deb001c078c2461bc50731f7a91867051863460f82461a03387de84619411a9c5183243cd034619c406d1f79c012c12d1e20d1865141b07de6006a761a9c518310d186415f1f79401e01a9c518310d183c2428c7de4007804b42460e86747de3006a711a9d918310d1834141807de2007810eff43c9c3460908787de0007807902460886747dbf1a2cc11a2b068ae090aef0ce1f6ed0ab9050ab542abc242ae83387db3⟩, ⟨0x140096046c1fc0e406802f415209c04481c80be04b01d0098026000, 0x4ab8128fc4ab60d19b51c2987e26001fae07eb02466cc50a51f894de6f465f022a890de20374ccddf911197d1039c7e24465ecddfa08dd33374f0ddf90d197c0c1c07e23374f41374f0dd3309197b0c1f07e22464fc1464e119350919600ce1f880adff04ac7c2b1802464fc40b61f7fc02b1e81464e45007dfe464c01464b919290919310ce1f7f0dd7604acbb375c8dd330d1930101b47dfb00dd6b2b2ecabe10d192f15f1f7e802a8909c2c2b08c34649470ac1f7e0006bf41b25091923142947df700d9e9421a118bd0d18e0141807df41e6a811e6a079a30918b71091f7c9187d051833460b82461f83387df1⟩, ⟨0x1580a284c823610807a837817c0aa04b020c0de05d02500dc040000, 0x469cc1462fd19ec091a751091f8e91a720519ec462fc2469cc3387e39469b41421a07968462f83469c8406d1f8e11a6f0519f1467cc2469c44247e37469b81467cd19f1091a6f0ce1f8d91a6d04d9e91e5a118be0d1a6e101b47e35468dd19fd467e031e5a119fc467d518be111a6d0c2a87e34468d41467f07968091a370c1f07e330019f2067a819e80d1a35141b07e320119fb467d519f90d19fe15f1f8c519f60518be467d42467e0307c1f8c006aa6a2067a43467d8506c1f8bc0421a0d9e9462f43467c857c7e2e1a18811a0e8683c0919e40ce1f8ad19bb0459231a1e859240d19bc101b47e29428b509e3164b831a1e909e213efc59241119bb0c2a87e28⟩, ⟨0x12408883f81d40dd06903141700a504901ec0ce04d01c8098026000, 0xbc392f0ed1cf80d1cfc15f1f9d91cef051c35470bc2473c03387e74473b41470d088aa091cef102d87e73017ac1473b450b21f9c80011ce8185807e700060424739c50e21f9bc0470cc1470d85007e6d3a7cc11a4ac692d091c2e1091f9ad1c27051be946fac2470a44247e6a4228012b5c10871421a034709c406d1f9a402b688ad70421bc346fa850601f99d1b2e1a8b420a7e86a2c13dc831a8bc30701f9906a32046a2c0a7e8246cb8307c1f98c7d20047cf01f3d4246cb03387e621f5ec11f3c87d27091aed1091f9842e7f042e350b8dc246b883387e3d⟩, ⟨0x11a08583dc1c80ce05e02ac13008503c01a00b2046017808001a000, 0x1bc9bc02477c450671faac0476c11daf475b43477ac50b91faa91da5051da04768824769c4247ea8475c012f2475b85a210d1da5182a47ea700bc91d69475b434768475c7ea500bc9af5aec3475c060a81fa906d2f046d261b4a02474d83387ea3474cc1474c51d2b091d340ce1fa800474a81474cc4347e7f011d29228842474c86507e7e001c09942474bc50731f9f51d27051cfb473c82474a03387e7b4749412f0ed1cfa473c434749c406d1f9e805d82640d1d25141b07e7900988bc3b473e034748c90a31f9e00262602474846747e77⟩, ⟨0x14a09d04a423410707a03741940b705001d00c004c01c8094028000, 0x11eaf479cc247af06507ee0002d21479cc247ae450ef1fafc01819b7091eb7143a87ebe47a981479d51ea3091ea81091faed1ea5051ea3479d4247a983387eba479f81479cc5a3b479d0347a94406d1fae51ea0051e782f9a0247a884247eb8479fc12f9a11e78091ea00ce1fadd1e7e042b76168ed1e740d1e7f101b47eb626e809ae92e1c51e7d479f05168ec9ae826b9c9aee26bb51e74191e7e0c5847eb5479e81479d09aed091e7c0c1f07eb4001c3f066cc1c600d1e7a141b07eb3011e730add91e720d1e7915f1fac800add91e73479c83479d850601fac406f46f36bb0d1df6141887ead005a2113db51daf0d1df31c1a07eac⟩, ⟨0x11d08503dc1d40da06582e415609b04701ec0d6057020008001a000, 0x36b88dabe47e84347e9457c7ef947dd8147dd11f6e091f770ce1fbd8047db4147dd84347ef5011f6c47cfc247dd46507ef4001c09a4247dc850731fbcc026247cfd1f360d1f6921e1fbc402625ef091f6719d1fbc0047cd888fd091f3c1451fbbc05f0051f3a142f87eee4709c146fa51beb091f340ce1fbb4026bac9af4091eee1011fb9c026bb09aed26bac347bb450601fb991ee1042d21168ec2db30d1ee2101b47ee526e80be6b0b7843168ec9ae80b6f82db3111ee10c2a87ee447af4147aed1eb2091ebe0ce1fb88047ac4147af44347ee1⟩ ] def tableRRLR : Table Block := .leaf #[ ⟨0x11508103bc1b20c805d82a012808703d01b80b8049019008401c000, 0x1197d04dd343788424a5c43387f354a0b0147ee91fb509282d0ce1fcc1282a049891fb91fec834a0b060a91fcbc02625f95f70d282a182a07f2e0088a605282911c1fcb52824051fef47fa424a0943387f284a088147fb888a8092824102d87f27017c414a08850b21fc98047fb4147fc05007f25017cc147ef85607f21009891fb8226c0347eec75c7f2047ecc147e911f7e091fb40ce1fbf91fb104dabe47e8d1f6b0d1fb3101b47efd006d86dc9a0347ec4506c1fbf0026236af91fa10d1faf2428c7efb009886dc247eb46747efa⟩, ⟨0x11908303e41cc0d306182c013808e03a819409e03e0168080026000, 0x12a6d052a6b4a98424a9b83387f65012a60052a6d11c1fd9004a8f92a3d4a7d034a9b066c7f630129ff4a8f529f40d2a6919a1fd8800678c19bd092a661591fd852a3b052a264a88024a8f03387f604a8e414a89529ff092a3b102d87f3f0019e2052a39142c87f3e4a8d12a32092a334a8c52a2e0d2a350c61fcf404a8a12a24092a341451fcf12a30052a244a8a92a2d0d2a321041fcec0422f46ffb092a30182f47f3a0019e1066fc24a8b850bc1fce404a89014a89c5007f380019e40529f61581fcdd297104de21374d024a5cc4247f36⟩, ⟨0x11608183c01c00cd05c82ac13608d03e81bc0ac046018007c01c000, 0x12ae74a8f52ae80d2af619b1fddc04a9bd2a3d4aba034abcc6687f76001a27066f424abc05647f754ab9414a9ed2a75092ae60ce1fdcd2ae3052a7a4a9bc24ab9440e91fdc800689814ab8c50b21fdc40422f52a7f092ae01451fdc000678414aaf850be1fdbc01bfed2a7d092ab51451fdb80066fc14aacc50be1fdb52aac4aaa824aaad2aa94aa9434aab43187f6c012aa14a9e024aab05147f6b4aaa014a9e12aa74aa9034aaa84107f6a012a7f4a9f424aaa060bd1fda40068941a24092aa5142f07f68012a78052a7c142d47f67⟩, ⟨0x11708203c41bc0cb05c0294122083038018809c03b017008001a000, 0x8d74048d70235ac24b1a44247fab1a8e811a8e069f8092c381091fea4b86e04b867269e824b0bc4247fa817cf0117cdc5f39092c280ce1fe989a3c04986a07fb424b0943387fa54aff814aff12bf8092bff0ce1fe8c9a38049a24267b424aff840e91fe8802688c14aff450b51fe84b86e04b867269e824afd83387fa00019e4052b74142e87f7f001a210688019e80d2b63141887f7d019fc19ea067a034ac9060a81fdf004a7d014ac844707f7b001a28052afa142e87f7a4abdc14abd52aeb092af80ce1fde404aba814abdc4707f78⟩, ⟨0x15009204401f80e806a030415a09904301cc0b804801a8094028000, 0x428b52fb44bfa12fe54bf8451a1e909e2427852fe44bef92fb8192fe90c5847fbd4bf9814bf9109e1092fe80c1f07fbc001ef107bb81eeb0d2fe6141b07fbb4befc14bee12fbe092fe10c1f07fba001eef07b981ef00d2fbf141b07fb9012fb71648d2fb60d2fbd15f1fee001648d2fb74bed834bee850601fedc013efd09e113ee034bed450601fed92faf0459254be9c24bec04247fb54beb814be9c5925092faf0ce1fed119bb0458771a1e859240d2fae101b47fb30018f0063c418f20d2f7a141b07fb10018ec0b3e92f6d0d2f7821e1fec00063b018f1092f7619d1febc0220ac7ffa092ee6142ac7fae005f641a4a4d8260d2c74141807fad⟩, ⟨0x12c08e042c1f80e906a82f015809604281d00c805001e80a802e000, 0x138b54bedc24e3886507ff10058774bedc24e2fc50ef1ffc00181ee80938bd143a87fef4e09c14bfe138220938291091ffa804bf8858771648c34e09c71281ffa538244e08424e08d38204bff034e0943187fe8012ffd4bf8824e0905147fe74bffc14bf892ffe4bfec34e0844107fe60058771648c24bffc51271ff94007ba01ee6092ffc144987fe4012fe2463bc24bfe84047fe3012fe34bef92fe20d2ff7141807fe24bfc414bee52fee092ff31091ff852feb052fbc426f024bfb44247fe04bfa81426f12fbc092feb0ce1fefd2fe90459231a1e92fb80d2fea101b47fbe⟩, ⟨0x11408203b81be0d106082d015009604181b00b2046019808001a000, 0x13dec4f6a424f7cc51488274f7b814f6a53ded4f7a834f7c04108826006b93de3093dee1c32209401ae1b2093deb1822209004f6a53de6093de91012208c04f69414f6a05008822008a014f5d45607fff007813d6e42d9c34f5c475c7ffe4f59c14b1cd2c70093d680ce1fff0d8a5046929360a079b70d3d67101b47ffb16bcc116bb85af0093cf90ce1ffe87aac047aa51ea9c24f3b03387ff8279f01279d49e77093ce50ce1ffdc7a69047a281e99824f19c3387ff64e38c14e38538b80938e40ce1ffcc04e2dc14e38c4347ff2⟩, ⟨0x12508904101e20dd06802f416009704381c00c004d01f00ac032000, 0x4f8c93da04f5c834f8f8668883a0089c6fc24f8ec56488394f8c014f69d3da1093e310ce220dd3e2e053da64f68024f8c040b6220d801be053e2e142c888354f8ac14f8a13dfd093e2c0ce220cc04f7f014f8ac43488324f8a53e27093e284f8853e230d3e2a0c6220c404f7ed3de3093e29194220c13e26053de34f7ed3e220d3e27101b4882f00144fef70d3e26184bc882e00144fef74f78c44f890712e220b400511b10d3e21184b4882c4f7d814f79d3df1093df8109220a801ae4f6a53de30d3df6208220a53df34f7c024f7c93def4f7ac34f7d03188828⟩, ⟨0x11c08483c81be0cc05c828c12408503901780a20400198080026000, 0x52c9c10bae82eb4094b280ce221dc4931042aeb0bae42ae60d4b27101b488762f6b812f4d0bd3609497a0ce221d09bbc041ffa07fd02525c833888704fab014f5c13d6b093ead0ce221b13eaa047813d6f42dc834fab060a9221ac01e022c22a0d3eaa182a0886a013d72053ea911c221a53ea1053e6a4f99024fa8833888634f9fc14f9a53e32093ea1102d888620089814f9fc50b22218401a9d11831093e7d142ac8860013e68053e6b140220fd3e62053e604f8d824f98c338883d013e35053e6211c220f004f8cd3da04f5c834f98466c883b⟩, ⟨0x13009084401d40d606102d014008d04001c00be05001e8098026000, 0x10bce8c2531f05162222d402b2f8abe1094c64142ac88b23bad0eea85309ceeaf10ee623ba9ceea63bab0eea014eea10c4c488b03bab413bab0eea6094c270c1f088af52fa8152fa4ce7a094bed102d888ad001ceb054bea142c888ac00cf603baf0ceb50d4b7f1418088a752ddc152dd54b6c094b780ce22294052dac152ddc43488a4014b693baf0252dd865088a300cf603baf0252dcc50ef222880181cef094b71143a888a152d94152d8d4b3e094b660ce221fcfc2504bd3f3f088eeab0d4b65101b4887e00ef742f4fca8a60d4b6415f221f4b82d04affc2bff8252cf4338887c⟩, ⟨0x12e08a84181e20e406b831015609a04181c00be04c01b0094026000, 0x536854d7f094da0535f94d7c0d4da20c6223c003a5535d425368451488ef535f41535d4cbaa7a90d4d7f104223b803a5054d7d101ac88ed01ea41535f0406a223b14d67054d3f535842535a442488eb535994d65094d3f535914d610d4d670c6223a803acdceb38094d66101c888e93ad9c13acdceb38060803535944071223a0032ab4eb377fc0d4d601418088e600e8be3aaf42533f450ab223914caf054cab531a42532c033888bb532b413b8532a94c680d4caf182a488ba00ee10910883532b460a8222e403b8532a54ca00d4cac1d7222e00531a0e8d4c740d4c7e1c1a088b6⟩, ⟨0x153099848021a0f607183401720a804a01dc0c605201c0090022000, 0xef61539d94c270ceef23bcf4eea63bab04539dc30aa224a003ba80eeab3baa83539d457c8927539b4152df94b7b094e6e0ce22494eee004eebc3baf4eea00d4e6d101b48924539a412bfa0afea094e6a1092248d4e6804afea2bfa02539a433889223e19012bf90982b2609c3539a04071224840463f8ac23094e35142ac88fe00ac262b090ac220d4e331458c88fd538994dfd08faa8537c4cc703ed9845389c40e7223f14e24054df13eaa0253898307c223ec07a577d77b0d4e24141b088fa537f0fb6708cc703ed90fb660d4dfd0c1c088f83f1e013ed90cc70094dfc0c1f088f7014df03ed98f9700d4df315f223d807ab7aa7a90d4dba141b088f1⟩, ⟨0x13e09584602020f006e032416c0a204881f80ce05402080b802e000, 0x2fec012fe98bfa8095be50ce224f4befe04bef62fbe0253ec8338893b53e994fa308ce7b33e9423b8f03164224e0cead04ce7b054fa60c488893753e88133e94ce7b094fa30c2cc893600ef393ba98ee3a0d4fa115f224d14bed054bec52f88253bc0338893300ee62271ecee7c0d4ebb1c1a08931001d72075c0253ae45067224c14eb3054ead53aa8253ad0338892f3bac81069c0eea73b988353acc60a9224b80069c0eea63b8e8353ab875c892d539f413babd4e6f094e7e109224b14e7c054e6f3babc2539f4338892b539dc13ba80eef23bab03539f0406d224a94e7704eeab3bbc8eeac0d4e78101b48929⟩ ] def tableRRL : Table Block := .branch 12 tableRRLL tableRRLR def tableRRRL : Table Block := .leaf #[ ⟨0x12a08b83e81c00cd05c82b013c08b038817409403a016006c01c000, 0x576e010fba03ee0095dba109226a83ef0576dc20fb9c3ebb0fb983e7b115db81039c89a90fed03efa083ee60fbdc3e7b0d5db70c1c089a8576a41575e95d7c095dab1092268cdcea04dcab372942576a440e92268806fb055da0142e8897f00dcaa055d7b142d4897d125b01124e84935095d60109225e55d36164b02161dc592413efc3574dc3070225d45925045924161dc2574d8307c225d0b8bb048a36228f42573ec424896d00587e22de82573cc514896b001e7b055cf1142f8896a0058a2161f82573b450ab225a403e6055ce5142e8896800ecb9055c75142d48965⟩, ⟨0x11408003cc1ce0d406082b814208e03d01b40c204e01b8090026000, 0x370e8136998da3b095efb102d889e800da64055ef71402279c06b7055eb8158227909d25049cfb273f42579e833889e1271841270b89c26095e7710922780fa7504fa6b3e9b42578fc33889be00cbee055e3e11c226f55e39055e2b5789c2578e833889bb3b1c01334f0cd31095e39102d889ba00cd3a055e2c140226d80420055dfe158226cd5df8055df4577ac2577e433889b2536e8132ca54d763e8f43577e0406d226c403b5a4cb29535d43577d457c89b0010c50c10883577b85062226bc3ef2043eeb0fbb42576ec33889ab⟩, ⟨0x120089840c1e40e306782f815409604181bc0b604701a0080026000, 0x15feb055ff710d227f4057fa95fb0095ff6194227f000fbd95fb0095ff3144a489fb00107388257fc450ea227e800f9ed5fb057ebc357fa070ac227e00073981ea6095fe61429489f7015fb00f9ed5faf0d5fbd1418089f6001ce607a981ea70d5fb4141b089f5015fa657e955fa40d5fae15f227d0057e955fa657e90357eac5060227cc007aac1ea807a94357ea0506c227c95fa204af722bdc4257e8c307c227c55f3c055c74571d8257cf842489f03b3e413b2e8ecb4095f3c103a489ef00d967055efe11c227ad5efb055ef657bcc257bf033889e9⟩, ⟨0x15d0a504d823a10d07b83981aa0c2054826010204f01d809c026000, 0x1683805682a5a0cc25a0e84248a2e015fa40f9ec3ef60d68381c4a08a2d5a0d568320968345a0c5682d0d68360c6228b005a0b95fa4096835145228ad6830055fa45a0bd682c0d6832104228a800f9ec3ef60968301449c8a29001ce60738825a0b45126228a16827055dbf2bd8825a0a44248a275a0996825095dbf5a090af620d68270c62289800fbd83e7b096826101c88a255a08c10f9ec3ef61ecc435a094406d22891682257ffd5ffb57ea15fa32bdfc60fbd95ffe57e995fa72bdc4af721ecc475a08c31652288d6821055ffe0fbd825a088307c22888007aa41ce207aa8357ffc506c228855faa055fa757e98257fec307c228815ff7055ff557fb0257fe033889fe⟩, ⟨0x11f08603e41cc0cd05b028c12c08603a81980a4041018007401a000, 0x169e004eea83ba8425a7884248a6b0fe9410fce03f690969a50ce2299d69a2055dbf0fbe825a68c4248a645a09969a1095dbf5a0903efa0d69a20c62298caf75043e7b0fbd83ef70d69a1101b48a625a5e015a5d9696d0969790ce228fc05a5b015a5e04348a3e01696b57ff425a5dc6508a3d003e7b57ff425a5d050ef228f00181ce6096972143a88a3b015ffd0fbd95ffc0d69691c2988a39001ea90738825a59c50a5228e005a5855ffc096965142ac8a37015ffd0fbd95ffc0d693e15f228d8033584ecbf0968b2145228c003e20568b0142f88a2f⟩, ⟨0x16a0ab851024e10d07c83981a60b604e01fc0be045018807401a000, 0x5aacc1164a109bc096ab410922a8519bc0509bc164a025aacc3388aa03bad16aad08ee623ba9ceeab3ba9845aab840e7229fd6aac3bab423baaceeac3ba9835aab43070229f94e7404eeac3baac25aab0307c229f56a7f055faa2f3f825aa804248a795a9f812f3f95faa096a7f0ce229e16a7a5a9f421ecc55fa70fbd95fa6116a7e1039c8a775a0895fff083ef657ff95fa60d6a7d0c1c08a765a9e96a79087b3157e9c3e7b57e9445a9ec40e7229d4afa157e896a660c7b312bdc8af7157e9c45a9e830aa229d16a7857ed020f9ed5fb157e9435a9e43070229cd5fb2055fb10f9ec25a9e0307c229c95fa8055fa72bdc425a998307c229c0057e915de0096a61101229bc07770569ee142e88a6e⟩, ⟨0x1720af852c27412908a84081dc0d105582600f606102700dc040000, 0x1afdc11afc86bf4096bad0ce22b8001ecc429ec121d435add070ac22aec007ab41eb7096b72142948aba0169af121d425adc050ab22ae40121b44876121d035adb4516322ae0b8b804b8ab2e2c825ad903388ab6003ee62bdc43ee50d6b39141808ab4428b55d3708687a42788587713efc45acb840e722ac85930164bc592e16494413e884fe013efc5924161dc5163f4313122ac56b2a0509e34be9c25acac4248ab0428ad6b290909e21a1e84fbf161dc45aca840e722abc592e16494213efc5924161dc35aca4307022ab8fc2704fc233effc25ac804248aad5abe413ba80ee623bab035abf4406d22aad6af904eeab3b988eeac0d6afa101b48aaa3bad0eea85309c33b988eea73ba98eeac116af90c2a88aa9⟩, ⟨0x148091043c1f00e4069830015a09604181b40b604701b0094022000, 0x26e80be6b0b7842dff105a3b26ba02dbe0b6cc2d21149ae40c4c48af55b2941169f85a79096ca60ce22bcc5a74045a3b169a45a6c0d6ca5101b48af2010d3213da52b3d0d6c761c1a08af00019ff067f425b1d0506722bbd6c39042db42f9a025b0e84248aed5b0e012f9a02db4096c390ce22bb11ee1042b76168ec2db30d6c38101b48aeb5afc415afa56beb096bf310922ba52b24059fd29f1434c835afc460a922ba0067f467d519f90d6bea1d722b9801f3b829fa262b435aee870ac22b940072a41cb1096bb8142948ae4011b2a262b425aed850ab22b8c0262c098ae2629835aecc516322b8801b7c8ab37096bae142ac8ae1⟩, ⟨0x147099848c1e20dd06602e414a08c03f01a80a00420170084026000, 0x6b9196dab5b79045b7bc807522cc006b919b9835b7b4607422cbcafa157e896a6657eb56d7d57ec861ecc4af722bdc55fa757e955fb10f9ec72bd88316522cb55fb4055fb157e9425b5f4307c22cb002bd983ef5096d70142ac8b295b4e015b4a56d23096d390ce22c956d2f056d2822cb025b4e040e922c916d345b4cc25b4ad6d322e1fc35b4d43188b23016d28056d341059c8b225b4c415b4a08b24096d33104d48b215b4bd6d2e096d2822cb08b240d6d310c5988b20001e76056d2f142c88aff5b4b4122c908b2c096d2e0c2cc8afe016d26056d2c14022bf405b49815b4a850b522bf04bbb044bb412ed825b3f83388afa⟩, ⟨0x1630a784f024611007e035818a0a804701ec0c805001e8098028000, 0x16d2f056d2822cb025e8c430b322dad7a2d04b87f5e88425e8b84248b695e8b17a2908b87f5b4ad7a210d7a2d0c622da16d35056d2b2e1fc25e8b03388b675b4bc15b4a08b2c097a29102d88b66538994df23eda4fb6510faa8537c4fb663ed90c92b155e600c4c48b6000483e1208825e2f850ab22cf8eeb25e2cc23ba9cee623ba98eea01169e01039c8b3d5309ceeaf08eea63bab0eea00d78b30c1c08b3c5b7fc15b7f56dbf096e200ce22ce16df705ae465b7c46934116dff181e48b3701ae465b6ad6de4116dfe1c1e08b365b7e415b7c96df4096dfb10922cd56df7056dab5b7c469340d6df9101b48b3401ae466e66e7116df7181dc8b3301ae465b6ad6de4116df31c1d88b31⟩, ⟨0x12c08c84101e80e706802f015e09c04401ec0d005101e80a802e000, 0x5fea010a4d8292d097fa90ce22e9d7fa60520a4d429280d7fa8182a48ba60120e30e10d7fa6182a08ba5002938057fa511c22e917f7e264e020a5989937097f780c2d08b7e5fdf01264dc2966097f7e0c2cc8b7d001ac15fdf050b222df17f760429a00a5e825fddc3388b7a5fdd010a5fc2968097f76102d88b79002f415fdd050b222de17e78057e705f9c825f9e84248b754bde810afe52f6f4bd9835f9e0406d22dd000b3e82bf94bdb435f9c4506022dcc5fac044f3313cd825e8dc3388b70138901138884a60097a3510922db97a315b4a4222cb16d28096d230c2dc8b6c⟩, ⟨0x11a08603e01ca0d806402e414c09304001cc0b404a019808c020000, 0xc9018c2625846748bbd00cdad336c589380d893b141808bbc624c01624b989280989310ce22ee806249c1624c04348bb9018926624842624bc6508bb8001c0cb02624b0507322edc01e04f5b90b670d88fd1c29c8bb5225dc122594896009882910922ec97fba057fb75feb025feec3388bb0017fab057fba10d22ebd7fb85fed825fedd7fb05fec835fee43188bae017faa0a0e025fee06508bad5fed410a0e17faa5fec435fed8406d22eb000510a28c35fed4612f22eac00510a28c2838117fb31c4b88baa001441c200d7fb0184b48ba9⟩, ⟨0x12308803dc1ce0d106082c414209404081b40be04e01d8090026000, 0x66c18a6b62a94362ae08208bfb62ad58ab2098ab462ac58aad0d8ab60c622fe8062ab98a6b098ab514522fe58ab0058a6b62abd8aac0d8ab210422fe00066c18aa5098ab01c322fdc0066c019b4098aad18222fd80629ad8aa8098aab10122fd406299c1629a85008bf4628fc1628e58a36098a600ce22fc52a39052a254a7fc2628fc40e922fc004a8901628e850b522fb802b4e8ad2e098977142ac8be46259c1624e989320989680ce22f85896504cdb1624e589250d8967101b48be00018818ccac362594506c22efc0324336b589380d89632428c8bbe⟩ ] def tableRRRR : Table Block := .leaf #[ ⟨0x12508903ec1dc0db06402d014c09304301b40ba04601b008c026000, 0x18b32058afc62bdc262ccc3388c30271dc1271ac9c6c2718c362cc8406d230bc052fa0162c845008c2d009bf8271ac9c6a0d8afd15f230ad8af1058a696298c262bc83388c2962bbc1629a12a3d098af1102d88c280019bc058aef142c88c2762bb4162ba98abf098aee0ce23094062af8162bb44348c2462bad8ae9098aea62b8d8ae50d8aec0c62308c062af58aa5098aeb194230898ae8058aa562af58ae40d8ae9101b48c21001442b760d8ae8184bc8c20001442b7662a94462b98712e22ffc0051066cc362b8c612d22ff98ab8058aa962acc262ae84248bfc⟩, ⟨0x13a095044c2060f007083381780a304981f40dc060028010c04c000, 0x18f3b63c8c263da46508c6f63d98163c8d8f3b63d88363d9c406d231b800512b39c363d98612f231b400512b39d8f23118f641c4b88c6c00145d98363d84612d231ad8f36058f2763cc4263ce04248c6901d8d8eea63c8c363cd88208c6863ccd8f30098f3263cbd8f2b0d8f340c62319c063cb18eea098f33145231998f2e058eea63cb58f2a0d8f3010423194076363c8c263cb870c8c6401d8dd9c263cac6088c63018eea63c98263ca44048c6200f8f7058ee414023180afa12bdd821ecc4af720fbd83ee61189a01039c8c3e2eed4bba32e090afea10bb392ee80afb52bf90982b14bb720c4c48c3c⟩, ⟨0x12a08b841c1e80e106402e014409204101c80be04c01c8098032000, 0x1452f66664f44665f8712e232b80051063cc3665ec612d232b59970059961665ac2665c84248caa0018ec66491993d0d9970208232a5996d665a82665b19969665943665b83188ca8019966664902665b45148ca7665a01664919967665903665a84108ca60018ec664f42665a070c8ca50018ec063d02665946088ca40199246658026658c4048ca3662a813babceea10998ab109231f16afd04eea13babc2662a83388c7b1bb8011a3e468f4098fe2109231d18f6b058f6863cf4263db03388c72018f3c058f6b10d231c58f6963d9c263da18f6163d8c363da83188c70⟩, ⟨0x13d094846820c0f3070030c15e09504081c00ba05001b809c020000, 0x3f6e90f346688c3668ec70a62338801e81e3099a39142948ce1010f343f6e99a230d9a31141808ce0668b01623f19a20099a2e109232f99a2b059a20623f02668b03388cbd668a99a29090b724f5bcfdba4f5b84668ac40e7232f13eaa053d6f42dc82668a8307c232ed9a286689423f6e99a244f5b83668a43070232e99a27059a243f6e82668a0307c232e401e81e322b0d9a25141b08cb86669416668999770999a60ce232d00665d81666944348cb36668d99a10999a2665ed997d0d99a40c6232c80665d5993d0999a3194232c599a005993d665d5997c0d99a1101b48cb0001452f660d99a0184bc8caf⟩, ⟨0x12808d84081e40db06582e015009504101a40b2043019808c026000, 0x19b3d059b6c10d233dd9b6a66da0266da59b6266d90366dac3188cf6019b3c66c90266da86508cf566d9c166c919b3c66d8c366da0406d233d001810e890366d9c612f233cc01810e8919b24119b651c4b88cf2006041c270d9b62184b48cf166cdc166ca19b32099b39109233bc006ff4282066c90366cdc8208cee66cd19b31099b3366cc19b2c0d9b350c6233b4066cb42820099b34145233b19b2f04282066cb99b2b0d9b31104233ac006ff59b24099b2f1c3233a8006ff41c2a099b2c182233a400a0819b27099b2a101233a17a29056d2b5e8842669a43388ce5⟩, ⟨0x12208a83f01d80d506282c814408f03f01940aa03f018808c026000, 0x19c21059c3010d234a99c2e670b02670b59c26670a03670bc3188d29019c2066fa02670b86508d28670ac166fa19c206709c3670b0406d2349c01810f9ec3670ac612f2349801810f9ed9be8119c291c4b88d25006041ce60d9c26184b48d2466fec166fb19bf6099bfd109234880459bb366fa0366fec8208d2166fe19bf5099bf766fd19bf00d9bf90c623480066fc59bb3099bf8145233fd9bf3059bb366fc99bef0d9bf5104233f80459be8099bf31c3233f40441ce9099bf0182233f0066ecd9beb099bee101233ed9b6c059b6966cf8266db43388cf8⟩, ⟨0x132091043c1fe0e606b03001640a404581ec0ca05101d0098026000, 0x1442c3c0d9cac184bc8d3c001442c3c671c44672a8712e234ec0051079ac36729c612d234e99c7c671e82671ed9c79671d83671f43188d38019c72670e02671f05148d37671e01670e19c77671d43671e84108d36019c71059c78145ac8d35001e6c059c76145a88d34671b19c6a099c6b671a59c640d9c6d0c6234cc0670f96d26099c6c145234c99c68056d266719d9c630d9c6a104234c40670f19c3a670e03671a060ae234c00670f19c3a670e16d26119c65145a48d2f001e75079cc1e6d0d9c62145a08d2e2ecc012ec98bb2a099c340ce234b59c30059c2d670882670c43388d2b⟩, ⟨0x11007e03a01ba0d005e82c014009003f81c40c004d020009c02e000, 0x4bf9414bf912fbe099d300c1f08d704bed014278909e1099d2f0c1f08d6f000673cc616c235b4079d099cf2143888d6c673ac1673a59ce3099cec0ce235a80673881673ac4348d69019ce0672d02673a86508d6801e741e710d9ce7184b48d67019cb4670e82672f4507f235940079c81672ec507e235900672d59c3a099cb9142ac8d63672c41672b99ca3099cb20ce235840672881672c44348d60672bd9cad099cae6729d9ca90d9cb00c6234fc0672819c71099caf194234f99cac059c71672819ca80d9cad101b48d3d⟩, ⟨0x14409884782220f807403441820ae04f02140ea05f028810c058000, 0x1e1d811e1c4786b09aa7b1092369d9da0059d7d675c82676843388da0019d71059da010d235fd9d7e675f02675f59d76675e03675fc3188d7e019d6f675802675f86508d7d675ec1675819d6f675dc3675f0406d235f001810f3e83675ec612f235ec01810f3e99d60119d791c4b88d7a006041e710d9d76184b48d79675ad9d69099d6a675a19d650d9d6c0c6235dc0675859c3c099d6b145235d99d67059c3c675999d640d9d69104235d406758016759c516b235d00079d0167594516a235cd9d31052fb74bee0687a0d2ff1101b48d724befd9d304bf999d2f428ac54bee12fbe4bf9109e142788687a199d310c5848d71⟩, ⟨0x1530a004cc23410a079838c1a00c0056826810e06e02e8118028000, 0x1aeef05aeec6bb8426bbc03388de501aee005aeef10d23791aeed6bbac26bbb1aee56bb9c36bbb83188de301aebd6baf826bbb46508de26bba816baf9aebd6bb9836bbac406d2378400510fbd836bba8612f2378000510fbd9aebe11aee81c4b88dbf001441ce20daee5184b48dbe3aaec13aadceab309ab73109236d9ab2405aaff1649426ac984248db46ac8c116495aaff09ab240ce236cdab226ac842164955d366abfc36ac8c3188db20058771649026ac884072236c459280458771649059230dab21101c48db026e809ae92e1c49af26aac49b33185a3b26ba09ae726bb89aec26cc02d211c9ae40c5948dab26cc4126cc09aec09aab10c1f08daa⟩, ⟨0x11008003bc1be0cc05f82bc13c08f03e01ac0a40420160078020000, 0x1af6c6bdb426bde86508dfa0028a36bdb426bddc50eb237e400700708026bdd450ea237e1af6305af616bce026bd903388df601af3705af6310d237d406bcd1af3509af62194237d000e8bdaf3509af3f143bc8df3006076c826bcf450ea237c9af2a05aefc6bc9426bcb04248df001166ebdaebe0daf2a208237bdaf276bc9026bc99af236bbfc36bca03188dee01af2066ebc26bc9c5148ded6bc88166ebdaf216bbf836bc904108dec0116baf826bc8870c8deb0110738c26bbfc6088dea019baf6bbc826bbf44048de9⟩, ⟨0x12a08d04101ea0e706b831016209a04301c80be04801a008001a000, 0x1bd79470dc26f6805148e386f5ec1470ddbd7a6f5dc36f5f44108e37016edbd7009bd7b1c3238d805bb5e309bd78182238d40470ddbd7309bd76101238d06cf0046cbe1b2e026f4e84248e326bfc016bfb1afe809aff10ce238adafee05af356bfadaf660daff0101b48e2a001e23076c81db30dafee141b08e29003a2f6bcd438fb0dafed141808e286becc16beb1afae09afb510923885afb105af6d6bea5af650dafb3101b48e20001e21076c01db10dafb1141b08dff0038ef6bdb438780dafad141808dfd6bdec16bde5af7009af7c0ce237f006bdbc16bdec4348dfb⟩, ⟨0xe306802f416009704381c00c004d01f00ac032000, 0x6f3f046f351bcdc26f9f03388e666f6e016f6d5bdaa09bdb90ce2399006f6a416f6e04348e636f6d9bdb409bdb56f6b9bdb00dbdb70c62398806f6a1bd7009bdb619423985bdb305bd706f6a1bdaf0dbdb4101b48e60001445bb00dbdb3184bc8e3f001445bb06f5c046f6c4712e238f800515e20dbdae184b48e3d6f68c16f5d1bd7e09bda5109238ec05bb470ddbd700dbda3208238e9bda06f5f426f5fdbd7c6f5e036f6843188e39⟩ ] def tableRRR : Table Block := .branch 13 tableRRRL tableRRRR def tableRR : Table Block := .branch 25 tableRRL tableRRR def tableR : Table Block := .branch 51 tableRL tableRR def table : Table Block := .branch 0x65 tableL tableR def records (i : Nat) : List Nat := PackedNatTable.records table (32 * (i / 16) + i % 16) end PolicyRewriteParametricPacked0 namespace PolicyCircuitPacked1 open PackedNatTable def tableLLLL : Table Block := .leaf #[ ⟨0x6c033818c0be05b02b814c09e04b023810c07e03b01c00d406402f01600a404c023010007403401700a004401c00b0040014004000, 0x66f018019bc7c19ab7819aa7419aa7019a76c19a76819646419636019635c19225818fc55ff547ef4ded9276f45cf5073d3dce8e6f735bd8c6f62dad4a6af251e484321cff463fd14ff043bd0ced42401⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x71d82801c7507f071d01f81c7407d071cc1f01c7307b071981e81c66079070c81e01c32077070b01d81b7d07506cbc1d01b2e07306cac1c81b2b07106ba81c01ae806f06ba01b81ae706d06b9c1b01aba06b06a981a81aa0069069a81a01a6a0670699c1981a3c065068901901a230630688c18819e2061⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x78c83801dfc0bf077f02f81dfb0bd077e82f01dfa0bb077e42e81de80b9076d02e01db40b7076b82d81d790b5075e42d01d760b3075d82c81d350b1074cc2c01d330af074c82b81d320ad074942b01ceb0ab073ac2a81cbb0a9072e82a01cba0a7072dc2981cb70a5072d82901cac0a3072b02881c760a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x7ce04801f380ff07ce03f81f250fd07c943f01f250fb07c903e81f240f907c843e01f210f707c803d81ee00f507b803d01ebf0f307af83c81ebd0f107af43c01ebc0ef07ac03b81eb00ed079f03b01e7c0eb079d83a81e630e90798c3a01e630e7079883981e620e5078fc3901e3f0e3078f83881e320e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xa1c4580286e13f0a1b04f8286813d0a19c4f0286213b0a0f84e8283b1390a0e04e028361370a0c84d828311350a0c04d028231330a0844c81ffd13107fec4c01ff012f07fb04b81feb12d07fac4b01fea12b07f804a81fa612907e984a01fa512707e904981fa312507ddc4901f7112307cf84881f3e121⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xa4dc680293317f0a4bc5f8292e17d0a4b45f0292b17b0a49c5e829231790a4885e029201770a3cc5d828ec1750a3a05d028e81730a39c5c828e61710a3945c028e116f0a3805b828bf16d0a2ec5b028b816b0a2e05a828ac1690a2a85a028a81670a1f4598287b1650a1e459028751630a1d05882872161⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xa8887802a201bf0a7f06f829fb1bd0a7e86f029ec1bb0a79c6e829e71b90a7886e029e21b70a7806d829e01b50a6f46d029b71b30a6c86c829a81b10a6946c029a51af0a6946b829a41ad0a68c6b029a31ab0a5cc6a8296d1a90a5a06a029661a70a59069829631a50a58c69029601a30a4e868829381a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xabb48802ae71ff0ab8c7f82ae21fd0ab847f02abf1fb0aaf87e82abd1f90aaf47e02ab81f70aadc7d82ab41f50aaa47d02aa81f30aa9c7c82aa01f10a9f87c02a7a1ef0a9e07b82a6a1ed0a9947b02a631eb0a8fc7a82a361e90a8d07a02a321e70a8bc7982a2d1e50a8b07902a281e30a89c7882a251e1⟩ ] def tableLLLR : Table Block := .leaf #[ ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xafcc9802bee23f0afac8f82be923d0af988f02be423b0af808e82bbf2390aef88e02bb72370aecc8d82bb02350aeac8d02baa2330ae948c82ba42310adf08c02b7a22f0ade48b82b7422d0adc48b02b6d22b0ada08a82b672290ad9c8a02b632270ad888982b3b2250ac848902aff2230abe48882af3221⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xb2b4a802caa27f0b2a09f82ca627d0b2889f02c7f27b0b1f09e82c7c2790b1e89e02c782770b1d49d82c712750b1bc9d02c6a2730b1a49c82c672710b1949c02c6226f0b1809b82c3e26d0b0cc9b02c3226b0b0b89a82c2a2690b0a09a02c252670b08c9982c212650aff89902bfa2630afe09882bf4261⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xb5d8b802d742bf0b5c8af82d6f2bd0b5b4af02d6a2bb0b598ae82d642b90b4fcae02d392b70b4dcad82d342b50b4c0ad02d2e2b30b490ac82d222b10b480ac02cff2af0b3ecab82cf92ad0b3d8ab02cf62ab0b3ccaa82cf12a90b3b4aa02ceb2a70b2f8a982cbd2a50b2eca902cb82a30b2d0a882cb22a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xb9a8c802e682ff0b988bf82e602fd0b8f8bf02e3a2fb0b8e4be82e362f90b8a8be02e292f70b880bd82dfa2f50b7dcbd02df22f30b7b8bc82dea2f10b79cbc02de32ef0b780bb82dbe2ed0b6e4bb02db62eb0b6ccba82db12e90b6b8ba02daa2e70b6a0b982da32e50b684b902d7e2e30b5f0b882d7a2e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xbcc0d802f2e33f0bca8cf82f2933d0bc88cf02eff33b0bbf0ce82efa3390bbe0ce02ef53370bbb8cd82eed3350bba4cd02ee63330bb8ccc82ee13310baf4cc02ebc32f0baeccb82eaf32d0bab4cb02eab32b0baa4ca82ea63290ba90ca02ea03270b9f8c982e763250b9d4c902e733230b9c4c882e6e321⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xbfd8e802ff237f0bfc4df82ff037d0bfa0df02fe737b0bf90de82fe33790bf84de02fbe3770bee4dd82fb73750bed4dd02fae3730beb4dc82fac3710bea8dc02fa736f0bdf4db82f7c36d0bde0db02f7636b0bdccda82f713690bdacda02f633670bd84d982f3f3650bce4d902f383630bcd4d882f33361⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xe3c4f8038eb3bf0e39cef838e63bd0e38cef038e23bb0e2f8ee838bd3b90e2ecee038b93b70e2e0ed838b43b50e2c8ed038ad3b30e2a4ec838a53b10e290ec0387e3af0e1f0eb838623ad0e0dceb038363ab0e0ccea838323a90e0c4ea0382f3a70e0a4e9838263a50e088e902ffb3a30bfe8e882ffa3a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xe6e508039b83ff0e6c4ff839ab3fd0e6acff039a43fb0e688fe839a23f90e5b0fe039693f70e5a0fd839673f50e58cfd039623f30e580fc8393f3f10e4f4fc0393b3ef0e4e8fb839363ed0e4d0fb039323eb0e4bcfa8392a3e90e4a0fa039213e70e3f0f9838fa3e50e3e4f9038f63e30e3ccf8838f23e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xeab11803aaa43f0ea990f83aa443d0e9f10f03a7a43b0e9dd0e83a734390e9c50e03a6b4370e9a50d83a674350e9910d03a614330e8fd0c83a3d4310e8e10c03a3742f0e8d10b83a2842d0e89d0b039ff42b0e7f50a839fa4290e7d90a039f44270e7b109839ea4250e7a109039e44230e6f908839be421⟩ ] def tableLLL : Table Block := .branch 8 tableLLLL tableLLLR def tableLLRL : Table Block := .leaf #[ ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xeddd2803b7347f0edc91f83b6047d0ecfd1f03b3d47b0ecf11e83b394790ecd91e03b334770ecb11d83b2b4750ec9d1d03b244730ec851c83aff4710ebed1c03afa46f0ebe51b83af146d0ebbd1b03aee46b0eba51a83ae64690eb8d1a03abe4670eaed1983ab94650eadd1903ab44630eac91883ab1461⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xf1c53803c6f4bf0f1b92f83c6c4bd0f1ad2f03c674bb0f1912e83c3c4b90f0d92e03c324b70f0c52d83c2c4b50f0a12d03c254b30f08d2c83c214b10efe92c03bf84af0efd52b83bf14ad0efbd2b03be84ab0ef992a83be44a90eed12a03bb34a70eeb92983ba44a50ee8d2903b7f4a30edf12883b794a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xf4914803d234ff0f3f93f83cf84fd0f3d13f03cf24fb0f3b93e83ced4f90f3b13e03cec4f70f3ad3d83ce84f50f3a13d03ce74f30f3953c83ce14f10f2fd3c03cb94ef0f2d93b83cb44ed0f2c93b03cad4eb0f2b53a83cab4e90f2ad3a03cab4e70f2a53983ca84e50f2953903c7a4e30f1e53883c784e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xf8a15803e2653f0f7fd4f83dfd53d0f7f14f03df953b0f7dd4e83df55390f7d14e03dee5370f7a54d83de95350f69d4d03da25330f6854c83da15310f6814c03d7d52f0f5f54b83d7852d0f5d94b03d7452b0f5c14a83d6e5290f5b54a03d6b5270f5a94983d685250f5954903d645230f5894883d26521⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0xfba56803ee357f0faf55f83eba57d0fad55f03eb157b0fab95e83eab5790faa55e03ea75770fa8d5d83ea15750f9fd5d03e7b5730f9dd5c83e765710f9d55c03e7556f0f9d15b83e7256d0f9b95b03e6d56b0f9b55a83e6c5690f9a15a03e605670f8f95983e3a5650f8e15903e315630f8bd5883e2c561⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x120817803fe65bf0ff956f83fe25bd0fedd6f03fb65bb0fed16e83fa45b90fde56e03f755b70fdbd6d83f6e5b50fdb16d03f6b5b30fd916c83f635b10fd816c03f3a5af0fcd16b83f325ad0fcbd6b03f2b5ab0fca56a83f245a90fbfd6a03efd5a70fbe96983ef65a50fbd16903ef25a30fbbd6883eeb5a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x123e588048f75ff123d57f848f35fd123c17f048ec5fb123a97e848e75f91238d7e048e15f7122f17d848ba5f5122d97d048b45f3122b97c848ac5f1122a57c048a55ef1228d7b848795ed121d97b048745eb121c97a8486d5e9121ad7a048695e71219579848635e512185790483d5e31209578848215e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x127e198049f663f127cd8f849ef63d127b58f049e563b1278d8e849e0639126f18e049ba637126c58d849af635126b18d049a8633126998c849a0631125f98c0497b62f125dd8b8497562d125818b0493f62b124e98a84936629124c58a0492f627124b5898492a6251249d89049256231248d88848fb621⟩ ] def tableLLRR : Table Block := .leaf #[ ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x12ce5a804b3767f12cad9f84b2567d12c8d9f04b2167b12bf99e84aee67912a8d9e04aa0677129f19d84a7b675129d19d04a72673129c19c84a6e671129ad9c04a6566f129899b84a6066d128f99b04a3a66b128d19a84a34669128b99a04a2b667128a59984a286651288999049ff663127f598849fb661⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x12fb1b804be96bf12f99af84be46bd12ef1af04bbb6bb12ee1ae84bb76b912ed9ae04bb56b712ed5ad84bb36b512ebdad04bae6b312eb5ac84bac6b112eb1ac04ba96af12e99ab84ba46ad12e81ab04b7e6ab12de1aa84b756a912dcdaa04b6e6a712dada984b696a512d95a904b636a312cf9a884b3b6a1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x133adc804ce96ff1338dbf84cbf6fd132f5bf04cb56fb132d1be84cb16f913299be04c6b6f7131a9bd84c676f513199bd04c656f313189bc84c616f113181bc04c396ef130ddbb84c346ed130bdbb04c2d6eb13099ba84c236e913089ba04c206e712fe5b984bf56e512fd1b904bf26e312fc5b884bef6e1⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x136edd804db973f136ddcf84db573d136c9cf04dad73b136adce84da1739135f1ce04d76737135d1cd84d6f735135b5cd04d6b733135a1cc84d63731134f5cc04d3a72f134d5cb84d3372d134adcb04d2972b134a1ca84d277291348dca04d2272713481c984cf7725133d1c904cf2723133c1c884ced721⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x139e5e804e7577f139cddf84e6b77d1399ddf04e6577b1398dde84e3f779138f5de04e39777138dddd84e2f775138a9dd04e29773138a5dc84e2577113891dc04dff76f137f9db84df976d137e1db04df576b137c5da84def7691379dda04de576713791d984de376513785d904de0763136fdd884dbc761⟩, ⟨0xa004d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x13d9df804f667bf13d89ef84f3f7bd13ccdef04f317bb13cb9ee84f2a7b913ca1ee04f207b713bf9ed84ef97b513bdded04ef47b313bc9ec84ef07b113bb1ec04eea7af13b99eb84ee17ad13afdeb04ebc7ab13ae1ea84eb67a913ab1ea04ea97a713a9de984ea57a5139fde904e7f7a3139f9e884e7c7a1⟩, ⟨0xa104d825812208c04382080fa07803981b80d206402f81680aa050025811808203c01b80c805a0280118078032014007802800a000, 0x586006080583d7ff160f1ff8583a7fd160ddff058357fb160c9fe8582d7f9160adfe058237f716085fd84ff87f513fd1fd04ff27f313fc9fc84fed7f113fb5fc04fe37ef13ef9fb84fb47ed13ec5fb04fb17eb13ec5fa84fb17e913ec1fa04fb07e713e81f984f7c7e513dd5f904f737e313dc9f884f6e7e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1659c186016594183f164ec183e164d4183d164d4183c164c0183b164bc183a164a018391648c1838163d41837163cc18361638c1835162fc1834162e01833162d41832162d01831162c81830162bc182f162a8182e162a0182d16288182c161e0182b161d8182a161d81829161c81828161c01827161a01826161981825161941824161901823161881822161841821⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1688418a0167f4187f167e4187e167dc187d167d0187c167d0187b167b8187a167a41879167a018781679018771678c1876167801875166f81874166ec1873166ec1872166e81871166d81870166cc186f166c4186e166b8186d166a8186c166a0186b16684186a166801869165f81868165e81867165d41866165d01865165c41864165bc1863165b01862165a41861⟩ ] def tableLLR : Table Block := .branch 8 tableLLRL tableLLRR def tableLL : Table Block := .branch 17 tableLLL tableLLR def tableLRLL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x16ad818e016acc18bf16ac018be16ab818bd16ab418bc16aa018bb16a9018ba16a8818b916a8018b8169f418b7169ec18b6169e018b5169d018b4169c818b3169b018b2169a418b11699c18b01698818af168f418ae168f018ad168f018ac168e018ab168dc18aa168dc18a9168d818a8168c818a7168bc18a6168b018a5168a818a4168a018a31689c18a21688818a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x16da4192016da018ff16d8018fe16cf018fd16ce018fc16cd818fb16cd018fa16ccc18f916cc818f816cb418f716cac18f616c9c18f516c9418f416c8418f316bfc18f216bf818f116bf418f016be018ef16bdc18ee16bcc18ed16bc818ec16bc018eb16bb818ea16bb418e916ba818e816b9018e716b8818e616b8018e516afc18e416af818e316ae018e216adc18e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x170b81960170a4193f17084193e16ff4193d16fe8193c16fe0193b16fd0193a16fc8193916f9c193816f8c193716f88193616f84193516eec193416ee8193316ed8193216ed4193116ec0193016eb8192f16eb4192e16ea0192d16e94192c16e88192b16e80192a16df8192916df4192816df0192716de0192616ddc192516dd0192416dc8192316dbc192216db41921⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x173a819a017398197f17394197e17390197d17380197c172e4197b172d4197a172c41979172c01978172bc1977172ac1976172a81975172a019741729819731728c1972172881971171f81970171f4196f171e4196e171d8196d171c8196c171b4196b171b0196a171981969171901968171881967170ec1966170e81965170e01964170d41963170cc1962170bc1961⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x176b019e0176a019bf1769c19be1769019bd1768819bc175f819bb175e419ba175e019b9175e019b8175d419b7175cc19b6175c019b51759019b41758419b3174f819b2174f019b1174ec19b0174dc19af174d819ae174c819ad174bc19ac174a819ab1749819aa1749419a91749019a81748019a7173f019a6173e419a5173c819a4173c419a3173bc19a2173b019a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x179e01a20179cc19ff179c019fe179bc19fd179b419fc1799c19fb1798c19fa1798c19f91798819f81798419f7178f019f6178ec19f5178e019f4178ac19f31789819f21788819f11788419f0177fc19ef177c019ee177b819ed177a819ec177a419eb177a019ea1778019e9176f819e8176e819e7176e019e6176c819e5176c019e4176b819e3176b819e2176b419e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x17d8c1a6017d841a3f17cfc1a3e17cf41a3d17cdc1a3c17cd01a3b17cc81a3a17cc01a3917cb41a3817cac1a3717ca01a3617c901a3517c881a3417bec1a3317be41a3217bd41a3117bcc1a3017bac1a2f17b9c1a2e17b981a2d17b941a2c17aec1a2b17ae41a2a17ac01a2917abc1a2817ab81a2717ab41a2617ab01a2517aa41a2417aa01a2317a9c1a2217a941a21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1a0c01aa01a0a81a7f1a0981a7e1a0941a7d1a0901a7c1a08c1a7b17fec1a7a17fe41a7917fd81a7817fd01a7717fc81a7617fc41a7517fac1a7417fa81a7317f901a7217f881a7117f801a7017ee81a6f17ee41a6e17edc1a6d17ecc1a6c17eb41a6b17ea81a6a17ea01a6917e941a6817e881a6717df41a6617de41a6517de01a6417dd41a6317db41a6217dac1a61⟩ ] def tableLRLR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1a3b41ae01a3b01abf1a3ac1abe1a3a01abd1a39c1abc1a3881abb1a3841aba1a2fc1ab91a2f41ab81a2ec1ab71a2e01ab61a2d01ab51a2c81ab41a2b01ab31a29c1ab21a2981ab11a2881ab01a2841aaf1a1f01aae1a1ec1aad1a1dc1aac1a1d01aab1a1c81aaa1a1c01aa91a1b41aa81a1ac1aa71a1a01aa61a1901aa51a1881aa41a0e01aa31a0d81aa21a0c81aa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1a7a01b201a7941aff1a7801afe1a6fc1afd1a6f01afc1a6e41afb1a6e01afa1a6d41af91a6a81af81a6a41af71a6a01af61a6941af51a6901af41a68c1af31a68c1af21a68c1af11a6841af01a6801aef1a5fc1aee1a5e81aed1a5e01aec1a5c81aeb1a5b81aea1a5b01ae91a5a01ae81a5941ae71a58c1ae61a5841ae51a4ec1ae41a4e81ae31a4dc1ae21a4b01ae1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1aae81b601aae41b3f1aae01b3e1aac81b3d1aac41b3c1a9f41b3b1a9b41b3a1a9a41b391a99c1b381a99c1b371a9881b361a9801b351a9801b341a8e01b331a8cc1b321a8a41b311a8981b301a8981b2f1a8941b2e1a8881b2d1a8801b2c1a7dc1b2b1a7d81b2a1a7d41b291a7d41b281a7c81b271a7c01b261a7bc1b251a7a81b241a7a81b231a7a41b221a7a01b21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1b1d41ba01b1cc1b7f1b1c81b7e1b1b81b7d1b1b41b7c1b19c1b7b1b1881b7a1b0fc1b791b0f41b781b0ec1b771b0dc1b761b0d41b751b0c81b741b0c01b731b0bc1b721b0ac1b711b0a81b701b0a01b6f1b0981b6e1b08c1b6d1b0801b6c1aff01b6b1afd41b6a1ae841b691adfc1b681adf41b671add81b661aca81b651aca41b641ab8c1b631ab881b621aaf81b61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1b4b41be01b4b41bbf1b4ac1bbe1b4a41bbd1b4981bbc1b4941bbb1b4881bba1b3dc1bb91b3d81bb81b3d41bb71b3c01bb61b3ac1bb51b3a81bb41b3a81bb31b3941bb21b3901bb11b3881bb01b2f81baf1b2f01bae1b2dc1bad1b2cc1bac1b2c01bab1b2bc1baa1b2ac1ba91b2a81ba81b2a01ba71b2981ba61b2941ba51b2881ba41b1ec1ba31b1e81ba21b1dc1ba1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1b7dc1c201b7d81bff1b7d01bfe1b7cc1bfd1b7c41bfc1b7c01bfb1b7a81bfa1b6f41bf91b6e01bf81b6d41bf71b6c41bf61b6bc1bf51b6a41bf41b69c1bf31b6841bf21b6801bf11b5f01bf01b5ec1bef1b5e81bee1b5d81bed1b5ac1bec1b5a41beb1b5801bea1b4f81be91b4f41be81b4ec1be71b4e81be61b4d41be51b4d41be41b4d01be31b4cc1be21b4b41be1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1baf81c601bae81c3f1bae41c3e1bad01c3d1bac01c3c1bab01c3b1baac1c3a1ba941c391ba8c1c381ba881c371b9f81c361b9f41c351b9ec1c341b9e41c331b9e01c321b9d01c311b9c41c301b9b01c2f1b9b01c2e1b9ac1c2d1b9981c2c1b9881c2b1b9841c2a1b8ec1c291b8e41c281b8a41c271b8a01c261b8941c251b8901c241b88c1c231b8841c221b7ec1c21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1bfdc1ca01bfd01c7f1bfcc1c7e1bfc81c7d1bfbc1c7c1bfb41c7b1bfac1c7a1bfa01c791bf8c1c781bf841c771bee41c761bee01c751bedc1c741bec81c731bcf01c721bce01c711bcdc1c701bcd01c6f1bcc01c6e1bcbc1c6d1bcb81c6c1bca81c6b1bc8c1c6a1bbe81c691bbe41c681bbd01c671bbc81c661bbb81c651bbb01c641bb881c631bb841c621bb801c61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1e3d01ce01e3c81cbf1e3c41cbe1e3bc1cbd1e3b01cbc1e3ac1cbb1e3901cba1e3841cb91e2f81cb81e2dc1cb71e2c01cb61e1f81cb51e1f01cb41e1ec1cb31e1c81cb21e1bc1cb11e1ac1cb01e1941caf1e1841cae1e0ec1cad1e0ec1cac1e0e81cab1e0e01caa1e0dc1ca91e0c41ca81e0c01ca71e0b81ca61e0941ca51e08c1ca41bfec1ca31bfe41ca21bfe01ca1⟩ ] def tableLRL : Table Block := .branch 8 tableLRLL tableLRLR def tableLRRL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1e7881d201e7841cff1e7801cfe1e6fc1cfd1e6f41cfc1e6f01cfb1e6e01cfa1e6dc1cf91e6d41cf81e6cc1cf71e6c81cf61e6b81cf51e6ac1cf41e6a41cf31e6881cf21e5fc1cf11e5f81cf01e5f41cef1e5e81cee1e5e41ced1e5bc1cec1e5a81ceb1e5a01cea1e5801ce91e4f81ce81e4f01ce71e4d41ce61e4cc1ce51e4c01ce41e4b01ce31e4a81ce21e3e01ce1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1eaa41d601ea901d3f1ea881d3e1ea841d3d1ea801d3c1e9f81d3b1e9e81d3a1e9d01d391e9c81d381e9b81d371e9b01d361e9941d351e98c1d341e8fc1d331e8f41d321e8d01d311e8c81d301e8bc1d2f1e8b41d2e1e8a01d2d1e8901d2c1e88c1d2b1e8801d2a1e7fc1d291e7f41d281e7e81d271e7d81d261e7cc1d251e7b81d241e7a81d231e7a41d221e7981d21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1ede41da01ede01d7f1edcc1d7e1edc01d7d1edb81d7c1edb01d7b1eda81d7a1ed9c1d791ed801d781ecfc1d771ecec1d761ece01d751ecd41d741eccc1d731ecbc1d721ecb81d711ec941d701ec8c1d6f1ec801d6e1ebe41d6d1ebe01d6c1ebd01d6b1ebc81d6a1ebbc1d691ebb41d681eba41d671eba01d661eaf81d651eae81d641eacc1d631eac41d621eabc1d61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1f0f01de01f0ec1dbf1f0e81dbe1f0e41dbd1f0cc1dbc1f0c01dbb1f0a01dba1f08c1db91f0841db81f0801db71eff81db61efe01db51efd01db41efd01db31efcc1db21efc81db11efb81db01efb41daf1ef801dae1eef41dad1eee01dac1eedc1dab1eec81daa1eec41da91eeb41da81eeb01da71ee9c1da61ee941da51ee841da41edfc1da31edf81da21edf01da1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1f4841e201f4801dff1f3fc1dfe1f3f41dfd1f3ec1dfc1f3e01dfb1f3dc1dfa1f3d41df91f3cc1df81f3c41df71f3b81df61f3a41df51f39c1df41f3801df31f2ec1df21f2e01df11f2d41df01f2cc1def1f2b81dee1f2a01ded1f29c1dec1f2941deb1f28c1dea1f1f41de91f1e41de81f1dc1de71f1c81de61f1b81de51f1b01de41f1901de31f0fc1de21f0f81de1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1f7b01e601f7b01e3f1f7a81e3e1f7a41e3d1f7a01e3c1f7981e3b1f7881e3a1f7801e391f6dc1e381f6d81e371f6c81e361f6c41e351f6c01e341f6901e331f68c1e321f6801e311f5d41e301f5d01e2f1f5cc1e2e1f5bc1e2d1f59c1e2c1f5841e2b1f5841e2a1f4fc1e291f4f41e281f4ec1e271f4d41e261f4d01e251f4c41e241f4b41e231f4ac1e221f48c1e21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1fb941ea01faf41e7f1fae41e7e1fadc1e7d1fadc1e7c1fac81e7b1fac81e7a1fac01e791faa01e781fa8c1e771f9e41e761f9e01e751f9dc1e741f9d81e731f9d81e721f9d81e711f9d41e701f9d41e6f1f9941e6e1f8fc1e6d1f8e81e6c1f8e01e6b1f8d41e6a1f8bc1e691f8b01e681f8a81e671f8981e661f8941e651f8881e641f7dc1e631f7d81e621f7d41e61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x1fec81ee01fec41ebf1feb01ebe1feac1ebd1fe9c1ebc1fe981ebb1fe8c1eba1fe841eb91fdfc1eb81fde01eb71fdd81eb61fdcc1eb51fdc41eb41fdb81eb31fdb01eb21fda01eb11fd901eb01fcfc1eaf1fce01eae1fcc81ead1fcb81eac1fcb81eab1fcb41eaa1fca41ea91fca01ea81fca01ea71fc9c1ea61fc901ea51fbd41ea41fbc01ea31fbb01ea21fb981ea1⟩ ] def tableLRRR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x221d01f20221c41eff221b81efe2219c1efd221941efc2218c1efb221881efa221841ef9220dc1ef8220c81ef7220c41ef6220b81ef5220b01ef4220ac1ef3220981ef22208c1ef1220841ef01fffc1eef1fff81eee1ffe81eed1ffe41eec1ffdc1eeb1ffd41eea1ffc81ee91ffb81ee81ffb01ee71ff9c1ee61ff881ee51fef41ee41fedc1ee31fedc1ee21fecc1ee1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x224e81f60224e01f3f224d41f3e224c01f3d224b81f3c224901f3b224901f3a223f81f39223f01f38223d01f37223cc1f36223c41f35223c01f34223bc1f33223b41f32223b01f31223801f30222f81f2f222f41f2e222e01f2d222d81f2c222d41f2b222c81f2a222c01f29222b41f28222a41f272229c1f26222881f25222801f24221fc1f23221ec1f22221dc1f21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x228f01fa0228e41f7f228d41f7e228cc1f7d228c81f7c228bc1f7b228b41f7a2289c1f792288c1f78228841f77227e81f76227e01f75227d01f74227c01f73227b41f72227b01f71227981f70227901f6f226f81f6e226e81f6d226e01f6c226c81f6b226c41f6a226b81f692268c1f68225b01f67225901f662258c1f65225881f64224fc1f63224f81f62224f01f61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x22bf81fe022bec1fbf22be41fbe22bd41fbd22bd01fbc22bb41fbb22ba81fba22b981fb922b841fb822afc1fb722af41fb622ae01fb522ad01fb422acc1fb322ac81fb222ac41fb122ab41fb022ab01faf22aa81fae22aa41fad22a9c1fac22a941fab22a901faa22a841fa9229e81fa8229dc1fa7229d01fa6229c01fa5229ac1fa4229a81fa3229981fa2228f81fa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x22ebc282022eb41fff22ea81ffe22e941ffd22e901ffc22df81ffb22df01ffa22de81ff922de01ff822ddc1ff722dd81ff622dc81ff522dc41ff422db81ff322db01ff222da01ff122d8c1ff022d881fef22cf81fee22cf01fed22ce41fec22cdc1feb22cd41fea22cc41fe922cbc1fe822cac1fe722ca41fe622c9c1fe522c981fe422c941fe322c841fe222c801fe1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x231a0286023194283f2318c283e230fc283d230f8283c230f4283b230f4283a230f02839230dc2838230cc2837230bc2836230ac28352309428342308c283322ff4283222ff0283122fe4283022fe0282f22fdc282e22fcc282d22fc4282c22fb4282b22fb0282a22f9c282922f8c282822f88282722ef0282622ee0282522ee0282422edc282322ed0282222ec82821⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x234b428a0233e8287f233d8287e233d0287d233c4287c233bc287b233b0287a233a028792339c2878233982877232f42876232e42875232e02874232dc2873232c42872232c02871232b02870232ac286f232a0286e23298286d23290286c2328c286b231fc286a231f02869231e02868231d82867231d02866231cc2865231c82864231b82863231b42862231a82861⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x23be028e023bdc28bf23bd828be23ab428bd23aa828bc23aa828bb239c428ba239c028b92399828b8238fc28b7238f828b6238f028b5238e028b4238c028b3238b828b2238b028b1238a828b0237bc28af237a828ae237a028ad2379028ac2378828ab236f828aa2368028a9235fc28a8235b828a7235a428a62359c28a52359028a4234f828a3234e428a2234c828a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x23ef8292023ef428ff23ef028fe23ee428fd23ee028fc23edc28fb23ed428fa23ec028f923eac28f823ea428f723e9c28f623e9028f523df428f423dd028f323da028f223d9428f123d8828f023d8028ef23cf828ee23cf428ed23cec28ec23ce428eb23cd828ea23cd028e923cc428e823cb028e723ca828e623c8c28e523c8828e423bfc28e323bf428e223be428e1⟩ ] def tableLRR : Table Block := .branch 8 tableLRRL tableLRRR def tableLR : Table Block := .branch 17 tableLRL tableLRR def tableL : Table Block := .branch 34 tableLL tableLR def tableRLLL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x262ec2960262e0293f262d4293e262c4293d262bc293c262b4293b262ac293a262a82939262842938261f42937261dc2936261d02935261b02934261a829332619c29322618c2931261882930260e0292f260d4292e260cc292d23ffc292c23ff8292b23ff0292a23fd8292923fd4292823fc8292723fb8292623fb0292523f90292423f88292323f84292223f802921⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x266ec29a0266e4297f266cc297e266b8297d266ac297c266a4297b2669c297a266902979266882978265f82977265f02976265c82975265b82974265b42973264e42972264cc2971264cc2970264c8296f264c4296e264c0296d264b8296c264b0296b264a8296a263d42969263c82968263c42967263bc2966263b42965263ac2964263a029632638c2962263842961⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x26ab029e026a9829bf26a8829be26a8429bd269ec29bc269dc29bb269d429ba269cc29b9269bc29b8269b429b7269a029b62698c29b52698429b4268f829b3268e829b2268e029b1268c029b0268b029af268ac29ae2689829ad2688c29ac2688429ab267fc29aa267f029a9267ec29a8267d829a7267d029a6267c829a5267b829a4267a029a32679c29a22678029a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x26da82a2026da029ff26d9829fe26d8c29fd26d8829fc26d8029fb26cf429fa26ce429f926cdc29f826cc829f726cc029f626cb429f526ca429f426c9c29f326bf429f226be829f126be029f026bd829ef26bc429ee26bbc29ed26bb429ec26ba029eb26b9829ea26b8c29e926b8829e826b8029e726af429e626ae429e526adc29e426acc29e326ac029e226ab829e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2729c2a602728c2a3f272842a3e271e02a3d271902a3c270bc2a3b270b42a3a270a82a39270a02a38270942a37270842a3626ffc2a3526fe82a3426fdc2a3326fd02a3226fc82a3126fc02a3026fb02a2f26fa82a2e26f9c2a2d26f8c2a2c26f842a2b26ee82a2a26ed42a2926ec42a2826ec02a2726e9c2a2626e942a2526e8c2a2426de42a2326de02a2226dcc2a21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x277f42aa0277e02a7f277dc2a7e277d02a7d277a02a7c276f42a7b276f02a7a276d42a79276cc2a78276b82a77276b42a762769c2a75276942a74276882a73275f82a72275f02a71275e02a70275cc2a6f275b82a6e275802a6d274fc2a6c274d42a6b274cc2a6a274b42a69274ac2a682749c2a67274942a66274882a65273f02a64272b42a63272b02a62272a82a61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x27c982ae027c8c2abf27c802abe27bd02abd27bc42abc27bb42abb27bac2aba27b902ab927b8c2ab827b882ab727af42ab627aec2ab527ae02ab427acc2ab327ac42ab2279b82ab1279ac2ab0279a82aaf279a82aae279a42aad2799c2aac279902aab279882aaa278fc2aa9278e82aa8278e02aa7278b02aa6278a82aa52789c2aa4278982aa3278942aa22788c2aa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x27fdc2b2027fd82aff27fbc2afe27fa82afd27f942afc27f882afb27ef02afa27edc2af927ed82af827ed82af727ec42af627eb42af527eac2af427ea42af327e9c2af227e942af127dfc2af027df42aef27df02aee27dec2aed27ddc2aec27db02aeb27d9c2aea27d982ae927d842ae827cf42ae727cec2ae627cdc2ae527cc82ae427cb02ae327cac2ae227ca42ae1⟩ ] def tableRLLR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2a58c2b602a5882b3f2a4f42b3e2a4dc2b3d2a4d02b3c2a4c82b3b2a4b42b3a2a4b02b392a4b02b382a4a82b372a4982b362a4902b352a4882b342a4802b332a3b02b322a3902b312a3842b302a3802b2f2a2e02b2e2a2c02b2d2a2b42b2c2a2a02b2b2a29c2b2a2a1e42b292a1d42b282a1d02b272a1cc2b262a1c02b252a1bc2b242a1b82b232a1a82b222a08c2b21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2a8902ba02a8802b7f2a7f82b7e2a7ec2b7d2a7e42b7c2a7dc2b7b2a7d82b7a2a7c42b792a7c02b782a7b42b772a7a82b762a7a02b752a7982b742a78c2b732a6fc2b722a6f42b712a6e02b702a6d02b6f2a6cc2b6e2a6ac2b6d2a6ac2b6c2a6902b6b2a6842b6a2a6802b692a5f82b682a5f42b672a5ec2b662a5d82b652a5cc2b642a5bc2b632a5a82b622a5a42b61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2acf42be02ace42bbf2acdc2bbe2ac882bbd2ac802bbc2abec2bbb2abdc2bba2abc42bb92abbc2bb82aba42bb72aba02bb62ab942bb52ab902bb42ab8c2bb32ab882bb22aad02bb12aa982bb02aa942baf2a9f82bae2a9f02bad2a9ec2bac2a99c2bab2a9942baa2a9882ba92a9842ba82a8f82ba72a8cc2ba62a8c82ba52a8bc2ba42a8b82ba32a8a42ba22a8a02ba1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2b0fc2c202b0dc2bff2b0d82bfe2b0d02bfd2b0c82bfc2b0b42bfb2b0ac2bfa2b0882bf92b0842bf82b0842bf72b0802bf62aff82bf52aff42bf42afe82bf32afdc2bf22afd82bf12afcc2bf02afc82bef2afbc2bee2afb82bed2af842bec2aef82beb2aed02bea2aec82be92aebc2be82aea02be72adc42be62adc02be52adb02be42ada42be32ad802be22acfc2be1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2b49c2c602b48c2c3f2b4882c3e2b4802c3d2b3f02c3c2b3dc2c3b2b3d82c3a2b3d42c392b3c82c382b3b42c372b3a82c362b3982c352b3902c342b3842c332b2f42c322b2ec2c312b2d82c302b2cc2c2f2b2b02c2e2b2a82c2d2b2a02c2c2b2842c2b2b1fc2c2a2b1f42c292b1e82c282b1e02c272b1d82c262b1c82c252b1c02c242b1ac2c232b1942c222b1802c21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2b8942ca02b88c2c7f2b8882c7e2b7dc2c7d2b7cc2c7c2b7c42c7b2b7c42c7a2b7b02c792b7b02c782b78c2c772b6f82c762b6d02c752b6c82c742b6bc2c732b6bc2c722b6bc2c712b6b82c702b6b82c6f2b6b42c6e2b5f42c6d2b5c82c6c2b5bc2c6b2b5b82c6a2b5b02c692b5a42c682b5902c672b5882c662b4c82c652b4c02c642b4b42c632b4ac2c622b4a02c61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2bcc82ce02bcc42cbf2bcbc2cbe2bca82cbd2bca02cbc2bc9c2cbb2bc842cba2bc802cb92bbf82cb82bbec2cb72bbe42cb62bbd02cb52bbc42cb42bbac2cb32bb9c2cb22bb882cb12bb842cb02baf42caf2bad42cae2bac42cad2ba842cac2b9fc2cab2b9f82caa2b9ac2ca92b9a02ca82b9982ca72b9942ca62b9802ca52b8fc2ca42b8b82ca32b8b02ca22b8a02ca1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2e1e02d202e1d42cff2e1cc2cfe2e1c82cfd2e1bc2cfc2e1b82cfb2e0bc2cfa2e0a82cf92e0a02cf82e0942cf72bffc2cf62bff42cf52bf902cf42becc2cf32beb82cf22bea82cf12be9c2cf02be842cef2bdfc2cee2bde42ced2bde02cec2bdd02ceb2bdcc2cea2bdcc2ce92bdc82ce82bdc42ce72bda82ce62bd942ce52bd8c2ce42bcfc2ce32bcf42ce22bcd82ce1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2e6882d602e6842d3f2e6802d3e2e5f82d3d2e5f42d3c2e5ec2d3b2e5dc2d3a2e5d02d392e5982d382e5902d372e4f82d362e4f42d352e4f02d342e4ec2d332e4dc2d322e4d82d312e4d42d302e4bc2d2f2e4a02d2e2e4982d2d2e4882d2c2e4802d2b2e3c42d2a2e3b42d292e3ac2d282e3a82d272e3a02d262e2942d252e2882d242e1f82d232e1f42d222e1f02d21⟩ ] def tableRLL : Table Block := .branch 8 tableRLLL tableRLLR def tableRLRL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2e9b82da02e98c2d7f2e9882d7e2e9842d7d2e8f02d7c2e8d82d7b2e8982d7a2e8842d792e7f82d782e7ec2d772e7d42d762e7cc2d752e7c82d742e7b82d732e7b02d722e7ac2d712e7a42d702e7942d6f2e78c2d6e2e6f42d6d2e6e42d6c2e6e02d6b2e6d42d6a2e6cc2d692e6c82d682e6c82d672e6bc2d662e6ac2d652e6a82d642e6a42d632e6a42d622e6882d61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2ecd82de02ecc02dbf2ecbc2dbe2ec982dbd2ec802dbc2ec802dbb2ebec2dba2ebec2db92ebe82db82ebc42db72ebac2db62eb982db52eb8c2db42eb802db32eb802db22eb802db12eb802db02eafc2daf2eafc2dae2eaf82dad2eaf42dac2eaf42dab2eab42daa2ea9c2da92ea882da82ea802da72e9f02da62e9e42da52e9e42da42e9d42da32e9c82da22e9c42da1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2effc2e202eff42dff2eff02dfe2efe82dfd2efdc2dfc2efcc2dfb2efc82dfa2efc42df92efbc2df82efa82df72ef942df62ef902df52eefc2df42eef02df32eee82df22eedc2df12eec82df02eec42def2eeb42dee2ee842ded2ee802dec2edf82deb2ede42dea2edd02de92edcc2de82edc02de72edbc2de62ed8c2de52ed842de42ed802de32ecf02de22ece82de1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2f4802e602f3f02e3f2f3e82e3e2f3d82e3d2f3c42e3c2f3bc2e3b2f3b42e3a2f3a02e392f3882e382f3882e372f3842e362f2ec2e352f2d82e342f2d02e332f2cc2e322f2a42e312f1d42e302f1c02e2f2f1b82e2e2f1b02e2d2f1a82e2c2f1902e2b2f0fc2e2a2f0f42e292f0f42e282f0e02e272f0dc2e262f0d02e252f0a42e242f0a02e232f09c2e222f08c2e21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2f8c02ea02f8b42e7f2f8a42e7e2f89c2e7d2f8842e7c2f8802e7b2f7e42e7a2f7a42e792f6d82e782f6cc2e772f6c42e762f6bc2e752f6b82e742f6a42e732f69c2e722f68c2e712f6842e702f5cc2e6f2f5c82e6e2f5b82e6d2f5ac2e6c2f5a42e6b2f5942e6a2f5882e692f5802e682f4f82e672f4ec2e662f4dc2e652f4d42e642f4c02e632f4ac2e622f4982e61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x2fcc42ee02fcbc2ebf2fc942ebe2fc882ebd2fc802ebc2fbf82ebb2fbf02eba2fbd82eb92fbb82eb82fbac2eb72fb982eb62fb902eb52fb882eb42faf42eb32faf02eb22fae82eb12fab42eb02fa9c2eaf2fa8c2eae2f9f42ead2f9f02eac2f9dc2eab2f9c82eaa2f9b42ea92f99c2ea82f9942ea72f98c2ea62f9882ea52f9842ea42f9802ea32f8e42ea22f8c82ea1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x321f42f20321ec2eff321d82efe321a82efd321a02efc321942efb321842efa320fc2ef9320e82ef8320dc2ef7320d42ef6320cc2ef5320c02ef4320b82ef3320a02ef2320902ef1320882ef02fff82eef2ffe82eee2ffdc2eed2ffd42eec2ffc02eeb2ffb02eea2ffac2ee92ffa02ee82fef42ee72fdf82ee62fdf42ee52fdf02ee42fddc2ee32fd9c2ee22fcd02ee1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x326a02f603268c2f3f326882f3e325f82f3d325f02f3c325d82f3b325c82f3a325c02f393259c2f38325942f37325842f36324fc2f35324e02f34324d82f33324c02f32323e02f31323dc2f30323d42f2f323d02f2e323cc2f2d323c82f2c323c42f2b323bc2f2a323ac2f29323a82f283239c2f27322cc2f26322b42f25322b42f24322982f23322902f22322842f21⟩ ] def tableRLRR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x32afc2fa032ad02f7f32ac42f7e32ab82f7d32ab42f7c32aac2f7b329f02f7a329902f79328e82f78328d42f77328ac2f76328902f753288c2f743288c2f73328882f72328882f71328842f70328802f6f327e02f6e327c82f6d327c02f6c327ac2f6b327a82f6a327902f69327882f68326fc2f67326ec2f66326e42f65326d02f64326c42f63326ac2f62326a42f61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x32ea82fe032e9c2fbf32df02fbe32dec2fbd32de82fbc32dd02fbb32dcc2fba32dc82fb932dc82fb832db82fb732da82fb632da42fb532d9c2fb432d902fb332d882fb232d842fb132cf02fb032ce82faf32cd82fae32cd02fad32cac2fac32c942fab32bf82faa32bf42fa932be42fa832bd02fa732bc82fa632ba42fa532ba02fa432b9c2fa332b942fa232b902fa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x332803820331f02fff331ec2ffe331d82ffd331c82ffc331b42ffb331b02ffa3319c2ff9331942ff8331842ff7330f42ff6330dc2ff5330d42ff4330bc2ff3330b82ff2330a82ff1330a02ff0330902fef330802fee32ff82fed32fec2fec32fd82feb32fd02fea32fa02fe932ef02fe832ef02fe732ee42fe632ed02fe532ecc2fe432ec42fe332ebc2fe232eac2fe1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x335b43860335a4383f335a0383e33580383d334f8383c334f0383b334d4383a334cc3839334bc3838334b43837334a03836334983835333f03834333ec3833333dc3832333d03831333c03830333a8382f33398382e33384382d332ec382c332dc382b332d4382a332c83829332c43828332b43827332a03826332983825332903824332883823332883822332843821⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3398438a033980387f338f0387e338ec387d338e4387c338d8387b338d0387a338c03879338bc3878338a83877338943876338883875337b03874337a03873337943872337883871337803870336f0386f336ec386e336d4386d336cc386c336bc386b336b4386a3369c38693369438683368c3867336803866335e43865335e03864335d03863335c83862335bc3861⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3618438e0360e038bf360dc38be360dc38bd360d838bc360c038bb3608438ba3608038b933ff038b833f9838b733f8438b633efc38b533eec38b433ee438b333ec438b233ea838b133e9c38b033e9438af33e8438ae33e8038ad33cbc38ac33cb838ab339f438aa339dc38a9339d438a8339cc38a7339b438a6339b038a5339a838a43399c38a33399438a23398c38a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x364f03920364c438ff363d838fe363d438fd363c838fc363c438fb363c038fa363b438f9363b038f8363a838f7363a038f63639838f5362fc38f4362f438f3362d438f2362cc38f1362c838f0362c438ef362b838ee362b438ed362ac38ec362a438eb362a038ea3628438e9361f838e8361ec38e7361dc38e6361d038e5361a838e43619c38e33619038e23618c38e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x368ac396036898393f36884393e367f8393d367f0393c367d8393b367bc393a367b43939367ac3938367a83937367a43936367943935367903934366fc3933366f03932366e83931366d83930366d4392f366b4392e366a8392d3669c392c36694392b365fc392a365f43929365e43928365d03927365c83926365b03925365a03924365983923365803922364fc3921⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x36bd039a036bc0397f36bb8397e36ba4397d36b9c397c36b90397b36afc397a36af8397936ad4397836ad0397736abc397636aac397536aa8397436a9c397336a8c397236a843971369e03970369dc396f369d8396e369d0396d369cc396c369c8396b369bc396a369b43969369b039683699c3967369803966368dc3965368cc3964368c43963368b83962368b03961⟩ ] def tableRLR : Table Block := .branch 8 tableRLRL tableRLRR def tableRL : Table Block := .branch 17 tableRLL tableRLR def tableRRLL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x370e039e0370c839bf370b839be370b439bd370b039bc370a439bb370a439ba370a039b93709439b83708439b736ff839b636ff439b536fec39b436fe839b336fe039b236fd839b136fc039b036f8839af36f8439ae36ef039ad36edc39ac36ed039ab36dd439aa36cd839a936cd439a836ccc39a736cc039a636cb439a536c9839a436c8839a336c8439a236bd839a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3a5d43a203a59c39ff3a58c39fe3a58439fd3a4e039fc3a4d039fb3a39c39fa3a38839f93a2e839f83a2e039f73a29839f63a1c039f53a1b839f43a1ac39f33a19c39f23a19439f13a18039f03a0f039ef3a0dc39ee3a0d039ed3a0a039ec37fd839eb37fd839ea37fac39e937fa439e837f8c39e737efc39e637ee839e53719039e43718839e3370f839e2370f039e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3acf03a603ac843a3f3abd43a3e3abd03a3d3abb03a3c3abac3a3b3aba43a3a3aaf43a393a9f43a383a9d83a373a9d03a363a9cc3a353a9a43a343a9a03a333a9883a323a9803a313a8e83a303a8e43a2f3a8e03a2e3a8d43a2d3a8d43a2c3a8d03a2b3a8cc3a2a3a8b43a293a8b03a283a8a03a273a7fc3a263a6bc3a253a6a83a243a6803a233a5f83a223a5e03a21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3b4f43aa03b4f03a7f3b4e03a7e3b4c83a7d3b4983a7c3b3a43a7b3b3a03a7a3b2e83a793b2d83a783b2d43a773b2a43a763b2a03a753b2983a743b1fc3a733b1f43a723b1f03a713b1f03a703b1ec3a6f3b1d03a6e3b1c03a6d3b1bc3a6c3add83a6b3add43a6a3adcc3a693adc83a683adc03a673adb83a663adb43a653adac3a643ada83a633ad9c3a623ad843a61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3bcf83ae03bcf43abf3bcec3abe3bce83abd3bcbc3abc3bcb83abb3bbe03aba3bbd83ab93bbd43ab83bb983ab73bb943ab63bb843ab53baf43ab43b8803ab33b7e43ab23b7cc3ab13b7bc3ab03b7ac3aaf3b7a83aae3b6803aad3b5fc3aac3b5f03aab3b5e43aaa3b5d83aa93b5d43aa83b5c83aa73b5b43aa63b5983aa53b5943aa43b5903aa33b58c3aa23b4f83aa1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3e9ec3b203e9e83aff3e9e03afe3e9d43afd3e9c43afc3e9bc3afb3e9a83afa3e9a03af93e99c3af83e1fc3af73e1f43af63e1dc3af53e1c03af43e1b83af33e1a03af23e1903af13e1883af03bef43aef3beec3aee3bedc3aed3bed43aec3bec43aeb3beb43aea3bea83ae93be943ae83bdfc3ae73bdd43ae63bdd03ae53bd943ae43bd883ae33bd803ae23bcfc3ae1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x3efe03b603efb43b3f3ef943b3e3ef903b3d3ef883b3c3ef843b3b3eee43b3a3eed83b393eec43b383eec03b373eeb03b363eea83b353eea43b343ee903b333ee883b323edfc3b313edec3b303ede43b2f3edbc3b2e3eda03b2d3ed843b2c3ec903b2b3ec803b2a3ebec3b293ebe03b283ebd83b273ebd03b263ebcc3b253ebc83b243ebc03b233ebbc3b223e9fc3b21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x423ec3ba0423d43b7f420a83b7e420a43b7d420a03b7c420943b7b3fffc3b7a3fff03b793fed83b783fec03b773febc3b763feb03b753fe983b743fcc83b733fcc43b723fcb43b713fca83b703f8f83b6f3f8f03b6e3f8ec3b6d3f7983b6c3f0f03b6b3f0e83b6a3f0d83b693f0cc3b683f0c03b673f0b83b663f0a03b653f0903b643f0883b633eff03b623efec3b61⟩ ] def tableRRLR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x429983be0429903bbf428f03bbe428e03bbd428d43bbc428c43bbb428bc3bba428ac3bb9428a03bb8428983bb7428903bb6428803bb5427f83bb4427dc3bb3427c83bb2427c43bb1427bc3bb0427b83baf426c03bae426ac3bad426ac3bac426a83bab4268c3baa426843ba9425e43ba8425e03ba7425d83ba6425d43ba5425d03ba4425c83ba3425c43ba2424dc3ba1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x42d943c2042d8c3bff42d843bfe42d803bfd42cf03bfc42cec3bfb42ce43bfa42cb03bf942ca03bf842c9c3bf742c803bf642bfc3bf542bec3bf442be83bf342be03bf242bd83bf142b983bf042ae43bef42ad03bee42ac03bed42ab83bec42aa43beb42a9c3bea42a943be942a8c3be842a883be7429f43be6429e03be5429d03be4429bc3be3429a43be24299c3be1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x433943c60432fc3c3f432ec3c3e432e43c3d432bc3c3c432ac3c3b432a83c3a4329c3c39431f03c38430f43c37430f03c36430ec3c35430e03c34430dc3c33430d43c3242fbc3c3142fa83c3042f803c2f42ee43c2e42ee03c2d42ee03c2c42edc3c2b42eb43c2a42ea03c2942e883c2842e843c2742dfc3c2642ddc3c2542dcc3c2442dc83c2342db43c2242d983c21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x43ce03ca043cdc3c7f43cbc3c7e43ca83c7d43c983c7c43c943c7b43c8c3c7a43c803c7943bf43c7843aec3c7743ae83c7643ad43c75437b43c74437a43c73437a03c72437883c71436fc3c70436a03c6f435f83c6e435e83c6d435b43c6c435a83c6b434d03c6a434c03c69434ac3c684349c3c67434903c66433fc3c65433b83c64433b03c63433a43c624339c3c61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4688c3ce0468883cbf465ac3cbe464f43cbd463e43cbc463d43cbb463c83cba463bc3cb9462ec3cb8461803cb7460ec3cb6460c03cb5460bc3cb4460843cb343ff43cb243fd83cb143fd03cb043fc43caf43fb03cae43fa83cad43f943cac43ed03cab43ec03caa43eb03ca943ea83ca843e9c3ca743e983ca643df43ca543de43ca443dd43ca343cf83ca243ce43ca1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x476ac3d20474fc3cff474dc3cfe474ac3cfd473d03cfc473bc3cfb473b03cfa473883cf9473803cf846ee43cf746eb83cf646cc03cf546cb43cf446bf03cf346bd43cf246bd03cf146aac3cf046aa43cef4699c3cee469983ced468fc3cec468f43ceb468ec3cea468e83ce9468d83ce8468d43ce7468cc3ce6468c03ce5468b83ce4468a03ce3468a03ce24689c3ce1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4a3883d604a3803d3f4a2e83d3e47e883d3d47da43d3c47ca03d3b47c943d3a47c8c3d3947c843d3847b803d3747aec3d3647ae43d3547ad83d3447ac03d3347ab83d3247ab43d31479b83d30479a43d2f4799c3d2e479983d2d479903d2c4798c3d2b478ec3d2a478e43d29478dc3d28478a83d27478a03d26478983d25478883d24478803d23477c83d22476d83d21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4adf43da04ade83d7f4adc43d7e4adbc3d7d4adac3d7c4ada43d7b4acf83d7a4ace03d794acc43d784acbc3d774acb43d764ac903d754ac883d744abfc3d734abf43d724abf03d714abe03d704abd43d6f4abc83d6e4abc03d6d4abb03d6c4abac3d6b4ab8c3d6a4aad03d694aac83d684a4c03d674a4a83d664a4983d654a3c83d644a3c03d634a3b43d624a39c3d61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4b5c03de04b5b83dbf4b5a83dbe4b5a43dbd4b5843dbc4b4f83dbb4b4ec3dba4b2943db94b2843db84b1fc3db74b1f03db64b1d43db54b1cc3db44b0f43db34b0e43db24b0cc3db14b0b43db04afb83daf4afb03dae4afa43dad4af943dac4af8c3dab4af883daa4aee43da94aecc3da84aebc3da74aeb83da64aea83da54aea43da44ae903da34ae883da24adfc3da1⟩ ] def tableRRL : Table Block := .branch 8 tableRRLL tableRRLR def tableRRRL : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4b89c3e204b8903dff4b8883dfe4b7fc3dfd4b7f43dfc4b7e43dfb4b7e03dfa4b7c43df94b7b43df84b7a83df74b7a03df64b7983df54b7983df44b7943df34b7903df24b7803df14b6f43df04b6e83def4b6e03dee4b6d03ded4b6cc3dec4b6c83deb4b6b03dea4b6a03de94b6943de84b68c3de74b6843de64b5fc3de54b5e43de44b5e03de34b5d43de24b5cc3de1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4bea43e604be9c3e3f4be903e3e4be8c3e3d4be883e3c4bdfc3e3b4bdbc3e3a4bdb83e394bda83e384bd9c3e374bcbc3e364bca83e354bca03e344bc883e334bbf83e324bbf03e314bbd83e304bbd43e2f4bbc83e2e4bb9c3e2d4baa03e2c4ba9c3e2b4ba983e2a4ba8c3e294ba883e284ba843e274b8dc3e264b8d83e254b8c83e244b8c03e234b8b83e224b8a03e21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4e28c3ea04e2843e7f4e1f43e7e4e1ec3e7d4e1c83e7c4e1b03e7b4e1943e7a4e1903e794e1803e784e0fc3e774e0ec3e764e0e43e754e0c03e744e0bc3e734e0b83e724e0b03e714e0b03e704e0ac3e6f4e0a83e6e4e09c3e6d4e0943e6c4e0903e6b4e0883e6a4e0843e694bfe03e684befc3e674bee03e664bec83e654bec83e644bec43e634bec03e624beb43e61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4e5c03ee04e5bc3ebf4e5b43ebe4e5ac3ebd4e5a43ebc4e5983ebb4e5843eba4e4fc3eb94e4e43eb84e4d43eb74e4d03eb64e4c83eb54e4b83eb44e4b03eb34e4a03eb24e4883eb14e3f03eb04e3e83eaf4e3d83eae4e3c83ead4e3b83eac4e3a03eab4e3843eaa4e3803ea94e2f03ea84e2e83ea74e2d43ea64e2bc3ea54e2b83ea44e2ac3ea34e2a43ea24e2a03ea1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4ebb03f204ebac3eff4eb943efe4eb8c3efd4eb803efc4eaf03efb4eae83efa4eac83ef94eab43ef84eab03ef74ea9c3ef64e9f43ef54e9e83ef44e9943ef34e9903ef24e9803ef14e8f43ef04e8843eef4e7f43eee4e7f03eed4e7dc3eec4e7d43eeb4e7bc3eea4e7ac3ee94e7a43ee84e78c3ee74e7883ee64e6fc3ee54e6d03ee44e5d43ee34e5d03ee24e5cc3ee1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4efac3f604efa43f3f4ef9c3f3e4ef943f3d4ef8c3f3c4ef803f3b4eeec3f3a4eee43f394eed03f384edfc3f374edf03f364edec3f354ede43f344edd83f334edd43f324edcc3f314edb03f304eda03f2f4ed903f2e4ed883f2d4ed843f2c4ece43f2b4ece43f2a4ecc83f294ecb83f284eca03f274ec9c3f264ec903f254ebfc3f244ebf83f234ebd83f224ebbc3f21⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4f9e83fa04f9e03f7f4f9d83f7e4f9c83f7d4f9a83f7c4f2d03f7b4f1e03f7a4f1d83f794f1cc3f784f1b43f774f1ac3f764f1a83f754f19c3f744f1983f734f18c3f724f0e03f714f0dc3f704f0d83f6f4f0cc3f6e4f0c83f6d4f0b83f6c4f0a03f6b4f09c3f6a4f0843f694effc3f684efe43f674efe03f664efd43f654efcc3f644efc83f634efc03f624efb03f61⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x4fec03fe04febc3fbf4feb03fbe4fe843fbd4fd883fbc4fd843fbb4fd803fba4fcf43fb94fcf03fb84fce83fb74fcdc3fb64fcc03fb54fcbc3fb44fcb03fb34fcac3fb24fca43fb14fc8c3fb04fbf43faf4fbf03fae4fbcc3fad4fbc03fac4fbbc3fab4fbb43faa4fbac3fa94fba43fa84fb9c3fa74fb983fa64faf83fa54fa943fa44fa843fa34fa803fa24f9ec3fa1⟩ ] def tableRRRR : Table Block := .leaf #[ ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x52aa84820529cc3fff529c03ffe529883ffd528fc3ffc528f43ffb528ec3ffa528e83ff9528cc3ff8528b43ff7528ac3ff6528a03ff5528843ff4527983ff3527943ff2527883ff1526b43ff0526a83fef5269c3fee521d83fed4fff03fec4ffe83feb4ffe03fea4ffd43fe94ffc03fe84ffb83fe74ffa43fe64ff903fe54ff883fe44fef03fe34fee03fe24fed83fe1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x5319448605318c483f530fc483e530c4483d530b4483c530b0483b530a8483a5309c483953094483853084483752fe4483652fe0483552fd4483452fcc483352fc4483252fac483152fa4483052eec482f52edc482e52ed8482d52ecc482c52eb4482b52e98482a52e90482952e8c482852e84482752df4482652dec482552de8482452dc4482352db8482252cdc4821⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x56ef448a056ee8487f56ee0487e56ed8487d560ac487c53bd0487b53bcc487a53bc0487953ae0487853ad84877539e44876539cc4875539c44874539904873538c84872538c44871538b84870534bc486f534b4486e534a8486d534a0486c5349c486b53494486a5348c4869533884868533844867532e04866531ec4865531c04864531b04863531a448625319c4861⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x578c848e0578bc48bf5789048be5788c48bd5788848bc577ec48bb577d848ba577c848b9577bc48b8576f848b7576e448b6576e048b5576bc48b45768c48b3573f848b2573f048b1573e048b0573d848af573c848ae573c048ad5739848ac5739048ab5738448aa572f448a9572ec48a85718448a7570f448a6570d448a5570c448a4570c048a356f8c48a256efc48a1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x5a8ec49205a8e048ff5a8cc48fe5a6b048fd5a69448fc5a1a848fb57f9c48fa57edc48f957db048f857c8848f757bf848f657bf048f557be448f457bcc48f357bc448f257bb848f157ba448f057b9448ef57b9448ee57b9048ed57b8448ec57afc48eb57af848ea57adc48e9579b848e85799c48e75799448e65798c48e5578f448e4578dc48e3578dc48e2578cc48e1⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x635b849606359c493f63594493e63590493d63584493c62bf0493b62bd4493a62bd0493962b88493862b84493762afc49365fb9049355f8c849345f3d449335e7ac49325e7a849315e79049305b2f4492f5b2d0492e5b2cc492d5b2c8492c5b29c492b5b298492a5b28849295b0c449285b0bc49275b0b049265b09449255b08049245affc49235afd849225a9884921⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x677b449a0677b0497f677a4497e67790497d674ec497c674dc497b673ec497a673ec4979673ec4978673dc4977670e0497666fe0497566dc4497466bb4497366ba84972666844971637e04970637dc496f637d8496e637d0496d637bc496c637b4496b6379c496a6378c4969637844968636ec4967636e84966636dc4965636b04964636904963636804962635e84961⟩, ⟨0xc005d02d015c0a8051027012c09004502100fc07803901b00cc06002d015009c04802100f006c030015009003c018009003000c000, 0x6ecc049e06eaf449bf6e29849be6e29449bd6b1d449bc6b1a849bb6aa8c49ba6a4cc49b96a1f849b86a1f449b76a1ec49b66a1e849b567fe049b467ec449b367eb049b267eac49b167cb849b067c9049af67c8049ae67bdc49ad67b8449ac67aa849ab67a9049aa67a8849a967a8049a8679f049a7679e849a6679d049a5679c049a4679b849a3679ac49a2678d449a1⟩, ⟨0xc000, 0x6ed8049e1⟩ ] def tableRRR : Table Block := .branch 8 tableRRRL tableRRRR def tableRR : Table Block := .branch 17 tableRRL tableRRR def tableR : Table Block := .branch 34 tableRL tableRR def table : Table Block := .branch 68 tableL tableR def records (i : Nat) : List Nat := PackedNatTable.records table i end PolicyCircuitPacked1 namespace PolicyRewriteParametricPacked1 open PackedNatTable def tableLLLL : Table Block := .leaf #[ ⟨0x11f08583e01c20ce05d829412407f0360170096038015806c01a000, 0x28640428390a0f020a1d8307c127d0287304286b0a1b420a1d442449f30a19010a0ac28390a0f030a1cc406d127c800460a0ac282910286c1c1d849f00a19810a0e8283d082868109127bc28640411828390a0f040a1986079127b8004607ee41fba102864181dc49ed00118282b0a0a440a0ec7078127ac00460a0ac2829102836201d449ea001181fb90c2834181d049e900282e0a0a420a0c850ab127a0282204282007fe820a08c33849e7001ff904282210d12798007de01ff708282119412794007de0107ff84069127900077f8107fc056049e2⟩, ⟨0x12108703ec1c40d105d028011807b035017009203e0188098032000, 0xa4901ff70a39830a49c57c4a2a0a3fc10a39028be0829200ce128a028fe0a3f420a39028fc0a2f830a3fc3184a270028a30a38c20a3f840721289828fb0428a30a38c1e650c28fd101c44a250a3e428f20828e30a3c41e650c28fb0c1c04a24001df3078e41e610c28f9141bc4a23001e660799420a3cc506e1288400798428e60828ec143b04a20001fe00428eb101a849ff0028e20a28c1e610c28e515f127f800028ac182e049fc001bfd0428ab14f127ec000287d1838c49f90011820a1f050e2127e028760a0e820460a0f0283910283d143b449f5⟩, ⟨0x134090043c1fc0ed06c83201680a004781f00ca05101f00ac028000, 0x29f50a0f029f40c2a201c2984a3d001fbd07eec20a7f850a5128f000a7e029f40829fc142ac4a3b001e630798420a7b05061128e40079881e3f076c430a7885062128e00078fc1df90829b7142ec4a36001e3d078f01e200c2968141884a350028250a28c29380c29601c1a04a34001e3b078e420a4f85067128cc29360429320a4b020a4dc3384a320a4d0106ff429310a09430a4d860a9128c4006ff41e260788030a4d060a8128c0006ff4293007fb030a4cc75c4a2f0a4a810a498292108292b0ce128b42928041ff70a494287f0c292a101b44a2c001f7907de01fe00c2928141b04a2b⟩, ⟨0x135091045420a0f7072032c1740a304781f00ca05101f009c026000, 0x2a7f042a7d0a9dc20aa803384a72002a76042a7f10d129c4007de42924082a7e194129c0007de410a9ec4069129bc2a69042a640a8f820a9a83384a6d0a9a02a67082a640a9982a3e0c2a690c6129b000a38828e3082a68101c84a6b0a3ec10a38828e30799430a99c4071129a800a28c28e20798430a9945060129a42a35042a330a8b820a8d83384a660a8a410a7d42a230a2b830a8d4406d1299400a0f029f50a7d030a8d05060129902a2b042a240a89820a8b44244a620a8a410a0f02a230a2b830a8ac406d12984007ef41fbb07ef830a8a4506c1298000a7d4283c0a7d030a89457c4a3e⟩, ⟨0x13a09304482020e706982fc15809804281c40b00480190084020000, 0x1df7077d81dba0c2b21141884aa4002a6d0a3882abc0c2af31c1a04aa2001df5077cc20abc4506712a842aea0ab98206ff42a6d0ab9430ab80516d12a802ae8042ae50a9b420aba8307c129fc006ff41dbc076e830aba060a8129f8006ff42ae40aaec30ab9c75c4a7d002aa50aaf02abb0c2abf141984a7b0aad810aa982ab1082ab8109129e800aa9428e20a9b430aad87065129e42ab30aac020aac82aaf0aaac30aad03184a78002aac0aa9420aacc5144a770aab810aa942aad0aaa830aac04104a76002a6d0a38820aab85064129d40077d41df3082aab1418c4a74002aa50aa9020aaa44044a73⟩, ⟨0x142099048421c0fb072034417c0a704381cc0be04c01c0090028000, 0x1bfd0709420af886744ab7002bbc0aee020af8050ab12ad82ba9042b780ae9820aeac4244ab30aea010ae982b78082ba90ce12ac82ba1042b760a9b42b770c2ba8101b44ab10ae8c10adec2b70082ba510912ac02ba2042b700adec20ae8c3384aaf0ae8410adbc2a6d0addc30ae88406d12ab82aea0ae802b7f0c2a6d0ab942ae40addc40ae8430aa12ab42b7d042b770ab9020adfc307c12ab000709c1c20076ec30adf4506c12aac00add82b6f0add430adf057c4aaa002b6f0add82b750c2b79141804aa9001bfd0acfc2b3d0c2b6d2428c4aa7001bfd06ce020adac6744aa6002b3f0acf82b3d0c2b62141804aa5⟩, ⟨0x11b08383f01e20de06382cc14009304181c80c805101d0098026000, 0x6ff42ae40aaec30b19c70a712bb80002c62183a04aec01e042c6114f12bac2c29042c270aec820b0a83384ae70afc010aec42be70add830b0a4406d12b9800aee42bb10aee030b0a0506012b942c22042c200afdc20b08c3384ae3002bf6042c2210d12b8800afd42bb9082c2119412b840182bb10aee430aff854c4ae00060709020aff05484abf0afc810afa02bea082bf410912af42bf0042bb90af9c2b760c2bf2101b44abc001c24070941c260c2bf0141b04abb002bb10aee42bb80c2be915f12ae4006ff42bb90aee030af908784ab8⟩, ⟨0xfb075836c1900bb055826811808203a81880aa04501b00a802e000, 0xb3982ce7082cf119412c9800700708020b3b8507312c942cbc042cba0b2c420b2f43384b22002cb0042cbc10d12c8400b2b82b3e082cbb18c12c80006cd430acf830b2e072c4aff001b350c20b2d86284afe0000b2a86404afb001b35042ca914f12be82c79042c770b1b820b1e83384af6002c6d042c7910d12bd400b1ac2bb1082c7818c12bd007880aec430b1d472c4af301e2020b1cc6284af20b1a010ab982ae0082c6a10912bc02ae8041bfd0ab942a6d0c2c68182a44aef⟩, ⟨0x11308183c81cc0d306302d814e09b04401c40bc04b01a008001a000, 0xb5802d3a082d6d19412cf00042d280b4e830b5a854c4b3b0015c20b5a05484b3a0b4e010b4d82d2d082d390ce12ce000b4b010b4e04344b37002d2a0b4a020b4dc6304b360150c2d280c2d341cb12cd40543082d3218a12cd02d23042d210b0b420b4903384b310b3f010acfc2b600adbc30b48c406d12cc000acf82b3f0acf430b48857c4b2f0b3f810ad842c7e082d2010912cb82cfc042b3e0ad802b6f0c2cfe101b44b2d001b3706ce01bff0c2cfc141b04b2c0b3c810b3c02cea082cf30ce12ca000b3a410b3c84344b27⟩, ⟨0xf206f033017a0af04e02240f806c02d8134084037016008001a000, 0x2df40b7842df30c2df7141804b760b7a410c2de1082de20c1f04b740030b78420b7a8507b12dcc0079a010b7a0406912dc82cfe042b610b1f820b6d83384b6d0b6c810b6c02da7082db30ce12db000b69810b6c84344b6b002da40acfc20b6c46504b6a0010acf82b3f0c2dae15312da40041b37082dac15212da00002d7e184d04b64015042d7d14f12d8c0002d76184cc4b61003e410b5d453c4b600b5b810b5b02d63082d6f0ce12cf800b58810b5b84344b3d⟩, ⟨0xfc077837c19c0c005a82a812e087037017809003c017807c01c000, 0x2e66042e7210d12ea400b9902df4082e7119412ea00042de10b7d030b9b854c4ba7001079a020b9b05484ba60000b98860a212e9000410b98453c4ba30b8e010b89c2e33082e3a10912e840042e260c30b8e090a112e802e350b8c820b8d02e310b8b430b8d83184b7f002e2e0b89820b8d45144b7e0b8c010b8982e2f0b8b030b8c84104b7d0010c20b8c070c4b7c0010c20b8b460a012dec00b8982e25082e2a10112de400b7d02df3082e20141fc4b78001e69042dfe141f84b77⟩, ⟨0x12e08d040c1de0dc06402dc14c09504101d40ca05501d809c026000, 0x2eb50bad82eb40c2efa141804be30bbbc10bad42ee40bb9c30bbc4406d12f840078cc1e31078d030bbbc506c12f8000bad82eb50bad030bb9857c4bbe002eb60bad42eb40c2ee11c2984bbd001e33078c420bafc50a512ef000bae42eb4082ebd142ac4bbb002b660acf420babc50ab12ee02ea5042ea30b9f420ba983384bb4002e7c042ea510d12ecc00b9e82dba082ea419412ec80070079ac20ba84507312ec42e790b7d820b7b02df50b78430b7b4307012ebc2e77042df50b7b020b9e4307c12eb80079a01e69079a830b9dc506c12eb42e72042e700b99c20b9cc3384baa⟩ ] def tableLLLR : Table Block := .leaf #[ ⟨0x14509684602060ee06e032416409e04381cc0c004c01d80a802e000, 0x2f7e041db8182f740bad440be80607912fe00076e06078bc1e30102f7e181dc4bf7001db8182f660bd9040bdd8707812fd40076e060bd982f64102f71201d44bf4001db8181e2f0c2f6f181d04bf30bd8810bd802efe082f630ce12fc82f3a042efd0bcc428a30c2f62101b44bf1002ee70bbf42f230c2f61141804bf00bce810bb9c2f310a28c30bcf0406d12fb80078dc1e35078e030bce8506c12fb400bbf42ee70bc8c30bccc57c4beb002efd0bb9c2f230c2f2e1c2984bea001e37078d420bcb050a512fa400bc982f23082f2a142ac4be80bbec10bbe42ef4082efc0ce12f942eef042eb60bb902ee70c2efb101b44be4⟩, ⟨0x12908b04081e20e006602ec15409704001b00c205201f80b002a000, 0x38250438210bf9820e0983384c2d0e08c10e0802a6b083825103844c2c001fb007ea820e08c50e0130ac00bffc2ff8083822142fc4c2a002a6b0a9c42fef0c2ff61c1a04c29001fe507f8c20bfd05067130a000abe02fef082ff2142ac4c270bf8810bef42fbf082fe41091309429280429240a494287f0c2fe2101b44c24001ff70a49028e60c2fbe141804c220000bee4616e130840076e06082fb8143884c200be8010bdd42f77082fae0ce12ff42fab042fa60bea020beb44244bfc0bdf810bd982f740bad430beac406d12fec0076e060bd982f64102fa71c1d84bf9⟩, ⟨0x144098846820c0f306f831416209d04601ec0c405201e00a0028000, 0xe38410e2e838bc0838e31091318438bf0428ae0e2d82a710c38e1101b44c60001fe107efc1fe20c38bf141b04c3f00287f0a2b838b50c38bb15f130f400a2b8287f0e2d430e2e05060130f038af0a8cc20a2b82a230a7d430a8b83070130e82a29042a230a2b820e2bc307c130e400a0ac2a710e0c030e2a470ac130dc007ee41fe30838a7142944c360038a10e0c020e29450ab130d4387d0e1ec20e1f0387a0e1dc30e1f83184c340038330e0d820e1f45144c330e1e410e0d838340e1d830e1ec4104c320038280e0c0382e0c3879182b84c31001fe807f901fa90c3877142b44c30001fe707f981faa0c3829141884c2e⟩, ⟨0x11608103d01c20d406082b813c09004181d40c805001f80b8028000, 0xe4dc10e3dc38fd083939103a44c75001f38043937142c84c740e4cc10e4c439270839340ce131c800e49810e4cc4704c710039240e3f438ee0c393219b131c000e48c38fd0e3b830e4bc6684c6f001fa707ce420e4b05644c6e0038f60438fc142d44c6b0038f60438f9140131a8007ea010e3c450ba131a400e3bc382e0838f3142ac4c6800287f0a2b838b50c38eb1c2984c66001fe107efc20e3a450a51319400a2cc38b50838e7142ac4c640e39038b7082a710e2d8287f0c38b10c1c04c630e2fc10e2d82a710838e40c1f04c62⟩, ⟨0x10407883901a80c305a82a813a08a03d01980aa04701d009c026000, 0xe7f810e7f039f30839ff0ce132a800e7c810e7f84344ca90039ef0e7c020e7f46504ca80060e7b839f00c39fa1531329c0181a780839f81521329800039ec183d04ca4001a700439eb14f1328c0069c039b50e6cc30e7908784ca1001a70073bc20e7886744ca00039b50e6d039b30c39b8141804c7f002dba0e68820e6c4507f131f8007ce810e6bc507e131f400e5a410e5b05004c7c0e58410e3e0393c083963109131e839370438f70e3f420e58440b6131e439390438fb0e3f820e4ec4244c76⟩, ⟨0xf5074036018e0b9057028c13008b03c01a009e03f0148074020000, 0xe9bc10e9ec4344cbf003a6d0e7b820e9e86304cbe001a762039ee0c3a771cb132f40069d88083a7518a132f00003a6b183944cba006043a6a14f132e40003a61183cc4cb6001a76043a6014f132d43a36043a250e8c420e8e04244cb30060e89080c3a36242844cb20e8cc3a30083a320e8bc3a2b0c3a340c6132c400e8b03a24083a33145132c03a2e043a240e8b43a2a0c3a30104132bc0188083a2e1c3132b80188083a2b182804cad003a240e88c20e8a04044cab⟩, ⟨0x12908a83f81d40d706182c814208e03d01980a6040019808c026000, 0xebcc3af40ebc830eccc5060133d03b2d043af30ec883b250c3b2f101b44cf3001d6c075a81d6d0c3b2d141b04cf2003af40ebcc3af20c3b2415f133c000ebd03af30ebc830ebfc70a6133bc0075b01d6a083afd142944cee003af70ebc820ebec50ab133b400eb903aeb0eba830ebc457c4cec003aeb0eb903aea0c3aee141804ceb0039f00e7b83ab30c3ab9141804ce80039ee0e7c03ab30c3ab715f1339c3aab043aa90ea8c20eab03384ce5003aa2043aab10d1339000ea8439b5083aaa1941338c0070069ec20ea9c5073133883a7b043a790e9c020e9f03384ce0⟩, ⟨0x14809a048020c0f206f032816e09f04501d40c004e01e80a8026000, 0xeee410eec43abf083bbb0c1f04d29001a70074fc1d390c3bb9182a04d280eedc3bb5083aeb0ebb03bb00c3bb80c1c04d270ebc010ebb03aeb083bb70c1f04d26001d3d074ec1d3e0c3bb5141b04d25001a700eec03baf0c3bb31c29c4d240ee8810edec3b7d083ba4109134883ba0041cf5183b7a0ebcc40ee886079134840073d46075a01d69103ba0181dc4d20001cf5183b610edb040edf07078133f80073d460ed843b6c103b77201d44cfd001cf5181d680c3b75181d04cfc003b6f0edb020edcc50ab133ec3b3e043b320ecec20ed804244cf90ecb410ebd03b220ec9430ecf8406d133e03b2f043b230ec9820ecd83384cf5⟩, ⟨0x10807883741920b5052024c1000750348158092039014006801e000, 0xf1a010f0a43c2a0f0e030f1a8406d134f80072b41d6e075bc30f1a0506c134f400ec943c290f09c30f1905060134ec00f0a43b250f09c30f0d870ac134e40072b41d6e083c34142944d38003c2e0f09c20f0c850ab134dc00f0a43b250f09c30f0b057c4d360000f0946120134d40261043c2414f134d03bf9043bf70efb820efe83384d32003bed043bf910d134c400efac3bbd083bf818c134c00063b830eef430efd472c4d2f0018ee0c20efcc6284d2e0000efa06132134b00073d46083be7143884d2b⟩, ⟨0x11a08683f41da0e206a830815c09504281bc0bc04d01e80a8026000, 0x3cbd043ce610d135c800f2e83cbb083ce5194135c40070069cc20f3885073135c00003cb6181e84d6d0018ee043cb514f135b03ca7043c770f28820f2a44244d6a003c760f0e03abf0c3ca71c1944d690f2903ca1083ca30f2803c7c0c3ca50c6135a000f1f43c76083ca41451359c3c7f043c760f1f83c7b0c3ca11041359800eafc3c38083c7f141904d65001d72075c020f1f050631359000f1d83c75083c7a1011358c3c70043c2b0f1b420f1c43384d620f1a010ec943c2a0f0e030f1c0406d135843c6a043c630f19420f1b04244d3f⟩, ⟨0x11808583e41d60e006a830815609804281b80b404701a0090026000, 0x1fa8043de9158136a40442b3f0f5fc30f69c90a3136a00441b38083da519d1369c0003d78183984da5011043d7714f136903d6c043d670f5a420f5b84244da10eee41069c03bb10eafc30f5b060a9136800069c03bb00eebc30f5a075c4d7e0f48810f3dc3cf9083d24109135ec3d20043cbb0f3d83aeb0c3d22101b44d7a001d3a073b41cee0c3d20141b04d79003cf50f2ec3ce80c3cf815f135dc0069c03cbb0f3a030f3c88784d76001a70073b420f3c06744d75003cea0f3a020f3b850ab135d03ce6043ce40f2f820f39c3384d73⟩, ⟨0x10607d03a41b60ca05b829012e08703b81900ae04701b80a802e000, 0xc8c10fa8853c4de2003e340f9b420f9ec507f13780007cf010f9e4507e136fc00f9cc3e6d083e77142ac4dbe003e6f0f8d03e6d0c3e7215f136f43e3f043e3d0f8dc20f9803384dbb003e36043e3f10d136e800f8cc3e34083e3e194136e40070079c420f8ec5073136e03e30043e2e0f89420f8c43384db6003e24043e3010d136d400f8883e20083e2f18c136d00060203e200c3e2c1cb136cc00602020f8a86284db20f7cc10e2dc38b1083df5109136b038bf04287f0e2d82a710c3df3101b44dab⟩ ] def tableLLL : Table Block := .branch 12 tableLLLL tableLLLR def tableLLRL : Table Block := .leaf #[ ⟨0xfb073834c1820b205202441080740318154088036011005c016000, 0x3f20043eb80f8c820fc88307c137e00079b81e6f079c030fc80506c137dc3efc0480fabc20fbd4307c137d40203eaf083efd141ec4df4001e6e043efb101a44df30fbcc10fbc43ee8083ef40ce137c400fb9c10fbcc4344df0003ee50fadc20fbc86504def0060fabc3eb70c3eef153137b80181e6e083eed152137b400fadc3eb6083ee3141fc4deb001e6f043ee1141f84dea003eb70fabc3eb60c3eba141804de90000faac613a137980060043eaa14f137940003ea3184e44de3⟩, ⟨0x12f08d841c1e60df06582dc14c09303e01a00aa04801c009c034000, 0x3fa0043f7e0a0ac20fe88307c138b0007ee01fb007ea830fe80506c138ac3f7a043f770bffc20fdf0307c138a8007eb81fac07ebc30fde8506c138a400fd943e660fdb430fde45060138a000f9983f650fdb430fdd470a61389c007eb81fac083f73142944e260fce410f9c43e67083f3a0ce1388c3f37043e340f9c03e660c3f39101b44e22001fad07cf01f3d0c3f37141b04e210fccc10fcc43f28083f340ce1388000fc9c10fccc4344dff003f250f98420fcc86504dfe0060f8803e610c3f2f153137f401818820fcb45484dfc0fc883eb9083e320fae03eaf0c3eb00c1c04df9⟩, ⟨0x147099847c2160f8072032c1760a504a020c0e605f02580dc040000, 0xbffc3f7d0bfe03120805060138f03ffc043fb20fdf420fff8307c138ec007edc1fb407ec430fff0506c138e83fe4043fb50fefc20ff984244e39003fb00f9983f650c3fe41c4a04e380ff843fbe083fe00fef43fb90c3fe20c6138dc00fee83fb0083fe1145138d83fbc043fb00feec3fb80c3fbe104138d400f9983f65083fbc1449c4e34001fae07eb020fee45126138cc00fec03f68083fb7101138c800fec43fac0fec030fed05060138c43fad043faa0feb020febc307c138c0007ed41fac07ed830feb4506c138bc3fa3043e660a0ac3f770c3fa4101b44e2e0fe883f7f0fdf030a0ac3f7e0bffc3f77103fa30c2a84e2d⟩, ⟨0xee07083381820b10508238102071030815009203d0190098026000, 0x607c0848e5152139d448bb0448b9122cc2122f03384e730048b20448bb10d139c80122bc48b00848ba194139c400700709c2122dc5073139c048ad0448ab122882122b83384e6e0048a10448ad10d139b40121fc487e0848ac18c139b0007a20487e0c48a91cb139ac007a2021229c6284e6a000121d861211399c007a04487514f13998000486d183f44e640049c1121b053c4e63003e660fd943f6d0c482515f138f800fdf42fff0bfe031208457c4e3d⟩, ⟨0xf0070034c1800b3051824810a071033016409c0410170084022000, 0x6cc8125c03126b072c4eb1006cc80849aa18a13ac0497f04497d125d02126803384eae00497304497f10d13ab40125c4496c08497e19413ab00184970125b03125ec54c4eab0061b508497915213aa80124f04933124ec3124fc506013aa00004931185bc4ea6012442124c050e213a940004927182904ea200182804492614f13a8448eb0448e9123802123b03384e790048bf0448eb10d139e00122f4487a0848ea194139dc018487e121e831239c54c4e76⟩, ⟨0xf8072836819c0bb057027811a07f036017c09e03e0180074020000, 0x49b5127984a2a0c4a2e15f13b9800049ff184ec4ee3006cc1127f853c4ee2127dc1127d449ec0849f80ce13b800127ac1127dc4344ebf0049e9127982127d86504ebe006126d449e60c49f315313af4018182a0849f115213af049e40449e2126e42127943384eba0049b80449e410d13ae40126d849b50849e318c13ae00060a08126d431278072c4eb7001828202126f86284eb6126c01126b849a50849b10ce13ad00126901126c04344eb30049a2125c02126bc6304eb2⟩, ⟨0xdf06903081640a704d023c106072032014c09003c0188090020000, 0x12d84112da84344f21004b3f129dc212da46504f2001e741e710c4b66184b44eff00012cec616c13bf0079d084b3a143884efb00012c9460f613be002f1044b2414f13bdc0129dc4a76084aa0141fc4ef3001e72044a7e141f84ef2004a78129d82129f050ab13bc40004a72183e44ef0006fc1129c453c4eef00012988607d13bac0066c011298453c4eea0019b0127984a2a0c4a3a2428c4ee80019b0060ac2128e06744ee7⟩, ⟨0x11708503f01c60d305e82b013608803c019c0a804701b809c026000, 0x74dc112fe45604f38004bbb044bec142d44f3512f944be3084be412f884bbf0c4be60c613cd0012ee04bbb084be514513ccc4be1044bbb12ee44bbe0c4be310413cc8012eb04bb5084be1182f44f31001c31070bc212efc50bc13cc00066c04b7a12eb0312ecc8784f2f0019b0070c0212ec46744f2e004ba812eb0212ebc50ab13cb44ba5044ba312df4212e983384f2b004b7c044ba510d13ca8012de44b7a084ba419413ca40070066dc212e84507313ca001279849b5128a8312dcc506013c944b6a044b6812d88212dac3384f22⟩, ⟨0x11508103c81be0ce05a829411e081039818c0ac04301b008c020000, 0x181132e44ca0104ce31c4b84f6d006041ce60c4ce0184b44f6c132cc1132904cae084cb510913da80444c6a132803132cc8204f69132c04cad084caf132b04ca80c4cb10c613da00132a44c6a084cb014513d9c4cab044c6a132a84ca70c4cad10413d980444ca0084cab1c313d940441ce9084ca818213d900131a84ca3084ca610113d8c0131881131945004f62130e01130d84c2c084c390ce13cfc0130ac1130e04704f3e004c291309c4c240c4c3719b13cf40130a04c27130903130d06684f3c001cf2073b02130c45644f3b⟩, ⟨0x11208103b01b60ca05e82a812c08803e81c00ba05001b809c020000, 0x4d28134902134d05144fa2134c01134904d2a134b43134c84104fa10039b30f3a02134c060bd13e800073c01cee084d2e142f04f7f004d24044d2714013df84cff044c64130fc2134803384f7c133f411318c4c27084cff102d84f7b001ceb044cfd142c84f7a000133d0616013ddc0181084cf3143884f76133a811339c4cbc084ceb0ce13dcc0132ec1133a84344f72133a04ce6084ce7133804ce20c4ce90c613dc40132e84ca0084ce819413dc04ce5044ca0132e84ce10c4ce6101b44f6f006044cb90c4ce5184bc4f6e⟩, ⟨0x11a08383e81ce0d406202c413a08f03e01940a204701e00a4032000, 0x136d81136d04daa084db70ce13ee80136a41136d84704fb9004da71309c4bf60c4db519b13ee00136984c2712fd83136c86684fb7001d36073b02136bc5644fb6136801134984d21084da10ce13ed04d7e044d25130a021368040b613ecc0073c41135f850b213ec84d7b043ab80eae82135f03384fb0135e410e7b83ab50e9f43135ec406d13ebc0069e01a79069e83135e4506c13eb80004d6f19613ea40481135b853c4fa8001a700e7c03ab30c4d6321e13e980069c01a79084d6119d13e944d34134c82134cc4d31134b83134d43184fa3⟩, ⟨0x11108203c41c80d406202c014008c03e01b80aa045017807801a000, 0x63b011399853c4fef138f81138f04e36084e3f0ce13fb40138d41138f84344fec004e32138cc2138f46504feb001c018f3084e3a141cc4fea001a70138844e200c4e2f2428c4fe8001a70063c42138b46744fe7004e210eef44e200c4e24141804fe6003ce8137802137e45144fe3001cee044df7142f84fe2137c04dee084def137b44dea0c4df10c613f840137904dbc084df014513f804dec044dbc137984de90c4dee10413efc0137884de0084dec182f44fbe001d34074cc2137a850bc13ef40136f01136fc5004fbc⟩ ] def tableLLRR : Table Block := .leaf #[ ⟨0xea06e833417c0ab04f02380fc071033016808e03a0150064016000, 0x4ee8044ef110d16094013b9c4ee2084ef019416090007012e084eed141cc582313b80113af84eb5084ee10ce16084013ad0113b804345820004eb213ab4213afc6304fff004a4313ab4313af072c4ffe004a43084eba18a13ff40004ea9183e84ffa004a4113aa053c4ff9139f41139ec4e72084e7e0ce13fd80139c41139f44344ff5004e6f138842139f06504ff40010eef44e210c4e7915313fcc00418f0084e7715213fc80004e67184904ff0⟩, ⟨0x12308803f01dc0db06202c013a08603a818409c0410188080026000, 0x4f71044dbe136e0213dc8338583d13dbc1136f44da6084f71102d8583c001d35044f6f142c8583b13db411388c4dfd084f6e0ce160e84f6b043bbd138883bbe0c4f6d101b458390018f0063c41a720c4f6b141b0583813d94113cf84f60084f67109160dc4f63044ead13cec4eae0c4f65101b45836004ac4b04b4313d8c506c160d4013c904ead13ce4313cfc5060160cc4f32044f3013c9c213ccc3385832004f26044f3210d160c4013c8c4f24084f31194160c00044ead13c90313cb854c582f00112b084f2c152160b84ef1044eef13ba4213bc83385826⟩, ⟨0x11608403bc1be0c905c029c13408703d019c0a8044019807c01c000, 0x1aea04587f142c85872161c4586f085870161b8586b0c58720c6161c4016194583d085871145161c0586d04583d1619c586a0c586f104161bc01618c586108586d182f4586e001ae906ba02161ac50bc161b40160f4116180500586c160d81160d0582a0858370ce161a80160a41160d847058690058261609058270c583519b161a001609458241609c3160c86685867001aeb06a842160bc5645866001d7a075e0213fe05061161880075e41d76073b8313fb45062161840075d81d32084fe3142ec583f001d37044f75142e8583e⟩, ⟨0x10f07d83a41b60d006082c013808b03e81a80ba04a01b809c028000, 0xaee42bb1165c03165f850601629c0442bb9165c03165e890a3162980441c2508597819d162940005969184a858a3001aaa182165a050e216288006cbc1b2d08593b14184587f001b2e06cac1aa30c593014188587e001b2b06b9c2164a050bb161f0006aa01162e050ba161ec58b30458b11629c2162d0338587a0058a60458b311c161e401628c5824162903162c866c5878004fff1609058a40c58af19a161dc006a9c1aa10858ac159161d858a104583f160e42162883385874161fc1160f858250858a1102d85873⟩, ⟨0x11a08483ec1d00d406082a812c08303901900a003d018008001e000, 0x11168c05a370c5a6221e162fc0441e78085a6019d162f80166d05a241688c3168a857c58bb005a24166d05a230c5a271418058ba167f01167e059bf0859fd0ce162e059fa0459a2166f059b40c59fc101b458b7001ee7079e81e7b0c59fa141b058b60059a41668859bb0c59f915f162d404459a2166ec3167b887858b3011079e82167b067458b20059a21669059bb0c59be1418058b0166c81166c059a70859b30ce162b80166981166c843458ad0059a3166902166c465058ac0059a2166902166b850ef162ac0181e7a0859ac143a858aa⟩, ⟨0x13208f84201e80e106502dc14008c03c81940a404501a8090028000, 0x16af41169985a68085abf109163cc5abb045a64169945a240c5abd101b458f2001ee5079e01e790c5abb141b058f116ad41169fc5aaf085ab7109163c05aaa042b3e169f85a6d0c5ab5101b458ef16ab0116a845aa3085aae109163b45aaa042b3f169f85a6d0c5aac101b458ec001b3706ce01ce10c5aaa141b058eb002b3e0acfc3d7f0c5aa215f163a400acfc2b3e0f5fc316a805060163a05a7c045a7a169c42169f433858e7005a70045a7c10d163980169b85a64085a7b194163940169b45a64085a78143ac58e4001c01ce2085a76143a858e3005a30169905a370c5a671418058e0⟩, ⟨0x14a099848021a0f606b030815e09a04401dc0ca05101e80a8026000, 0x16be81166d059f016894316bfc406d164945afc045a29168ac216bf8424592416bec1168ac5a29085afc0ce1648c5afa045a24167c05a250c5afb101b4592216be45aec16ba43167c05aeb16b985a25105afa0c2a8592116bd0116bac59f0085af90c1f0592016bd8116bbc5af1085af8109163fc5af405116bac59f00c5af6182a458fe01107ba81ee40c5af4182a058fd01116b985aea0c5af01d7163ec0445ae616ba8316bb470a7163e85ae7045a2516b98216ba4307c163e4007ba01ee607ba4316b9c506c163e05ae3045ae1168c4216b9033858f716aec1168c05a6516890316b8c406d163d80169905a30168dc316b8857c58f5⟩, ⟨0x12e08d841c1ec0e506902ec15009503f01a80ae04a01d00a802e000, 0x5b3916d885b610c5b7215f164e4016ce45b6216d84316db470ac164e00068f41b23085b6b142945937005b6516d84216da450ab164d85b37045b35165ac216ce0338593416cbc10aee4597c132e4316cdc406d164cc00aec42bb9165c0316cd857c593216cc41165f4597f085b33109164c05b2f042bb1165f04cb90c5b31101b4592f001c24070941ce50c5b2f141b0592e16cb0116ca85b24085b2d0ce164b0016c8c116cb0434592b005b2216688216cac650592a001c01ce6085b28141cc592916c801166f459b5085b210ce1649c59fa0459a4166f059b40c5b20101b45926⟩, ⟨0x145098848021e0f5070833816e0a304801f00d205201f00ac028000, 0x16e8c5baa16ea4316f9c70a6165b4006c841aff085be514294596c005bbf16ea4216f8c50ab165ac5bbc16eb0216d885bab16e8c316e903070165a85bb7045bab16d88216ef0307c165a45bb9045baf16ec4216eec424596816edc116ea85bab16d88316ee4406d1659c006c841aff06c88316edc506c16598016e8c5baa16ea4316ec057c5964005baa16e8c5ba90c5bad14180596316e84116dfc5b3b085ba20ce165845b79045b3916dc05b3a0c5ba1101b45960005b6216ce45b610c5ba014180593f16dec116dc45b73085b7d109164f45b79045b6216dc05b3a0c5b7b101b4593c001a3d06c8c1b240c5b79141b0593b⟩, ⟨0x12908a84041e00dd06302c813608703a018009e03e015807801c000, 0x1719c5c68171943171d85060166880171a05c67171943171c870a6166840074a01d24085c701429459a01718c1171845bfc085c640ce165fc5c3c042eb6170d85bfb0c5c63101b4597e005c220bad85c2c0c5c6214180597d170f01170885c3616fec3170f8406d165f00078cc1ef907be83170f0506c165ec00bad85c22170b03170e057c5979002eb6170885c2c0c5c331c2b05978001e3307be42170c450a5165dc0170945c2c085c2f142ac597616fe4116fdc5bf1085bfa0ce165cc016fc0116fe44345972001d2716fb8216fe06505971001d27045bf5101a45970⟩, ⟨0x149097846c20c0ee06c831015e09d04601ec0d005101f00ac028000, 0x5cfa173e0216ea85ced172cc3172d03070166e45cf3045ced16ea82173e8307c166e0006aa86172cc5ce3105cf91c1d859b7173cc106aa86173b45baa105cf5181e459b6001aaa181afd06bf84173cc6077166d4006aa86172cc5ce3105cef1c1e059b3001aaa185cb31738c4173a88075166c8006aa8606bf43173a06074166c40172f05ce3085ce6142ac59b0005c6b171942172c450ab166ac5ca1045c75171e02172bc33859aa171fc11719c5c74171dc3172b0406d166a40171a05c67171943172a057c59a7172841171d45c78085ca3109166985c7f045c68171d05c770c5ca1101b459a5001d28074901d290c5c7f141b059a4⟩, ⟨0x13c09284481fe0e806a030015809b04401c40ba04901a8090026000, 0x176a41175b85da0170883176c4406d167c0016fa85d6e175d03176c057c59ef176ac1176845da3085dad109167b45da9045bea176805c220c5dab101b459ec001ef707bd41ef80c5da9141b059eb005d6e16fa85d740c5da21418059e9005bea175b85d740c5d7e1c29859e8001ef707bd42175f050a51679c5d3a045d2e174c42174f042459e2174e01173f45cfe174c03174e8406d167840071a41d2a074ac3174e0506c167800171dc5cfd173ec3174bc5060166f80173f45c77173ec3174a870ac166f40071a41d2a085d281429459bc005d22173ec21749850ab166ec0173f45c77173ec31748057c59ba⟩, ⟨0x13608e84301ea0db06382d814609003c81940a203e0188084026000, 0x178d85e35085e25178d05e200c5e370c616894016ce85e24085e36101c85a24178cc116ce85e2406cc43178d440711688c5e31178a82178905e2906cc43178cc307016888006b841b2506cb43178c4506f16884006cc81b31085e2b141b859ff005e2316ce81b2d0c5e2615f167f85dfe045ded1779c2177fc33859fc177f0116fb85dec171a03177f8406d167ec00749c1d26074943177f0506c167e80177ac5bee177a83177b85060167e45dbf045dbd176dc21778033859f6005db6045dbf10d167d4007ac85be9085dbe194167d0007ac81176ec4069167cc5db1045daf175bc2176c833859f1⟩ ] def tableLLR : Table Block := .branch 12 tableLLRL tableLLRR def tableLL : Table Block := .branch 24 tableLLL tableLLR def tableLRLL : Table Block := .leaf #[ ⟨0x13909584601fe0ee06b82f415209804201c40b404601a809c026000, 0x17aa0117ab050b5168e05ea4045e72179b8217a943385a3717a8c5ea2085e7217a845e6e0c5ea40c6168d80174c05e71085ea3101c85a3517a801174c05e71075f0317a884071168d05e7e179dc2179c45e76075f0317a803070168cc0074b01d70075e03179f8506f168c80075f41d7c085e78141b85a30003c38174c01d780c5e73141805a2f179b01179805e3a085e6d0ce168b45e6a045be9178fc5bea0c5e6c101b45a2c001eb207ac41ef60c5e6a141b05a2b001d78178f421799c50ec168a8007bd8117998406a168a40178f85be9178f43179845060168a05e37045e25178802178e03385a26⟩, ⟨0x10c07f83bc1be0d205f82c814409304081c80c204801c0088022000, 0x5f20045f2c10d169a8017bf85efc085f2b18c169a406a5205efc0c5f281cb169a006a520217c986285a6717be8117be05ef2085efb0ce16994017bc4117be84345a64005ef017b80217be46505a63001c1da8217bd8507316988076317b805ead0c5eeb21e16980076306a90217ba46745a3f005ee317ab4217b9c50ab168f85eba17ae0217ae45eb717acc317aec3185a3d005eaf17aa0217ae85145a3c17ad8117aa05eb517ac8317ae04105a3b005ead161d8217ad860bd168e8006a941aa3085eb3142f05a39⟩, ⟨0x12708803ec1cc0d105f82b012407e0358160082036015007c026000, 0x5fbb045f6617ed45c670c5fbd101b45aa3001cf5181d220748c417eec607716a880073d4617d985fa9105fb71c1d85aa0001cf5185f6617ea4417ecc8075169fc0073d4607488317ec46074169f85cac045ca7172a4217e883385a7b17e805cff085d30173f85c770c5d3d0c1c05a7a174e01173f85d30085fa00c1f05a79174e81174b85d31085f790ce169e05f74043ab60eac0217dd43385a77135e410e7c03ab50e9f4317dd0406d169d80005f61183fc5a7201d8c117d8053c5a7100017cd0612c169b806a5045f3314f169b45f2c045f2a17c84217cb43385a6b⟩, ⟨0x11308183cc1cc0d306302d814e09504301d40c404e02000b402a000, 0x1a0f8683908686b18c16af405bd0c68390c68681cb16af005bd0c21a1986285abb1a0dc11a0d4682f0868380ce16ae401a0b811a0dc4345ab800682d17ffc21a0d86505ab7001c1d9821a0cc507316ad8076317ffc58760c682a21e16ad0076306a8821a0a06745ab3006822161d821a09850ab16ac85fe9045eab16080217fa83385aab17f9c117aa84fff085fe9103a45aaa001aa6045fe7142c85aa917f8c117f845fa4085fe40ce16a9c5fbb041cf5185fb51719c417f8c607916a980073d4617d985fa9105fe21c1e05aa5⟩, ⟨0x10207a83881960ba05382681140790360164096037016008001a000, 0x68e80468eb14016bd068e60468a01a1e821a39c3385af31a39011a0e4687f1a0b031a398406d16bc805bf5e07650c68e4141b05af11a2f011a2e868b10868bd0ce16bb801a2c011a2f04345aed0068ae1a1f821a2ec6505aec0011a0e4687e0c68b815316bac0056fc21a2d85485aea01d8c687e1a1f431a2b090a316ba007635e00868aa19d16b9c01a1f868391a1f431a284506016b980006874183c45ae2016f411a1cc53c5ae11a1b011a1a8686108686d0ce16afc01a18011a1b04345abe⟩, ⟨0x12008383dc1c00d005e82b414409504101bc0ac0460180080020000, 0x1a5dc69750869761a5bc69710c69780c616c9c01a5a4692608697719416c9869740469261a5a469700c6975101b45b25001443bbe0c6974184bc5b24001443bbe1a49841a5c8712e16c8c0051069cc31a5bc612d16c880006965184c05aff0014421a59050e216bf8693904692a1a4d021a4ec4245afc001a701a3b069260c693920816bec69361a4cc21a4d469321a4b831a4dc3185afa00692f1a3b021a4d85145af91a4c411a3b069301a4b431a4cc4105af8001a701a49821a4c470c5af7001a70069d021a4b86085af60068ec1a4a421a4b04045af5⟩, ⟨0x12608904041dc0da06082c413608a03c81a40aa042017008001a000, 0x59f016fec69a10c69e51c1a05b3a001efd07bec21a78c506716ce469b70469a71a6c821a6e44245b370069a216fec59f00c69b71c1945b361a6d069b10869b31a6c069ac0c69b50c616cd401a6b469a20869b414516cd069af0469a21a6b869ab0c69b110416ccc0167c05bfb0869af141905b32001efd07bec21a6b0506316cc401a68869a60869aa10116cc001a68869a116ba831a694506616cbc697e0468ea17fcc21a5fc3385b2d1a5f011a3a4582408697e102d85b2c001aa004697c142c85b2b1a5e411a5d8696b08697a0ce16ca401a5a811a5e44345b28⟩, ⟨0x13509084381f40e706983081620a004601ec0c405201e00a0028000, 0xb7b03e321ade431ae84506016dbc00f8c82dec1ade431adfc57c5b6e001e71079ac1f640c6b7b141b05b6d006ae61ab9c6ae00c6b7615f16db001a9e46a781aadc31aaf8706816da8007df81f7c086abc1419c5b69006a7c1aadc21aae850ab16da0007c941f23086a6d141845b64001f2407c841e790c6a62141885b63001f2107af421a8e050bb16d846a211a7fc21a88069fe1a7ec31a8883185b600069f31a7d421a8845145b3f1a7f411a7d469f71a7e831a7fc4105b3e0069e81a7c469ef0c69fd182b85b3d001f2007bf01ee30c69fb142b45b3c001eff07bf81ee40c69ea141885b3b⟩, ⟨0x135091043c1f60e706a030415409704201c40bc04a01c80a0028000, 0x5ab5045a7f16abc21b1ec3385ba7004cb9169b46c6f0c6c7515f16e900169b44cb91b1bc31b1c8506016e8c01a9fc6c381b0d831b0f4506016dfc01b0e06a7f1b0d831b0ec57c5b7e1b0b811b09c6c29086c3010916df06c2c046a741b0906a7f0c6c2e101b45b7b001181f6e07dbc41b0b0607716de800461a9d06c22106c281c1d85b78001186a741b08841b098707816ddc6bff046bfb1aac021b0803385b761aff411afe86a79086bff103845b75001f6507d8c21aff450e016dd001ab9c6ae0086bfc142fc5b731ae9011aba06a74086ba60c1f05b71001f6d07d941f630c6ba4141b05b70⟩, ⟨0x136092844820a0f5073834017209904281c80ba04b01d00a0028000, 0x1eb907adc21b3b8506716eec6ce3046ce11b2ec21b3903385bba006cba046ce310d16ee4007dc86cb8086ce219416ee0007dc811b2fc406916edc6cb2044cb91b18c6c700c6cb7101b45bb41b2c81169b46c631b1c031b2cc406d16ecc6cb11b2906ca10c6c631b28c6c7e1b1c041b2c830aa16ec86cac046ca31b18c21b2c4307c16ec46cae046ca71b2a421b2c04245bb01b2b01446ca31b18c31b2b860a916ebc0441ea407a8831b2b060a816eb80446c7e1b28831b2a075c5bac0111b1f86ca20c6ca51c29c5bab1b1fc11b1c06c7e086ca10c1f05baa001ce6073881ea30c6c7f141b05ba9⟩, ⟨0x13808f843c1f20e506882f415809904281b00b804601a8090028000, 0x1b5a86d68086d691b59c6d640c6d6b0c616fb001b4f86a29086d6a14516fac6d66046a291b5846d630c6d6810416fa801b4cc6d3c1b4e831b59860ae16fa4007af01eb8079fc31b59050ad16fa0007aec1eba07a8831b4d4506216f9c01b3a46ce5086d2b142ac5be61b49011b3d06cff086d2610916f9001b3cc6ce71b18c31b490706516f8c6d211b3f821b4806cfd1b3e431b4883185be2006cfa1b3cc21b4845145be11b3f011b3cc6cfb1b3e031b3f84105be0006c631b39c21b3f0506416efc007ae41eb7086cf91418c5bbe006cf31b3c821b3dc4045bbd006c631b39c6ce50c6cf01c1a05bbc⟩, ⟨0x14009384581fe0e5068830015809904101b80aa0450178084026000, 0x1b7a06de7086db71b7986db00c6de90c616ffc01b39c6db6086de8101c85bfe1b79411b39c6db607c9c31b79c407116ff46de31b6f021b6d86dbb07c9c31b794307016ff0007adc1efb07c8c31b78c506f16fec007ca01f27086dbd141b85bf9005bfb1b39c1f230c6db8141805bf81b6b811b5fc6d75086daf0ce16fd86dac046cb81b5f86c380c6dae101b45bf5001f7307dc81f710c6dac141b05bf41b6a06da6086da71b6946da30c6da90c616fcc007c8c6d7b086da814516fc86da4046d7b1a9a41f710c6da610416fc4007c8c11b690406b16fc0007dc411b68c406a16fbc01b5f46cb81b5ec31b68057c5bee⟩ ] def tableLRLR : Table Block := .leaf #[ ⟨0x140096046020e0f606e833416e0a304781ec0d005101f009c026000, 0x6aa31b9bc6e750c6e78141805c33006a741a9e06e220c6e661c2b05c30001f6e07df021b99050a5170bc01b8f86e22086e62142ac5c2e1b8e86e38086e391b8dc6e340c6e3b0c6170b401b8946e28086e3a145170b06e36046e281b8986e330c6e38104170ac01b7e86e221b88031b8d860ae170a8007e841f7d07d8431b8d050ad170a4007e801f7f07d8c31b7ec5062170a06df5046c3a1b7c821b7dc4245c271b7b411a9fc6c391aa8c31b7d4406d170986def046c3c1b0f821b7c44245c241b7b411b0e06c391aa8c31b7bc406d1708c007dd01f7007dd431b7b4506c170886de9046db71b6c021b7a83385c20⟩, ⟨0x13009004401f40e7069830816209d04601ec0d005101f009c026000, 0x6ee9168c021bbc86505c68001c01ce2086eef141cc5c671b0b010461b0906a7f106ee5181e45c651b7bc11b0f06c3e086ee20ce1719001b0e06a7f1b0d831baf870a617184007dd01f70086ebc142945c60006eb61b0d821bae850ab170fc01b9bc6aa31b9d431bac070a6170f4007de81f76086eae142945c3c006ea81b9d421bab050ab170ec6ea4046e771b9c021ba943385c3a1b9fc11b9bc6e761a9e031ba90406d170e46ea1046e7a1b9f021ba8c4245c381b9fc11aa8c6e761a9e031ba84406d170dc007de81f7607dec31b9fc506c170d801b9bc6aa31b9d431b9ec57c5c34⟩, ⟨0x11308003cc1c00cd05e82bc13c08b03c01940aa044018808001a000, 0x6fec046fea1bf8021bfb43385ca0006fbf046fec11c171fc01bef438fd1bed031bfac66c5c7e006fbc0e3f46fb40c6fe819a171f4007cfc1f39086fe5159171f0007d8011bedc50ba171e801bed46e20086fb9142ac5c7916ab0116a845aa3086fb20ce171e06df5046c3a1b7c821bcf03385c77001186a741b08841bcd08075171cc004607db831bcc86074171c801bcb06c22086f30142ac5c711b0b811b09c6c29086f230ce171bc00f5f03d7f086efa142ac5c6d1bbcc11bbc46eeb086ef40ce171a801bba811bbcc4345c69⟩, ⟨0x12b08b84101e00dc06402d014609003e01b80aa045017807801a000, 0x69c078661e1a831e1c870a7172d001e1b078661e1a831e1bc57c5cb31e19c11e18c78660878690c1f05cb2001a7b069cc1cf80c7867141b05cb1003bbe0e9f478390c7865141805cb0003a7d0eef878390c78611c2985caf001a7b069cc21e0fc50a5172b8782d046ff61bfc421e0b83385cab1e0ac11bfd46fbc08782d102d85caa001f3e04782b142c85ca91e09078220878231e0846ffe0c78250c6172a001bfe06ff40878241451729c7820046ff41bfe86ffd0c78221041729800f9b439a2087820182f45ca5001f3d07cec21bff850bc1729001bfd011bfdc5005ca3⟩, ⟨0x1840ac051026211e083839c1a60bf04c82140e405f02400a0028000, 0x1e2b0786e1e1a4787d1e2c4517d98786d1e19878630eef83a7d18782f0c5845ce41e0c810e9f43bbe0878b10c1f05ce31e2bc11e190782f0878b01091738878ae04782f1e19021e2bc3385ce11e2b410e9f45f661e18c31e2b8406d1738078ac1e1b878690c5f661e1b478661e18c41e2b430aa172fc78aa04786d17d9821e2b0307c172f80074841cf9073dc31e2a8506c172f4787f1e1c478691e1f441e1cc78701e19878630eef851e2803131172f078760478701e1cc21e1fc307c172ec00e9f43bbe1e0e431e1f857c5cba1e1e811e190787408787c109172e47879043a7d1e18c78730c787a101b45cb81e19c78781e1d831e18c78661e1c078731078790c2a85cb71e1c411e1c078660878780c1f05cb6001a70073e41cf70c7876182a05cb5⟩, ⟨0x10807a03841ac0c705a029c12e08603b81900ae0440168080026000, 0x1689811689459b40879720c1f05cfa00796c16b985aea0c796f15f173e40007960183dc5cf7001ea01821e4fc50e2173d879340479321e4a421e4d43385cf400792804793410d173cc01e49c78f5087933194173c80166d078f5087930143bc5cf100607ba021e4b850ea173c001e3d45a241e3cc31e3e057c5cee004bf60478f211c173b478f00478e01e2f421e3c43385cec1e1d81069c078701e1cc31e3c060a9173ac01309011e3bc4705cea001cf30478e4158173a00069c078661e1a831e38475c5ce7⟩, ⟨0x15a0a184c023010307703641900b505102140e405f02100b8034000, 0x1e6e411e58879b0175b831e6f8406d174b479bb0479b41e6d821e6f44245d2c1e6e4107a8061e6c05d6e1079bb181e45d2b001ea0181ef307bd041e6e46077174a8007a8061e58879af1079b51c1e05d28001ea01879621e6bc41e6c870761749c0175dc5d740879a2142ac5d241e5f0116bb05a2008797e1091748c797b045a2016bb021e5f03385d2216be479730859f016bac59b416b9841e5ec40e717484797804796e1e5c021e5e84245d201e5dc11e5c0796e0879780ce173fc79761e5cc21e588796d166d05ae61079771039c5cfe1e5d011e5b479620879760c1f05cfd001ef207ba81ee40c7974141b05cfc1e5c85ae70859b4168945ae60c79730c1c05cfb⟩, ⟨0x1540a084b822e104078836817409d04181bc0b804b01b0090026000, 0x1e7f011689879700879fd1091758479fb0479701689821e7f03385d601e7dc1166d079621689431e7ec406d174fc79f9045a291e7d421e7e84245d3e1e7e011e7d45a290879f90ce174f479f7045a241e5885a250c79f8101b45d3c1e5d8796e16ba431e588796d16b985a251079f70c2a85d3b16be479f20859f016bac5a2416b9841e7cc40e7174e879f116b9c2168905a2516b9831e7c83070174e45a29045a251689021e7c4307c174e05abd045a66169a021e7b83385d35005a3b168dc21e7a850ab174d0007a8061e58879af1079e6201d45d31001ea0181ef30c79e4181d05d300079671e6bc21e78850ab174bc79be0479b11e6a821e6fc3385d2e⟩, ⟨0x11808283b81b60c7059828811e07c037817c0a203e0188084026000, 0x1eaf411eae47a2e087abe0ce176805e6a045e3e178fc5bea0c7abd101b45d7f005be9178f85e3d0c7aba15f175f80075d01d73074e431eacc5062175f400eafc3c380f2b031eabc7068175ec0075c81d70087aad1419c5d7a176ac1176845da3087aa40ce175e47a73047a711e9ac21e9d03385d75007a6a047a7310d175d0007dcc6d7d087a72194175cc007dcc11e9bc4069175c87a64047a621e8f021e9943385d70007a3b047a6410d175bc007ac45e3e087a63194175b8007ac411e9804069175b479be0479b11e6a821e8904245d63⟩, ⟨0x141097045c2040ea06a830015609904401d00ba04901b0088022000, 0x7b6d047b6b1ed9821edb83385db51ed8411eca07b361ece431edb4406d176d0006aa861eca07b27107b6c1c1d85db31ed84106aa861ecd87b39107b63181e45db1001aaa181ab706ae041ed846077176c0006aa861eca07b27107b381c1e05dae001aaa187b281ec9c41eccc8075176b4006aa8606adc31ecc46074176b001ecac7b27087b2f142ac5dab007ae21eb847ae00c7b25141805da91ebe811eb887af01788c31ebf0406d1769c0067e41abf06b8031ebe8506c1769801eb847ae21eb8031ebc857c5da4007ae11eb887ae00c7aed1c2b05da30019f906afc21ebac50a51768801eb947ae0087ae9142ac5da1⟩, ⟨0x144098047c2160fa07003301720a204701e80ce05401d80a8026000, 0x5deb16fb87bef0c7bf2141805dec007bb61ee8021ef8050ab177a401ee887b391ee8031eef470a61779c006af41ab9087bbb142945de61eecc7ba4087ae21ee8c7b390c7b7d0c1c05de51eeb811ee8c7ae2087bb30c1f05de41eec011ee987ba8087bb21091778c7bae047ba21ee8c7ae20c7bb0101b45de2001abd06ae41abe0c7bae141b05de1007b391ee887ba00c7ba7141805dbf007ba21ece47ba00c7ba515f176f87b77047b6f1edc421ede44245dbc1edd87b75087b6f1edd07b710c7b770c6176ec00f0e05e71087b76101c85dba17a8010f0e05e71075f031edd44071176e40174c03c38075e031edc057c5db7⟩, ⟨0x130090041c1ee0e1069831416409904401c40ba04a019807c01c000, 0x6041e710c7c7a184b45e231f1b47c6b087c6c1f1a87c670c7c6e0c61788001f18c7c3d087c6d145177fc7c69047c3d1f1a07c660c7c6b104177f801f18811f1a4516b177f40079d011f19c516a177f07c27047c221effc21f0a03385df71f0987c25087c221f0907bff0c7c270c6177d801788c5e24087c26101c85df5178cc11788c5e2406cc431f0944071177d0016ce85e2306cb431f08c5060177cc7bfd047bf11efb021eff83385df11efec116fb87bf00ebd031eff4406d177c000749c1d26075ac31efec506c177bc006cb47bef087bf8143b05dee001d6b047bf7101a85ded⟩ ] def tableLRL : Table Block := .branch 12 tableLRLL tableLRLR def tableLRRL : Table Block := .leaf #[ ⟨0x13208f843c2020e806c030815c09704181c00c604a01d008c026000, 0x7ce11f2f07ce30c7cee19a178d8007b841e77087ceb159178d401f29c11f2ec50b5178c87cb41f2c821f2cc7cb11f2b431f2d43185e31007c3f1f29c21f2d05145e301f2c011f29c7c601f2b031f2c84105e2f007c3d129d87c3a0c7cb0182b85e2e007c3d129d87c3a1f29c41f2b85169178b40079d41e73079b431f2ac5168178b07ca4047ca11f1d821f2943385e2a007c75047ca410d178a47ca21f28021f2847c7a1f1f031f28c3185e28007c731f18821f2886505e271f1fc11f1887c731f1ec31f280406d1789801810f8c831f1fc612f1789401810f8c87c62107c7d1c4b85e24⟩, ⟨0x11508083d01c20cd05f82bc14208803c01880a20400198080026000, 0x16b98796c16ba831f59c5060179a0007b8811f5845605e671f4e811f3e87cf4087d3b0ce179947d38047cf91f38421f4e840b617990007b8011f4e050b21798c0168dc7cfc087d35145179880079e411f4cc50be179847d2c1f4a821f4ac7d291f49831f4b43185e60007d201f3e021f4b05145e3f1f4a011f3e07d221f49431f4a84105e3e007cfe1f3f021f4a060bd178f4007afc1ebe087d26142f05e3c007cf8047cfb140178ec7cf2047cf01f39821f3cc3385e39007ce5047cf211c178e001f3887cbc1f38c31f3c466c5e37⟩, ⟨0x12908b04081e80e106a030015a09904001c00b404901c00a0028000, 0x7db5047cba1f2f421f6dc4245e791f6cc11f2e47cbc087db5103a45e78001e76047db3142c85e771f6c011f5807d3c087db10ce179d401f38c11f6c04705e74001eef07b981ef00c7da8141b05e731f68811f5c87d7d087da4109179c801f5a059b41689031f6887128179c47d7f1f5f021f5f87d7b1f5dc31f6803185e70007d781f5a021f5fc5145e6f1f5e811f5a07d791f5d831f5f04105e6e0059b41689021f5e85127179b4007ba01ee6087d77144985e6c007d681f5c421f5d44045e6b007d691f5a87d680c7d6f141805e6a001ef107bb81eeb0c7d6c141b05e69⟩, ⟨0x12308783ec1ce0d606182bc12c086038017c09c03e015807801c000, 0x1f9d47e6512ed431f9e0506617ab00072d41cb4071e831f8e8506217aac01f7c07def1f7a831f8d4706817aa80072cc1cb1087e331419c5ea91f89011f7d07dff087e2610917a9c01f7ac7def1f7c031f890706517a987e211f7f821f8807dfd1f7e431f8883185ea5007dfa1f7ac21f8845145ea41f7f011f7ac7dfb1f7e031f7f84105ea3007df01f7bc21f7f0506417a880072cc1cb1087df91418c5ea1007deb1f7cc21f7dc4045ea01f79c11f7947dbf087de80ce179fc01f6f811f79c4345e7e001de91f6f021f7986505e7d001de9047de3101a45e7c⟩, ⟨0x139093043c1f60ea06e032416009f04401b80b404901b0094022000, 0x7f37047f2c1fc8c21fce03385ee31fcd411f6f07f2b0bad831fcdc406d17b880077a81de9078c831fcd4506c17b840072e47f28087f32143b05ee0001e32047f31101a85ebf007f2a1f6f07f280c7f2d15f17af87f201fbfc21fbbc7efe1fb9c31fc843185ebc007def1fbb821fc80407217aec7efd047def1fbb81cbd0c7eff101c45eba1fbec7ef4087eee1fbcc1cbd0c7efd0c1c05eb9001c6d072c41cb90c7efb141bc5eb8001cbe072f421fbd4506e17ad801fbb47def072e431fbc057c5eb5001cbb072e421faf4506117ac00072e81cb7070bc31fac8506217abc0072dc1c73087ea8142ec5ead⟩, ⟨0x14c09e04942240ff07403201680a104501d80c604f01d809c026000, 0x19b0070b821feec6745ef81feb811fd987df01fdd031fecc406d17bdc7fb0047f771fd8021fec84245ef61febc11fd807f77087fb00ce17bd47fae047f391f7c07f740c7faf101b45ef41feb47f7e1fdf031f7c07f7d1fde47f74107fae0c2a85ef31fea011fdf47df0087fad0c1f05ef21fea811fe807fa2087fac10917bc47fa80419b01fdf47df00c7faa182a45ef00019b0072801c7a0c7fa8182a05eef0019b01fde47de90c7fa11d717bb40066c07f791f7a431fdfc70a717bb07f7a047f741fde421fdf0307c17bac0071f81c7c071fc31fde8506c17ba801fd987f391fdc831fde0506017ba401fce47f661fdc831fdd857c5ee8⟩, ⟨0x12b08b841c1e80dd06502cc13e08c03c01940b004801b809c026000, 0x66c04e211ffec3220dc90a317cb00066c018f108883519d17cac882d047ffd1ffe02220b83385f2a220a010eef47ffc124f03220b4406d17ca4882a048820220882220b04245f28220a01138847ffc124f03220a8406d17c9c0063c018f1066c83220a0506c17c9800eef44e211ffec32208457c5f24004e210eef47ffb0c7ffe141805f231ffd811ffd07feb087ff70ce17c8401ffa811ffd84345f20007fe81fefc21ffd46505eff00493c1fefc21ffc850eb17bf80070066cc21ffc050ea17bf401fd947fbf12ed431ff88506017be80066c07f6512ed431fef48785ef9⟩, ⟨0x13008e84402000ef070033416c0a204781ec0d005101f00ac028000, 0x222c41222bc88a60888b20ce17d880222941222c44345f610088a3221bc2222c06505f60004b7a221bc2222b450ef17cfc0181c300888ab143a85f3e221f81221e87f3a0888a010917cec887c044b7a221d47f390c887e101b45f3a001c7d070c01c310c887c141b05f3900886f12de84bac0c887b15f17ce0012de8886f12eb03221dc506017cdc88660488641fd9c22219c3385f33220f811fd947fe01fd98322198406d17cc801fefc7f6512ed432219457c5f312218011ff847fe308886210917cbc883e047fbf1ff807f660c8860101b45f2e001c7b070b81c2f0c883e141b05f2d⟩, ⟨0x13d09504682180f307183341720a504901ec0d005101e80a802e000, 0x12fb48929224883224d46685f75001c33070b42224c85645f74001c34048924142e85f72223f488fb0888fc223e888f70c88fe0c617dc40223c87e790888fd14517dc088f9047e79223d088f60c88fb10417dbc0223c088ee223b03223e460ae17db80071c81c6e070d43223dc50ad17db488bf044b7212dd02223803385f6b222e81126d44a2c124cc3222fc406d17da888bc044a2d1289c2222f84245f69222e81127984a2c124cc3222f0406d17da00060a8182b066d83222e8506c17d9c88b4048876221c02222e03385f65222d01221d888700888b610917d90887c04886f221d47f390c88b4101b45f63⟩, ⟨0x11f08403e01ca0d506102bc12c08603801800a00400198080026000, 0x89e004897d226d489bc0c89e1101b45fa7001442b6f0c89e0184bc5fa6001442b6f225f44226f8712e17e940051070803226ec612d17e9089b00489a1226ac2226c84245fa2001bfd2258c897d0c89b020817e8489ad226a82226b089a9226943226b83185fa00089a62258c2226b45145f7f226a012258c89a7226903226a84105f7e001bfd225f42226a070c5f7d001bfd070842226946085f7c0089632268022268c4045f7b00893f04896214017de88939048937224b42224e83385f7800892c04893911c17ddc0224a88929224883224e066c5f76⟩, ⟨0x12308603f01d20d906002c013408c03f01ac0ae04901b00a4020000, 0x8a290489ee227f48a250c8a2a101b45fb9001442dec0c8a29184bc5fb8001442dec227b842289c712e17edc0051079ac322890612d17ed889f9227dc2227e089f6227cc3227e83185fb40089ef1f0e82227e45145fb3227d411f0e889f4227c83227dc4105fb20089ee0489f5145ac5fb1001e6c0489f3145a85fb0227ac122584893b0889ec0ce17ebc89e9048960224a42227ac40b617eb80070b01227a450b217eb489e50489e2226dc2227983385fab0089b60489e510d17ea889e32278422278889bb226f43227903185fa90089b5225f422278c6505fa8⟩, ⟨0x14009684582040ef06d830816209a04381d00ba04901b00a4020000, 0x22a801229f48a76088aa10ce17fb88a7e048a75229f07def0c8aa0101b45fed001be8072bc1cb00c8a7e141b05fec1fc8411fbbc7ee7088a6b10917fa401f6f07f2a1fca0322998506017fa08a61229802228f48a3f228e83229883185fe7005bfb1b6d8222984407217f986de5045bfb1b6d81f270c8a60101c45fe5006ce716fec1f230c8a3e15f17f908a38048a34228c42228e43385fe21b6b011b5f46d7e1b0e03228e0406d17f8401b2e06d7d1b5ec3228d4506017f808a2e048a2b228802228bc3385fbd0089ff048a2e10d17ef08a2c228a82228ac8a24228983228b43185fbb0089fd227b82228b06505fba⟩ ] def tableLRRR : Table Block := .leaf #[ ⟨0x12e08d840c1dc0d906202c814209604381cc0c405101f009c028000, 0x22c90122bf48aff088b261091a08c8b22041c36188afc22b90422c9060791a0880070d86072a41caa108b22181dc6821001c36188ae322bb8422bf8707817ffc0070d8622b8c8aee108af9201d45ffe001c36181ca90c8af7181d05ffd008af122bb8222bd450ab17ff00008ae1183c05ffa001c3618222b8050e217fe40229d48a71229ec322ae070ac17fd8006fa01caf088ab6142945ff5008ab0229ec222ad050ab17fd08aab048aa622aa0222ab44245ff3229f81229c48a7c1f7bc322aac406d17fc80229d48a71229ec322a9c57c5ff0008a71229d48a7b0c8aa4141805fef⟩, ⟨0x13108f041c1e80e106502d814408e03e81a80ba04d01f80b002a000, 0x8b7b048b7922ce0222df0338683822dcc122b908b6a229c4322dec406d1a0dc00f0a48ae422cf4322de857c683622dd4122dac8b6d088b771091a0d08b73043c2922da88a710c8b75101b46833001cad072ac1cae0c8b73141b06832008ae40f0a48b3d0c8b6c141806830003c2922b908b3d0c8b681c298682f001cad072ac222d9850a51a0b88b36048b3422cb8222cdc338682c008b2d048b3610d1a0ac0077a87f2a088b351941a0a80077a8122cc840691a0a48b2a048b2822b94222cac338682722c88122b8c8afc22b90322ca8406d1a0980070d8622b8c8aee108b291c1d86825⟩, ⟨0x13109184401fa0e606902f815609404001b40b804e01d80a0022000, 0x77a0122ffc406a1a1b001fca87dbc22fe0322ff057c686b22fc0122fac8ba9088bf10ce1a1a48bee048ba822fa86ce70c8bf0101b46868001deb07ad41eb60c8bee141b06867008be922ea08be80c8bec14180686622f98122ed88bae088be70ce1a1948be4046cb822ed429f50c8be6101b46864001f7307dc81fbc0c8be4141b068631b7a411b6dc6db0088be31091a188007c8c8bb3088bbc143b06861001fbc048bbb101a86860006d7d1b2e08bb30c8bb715f1a0fc8ba3048a65229b0222e94424683c1fcd411fca87f2b0bad8322e8c406d1a0ec022d848b3d088b7e142ac6839⟩, ⟨0x144096846020a0ed06c030c15c09c04581e00c204d01a009001c000, 0x231bc1230c08c66230c43231dc406d1a1fc007a806230c08c38108c761c1d8687e231c412319c8c69088c731091a1f08c6f041ea0188c66230c44231c460791a1ec007a80607ab41eae108c6f181dc687a001ea0188c30230e04231a070781a1e0007a806230c08c38108c63201d46877001ea0181ead0c8c61181d06876008c3b230e02230fc50ab1a1d48c2a048bfb22fc82230ac3386873230a011f6f08bfa22ea03230a8406d1a1c80077a81de9077a03230a0506c1a1c48c242308822308c8c2122ffc3230943186870001cb922fe0223090514686f23080122fe07eb9077a0323088410686e001cb9048c20101ac686d⟩, ⟨0x13d09304481fc0ed06e032016e0a604601e00ca04e01d009c026000, 0x8c28047f2a22fe88ba80c8cf9101b468b4007dbc1fca88bf80c8cf61418068b3008ba822fa48be80c8cec1c2b068b0001deb07ad42233a850a51a2bc0230b88be8088ce8142ac68ae008c7a230c48ca00c8cbd1c29868ac001eb307abc2232ec50a51a2ac0232d48ca0088cb9142ac68aa232c88ca2088be9232848c7a0c8c7b0c1c068a9232b41232848be9088cb20c1f068a8232bc1232948ca7088cb11091a29c8cad048c31232848be90c8caf101b468a6001eb307abc1eb40c8cad141b068a5008c7a230c48ca00c8ca615f1a28c0230c48c7a2328032328c50601a2888c77048c75230c82231e033868a0⟩, ⟨0x12b08b84101e20de06883041620a004681d00c604c01c0090026000, 0x66dc19b3070e43238c4506c1a3a80124cc493c124ec3238b857c68e9008e21238988e250c8e2c15f1a3a08de9048de7237842237a833868e6008de0048de910d1a3940236fc7f65088de81941a3900070066cc22379450731a38c0220c07ffb088da0142ac68e0235b41235a08d63088d6e0ce1a2fc8d6c235ac2235a08d6a2358c3235b431868be007eed1fbb82235b040721a2f47efd047eed1fbb81cbd0c8d6b101c468bc007def1fbb41cb90c8d691418068bb0049341fbb488ee0c8d3e1c2b068b9001c63071b42234f050a51a2e08cf9048cf5233c02233e833868b5⟩, ⟨0x137095045c2080f407383581860b004e82280e605c01e00a0028000, 0x23ca0123cd447068fe008f25224a48f260c8f3419b1a3f4023c90892923c98323cc466868fc001c77070b4223cb856468fb001c34048ef71581a3dc023bd48e25088ef9142ac68f6222f01128b44a27088e710ce1a3d0882a048820220882239c033868f3238f41124f84935088e3f1091a3c88e3c044935124f82238f433868f1238dc1124cc4934124f43238f0406d1a3c08e3704493c124d0493d0c8e38101b468ef238d88e2b238cc3124d08e2723898493d108e370c2a868ee238d012389c4934088e360c1f068ed001c62070e81c380c8e34141b068ec238c41124f48e26088e330c1f068eb⟩, ⟨0x10f07b03981a00bf057028411c07a03601840aa0420170084026000, 0x8fed23fac223fb08fea23f9c323fb83186934008fe123ee4223fb4514693323fa4123ee48fe323f98323fac4106932008fbf23ef4223fa460bd1a4c40071d41c74088fe7142f06930008fb9048fbc1401a4bc8fb4044beb12fb8223ed4338692d23ec8112fa84bed088fb4103a4692c001c32048fb2142c8692b00023eac613c1a4a401ad048faa14f1a4a08f73048f3f23bf0223dd03386925227a41225808929088f73103a46924008f26048f6511c1a4880224fc123d8050b51a4848f35048f3323ca4223cd833868ff⟩, ⟨0x11008003cc1cc0d305e02a412a08403981800a6040016007801c000, 0x7c3a227bc2262d4404696d007ca70498b11401a5b00079f81262845606969261d81260c898340898770ce1a5948bee048be922fa86ce70c9876101b46964231c412319c8c690898740ce1a58c0230c06ce71b4f032619c70ac1a580007ab41eb708986514294693f00983f1b4f022618c50ab1a4f8022ea08be922fa03260cc57c693c008922048fff11c1a4ec8ffb048fbb23ed8223ff0338693923fe4123ee88f24088ffb102d86938001c76048ff9142c86937004bb523ef4223fd85146936001c2f048ff4142f86935⟩, ⟨0x10f08003b41be0cc05f82b013008a03e81a80ba04a01b809c028000, 0x705e208997f141cc69a91bb9411b0946c3108996d0ce1a6980079f81264cc50ba1a6906cae046ca71b2a42264c833869a200987e04993111c1a68499290498f4263b82264a8338697c2649c1263cc98bc089929102d8697b001e7c049927142c8697a0098f20498f51401a5e498ec0498ea263802263b433869770098bf0498ec11c1a5d80262f47cbc261f83263ac66c69750098bc1f2f0987e0c98e819a1a5d00079f41e770898e51591a5cc98ba0498b0262b02262ec33869711f6cc11f2e47cbc0898ba102d86970⟩, ⟨0x11508203cc1c00c905b028c11807b033815408e03c0180074020000, 0x73981ce2089a2e1429469e0009a281b1bc2268b050ab1a6fc9a200499fe266b422688433869bd267e011a1f899f0265e0326880406d1a6f001a0e4687e267983267fc57c69bb267e81267c499f30899fc1091a6e899f8046839267c099780c99fa101b469b9016fd7817843267e0506c1a6e001a1f86839267983267c850601a6d805bb1a1f899e60c99ee21e1a6d405bb5e00899ec19d1a6d000099ab183d469af016ec1266a853c69ae2668c126684997b0899a40ce1a6b00265e812668c43469ab009979265d022668865069aa⟩, ⟨0xf807703881a20c4059828011a080038018409c0410188084028000, 0x26ac065469f3001c4126abc53c69f2012269e09a760c9aa621e1a7c00481d0226a9067469ef009a7e269d8226a8850ab1a7b80268c89a78269d83269ec57c69ed269d01269c89a6c089a750ce1a7b00269ac1269d043469eb009a6a269902269cc65069ea001c01d82269c050731a7a49a62049a60268dc22698c33869e7009a36049a6210d1a7980268d09a32089a6118c1a79400710c9a320c9a3e1cb1a79000710c2268f062869e3004cb9169b46c6f0c9a301c29869e1⟩, ⟨0xe706b832816e0aa04d02240f8071032816809c03b017007801a000, 0x2f30c9b220c9b3d1cb1a8b802f30c226cec6286a2d26cc4126cbc9b26089b320ce1a8ac026c94126cc44346a2a009b2326bf8226cc06506a2900126c889afe0c9b2d1531a8a0004bd4226cac5486a2700026be860fe1a89002f3049af914f1a88c0009af1185c06a21013ec126bc053c6a2026b84126afc9ab6089ae20ce1a7e8026ad4126b8443469f9009ab4269e0226b8065069f8001268c89a780c9abd1531a7dc0041cc226aec54869f6⟩ ] def tableLRR : Table Block := .branch 12 tableLRRL tableLRRR def tableLR : Table Block := .branch 24 tableLRL tableLRR def tableL : Table Block := .branch 49 tableLL tableLR def tableRLLL : Table Block := .leaf #[ ⟨0x12b08f04381fa0f006c82e414a09103f01ac0b00410180074020000, 0x26efc126fac4346a68009bbc26ef4226fa86506a6700626eec9bbd0c9be71531a998018eb4226f945486a6526ee41169b48c301b1c0326ee8406d1a98c9bb826ed06ca10c8c3026ecc6c7e1b1c0426ee430aa1a9889bb6049bb3230c0226ee0307c1a984007ab01ea407a88326ed8506c1a980026ec86c7e1b288326ed457c6a3f16cc41165f4597f089bb10ce1a8f89b77049a7a26db8226de44246a3926dd41269e09a79269a4326ddc406d1a8e000730740750c9b75141b06a3726d84126cfc9b36089b620ce1a8c4026cd4126d844346a30009b3326c88226d806306a2f⟩, ⟨0xfb075036c1900bb0558268114077032015c08e037015007c026000, 0xf8d03e6f089d22143bc6aa000607cf022748050ea1a9fc9cab049ca9272802272b03386a7e009c7f049cab10d1a9f40271f49c79089caa1941a9f000b7b09c79089ca7143ac6a7b001c01e6b089ca5143a86a7a170f81170dc5c39089c640ce1a9d89c29049c2726ff82270a83386a73009bfd049c2910d1a9c8026fec9bbb089c2818c1a9c403ab209bbb0c9c251cb1a9c003ab2022708c6286a6f00026fd060f21a9b003ab049bf314f1a9ac9beb049be926f80226fb03386a69⟩, ⟨0x12308783f01ca0d105f02c414209004081b80b60440180074020000, 0xb6e89c790e6883276cc50601aad09dac049d72275d02276b84246ab3276a810b6e89d710fd943276b0406d1aac8007eac1f3a07cec3276a8506c1aac49da6049da4275ec22769c3386ab0009d7a049da610d1aabc0275e43fa9089da51941aab800f9983fa9089da2143bc6aad00607eb822768050ea1aab00271e42dba0e6883275cc57c6aa9003fa90fd943fa80c9d6015f1aaa03f37043e6f0f9c03e660c9d2f101b46aa5003e340f9bc3e6d0c9d2b141806aa4274981274909cfb089d270ce1aa8c0273e81274984346aa2009cf80f9bc2274946506aa1⟩, ⟨0x123088040c1e00dd066830016409f04581c80c404c01d80a802e000, 0x9e63049e61278dc2279903386ae8009e36049e6311c1ab9c0278d09e21278b432798866c6ae6009e32278849e2d0c9e3f19a1ab940076d41daf089e3c1591ab900278981278b05006ae2009e26049e2a142d46ae1277d81277a09df1089df81091aafc00bfe42a710a9ac3277d870651aaf89df3277c02277c89def277ac3277d03186abd009dec0bfe42277cc5146abc277b810bfe49ded277a83277c04106abb002a6b0a9c42277b850641aae8007f941fe3089deb1418c6ab9276d01276c89d6d089db50ce1aad89daa049c79275c43f650c9db4101b46ab5⟩, ⟨0x10807a83841a60c605c02ac13a08a03e81a80ae047018007001c000, 0x27cc410e5ac3966089f320ce1ac849f2f04396a0e48c227cc440b61ac80007e98127cbc50b21abfc007fb4127c984706afb001dae049ef9142c86af9009e2d049eed11c1abd80077f8127b9050ba1abd49ebc049eba27ac0227af43386af3009eaf049ebc11c1abc8027ab49e2107fb4327aec66c6af1009e65278841fed0c9eb819a1abc00077f41daf089eb51591abbc9eac279b42279949e6c089e660c2dc6aed27aa81279b09e65089eac0c2cc6aec001dfc049eaa142c86aeb009e6a049e6e142d46aea⟩, ⟨0x141098047421a0fa076838019a0ba05382400fa06a029809c026000, 0xbffc2ff8089fea144e06b3b001bfd0b39c29a30c9fbc21e1ace0006ff41db0089fba19d1acdc287304286b0a1b4227ec43386b36006fb4049fa911c1accc00e3b8127dfc4706b2f274bc1274a89d2c089f7d0ce1acb89f65049f3c27d88227d9c4246b2b27d90127d889f3c089f650ce1aca89f3e043fa90a0ac3faa0c9f64101b46b2927d8010feac4822089f611091aca09f3f0448220feac227d803386b2727cf810fd94282b0fea8327cfc406d1ac983fa20fffc3ffe0fecc3faf14282b0fdf83f7d0fec83fac0fea8627cf831611ac9400fd943fa90fea0327cf450601ac902a2b042a240a898227cdc3386b22⟩, ⟨0x134090043c2020ee06d03301720a604902100e206102a00a0028000, 0x2b760adbc2b750ca93d1c2986b7a001c270708022a4ec50a51ade4007b8812a4b050ba1add8a92504a9212a48c22a4983386b741f4e011f3e47ce108a925103a46b73007cf804a922142d46b720a19810a0e8283d08a8e10ce1adb8a8b704a8722a1b422a2e03386b6c2a2d412a1c49e3208a8b7102d86b6b001db404a8b5142c86b6a001bfd122c0a8740ca8ad21e1ada0006ff41db208a8ab19d1ad9c02a1c012a1cc5006b6627fac9fe90fdf0482427fc450a9ac38200bffc3f770fd943e66189fed0c5846b3e0fd9810f9983f65089ff10c1f06b3d0e08c10e0802a6b089feb0c1f06b3c⟩, ⟨0x12b08d84281f60e806882f415409604481ec0ce05402080a002e000, 0x2a6e4a96c08a9e61941aec00122c0a96c08a9e3143bc6baf006076c822a78450ea1aeb8a9b704a9752a5b822a6e03386bac2a6d412a5b0a9742a5b432a6dc406d1aeac00788c1db2076cc32a6d4506c1aea8a9b204a97a2a68822a6d04246ba92a2d412a1c49e3208a9b2103a46ba8001db604a9ab1581ae9c02a1c012a5ec50b51ae8c0122c0a96c2a1d032a5d850601ae88a96804a93f0ae9822a5a84246ba02a59c10ae98a93f08a9680ce1adfca9662a59420ae98a9642a4fc32a59c3186b7e002b760a9b422a59840721adf42b70042b760a9b42b6f0ca965101c46b7c⟩, ⟨0x12e08d04041e20db06502e415209603f81ac0b404701a008001a000, 0x29620a28c28250caa601c1946be42a8f4aa3a08aa3c2a8e4aa350caa3e0c61af8c02a8d8296208aa3d1451af88aa380429622a8dcaa340caa3a1041af8400a09428a308aa38141906be0001e3b078e422a8d450631aefc00a588a9e908aa331011aef8aa2d04aa272a7fc22a8b83386bbd2a8ac10b39caa262a7cc32a8b4406d1aef00078841db0076c432a8ac506c1aeec00b3d429a308aa29142ac6bba00aa250b39c29a30caa2815f1aee402a5b4a9f32a7c832a7e457c6bb600a9f32a5b4a9f20ca9f6141806bb52a79c12a794a9bc08a9e80ce1aec802a6ec12a79c4346bb1⟩, ⟨0x13209204441fc0ea06b030c15e0a204581dc0c604f01d809c026000, 0x1f7704aaeb101a86bfa00292407fdcaae40caae815f1afe4aab3049e292788822aad03386bf527be41278a09e2108aab3103a46bf427be41278a09e2108aaae102d86bf32aa9012a9f4aa7a08aaa50ce1afc49eaa049e6c2799422aa9040b61afc00279a812a9f85006bef27bb0aa76089e2d07fb4207fb831641afb4aa75041fed278b422a9d830b31afb0aa6804a9f40a4c022a9c0307c1afa829340429310a09422a9b0307c1afa40078901e220789432a9a0506c1afa0006ff4293007fb032a99c70a71af9c00a588293807fb032a99450661af98aa6004aa312a8ec22a9884246be5⟩, ⟨0x13108d04241ea0e206a831416c09f04581e00c204d01a009001c000, 0xab6d04487e2ad94ab300cab6f101b46c2f001f01f44c832adb4506c1b0b80121e8487e2ad8c32ada450601b0b0ab3e04ab3c2acd822acfc3386c2b00ab3504ab3e10d1b0a802acd0ab2c08ab3d1941b0a4007013308ab3a141cc6c282abd010a490aae61b9bc32ac94406d1b094007fdc29242ab9032ac8850601b090aaf604aae72ab8422abdc3386c212abd0107fdcaae61b9bc32abd8406d1b080007de41f7807ddc32abd0506c1affcaaf02abb822abbcaaed2abac32abc43186bfe001e612ab9022abc05146bfd2abb012ab9028e107ddc32abb84106bfc001e6104aaec101ac6bfb⟩, ⟨0x11b08583d41c80d306002b013208503b81a40ac04901b008c026000, 0x2b084abbd08ac2c1451b184ac2804abbd2b09cac240cac2a1041b18002affcabfd08ac28182f46c3f001a250689022b09450bc1b0f8abf904abf82afd422afe83386c3d23ec8112fa84bed08abf9102d86c3c2afc412af80abeb08abf31091b0e8abe604abbf2aed822afc440e91b0e400689812af9850b21b0dc02aef412af8450b51b0d8abb304abb12ae9c22aed03386c3500aba604abb311c1b0d002ae8caba22ae9032aec866c6c3300aba02ae88aba40cabaf19a1b0c800678c19bd08abac1591b0c4ab6f04ab682ada822adc44246c30⟩ ] def tableRLLR : Table Block := .leaf #[ ⟨0xf3071834818a0ba057028c12e08403b819c0b004601b809c032000, 0x2b2dcacb108ace41941b1e00185efc2b2c432b38454c6c770066a708acbf1521b1d8000acac183f06c72019fc12b2ac53c6c710002b284613d1b1bc03b704aca014f1b1b8ac7704ac752b1bc22b1e03386c6b00ac6e04ac7710d1b1a802b1b4ac3b08ac761941b1a400706aa08ac73141cc6c68019fcac3b2b0c432b1948786c66019fc19e008ac6319d1b19402b0c4abff08ac371451b19000678412b0d450be1b18cac2c2b0a822b0acac292b09432b0b43186c62⟩, ⟨0x12208784081de0dc06602e414408f03e01940a8040017008001a000, 0x2b5b412b5acad6108ad6e0ce1b2c002b58012b5b44706caf00ad3d2ae88ad3e0cad6c19b1b2b802aed8aba22b4f832b5a46686cad001a27066f422b5985646cac2b4b012b4a8acb208ad2d0ce1b2a0ad2404acb12b3f8ac6c0cad2c101b46ca7005efc2b2c4acf40cad2b15f1b298ad2604acff2b48422b4a04246ca52b490117bf0acfe2b1b032b498406d1b29006a76a86a90cad24141b06ca300acb117bf0acf40cad20141806ca1019fcacb12b3d032b3f08786ca0019fdaa022b3e86746c7f2b39412b38cacba08ace60ce1b1e802b2e412b3944346c79⟩, ⟨0x12a08b84241ec0e206802f415209603f81ac0b0044019807c01c000, 0x19fc687e2baf032bb9c90a31b3a0067f5e008aee519d1b39c067f067a819e80caeab182a06ce62ba9412b9f0aea408aea70c1f06ce501aa9a8819e90caea5141b06ce400ac6c2b9ecae7a0caea115f1b38c02b9ecac6c2b9e832b9f850601b388ae6404ae242b89c22b9984246ce02b98812b7fcae202b89832b990406d1b2fc0071a41c65071a832b988506c1b2f80173f4adff2b7f832b89457c6cb800adff173f4adfe0cae22141806cb7001a6b069a422b7dc50611b2d40069a81a67066fc32b7b050621b2d000699c1a2308ade3142ec6cb2001a2804ad72142e86cb1⟩, ⟨0x12908b04241f20eb06c031c16809d04501dc0c004f01e0098028000, 0xaf6404af622bcf022bd943386cfc00af3b04af6410d1b3ec00719caf3908af631941b3e800719c12bd8040691b3e4ad2604acff2b48422bcd83386cf700acf12b3d022bcc850ab1b3d8af3004af2e2bca422bcc43386cf52bc9011a1f8aee92b9ec32bcc0406d1b3d001a0e4687e2baf032bcbc57c6cf32bc9812bba8aeec08af281091b3c8af240468392bba4ae7b0caf26101b46cf1016fd781a8432bc90506c1b3c0aeff04aefa2bbf022bc844246cef2baac167f2baa4ae700caeff182a46cee019fcaea42baa032bbec75c6cec00687e1a0e4aebc0caeeb141806ce9⟩, ⟨0x14009384581fe0e5068830015809904101b80aa0450178084026000, 0x2bef8afbd08afad2bef0afa80cafbf0c61b4c402b9b0afac08afbe101c86d302beec12b9b0afac069b432bef440711b4bcafb92bec822beb0afb1069b432beec30701b4b80067f41a61069a432bee4506f1b4b40069b81a6d08afb3141b86d2b00afab2b9b01a690cafae141806d2a2be9812bddcaf7008afa70ce1b4a0afa404af392bdd85cfd0cafa6101b46d27001c680719c1c660cafa4141b06d262be80af7e08af7f2bdf4af7b0cafa10c61b4940069a4af7308afa01451b490af7c04af732b7cc1c660caf7e1041b48c0069a412bdf0406b1b48800719812bdec406a1b48402bdd4af392bdcc32bde057c6d20⟩, ⟨0x135092845c2080f106c831015e09d04601dc0c804d01c8094028000, 0x6dfcb8f908b9261941b59c006dfc12e48c40691b59802e3b8ae262e3b032e3c457c6d642e39c12e1dcb87108b8e80ce1b588b8e5041c3618b8762b7fc42e39c60791b5840070d860718c1c6410b8e5181dc6d60001c361849342e1d042e28880751b4f00070d860718c32e28060741b4ec02e1e8b87408b87e142ac6d3a001c361849342e1d042e1e070781b4e4b86d04ae212b99c22e1bc4246d372b9881173f4ae202b89832e1b4406d1b4d80068841a20067a032e0a850621b4d402b9c0ae6c2bf8432e09470681b4d00067fc19fd08b8231419c6d3300afe22bf84aea80caffd142e46d32⟩, ⟨0x12508b84101e00df06702ec14808f03b01980a004201a008001a000, 0x6df812e79840691b688ae6404ae242b89c22e6e43386d7f005cfd2b7fcadfe0cb9af1c2986d7b001c690719422e6b450a51b5e802e69cadfe08b9ab142ac6d792e5fc12e5e8b97c08b9a11091b5d8b8e50449342e1d8adff0cb97f101b46d75001c361849342e1d042e5ec70761b5ccb9652e58c22e590b9622e58032e5983186d710019a92e4dc22e5945146d702e58412e4dcb93d06df432e58c4106d6f0019a904b961101ac6d6e001b7d04b960101a86d6d00b9382e3e4b9370cb93b141806d6c2e49c12e494b8ff08b9280ce1b5a402e3f812e49c4346d68⟩, ⟨0x13a09304541f80eb06a02e814c09504081b80ae0430180074020000, 0xb96a2e5a4ba340cba3c1c1a06db600193f064f422e8e850671b6d4ba312e8c022e880ba2f2e7f032e8c83186db400b9692e7fc22e8c440721b6ccba2e04b9692e7fc19ad0cba30101c46db22e8b0ba2508b9ff2e89019ad0cba2e0c1c06db100193d0668419a90cba2c141bc6db00019ae066b422e898506e1b6b802e3d8b969066a432e88450601b6b4b9fa04b9f42e7c422e7ec3386dab2e7e012e4e0b9392e3b832e7e8406d1b6a8006dfc1b7e06df432e7e0506c1b6a402e3e4b9382e4dc32e7d457c6da82e7a812e7a0b9e208b9eb0ce1b69402e78412e7a84346da4001b7e2e4e022e7a46506da3⟩, ⟨0x12e08d841c1e80e206882f415809804281c40b00480190084020000, 0xbb31265e0bb3d0cbb6315f1b7b00265e0bb312ecf432ed8050601b7ac05bb2ecdcba780cbb3c1c29c6dea016ecbb372e9e032ece875c6de90019ab066a422ec9850611b7900066a819a7063fc32ebec50621b78c00669c196308baeb142ec6de10019610658019280cbaa2141886de02e9c012e980ba6b08ba721091b6f802e8fcb9692e5a832e9c070651b6f4ba6d2e9a822e9b0ba692e99432e9b83186dbc00ba662e8fc22e9b45146dbb2e9a012e8fcba672e99032e9a84106dba00b96a2e5a422e9a050641b6e40064fc193d08ba651418c6db800ba3f2e8f822e98c4046db7⟩, ⟨0x14409884782200fd07383501820aa04b82100da04d01c8098024000, 0x9bbb26ef4bba90cbbba15f1b7fc05bb26ef4bba90cbbb72428c6dfe016eceb822eed46746dfd2edfc12ece4bb7c08bba11091b7f0bb69056ecbb382e5a832edfc60a91b7ecbb7204bb3f2ecc822edd04246df72edc412ecc8bb3f08bb720ce1b7d8bb6c04bb312e5a8bb3e0cbb71101b46df52edb812ed88bb6408bb701091b7d0bb6d04bb642ed8822edb83386df32edb01265e0b96a2ecf832edb4406d1b7c8bb6b2ececbb680cb96a2ece0bb372ecf842edb030aa1b7c4bb6904bb382e5a822edac307c1b7c005bb064a819280cbb69182a06def2ed9812ecf8bb3708bb680c1f06dee0179978819290cbb66141b06ded⟩, ⟨0x13508f84381fa0ed06d030c15e09b04401c40ba04c01d80a0022000, 0xbc2e04bc252f0b4bc2a0cbc301041b8cc02e3c8b8f608bc2e141906e320019a30668422f0ac50631b8c402f094bc2408bc291011b8c0bc2204bbfe2efec22f08c3386e2f2f08012e3b8b8ef1fbb432f088406d1b8b8006e801c6b071b032f080506c1b8b402b898b8ee2e3b032effc50601b8b0bbf904b93a2e4d022efe83386e2a2e7e012e3e4b9392e3b832efe4406d1b8a402e3b8ae262e3b032efdc70ac1b8a0006e801c6b08bbf5142946e2700b9bc2e3b022efcc50ab1b898bbe304bbb92eeec22ef944246e232ef84126ef4bbaa2ecc432ef8c406d1b88803ad3ae5e50cbbe1141b06e21⟩, ⟨0x13909384602080f106c031c16009d04481d40c205001e80a4020000, 0x5bb265d0babd0cbce821e1b99405bb063f822f3986746e640099742f2f8babd0cbce1141806e632f2e812f2d4bcb208bcbb0ce1b988bcb92f2e022f2d4bcb72f2c832f2e83186e6100b8f62e7fc22f2e440721b980ba2e04b8f62e7fc19ad0cbcb8101c46e3f00b9692e3d819a90cbcb615f1b8f802eafcbabe2eaf432f2a450661b8f000669419a4065a832f1c050621b8ec02e3c8b8f62f0f032f1a870681b8e400668c19a108bc681419c6e382f0d812f098bc3108bc381091b8dc02f094b8f62e3c832f0d870651b8d8bc332f0c022f0c8bc2f2f0ac32f0d03186e3500bc2c2f09422f0cc5146e34⟩ ] def tableRLL : Table Block := .branch 12 tableRLLL tableRLLR def tableRLRL : Table Block := .leaf #[ ⟨0x11107e83a81a80c1057827011207c036016c098038013005c018000, 0x65b8196c065bc32f5dc506c1b9ecbd7104bd6a2f5b022f5cc4246e7a2f5bc15bb2f59cb8f20cbd71182a46e79016ec1970065a832f5bc60a81b9e005bb2f598bc3b0cbd6b1d71b9d805bb2f598bc3b0cbd691c29c6e752f4fc12f4f4bd3408bd600ce1b9cc02f4cc12f4fc4346e7200bd312f4a022f4f86506e7100bcf32f4a022f4ec50ef1b9c0018192008bd39143a86e6f00bcf32f4a0bcfb0cbd2b141806e6c016ecbcf32f3ec32f4988786e6b016ec192008bd2419d1b9a8000bcf1184ac6e6800e9412f3c053c6e67⟩, ⟨0x11908303e41d20d806482d813e08e03d019c0a6040019808c028000, 0xbe3104be2f2f89822f8c83386eb000be2504be3110d1babc02f88cbcbe08be301941bab80265e0bcbe08be2d143ac6ead001c178822f8ac50ea1bab0bdff04bdf82f7e822f8844246eaa2f7f4126c88bdf52f6ec32f7fc406d1baa402f52f63a70cbdfd141b06ea8009afe26c88bdf30cbdf9141806ea700bcf42f5d4bd740cbdb115f1ba9002f5d4bcf42f5d032f6b850601ba8cbda804bda62f68022f6a43386ea100bd7f04bda810d1ba8002f5f8bcf308bda71941b9fc00705e608bda4141cc6e7e2f5bc12f59cb8f208bd7c0c1f06e7c⟩, ⟨0x1530a284b823610407803741940b305002240ec05f02580d0028000, 0x3a52f608beab19d1bb94be7904bcbe2f2fcbd750cbe7e101b46ee22f9ec12f9c4be7308be7d1091bb84be790499742f2fcbd750cbe7b101b46ee000196b063f818ff0cbe79141b06ebf00bcbe265d0babd0cbe7215f1baf4be6604be642f3d422f99c3386ebb2f8f412f3ccbd292f3d032f998406d1bae802f4a0bcf32f3ec32f99457c6eb92f8e012f3d0b8f22f5d832f988406d1badcbe3f04bd2a2f4b022f9844246eb62f8f412f4a0bd292f3d032f8fc406d1bad40065b419200648432f8f4506c1bad0be3804bd752e3c8bd760cbe39101b46eb32f5f0bd682f8dc32e3c8bd672f598bd7610be380c2a86eb22f5dc12f5d8bd6608be370c1f06eb1⟩, ⟨0x12908c840c1e20df06782f012c08903b017c09a03f01a0098026000, 0x2ff80bf7d08bfe71451bca4bfe204bf7d2ff84bfbe0cbfe41041bca0006ff512fedc32ff8871731bc9c006ff510769032fefc61721bc9802fdf4bfba08bfbd1011bc9438e10438ba0e2f022fddc3386f2327fac9fe90fdf03f78102a6b0e0802fff0fddc3e66149fed0c4c46f20004bbb04bf341401bbdcbf2e04b8f02e3a422fcbc3386ef62f08012b898b8ef1fbb432fcb8406d1bbd4012713c904f390cbefc21e1bbc0012712c08befa19d1bbbc000bee6185c46eec003e5108bee5143886eeb2f9f812f380be6b08bebd1091bba403a526bf8bdf30cbead2428c6ee6⟩, ⟨0x12108a84281f60e806d830816409b04581e00d005402080b8032000, 0x4308c86318a1bcf8000c837185d46f3b001bfd442320d850e21bce8c82f04c82c320842320c03386f3800c82004c82f10d1bcdcc82d320ac2320b0c8253209c3320b83186f3600bfff2fedc2320b46506f35320a812fedcbfff320983320ac406d1bcd000512ffe03320a8612f1bccc00512ffe0bfb710c8281c4b86f32001441da30cc825184b46f3100bff12ffc8bfef0cbff7141806f2e00bff22ffc4bfef0cbff515f1bcb4bfea04bfbb2ff9422ffb04246f2c001bfd44bf7d2fedc42ffa881741bcacbfe72ff9022ff98bfe32fefc32ffa03186f2a⟩, ⟨0x11b08403c41bc0ca05c829813208903c01a80a603f016007c01e000, 0xc8e904bff4321c82323ac4246f71321b412ffc4bff32ffe03323a4406d1bdc05af6045aef16bc423239c3386f6f0059b4168905a230cc8b31c2986f6e001ee807b982322c450a51bdb4c8a504c8a3321e82322983386f6c00c87904c8a510d1bdac0321dcbff108c8a41941bda8004bff22ffc433228454c6f69001076802321fc5486f68321b412ffc8bff32ffe03321bc406d1bd940076801da1076883321b4506c1bd90c86904c867320f82321a83386f6200c83d04c86910d1bd840320ecbff208c86818c1bd8000432ffc833219472c6f3f⟩, ⟨0x11e08283d41bc0ce05d82ac13008b03d81b40a8044017007c020000, 0x325ecc97908c97a325ccc9750cc97c0c61bea00325b0c92c08c97b1941be9cc97804c92c325b0c9740cc979101b46fa600604c9680cc978184bc6fa500604c968324b04325d8712e1be90018107ccc3325cc612d1be8cc96604c964324f823259c3386fa100c93d04c96610d1be80007cc0c93b08c9651941bdfc007cc013258840691bdf8c937324d42324d8c934324c83324e03186f7c00c92d323dc2324dc5146f7b324cc1323dcc92f324c43324d44106f7a011324b02324cc51271bde40441f3608c932145d86f7800c8f7324b42324c04046f77⟩, ⟨0x11508203d41c40cf05c029012208403a018c0aa04301a008001a000, 0x73d73a6b20cca24141886fbe01cf9cf02327e050611bef039610438f80e4f02327ac3386fba327a413269cc9a108c9ea0ce1bee4c9e704c93b32698c9680cc9e9101b46fb8001f3007cc41f320cc9e7141b06fb73278c132784c9b808c9e40ce1bed80326dc13278c4346fb500c9b5326942327886506fb4006324ecc9a50cc9bf1531becc0181f3008c9bd1521bec8044c9a5326903326c451781bebc0441f3108c9af145dc6fae00c9a5324ecc9a40cc9a8141806fad325f41325e8c96f08c97e0ce1bea80325b81325f44346fa9⟩, ⟨0x10907d03a01b40ca05e829012807e0368178096037015007001e000, 0x702fc08cb37141cc6ff100bc4cb2132be0332cac8786fef00bc5acc232ca46746fee00caf832b98232bf85146fed01ad0132bf050be1bfb0caf332bc4232bc8caf032bb0332bd03186feb00cae832ac0232bcc5146fea32bbc132ac0caee32bac332bc44106fe900cae632b90232bbc60bd1bfa006f86f708caec142f06fe732af8132acccaaa08cabf0ce1bf98cab904cab232a8c232af840e91bf9406f904cab9142c86fe400cab004cab4142d46fe301bec1329f050ba1bf84073a6f608ca3a142ec6fbf⟩, ⟨0x12108703e81c20d105d82a813208903a81880a80430180074020000, 0xcba904cb7932e90232eac424782300cb711fbb4cb750ccba91c194782232e98cba308cba532e88cb7e0ccba70c61e084032dfccb7108cba61451e080cba104cb7132e80cb7d0ccba31041bffc032dd47eed08cba1141906ffe001c6f071b4232df850631bff4032dc4cb7808cb7c1011bff0032dc4cb7023894332dd050661bfec02f1125b0cb630ccb6e2428c6ffa00bc46d8232db06746ff9004afd32d8c232da850ab1bfe00125c0496c32d8c332d9c57c6ff732cec132ce4cb3308cb3c0ce1bfd0032cc8132cec4346ff300cb3132c84232ce86506ff2⟩, ⟨0x12008503f41de0dc06482f015209604401d40bc04d01c8094028000, 0x330c81330a4c9f4067d83330d0410783601cf01330c8406b1e0d40067d81330c4406a1e0d00330accc22330a43330b857c783332ffc132ff4cbf308cc200ce1e0c4032fc8132ffc470783000cbf032a84ca7a0ccbfe19b1e0bc032a8ccaa1329e8332fec668782e01be9ac0232fe0564782d32f9c132d98cb6008cbe80ce1e0accbe504496c32d94cb2d0ccbe7101b4782a006d46d8bec332f94506c1e0a40071c41c70070e0332ef050621e0a0032dd47eed32dc0332ee470681e09c0071bc1c6d08cbb71419c782600cb7132dc08e250ccbb1142e47825⟩, ⟨0x146099048421c0f6070833816e0a204681e00cc05301e00a001e000, 0xcc22330acccb20cccb514180786b00cc6b331982332a050ab1e1a0cca504cca3331802332983387867331f41067986331d0cc3f10cca5181e478660019e618cc683319843329070781e194cc7f04cc75331dc2332844247863331f41331a0cc74330fc3331fc406d1e1880067986067cc19f410cc7d181dc78610019e618cc68331984331d870761e0fc0067986331a0cc6610cc72201d4783e0019e61819f30ccc70181d0783d330f01330b4cc2308cc3d0ce1e0eccc3a04cc22330b07ae10ccc3c101b4783a0019f8067dc19f60ccc3a141b07839330d8cc3408cc35330cccc310ccc370c61e0e0073c330a42330d85147837⟩ ] def tableRLRR : Table Block := .leaf #[ ⟨0x12008883f81e20e1069830015209504081b40b8049019007801c000, 0x19e6182334fc50e21e280cd3404cd32334b02334d4338787e00cd2b04cd3410d1e1f40067e0cc2b08cd331941e1f00067e01334c040691e1ec016ce4cce7333943334a057c7878333f4116ce4ccf2333d43333fc406d1e1d80068f41a3b068f83333f4506c1e1d403339c5b39333943333d050601e1cc016ce4cce7333943333c070a61e1c80068f41a3b08ccee142947871333801332d0ccac08cce10ce1e1c0ccbe04cc2b332cc5b390ccce0101b4786f0019f8067dc1a3c0cccbe141b0786e01cf0ccb208ccbb143b0786d001a3c04ccba101a8786c⟩, ⟨0x11d08603ec1d00db06582f415409303f81a00a80410168070016000, 0x67e419f508cdbe1429478b400cce3336e42336f050ab1e2cccdb404cdb2336b02336d433878b200cdab04cdb410d1e2c40067dccc2208cdb31941e2c00067dc1336c040691e2bccda604cda4335fc23369c33878ac335e813358ccd702beac333698406d1e2ac0333d4cd633358833369450601e2a8cd7a04ccf5335c0afab0ccd7c101b478a800197d068fc1a600ccd7a141b078a700cd63333d4cd620ccd7215f1e29403358cccf5335883335b470ac1e2900065f41a3f08cd6b1429478a300cd65335882335a450ab1e288000cd60183e078a1⟩, ⟨0x142095845c2000ec06c830815c09b04201c00ba04901c009c028000, 0x339b811eb84cde3337983339d8406d1e3ac0330fc7ae1336e43339d450601e3a8ce6e04cc3f3378ccde60cce70101b478e80019f9067d419fa0cce6e141b078e733990133988ce2108ce650ce1e390ce3d04ce20338dcae6c0cce64101b478e300cde633880ce2d0cce631418078e2338fc1338e0ce3a08ce611091e384ce3d04cde6338dcae6c0cce3f101b478e0001939067ec19fc0cce3d141b078bf00ce2033798ce2d0cce3915f1e2f4033880cde6338b43338d070ac1e2f00064e419fb08ce321429478bb00ce27338b42338c050ab1e2e801eb84cc3f336e433379457c78b6007ae1330fccdb90ccde01c29878b5⟩, ⟨0x12108503d81ca0d205d82a812e08a03d01ac0b004501b8098026000, 0x8be4046d7d22ed429f50cd87a101b4792d006cb81b5f48bb30cd87714180792c0059e7166ec2360e050ab1e490cfff04cfa933eb023608442478ff33ff410f984cfa833eac333ffc406d1e3f800620630ff0ccffd141b078fd33f80133ef8cfb808cfe10ce1e3e8033edc133f8043478f900cfb633ec8233efc65078f8001c0480233ef050731e3dc00f8803e6133df8333ea857c78f4003e43e6133df8333e9490a31e3cc00f906308cfa319d1e3c8017bb8cf7e08cfa1142ac78f12e5fc12e5e8b97c08cf2f0ce1e3c0ce7604ce74339982339dc33878ec⟩, ⟨0x11308183cc1c60d606182bc14208803c01880a20400198098026000, 0x66c0d92b08d9361c31e5880066c019b408d9331821e5840363c4d92e08d9311011e5800363b41363c0500793f363941362c0d8aa08d8e60ce1e4f0d8e304d8af2ae8023639440b61e4ec00678813638c50b21e4e8d8be362f02362f4d8bb362e03362fc318793900d8b2362b82362f85147938362e81362b8d8b4362dc3362f0410793700ac312b6b42362e860bd1e4d800678419bf08d8b8142f0793500d8ae04d8b11401e4d000679013628456079312e1b412b884ae6708d87e0ce1e4c0d87a04d876361cc2361ec338792e⟩, ⟨0x12d08d04181f00e506c02fc15e09804401d40ca05201f809802c000, 0xd97804d8ef363a42365e43387974365d81363b8aba208d978102d879730019bc04d976142c87972365cc1365c0d96508d9740ce1e5c00365901365cc434796f365c4d96f08d970365a4d96b0cd9720c61e5b803658cd92b08d9711941e5b4d96e04d92b3658cd96a0cd96f101b4796c00144493c0cd96e184bc796b00144493c364ac4365b0712e1e5a80051066cc3365a4612d1e5a4d93e04d92f364e423658042479670019b0363c4d92b0cd93e2081e598d93b364e02364e8d937364cc3364f0318796500d934363c42364ec5147964364d81363c4d935364c83364e04107963⟩, ⟨0x12c08c04141e20e006682d814408f03c01900a203d016006c01a000, 0x1939064d4193a0cda28141b079aa00ce20367c4d9f00cda2115f1e6a0033880d9f1367c03367f070a61e69c0064e4193508d9fa1429479a6367b81367b0d9a908d9ef0ce1e694d9e604d9a8366f4b9690cd9ee101b479a400d9af366a0d9ae0cd9ed1418079a3367a01366f8d9e008d9ea1091e684d9e604d9af366f4b9690cd9e8101b479a000186f064ec193c0cd9e6141b0797f00d9a8366bcd9ae0cd9bf15f1e5f40366a0d9af366b83366e870ac1e5f00061bc193b08d9b814294797b00d9b2366b82366d850ab1e5e80067901365fc50ba1e5dc02ae901365f44707976⟩, ⟨0x12708c041c1ee0e9068030015409904401e80d805201f00a802e000, 0x67f066f8236b8867479e000bbb02eea4236ad450ab1e6fc02f3ecda7508daab1451e6f0006484136aa450be1e6ecdaa236a80236a84da7f369ec336a8c31879ba00da77369b8236a8851479b9369f81369b8da7d369e8336a8041079b800da75369cc2369f860bd1e6dc006594196408da7b142f079b600da6e04da72142d479b500196804da60142e879b3368d0da3208d9af367fcce200cda2d0c1c079b0368a01367fcd9af08da340c1f079af00d9f133880d9f00cda331418079ae368a8136880da2208da2c1091e6b0da2804d9f1367fcd9af0cda2a101b479ab⟩, ⟨0x14709984801dc0da06302cc13808903c01940a203e0188084024000, 0x66c01c3a070e0336ee060a81e7e00066c08e2623894336edc75c79f71e5d87d6636da87d6e36d8078f71879621e5b4796c1f5ac7d6a1e3d85a241c79f50c59479f41f5b011f5ac796c08db6a0c1f079f31f6a011e3d87d6a08db600c1f079f236cd0136cbcdb3108db361091e7c4a9b50448b02a5d0a96d0cdb34101b479f000a96c122c0a8740cdb3015f1e7b80123b8a87408db2d142ac79ed1affc11afec6ab008db221091e7b06b7b046b7a1ab9c236c80307c1e7acdaf504daf336bb4236bd833879e800daec04daf510d1e79c036bacdaba08daf41941e79800706a208daf1141cc79e5019fcdaba2b6b4336b9087879e1⟩, ⟨0x11f08784041dc0d706182c814809003e81a40b604d01e00a002e000, 0x71a0af7508dc621941e8b00071a01370fc40691e8acdc3704dc2b370902370e03387a29370d412bdd4dc2a0f0a43370dc406d1e8a00071a01c67072b03370d4506c1e89c0069a4dc2908dc32143b07a26001cac04dc31101a87a2500af392bdd4dc290cdc2c141807a2436ff0136fd4dbf708dbfe1091e8888ff9048fba23c90236ff040e91e884023ee4136fd850b51e7fc0071e0136fc050ba1e7f80234dc88ee08dbe2142ac79fc0088f1223bc88ed0cdbe11458c79fb00cbae32dc0236ef050ab1e7e8dbb80419b036ed4cb750cdbba182a479f9⟩, ⟨0x13609284582060f006c831816609c03e01a00a804201a008001a000, 0x39b50e6d023a1ac50ef1e9900181cef08e869143a87a633a0d812b9f4e82408e8371091e8f4e83504e8242b9f423a0d83387a3c3a0c412b1b0cc682b9f033a0d4406d1e8ece83304aea03a0a423a0d04247a3a3a0c813a0a4aea008e8330ce1e8e4e83104ae7b331a0ae7c0ce832101b47a383a0c0e82d2ba9c3331a0e82c2ba90ae7c10e8310c2a87a373a0b813a0b0cc6808e8300c1f07a360019f2067a819e80ce82e141b07a3500e949bbd37ef0337fa48787a3100e94eb8237f9c6747a30009bbd26eecdfbc0cdfbf141807a2f3718c137184dc3b08dc640ce1e8b80370e813718c4347a2d⟩, ⟨0x145099046c2100f4070832816c09904281c40ae0430180074020000, 0xea2b048ca2231ec23a8b44247a7d232b41231e88ca122fa433a8ac406d1e9f03d6c043d670f5a423a6a83387a790eed410ebb03bb008e9a20c1f07a783a5f410e6dce97408e97e0ce1e9d8e97b0439b40e6d83ae40ce97d101b47a75001d3c073bc1cf00ce97b141b07a743a384e8be083b613a2d03ae40eec043a38840e71e9b8e8bf04e8b40ed8423a384307c1e9b400759c1d3f074e433a2fc506c1e9b0e8bd0eed420eb903aec0eec033a2f830701e9ac3aed043aec0eb9023a2f4307c1e9a803a2cc3bb00eebc33a2e057c7a693a1bc13a1b4e86408e8700ce1e99c03a18c13a1bc4347a6600e8610e6d023a1b86507a65⟩, ⟨0x12d09004341e00dc06482ec15a09a04181bc0ac0460180088028000, 0x7d8013ac845607ab21e6ec11e6d079b608eaf50ce1eac479761e7c821e588796d168905ae610eaf41039c7ab0135f81134944c2808eaed103a47aaf0ecf810ecc83b3b08eabd0ce1eab40073cc13a9d850ba1eab001349013a9cc50b51eaacea6704ea373a8c823a9a03387aa93a994116fa4ea36231e833a99c406d1eaa0007ac81eb107ac033a994506c1ea9cea613a8fc23a980ea3e3a8f033a9883187aa6001d783a8d423a9845147aa53a8f413a8d44ff407ac033a8fc4107aa4001d7804ea3d101ac7aa3001eb004ea3c101a87aa2005e3e16fa4ea350cea38141807aa1⟩ ] def tableRLR : Table Block := .branch 12 tableRLRL tableRLRR def tableRL : Table Block := .branch 24 tableRLL tableRLR def tableRRLL : Table Block := .leaf #[ ⟨0x12508903f81da0dc06482e014e09304001b40b404701a0080022000, 0x6cb7046c6c1b1c423b39c3387aeb00796216fec69f10cecba1c2b07ae9001ef307bec23b2e050a51eba003b2c869f108ecb6142ac7ae7229881228f48a3a08eca91091eb940175a469a108eca6142ac7ae400a92b1a7bc23b1f450ab1eb8801a7a469f21a7c033b1ec51631eb846ea1046e7a1b9f023b1d03387ae00afc810afa02bea08ec700ce1eafcab2504ab212abf023add84247abc0a3fc10a39028be08eb731091eaec03a0acaea42baa033adc057c7aba00ac6c2b9ecae7a0ceb671c2987ab601aa9a8823ad9450a51ead40165cc597008eb3c142ac7ab3⟩, ⟨0x11d08503cc1be0cc05e02a013008a03b819c0b20460198080026000, 0xedff04edee3b7a423b8803387b213b7f410eef4eded138c433b7fc406d1ec800063c018f1063c833b7f4506c1ebfc0063b04e213b7b033b7e48787afe0018ec063c423b7dc6747afd004e210eef4edec0cedef141807afc00adad2aff423b6805147afa0019bf04ed7e142f87af91fea811fe807fa208ed790ce1ebe0012eb08fbf08ed761451ebdc0070c413b5d050be1ebd88d6d048d682358c23b5984247af323ffc123bd48f2008ed640ce1ebc8ed3c048f6423bd423b4f84247af0001c7804ed321581ebb4ece7046c711b1b023b3a44247aec⟩, ⟨0x16009d04982260ff07603541820ae04d021c0e805d02500dc040000, 0x3bd98ef3c238cc493e10cb7536ed48e26124f4493314ef610c4c47b3636ee0136ed4cb7508ef660c1f07b3536ee8136ed8dbb108ef601091eccc0066c08e262389433bcf470a71ecc4ef2d04eef73bbe823bcbc4247b2f3bcac13bbc8eef33bbe433bcb4406d1ecb80077ac1de7077b033bcac506c1ecb4022ea0eef23bbc433bbe057c7b2c00eef222ea0eef10ceef5141807b2b3bb9010ebb43ae508eee61091eca8eee3043ae50ebb423bb903387b293baf810eb903abf0ebb033bb8c406d1eca0eee0043af00eea823bb844247b273bafc10eea83af008eee00ce1ec98eebe043aeb0eafc3aec0ceebf101b47b250eeec3bb23a68830eafc3bb10eec03aec10eebe0c2a87b24⟩, ⟨0x11d08803dc1ce0d006002b413a08a03e81b40be04b01c80a802e000, 0x3e18013e1bc4347b6b3e1b4f86b08f86c3e194f8670cf86e0c61eda803e0f8f83b08f86d1941eda4f86a04f83b3e0f8f8660cf86b101b47b6800144efab0cf86a184bc7b6700144efab3e0ec43e1a0712e1ed98005107cb433e194612d1ed94efbc04efba3bed023bef43387b6300efb304efbc10d1ed88007ca8efa708efbb1941ed84007ca813bee040691ed8003bdf4efa73bdec33bea850601ecf4044ef7d3bdec33be9451781ecf00441f2b08efa3145dc7b3b3bdcc13bbd0ef3008ef751091ece4ef2b048ba83bbcceef90cef73101b47b38⟩, ⟨0x12008683e81da0dd06602f8156094040019c0ae041019008c026000, 0x3abd011e7d4796e08fa7e0ce1ee80fa7904fa773e9b823e9e83387b7d00fa6d04fa7910d1edf003e9acef7d08fa781941edec004efa73bdf433e9d454c7b7a00107ca823e9cc5487b793e99813bea4efac08fa681091edd8fa6404efa73bea0efab0cfa66101b47b75001f2a07cac1f2c0cfa64141b07b743e1f8f87c08f87d3e1ecf8790cf87f0c61edc803e0f0c8f308f87e1451edc4f87a04c8f33e0f4f8780cf87c1041edc0044f83b08f87a1449c7b6f01107cb823e1e451761edb80323ccf83c08f8771011edb4f86f04f86c3e18423e1c03387b6c⟩, ⟨0x13408e84241ec0e906c83201700a504901ec0b604801a8084026000, 0x2a8ac12a894aa262a7cc33eebc406d1eef400b39caa250a68c33eeb050601eef0fba304fba13ede023ee903387bba00fb7704fba310d1eee403edd4aa2508fba21941eee000adbcaa2508fb7f143ac7bb7001c01c2008fb7d143a87bb63edc012a7d4a9ef08fb721091eed0fb6f04a9ef2a7d423edc03387bb33edb812a5b428252a7d033edbc406d1eec8aa6c2a998aa700c28250a4c429302a7d043edb830aa1eec42f3c042f320bcd023ed843387baf3ebfc13ebe8faf108fb200ce1eeac782b046ff51bef023ebfc40e91eea801bfd013ebec50b51eea4fa7e04796e1e7d423e9fc4247ba1⟩, ⟨0x12a08b841c1e80e306502e814809604401e00ca04e01e80a8026000, 0x1445a6d3ef9c43f0a0712e1efc400510738833f094612d1efc0fbfa04fbeb3efd423eff04247bee01113198fbe70cfbfa2081efb4fbf73efd023efd8fbf33efbc33efe03187bec00fbf01319823efdc5147beb3efc8113198fbf13efb833efd04107bea0113ef9c23efc870c7be90110738c23efbc6087be8004c663efa823efb44047be73ef8c13eed4fbe008fbe51091ef944f6b044e21138883bbe0cfbe3101b47be4004e281388023eee450ab1ef8800eef44e211388033eed857c7be13edb812a7cc28252a7d033eec4406d1ef80fbaf04fbab3eea023eec03387bbe⟩, ⟨0x13b092044c1fe0ec06a830815609704181c00ba05001b809c020000, 0xff2e049b223fc98fefa0cff30101b47c2500bd4bd8bdc33fcb8506c1f090026bf89b223fc9033fca850601f088fe3d04fc393f0c823f8f83387c203f8e013bbe4fc380a38833f8f4406d1effcfe3a04fc3b3f0f423f8f04247bfe3f8e013f0dcfc380a38833f8e8406d1eff40077c41ded077c833f8e0506c1eff003bbe4fc373f0d433f0f050601efe803f0dceef93f0d433f0e857c7bf93f0bc13f0b0fc2108fc300ce1efdc03f08013f0bc4347bf63f0b4fc2b08fc2c3f094fc270cfc2e0c61efd403effcfbe708fc2d1941efd0fc2a04fbe73effcfc260cfc2b101b47bf3001445a6d0cfc2a184bc7bf2⟩, ⟨0x13008f842c1ee0de06702e014809003e81ac0ba04901c0090026000, 0x1b2706c942427d450671f0f40426a509a84269c3427bc50b91f0f0006ca41b2806bb83426ac50621f0ed09a242680242685097f425f034268c3187c3a010977163cc2426885147c39425f81163cd0979425ec3426804107c38010975425cd09710d097e182b87c37001b2a06c981aed0d097c142b47c363ef8c13eed4fbe00909370ce1f0d002f126bf8ff240d08fb21e1f0c802f12f60908f919d1f0c4022ea0eef23bbc434209470a61f0b80077ac1de7090823142947c2d00fc373bbe4fc350cffac1c2987c28001df1077b423fea850a51f09cff3004ff293fcac23fcc84247c26⟩, ⟨0x12108503e41ca0d106102bc13008403a01980a403f0190088028000, 0x10a7f050a6a429d90a600d0aa1101b47c7101eb1ea1eb43429fc506c1f1c00428fd0a6a429a03429e050601f1b80429a90a3f429a03429d070a61f1b407ac7a8090a72142947c6c428ec1428b90a27090a3c0ce1f1a90a390509fa428b45ba30d0a3b101b47c69001abc06aec1b200d0a39141b07c6801ff10a2c090a35143b07c67001b20050a34101a87c6600e9b8427e90a2c0d0a2f141807c654289414288d09fd090a260ce1f18c0427f01428944347c62001abc427e82428906507c61001abc050a21101a47c600109b216ce909a80d09f71c1a07c3e⟩, ⟨0x13f094045c2080f106c031c16009604281d00c205001e8098026000, 0x10afc050a6042bcce9b20d0afe101b47ca501bb1eb9ebc342bf0506c1f290042bb10a6042bc8342be057c7ca242b94142acd0aad090ae60ce1f2850ae442b8c242acd0ae242ab4342b943187ca000e9b242ac8242b9040721f1fd0ae104e9b242ac818200d0ae3101c47c7e42afd0ab8090ab242adc18200d0ae10c1c07c7d01ec1fd1ff0342afc506f1f1f00060841820090ab9141b87c7a010ab13a6c9ff0342ad050601f1e40429b50a68090aa9142ac7c7642a98142a910a65090aa70ce1f1d50a7f050a3f429d90a600d0aa6101b47c74010a6a428fd0a680d0aa515f1f1cd0aa1050a77429e4242a8c4247c72⟩, ⟨0x13009084381ee0e3069830815e09804081bc0b60470198090026000, 0x1ff9ff0242eb450611f2e50ba0045bac16e90242e884247cb716edc116e8c5bab16d88342e80406d1f2d80779190b2e42cf4442ddc80751f2d0077919e98342dd460741f2cc042dbd0b3d090b73142ac7cb242db0142cfd0b3a090b6d0ce1f2c50b67050b2e42cf90a3f0d0b6c101b47cb042d9c1779190b3e428fc442da460791f2bc077919e99e9c442d9c60771f2b80779190b2e42cf4442d8c70781f2b00779190b2e42cf4442d8070761f2ac042bb10a6042bc8342cb070ac1f2a406ec7ae090b2a142947ca8010b2442bc8242ca050ab1f29d0afe050af742be4242c804247ca6⟩ ] def tableRRLR : Table Block := .leaf #[ ⟨0x11708383c01c00cd05f02ac132080038016809603d0168080022000, 0x432d90c76090ce41941f3b90ce1050c76432d90cbd0d0ce2101b47ced00144682c0d0ce1184bc7cec00144682c431d84432fc712e1f3ac00517660d0cbc184b47cea432a41431e90ca4090cab1091f39c0763430f10c760d0ca92081f3990ca64328c2432950ca2431f834329c3187ce5010c7f430f02432985147ce4432841430f10ca0431f434328c4107ce301d8d0c76090ca11c31f3880763767090c7e1821f3840430f10c79090c7c1011f3800430e01430ec5007cbf01fe9ed8242fbc50bb1f2f007fd7fa7720d0bb9141887cbb⟩, ⟨0x13e09384441fa0ea06b030815e09d04501cc0be04c01c8098032000, 0x1a39011a1f8687f1a0b034369c406d1f4890d7405d8d0d32426c834368860a91f4840432c10d37434f43435f850601f480076306bd01aee0d0d74182a07cff435c41435ad0d31090d730c1f07cfe001af206bc01af30d0d71141b07cfd010d37432c10d3d0d0d6d15f1f3f00763434c509a70d0d341d71f3ed0d2a050d26433ac2434ac3387cf9434a0117ffd0cf6432c03434a8406d1f3e0006bbc1aa206a8c3434a0506c1f3dc0433d45fff161d834349c57c7cf60068391a1f8687d0d0d2415f1f3d50ce6050ce3432e024339c3387cf1010cb7050ce610d1f3c10ce44338824338d0cbc432f83433943187cef⟩, ⟨0x11408303cc1b80cb05c02a8132086039018409c03a0168080026000, 0x13ecbd8243cf06747d3443cb8143c890efc090f2f0ce1f4cd0f2c049bbd43c850eec0d0f2e101b47d3200eb4eb9484343cb0506c1f4c404fb26ef50eff0d0f2a2428c7d30013eceb8243ca06747d2f009bf943bfc243c9850ab1f4b8026eec9bbd43bfc343c8c57c7d2d00bdbb37df90eb70d0eba141807d2c00eb4eb8ebc3439e8506c1f4ad0dec050c3a430d02437b43387d2a437a81430e50c33090dec102d87d2901dbc1437a850b21f4a001609c1437a04707d26001aec050de21581f4950da7050d23433f82436a03387d23⟩, ⟨0x10b07e83a81ba0ca05b82a412c08203a81a00b804901a8090026000, 0x43eb414608450b51f5a10ff5050ff343fa4243fd83387d67010fe8050ff511c1f598043f990c3343de8343fd066c7d65010fa8430cd0f7a0d0ff119a1f5900776770090fee1591f58d0fe4050faf43ea4243f943387d6143f88143eb90fa8090fe4102d87d6001dd4143f8850b21f4fc043eb4143ec05007d3e01ddc143df45607d3b010f7643dc10f740d0f7915f1f4e90f71050eb843dc0243dcc307c1f4e403b03a877c0d0f71141b07d3800bd4bd93f4343d80506c1f4d804fb26bf90f330d0f3e2428c7d35⟩, ⟨0x13a093044c1f80eb06c031416e0a404801e40b204501a009c028000, 0xacb117bf11a240d1a3d141807d7d468e41468c91a34091a3b1091f5f11a3704acb1468c45eef0d1a39101b47d7b01a9daa1da43468dc506c1f5e8017bf0acb1468903468cc57c7d7801d8cacb1468903468b890a31f5dc07636a8091a2c19d1f5d87afc047af11ebcc2464f43387d74001abc06aec1aba0d1929141b07d73460fc137df90b2e43ae0346180406d1f5bd183e43de10f730d0b2e43ddd0f7043ae04460fc30aa1f5b9183c050f7742cb82460f8307c1f5b407a577d77b0d183c141b07d6c010f7a05183b11c1f5ad182e051820460a42460c04247d6a43f88143eb90fa809182e103a47d69⟩, ⟨0x1590a304bc21e0fb073835016e0a404881e80ce05001e80a802e000, 0x11cea051ce11fdd42473ac3387dba473a411fd988ae31fdd03473a8406d1f6e51ce8473947f7c0c8ae3473907f791fdd04473a430aa1f6e11ce6051ce422b8c2473a0307c1f6dc0072a01ca0071e8347398506c1f6d8037df8bdbb43adc346ee457c7db23a3843bb8083b613a2d03aeb0eec0446eb840e71f6c51b2f04482412088246cc04247db046cb81120884824091b2f0ce1f6bc3fa3043f650a0ac3f770d1b2e101b47dae46bcc137ef8dfb9091af40ce1f6a10e7a049bbb37ef4df7e0d1af3101b47da71ed8c11ecdc7b3a091aa90ce1f6891a39051a32468d024699c3387da1468f81468f11a21091a3f0ce1f5fd1a37045efc468c45eef0d1a3e101b47d7e⟩, ⟨0x135091045420c0f9073034c1800ad04b01d80c605001e80a8026000, 0x11e27051e25477fc2478a03387df0011dfe051e2710d1f7bc07aa477e42478986507dee01ea814788c40691f7b4dbfc04dbf536fdc2476d83387dea27dfc10f79c9f76091dab0ce1f7a51d3e046b7e1addc2474fc4247de7474f411addc6b7e091d3e0ce1f7991d3c042dec1a9d06b7a0d1d3d101b47de51ae986b7536c8031a9d06ae81ab9c6b7a111d3c0c2a87de43e99813bea4efac091d370ce1f78c04738c7f791f7a43474ac57c7de0473b811fddd1cbe091cef1091f6f91ced051cbe1fddc2473b83387dbd473a411fce48ae31fdd03473b4406d1f6f11ceb047f75473842473b04247dbb⟩, ⟨0x11108183c01c60d306202ac13408b04001c80c204d01f00a802e000, 0x2f16b10928eb19d1f8b528e10528bf4a2e424a3883387e2c0128b80528e110d1f8ac04a2d928b00928e01941f8a800702f80928bd141cc7e2947ea11fa1091f7b47e81d80347ea830701f8a006f073473c0d1fa8141bc7e2701d85d80247e88506e1f8940011f25184d87e2201de46091f24143887e2101bd1bcdaec347aec50621f7fc0479c51e70479ac347ad870681f7f806f26f0091eb41419c7dfd011e6c479ad1e6a0d1eae142e47dfc479881173e05cb4091e641091f7e05cf3045cb3173b45baa0d1e62101b47df7⟩, ⟨0x12808a04001da0d606282c813c08f03f01940a803e0158080024000, 0x4abe414abcd0ab1092b250c1f07e63012abf4ab952ae40d2b24141807e624abec14abd12af6092afd1091f9812af9052abf4abcd0ab10d2afb101b47e3f01cc1fc9fcc34abe4506c1f8f804ab952abf4ab9034abd457c7e3c012ae54aafd2ae40d2af01c2b07e3b01cc1fc824abb850a51f8e804aba12ae4092aec142ac7e394aadd2ab6092ab34aad52aad0d2ab80c61f8dc0479c11f7b092ab7101c87e3647ea81479c11f7b7600d2ab6101c47e35011f3b479c1cf034aad050601f8d0001292a183ec7e3101ae46092929143887e3000bc528b03288034a3b48787e2e⟩, ⟨0x12208403d01c20ca05c829412407f039018c0ac04301980a0034000, 0x4aec12ba1092abf4ae812b780d2b790c1c07e794aeac14ae812abf092bb00c1f07e784aeb414ae8d2ba5092baf1091f9dd2bab052b744ae812abf0d2bad101b47e7601fc1fb9fc434aeac506c1f9d404ade12b744adf834ae9050601f9cc04add12b784adf834ae8857c7e724adc014adb92b68092b710ce1f9c004ad9c14adc04347e6f01ead2b65092b6f1941f9b807ab052b6c101a47e6d00e8063a24accc44acf8917b1f9a803a018e8834acf0617a1f9a40012b31185e47e6800e806092b30143887e674ac952b23090ab14abcd2ae50d2afe0c1c07e64⟩, ⟨0x141094045c2000ed06c831416809b04501cc0c204e01b808c01e000, 0x12c784b1dc24b1d12c764b1bc34b1e43187eb000afab2beb024b1e040721fabcafbb04afab2beb01a6d0d2c77101c47eae00ae6c2beac1a690d2c7515f1fab4006b941ae406ab034b0f450621faa404ac985e234b0b034b0e470681faa0006b8c1ae1092c371419c7ea74afc52bf0092bed4afbd2bea0d2bf20c61fa98042ac50ab2092bf1101c87ea542b84142ac50ab20608034afc040711fa9003a6c90ab17fc0d2bee15f1fa8d2be8052be44af8424afa43387ea1464a41427e918fb1ee8834afa0406d1fa8003a6e109fa463e434af9450601f9fc04add12b784adf834aee470a61f9ec07f07ee092bb7142947e7a⟩, ⟨0x13208f842c1f80eb06c030415a09604281c80bc04f01f00ac028000, 0x10aec4b6a52dad0d2dbd15f1fb98042bb12da94b6b434b6e070a61fb9406ec6e8092db6142947ee4012db04b6b424b6d050ab1fb8d2da2052da04b4f424b68c3387ee14b5e814b4f12d71479c034b688406d1fb8004b58d2d3c4b58834b68450601fafd2d7a052d634b5c51e700d2d7c101b47ebd018a1bb9bbc34b5e8506c1faf004b4f12d634b58834b5cc57c7eba012d3c4b58d2d620d2d6e1c2b07eb9018a1bb824b5b050a51fae004b5992d62092d6a142ac7eb74b29014b2812c7b092ca50ce1fad0afa404af752bdd85cfd0d2ca4101b47eb300af392bdd4af730d2ca1141807eb2⟩ ] def tableRRL : Table Block := .branch 12 tableRRLL tableRRLR def tableRRRL : Table Block := .leaf #[ ⟨0x13c09484581fe0eb06a030815c09a04501e40cc04f01d80a0022000, 0x4aae014aacd2aad092e371091fbf12e31052e2f4b7b024b8c83387efa4b8a414b7ad2e204b6a434b8c4406d1fbe406b9192deb4b7c844b8c070761fbe12e2905ae464b8812da9112e2b181e47ef601ae466e66e7112e29181dc7ef501ae464b7ad2df2112e221c1e07ef301ae464b7ad2df2112dfd201d47ef201ae466e60d2dfb181d07ef1012df54b7c824b7e450ab1fbc12de9052de74b69024b7a83387eee4b784142bb12dbb4b58c34b7a4406d1fbb404b6a50aec4b6b434b7a050601fbb12de3052dbc4b6f824b7944247eea4b78414b6a52dbb4b58c34b78c406d1fba406ec6e86ed0d2de1141b07ee8⟩, ⟨0x11d08803dc1ce0d006002b413c08b03c81800a003a015807401a000, 0x4bbe814bca44347f2e4bc9d2f25092f264bbfd2f210d2f280c61fcb404bbe52ee1092f271941fcb12f24052ee14bbe52f200d2f25101b47f2b00144ae7b0d2f24184bc7f2a00144ae7b4bb8444bc88712e1fca400516a20d2eff184b47f284bbd014bb952eef092ef61091fc98067f4ba9d2ee10d2ef42081fc952ef14bbb824bbc12eed4bba434bbc83187f24012eea4ba9c24bbc45147f234bbb014ba9d2eeb4bba034bbb84107f22019fd2ee1092eec1c31fc84067f6a3092ee91821fc8004ba9d2ee4092ee71011fbfc04ba8c14ba985007efe⟩, ⟨0x11208083c81c80d706302d815209504101b00b204701a0080026000, 0x1382d4e0ac24e0d860bd1fd9c03e23bd093833142f07f6601382605382a142d47f6500f9414bfe050ba1fd8804323fc3a40d2fb8144dc7f6000e912fa4092fad143b07f3f01fbc14beb0406a1fcf80477e52b654be9034be9c50601fcf52f6d052f664bda024bdbc4247f3a4bdac17634bd8d2b260d2f6d182a47f3901d8c1aae06ab034bdac60a81fce007634659d19650d2f671d71fcd92f2e052ea54ba8024bcbc3387f334bcb014ba90caa1092f2e102d87f3201abc14bcb050b21fcc52f29052f264bbec24bca83387f2f⟩, ⟨0x11708003bc1b80ce05d82a013608b03e01a80b804c01f809802c000, 0x138b7043e614e2b138740d38b9101b47f7a0018818cef834e2dc506c1fde403b70f98538aa0d38b52428c7f7800edc18c24e2cc6747f77003e200f98538aa0d38ae15f1fdd938a20538a04e1e824e28c3387f730138790538a210d1fdc804e1e138680938a11941fdc400703bf09387e141cc7f7000edd38684e0fc34e1c88787f6e00edcf8024e1c06747f6d01383f4e0b424e1945147f6c00f8414e18c50be1fdad383a4e0e024e0e538374e0cc34e0ec3187f6a01382f4e09824e0e85147f694e0d814e09938354e0c834e0e04107f68⟩, ⟨0x10907e03a41b80cc05e82a812608403881900a003e0180080026000, 0x3e3053936142c87fad4e4cc14e4c5392b0939340ce1feb004e4a814e4cc4347fab0139294e39024e4c86507faa001c0ee824e4bc50731fea539270538f94e3c424e4a03387fa74e49410b4a138f84e3c034e49c406d1fe9805d83b90d3925141b07fa500edc2d3a4e3dc34e48890a31fe8c03b76024e4806747fa2002d3a0b4a138f70d38fa141807fa100edd38e44e2ec34e3b88787f7f00edceec24e3b06747f7e0138bb4e0ac24e3845147f7d00ef014e2fc50be1fdf138b90538ad4e29c24e2e83387f7b⟩, ⟨0x11908303d01b60cb05a829813008803d81a00b604801a809c028000, 0x139e10539b24e6f024e78c4247fbf00e9539744e6b834e7848207fbe4e6f939bb0939bd4e6e939b60d39bf0c61fef404e6dd39740939be1451fef139b90539744e6e139b50d39bb1041feec03a54e6b824e6e470c7fba00e94ea424e6d86087fb90139744e6c424e6d04047fb80139700539731401fedd396a0539684e4f824e5ac3387fb501393d05396a11c1fed004e4ed393a4bfd834e5a466c7fb3012ffd4e4e92ff60d396619a1fec803e43b60939631591fec539380538294e08c24e4e43387faf4e4d814e0a12ffd093938103a47fae⟩, ⟨0x12408984041dc0d706302cc13e09203f81c80b2049019008801e000, 0xbc5af5aec34e98460a81ffcc02f14e8d51e6a0d3a3d1d71ffc53a20052fa64be8424e8843387ff04e7f814ad952fa54add034e880406d1ffbc07ab7aa7ef0d39fe141b07fee4e7ec14e5c9396c0939fc0ce1ffb139f90539714e4e824e7ec40b61ffac03b50539f9142c87fea4e7d814e7cd39e80939f70ce1ffa004e79c14e7d84347fe74e7d139f20939f34e7b139ee0d39f50c61ff9804e79939ae0939f41941ff9539f10539ae4e79939ed0d39f2101b47fe400144bdbb0d39f1184bc7fe300144bdbb4e6b844e7bc712e1ff8800513a80d39ec184b47fe1⟩, ⟨0x13b097047821a0fe07583601820ae04d82100c805001e00a402c000, 0x4eae014eb904348826013ab64eacc24eb8c6508825005ee04eacc24eb8050ef220900181aa4093abe143a888234eaac1435f53aa8093aad109220813aaa053aa8435f424eaac3387fff4ea901434dc5cb3435ac34eaa8406d1fff93aa6050d6c4e9ec24ea9c4247ffd4ea9414e9ed0d6c093aa60ce1fff13aa4050cb0172cd0d6b0d3aa5101b47ffb4ea8d3aa0435cc3172cd3a7f434c50d6b113aa40c2a87ffa4ea8414e9fc5cb3093aa30c1f07ff9001afc06bd01aee0d3aa1141b07ff816dec116dc45b73093a7a0ce1ffd93a63053a3c4e8f824e9944247ff54e98412f14e8e51e710d3a63182a47ff4⟩, ⟨0x11b08704041ea0e306a830815c09d04481e00ca05201d809c026000, 0x3fd053bb1142c8883f013b7c053b7f140220f803ff053b6c158220ec03b74ed953b630d3b681d7220e8006bb014ece450ba220e05cf5045cee173c024ecc83388835005cb316ce909730d3b2e1c2b08834001afd06c9424ecb050a5220cc0425d90974425c834ec905163220c80427ad09a8093aff142ac8831013a7e434c509a70d3afe15f220c13af5053aee4eba824ebd8338882f4ebcc14eacd3aed434dc34ebd4406d220b8006bc41aa406a9434ebcc506c220b4017b813ab317ab434ebbc5060220a93ae4053ae24eae424eb943388827⟩, ⟨0x11308203bc1c40d506102bc13208803d81a00b604801a809c028000, 0x3a44efd024f08051488764eff014efd12fb47a90d3bfe104221d403a4053bfc101ac887401ea414efec406a221cc04ad951df94efd034efe057c88724efbc14ed9d3b60093bf00ce221c13bed04edd3b66477cc34efbc60a9221bc03b74234210d3bed182a0886e013b69053bec11c221b53be4053be24eee024ef943388867013bb7053be411c2219804eed5393a4eda434ef8c66c8865013b774e4e93b690d3be019a2219003fe3b6093bbd1592218d3bb3053b7e4ede024eed033888614eec414edf53b77093bb3102d88860⟩, ⟨0x132091843c1f80e9068030015409a04581ec0ce05402080a8032000, 0x10b8e8824f1c45162222a804f0c13c2f4ed8c34f1ac50b9222a53c65053c354f18024f19c42488a7013c303a2477cc34f1947065222993c624f0fc24f1853c3e4f0e834f18c31888a5013c3b4f0c024f18851488a44f0f414f0c13c3c4f0e434f0fc41088a3011df33a2093c3d1419088a2010b8e8824f0e8517c2228404f0c13c34093c381012228004f0c13c2f4ed8c34f0cc5066221fd0afe050af742be424f0b8338887e4f09814efdd3bf1093c270ce221e93c24051df94efd90a6a0d3c26101b4887901eadea9ea434f090506c221e13c204eff824effd3bfd4efec34f0843188877⟩, ⟨0x10a07b03a01b00ca05b829012c08903b01880aa0480188090026000, 0x4fcd01369c0da65093f36103a488ea001966053f34142c888e900babd369cc24fcc051488e80018ff053f2e142f888e72ef8c12eee4bbbb093f2b0ce223980127121e8ab630d3f232428c88e30049c1f424fc8467488e20058a4053ef011c222f93eee053eec4fba024fbbc33888bd17f9c117aa84fff093eee102d888bc005ea8053eed140222ec006aa014faf856088b8460fc12f6ed0b2e43ae034fa94406d222dc0777053e6a142e888af010c10bd08434f1e05062222b00477cce893c2f0d3c731c1a088ab⟩ ] def tableRRRR : Table Block := .leaf #[ ⟨0x12808783fc1d00d806282d414408f03b01980a00400180080026000, 0x4ff853fbf093fe04fee53fbb0d3fe20c6223f004fecd3f7b093fe1194223ed3fbe053f7b4fecd3fba0d3fbf101b488fa001444e310d3fbe184bc88f9001444e314fdec44fef0712e223e00051063cc34fee4612d223dd3fae053f7f4fea424fec042488f50018ec4fd853f7b0d3fae208223d13fab4fea024fea93fa74fe8c34feb031888f3013fa44fd8424feac51488f24fe9814fd853fa54fe8834fea041088f10018ec4fdec24fe9870c88f00018ec063d024fe8c60888ef013f614fdf824fe8440488ee013f3d053f60140223b53f3604da71369ac24fcdc33888eb⟩, ⟨0x10c07f83b01b00cb05f02ac13008b03c01940aa042017008001a000, 0x1adc15279850ba224bd49e10549ac52698252788338892e526fc1526ad49a50949e1102d8892d01ad41526fc50b2224b00526a81526b4500892b338fc1338e0ce3a093ffc0ce224a53ff9053ff74ffb424ffe83388928013fec053ff911c2249c04ffa93f38368f834ffe066c892600da654fce0da3e0d3ff519a2249400659c18fd093ff2159224913fe8053f3f4fce424ffa433889224ff9814fcf93f38093fe8102d889210018fc053fe6142c889204ff8c14ff813fb5093fe40ce223f804fed014ff8c43488fd⟩, ⟨0x11407e83b41be0cc05c02a812e08403681800a804101a008401c000, 0x3a9941178f8ea36231e8352ee8406d225c000e6cc4de2094bb7145225bc0073c0152ed450be225b94bac054ba552e80252eb4338896d13dbc1136f44da6094bac103a4896c004dbc054ba6142d4896b005be9178f8ea350d4b7d15f225a50b69050b6242d90252cdc3388962474f010f8c86a741ade83529c0406d224f405278c152988470893a01adc1528cc5608935528b01528a94a20094a2d0ce224d00527fc1528b047089330149fd32a8549e30d4a2b19b224c8052694caa15278c3528a0668893101ad9ac02528945648930⟩, ⟨0x13d08e84241ec0e206802f015209704181d00c605001e8098026000, 0x14c79531914c760d4bff531854c60530a04531e830aa226994c77054c6152ffc2531e4307c2269404fb06180183e0d4c77182a089a4531d01530a14c60094c760c1f089a3014893f8183f0d4c74141b089a2010eeb43bb14c260d4c6714180897f013ed4c60530f835319470a7225f804fb531814c3e0d4c631d7225f4043bb10eeb530983530c470a6225f005224fe094c2f14294897b010ef1530982530b450ab225e8043bb10eeb530983530a857c897952fdc152fc94bed094bf9109225dd0f60049afe43cd10eeb0d4bf7101b48976009b2226bf90f330d4bf315f225d14bba054b7c52de4252eec3388971⟩, ⟨0x12c08c84201f00ea06e832816e0a304a82140ee06602980b402e000, 0xaf752bce4dc290d5bbf15f227b002bb80aebc09582b142ac89e6005ead1618c253bd051489e4001aa5054ef2142f889e3014e73054eb814022788c86f04bff62ffe4253ad833889e1539e01539d54e70094e790ce227814e76054e745399c2539e040b6226fc0064881539d850b2226f80166ec7cfe094e32145226e80079ec1538c050be226e4026c850f33094d2d142ac89b45338c1531894ce0094d2a0ce226c54c79531914c76530a4452ffd4c61531814c2843bac5530803131226ad4c77053ed4c6152ffc35338c60a9226a94c7a050eec52ffd4c280d4c7b101b489a7⟩, ⟨0x14c09c84881ec0e206783081640a404881e80ce05402080a802e000, 0x576d81576d15dae095db70ce228b15db00478f51e58878f60d5db6101b48a2b1e5d87d6636da87d6e36d8051e588796d1e5b07d6b1f5a878f6195db00c5848a2a005a241e3d478f30d5daf141808a29573f41573ed5cf5095cfe0ce228840573d01573f44348a20001d26177ac2573f065089ff001d26055cf9101a489fe573bc1573955ce0095cf00ce227ec7bfb045deb1efc03af40d5cef101b489fa005bee177ac7bef0d5ce615f227e4ce7004cde43379c25718433889f5570bc13349ccd22095c31109227c0ccfd04cce7333c8ccf50d5c2f101b489ef56f88156ef95bb9095be30ce227b8dc3504af39370a83c290d5be2101b489ed⟩, ⟨0x12908d84201e80e006782f015008f03f81a40b004701b8090026000, 0x6f9c157ba0406a2299402e3e4b93857b80357b9057c8a64001d30074bc1cf70d5e67141888a3f007873174c15e360d5e631c1a08a3d001d2e074b02579845067228f15e31055e21578b02578cc4248a3b015e20174c078730d5e311c1948a3a578b95e2b095e2d578a95e260d5e2f0c6228e405789d5e20095e2e145228e15e29055e20578a15e250d5e2b104228dc01e1cc5d30095e29141908a36001d2e074b02578985063228d40578815dff095e24101228d0ea2b048ca2231ec2577bc3388a321f58011f38c11f4f0317d228c55db7055dae576d02576e44248a2d⟩, ⟨0x1600a684d82320ff075835c1800a004681e80c605001c8094022000, 0x57f94157f8c6c71095fe60ce229f09bb9044cb9230c06c700d5fe5101b48a7b473a15fb6088ae3473907f661fde4457edc40e7229e91d211fde821fd987f741fde4357ed83070229e47f75047f741fd98247484307c229e0ed39048f262248823b4f04135229dd5f6804493c32dd4493d0d5f6c101b48a713bd98ef3c238cc332dd4dbb523898493d115f680c2a88a7022aac122a988aa8095f220ce229bd5efd055ee357af4257bf83388a6e57bd812e4e15ee2229d4357bf4406d229b55ef8055ef257bb4257be43388a6b57bd812e3e55ee2229d4357be0406d229a8006dfc1b7e06f9c357bd8506c229a402e4e0b8f957b80357bcc5060229a00066a55ee0095ee9143b08a66⟩, ⟨0x12d08d04181e60e006682e815a09a04681e80ce05702500e4026000, 0x18ae0049e6d27998262b884248aee27aa81279b09e65098ae0103a48aed436881434cd0d2e0979eb10922b808caf048ca52329c25b2f43388abd1f4e811f3e87cf4096cb410922af099fa0499f1267cc25b2c83388abb016bf3056ca711c22ae56c30056c2e5b09025b0c43388ab5016c23056c3011c22ad005b0853f385afcc35b0bc66c8ab3014e674fce16bf30d6c2c19a22ac800648c18fd096c2915922ac400649015afd85608aaf0068a51a1f425a69450ab22a809bb826ed06ca11b1d04230c09bb31b1f86c70169b45268883131229f95fe6046c7157f8c257f9c4248a7d⟩, ⟨0x11f08783f01d20d006002a813408a03d01b00b604801a0098026000, 0x181066dc363790612d22c998db9058daa636d02636ec4248b240019b0363d58da60d8db920822c8d8db6636cc2636d58db2636b83636dc3188b22018daf363d42636d85148b21636c41363d58db0636b43636cc4108b200019b0636982636c470c8aff0019b0066e82636b86088afe00d8f5636a42636b04048afd00d8ae058da0142d48afb00ac3e2b0c42635e850ab22be98d6d058d666358c2635b83388af9161fc1160f85825098d6d103a48af800583d058d67142d48af72aab81278acaaa9098afc10922bc46ea4046e771b9c0262bd44248af0⟩, ⟨0x12808a84081de0dc06482ec15409704181c00c604a01d008c026000, 0xbbc410bb942ee8099c380ce22ced2d7c052d724b5d0266fe03388b3a333fc1333ccccf6099b710ce22ce4cd7c04cd71335cc266bb43388b384b8ac14b8852e23099aea0ce22cdc00649016668450ba22cd8036af4adad098df8142ac8b33637d41635fd8da1098df710922cc8d8e304d8af2ae802637d440e922cc58dee058deb637802637bc3388b2d018dbf058dee10d22cb18dec637a82637ad8de4637983637b43188b2b018dbe636982637b06508b2a637a41636998dbe637943637a8406d22ca40181124cc3637a4612f22ca00181124cd8da6118de71c4b88b27⟩, ⟨0x13a09384502020ef07003341800b005002340ec06302800e404c000, 0x2e8c812e880b9fc099fac10922e988b24048afd22bfc267cb83388ba422dd4122dac8b6d099f200ce22e840459e76323d4367aa8517822dd40441f34099ea8145dc8b7467a841679fd9e79099ea20ce22dcc0679e0167a844348b72019e75679d8267a806508b7101e741f330d9e7d184b48b70679cc1679bd9e6a099e740ce22db8c9e704c9a532698c9680d9e73101b48b6d00c93b32694c9a40d9e7015f22db19deb059de3677942677b44248b643a5ec10e6d439b60eb903677ac406d22d8c00e6d039b50e6cc36779057c8b610eeec3bb23a6883aed103abf0eec43bb00ebb03ae4143ae50c4c48b60⟩, ⟨0x6902fc15e09c04481d80c605001c8098026000, 0x3abb413a9c8eae809bb300ce22f8002affcac3109babd10122ef0afbf04afad2bea026e2984248bb86b1d0123d848f6409ac7510922ed48f65048f6423d8426b1d03388bb423d94123d908f6109ac6a10922ecda932047b241ebfc26a4cc3388bae1ebe811eb847af01788c36a4c8406d22eb52bf2052bed4afa826a1f84248bac4b1e414b1d12c6f09a87b10922eac5fbd045fb617ee0267fe03388ba9⟩ ] def tableRRR : Table Block := .branch 12 tableRRRL tableRRRR def tableRR : Table Block := .branch 24 tableRRL tableRRR def tableR : Table Block := .branch 49 tableRL tableRR def table : Table Block := .branch 98 tableL tableR def records (i : Nat) : List Nat := PackedNatTable.records table (32 * (i / 16) + i % 16) end PolicyRewriteParametricPacked1 end PolicySubmissionPart25 /- Component ClosureProgram; SHA256 ccc83efd3f39b3af359c3e2b79d8bf1099c1ba872c816d046800b14491d4526c. -/ section PolicySubmissionPart26 /- A total DAG program with backward references, for arbitrary decoded data. -/ namespace ClosureSemantics def boundedNode (i : Nat) (node : Node) : Node := ⟨node.op, node.children.filter (fun j => decide (j < i))⟩ def boundedProgram (raw : Nat → Node) (i : Nat) : Node := boundedNode i (raw i) def boundedProgram_children (raw : Nat → Node) (i j : Nat) (h : j ∈ (boundedProgram raw i).children) : j < i := by have hh : j ∈ (raw i).children ∧ decide (j < i) = true := by simpa only [boundedProgram, boundedNode, List.mem_filter] using h exact of_decide_eq_true hh.2 def programModel (raw : Nat → Node) (input : Valuation) : Valuation := interpret (boundedProgram raw) input def programModel_equations (raw : Nat → Node) (input : Valuation) : Equations (boundedProgram raw) input (programModel raw input) := by exact interpret_equations (boundedProgram raw) input (fun i j h => boundedProgram_children raw i j h) def boundedProgram_eq (raw : Nat → Node) (i : Nat) (h : ∀ j ∈ (raw i).children, j < i) : boundedProgram raw i = raw i := by unfold boundedProgram boundedNode have hh : (raw i).children.filter (fun j => decide (j < i)) = (raw i).children := by apply List.filter_eq_self.mpr intro j hj exact decide_eq_true (h j hj) rw [hh] end ClosureSemantics end PolicySubmissionPart26 /- Component ClosurePackedProgram; SHA256 968044345330c011b1c6e55075d6d865bd5d48b86e1f663877c1f945ac329c7f. -/ section PolicySubmissionPart27 /- Typed expression nodes decoded from finite numerical records. -/ namespace ClosurePackedProgram open ClosureSemantics def signed (n : Nat) : Int := if n % 2 = 0 then Int.ofNat (n / 2) else -(Int.ofNat (n / 2)) - 1 def decodeNode (i : Nat) : List Nat → Node | [] => ⟨.bConst false, []⟩ | 0 :: _ => ⟨.bConst false, []⟩ | 1 :: _ => ⟨.bConst true, []⟩ | 2 :: k :: _ => ⟨.input k, []⟩ | 3 :: num :: den :: _ => ⟨.qConst ((signed num : Rat) / (den : Rat)), []⟩ | 4 :: n :: _ => ⟨.zConst (signed n), []⟩ | op :: args => let children := args.map (fun d => i - d) let tag := match op with | 5 => Op.alias | 6 => Op.bNot | 7 => Op.bOr | 8 => Op.bAnd | 9 => Op.bEq | 10 => Op.ite | 11 => Op.qEq | 12 => Op.zEq | 13 => Op.qLe | 14 => Op.zLe | 15 => Op.qLt | 16 => Op.zLt | 17 => Op.qAdd | 18 => Op.zAdd | 19 => Op.qMul | 20 => Op.zMul | 21 => Op.qNeg | 22 => Op.zNeg | 23 => Op.qSub | 24 => Op.zSub | 25 => Op.qDiv | _ => Op.bConst false ⟨tag, children⟩ def raw (t : PackedNatTable.Table PackedNatTable.Block) (i : Nat) : Node := decodeNode i (PackedNatTable.records t i) end ClosurePackedProgram end PolicySubmissionPart27 /- Component ClosureFixedWidthProgram; SHA256 2bcad5c1fc11db1c8f491f610a7d042edf5f71cea5d3b1344d488811f63e40c5. -/ section PolicySubmissionPart28 /- Direct bit-field decoding of typed expression nodes. -/ namespace ClosureFixedWidthProgram open ClosureSemantics PackedNatTable def children (i width : Nat) : Nat → Nat → List Nat | 0, _ => [] | count + 1, packed => (i - (packed &&& ((1 <<< width) - 1))) :: children i width count (packed >>> width) def decodeNode (i bits packed : Nat) : Node := let op := packed &&& 31 let payload := packed >>> 5 if op = 0 then ⟨.bConst false, []⟩ else if op = 1 then ⟨.bConst true, []⟩ else if op = 2 then ⟨.input payload, []⟩ else if op = 3 then ⟨.qConst ((ClosurePackedProgram.signed (payload &&& 0xffffff) : Rat) / ((payload >>> 24) : Rat)), []⟩ else if op = 4 then ⟨.zConst (ClosurePackedProgram.signed payload), []⟩ else let width := (payload &&& 15) + 1 let args := children i width ((bits - 9) / width) (payload >>> 4) let tag := match op with | 5 => Op.alias | 6 => Op.bNot | 7 => Op.bOr | 8 => Op.bAnd | 9 => Op.bEq | 10 => Op.ite | 11 => Op.qEq | 12 => Op.zEq | 13 => Op.qLe | 14 => Op.zLe | 15 => Op.qLt | 16 => Op.zLt | 17 => Op.qAdd | 18 => Op.zAdd | 19 => Op.qMul | 20 => Op.zMul | 21 => Op.qNeg | 22 => Op.zNeg | 23 => Op.qSub | 24 => Op.zSub | 25 => Op.qDiv | _ => Op.bConst false ⟨tag, args⟩ def getNode (b : Block) (slot i : Nat) : Node := let first := b.start slot let bits := b.start (slot + 1) - first let packed := (b.data >>> first) &&& ((1 <<< bits) - 1) decodeNode i bits packed def raw (t : Table Block) (i : Nat) : Node := getNode (t.get emptyBlock (i / 32)) (i % 32) i end ClosureFixedWidthProgram end PolicySubmissionPart28 /- Component ClosureFixedWidthData0; SHA256 38a2d11023fa6d09068e8af5e0647998eee35eb99b2724c4db0057720d155337. -/ section PolicySubmissionPart29 namespace ClosureFixedWidthData0 open PackedNatTable def tableLLLLLL : Table Block := .leaf #[ ⟨0x32818d8b985622a01488a084e626012688e840a1f20f286c02f61760b505742a214208683f01de0e306a027c12008303b81a806a000, 0x61c8000008000090c0000040000506326f3ca7c8ab126dc293a05261b264000004008000731a6587200000201069c300000100000a18100985a84471640000040834e07446d6178111e590000010000061d44d61780130e400000400002060000020000043⟩, ⟨0x2bf1580a7c51427513008ac44221010087c83c61ce0dc86902de13a092845821e10807583601920b4050824810607002e812806a000, 0x722af136ee0acf405660f6b90000010099c61c0d226d3ca7c8ab126e60acf005660e4b900000102000018000008000020ddbd72d8a8244091fb4406e8f84a714eb9a051a794f9154428de8527a0a4c185720000020066843⟩, ⟨0x288139896048622b10987f03ca1ca0d986783181770b3053c27a12e08b84201ec0e906a02f414a09203f81b00b20410180098026000, 0x715c63902aa7255404b644045445029acf03319a5d28aaa501668cf9a8ce4a2b135509b66076ce449469367066cd64f5092b45a3746a8829b21945158926742460728e0dd317c0514346881a414686093⟩, ⟨0x2ef1700b2455629413e8920486237115087840e1d20da067030816d0ab04ec24810f07e838819a0b604d82180de05a01f80a802a000, 0x184f03a9a79b2816501c8cd03edb200000200258430a2130b51880ef6c80000080bb940c097c8ca09648808a08a058d9e071334bfcd556002cd19b3519c941680aab3055b894b66808155033ab722f6cdd2abe4b4155591ab7409580e6ae⟩, ⟨0x2f416d8b1855e29814089b84a024111b889841e1f10ed074037e1a80cc86282e215809f84281e20bc04f02140e805d02600d402e000, 0x990a7c8f69ab68e6cef04cc03b99c19a6366d02ca389103689b40e569d8ae05942ab33606813681c0d3e45549363005e71202f3018b7c8000008040000c0625f200000200bb943b56c0b284df4d0346f0771a7026d038da77ef016505bacd⟩, ⟨0x2c11530a444f025d12408bc4341ff0f507443701a30c105b42aa13d094044c1f00e306702f014e09603e81ac0b804301a008802a000, 0x1600aaaf055b6e52f9a0205540ceadb92b7cd52abe4a4155511ab62409d80310ee06d5c434380ba9c855012d910115114172af0785697222aad81568cf9a8ce4a2b135509b6841df391251a4da3067cd64f5092b45a3746a⟩, ⟨0x3321888bb05b62c21588a6051227812f891845a1f80f4874035e1960be852027812f09184281aa0b704f821c0e005901f009c024000, 0x2cacc05d40418bcac81e3781da3cf04da0376f3e455226dd10179e700bcc0755f200000200222c3309e037cf3bab9017500dc3b4073df2000002001acc3482616a5100e23e4000004042fe0604bd06504b244045045029ecf03399a5f46aaa601668cd9a8ce4a⟩, ⟨0x2c01558a6450827312d092047222010887fc3e41dd0e206bc32c17d0b2054c26412308c84201de0ce05a82ac138083032813806a000, 0x19f3519c945626aa136fa83be7224a349bee0cf9ac9ea12568b46e8d5da14f91ed3560873e70c09d80384ee1f3c606080ba8e2440d226d01b979d65580ba81aa9db03424d01b479d7ac059406ab340785f20000020085fc3⟩, ⟨0x3131838bb056e29914089a44a423b11008243e81e20e386c832e17c0b3853026e11c08383b81aa0c004f82280e405a02280c002a000, 0x271006311900000100bf681812f3d9412c9101141140a733c0cd6697b1aaa96059a3366a339282c01555e0ab616298cd0102aa06756c345719aa557c9482aaa2356ee813b00771dc0d2b8dadb0175390aa025b22022a2282e15e0eead2e04555a82ad⟩, ⟨0x33e1918c485dc2df16a8b1055228513509804a223610a87f03c21ac0c4057c29c133091041c1d20d206182a0108069027006401a000, 0x312870f9e2211100c28e2440d226d00c2627168a80614068a43606849a018244e9e9805d4034aed00cc632000002005fb438140c030a010307b5740d1bc070489c09b4030b89d3a40594168b34c27806251387434030a00c321a0191c640000040026486984c2d⟩, ⟨0x2d015d8a8051627012d890044a2100f6075c37e1a70c905f42c414d09c0498222100072834c1880a904d02200f606602580d8036000, 0x6756d745719aa557c9482aaa2356cb4050c00cb21c0d2b8954ac030a7215404b64404544505a2bc1cd5a5c08aab1055a33e6a33928ac4d5426da281e3391251a4da381a33593d424ad168dd1aa7a0a8c8f69aa220e8cc4c050c⟩, ⟨0x3361928c285d22d015f8a9052a286135894046a2000f286c03481970c585c027611d08283b41ac0bf05202340f006602580d8036000, 0x304da01afc4e9e9805d4134aed1837806cd13e4554936ec0189dcc031300dd632000002001000300dce32000002000dac3502616a91006d1190000010088b81812f2d9412c9101141140a533c0c96697b1aaa8e059a3366a339282c01555e0ab6b6298cd0102aa⟩, ⟨0x30f17a0b885a62b81548a5c51427512d091445420f0fa078c37e1b00d306542f415609d84c4244107073033416407d02c80b0036000, 0x6640f19c8928d26e6c0d19ac9ea12568b46e8d591054647b4d56507466ce0286006cd0e1f3c592ca01851c4881a44da01aec4ed56900c280d6886c0d0934035889fdfd00ba807e5da01c2c640000040088b8756ab80614010181e13081e3780eb113⟩, ⟨0x2ed16a8af454c28f13a097449023610d88183d61d00dd86803161700ad850024a110076035c17e0a704901f40c404d01c0098022000, 0x12c9101141140a733c0cd6697b1aaa96059a3366a339282c01555e0ab75e298cd0102aa06756ec45719aa557c9482aaa2356e04050c00e021c0d2b8bf5fc030a7215404b64404544505c2bc1dd5a5c08aab5055a33e6a33928ac4d5426d⟩ ] def tableLLLLLR : Table Block := .leaf #[ ⟨0x36f1aa0d2867632017e0b8458c291136890045e21410187a03b21c80d686482ee14209984601f40e3064024c10e07a037014c03c000, 0x1b790d81a1268075913e270c030a00f0a1a01ecc640000040061a87aad580614010182ebb081e3780f5913c1368076713e455226de480627c600c4c03cd8c8000008002d90cc278076d13a7480b280d1668078f190000010004e21aa130b558803bc8c8000008030d40c0979eca⟩, ⟨0x2c91528a404f026012588d84362060f8877c3941b90cf06302fa1620a9850426811f08203bc1a80b904f02340d205a02800fc048000, 0x1d2e980614e42a8096c8808a88a0b85783bab4b811556a0ab467cd467251589aa84dbed03c67224a349bef03466b27a8495a2d1ba3579415191ed356e41d19dd80a1801dd4387cf1b8dc8061471220691368076313df6f4030a⟩, ⟨0x30f17f0b8c5a42b714c8a084e625611a88703fe1e10e486c43341830b4054427812a08783e81ba0c205682400f606002580c002a000, 0xd1bc07f689c09b403fd89cd980594165b34c27803024ce868005d4033eed66e049c812f3d9412c9101141140a733c0cd6697b1aaa96059a3366a339282c01555e0ab6030a6734040aa819d5b0285739aa557c9482aaa2356f54050c00f521c0d2b8⟩, ⟨0x3931c20dc86ae3221828ba05a62c21568a6c4ee25c11f886c4001e30e4069031216e0a884702020f2067030414c08b0380154062000, 0x624d2e12b8e01898000008000060dc58ea6715385292e135689b466cd4672500b7001856dc030d8b5b29cec4040185007610d8bdb39cecb5d0fd6ec4030ad86b21bff024300189672000002009610300ff21c7963f5fb00c29c51aa00c3747f489ea0030dd2fca27f4fa806140080603c2128⟩, ⟨0x2ca15c8a7051427b12f093c47a23010a87e03ba1c00d186182e214a09e84b823e10407603741a00ac04c821c0f006902600bc024000, 0x284db2c00f39c8928d26cb4034e6b27a8495a2d073c9552806539073c955123af39898029600312cb81c17111c4800ca98514a9aa53022c6a808be8a509ee2d0d734390a0c11ab125524d6c551b00f338d64199c63194a5724a⟩, ⟨0x2d915e0a604fa26011588784061f70f5073037a1b10ce06042d215a0a684a423010607c83781820af051021c0d805101e009c02a000, 0xcd7338441c030a00c1a1a00cf9390000010002ae1b0af33455517138a4084a6caa54c5840cea70458150117914a13dc5a15f986e14366d5092b45b3d00aa9f096a52a12568b69ac1557b3db090b90555c02ad19f3519c945626a⟩, ⟨0x3861ba8d8069c32a1878bc859c2b314b09ec4ae23c10f880839a1b00d085e82da15209a84681fa0d605282500ee06602480a001e000, 0x344da3366a3392805cb00c2b940186d28e0ce7800200c2803bf86d2ce34e78bbd87ef388018570f770d9980496003464e400000400d660600cc72e3cb130cc400ca9c51bd00c35b296e67bb00c35b8966672dcb800ca80100c0783a50346f00e5d99c09b40199267696602ea05b276984f⟩, ⟨0x2cd15d8ab051e280137098448c22910707c43a81b70d105ec2dc15f0a804e0240111082038019e0b104d02200f206a02780c802a000, 0x191251a4daf0069cd64f5092b45a0dd6aaab20b6720dd6aaa8679673440052c0068797035ae285a18019530a24534aa6097c8808b48a509ee2d0af6c2f0a1b36ea040594074b35624aa49ad8abb06789baf50cce91752525c26a⟩, ⟨0x2f716d0af451026b11b08a441c2020fa875c3901bc0d3863c2ee1680ad84dc24c108078837c1a40b704d01fc0d405502180b803a000, 0x5b800ccc01b7a720000020004003006dc9c8000008000f50d85789a2aa8c89c520424c654ea63020655384be44045c45284f71684ffe19850c9b730202ca03959aa12568b659815549cfd4a42d0155660ab467cd467251589aa84db5d00f39⟩, ⟨0x3891b70d4465a31217a8b6856c29b13f098445820f10007643981b10ca05e42b813508203cc1ac0c505402100d205801d80b003a000, 0x1da00c36f875673d4010061401e9c36fa75a73d5e8c3fa1d400c2ba7cf86d94024b001bc272000002004c903006c7971e58b16c600654e28e68061ae357f33e58061ae457b33afec0006540080603ce5281e3780760ccf04da00d91338c45c030a04c5a1a306f006cf99f22aa49b6f80333⟩, ⟨0x2dc1650af454428513509344602130ff075c3941bb0d606502f816d0b004f025610d07b03901aa0c605582380e205c02580d8048000, 0x5092b45a0dd6aab160b6720dd6aaaea7d673760052c006eb97035ae2e9ba8019530a24534aa6097c8808b48a509ee2d0afac2f0a1b36e8040594073b35624aa49ad8abd0cb89bcf82ccef5792525c26ad1368cd9a8ce4a0176c030a⟩, ⟨0x2bb14309e44bc252122889c43020c0fb877c38e1b80d586102e615509f04b023e104073833016e0a204801ec0d404d01d80b001e000, 0x8000af0d85789a2aa8d89c520424c654ea63420655384be44045c45284f716827078332a1936e8040594073b35424ad16cb302aaaca0a9485a02aacc1568cf9a8ce4a2b135509b71e01e7391251a4dc80069cd64f⟩, ⟨0x3941bb8d7067031d1800b8c55c291141096c49c23310b07ec3bc1b70c305d42b0147095046c2140ed06802cc0fc06f02900d003a000, 0xd79e69cf97c30ff0790030af1f7e1b970092c007549c800000800dac0c01cae5c796329ca8019538a3c20186bad91ccfbe0186bb190ccf23c900195002018176b4a078de01e4b33c136803964cf915489b742006679f80333007469c8000008000f30cc2780397ccf1e202ca03859a00e8139⟩, ⟨0x2fc1708b1054e28a13a8938482232111882c3e61e40eb86cc3441840b6856c29813d09104141d00d306102b413607702e00fc036000, 0x6eb555a740b39d400296003a7cb81ad71a6e9c00ca9851229a55304be44045a45284f716857fe17850d9b740202ca039d9ab125524d6c55fc97c4dfbda667acbf1292e135689b466cd4672500bd601857a8030dd71e59cf90040185007c70d⟩, ⟨0x2a914e09f84de26312708d843c20f101076c3941ac0ca860c2ec15b09f048c21c0f907383481820a4049020c0cc05702280e003a000, 0xe290212632a7531c1032a9c25f22022e229427b8b41388c19950c9b740202ca039d9aa12568b659815562d0f4a42d0155660ab467cd467251589aa84dbc100f39c8928d26f08034e6b27a8495a2d06eb555bd05b39⟩ ] def tableLLLLL : Table Block := .branch 14 tableLLLLLL tableLLLLLR def tableLLLLRL : Table Block := .leaf #[ ⟨0x38b1b70d4c65e31417b8b6854a28813c894848a22a10687c83aa1ae0be85b029e13e090840c1d80dd060027c10c06901a009c018000, 0x77cfb4e7ebed87fb3e801857cfd70de380496003da4e4000004004e20600f172e3cb1c4f1400ca9c51ed00c35e2e0e67eb00c35e8e0667c1f0800ca80100c07cda50346f00f8599c09b401e32678f1016505c2cd309e00f2733c7c6017500e2bb401e92720000020001f43615e268aaa3a2⟩, ⟨0x3011730b2455828f13d094c48c23711408403f01e90ee06d43481860b7857429c13f09104141d00d306102b413607702e00fc036000, 0xdd6aabae85673d80052c007af97035ae3adeb8019530a24534aa6097c8808b48a509ee2d0560b05e54366dc8080b280e366ac4954935b15410c7cce07f2667dcc09292e135689b466cd4672500bf601857e8030def1f19cfc0040185007df0d⟩, ⟨0x2a914e09f84de26312708d843c20f101076c3941ac0ca860c2ec15b09f048c21c0f907383481820a4049020c0cc05702280e003a000, 0xe290212632a7531e1032a9c25f22022e229427b8b4138bc19950c9b720202ca038d9aa12568b65981556ed154a42d0155660ab467cd467251589aa84dbf100f39c8928d26fc8034e6b27a8495a2d06eb555ed05b39⟩, ⟨0x3821b38d286562f616c8b2854629613d89784862260ff872837219c0c585b82be14e09784401e20bc05682400d805101a009c018000, 0x3439d86fe2024b000c17ac80000080055c0c01fba5c7963ecfb4019538a3360186b29f34cf320186b2df24cfe6f9c019500100602e0152078de01fd133c136803f7ccf915489b602801a9c0200353003026b20000020001443309e00fe53393494030a00c921ac47e539615e268aaa3e2⟩, ⟨0x2fc1768b785862ab14e0a3c4d625a12408e445420f0f8074437e1b00d086182ce148099848821a0fb06b82f013a07902f00fc048000, 0xa14d4a98116254045e45284f7168677a1b850f9b5624aa49ad8ab79f8899bb865538446fa92b125524d6c5556f944caac2ca9c1c2b1492e135689b466cd4672500b5201856a0030d83e68eb3a2010061401d0c36109a4ace8f3f0fcf688030a⟩, ⟨0x2eb1638ad854829713e097c49a24011288203da1d80e186c433818b0b6056829612c08e842c1fc0e306202a411406b02600dc01a000, 0x57c61b850d9b5424ad16cf402aaf85e694a8495a2da6a0555eeb05290b80555b82ad19f3519c945626aa136c4900f59c8928d26c4b00d59ac9ea12568b41cb15544106359072c555054e3d660b802a600182d4e06f5c41482a00694c28⟩, ⟨0x3401928c185b82a714b09dc4cc24711488484021e20e9871034a1860b384c82260de06882d815409d03f81c00c804f01a007001a000, 0xd18061a6722754e284510034a00200c03c03a40f1bc01c52a9e09b400c59a9edd80594275b3460de0063054f915524d8e0006a71b400d4c00c6fac8000008000400c00c6dac8000008000310d85799a2aa8789c52042526552a61c206753822c0a808bc8a509ee2d⟩, ⟨0x36a1a30cd462e3001770b7c5a02b314a09d44c024f11d08a04081e90e5069831616c0a884b42240f306a027c10007102380e803e000, 0x2bc30bc286cdbb81016501dacd5892a926b62a5725c9995b92d5390c57a925c26ad1368cd9a8ce4a016bc030ad70061b224d4d67500200c2803a786c8b35559d4e961fa4d400615a7d1c362d804a6001903590000010007a818018b14e3cb115a2b801a538a34a018699a8a153⟩, ⟨0x2cb15c8ab052227212b890845a21b10307d43ac1c40da865830e1750b4053425c11307a035416c0a103b81a80b604c01a007001a000, 0x28495a2d966055510cc25242d0155660ab467cd467251589aa84db2bc03d67224a349b2c403566b27a8495a2d06eb55529c16d641bad5547b393598fa00a980063e5381ad711ea3d801a530a24534aa6097c8808b48a509ee2d⟩, ⟨0x32f18a0bd459629614289984aa23610a87f03da1ce0d806642f414509c0474222104073035c1960b604f02180ee06a02300d402e000, 0x67c030d3392baa72c258801a500100601e31d2068de00e5954e04da0065cd4f373005d40b96ed309e0066054f1e202ca03859a00668d640000040001186c2bc4d1554444e290212632a753101032a9c25f22022e229427b8b427e70cc2864dba81016501d2cd⟩, ⟨0x36a1a30cd462e3001770b7c5a02b314a09d44c024f11d08a04081e90e5069831616c0a884b42240f306a027c10007102380e803e000, 0x2bbf0bc286cdb901016501c6cd5892a926b62a562bc999579ed539cc56a925c26ad1368cd9a8ce4a016bc030ad70061b3a4d2d67480200c2803a386ceb35559d4e861fa0d400615a7cfc365d804a60019c35900000100057818019714e3cb12da5b801a538a342018699696153⟩, ⟨0x2cb15c8ab052227212b890845a21b10307d43ac1c40da865830e1750b4053425c11307a035416c0a103b81a80b604c01a007001a000, 0x28495a2d966055528cc05242d0155660ab467cd467251589aa84db43c03d67224a349b44403566b27a8495a2d06eb55541c16d641bad554db393599ba00a980066e5381ad7136a6d801a530a24534aa6097c8808b48a509ee2d⟩, ⟨0x3131810b8c5a42b31520a4c4e825511b08043e41d30d906642f414509c0474222104073035c1960b604f02180ee06a02300d402e000, 0xf1bc01d16a9e09b400d1da9f22a9136d3300353a60006a60069bd640000040000d86613c00d20a9e1e100ba80705da00698d640000040000c86c2bc4d15544c4e290212632a753121032a9c25f22022e229427b8b427e30cc2864db901016501c6cd⟩, ⟨0x3991c38de06d234c1968c385f22e81698b0453a28213188fc4482050f5071835618c0b684e023210a070034c17009903f017c06a000, 0xb125524d6c54ae641332b756aa7528af524b84d5a26d19b3519c9402d780615ae00c36a69a9acea00401850074f0da9e6aab3a9d2c3f49a800c2b4fa386d1f0094c003516b20000020007d030034729c79628d51b0034a714684030d335452a79f00c34ce512a9d14a2a006940040180b98f48⟩ ] def tableLLLLRR : Table Block := .leaf #[ ⟨0x2dc1608ab052e285138097c48022e10f88003e21df0e906dc33017d0af04fc24010b070835018a0b604f02180ee06a02300d402e000, 0xb40555982ad19f3519c945626aa136d7300f59c8928d26d7500d59ac9ea12568b41bad5556b05b5906eb5554fce4d66a0802a6001a814e06b5c53ea7e00694c28914d2a9825f22022d229427b8b42bbf0bc286cdba01016501cecd⟩, ⟨0x2f11690ad053a28c136897849e23010887c837a19e0c885d82d415d09f84c024810f07b837c1a00c304f82380e005902380e803e000, 0x6c054f36502ca13919a306f00361ea7c8aa926d9700353b28006a6006cb56400000400008064a2c1d6585789a2aa8a89c520424c654ea62820655384be44045c45284f71684fc619850c9b740202ca039d9aa12568b659815550730949⟩, ⟨0x3aa1c68db869e33a1948c506042de1618a9050026512308ac40e1ec0e686b82f215a0a584842280f906d02fc14007602080c0022000, 0xf2e0e663c6ded4ed68f4a49709ab44da3366a33928054500c2a880186db027f599f008030a00cf61b6c8a05667f3b87cea7c01854f6730db0401298006d45640000040006206006bfd38f2c57dafc00694e289d8061a4c2bbd4e720186932aeb53aef5e000d280080300f64e903c6f0075e6a7826d⟩, ⟨0x2c915b8aa051227a134096c480221103079c3901a90ca05a82ba14e09f84902180fd07803301760a904d022c0dc04f018007801e000, 0x191251a4dbb801ab3593d424ad1683962aaba40c6b20e58aaad3163acda80054c00369e9c0deb8b4b69800d29851429a953022c4a808bc8a509ee2d0cd74370a1f36ac4954935b152b9c4cccaddc3a9db32bd495892a926b62a⟩, ⟨0x2cc15a8a584c225411c88b44402020f9879c3a41b70cf864030615f0a704f025e11407a838c1ac0bb04e02040d805702280c003e000, 0x39d9a006ff5640000040000386c2bccd1554244e290212932a953081033a9c116054045e45284f716857061b850d9b5424ad16cf402aaae461a92a12568b69a815556e23d490b80555b82ad19f3519c945626aa136dda00f59⟩, ⟨0x3ab1c60da069a32e1898bbc5a82b514b098448423310487f03c21c20d386202bc12908c03e41d00c905d02a411406b02600f403c000, 0x61929159a3808030a00d1a1b86ca4d66914487d0e8e018551a850dbd60129800708d640000040004606006f4538f2c5e6bce00694e28a00061a4e6f054e7c018693bbbd53bc178400d280080301564e903a6f00778aa7626d0037a6a7c8aa04db7fc00d4efe001a9de5c0759309e006f6d4f4e802ca⟩, ⟨0x2f61748b3855e29413a895846e2220fc07ac3b81cd0da867431c1810ae853025c11708283d81ce0ca05582300ee06602880fc036000, 0x345a0dd6aab1b82dac8375aaac165a2b38340153000e0ca7035ae30560b0034a61448a6954c12f910116914a13dc5a15af05e14366dda080b280ec66ac4954935b151f7f64cc7d626a9e161fb492e135689b466cd4672500a9c0185534030d⟩, ⟨0x29b14709cc4ce25a11e08b444220c0fa077039a1c00ce062c2da1560a204dc2380fd07103341700a604882000c204f0200084024000, 0x30af1345550b138a408498ca9d4c2840caa7097c8808b88a509ee2d09e08330a1936e9040594074335424ad16cb302aaba648e921680aab3055a33e6a33928ac4d5426dc7e01eb391251a4dc8201ab3593d424a⟩, ⟨0x3b91cf0dfc6b63401908c185c42c71540a244a823511307f03de1d40da86682f615108e042c1d80db05e027810e07802c80e003e000, 0x14c00c373c143acd08040185006830dcf4522b3479fc3e7d4600c2a8b3d86e4a0094c0039c2b2000002000190300391e9c796322e460034a7144fc030d2698fea73d00c349d63da9e3fc800069400401807be5481a37803c83538136801c9153c5840b282e066984f00393ea7979402ea01c976e4fcc159⟩, ⟨0x2ef16e8b4056a29613d897047a21e104877c3a41c30da06703081750b4051026611507f03b01ba0ce05782400e205c02580d8048000, 0x28495a2d06eb555a5816d641bad5566a2cf59cd800a9800735d381ad719a735001a530a24534aa6097c8808b48a509ee2d0ad742f0a1b36e3040594071335624aa49ad8a87b44ba98f5d0b53cea3e2925c26ad1368cd9a8ce4a01534030a⟩, ⟨0x2a814489f04c225512408a843620f0fd07883941bb0d706282f215b0a204c824a10a07583401760a604a01fc0dc04f01e80b801e000, 0x185abab2c2bc4d1554344e290212632a7530c1032a9c25f22022e229427b8b427810cc2864db8c1016501c4cd5092b45b2cc0aab1911ea485a02aacc1568cf9a8ce4a2b135509b74f007ace4494693750006acd64f⟩, ⟨0x3781af8d0064e3061768b3855e27a12d89304442150fe07743881a50bd851826a11608283981ae0c605382200f205a02580f803e000, 0x1d876edd1bd59ddd677eaee00bab6f51dbab40253000ed3ac80000080001c0c00eaaa71e58d51aa400d29c51aa02ed197a8aa7a602ed1a1a82a7a8b51801a50010060275f52078de00f5254f04da00755d4f915489b760801a9ebed7f53389e0075854f91568b760001a9ebdd7d53⟩, ⟨0x2eb1660adc51a280138898848e22f110084c3e41e10e787003621920b9855028413309204141cc0c7059028411807a02c8100042000, 0x1da54e06f5c6d0da200694c28a14d4a98116254045e45284f7168cfb8dba87cdab125524d6c543da5a54c7aeeea9ede1f1495892a926b62a11b2baa62337454f6c08fa49709ab44da3366a339280b8c05d5c402eddb636ab3b20402ea⟩, ⟨0x2d315c0a80522284130093c47a23010a87d83c81d70de067430416d0ac051826212008083bc1c00c1059028012607802c80f803e000, 0x22c0a808bc8a509ee2d0ac74370a1b36a8495a2d9e80555a7490525424ad16d3502aad322e6921700aab7055a33e6a33928ac4d5426de0a01eb391251a4de0e01ab3593d424ad1683962aadfa0c6b20e58aab68901aced30054c⟩, ⟨0x35519b0c9c5fa2f016b8ae053e28012b08844041e30e2069432c1770ac04e42340fb076033415c08f041019c0b604e018008402a000, 0x789538f2c710e2200694e28db01768d4e1553d901768d6e1153e15c2c00d2800803013af6900079ad3c01f0ca9f330034d003c4ea7c8ab98001a6f2900353e4dcbaa600796d3c00f18a9f22ae540069bca000d4f92f28a9b0af33455505138a4084a4caa54c1040cea7⟩ ] def tableLLLLR : Table Block := .branch 14 tableLLLLRL tableLLLLRR def tableLLLL : Table Block := .branch 29 tableLLLLL tableLLLLR def tableLLLRLL : Table Block := .leaf #[ ⟨0x32318a0c145da2d51630ae45302871348948480231111080c3c81c50d8067c3141780ab84f823e0fe072831815a08c039815006a000, 0x48a6954c12f910116914a13dc5a2bf22eea1b36ec040594075b35624aa49ad8a84b516a9895ea153e80262925c26ad1368cd9a8ce4a02e901757400bb7a18e3acf10100ba80785dbd14725678f7ddfbdc402eae1dd76f150094c003ceeb20000020000503⟩, ⟨0x2e716c0b2c54e29613c098449e24211388203da1d80e186c433818b0b6056829612c08e842c1fc0e306202a411406b02600dc01a000, 0x284f71684e3a19850c9b740202ca039d9aa12568b65981556fd17d490b40555982ad19f3519c945626aa136f6900f59c8928d26f6b00d59ac9ea12568b41bad5576105b5906eb555cd481d679b802a6001e6d4e06b5c734e6a00694c28⟩, ⟨0x36319c8cb061a2ee1678ac050c251119084c3e81d50e3069c3101690a504ac2380fd06f02fc16409704581f80c005102280c0030000, 0x772ee600694e28f3a0069a1afb654fcd801a686fed553ed9db400d2800803013e2290007c353c01f6ea9f840034d003dd6a7c8abc0801a6f8b00353f11e2aa6007bf53c00f7aa9f22aef60069be2800d4fc3f89a9b0af13455507138a408498ca9d4c1840caa7097c8808b88a⟩, ⟨0x3141838b745982ba1558a704fa25e11f88b443c20f0f8074436419d0c605dc2ca14409584301dc0d705c028410606c02680b801e000, 0x716819f7c06e943e6d5892a926b62a1295f6a624fdbd4fd3896a4ac4954935b1502caef53057ec6a7e8417524b84d5a26d19b3519c94050202ea800176fa40f359f0080b280f766fa60f959f7d59fd3d016579e6cdeec00e99e87ce56400f74a71e58⟩, ⟨0x2cb15c8ab052227212b890845a21b10307d43ac1c40da865830e1750b4053425c11307a035416c0a103b81a80b604c021009c01e000, 0x28495a2daab0555d8c2cd242e4155700ab467cd467251589aa84dbf3c03d67224a349bf4403566b27a8495a2d072c555f1c18d641cb15579b14159f3a00a98007ce5381bd71e6bcd801a530a285352a6818116154045e45284f⟩, ⟨0x29e14a0a084f026612c88e84201fe0f887483901a90cb86142f615c0a904cc228102076838c1900b005082500d405902380e803e000, 0x206fac1606fd415c4e007e6d33e67cd0034af641584ff2401d3a06003f1e99e6829748f03004f874e81be0802a7001f814cec4141a15103022c0a808bc8a509ee2d02bf940dd286cdaa12568b68a415576717f49⟩, ⟨0x27512d093c47422d0fc07a43b81c90ca06042dc15b0a704f426012308a04041e00e306b030c15c09b033015c09403f0170070024000, 0x1102129e13420aa645a000002000000330a2c3385e4a00000200000238624b99a1df043f8a4a0d2e29d331a49559132869a14b8a43244cde9a0304480701202fc7521b13e99a13589a4ba4781beb05⟩, ⟨0x22810988183f21e80eb86d83521960c605e42d415709b048c2200fb077037c1a20c0059828812608903a01940a004101b8098022000, 0x90a55d0a5853366b1a35c1b8045cd84fd1a36060ed1661443d49800c185ce9c92d3525cd253d0a4e24c10dea69f14949a4c24c0d58aa93492152a9309303651b419553146f⟩, ⟨0x27412e894048623211088003e61de0ea06fc36019b0bd05942a0141097047c2200f3073034c1920b604081b00b2044018808001e000, 0x882997429614cd9ac68d70ae0117361387eab60607b55985107d59800c285ce082cb03d653c8e8ea37624d249ad81a95b09f0346c0c1b22c00004000000860d6ad0d1220dab390e4b86692b349849⟩, ⟨0x298131893847e22a10d88303d61de0e486fc3541750b2054c28812d090044c2040f1068030c1580a204581f80ce052018808001e000, 0x41a70000021c27d94f239152b7624d249847027b5b09e50d5b03031aac040000000008786692b349849aa2997429614d49ac60d70d403573613ce06cd8180cc65b8c40ce69c1859404a18ae786692b349849⟩, ⟨0x22f10f08443f81f20f0875c36c1a10c905fc2ce1520a404cc24c10f07e03c81c20d706002cc138087039018c0a8033013005c01a000, 0x2e99fc5227667818a4d303436000db20e6ca611c384586e345418d9606831b2b89c0f5669a2918197cd70301e0cd71881e4d381ab2c28d97624d249855006b5b09dc26c0cc2b⟩, ⟨0x294133894848a22410d07e43d01d70e4069c33418d0bd05a42ac14509c045c21a0ec06d031c1740a504f02240ee06d0260108042000, 0x892893001b5430d9584f11e0296e81804a236d9a6692c34984988900bb650a5c521da3270e41ca3228f0c27881003b740c0030ff6c2a94a434a30d212aca921e2ca5d23c0c0170ed6e81a1d0026dc0110e76c⟩, ⟨0x22610987f03c81da0e386b832e17e0b4855828a138094847021e10007683781a60c2058828812a08a03c81b00c404d02180b8042000, 0x3b44e00ecd08f087818374480dfbb40db6880e0bce25ecb2821f34cfe295c92e29a3318493c5139927048f1a5e4d0d89eccd09a44d2e2781a20ecb03445595c4e0031276c⟩, ⟨0x26812588e043620a0f187403821a80c585c82d014b09c04a42200ff073037019a0bb055026c11807f036816c09203f0168068016000, 0x6a694d4725006a4938c9ac08006a29555325308fba02ed0069a9881efbce060069795d8d25308e03aced1a3881ec3ce063c9795828c19dc259a4771595095fb82e420b036360a8ea1f224e09⟩ ] def tableLLLRLR : Table Block := .leaf #[ ⟨0x21110307e43cc1cb0db066c3101730b3056829213c095048021a0fe075836018a0b8053826010e07a032816c0980420178074014000, 0x1899853764940301868342c4030389dd525a1233d19b11964cfe292f91e060cd12d8aab592d6f25bfa4bc66da33fe49a533f8a460ccf03644981aa792c288f5449a06⟩, ⟨0x20e0fe07c83c21c60d706883201840b6058829413709204442080f5073835018e0b6053827411807d03601740a603e0178068016000, 0xba4781864d32110c34fe2a1f11a9647a46d1028781b01122b0492e372594d0f429389314340a89f14949a4c24c0d8a6934925469309303625ab4e24937abdb13e26⟩, ⟨0x2010f907843a41c70dc06803221860bd05b42b414909a04a822e10d07d039c1b40c205c029413608803a81800a604201980a002e000, 0x6125e4d39927049c499256886c4f89a119c539149704cf4266781b2392c0d9d4972543f8a4371a1e06a89130362d258ad0e554a79334519f224e091d34a79acd⟩, ⟨0x27612d894446c2190ff07ac3a01bd0d6066c31c1730b4053428012508d84001ca0ca05c02b8126086035816408e036014806801a000, 0x76486c0c01b142c01a4e6201b244e9192806bd0d8b52326692834b8a6b20785e09df81e16c2701d561b03006a70b00eea2201aac4f7105818034e86b8c4035089eca0bb582e699fc52b925c53466⟩, ⟨0x28c13d896847a23011088504101fb0f107143501810b2055428412a08b84341f40eb06802f414409803f81b80ba05001a80a801a000, 0x907347c8c439c10d124fe295892e29c46714cb053a495aba53568112901f3b0064e0367529308e1ba2c361a2aa592c0d52c94c23806e10d0c122a3b944e06a10d75c99a4a0d2e29b401e178269801e56c27⟩, ⟨0x27b135097448423810e88403ea1e20e086b432817b0b1052426011308403bc1bc0cf06102c014c09703d019c0ba04a01b8090032000, 0x439ad84e03d14360600e8216e3100e8a27d549400661ee738e8b8372e9b8c074db813a406f9d37d6ceb2d75395e09b30875cc9a6f23f8a4ba47818c24803a54af4892c0da2c979244c7689c122174eb⟩, ⟨0x24a11b88b442c2030f8076038e1b80d686703161790b7858028a13808e84282000ed07183201760a004681c80aa0440198098016000, 0x2a143c0de0b32c30438688b9b1c8a8c33e449c1234697e3697c8f031c4900eda1ac31046e22716496068764b036bc030d61898f63138664bab00c34d68fa6326692834b8a74c0785e09⟩, ⟨0x25f12a88d04422060fc87783941bb0d5066c31816d0b0054428e13a08283c41c00d105f02ac13c083038019809a03e018808802e000, 0x40c0033f76bb564a01f0c3586244f1c4ec4d14f23c49b7624d249b0a01a96c278c9b0330ac00010000000875fe8b06695c921f21e1c45b89f9a0186ff29181a005dd671260cde9270486f6cb⟩, ⟨0x2c31570a444f426712c092445421d10608083e21bc0d0864830e16c0aa84c424e10e08203a41a40be058829010606602b80f0036000, 0x712ae030065b380b46f192ec49a49352008d2d84fe66d81874d600004600000430441a0f91270480607090f5d9a0101c060f03017fba60600fbe1b400b469bd16852c29a02008b5db803cacc23f9c030d0019feb880fd313⟩, ⟨0x278134892047222a10f885040e1f20ea86d032e1820b885882ae146092844c2120fa06c833417c0a904701ec0d005901e009c014000, 0x3c934760156fb492d89f13626614d1a5961c0065a003467710061e99d1959624cf9127048d9a68bc026da5c23c0c79268ac016db48c611c1ad5750212aafd92df725308f040032d0655880b054ce06⟩, ⟨0x277131093445821f10107e03b61ce0d886403021720a8851026212708a037c1a40c305a828812a08403a81ac0b404b01d00ac042000, 0x13caac1e1574b80c173613c8001cb6060063e95b0c431902660b34ab73d893492694407ed6c27e8d1b030768b0000040000021d0a4e24c90d12a27c5252693093036a9a4d24959a4c24c0c01947b6d⟩, ⟨0x28713d097448823a11088343f81eb0ee06fc3641a50c705dc2ac149096048820a0ee06882c013208e03b81a00ae04601b806801a000, 0x389c0198e5b0606f181b1405d78268b86692b34984996c0a95d0a585227d32c0f965d37041dcd84f2a0072d8180194a56079b4401952660f94cf739b099782604b65f6a6c334959a4c24c8e054ae852c29⟩, ⟨0x25b11f08ac44220e0fd87b83ac1c20d8868832e1860b6856c2a214209284501ee0ed06c833c16409704401ac0b803f01a80a0028000, 0x3424b74648c0db222c3043b0ac39722b475162ccf9127048c9a62c4dda5e23c0c6926740065a3c712167699c0d6d68b03003374b6dc808898470066b969a5100e6d99c0cc2bb5545ceb45⟩, ⟨0x2b414f89f84e225412508b44301fb0ed074036619a0c585e82d615c09e84c024211708503541820b204882100ae04d016008801a000, 0x6755d5b00adcd84f508072d81801a7e560c2b1006a199807557dce060069a96987f3c4f23c49b7624d249d4c01a96c278c9b0330ac0001440000087a828bf926a74016cfe29001a9b003b3c0d5320056981aa5ecae27⟩, ⟨0x2751320940488227108080c3cc1cb0e0869833217e0ad053427412b09004441ec0de06a030415a08c03e81b00b604c017808802a000, 0x1826b98945846b040196cec2d17138035f4b77d2288c0dbd9042dc4e018f42ca51d0542a4cdb421f224e0934931726434361a1e06a85132c28b7c0226e7a14d86692b349849aa00a95d0a58524d0ab⟩ ] def tableLLLRL : Table Block := .branch 14 tableLLLRLL tableLLLRLR def tableLLLRRL : Table Block := .leaf #[ ⟨0x289139099449022d11188203e21e10e506fc3501950c385d02c2146095847021e10007a83681860b904f020c0d404f0200070016000, 0xb3f32dc4e00dc52df11ee2303784f30b037193798d76db2704dce8cb0f513f437b889df513d70ec2fac0d859c498337a49c1208e8c2f00163c0dce6fc2c03ae8381eebac03b1839a4b0236b5f0a3e35e09⟩, ⟨0x2a414b89a84c023f11a888040a1fb0f0073c3681900bd85b02c215209b84702240fd079837c16c0a704b01f40c804d01a009002a000, 0xf14800d8c801d9e06b17002b4c0d62b658e8060f035863d0b1c33806390b8da68150adc853e449c1271260e958683906a781b0095303638a280817fc039ec5344b9a100dd20506e903e18ed506ebf8c6e8920eea7⟩, ⟨0x2a21468a084ce25012088a84222020f8875037a1b30cb05ec2d41590a604bc24811308303a41be0c205a826010806302100c0042000, 0x2aa1538245387858182c9f14cee0326c005cfda9878cf8d81f2ddc098f030038c4b4192a88c99a4a0d2e29c4c0795e098735b09c03c3e5b0300386cadc6200e1f33a2b450a3af4b9a300cd39e4d06fc9363600b67⟩, ⟨0x30517b0ba85ae2ba1558a404d825912308ac4422060f587783a21c60d486142d0105079838419c0bc05182280ea05c020809001e000, 0xd89f91bda9300becca4c23807df0bf7004050ae9a4bd3497ba0183c0deef4c2f69fb83d0a5853899f790253affb0060f1f3f1298f6070042a00803011e38fe4f2d836120d2c49b9f06cc03748165ba41e94e6194eb00e1e0f93b112d06954d6a6⟩, ⟨0x25512108e044a2160fc87a03961c10d8067431c1710aa04dc25a11008083d01c40cf05e02c813e08e04081c80ca05802580e803a000, 0x69a46063c516611f600065a3e7100f6299c0c386beea4a611f590065a00c1b3101f5b99c0c02c152b348ee2b2a12bb292f6b2581bae92d599fc52b125c53066714ad9a404ec253d781329⟩, ⟨0x28413a898049623010e88283fe1ea0ea870035619c0c885f02ce14c0a104b422810707e83801860b904e02240d806202280a803a000, 0xad4d3e0a9be654b28e6a7f15124ea2704d712ac1b94f4d4ab36c53e449c120d2a99a5568244ea78187955224d467c3340db78032d05e2498c0c00ed92d0ed220cedd3381b680065a09ddc45c4fb28032d⟩, ⟨0x28513989a44ac24911f88ac42c2070fe07b43a41b70d6866030a1700b3052427811f07c03ac19c0bf05a029411006102b80e804e000, 0x5c23c0dfe496ccd03419a2ea429f224e0934923ff74341c0353c0d782a9fd24b302a78184392656e270064795c8b230152a93347e0449f224e0934932047f2d0063a00e4f0347200ca7ec928031b83b27⟩, ⟨0x1e00e906fc3641a30cb06242f41690ad053c28012f090044420c0fa07683681920ba058027411c08303b81a00a8042019807c014000, 0xca1af944f8a5724b8a6ccc612628d3d927049e49af345a496c4f89a119c53f1c9604ce611e06f824ad89f135231849805455491cc24c00a2bb891e06⟩, ⟨0x234115085c41a1f00eb86e834c1910c205dc2c415509d04c023611108103b81b40c605c82a813a08e03f81a80aa04a01a806801a000, 0x8185144c0df08032d018578803f1cce1dd144a4cf466a330bc29fc52087b29e060b454c0cd8aa175161751624d17c52b925c532a98c24cd22a650d53824185532e342a2852c29⟩, ⟨0x23310f085040a1fb0f3873c3861b90d086342f21680ac853827a12c08b84341fc0e106a02dc14608f04281c40bc04f02200c4030000, 0xc199e06c893034fda2d02243c2340c1889153e68b4568b1a67c8938246cd2f06d13833c0c7927f10065ae31007f399ceea2cefa2c0d3aa8a8c21f224e090d5121116ed08e687⟩, ⟨0x1fb0f8877438a1b90d7865c30616f0af054428413509404642100f9077037c18e0b8056828412808003781680a003c019007801a000, 0x40d46e8b50890f08d03064245517a2d67a2e699fc52b925c534663092f269cc93824e24c92b443627c4d08ce29a1345c133d0999e06a154581a91d1694cfe29⟩, ⟨0x27e12f892c48222d10707f43a61c40d286182ce15d09f04a822e10807b83a81aa0cb05e02c813c08903a81ac09803b017006401e000, 0xd3aa5d38a2c0d4d68a0069d51c60d601c28d38a518478780069a00698d4401c3ea9c0c0069752eafd166a43fe49a533f8a460ccf03644981a92d16848cf49a8d03007a4949a533f8a460ccf036449⟩, ⟨0x27f135895047a23310f88283f61f00ed86f03421970c1058c28812508883c81be0cc05c8298126074034816008e038015806401e000, 0x5aba2c602c703058f035a8a291f29f224e0907f54c6000f4d043e54f0303daa400c57a68018b751003166a767e8a3be29d375344cb289889121ba26f04580fa874bc13b06b9934de47f149748f031849⟩, ⟨0x275134091c47a21c10507b43b21bc0d4066c2f41700a784ec25010706d03241780ad050024c1080730320164094033012006401a000, 0xc27c71003b740c0038df6c2e14801fce6970e8a037e334b9145613e34001dba06001c66b65bda286487001c63b66316318085ab34cfe295c92e29a3318497934e649c1271244cc643627c4d08ce29⟩, ⟨0x2ea1648aa052e25e12508d84442150fa071c3661a60c285ec2b413909384741f80f206882c013e08e03f81780a20440198088022000, 0x32bc02ad395c005691834800801001e565a2f7516f7d16fa515c4e0039156cc89c8a001b55e7a2b09f218072dd0300d6425b007b20edc5d23c0c0299016e81b1f804adc0238fb6cd334961a4c24e3c805db2852e291a36559c860d9d278⟩ ] def tableLLLRRR : Table Block := .leaf #[ ⟨0x271132096847222510807ec3dc1d70e006c033218e0bb858829612a08e83f01e40d105e02b81320780318160086036013806801a000, 0x162981b2c0112d980a8b6e2a7a8153d99a349660186c98cc68b09938262416645f29c0cf63820e525b184e0799456e8180eb282d9002a7d2181b14e05b9376ec11566093ee5678a5624b8a70cce29⟩, ⟨0x29113909a049223911108043dc1de0e386c033e1920c085d82ca15a0a584b021a0ee07203141620a2041816408a0380148070014000, 0x4e5e546060292ea979d8c064b1c18f336dc1da26731a69a649998c91a34e99b24d3826e0d7098c238019a74d00335ea200e6ad4e06003352977d28a611c00cd1a58019a002a958268b066bc8fe292e91e06⟩, ⟨0x2c815f0a7c51c26d12a08ec45822110407a43901be0d286182ce14809a049c2100f3074835018a0b605382200bc04a02000b003e000, 0x81800d03a5e89c40633b2e7413ce7089e73e449c120338e9a0001e9a020732e78180661d20067bd3400cfba88019f353c7b457138019e54d80858c0d08cab3c8ee12cc238019874b00330801d2b7ed1606c4f457138019cb4d⟩, ⟨0x2bf1500a1c4cc25111e08b44302030f6075437c1a70c806142dc15f0a8050424411507b03b019a09804381d80d204a01f80b003e000, 0x1a494bce0178a7d686dcffd9520e0a9c94d8dea9bb054ce64cb9b419606cb1e74f65ce5ccbc12b2632e3536c49a493cbe8bd2d84f45401d360600344e9600000e00000439334941a5c5342403d2f049a68b613d050074d⟩, ⟨0x29e1478a084ec26912708bc4201e60e386e034e1920bf05d02c015309a046421e0f4070030415009704301e40b404f01b00a4014000, 0x1624b8a7119c53140542489da3a4da20114900f8dc00d1c03636a498471a358c99aacd51606b3545713801a694de480e2303780030bb2745a5e0069abbeef19334941a5c534a803d2f04836a3ad84f49801d3606⟩, ⟨0x2c815c8a78506279132096848c2060fd87b03b41b90d1060c2e41610aa04d425410b07f037c1aa0b604b81e00ca05202380b001a000, 0x389295964341cc353c0d884a981b41d14008022f800f2bd1f1358a683c185ef5d2da064b1c2555ca6c99a4a0d2e29aa601e97826da021a5b09c01d4fa6c0c006a6d2c00dafa881ba9f53cc112fc2270483bed0b0219028fe29⟩, ⟨0x22e11088484021f20f387603801b10d3066831a1790b4054c292135095845c1fc0f1068031815a0a304781b80c80430178068016000, 0x28cc6125e4d39927049c494ae4886c4f89a119c53a6e8b826713a33c0da628b0369aa2f002b9fc5203bc06e781b7009d3036b0a286d100b9e06010ba87568ca2f0429f224e09⟩, ⟨0x2d315c0aa453028b13c89bc4c025612108784281f90ea86c433e1840b0050422e0fc06c030415409d03f01840ae03a014807001a000, 0x6185709fc932a67f149ec8f03544981b4bd171c2200c1e06c60820f88bbde60e01bd5e20f78835d6e507b75d2e3072dfa368e5bb46167a396acb072cd90a90703658f56b32dc4e006c65362114e630347028caf34cfe295c92e29⟩, ⟨0x2e116a0ad455428b13f097c4aa23610b87e03ce1d60e586c032a1760a604e025610c076838c1880af04d01fc0c805702500fc048000, 0xe29b8601e9782711889a5b09c01dbfa6c0c006ded2c00e1ea8883b7f53c534a59a70480f930b00ee20e006dd52c00db93754ad9145713801b634d3836d6a3031c0b674b91f54bd1aa7183283e306307a14b0a7130ab1109c38b00307⟩, ⟨0x2ec1668ae454e29d13e09c84a223010a88203c81da0df86d43281800a504e425011908403b41a40b705402240d404b0208088022000, 0x3562a9c068a5d23c0c017b9d6e81b730026dc011b976c02f8a0fe290080fc10781805de84c0db880036cde545eb1e3e67a2dc1f18d2b66988923269f16461601d141f1fe0859847b960069a00760544ee5cda9c0c76b5ed2e4cd25069⟩, ⟨0x29e1488a184ea26812f092848022c10f87f83a21bd0d8063c30a1640a9850826611208283e01ca0ca05b827011e06e032010c03e000, 0x2ccd09a44d2e2781b8fd1606e3d45713800ef4db37a37a4006d5c628ac27014de5b740c025bc76cd334961a4c24eef805db2852e290e51809b8c483746022df18613801eebdba06001dd5b6004056a89010ab354⟩, ⟨0x272128891c45c21710107843981ab0cb06042ec1610a304e4258121083038818e0b4051825810e07a036817809603c018808001e000, 0x6eeb9cf035cd6ba65c46483529f8340f2dc0eca7e0b037b74f0aa609953825fd9581afbc1e852c29c4df30bc242bf200c1c2bf584d2087cd33f8a5724b8a68cc6124f144e649c123c6979343627⟩, ⟨0x34318e0c485ea2eb1650ad850a26812588b841e1f20ef870836e19a0c485e02da15009984481ca0d105c02b811a07001f809801a000, 0x201ce727818029c65303717000db35d5161d98e9ebc24f740072900ae7948035ac9d554efa580352ca6a79354d524a704d4b72cae94d29269c1201ca72b0065593800f255ac007924976d5a8e8ba602e7818933916d6eb58d2781cce3324793d95839ef6c1cfe29⟩, ⟨0x31c17e8bc45c42d51558a5c50624811788383ce1cc0da869431c16d0af055026611c08903c41a80c705002580f205c02580a801a000, 0x918e9748c611d8560062f802a5749a2ed5a2cbf202033e20727c6e073e2efdbb9e3c8f63a93f87c909f7898fe98c06931c16f912d9491e0606fe41b67002c78181b38fadc3748d27f1480236489278186a90e532147d27813480471adb0059d64fe29⟩, ⟨0x3c01d90e8c7283751b40d2467e3201758b3055a28e12488b03ba17c0b885902b013908e03f41bc0bf05002040c405501b00b001a000, 0xaa1b624d249df533a96c270073329b030019954b00000400000618019614795d9ea9a0365b51f1bb60060169db924e035c727c1ad6a6c0200c04c664ec1662ad55340040100363147c4d666c466079c69a00e27276219be9a0064551e43e6da6cbecd94d00319a8f18f3553584f19b345360697519696c27⟩ ] def tableLLLRR : Table Block := .branch 15 tableLLLRRL tableLLLRRR def tableLLLR : Table Block := .branch 29 tableLLLRL tableLLLRR def tableLLL : Table Block := .branch 58 tableLLLL tableLLLR def tableLLRLLL : Table Block := .leaf #[ ⟨0x3441978c806162f616b8ae055a28e138896846621f10407f43cc1c70d406502ee15a09e84a821a0fa06d82f8142091039012001a000, 0x7d54fea6fbc54f7eaa67a040a5cf300b4bc1200e78d2c01b064e07732c011b6c995707a2eb70cbc12db4b2e69cd5a48019934998946bbef293e4394c9c01cce539e49801c9a4f96c9a9f324a3df17d4a401cd2533d8d4e97cd1d7fd395f1474a81200402a964f666⟩, ⟨0x2bf15a8a9850a279135095c47e22b10b88203d21d80dc86bc33018b0bf057427c12f08803bc1a00c605282440e806702400a403e000, 0x40c7927b74016db48c611c3445cc22457a9a2fa7a29847003aea9a3c710b3af2a7035716cba14b0a7b18022d7e7c03d2cc23801d614d001ec2b8803d6553818007afed7e628b660f92b713801d514d9e6122a3034f908d4b⟩, ⟨0x24811d88b043c20b0ff07b43bc1d40e186d03461940c505a42b4139095046c22010507c038c1880a304201bc0bc04f02200cc024000, 0xa149c49921a2544f8a4a4d2612606d5349a492b349849818033baada7927ba002adf6925b13e26c4cc29ee1b2ece0034d001ee0b8801da153edfb2c499f224e091b34f70804db4b847⟩, ⟨0x2fb14d0a284e226612688f844e2080fb87983ae1b80d586783121740a9851824e11d07f03c41a40b1051024c0e4065029012006a000, 0x77aa8200008926c8ca5b851edb1a8d11d78250a85d7ea980d163efd09d4dc334959a4c24ef90154ba14b0a49e5560f0abf09049b9b09f79003a6c0c0077852d8620c77954c10bc0ae7b126924f7f00fdad84fd1a36060ed160000060000043⟩, ⟨0x2d015f8a8052c287139097c4a423a112885040a1fa0f487603861b90d5062c2fc15f0a504d425611607c836815209204081a009e000, 0x1838803e4f53818d25c6ad943243b0ac2e822a4cecb1a67c8938246cd2f06d13833c0c792789801a6b8c400f15a9c65d96496cb03461d9401eda4eecf85d37adcbf6adda4e071b269dcd4cc4e961a5748f04080449ecb956e327⟩, ⟨0x2c115b8a60506264127890046221010187b83c81cf0cd06242f01690a504f426011d08503a41b80bd059825010606402180b803e000, 0x103001e874d07258801e8b53802b2ec49a4931f005b6b613d61ab606069558000028000010f0cd256693093cd00552e852c294d5161a22fd08022e6c27e5a00e9b03001e574b1e38801e5b53001f3bb9c9fd94c23801e4b4d⟩, ⟨0x27111e08a44281fd0f3074438c1b30cc060c2dc15f0a9050c27012508904201e20e406683041640a504501d40c005301a007c02a000, 0x120000043f591312cab82599700232c3fd578243245f8084aa914b2c19594e24c19bd24e094d51710a1e06250996c2709019748c611d8560f812aa08acb04765713801e914d1a758c0c2caab⟩, ⟨0x26a125890445821f10808103ea1d60d6065c3041750ab050426e12208a84081e80e106302e015009904101cc0c804301b007c02a000, 0x14f88a9c0d38eab613ca4ba46308e007b3d2fb30010054a9feb2c9a595c4e007bc53767163036ad2ad84f7c22f08695d0e0856a9e08692c63c8e222b37624d249981042b5b09e00366c0c0fcab⟩, ⟨0x2a214189c84c225211988984322040f787383821a20cc05e42d814d09604342000e106102e013208803d81a80be04a01f80c0022000, 0x3c57a4a6e19a4acd26127d000aa5d0a58524c4ab06155fdabc2dcd84fe6401d3606003e5e96c31035e66a6efdf5d73f2603a9ae27003e469a033bd54606067de2963469c335c9a7049b72ae131847003e1a9a3471⟩, ⟨0x29f14309ec4c4243115084c3f81ec0ea86f834e1900b9058c29c13f09a047c20c0eb070833015a09404081c80ba04801d80b403e000, 0x5351ba704d2d13ac00fc1a6ced8bc7d60648190c994c6931d931a4327d5e65eebacbea480b1ff5311ba9f224e0907954d11bbb410f253c0c0eaa9f5c0069b3864f10f513729ad7152b46a7613d10d543001f1347⟩, ⟨0x2aa1488a004de26012088d044e20e0fa875038e1a80cf05fc2e4153099048c22e10807b83b41a80bb05102240d005701b00a8022000, 0x30f19d386692b349849fc002a9742961484e73ac0735d7fe017f73613fd90074d81800fd7a5b0c4637d9a985c7f4dccc24e235649f133c0d5d7eeb01bf73d7debac0af9cf6a037ae7b6731100c2b9f1180691d34ee6⟩, ⟨0x27212f88f845621e10788043dc1e10e8070436e1a40ca86102ea16b0a604ec23810d08003d41cc0c7054021c0fa05c02380c8032000, 0x3743c0180bdb65343d0a4e24c50d02a27c52526930930344a8934925e693093037231694d1b348b2e434f6c4f06684d892400feda68abe375103a10173c0c02053eea8a8b2c545968cbdce7f44e7⟩, ⟨0x22e10f881c3f01ed0f0875037e1ae0cc863c2f41700ad851827211e08a03fc1ea0e006582e81560a004581b00b405001d80b0016000, 0xe24c92b443627c4d08ce298dcb2e099e84ccf0346ed96068f4b2dc2a9fc520d81a9e06a8254c0d1a16598d53e419f224e09065548cbe754d3d91e0616154c0a61fb71c73c26⟩, ⟨0x2050fd87983961c10d6065c31417d0b9057c28e13409104582080f8076036819e0c00558258102070031815008e03a0158068016000, 0x10346e595390153c0c8c4a73e153d0a585389b4b44ab8143a76897b91f118aa47c46c463511e13362a8c7b2c64d96442cb9a67f14ae49714d198c24bc9a7324e09⟩ ] def tableLLRLLR : Table Block := .leaf #[ ⟨0x27a138093c45c20d0f9075c36c1a70cb06242e816a0ad854427810f08103e01ae0c405b827c12a0820368160092038015806401e000, 0x206001863b5800c65dc5492196e6019341e4f4f8680547b59ff24d299fc523066781b224c0d1d7650018ed002b3c19a060068eab4e8a87f14870343c0dc0a2638acad5aa7fc932a67f149ec8f035449⟩, ⟨0x31917c0b8c5b22c41518a104ae24211188643f01e70eb072c35818b0af04fc240113079034c1920aa04c82200f605a02780b8042000, 0x32316b916b2c0d22765001918b3801f5d4b7ad001916b548ed9768801a3c0cf5321d6bc734b59a704d38e574b53990db3a9c486299d9c00d30a3d34a6b4b713800c385b791d32a8c0dc8a9852e4cd25069714c34803daf04c682955ad84e0070cb6d⟩, ⟨0x3041738b2855a29a13e898049e23c10e88403cc1dc0de86cc32015708904001da0da06382d012a074034816008e038015806401e000, 0x94a4f94c9d28ca401ab2535349a49b265361593298133cad2600b3f68fe2900200e7dd1e060053e69303095e1098e4ba4f592d538b399c108000a59c9659f1106c4d132ba26224486a89f7a0429601f2436bc13b06b9934de47f149748f031849⟩, ⟨0x32b1840b605862b61498a244cc25512208d44242050fc076c3941ad0ce063c2d816209f84b42180eb06b0304134090036813003e000, 0x61658c858c2c80038a945b2b09e15c015c740c0138566334cd2586930930a8005e32852e2900678964d9c8019da591278613800e1418e81800309ec6150a44df04574001821ba4945964b6ca0980331c9e0684b09a71d27e0156793e489009b3c8593147⟩, ⟨0x2fe1748b7057228913a095c48c22310807b43b01b50d406142f61580a184e024611608383e81da0e005e826811204c01b808801a000, 0x2592cae27000c343190cf8680007152bb65a6009938c19e196031c707a8701843271c0d2a786380ab1cc27015c3171d0300a61878ca51566093e75678a5624b8a70cce2986b802b130d600162460d2001001000e1a98894cb2ca6d9654acae27⟩, ⟨0x22010587d83c61d40e486d832617b0b8857827612608984081ea0e606c833017a0aa04d82400fe06e02f814808e036014807c014000, 0x953b2cc25951b43e449c121ca26232005c6847643c0c1aa2622a001c6cbc5965043e699fc52b925c53466309278a27324e091e34bc9a1b13d99a13489a5c4f034b259606⟩, ⟨0x2b114e09ec4dc24d11c088c42c1f50eb073035a1a00c085d42d015709684602120e806c82e015c0a104601dc0d004701c005c01a000, 0x12b565001923b6b8c4006496e72b16595bb2b89c006476da037b4d460601dd9e96c27009d969708ce271a35809ec2006952a965308e0032236d34a2007227738198572996594db29847001909b69a5100390bb9c0cc2b⟩, ⟨0x29414509d44cc25712408cc4302030fc87903aa1b40cf85f82e815f0a504d424411408083d81c20d3059027c0fc05b02880c0042000, 0x81b81956791dc25984707b5583d06aa98ab2c0d30f65308e0032736d0745881649ddce06ab155cefaa5e99521ba27286c5913825a8957043000c965b43f48805c975cc00b144c6c0d24e0036d38a200325373⟩, ⟨0x26712c892c47e23011008444041df0e506dc3521960c185b02aa14a09984902240fd07403541940b905202600ee06001f80c8022000, 0x690d0435237ca6aec6d94d929a2f005ac6ceeaa43744e50d8b226b744cc32cb961197824149659e4b3912a652cb343651c517827c4d732f65a4600194ab681a0d100b94cb9b89c00651adbd071⟩, ⟨0x32518c0bdc5da2cc15f8a784fe24a11688384081e30e206dc32c17f0ba857828a13808b84081d20da06782d8126072034013c020000, 0xc27003983b6c0c0033036b6188084c1dcfbe801a98000010000010c01bfa4ff217fd3606001979b6841f8b51713800cbb5b770668c0dbc232c0639cec2b016d8c754dfd944625cf91270480c3ba630a067c680864239e060a83748210620bf8c390a7d6c6⟩, ⟨0x2b41550a244f825d11988a44282050f2071434819a0bd85982b2138090845c2000eb069830c16a0a404982100c605602480d8046000, 0x81aa74016d2e270031c6971a238002a540d3b365308e0033396d0031aea200733d7381800c68a5ce8d95c4f32a0036dd40da3037302cb9cfb286e243d663610d86692b34984998a00ab5d0a58529c22c3745c5c0f0999⟩, ⟨0x29013e89a84b624e11f88d04362020fc077c3a41b90d6868031a16c0ab852825211008303b41980b9053026c11006902d012c054000, 0xab912da224e24c19bd24e09099e75cd00b9e069b9c75b09c1269d708ce270fd163d2c02ea9edb2b89c0066cadb2034f181a3c61d735c1256dab112ba22704aa68bafa02e8f6926124cf08045a400d7900f47⟩, ⟨0x26512708dc44820d0fe87b03be1ce0e186a833e1920b8859c29c141094041c1f40e906d033c17c0a504982240f407002780d802a000, 0x1481b241516487a871d41972d8c3069a334b9a704845e3ae13309e7602b6db035be53adc4e0390eb42c70e75699a30cf9127048c9a704f1da5f23c0ca926060019c8b680ddbc40d672ae740565⟩, ⟨0x3071798b8c5b02cb1550a2c50226212588b04041e90e806dc33c1850ba05a42a012f08b03d41b80cd06102a411006702e811001e000, 0x5c8a35163426713800d005b432cc7a8c0c19a62d2c0de6385b9874bbf835e40d1d2f71cf96fee7ebe375a46db9c079dd3bee684c03c8e79f10e1b6bbecb9c1ddb61cee9b6e7c8938240761d306e1bf6d016fd673c0cdda8e9bd030c00c6da3eea6⟩, ⟨0x4c325c92588ea4402000fa47b23991bd0d4064c30716e8af051e24f11c08643c81a40ac84e824c0db06202d014808503a019c0ac000, 0x40c0ff91f62f0feffdcf810610fa1fd47c4580c7c8c11fb4703bd93a18d5520e8be1ec3ea8f07effd1e0f5fe813478350720bd1e10418a3c1f82f05a8f6220f167072b10077b3df816c3b809077a3fde8cb82904a8e3aef88b31df471dd520750b2be1471da0aea38e91637be8e006eb526e7d1a51d441cc02857009a381e6c9d4c6dcc6a754f6923469c335c9a64d80114c37801003a7947⟩ ] def tableLLRLL : Table Block := .branch 14 tableLLRLLL tableLLRLLR def tableLLRLRL : Table Block := .leaf #[ ⟨0x30617c8b985962b814e8a404da26312008703f61da0e286cc3521860be056426c11d08803bc1ca0cc061027c11407d02d00a8032000, 0x1c521ca3013978906e8c0465630c27001c8b31d0300064558c0080b21120109aeba000cd6dd2a32ca5d23c0c00b911e3a0691080271c0089106301785cfe290103df73c0c05bae981a432001c653ed95c4e001921e2c1b724206be2b59cdf802e7⟩, ⟨0x27e13789904a6242119889843620a0fe87cc3bc1d40df86c831e15f0a504d424c11707a038417c0b104702100c205001f80c001a000, 0x3324e091e34bc9a1b13d99a13489a5c4f0355859606aafb2b89c003244c6490e488001c5554d961214f0298e23c8f80318e0c90f23c009e3984e01491d63a0600948e319a6692c34984991a002f19429⟩, ⟨0x29214189a048823a10f88283e61dc0e886d833e18a0ba85a82aa13a08b03ec1dc0e106b02ec12e07c034816009603c0178088026000, 0xd24d7ec70d00d68070781ab20184d5a596dd664d5b4c9c1254abc2e7c864df1aa62b9538261f95910c7c1ef10fc741c318c83d0a585389b10158484f0e018384f0f099410f9a67f14ae49714d198c249e289⟩, ⟨0x25f129091844e2080ef07483661a10c905f42d015e0a604fc26a12008b04041e40e506983241740ae04c81ec0dc04a01a8068016000, 0x30a691801ef3a4ef2de147de00040151e11b77803a4aa48e6126b36cae6247818a847b3340d5996581ab96cb711fc525c23c0d512611aafeca0728263d998020a9cc2aaf2cb5f0441f224e09⟩, ⟨0x2a714609c44ac23b10d07e43bc1b50d586282ea1660ad851825611008303cc1d20c8056828012208403b019c0a804101b009401a000, 0x4ab4b11d1c3a16078341c031183d60087db730380dcf9f75c2f2830078dcf0355d8ccdb48954f9127048312a72dab86821c0a78185e44c0d5620036dc7e9623e295c92e298218c24c5e8980d1382470d3a8cd11429⟩, ⟨0x2ca1578a9051226e12e893048222610587c03981b70ce06482ee15e0a284e022e10d07a037c1880b5055023c0e805002300ac042000, 0x2e77184e09b977a178e5dc1e94d29269c1203d042c03f583807c50b00f87e90ab27b2e38030781b33dd85d041b9e7905cfe29019c3f73c0d367ae9e3b538223507c893824031784eae670d0080e2b07818051384c0c00358b6d⟩, ⟨0x3371960c3c5d02cb1570a3c50027112808984381fb0f7073c3441980c185d82aa13609604341e40d105b026c10006502400b4024000, 0x626878ab949530e803272a61d94c390c49fde80ba3da49849367601169003ee403d1e06b91005b4b89c00fbaa5cd33dc8015aa06b33b2b89c006bcada4afda546062bdeca9601adc1c566bb6dbc08ac1f0d8d83f940709017921200c0727bbf921601b9426e906⟩, ⟨0x2ff1730b545882a7140097c48c22510607a43b41d00d6868031e1850b1052425010d079038c1b20bc04c02380da05001b806801a000, 0x7c693a6e0d2f46931e3b9398d1d16727c4c6c173e56139f270701ce037ae70634c2b19891e060704c1f18c27c67340c0dc981e3ba3b5cfc9cfd8e700f060ee9e242e923c0cf4c132bbf6b40307818006c2adaf240b31b0ac7395d1149e852c29⟩, ⟨0x3291830b945882b31510a4c4e426512c08dc42c1f30f3071437619a0c685b029212808383e81b20bc059025410407002a80e803a000, 0x4e5997e4c006522cf2932ab6dc334959a4c24d9f0055ae852c290098d6b5800c6adae69c8bcc9b09ecdc00edb03000d9adad86319d66f7345acd1f2600312367892b30b6b89c006cbadb043e13181a077ba561e227d506f486e121af4426027a257009fd2b⟩, ⟨0x2cd1600a9c51c26b12f08f4466212102879038a1b40d286202e21640a184982380ff07703741a00af052021c0f405902780b8042000, 0xc29098a7580c4bae6ec268ccb09c00ed7edb03000daedad8621056bf734c31d6a706695c9200ce327f9f596e27001b54b6c163d4c6068507895c99a4a0d2e29b4d007b5e0901e5295b09c00ed26db03000da3dad86249969373⟩, ⟨0x2cf1570a344d8257124089c42c1f50f5877038e1b60d386603161790b2053c28a13008a836818a0a804581b80be04e01e80b801a000, 0xdc25ac0075dae200370d73d74b29847001b7fb68d1c400ee06e7031e4be9ab28c19dc259a4771595095d2d65e99b2c0dd25657347a0e8b420008c544c9e3eacd09883298ac4194881154a7c53619a4acd26126d9802ad7429⟩, ⟨0x31717f0b745a02af1470a104c624211988483e21e40e186b83321780aa84d023c0fd07503241680a304902140c805901c00ac014000, 0xd839c2b694ed6e27001ba1b68ed5285c60620da4eb5800dcedb4d28d5e5cfdcc006e6adae31001b9cb9eb1d97592cb72a0036d000c03f2200372f7381ee14006e46da1b244006e4ee7d59659334941a5c5371400f6bc13af600f6b613801dc35b606⟩, ⟨0x2d015d8ab452a28913f89a84aa240117888042a2040f387543961bc0cd85f82e815f09f04741f80ed06602b4118082031813805a000, 0xc75b2dd0d10890f08d030f11ab16acb8e9658a33e449c1230690473b969748f031849bb4001b68139b4c606c4eb2dd8000db400710ee266376573308e0037596d00326ea200775d7381800c98a5e22d970f82c6ce15787a16167⟩, ⟨0x2e116a0ae455e29a14809ec4c024f11f08bc4402030f107143601a60c285b02a614809583481820b305102340f006d02c0124054000, 0x1e290640d4f034412a606c7ab2c10bca79634ac1a62249c49d735b95800c4b59f59d6a57302a7818d5f1a2d7c9b8e9dbe374e0936a3f9581f544dc00805380060749f71cdd436fb9a31552244a9c121c2ab388e0065b52c00cb50114a⟩, ⟨0x30f17c0b5c56c289136091445020b0f206f432c1790b605742a014309a045c2100fd070032014209603c81a00a604901a00a802a000, 0x4602c9050c03b69db46059ced62fcebacfe7f5927ec7ceeae4fe7f8f27f2fdc93f95edf8727f33c7f124fe5799e1c9fc40324fe295c92e29933184901bc494d649c1200f832981d288ee40100a4f89bbd00a538267a1333c0d90f6581b27acb30aa7⟩ ] def tableLLRLRR : Table Block := .leaf #[ ⟨0x2c615e0a9c530277134091c47a23010d881836a1580a284e025211b08403ec1d40db06882e815609404281ec0bc047015006c016000, 0x206d03b29847001c21b69a51003c23b9c0cc2bccfb2e7e59415cbccae4138aee362ce5e40ac02c09a5705751af6794d0f429389314340a89f14949a4c24c0d442b24d24829ec930930371a31cb40cb648c3c5cbdb13c863426⟩, ⟨0x2c11570a6c4f026b125090043e2120f887483661920c285902a214709a04842280fc073835818e0bc05582300f40700308100042000, 0x9a22c3345d15c04f99613801e205b606001c3eb5b0c4033102e6082ab54c00c6ba3e1ca3cdb5c4e00386f6db9923036088b0c10ec2b0d9c8ace4b2c599f224e091934d1b0214d2f11e06349200384f6d00345aa201585373⟩, ⟨0x29213c89bc4ac24111608844141fd0f7077c38019f0c705b42b814b09f04742240fd078033c18a0a404781b00b604a01d806801a000, 0x2e921e3035da33aedbd53758a9c12b6132d84f1a9b453001a5d4752fc59b68d19f15c02edb26692834b8a714c01ed78246d956c27003c4fb6c0c00389b6b9c15894ae86d93c334959a4c24e238055ae852c29⟩, ⟨0x27d134095446821b10187d83c61d50e106bc33c1910c005bc2ac13d092042c2000e706e831016e0a804e02340ec05802180b8042000, 0x1acf650cd0e0039056dd71978c7c143d9983b44cd0d2d22731448d1a70cd72698a34e786baf3ac1d75f60ebaf0a75e0908ad75c0d900eeb613ca4ba46308e06732e68104cad1db2e8cd95c4e0038cb6d⟩, ⟨0x33f18e0c3c5dc2e41618ad852a27612a88d842a2060f2875836a1ab0cb05dc2d414009584301fa0f206982d01140800308100042000, 0x523ca9399613801e515b606001ca0b5b0c403b28ae75099054f2703c6da00681d1d41326ada611c007262da79440bb26ae7035822ac00c65a3b0ac0080d8c74ad46b28088b747c89382400c5ea4d7b00f4d00200e2b51e0600316a9200390f6d0035daa200391373⟩, ⟨0x26a12d893847a23211288103de1e50e706bc33417b0a8850825a11e08483f81ce0cc05e82bc14209204081c00c20400198098026000, 0xf24c99a18d3099c4e00397f6da3a58c0d51c32c00c87a3d3b2ac0148ba382f00322a8f8298185531a9a281538250ca65c142b076c4f343590d5a9b0cd2566930939520156ba14b0a5364586a8b⟩, ⟨0x32017f8b785862a813189284622180ff87b83aa1c40d486602fa1620a804d423410507a038c1ac0b5055024c10c06502d80e8046000, 0xce4001b68a4750dc6893f84cfa87093b937f11438199eb3e101ba40b05d20372e7abc175dd3980695d34ee6960060f40e63d4aa0e01964261d062fc5a0f2612c1fdfd5326692834b8a733401ed782434765b09f32400edb03000e63dae0816895aa96193⟩, ⟨0x2ed1718b0856a29413f89a84aa24211088503e61d20e4069c3241810b8058c28413708b04241d00de05e82700f605a02680b002c000, 0x103000e81db5c62003a0b73ef8b2f81d97bd6ca1821f3f0046dae27cfa001b6e0f001dc606c1f001b5f735964cd25069714e79003daf04f10dbe5ad84e0079dd6d8180073b2d6003c3971b76ceeb9800e74db5c620039d7738c7e1671b85⟩, ⟨0x23611088303fe1de0e486fc35819b0c705f42e41610ab051c24c11307903a01aa0c0059828011007b035016c0a003f017006401e000, 0x1994eac6ab713e90800db4c81630337c8b1a34e99b24d3826e0d7098c23e8b000db43648801e8c5ce060cd17e0f657138608b73e08af334719f224e091b34cc1b44e4cf032e49⟩, ⟨0x2a014489f04ce24c11f88b843e21410187b83b21cf0e006d832a1800af852826a11408503a41900b905502240f806702e8120026000, 0x9ccd96e27071559d81eaae334699f224e091a34d442b44e0cf032c498180074dada0c8b1001d38b9f92d97c8ecb8aba636d8180074bedb78177571d8934927cbc0b2d6c27a8356c0c0d0ab00008c0000061d2e8b⟩, ⟨0x25d12708dc4322040fd07943aa1c00d286382fe1730b2055429613408f84282000df06602ec15c09d04901ec0e006102000ac014000, 0x611c0ed6581d80d95f796581bd3acb918d3baa78e6714f94d32cc24e235649c48f035f44cb06253a502ae06d51001b6aba911a34e19ae4d382455565c26308fa900036d076588286a55ce06⟩, ⟨0x2ad14609fc4bc25411988483e21dc0e586e835e18e0bd858c2a013d098043c1dc0e406182c014209604281b80b204f01f00d0026000, 0x1fc200f6b613ec1001db606001d80b5800fee5c400760ae7fb565c734b59a70480be50dae5843ba374386e879d116e27d73001b6e4b808dc606c9800fb5a2087c89382474d3d453344eccf03149a606d66001b6fc891⟩, ⟨0x2a214a8a004ca25b12308e44302030fc87903b41b90d4061c2ec1650ac04dc25810b07f03741a60b204881c00b604a01c80b0016000, 0x1c4e0ccab6250955037ff595c4e003b3d6d1a058c0dd3cab818007666da3c71036d9bb9c99a4a0d2e29d93007b5e09fed007b5b09f63c00edb03000ec6dac007fa2e2003b1f73fe6b2c99a4a0d2e29d86007b5e09⟩, ⟨0x25312108cc44821510207bc3b21cf0dc86a831217a0ac853c28412c08b03fc1d40c905b028c12808703c01b40ac04301c8088026000, 0x7b1acf23b84b308e386b1b3354beb0b034bdb0a611c0076eada694400f6f2e70330ae5dd85977e1669a63838a9c0cb6c6db56a2594449c498337a49c12224b2e0143c0d18eb2ce238f68b⟩, ⟨0x2ad14b8a204ea26612b88d044e21410507dc3841b10d006442e01630ab050c26010d080037c1aa0b405182080be04901e006c014000, 0x1160c29e474651bb126924cc7002d8b613d068d81832458000800000010f0cd256693093bac0156ba14b0a535458688baf4802326c27dcf003b6c0c003b9b6b1e38800ee7dcc0035e2c9cc1b0ae27001dc7b6f41c606⟩ ] def tableLLRLR : Table Block := .branch 15 tableLLRLRL tableLLRLRR def tableLLRL : Table Block := .branch 29 tableLLRLL tableLLRLR def tableLLRRLL : Table Block := .leaf #[ ⟨0x29c14789f84da24a11e88704241f10f1070433c1880b9059428813309484602120fa07583581760a504d82140ec055020007c02a000, 0x614cd9ac68d761400464d84fbfe0076d8180077f6d661440077fee6001b06e4e88f85a22e15c4e003bed6de838c0dec6b3c8ee12cc2383d2ac1e43554c8b0b0345f70a611c0077a6da0e6b1003debb9c0c0e0ab⟩, ⟨0x2a514a0a0c4e825312308e44502170fa079c38c1bc0cd86382da15709a049422410307a03441880b105382500be04e01e80b801a000, 0x186692b349849e2100ab5d0a5853526b1835d8c404993613801f0d5b606001e18b5b8c400786ae7461c28072c53933c8e8ca37624d249a2e805b16c27a0d1b030648b0002d90000021e19a4acd2612781802ad7429⟩, ⟨0x26112588d444821710307ec3c81d90e506a43281730b4854828a13008a84201ee0e806e83301720a404d022c10206002680b002c000, 0x1128c2c49b0a3469c335c9a7048aa2cb84c611c0078eeda0cab104ce3db9c0d29132dc4e0c0abf1f3d55c668d33e449c1234694651a27067819624c0dc520036d0cd22003c57739b2e166b785⟩, ⟨0x2d21578a8850227712b09244502120f787883821aa0d006242e815d0a604ec25810b07f03c41c00cf056027c0fc0740298110046000, 0x2cf2021c9b09c00f98adb03000f305adc62003cc57389fe14033671c9b89c00796ada830b4606d57d960e2a743759786692b349849e5100ab5d0a5853366b1a35d97c01193613801f255b606001e48b59851001e4ab98006cb193⟩, ⟨0x29e1478a004ba25012088dc4501f30f4872036a19f0c805ec2d815d09d04b423010e07c831015e08e03e81b00ba03c0178088022000, 0x3624d2498b6002716c27ec9b031a4b0000190000021c0c003cf76de0523163c29e4723356ec49a49315801862d84f706ad8181b156000036000004306553f368135b70cd256693093cd20156ba14b0a6a4d6306b⟩, ⟨0x31416a8b285702a7143098c48423810b87f83d01d90e5069c3341830bc858825a11807b83901a20ba052825810207202d80e8042000, 0x9f0040408ad00e0f89a0906ab73750000db40031edc88027515ce06001e9cb6da00bc643185d89349267ac071c5b09f78366c0c076b2c0003d400000860e0a7e90031b6860878d51a4a931c1d153b29b5cd537a980ef63f438385b40621ce113d0b6d⟩, ⟨0x23311488603ee1eb0eb06f434a19b0c185b42ae14409b84a023410907e03ac1b80d206082c814209204401bc0c0047019009c02c000, 0x40c3069ec2027b6e2303629cb665db92050f035c224548db0b24dc2cb887a149c49821bd4d3e292934984981ad4d26924a4d261260611c7769a49c50f778d919e130d1a643f85⟩, ⟨0x2f31678ae452c27312e08b042c2010fb875033c18d0be05c42b014709704341ee0ea06482c014c08d03a819c0ac04701e00ac024000, 0x50c020283c8d70c14291a624003233c3818ccb02280064638a91c617d054f0301064538b0edd06e3807c1f14d29669c1207e4eb1a3380d73ac06b465d5263c2b89c007b42dbd152f181ba69dd710bd0f1434499f224e091c34f1163b4b847⟩, ⟨0x28813e898849a23811188383ee1d40e486d834a1960c485dc2da15e09d849423610507d037c17c0a304b021c0f406e0308118046000, 0xc131518c2e789530cca9802548322a721f65807a4978bc13c422e64d3791fc525d23c0c6124003242c5c9030b0348f70b098034783f770ab5b6980a83f8a5624b8a7919c5204a3c24007144c4c50c28b89⟩, ⟨0x29314209b04ba25212308e44462120fe87cc3ba1d30de869833217b0b885682a013a08683ec1c00c505982600fa06202380c0036000, 0x1c499256886c4f89a119c53296c2e099e84ccf034a5f0b034abb0b6c2b1fc5206c8363c0d5c132606945614dc01d514e0f48834a63f0900c66131b8346a31098bc6613258dc2e483585819ac7cf4558ce2f0b⟩, ⟨0x2040f4875038c1b70d3066430e17d0b7059029c136096046420e0fb07783741a40c3056825c102070031815008e03a0158068016000, 0x526054e9caa98a1bf24ca99fc527b23c0d512606946e155b0a1e064650e5523e236231a88f099b154a070b283c2cb2b0b9a67f14ae49714d198c24bc9a7324e09⟩, ⟨0x27612d890044a2130fc07b43a41af0d0063c30416d0b1855029413408203dc1da0ca05c82b012e08d03d019009e03a016808002a000, 0x35da484e8f5b0900e76139f8367b3909c139fd4c2c0152afc3fe49a533f8a460ccf03644981a54985000ca980058783340c006951e2794cfe291c333c0db0a265378566c53b35a9e852c29c4d22aa9⟩, ⟨0x3681a38ce065831d1800bd85aa2b414989c848a2240fe87803861920be85a829e12e08883d81ce0dc060829810407802e80f0042000, 0x3eef88b99849c46ac93288032781bacf82ad6003c1767e07e08b5f0474ad9f81fa5380ace491d3f67014049264f404292984e7f948032300507c9f812cd2149803e4838f2fb8db60a33a4e08d941f224e0900ec21345dbc340203d6c1e0600eb212003ecf6d00d0222363ed373⟩, ⟨0x3391928c445e02d11580a744f826d12f08ec45c21110387a836a1a40c986182ca15a09b84a82120ff06f02ec134084031810003e000, 0x103e8d04a8df440036d57503ea2003f416d0d922855f4573d8934926c862b6c5b09c03ad25b03003594ac000dac000008726692834b8a7e4801ed7826568007c5b09c00fe3adb03000fc65ac0032afc8800fc75ce55b85f88001b68fe24eb91001f86b680180951⟩ ] def tableLLRRLR : Table Block := .leaf #[ ⟨0x34e1a10ccc64430d17b8b845a82b314a0a284d6255124089c4101fe0ef870035818d0c1058c13408d04001c40c404e01d80a0028000, 0x2918c238c9ae048d5062c2c1830ae27fbd001b6c0e0075181b9e801a5c3070ae27001fb7b6c398875181a1d441a580186f49875468730da938261d435a58008010018026401f1002803003b27e3fb43804004805005d9eccd8668d4d229a1551abf93587268134681746⟩, ⟨0x28f137098448022a10a07f83d61dc0e886f83521910c385d02d414909b04541ec0e506c031c17809d04902140c804501d807001e000, 0xff25b5c62003fcd73842e1610d858416151f43e449c121e225a855a11e90f030b08981bf54006da1da4404ff5ee7d5408d2c64d3666a834e09019d4297099c4ff940036d836026a30374a00f4b613ca4b⟩, ⟨0x23210787e83e01d90e206c433c1860ba85a02ae14c09b84b023e0fe074837c1940bd055024810a07403281680920380118064014000, 0x2008001c6e112c6068281960c2a787917a821ed97a1c64d3666a834e0927855c26713ffa800db615163036492adc4e1822dcf822bccd1c67c8938246cd3306d13933c0cb92606⟩, ⟨0x2b91578a6451e26c12e891c47a21a10387903861a00c085b42b213a08b84201f20d606482e81600a3037016008a036014806001a000, 0x103432b0b0340840038da4a30c7c2c0d01d000e34314880ee03f93001ec6b3c065d8f8d0031e6931d28d1d68c0062051c8cb014c6ec49a4930eb00362d84f19360661580000a0000030e1cb85c691279264cd0c6984ce27⟩, ⟨0x24f11d087c4222020f987803961b60d6065430c1790b5057c29013509584502060f006a831016a0aa04c82100e406802c80d8046000, 0x50a9da06053ed0d9925524876873b355c00a9e06b6c19671260cde9270486accba050f035328cb1f338648b46535551667c89382464d3018ad2f11e063492001813e343b48801a05393⟩, ⟨0x3961c38df06cc3431968c285d62bb1528a184f82590ce06402ee1630a204cc2200ff06e033417c09b04701fc0ea0680198074018000, 0x1b13e26a70e180034e0c4ce170a001a6f61c00ccca5932c0034dcc5538f0b31800d1e06263d35316168156158160df2e6200215c165a5416616215a91816b67a4601a174cdfa34de141499c7300060a58d1a3893760a993d8934926702006c5b09dc26c0cc2b0002bc0000061cdef0a3469e46⟩, ⟨0x27e136896c4a224010e88383d61df0e8070c36819e0c405c82ca142094847c2000ed07002fc15209804581f00de06202a8118046000, 0x2f0da5e23c0c3469000c2031a714400d082c9e231a47715ce2aa96616a4f85a92e15c4f075000e375819e3034fe0094b0c50ec2b01e60f754e470b5667f14ac49714c199c53792400938bc4ce2800b89⟩, ⟨0x24e12208b843e2100fd87a03bc1c90db06943281890bb058429213b09404542100e5069032016a0ab04401d40a403c0158070022000, 0x206ba7614c24cca694354cc287819495567821f60d2f869c13e7a2c2814f40fd0f54306e87ce916e2784880071a6ba46062d5170342300038d0cd2200184764ea6d858b33e449c123c69⟩, ⟨0x2ef1728b08556294138890445420f0fa07a83961bc0d686282fa16a0b0053c23410907c03a41bc0cd055026011c07f02e00e402c000, 0x40c067a9f62c0e063e4cacb03054ff0e05fa9f017b0e06db1c9d3485c70030781aa3131a5ec49a49376400962d84f01a36061e3580222e0000030fb8d31867c89382468d3758003e34be47818e2480061518d000dd4f2200185564eea585⟩, ⟨0x2a31468a0c4c0253118084440e1e60e806f435c1a30c906042d81620a8851c248115079038c1ac0c4057026011c0780348118046000, 0x4abf0b034388a8d8d713c3800038da8800ea3037ff000dae61f854490f9127048f9a72cda27a67818acd30300061a58d38a200486a64cd23b8aca84aaabe16ab18581aaa785308e001863e34003541c881a619393⟩, ⟨0x2a114b89d04a222e10c88103e21dc0e706fc3641a30cc05d42c415809a84a02120df06903041640a704b01dc0ca05b026010803e000, 0x10300062078b000d09722093882e4e30d52144a90e90e642abe218e24c19bd24e0900340631740a1e0680a957716e2700356e96056ad00da5619a2ccf9127048c1a6aa00fa69788f03284981a1cc001c6d4d01351⟩, ⟨0x2e31600acc520286131895046220e0fc07883b01b50d406142de1600a884b824211208403ec18c0b004f823810205e02980c0046000, 0x64f001193613c4880078d818003120c59851000c48b26001c9ae4f15985c556160688c80071ac31005446f278a4c2ec49a49384d00362d84f1936066158010bf8000010f08f859334941a5c53109003e2f04d0a81338b613c4140078d⟩, ⟨0x2b01508a484de262126890c45c1f90f4075c3901a50cc062c2ec1630a004cc220106071835816609003f81b80be03c0178088022000, 0xd89349271a4026c5b09e40d5b030312ac010000000008786692b34984989c802b174296149302ac3f45e53803393613800e2658d818003130c5b0c4031132c9804b28f93c334959a4c24c4a40158ba14b0a66cd6346b⟩, ⟨0x3631a00c4060c2e31610a7c51226612288884181eb0e5069c32c1850bb054c28c13908c03dc1a80c705202680ee06a023809002a000, 0x3dd60d1877b8bdd20cf87818003161c6800fb9dc4003163c9cc9b0a0018aee34007efee20018afe4e67385040e6cb3800f82d9de0d157c6e19a4acd261262a600ac5d0a5852013de36b001ef0b5e5a1ee193613c5300078d81800314ac5b0c5dd314cc9bda72c3933c8e452ad⟩, ⟨0x28813989a04a624410b88043e01e50eb07003661a00ca06142f01600a504d024e104078839c1a80c7052024410e076029811802c000, 0x98455e090a4559c4b005f93001b54d830a726bc13c92e6ad8561393e8ba46308ec2b0ec48a9a8e1669f8571380062e38d8d923034288b71380062d98d81923037a1ac003076c3b0ac002fc983a62a68b85⟩ ] def tableLLRRL : Table Block := .branch 14 tableLLRRLL tableLLRRLR def tableLLRRRL : Table Block := .leaf #[ ⟨0x2a114b89d84d425d126087c4121fa0eb872034a19b0c305c02a212e08e83e81ca0ca05e82b814008d03d01c00b604801d80a002a000, 0x103745802da6119c4e326b008e95001b54ea30a611c00319cc69851013467b2703480aae6eb850039828e6618cae3464ce0018c9e373796318e0a9fccc6127086b8d122b22606b165587489f333b289c35133a0ab⟩, ⟨0x31c1838b905ae2b41550a1c4f425711b08543e41e10ea070c3701a10cb06242cc14509d84682120e806382680f206a02f813805a000, 0x6d55e761d7399613800e3838d8180031bfc5b0c404d1c1c9f5956bdcc007d4ecf1ba7a863464d3666a834e092d0597099c4e0018d963405fa9ee30301df52dac70ce01dd476be9300eb3803f49006d9fa48022cf9127048c9a7ee7a72da003d1a00767⟩, ⟨0x2c61518a644ec269123088c4282080fc87883b01b70d506242f216209a84942080e306702ec15a09804181c80c2052017808802a000, 0x71e4c6c0c0018f162d86207b8f264e088862c99849c46ac93e80b1e0607bfecb5b09c15ffaad75d8d52b31c1cfbb4006cf018dea3ea769001f69b4f745983d43d10dadaa9b3454e19a4acd2612639000ac5d0a58524dcab⟩, ⟨0x2f61698ae853228c13e89c44c424911f88703f21d60da86482b2148097847820a0fa070834017e0ae04f81f00de06202480c001a000, 0x24080d5c6815339c4c0695cf466309388d59268005cf0302860bd8b000c3fb0e09382e62c007beecf1f780be37c3fbbc004256cf30e6018a74c639a2e25d38262a59d706e6c334959a4c24c7ac0158ba14b0a4260dd60304ebce8c12f32c27⟩, ⟨0x3871b20d6467431717c0ba45bc2bf15009d84d824d115082c3d81c90d8065c2e815b09d045c21a0ea06482a010e06e02580c8032000, 0x48904dd8d84c0075351e4426a3c6808d5d47c89382400eaca4ea9d514d00200f54d1e06003aa29200190c6353cea4a8801d234790a9a4b1b6682e701c87383264258da8aa74801fd7d9c00301fc3c0d20d7d5e37c142aece0a3f4167f5e03cb380f439c1d3208c680fbb9fe3e5da03a8e7⟩, ⟨0x3311870bbc57e2a914e09e44de24c11c88984361fc0f3070c3681a50c1054829012508c84281d60c1055825411006502d80f003a000, 0x1a9b61c00eb5a59ad0003534c554ef0ac2715c48ff1b031abea578bab912da2270480cd474ba9561aa52007c3da498493403004e24003525001e1e06a91801b1348c611c00eada5eac00200a95420c2cfeb0ac279148a931b03691d4d4bd59ac69600ce127⟩, ⟨0x29513b09904b424b12088783fe1e90ee06e43341900b8856c290135091043c1e00cd06102c414009104201c80d005901b008002c000, 0x1ba806d34bc47819424c0d25f000e3770807a8d5f30ae2792d80071bb2c01d4606d94006975d9c2e668996113112243644ec40214b007d4ff1782760d73269bc8fe292e91e063092001a9b62ea698581aa6385⟩, ⟨0x29813a896848823710a07e43de1d20de069c32417f0b5057029613e09684882060f8075832017c09f04901cc09203c0158070022000, 0x94200071bbe00c46e1785713ca000038ddd00e230344200caeed7858c3548512a43c439d0aaf8861834d19a5cd3824046e4a5c26613c9bcdbf8d81b6fef3a5b89c00ef1a5813de0036958668b33e449c123069⟩, ⟨0x24311688604061f00ed873437c1b10d1065c2f41670ae850026612008403ec1d40db06802fc15809a04802040ee0540218080014000, 0x5d970b306a90a5548768732455fd0c71260cde9270480d1f4aea143c0d1d82b2b7138668bc49c8ad334619f224e091934b248d2f91e065493034a240038d1c38801651793b8761606⟩, ⟨0x2a114a0a044ae24a11c88a843e20e0f787743a61c40dd065c2f41640ad04dc23010207a83481900a904d022c0d005b026010806a000, 0xe270c917cb00880da5619a2ccf9127048c1a405f26a69788f0328498180032b7c6e6402cc69058581a566001c6f1a00351a40e1584f2af38b63606e2dc5e97b126924ddac00d8b613c64d819856001b5800000c3⟩, ⟨0x2e61618a9853827f13109144502010fa07443681aa0c685a828e132093044c1f60e606882f813e09104101d40cc05b01e00a403e000, 0x25c8001c68b90bcc60617e15958030bc9e1284e5706429278220b84e4ee2796d80071a29c1f3181856836572d7000e342ef1f7c8833aa711b9243e37143c81aa428d521d21c06738a5f90c71260cde92704806e634ba050f0372e0294b⟩, ⟨0x27b132090446e21a10687d83b01cb0dd06ac34018f0bc058c2b214a0a0047420c0e306682dc13407d03781780a204001a806001a000, 0x1c0d111c4c1f270346c2ecadc4e06db2c75a1ecae334699f224e091a34d410cd13833c0cb12606000cbcf1a0673440032f5c9ddff0b77dc282d104a61f056531430c9a6ccd5069c130d0cb2b84ce27⟩, ⟨0x28313a099c4aa24b11e08644061f90f1869832c1830b8056c290137094044c1fc0f106702ec16209404181d80ca05a01e80c8046000, 0x5e47f149748f031849000de6b17798c2c0d795c28004004003b06e1e1b1a52935472607e54c91268334ae4906453a912adc4f310000e359f48c0d2103b2b1a34e19ae4d38240a8f657098c23cc140038d⟩, ⟨0x33618c8bf05ba2c014e8a304f626e125890043a2100f6878c38019d0bd059028e12a08f84001c60d005982580f205c01c80b8022000, 0x2e600a5200dd529f60b969600dcf273d64d031b26692834b8a6678007c5e09bf5801f16c2799c000f1b03000666d8b000df9b2200199c64efc9859e27594ce93bca704ac0f774b0066a94cd9269ae6994cd4014a40199e5366d992b165de8f17826c9022573269⟩, ⟨0x2d71668ac054628e14109d44c424711888904021e40ed06f43661900b985882a214409084581e60e606182e412c07302800e803a000, 0x40d758612b6138972ae119c4e1ba2d6a8155603b0ae279ad00071b6d8253181adf04257034d540038db582198c99a4a0d2e299a8001f17826ffc007c5b09e698003c6c0c0019a562c0037f9c8800669993bfbe16edba25373dd929⟩ ] def tableLLRRRR : Table Block := .leaf #[ ⟨0x2a11480a144cc25b12708ac4182020f187583721ad0d0063c2d01520a284882060f906d031015e08c03c81980ae04a01d80c0026000, 0x15069c12033f852e13389e6fe001c6feb5eb5181bf52f3a5b09c04bc65708ce27183580f768032ac10e15c4f373000e37ef803a8c0df7800d2f105850775380e26db8dab912da224e24c19bd24e09026ee95c0287⟩, ⟨0x29814389b04ba25012288d04221f60e986f43561a10c905f02cc15009004341fc0f3070030c1560a104702100c2044018807801a000, 0x1d34822c50f6c4f46684d0269000ce7b1a01ae4440033a0c9da4f0ae923c0cd8aad1b85b46e16d4d8503d5a180f9874790f91270487689c182096847943c0c2ba26069c500071b7f83531c45130ba2464d3666⟩, ⟨0x22e11208383f21e80ec873837219e0c485fc2d415b0a004c424c11307803741a00c1059828012608203981a40ac04701a0094036000, 0x206b5c6169394fb067c8938241a15222be43460ccf030d22a6353440bea7894d0983743ced002f8d94d0f429389314340a89f14949a4c24c0d32a24d248a289309303590150d⟩, ⟨0x21310087dc3be1c90d9868832a1860bc85b02ba14c09e84c824610b07e03c41ca0d806102c413809203e01c80b804701d007c02a000, 0x3848f030642455b4b0b71cc2e699fc52b925c534663092f269cc93824e24c92b443627c4d08ce29b6261704cf4266781ad8b8581adb985c4553f8a41bc353c0d684a9⟩, ⟨0x2190fb07843a81bc0d9067c32a17f0b5053c28213209084502040f8074837c1920ae0520244104075034017009603c018009402c000, 0x7b7b6261154fe290fc68781ba244c0d6edc2b3629eb05853e90df92654cfe293d91e06a893035b970b0980a9e06fa90fb91e852c29a463934b627e4684d4926dfb85⟩, ⟨0x2a914d09dc4d425b128891041e1f90f4075c3901b70ce06042cc15709a04441dc0e4060829812e08603c819c0ba04e02200b8014000, 0x149271fc006c5b09dc26c0cc2b0000af0000021e3e30b8c695b34c4491934f5fad0b00f7e0fd4eac2cc23d0500038d000dc07221d1a0b64e060e7dbfb1612ebc1ff24ca99fc527b23c0d512606b7b61413ce00c1e06⟩, ⟨0x2b11520a545142771320968476228104877c39c1bf0da068c3081720b4056426c12908303c01cc0d0063028c10806102580a001e000, 0x1066f493824d945d42878180b485a58608700320e972080600ea54619f224e091a348078fb4d2f91e063892001a19635862477a1a64ea738581aa698581a856001c68018e351000d0b72752ec2800684f8d8a0978ec49⟩, ⟨0x29013d896049223410c880c3f21e30e806bc30416f0b0054827e130093044420c0f706a030416e09403f81b80b604301a808801e000, 0x7c5880128cf93308e0f2ab0780d55563c2c0d560c2c71260028eab3920000c74d9e419318498a1a0344d24781ab9157098c23d1400098d0f50f03000689b8d8dd58ef9a45d43d43c43d90c1ca1d77459c49⟩, ⟨0x2a314009d44c824111708844201ff0fa074437c1a60c986002e8151098048c2000df06a82c813e09004281d00ba04801f00b4046000, 0x425c0b98b84da267a4080371a1da1e8cdee696e34e0900dc23b175e21e34da1c3b43df08b846000d1d71bd5609971713d1c80038dea8012b8c0d08200862d1143e449c123c69842d9a27867818a8d30300068cb8d⟩, ⟨0x2ab15009fc4e826712208e843220c0f6870c36c1a50cb062c2f415b0a304f025a123080038417c0a804901bc09803d0170064014000, 0x609008930b5c26613d28089f8d81a4ad15ed6e270031569603a2a00fa5719a34cf9127048d1a627008a689c19e0658930300069218d003122a2001a4964ef6b85bd9e16916001c6816a62d9130933a9a60d53491e06⟩, ⟨0x2c615a8aac51027912b091c47422810907f03e41dc0c885f82d61550a304c42240f3071034c17c0a904e01e40b40500178078022000, 0xacd30300069858d38a2004a6264cd23b8aca84abdd616f778581af6d850020080180400bf528f3c49a8d9343130d4a9bc0acc0063451e35469a6c19a572483129d28156e27a5580071b1680ed460693501bb58c1a68cd2e69⟩, ⟨0x27e13889884ae242118889c4241fd0f4074c3701ae0c585e02d2146099844020c0f306e8310142082037016c098041018007c014000, 0x20cde92704c88aae04cf031d12ac1914efc0ab66153aac40a781a9b0001c693691308f4d5000e343948800e9af938183645df330a037ce705dd33b1a007ead27b4d191243e449c123e69cb3689e99e06⟩, ⟨0x26e12b090c460223100079c3ba1c00db064c2f41670ac053427812708904201ee0ed06502dc15009503e819c0ba047019007401e000, 0x234d21c3a43dae8b713d4000038ded1478c0d5e0252b81a9f6001c6f4153c51043e449c123a6994a5689d99e062934c0d4f0000e37844898470f5161e0d15849c2c0d7e4c2af52a6959531431c49⟩, ⟨0x2a414989d04c425812488fc4381fd0ed07103741970bc05a428c13708a04281e60dd06702fc15409704681c00ba04c01d80c0026000, 0x1934cdc0254d2f91e065493030006a3d8d00335aa200ba9064f0398581aa32001c68049a351308f516000e34c288166a319381ab8165e04f0a6126253421aa64143c0d650772bd3d0f8e696b34e0906ac595d7687⟩, ⟨0x2ba1498a1c4c825711b08243e61e60e186883301770b1053427412508b84201f60ec070832816e0ad04702040c40380158068016000, 0x1c300293d23001306989713800cdfdae6f8c4c006d5733c2b89ea78001c6c03cdd5c6068069b8b5cc1aa4295521da1cc9157e431c498337a49c121ba32ea143c0c1c672d2dc4e00671d2c0c4e201d4ad334619f224e09⟩ ] def tableLLRRR : Table Block := .branch 15 tableLLRRRL tableLLRRRR def tableLLRR : Table Block := .branch 29 tableLLRRL tableLLRRR def tableLLR : Table Block := .branch 59 tableLLRL tableLLRR def tableLL : Table Block := .branch 0x75 tableLLL tableLLR def tableLRLLLL : Table Block := .leaf #[ ⟨0x3261838b905aa2c615189cc4d224611d08b44141da0e206ac34217e09f0494228101077038c1840a504c02240f80700318118046000, 0x5daba5dc9400f87b4930926cd2008c48006e42003c3c0d71f002e26119c4e0019f362e7cb3fa000e2acc385cc0173c0c59c9f0e2c5009fbc22858e51c0605d328e6c45130ba2704807c0ddac0ac564fe295892e29e46714e1e04ca461d73bc4dce800f89⟩, ⟨0x2f81670b045602a114b0a144cc25112388e045c20b0f6072436619d0b805842a814309a04942040e106b82d012206e0188078016000, 0x1d5e407d2b8cd1a67c89382468d35cc045344e0cf032c49818003579c6801adb51000d5ef27644c2d90b0a17e183121673c932668634f449309348fa4762e224006cf035232e538b000d2130f489a4562c6600b305adcab0f26a259144e09⟩, ⟨0x2da1648a984ec26512b092c47421710287ec3d81c90d3067030c1770aa051424411808583d41be0d005682380d606102100b003e000, 0x78ce001a6c62e9ae01400662a28cf9127048c1a401f4d2c69748f031849000d6671b42a00564606b62e14c23d6500038d34a2003acb64e06615daf70b6c2c29847ac600071a006c054400758ec9c0c006bed2eca785713801af54b⟩, ⟨0x29b13c09b849623e11488744201ff0f2073838219e0bd85c429c13809184381f60e606c031c1740a904f022c10007302800b4046000, 0x462806b9181a316033c5b09c4c55708ce2718358f682aab72615c4f5b9000e362fc003c8c0d17f000e2edbf8590354851aa43b439f1aaf8861934d99aa0d38253c45c26713d6a00038d00ad3732303005a9b58b⟩, ⟨0x2d21638a9050225112388904341f70ea06c433c18f0c205c42b414209c04942360f807082f815609804381e80d205e01d80c0046000, 0x3048006a3789a8c545f1a001001d4670f03000aa2f8981abba001c68006a2391a88d77f268fa1f224e090f1131d0b3423d21e0616113030006ba38d0305a201aae9e4f1144c2e891934d99aa0d3824019191c5c26713d7140038d⟩, ⟨0x30617b8bb05b62c41578a9452c28c134894845e21910187d03bc1bb0d606882fe16c0b104fc2380f9077032c15007802a80c801e000, 0x3224e091a34fa10cd13833c0cb12606000d7f31a07a3440035fec9db070b6bfc29849a94e1aa50003c4d24781aa43528c5d048781abde001c6d46aa4991a8e548717826a3f51ac58036a43870048032a4187000d4570f5e7a8963401151ec3e449⟩, ⟨0x280133895848222610988103ee1e60ed87383561960c605a42ac1430990494228109073036c19c0ab04902200ca05801f8078022000, 0xa09d75cbb9a6714f14ada9ed8449e49933431a613389ec34001c6fd02c606aa6807b161f21ddc458c9a6ccd5069c12009aa362e13389ec1a001c698c2bc606aa0020f16e27018175874007bab8cd1a67⟩, ⟨0x31e17d8bc459c2ab14409dc4cc24710e87f83be1d20d7864030c1650a204bc2180fb076034c1740ad04501c40ce04e01a8090016000, 0x7644c6c0c001b2162c003835c89052c8993a534a49a602c12a3c0a8090468e00605d1e06c0ea5b89c003638c6eb38175181aa7d026d6003fc369fdeb34c12177878334ae4901ba73d55c3adc4f62c000e3686d5e3035159bac067dd344e6a19e74e09⟩, ⟨0x34519d0c746222f01678b0053a27c12c893c45c22310a08143ec1d50d406483101720aa84c82220a004681f00d605e01d80c001a000, 0x18240feca5708c0032736793a961b69847000d97b1a0032bd711d5d98327031d4caddae131e477096611c00655ad60032aa0076ac12e1606c1161401e2a4e39db27e36ad0e82ce6a7354349a63e0016772a0482b878964d26692834b8a6c90007c5e09c1d106b16c27⟩, ⟨0x42d20f105080e3d21de0eac73438d1b50d7c69c34118f0c505e22e41608aac510272132890845e22510405f41ca0400190084026000, 0xe136066158017728000010fc25859334941a5c5367c003e2f04c39ad84f678001e3606000d9db16e31000d9e327dfec28007cbb93efee15c4e001b37e365b48c0ddd8332b3624cf267ad0c6a2342953e00336280530e6c399dccf1a16d43684aa78004654362004f0e6c299d24e6676d0a6a1342153a0013299b0c02587ca1870d314341689⟩, ⟨0x30b17e0b645742a314609f84ce25012088d843e1fe0f0075837e1b50c905c429c14409084301d20c605382100c204e01f80c001a000, 0x6aa6000da8f1a042a4545aca64c968c98a18743638898c7c8938240c964ccd0235b40838ec781814564c0c001b4a634006652e203fb4b64e06b4800cf1a0c4a7b4700831b68d000e3400d71a8806ad1f93000da2b1b54a47624d249f0c001b16c27⟩, ⟨0x2da1658af055e29d14389c44ce25111b08a843a2080f987403761980c485e82ae14a09d84c42440ed06502ac110072014007001c000, 0x1c259a4771595095d65c2f58f0b0375830a085929e11b8cc0eca7e375680aed6f8d07f538102d6b8dd8934927b38009c5b09df26c0c692c005fb400000876ac000e3400d95a88006d5d93ec9e16742001001000c00987846ca1b686⟩, ⟨0x28112f08ec45821b10607f43b41cd0df06d034e1720ae053c25811908783f01d60de06683081620a604b81d00c604001b009c022000, 0x25b7464c047efdc99e478936ec49a493d8400362d84f1936066158002000000010fafd85713db580038d65923033688b1a34e99b24d382760d7098c23db2c0038d1a38800ed9b93818f25f5a30a3067⟩, ⟨0x2bc1538a6050e276133891046e22a10a88003ba1d00d6868c30016b0a4049422810307a03441880b705102340d405d01d00c001a000, 0x7953daa6c334959a4c24dbfc0158ba14b0a49f1560f6abf89008b26c27001dbe31b030006ded8b075588006df19300dfc2f2786692b349849b77802b17429614936aac1b157f0401564d84f6e8001e3606000db9b16c31⟩ ] def tableLRLLLR : Table Block := .leaf #[ ⟨0x2f01718b0056c293143098c48022b10407c43c81d30e106d43241870bb05a428c13c08c84281ce0c405182000d405301e009c02e000, 0x613dc8c0078d818003721c5b0c5c39723c9d477e139306653dc7004f8d03bd8fa669334941a5c53716003e2f04b51ad84f712001e3606000dc43170944091ef9c98006e1b8d001a27b88006e1f93dea6140da63dfb6cd07354c4634364c9⟩, ⟨0x34619c8c586002dd15d0a5c4e825111d08ac4402090f407283801a90c3059429c12108b83d01c20be04f81f80da05c02780b0042000, 0x1c62001ba3e4fe4d85b6afcb326001b79e1ede973fc68006e0587b9edc0f1a23f31f224e0903f1934a60f36d020fcb1e0603e192001b9a63413e93ae20f531c00773c092cf030196e5f8d0f50e01eb96e3400f94a3d233cadb64cd25069714dc9c00f8bc1200fc456b⟩, ⟨0x2d61638af055628813b09b04ba25311808343ee1e50ec872834e1840bd055c268111077032c1740a904e01e40dc05d02800b4046000, 0x3224e091834dbfae318d2f11e065093030006eb98db88dbe323f40c2e288fc8d1a980036f0c3dbcade38d818003753c6803eddf91000dd471a001b83e46dc7753c9c99a4a0d2e29ba5801f178261cd6c27001dd1f1b030006e8b8b⟩, ⟨0x2e916e0aec534277135091c47a21a0fc875838e1b80ca86202f216f0b104b422e10807d83b01c20be05582840fc0710270078022000, 0xc290089cfb5800ce75aff369c3c9b09eefe003c6c0c001bbee2e05c006e29bdfcae4f624d249df7801b16c27709b0330ac0001f40000087be9c29c498337a49c12006b80e2f6143c0d6feb90e2dc4e001b8fe2ee6371e006e2b0cd1667⟩, ⟨0x3141788b38570297140097c47822510a08183e61e60ee06e43301750b104fc25811908603a418c0bc04c82100c205001f80c001a000, 0xf20f22001bd3e4f96385c10533b3cd92c70019d1b3a74af3d8d0d318e3e698a1a0e44d19a06bcb80071a0033c571011de67261b21c02f793c687a87ff91ae27000de3f1a03fbac64606b905d5b160e2a7011dd531786692b349849bc3002b17429⟩, ⟨0x3131780b6c5982bd14d0a344f827213188b84161fe0ed871435e19e0c686002ba15209784881fe0f506902bc11806902e00e4046000, 0x5f100038d2e158ec49a493eb800562d84e706d818e258002648000010c0037bac6b8c40037bcc9f3130beaec2c99a4a0d2e29bd9001f1782766800ac5b09c0077aec6c0c001bd662c003b2fc88012f5d93000dea71ac312a85eaf27b2ac2de940038d⟩, ⟨0x2c815f0aa0526289133094045a22010888103f01e90ec06d433e17c0a604a423410507503501940b404f82540ec036015007401e000, 0x81b987853c133c0c001e61e2798185008f3070fe295c92e29e4630925669000ed7313cb9c36d6801189003f2dc0038700372db12611c1ad560d41aab6a58581b6a5858c153c0d5cc1252c00802006012b551e11b4cdd4340a6⟩, ⟨0x2000f407783961bc0d7868832c1850bb05a42bc14d09b848822c10507c03981b80c905d029011c0780358160092038015806401e000, 0xb3028781a8a43ee47a14b0a6918f8d2d89f0cd09a84d3d01c2c5099f11964cfe292f91e060c912d8ab9a385e69e17a3585d3332a87fc932a67f149ec8f035449⟩, ⟨0x2000f5075c38c1b90d506743201810b605742a413d09404642140ff075036019c0b8057026011c0780348160096039017808002c000, 0xe94616d043e699fc52b925c5346630923dca9cc938241ad52f36686c4f429a134c0aa4ba4781b9ef8581b9f38581ba2185fc932a67f149ec8f03544981b9d385⟩, ⟨0x2e41660aa450c27012f893847e21a10688003de1de0e686f035e18a0c0056c29812908303c01960b504801e80ce05a02100e004a000, 0x8aa9200fdedf28001bdb653a8d85d334961a4c24c056005eb2852e291f364d1c874d95078613c046001eba060006021d636320035e9728003bd2653abd858070001d7755b0b00d0003aeea9e14bc43f8a423d21e060e512000c027ae⟩, ⟨0x29c1478a144de265127890843a1ea0f007283761b10c605fc2ea1500a304842200ff078032c17c0b104e02240e806102a00bc04a000, 0x713c0dd69c2c0dd68c2b89c001813759025c0980016aa06eb0e17923c0c00bc08fac713c0d0218029ae818012810b5da6692c34984980f400bd650a5c520d0ac4f1240ccac46930c27000e035d740c000c067ac⟩, ⟨0x244115884840e1e80ec070c35c1a30c705d42d015b0a784f025610a078836418c0b9054026c11c07f03601740a204601a8098022000, 0xbab374d95cba7048b1c554bb6c69e154c132a704bfdab06e39cf429614c2306e8989730ac400b9c521dd309250f7721fc525069714c998d248a289309388d82474d37922c84cf4269⟩, ⟨0x2a314409e44dc26312b090043a20a0fb87903a21b80ca86282f21680ac853027413009083f81d00de064029411805c02300b4046000, 0x3b6050f6c4f89b1330a7b558506de27b1b89a265744c44890d513ee20eb007f5df1782760d73269bc8fe292e91e063092001eb762fad98581bad385000f5bb0e03d0eb0738007ad98aeb9e178805cf03038fac98b⟩, ⟨0x22d10f084c4041e70e306f034618b0bf85b42c214909f849c2220fb074036c1980be055827811a07e03a018c0a804301a00a801e000, 0x19127048e1a6151f8680fe0239e06fa08749fc543e2352c8f48da2050f03602245770b0bdd9c2ca687a149c498a1a0544f8a4a4d2612606c5349a492a34984981a08ef869c49⟩, ⟨0x25512208cc43420d0ff07c43c81d50de06b43441890b8854028a12c08d84181f80e606e03181660a604702100e206702880d8036000, 0x16ce6b773740639fc52b925c5326630920dc8e9ac938240785d303a511ba0204e7c4dba04e9c133d0999e06eefe1606efb616e543f8a4351a1e069891303774b0a0f81c1e042883c041307⟩ ] def tableLRLLL : Table Block := .branch 14 tableLRLLLL tableLRLLLR def tableLRLLRL : Table Block := .leaf #[ ⟨0x3b01d30e046b833b1970c045ee2d61660a9c52226412188584021e00de86682d41530a204e423c103072836c18409f0420184096000, 0x81a0f100275c00441e1ac005d44b3f8a400400f50acf030016a05a60683a4001d666cf0ba8fa71a7567002d47b3ea0800ea359f50acc0031836746a63d31b606b0261ec01605b01e1c47b63e449c120180c266e07868107d98f0300feba40038e9c68066511000e3af27e14c288200200b4311e1f147⟩, ⟨0x2be1538a104c224011788884262060fc87a83b21ca0df86b831617c0b805942ac133093040419c0b805582180f805702080bc04a000, 0x2104d28006297878a6648b1b9fc02167cd33f8a5724b8a68cc6125f4d39927048d1a59e70e8c43627e4684d49259db0ddc3b89c00183f75907e41fa000eab3d985613800707ceba0600060f7d6679b0a5d23c0c005c1e7ae⟩, ⟨0x2de15d8aa050a26012788f845e20c0ff87c83c21d00d586782f61710a7050423c107071032c1780ab04e02340d005b026010806a000, 0x3944c586891000e51b2600ec2a9b3c334959a4c24e4f40158ba14b0a6a4d6306b8534009d9b09f26c003c6c0c001c9a62dc62001c9b64e10fd280030a2ece10ed29e478936ec49a493085000dab613c64d8198560099c60000043⟩, ⟨0x34118f0bec5ca2c215b8a504e626011e88a040a1e40e086782f61580a704ac22c0f3071034418409f04902140e405f01d00b4014000, 0x11968cc62400308dc4c2030d07f84662704c1fa1678cff900bb387087cae00671a0cca7013e56b1a003c2367cac384b1a00195061f2ad29dc680064858781b2a6001c6830ac45a3955c9e19a4acd2612729a00ac5d0a58529da2c3a45c2b60126cd84e003ca363606⟩, ⟨0x2fe16d8b145682a314a09bc4c425512108c443c2070fd07543961a60cb85d02a213b08c03d41d00b8057022c0cc05001c808802e000, 0x38f8ca68f70ba6692c34984985b400bd650a5c5219a3268e418a338886c309c00385975d0300030b1eb1b19002b1cf94035639b29a55c2c5622a987002c55b0fe29000800e2a987818003153c480030ac6bb48d85bf659362f32704d7bacc⟩, ⟨0x2b61548a7851a28013b09804ac24011988383b61c50dc064c3121640a9850826610e08083d01b60c8057827011e06a03000ec046000, 0x2ccd09a44d2e2781b4b78581b4b58571380030c4eb21888624001d569530ac278614014d740c0094307acd334961a4c24c2fe005eb2852e290194762789201927623498613c2ee001eba060006175d6045549022f1f394⟩, ⟨0x2d21578a384f226e12688a84361f80ea86c83501850b1055429013d08d03a818e0b4051825810e07a036817809603c018808001e000, 0x19979c4c6800e295a7136cd09800713ecec4dcdfe34c23e6f40038d000f42b22addcdfe4e0656df41f1601a8c261e852c29c4d18000be2402b17f000e1c02b184c4d2087cd33f8a5724b8a68cc6124f144e649c123c6979343627⟩, ⟨0x3041718b5858e2ba1568a784fa26e131890845a2000fa87503841b80d106603041780b103f81e40e606d03381560880328110042000, 0xaaf00cb3f8a5724b8a64cc612401aabed3592704800d565a5a28d15480020056784d550003692e91e06e94e1606e95e1606ea1614f82001001632da9000300861e11a11a11b9199079cac6b2d33938dce45c2f1a0039ff67680671b1a00399b67⟩, ⟨0x31717a0b785902bb14b0a304ce25112108744201eb0dc06b83301830bb056c2a213c08b84041dc0e206082d010e07d02e00dc042000, 0x72f194ecde17b418561380070f76ba0600061ecd675c70a711c00387a758e2700061e8d643cd0f38005aa81bad78516453f8a410e253c0c0c2a900061ded7758b0bec21f118016b4ecfe29001003ad1b3c0c0035a16900061d5d775f70b59b59367⟩, ⟨0x2d61638a8852a288139898049623611488103f41d50de86682ee1520a084c02420fc077838819a0bc053825811206402d00d4046000, 0xc24c422005eb2852e290715627a9206f5640dae184e001c413ae818001881f58115924028cc5e5003398aca44060096bb4cd2586930930ff8017aca14b8a41a159367206656449e184f0fb8007ae81800187d7585429007f2f394⟩, ⟨0x29714609f44b825211e08bc4141d70e086b034417d0b3052027012908d042c1ec0eb06f02e415e08a03a81980a20460188088022000, 0x426e49200361d6781bbb58571380031166b222b88b0001d577570b302a7818036889f580e8b1c0d004c78cc6814c7127a53722aa613309c032887b5d03006110e6b01b553829afb1538270ad593a9b4cd25869⟩, ⟨0x2d51640a945362781338908442212103879838a1980c705b429412908303c019e0be058828812a08803c81a00b204e01e807001a000, 0xc27d31800f1b0300074c38bc13899551256cc022caacf912704800d96da70d001eda00200764b67818006ca6d2001d2b6340070bee2001d2c64fbe185b24010b3e699fc52b925c534663092fe69cc9382470d200f633686c4f266⟩, ⟨0x2a4140898047a22810287d83a61c20cf865430816e0b0854828c137095046c20a0ef06c82e015609d04981c00be04e0208078026000, 0xea131a00f8bb71000ea0b1a0dcb10076a1326611c003a7ec68d9c4007a80c9c0c306bee8e1584f292f118d23b8ae71577870bddec2f7730a00997167613dd0d0369ad9658d9334941a5c53a67003e2f049a48b⟩, ⟨0x282136095c49823711088503e21dc0e906f435819b0c805ec2b414909e046420c0fc0748320166086038017c0aa0400118058014000, 0x3c2b850f055e09b8155f82f0ae27000ea7b1b0d8b181a2a9574a694934e092a555800db459e24d6e27000ea4f1b2324606f11160036b76707b5580081d5afdabbf9859133c0cbecab0ec4443c99a11a06⟩, ⟨0x2b814a89d04a223b11608243f41d70e686d83401890ba059029e13a09184381fe0f207183601860ae052020c0ec05502480f005a000, 0xeb131a00393b71000eb1b27e5cc29847000eaff1a6144099ac1c9c0d280b2fc51853d15920faa980c6ffc54f7f2a5dc165f472ace24c19bd24e0927555d20a9e06032c85b5b09c01320ed708ce27389600b8fe0036a⟩ ] def tableLRLLRR : Table Block := .leaf #[ ⟨0x2b014d89d84d224611e08644181e90e306d43501970c605d42d415d09d049c23a10607683701760a204982200de04e016808c014000, 0x6a55c5f00116e584e003d70e3606000eb7f16c31011eb872601b9fbe4c64d3666a834e09139997099c4e001d6a636d248c0d80832c063dce3c6b140d8e750446b9f224e09018a74e518045b4040e21cf0301433a606⟩, ⟨0x28e139898047822110788143f01eb0f0872c3641a50cc06342e815309d04902160ea06a830014e09204181c80c2052017808802a000, 0x30e84c10888601003078580e12e123c0cc27a3340de72c283dd39e852c29c4d6a06e902b5017380da3a7cd3852eb1739516d839f50d52168a901ae73bf9aaed53619a4acd261275d000ac5d0a58524d6ab⟩, ⟨0x2aa14e8a3050226612d094045621e0fc87bc3941bb0cb06242c813109384441f00ee06482c012a07a03681780a204401a8068016000, 0x30cd7269c120c8fc3211a068c3012fd7309e30a046b5d0302311846b0e2380071836b1c4e000c60bac8c0e304000b55037acb0a03c2e781a2fe044f5dc5b8e770c56131707c1fc52b925c5306630920888c27b24e09⟩, ⟨0x2e41608a8052628613d896845a20c0ef87383821b00cf86182f21580a704d4256106072830015a09e04801f40e406502000d8022000, 0x6c7c71f2609182b67a14b0a7136058225a410f040006ce08581f696141880b8838c9a6ccd5069793482c9b9fc52020722e78180a3dd303463e0a16b3e84405ce0a0463bac8790e7126c86a951309984f18b824dae8181248c57583469⟩, ⟨0x30d1790b3855a29c14589e84da24a11f88984321f60f6072436018b0a9050426012107f03c41c80cb059023410005d02980c0046000, 0x6791c1ccd2237c1ddb7805cf86e69334941a5c53b5d003e2f04834d3ad84e003dace3606000ed5f172802f135a2340d988f068622e1359f0cd256693093b5000562e852c2909c17580e03ae336365b72c27001ed271b03000768f8b61882e769393⟩, ⟨0x3911bf0dcc6b032b1890c005ca2b814f8a184d6247116081c3f01ee0e486b834817f0b204fc23c0f106b02c412c07102b00ec02e000, 0xd822704d16ff0c13d0fdc4db380f23a617068538e1227989227367f3ee74f6f93a67d3883cf66f3683806670704ea366d652478181718d8f593e00c1e0605ba360d7006d10705a635dd703961d59c1c70e40c2ce019941c1688d675c01a841e35705475c58b4c1ee06883dbcce6583f2cec7⟩, ⟨0x34f1960c6c6183011780b3c57a2b31520a044c025612008283d21c80d985d02be14a09c84bc2140e9067028410c06b02380b0026000, 0x2b7498d8a33e449c123069126cc1b69748f031849dcd80071a23d9797181bddf850281d360889c1f74b752d2003bbd69dd4b300404034b8121f07c2bb36ebd9bf5cd0303191be6bb1f8426cf4ca541c41f1f066ecf51a6426975084c13308d83e2719098b8873c5c89⟩, ⟨0x26412488d043e2040fa87803781980c705a82ae14a09d84b423410d07e03b41c60d206182c814609903c01a4090039017008c02c000, 0x4fc2123d6a70aa53c80d2a7954d236a71345805070c46403078182c238bc2a5343d0a4e24c50d02a27c525269309303629a4d24951a4c24c0d99c2676d38922639996f6c4f89b1330a7df785⟩, ⟨0x44120f0fec7b03a81c90cec63c3011790b54568293139097c47c229103075836a1880b384e82320ec06582780e205601d80b8014000, 0x1be4000e34003984c8b5a77cd93c6d67c800387a19618422212d6d884d3a2f58c3c4a034a4058925311240188a539f99f76b001cf6b3e7ce7d5ae1a93000f1d5a78cacce34f9361dc67f25678e1f21f3becf90d9dd8ff67c9fc7db3e4164f63e59f23327ecf93d93391767c9acabb3e4ce5564459f26b273222cff5f9c1c1bf383f8a4020bf8c1e06⟩, ⟨0x36219f8c786282f31720b0c56c295134097849023b10c07dc3da1cc0e1067c32016d0ab84d02220ee06c02a012406f02600b4014000, 0x3808001c68096e05c606011dbeb59c47003dbcb5b89c007682d7b73b3e0056a81bdb785713efe00038d006d9ab8c0c00bb316b81b7e6001c69c51000efd727ed0c280077df8d000e63f22001df8e4fda985c98643000387c9161844392dc3ca188a38700713e8e001a1c61e06⟩, ⟨0x3331930c545e42e115f0ac451828212e88b44141f40e886ec3301820af854824411807a834010c078032815008e036015806001a000, 0x38a468d800ae2564860d8009e2466184e001c819ae818001902b58001001f10f24001dc7653bf985000ee3329dfbc2f10c00387e21e1800baf7c3f8a4002003d7ae1e06000ebe3131feb87dacc78806c00202450061fc86e41163269b33541a704aee8b84ce27⟩, ⟨0x25612388e845a21e0fd87b03c21be0d3065c3021760a9850825a123086840c1da0de06882fc16a0a804181e40c605202080c801a000, 0x1724b8a68cc612400fb4dc4e649c12001da56250a9221b13ed1f0d89b68a002c4e899c4eccf0377e70b0377ef0b711fc525c23c0ce29004e41ad740de0cc2e99a4b0d26126414002f59429⟩, ⟨0x3af1cc0e1c6f436b1a30ce46282e116b8b0455e2a514009d84a222c0f105c41e60e406983181680aa04d82440f604b020807801a000, 0x79accb133e998e2380072276b1c4e000c89bac912e44c000b550379030a5d23c0c020c88dae81a44400ff5c01f4887ac97ae49a11132ddb0e1f6c3925979421f24932c97a6c5b0fb60c924bc610d92361e4cae5e7b15c3fe499533f8a4f64781aa24c0de0dc2ed5b61e001c3c0db54d86e1f34cfe29⟩, ⟨0x2e71610ac44e025912108ac43c1f90e306bc31417d0b3857029e12a09003ec1d00d906582e014a09a04681a00bc0390150078016000, 0x491e0016a460d20008004001c91ba891cb4b23a69647ed2b89c00191af5923548d6000eaa46bd2c8d09dbeb184f3b8c3426613a7952326ba064f22462d66fa873c9324344c890d90f09984e02a48b5ae8180529163587127918d144e09⟩, ⟨0x25811a887440c1f90f4076c39c1bf0d4066431a1820b6857828612e090845c2020f707083381860b004581a00b604c01f80c804a000, 0xa6ecb1309250f1c731fc525069714c998d248282c9309388d8241f5537923b08153f40aa5c4f0379e30b0379df0a1da261307489004247bd6003e7c18cf14ac49714e199c532480015a9⟩ ] def tableLRLLR : Table Block := .branch 15 tableLRLLRL tableLRLLRR def tableLRLL : Table Block := .branch 29 tableLRLLL tableLRLLR def tableLRLRLL : Table Block := .leaf #[ ⟨0x3581a70cac6102e516b0b1c54429514309f04de23a11188003a01a00cb05cc2a012f09104542140e905e026c0f006b02f014c060000, 0x81b986001c680074bb91004f31727b126924c0d80036ad84ee136066158000188000010e066d2c52748f87d20452348d87573800b33987818003cb3c68e0389f9101fb13b3d0a585389ac2c06ed203561c00367019b0db4806b77187a14b0a7136ea802d8900aeecc00387⟩, ⟨0x36119e0cac63430b1730b645982a9143098c48023310708103be1af0c605a42a613c09284381ee0e006482c811a06802280d0046000, 0x949a5acd334961a4c24c99c005eb2852e29000f43318009e82648003d0ac60023a0598613c98c001eba0600064c4d60004005cfdc9740f89194000f11f29edac2ef86c9f71193eb7b2774264c1dac9800992075b264b9013b5925c00d9ac9b180170e3867ed36e94400387⟩, ⟨0x29b13c097c49c22b10c08143f41e50e206cc34c1970c505f42dc15d0a7050c26410f08003d01d20da05b82a810a05201e00bc014000, 0x46354b8b01ee74f9b981e5d2fc4f2c89aed138254ad596bc02167cd33f8a5724b8a68cc6125f4d39927048d1a56a7bffc43627e4684d4925695bf0c3b89c00193635926bc9b0000eabde385613c9a800a6ba06⟩, ⟨0x3541998c6861a2e816f0ae453c27912b08983ec1d30d186402fa1720ab84f025a12208883b81940c005282600ea04501d8094014000, 0xc88a8f73e6e0b9d84f2878211ae8181069437580180c1e50b040b5dc01df7e1f7d7c00df761f82bc02e0061f82fc18c3f05b82fc15c3cda8964913824172885cb81907c89382464d2e96d58634032903c1e069401612e27000eaaf17b2bd55000b15037fc30b1700c1e06⟩, ⟨0x4091f30f5c7983a91c30d5869832918f8bf05b2275132896448622c103878837a1a20bf85c828413808a836016a08503100c8032000, 0x8e0761f224e09000f02f13c68820634002003e04e1e06001701f130374ec0038de2fc0eb22001eb3f02f805c3e00100670f498d08dd5bc301bcc7017e522d700c3290eb9d5a94835d0508c1fab5bfcc3f8a4003d58dfd61e06eabefe313bfddfa6fdb7df87df86fcb0fbefdf8efbb0e097e1661c12dc2b041e1e5a49cf9316e7⟩, ⟨0x2b61560a64514277134097847622a10387c83c21be0d8868832c18b0bd05ac2aa13f09484181f20c905982901340770280118046000, 0x2069951269245144984981b5f1bc3c68e9a7783af6c7d9099e84d3d59d6063584f312f11b048c1adb157d330bf4ec2fd430a001e1be1d856001d4570d715f45c2d24781a093ae3c5803fa01b27818003d46c6c1135bf91⟩, ⟨0x2c21598aa052e274131096048e22410087783a41c30d0065430015009d049021e0d606402f813607a033816809603e016808001e000, 0x3224e091f3480376378d2f11e061b34f5f40038d000ec5b22007ebfe4f918e23800f6258bc120caabd8780040058afb9e17ee38585f55db1801a0e800d9ee86818003d6ec6e1fb76dc79343d0a4e24f99b94d3e2929349849⟩, ⟨0x34419c8c585e62d01588a384de23611508703fa1da0db86502e215b0a504e425410707d03b41b40c705102540e406802280d0022000, 0xc12056851e2f678056c5ecec0598bc6d8e29343d321e1c03633a3b24800de780159e11bc860039528fd9932ae37b30648c6b8c366987000ecd713a6cc3619a4acd26127b2200ac5d0a58528d22c3945cb4cdf8ee584e003ec563606000f623178271df5ed4f271667⟩, ⟨0x3a31c90dbc6b23361958c205ca2c01578a9450025312388e843e2120fb874836219f0c705a429c12908803b419409a03500e8046000, 0x3d1a4003de9c4f78f0dde2ef462704f787bcf8c000f7530eeefcb59ac9133c0cef14b53ac00a68056383d23419a9b5884c19a935e83cb44eedeb8040a4dcf858347b99dd7967b5c01a241e59c065b5cf38ee7e5b71c70fcb6e3861f96bc6fd3be1c2ddcace59e1f847cb5e5961eed864c2940b18b⟩, ⟨0x2e115f0ac451c28413088f84362050f9078c3b01c70db068432e1860be056429412708c042c1f20e2065830415408703200d0022000, 0x1f78003e2d84fde2001e3606000f78316001fb9e44003de2c9fdc70a8921f224e091f34e59b44f4cf03159a606000f74f1a7144009dd5c99a4771595095045e9608ed2c0d043e947ff084c3c2da173898620200207871fec2cf0f7069⟩, ⟨0x2d015e8aa850a27a134896049223c11508804221ec0ea872c36819d0bc059c26811d08703ac18c0a304c81d00ba04c01d80b8016000, 0xe51398a2c010823357827a0d73269bc8fe292e91e063092000c107ab82074b0340fda5820f4c000c105a719358010000c101aa821f4a611c003defc6800303c6c4007df1c9c0c000c0ebab82934b26692834b8a7bcc007c5e09⟩, ⟨0x2f016d0adc52827112d892046a22a10b87c83c61d40d885f82e814f0a184d023e10407703601920a604881b80c804f01c8098026000, 0xfc8e14003e23c68007f0391000f89727f8bc2d9a89655138257445c152003e9ed24c249fc4002712000c14a001e9e06828c006d4d23184707555e8084aafd2e17eff85308fe0d000e341bd62003f07e4e0606c55fddf0bca2267b44c8489⟩, ⟨0x25c11c88984382090fd07b43bc1d30e006b434618e0be85a029a13c09684882220fc07503801a20ae04c820c0f206302c80d8046000, 0xf2200071bec24606ed91671260cde927049b08ba050f032b8aac7cce0deabb8b35551667c89382464d2352ad2f11e063492001f16e3610563f9cc2c0df97c2c0de27000e343e488007c5393⟩, ⟨0x2cb15a0aa852628613889944b023510287bc3c41bf0ce06482de14c095845420c0f7069031416c0ac04f81a80a6042019808001a000, 0x4380d181a13e65b09c4f15708ce27000cb1f172c601c000715fc7c2b89fcb2001c680de5859181806d2c0c5f9540038d85a001b8fc730bb126924c2400036ad84f1936066158000fa0000030e11ad2c19a572487a8786d16e27⟩ ] def tableLRLRLR : Table Block := .leaf #[ ⟨0x2a514109ac4c223e11488683ee1e80e286ec34418b0bc05a42bc14b094044020c0f3074831814608c03d81b80ba05201d80c0046000, 0xbf4464e146d2c0de81000e344d962611fcfc001c698510587a0327035700bae13dd2a3a87c8938243a4481425bd8d08f0878185644c0de6f000e340932d8c8cd22cb1934d99aa0d382464865c26713f9940038d⟩, ⟨0x26712e88e842e1f40ef872836e1a20ca06142f01690af051426412808784081d60cd06002bc14009504201b40b605102100e002a000, 0x40c001f51e2c003f6bc8813bd4b9398354852aa43b439922afc863893066f4938241b2dd750a1e06c84a75b89c0c865988e3995a668c33e449c12326982499a5f23c0ca92606000fa1b1a0f6b1⟩, ⟨0x2d215c8ab053626b12f093447c23311107fc3d41e00e8871c3481810af051c26012308003741a60b004f823810205e02980c0046000, 0x36845d6e271f35cd3401c00fc5719a34cf9127048d1a4011347c689c19e065893037ad80038d000cd0722001f5c64e16fd2c2dba5713fac00038d0614cef2303030e6738b9334941a5c53ea9003e2f04fdc00a98b613fa940078d⟩, ⟨0x2a514d09fc4e826712208a443e2040f4873836618f0c1057c28813a08f84281ea0e205f82c414009304101dc0bc053023008c014000, 0x18262a3085c26713fb800038d15c4a23030aa210b00c4a0f0d8742e0f0f83c0e0d0e83b89fdae001c688a1511818430885cc1aa4295521fa1c01f35cc5fd0c3269b33541a70484f03ae13389fd8e001c6ec89bc606⟩, ⟨0x2f41738b605962be1588a804fa25a12588fc4502030fa076c3741a40c705d42d614a08482e815209804281cc0b003d0178078022000, 0xf14ac49714c199c52b6690027f2713fc8004e25b13f2340bba6001605cd4984701a475d180813abf7f85fdfe167805cf0347c04f5ac002000d6eb85fb4e0008004bd5add50bee9e65cd94e60dd131c8305a37098d056131430c9a6ccd5069⟩, ⟨0x2cd15d0aac53c28f14209c44bc25411888883fe1f20f086c434e1900c185802a214709c048422e0f406882b812e07602a80a0022000, 0xca224e24c19bd24e094551710a1e0600947a716711c0071e7c5b89c64d71e4004000b1503414ba5713fc4c0038deca303624b82834b037c340038d000c76722001f87e4e099d2800e99d9c007636d6003b19b116a83674b5667⟩, ⟨0x48723e91708764312080fbc79439716c08303ee1e20eb07303521940b8853825611408083c81ce0d4058826411e07c02c80d8026000, 0x40d1e1b9f6b89f001b3c0d1dbbcd6bc7ac7cb4940111869c9ff88bc9fbd3be5c0040030025856bbaf95e077035e4cf96aedcdc000b877cb0004004003b0a5771f29c0de063c96416f95aed4dbc00987902b34fed9a11a06f9b00071a1d6b1000fcd31a00185d644003f36c9c17da54690f9127048708900ec7e71a11d50f0306889f9400071a0018fa64402ff2ac9d5a89⟩, ⟨0x6e235f9ac0d4a68232f98bcc4a6022ef96f0b324c0258123c8dc44d216102c7d43df1df0bc843216705402700f60660288110042000, 0x11178c3e449c120018bb626357173c68004007173c3c0c0018b9624003f5cc6c48a34d919deb9970e02215300840036327a1b5a9f675fae15becb85538d0dea01543787a0c6017ddeb4ee40095a777c04ad2023bbd69900ddeb5c7f825daf04824c7edac00829ce10d7b802d628af83ea002bc2079c80627060177d4e1c00629be10487abda015b13d7bdf4e014e0fbce002f38200b3ea30f21d79bd7ba7035ec7d3d898534fa6001707f83c8e5c3c871e6d5ed9c057ad1c96257d33e95151c1ee0e8a6400387a46001db1b4ed4d9b6b2cce27000fd1b1b167ba371⟩, ⟨0x5122300e8472c3801ae8b485902a5141097c48022c10d88383fa1ec0e486f03181820af85542601060708308146079037812801a000, 0x218efddb2ebdba770006b12800b8adc55b11c38617387863494dfb965c7b6cedc00b624000f1578a962287042e30f09a16386750fe031b0c22c9412e0e1c92000c371d3262b862e1e06000fdf71a0018f9645d3ff7fc980180b49805461934d99aa0d2f269002c2eb0fe29000800e171878180050b6c4c0d3ae0b11acb0001400d1c5869d6b58012ab51e25442a3c3f0055528f034eaa2c0ebb8f305725100070f266⟩, ⟨0x3c81d28dd46c433f1980c986062ca1600a744f425512308dc4241df0ea86c03481970ba051025a11a08803b41980a903c8150042000, 0x860805b0e00f86000570e1821c025224c5d247819d85221c58009ee9e375bd9e06000fe6f1a01f90ee462eb001f4f6926124c3940046a40018b9c003d3c0d172800ba9846713800640d8b902c8480038a870b4b00a1e06757c8071743f44369f477a9b0fe91f46fa970ef4b4293a77a561487a874e00bd4f67⟩, ⟨0x5772ab14cca204e02378ff87b63c51ca8dfc6b833915d8a9450826111f08a03201600a084781f60cb05b02840fc04e01e80b0042000, 0x43475559dd53666c3d982dbd87b2cd97edbb87e3f0892cc3699b2ed9810d965fc3a1ac44765fb2e5982d3165eb30e1c00346cc4d19f0d671000d90f0f467c35246d0989b3d5a131365ab2cda46c52001b2c08710c9657c3da9b0c0031296744afed71a001b10e26ba586b45cf9b909c83b299714cbd0a3887f315d9d87851156ec9f8700353a8e54ffd7e34a83080c39554a8107fc3c2e2a5b8152ec4863e1dd863e986361e9cd2d269c1202dd936b⟩, ⟨0x3f11e70ca463630d1810bd05a22ac14d8a284fa25a12788a843a1fa0f807343501850b20504268111078039818a0a40408110042000, 0xafff263415600100172d00076bc0565a0a82f6847e6a72f0f543650d09a086fef00071a0694279b19334941a5c53fd9003e2f04c1420716ad84e003feae3606000ff4f16000c139b106e7f5726003371674db7f3f1ae27000ff371b3a41af7181a744356d60033ad674ed7f231b0b8e4cf369dc787e423ab30fd570e567⟩, ⟨0x21e10287b43c21cf0e186ac3421890b9056c29013b09604782160fe07683781a80c305a028c12808a038818809203a017809002e000, 0x33821d27f150f88d4b23d23688143c0d8089150c469619fd2ca687a149c498a1a0544f8a4a4d2612606c5349a492a34984981b8aedda7126e781ded89f13626614c2e1a5⟩, ⟨0x23411188504121fa0f1074c3901bc0d7866030e1720b4054428e13008e84401f00ee06d83441740a104401bc0c005502200ac014000, 0x7934e649c127126495a21b13e26846714c349a5c133d0999e0686974b034379a5b950fe290d468781a6244c0d0cc6943f5dcfac50e7d50973e449c123869d6fd7680e80239e06⟩, ⟨0x20a0fe87c83ba1c20d6867c32017f0b905802ac14709e849821c104078837c1a60c705a82a8136084036815808a038014807001e000, 0x185389a45552a4c0a9d395531437e499533f8a4f64781aa24c0d0cde955b0a1e064650e5523e236231a88f099b15431fa586474b0ec69734cfe295c92e29a331849⟩ ] def tableLRLRL : Table Block := .branch 14 tableLRLRLL tableLRLRLR def tableLRLRRL : Table Block := .leaf #[ ⟨0x3541978a6850226812e88f042e1e40e486b831217a0b4857028e13d097049021a0da066830c13c08d04001ac0c204e01b808801a000, 0x2962064d682568269496e9a0104041ae78a4bae090e369e601dd20d2ee9c122d34cd6b05aa1c1d382d30e002c9a700d860f65b342c00a86f74ff92694cfe2918333c0d91260686cb4a000c36800169e0cd03000d0d8ea794cfe291c333c0db0a261a9d2b3629d9ad4f429⟩, ⟨0x50627a93809ac4c725e926090e46222590d08544051fc0f4c7783a518109dc3be1d20aa051c27611807a835015e08e0348110042000, 0x3e0da27067819624c0c000c0ffad19388003040ece316d2c629a581a07900075ae31000607bd9c61da58c474a001ae1eb8aa0bd0ebba8a09e295004a2e9a049e9e0ba092b8a5d3294fd440015c4ae1c004c3c170123713ba5d29ba86001c55dc46e1a003c3d198002002b87f506e93711a52416811f87b3342300060bf8783041871a0035c5672b7e06ad6800d1fd9ca3d81a35a000c0cfad577e51b220034b567⟩, ⟨0x24c11887f83d21da0e686f03621a40bf85a82c014b09c04942240fa075837819e0c4058827812808103a018409203c0158070022000, 0xe6a160cc85071036aac615679264cd0c6984ce278270001d6c8fac6068dd5587a876ed1776a1e76621ce24c19bd24e093691760a1e06be116e270d916eabd15c668d33e449c123469⟩, ⟨0x2c415a8a404e624e122089c4201f50ed071c3721a60c986002ca14009a848822210207a838c1b20ca052823810806d02a012804a000, 0x308f0618003ad006e5988007062ece06006e295c4a3a5e671a13c5e5c243444d90d59a26824486289d604e160094429abc130422e64d3791fc525d23c0c6124001882f57104e9606881b4b9402e781819c881756000c411a7⟩, ⟨0x2e71618ac453828713e099c4ac24511b089c4141ef0e906d43561860b4857029a14009a049c2140e5060026411a06802d80f802e000, 0x6e803cf83eee0d1b6a96a254e0966155cb1a560d31124e24d741bcac03df8386b5c4aeb40064f03056b11a6ac0ab7e4fe295892e29e46714db204ca42d8898f53131000fa9006d600a4f48c00246afa9713803754aee9ad8019544b7a5⟩, ⟨0x2cd1580a8c50c25f129090446422710b07e43ce1dd0e7071033e1820ae851827811707d03ac18c0b704902200e205a01f80b4036000, 0x47d752b7138035c4ac18adc0e95699a30cf9127048c9a6b104a5a5f23c0ca9260600060f6d680355cc400b83e3671c86960683c4001d6809534c4c23c1dc000eb4c2880ef0786ce06ea05971c3e9403d784f3e0dd38300ba107⟩, ⟨0x2af1490a1c4f425511e08c842a2080f7878c3ac1b50c405c42c413d08e03dc1da0cc05b828811e07a03601740a004101b0074014000, 0x1999cae13389e12100075a1b54f181b2d2a256c2704a675c23389c007176d78b81440036a8ebb4a611e11500075a0038b1710c8a117d9c0c6418ab6b98354852aa43b439922afc863893066f4938241a49d750a1e06⟩, ⟨0x29d14309f04ca25412188d04462060f4873037e19a0ba85ac28c133092046420c0e5066830c1600a6040818009a03a0148070016000, 0x116de96068b534b6c695a34c4491834e99a5cac01d1e4fa4e952b713800309ceb40258f0b6303068b1e06ad1e43e449c121da242ef1d6da11e50f030ae8981a12c00075a1698df71cc5130c22464d3666a834e09⟩, ⟨0x284133897448022d10d081c3de1e10e8070c3641a70c505fc2e414d09804982120f806f82f815a09e04982080d205702680f8032000, 0x8f82098c0d2983d2b0f90f1e22c5d43d83c43dd0c3269b33541a70481324cae13389e15500075b1712d3181a43252563e67019275c88586baa2ccf9127048c9a41a31da5e23c0c6924001851b5b0802f1⟩, ⟨0x36e1b10d5c6903231798ba45782a51470978442210100878037e1b20c685a82c013d08d03d41a00ad03e81a80b604e01e80c804a000, 0x391a1352493aae181d6800e002001c3c0c002005fff6a8d0f4b1a1e95cc344561c61dcc1018a2230df0f06695c9200386967c37f4ab5b89c00185d35b43f7a3e4606a1f3d171707c83f62609d82835304fc139a90c7e5a30e18ecb3e8a30f9da24f24c99a18d3099c4f0b28003ad⟩, ⟨0x2b01530a1c4cc24511b08ac42c1f10e206e833218b0af04f425411d08704001da0e0067830016c0a304a020c0e806a02280d001e000, 0x81812d6fa4811f65d9fb28022cf9127048312a503f82fb5a003d8a0076781bb0c07ad3d4300e7e100cd9fb0005acf29a1e852712628681513e292934984981a05449a492e34984981a0a940ab5a346940a20a7d7b627⟩, ⟨0x3851b40d6469033b1948c7c6203061778b2057c299141070c3701a20be857026e12808c83d01ce0d8067030411807502b00dc054000, 0x679f27fc932a67f149ec8f03544981a447d2807e300327818001911f5322269414683152a87b2948109bd852000450409fca63106e31ad3c2682261a1b400075a0035e97100261b6d9ec49a493401800dab613b84d8198560004e200000439ff74b5d2b951c14d72a3f8a400827ae147⟩, ⟨0x2030f907943a61c90dd06c03321810bb85902aa14809d84bc23c10f08103dc1cc0cf05d02b813a09003f01d00c205201d809001a000, 0x4a99fc527b23c0d51260691b74b66050f0351487dc8f429614d231f1a5b13e19a13509a6485d2c5099f11964cfe292f91e060c912d8aa455d2c8afa5927b4ba66⟩, ⟨0x22c10a88083ea1dd0e987003361840b885802a614409b84a823610607b83b01ae0c2059829013208403901a00a2047018009801e000, 0x937b4a5e21fc5211e90f030728900069ecd74959a5b410f9a67f14ae49714d198c248f72a7324e0906b54bcd9a1b13d0a684d302a92e91e0691ef4b0348fba581a494d2fe49⟩, ⟨0x2d215d8ab851225612608d444c21c0fb87a83c01bb0d886302f616a0ad84d825211c08483e01ca0d4063828813007303080f002e000, 0x24d7d2b89c001a84759507d4200016aa0693434b491e06005ea0bd6389e060052a08d740d5028025aed334961a4c24d402005eb2852e290cd1936720c519127861380074fceba0600069f7d6150a400542f7b4000617ada496ba5⟩ ] def tableLRLRRR : Table Block := .leaf #[ ⟨0x257120086c3f41d50df069c33418d0c085b82bc14009484441fc0f1070034c18c0b7052025411207e03681780920380158084014000, 0x1fcc90006243d6800d685c400189176728ce94df963d0a585308c1ba27a318af302c729c99309250f7721fc525069714c998d248a289309388d82474d37922c84cf4269713c0d26c69606⟩, ⟨0x2f11608adc54028d141898046022310a88103e61e60e086d83461960b8859c28412f085039418409d04301cc0c8059020007c014000, 0x14a6a58000b15034db1a59050f03004e9578b97b800400587e33650d26692834b8a6258001f57824d645b09e254000f5b0300031296ae0148800951dece24f00075a001a4d644001894767360e951143e449c120304e9ad5007b689e19e06⟩, ⟨0x2ce15d8a6850a27b13509144481ff0f407443881b70d5865031216b0aa04f425411708603dc1ac0c705e02ac11005b02880c0046000, 0x3144d88803db44f0cf030e9a400189ff5a003619710006281d9caa7a5aa218f429614c2301a2c9c4d3c10163ce02c995274b36a259244e092e355d6b00659f224e091934abe296d8d001ad1007b3c0d5a000b6971380069638b⟩, ⟨0x2ca15d8a5851227c135896846a22810187e43a81c50d005ec2c814d09e04ac23c0f9077036c19c0a904f81e80d20440168068016000, 0xc24c5460056ae852c299b358d1aeab1002366c27000e29cd6c0c000c535ab30a2000c539b30006aaad9ced7a59da74b26692834b8a6291001f57824d345b09e28d000f5b030003145eaf44e2000d4e9b39be74a88a1f224e09⟩, ⟨0x2dc1668ae055229a13a89a04a624911a07fc3dc1dd0e706a433818f0bf05b429013b08b04301ce0da05a82400d605e01c8088022000, 0x3c8e45aadd893492679500ab56c27a0356c0c0ccab0000f30000021e19a4acd261262b7002b57429614ce9ac70d7563803bb3613c560001eb60600062aed5b0c40058ac36600b5581b38aa8001d6b0c40208ab3673bd6970cd25669⟩, ⟨0x29613e89a84ae24c11a88483f61d60e0867031617c0b8858027e12a090043c20a0e005f82c813a08203c01840980420158078020000, 0x30f7dd9baa269a44e09276197b1600761c0c363c5ba0226b41b54e01745b7ad8f33e449c123869b6402fb689d19e062834c0d1688003adb3b029b8b89c19d57c4c12aa069cf74b002a781a02165b09f8868cc6⟩, ⟨0x2eb16e0adc55429d14509c44bc24511c084c4121e40e186782f21620aa84c024c10107783941800b5054020c0f205401e8090016000, 0x1849abc400bd650a5c521c23027ede41b23023e5f0c27aba4003d740c000d5cfac0102f479001f135ed000189ab692e4e9584e077d5c3ae8180edab7f585f23c0c00355b9ae84cc27ab64003d740c000d5afac96ef4b978ae9c4ca74e09⟩, ⟨0x2d31630ae454c29113f08f445c22110b08143e61e90e907203621a70c8060c2bc12b08a03cc1d00dc05b82900fe06c0238088022000, 0x50a5c52192266f4d018224007002400bab0750d89f4cd09ac4d25d23c0d2fa6960697d34b034bf5a571380035806b2affac00001d54bd7a504299d53c26c46005eafad706287004aaf8d706e87abd8104d755ea0096bb4cd25869⟩, ⟨0x26a12e893848022f11108444041f80f1875037e1b00d3060c2dc14b09984a022a0f006682a012207e035817809a0400198090022000, 0x28527126086f534f8a4a4d2612606a05549a490a654984981a97c009c68312a400f4bcc7fc2243c26f0512000c663ad000d2df22000c667b398574b99a1df043f8a4a0d2e29d331a49559132869⟩, ⟨0x2d215b89f84de25c12688f843220c0fc87bc3b81a70cb06142ec1650a004c424011308303c41a40bf059023410605e02580b002a000, 0xa760863ab2e3e0781959cf23a368dd8934926b65006356c27b0d1b030688b00000400000a1fa1a4f8d2b92460d31aa0019abd093686ba14b8a418556023b154cdf45b09c0038d2f5b0300031a4eaf2148f5b00353ad374b824a7⟩, ⟨0x27412e892846e22c10987e03ce1da0e586f83621a20c886082ee1660a584f026012508b03ec1dc0c904b01fc0d005e01c8088016000, 0xf06d8fbb226ba44e09148b764302107cd33f8a5724b8a68cc6125f4d39927048d1a603ae843627e4684d4925f33583b89c001ad6f595ad56b6000eaa640d2e302c7818073ad5b59daab26a7564e09⟩, ⟨0x61c2fd9608ad854929992b082e3821af8cf06322f61698a8c51824211a88484061f80ea86c83041780aa84c021a0f0073030c024000, 0xde2eb5b488d3e3484bebb73cd1f000303a69f8b586000e2c7138a9c32fa6d3c40e0ddab480d1f347ae2d38aba75f49a7781bdbb468fda3d4e21a3c7165c54d3b766df03477037347cbe8b4789c3b4ece29e9f84fc4fc4f1038a18be1ff0fb16001e2561c003c4dc58007899c4dc548cba5b9c97e58826e2000e1e4cc008e10e1f224e09000f0db13c34e37e34002003e0e61e06000f0cb12000c717ade33f0bf239100327819c23c67c5862b14a0bd504caca021f34420e80da62271864a0fe9f0f06⟩, ⟨0x3681ae8cf863e3151790b54564295144096048223410787c03cc1c70d4060c2c812708d84441d80df05d026c12207202780b0016000, 0xc120224952e47001a3c0c48faa3e2c01efe4e003aa2e2c01f0a4ec2b000d5087818a95734ae2700063b8d6c85f975181a427c9a5801f65471ec23b3d6804f7947a9a800400447dc3c2340c3dbc75dad71380031d66b63cfbba8c0d1e3dcd2c043c49c4b8c78978be3000fb5e09⟩, ⟨0x32618e0bdc5b02b314a09a846a22010087883701a90ce061c2f21640a784c02220f2070830816a09604501fc0d8042015807001e000, 0x2061fde205d5801db7471b62203d5ffcdb147da5fef6bd1c02fd1ff32aa8f442a9fe008a97fbc0952c0080294d47994d26606d54e90ccd8a9ad854ca20314bfc406297f840452c60ce01befd2d84e013f0d2e11b048608bfb3f7400d2a56bd29c498337a49⟩, ⟨0x34c1938c285da2cc1548a184ee26c12588a03f01ee0e586a831216a0ab852426c10c07f83a01a60c405782680f606602b812804a000, 0x347e404d68032bc9e599625ad270df67d4f13330f58440261f224e09001802b4d60ab3d8d000d5fcfff8781aafa7fec4c013fd5a5fe6006d33040e51c3044c90d17a240081897b47a334640c907854c0a67f754ecf2a65c821a5df02af053389c0018f9b5a3fc440fb1⟩ ] def tableLRLRR : Table Block := .branch 15 tableLRLRRL tableLRLRRR def tableLRLR : Table Block := .branch 29 tableLRLRL tableLRLRR def tableLRL : Table Block := .branch 59 tableLRLL tableLRLR def tableLRRLLL : Table Block := .leaf #[ ⟨0x53c28b94289ca4db25b12548e044f217108c80437b1ae0ce46342f51690acc520283129892444c21c0fb84e01620980328118042000, 0xb048abbd6309ec102ae75d03156f6076b0006c56cf606162daea88a82b4d40d43da704d4054bdb07861b847661384cc519f5ab40996327d3ecfd8349b8b9b1317b2b61d2e1af1b13576d0b6962403ef4a4801652787f148004007291c3c0c002947e2606afe87f3d60734d5329f908f0eb0a3209a690e196e2599d9a337cadda71b0daa528f11fc095a2d58b3a2f228ff4f04e2e99a59c03143b4e94f4c51e16c1ab74e003a3d67⟩, ⟨0x3861b18c986062d31590a8c52c28513a09a44b823711688203ce1d20e3869830216009d84681ea0d4057827811a06a02e80b4046000, 0x312d425c8e18f0b585cc2b61f105863c3e17f103862c3da2d9f5a4f24f19b58d2346784cc272adac28d740c55a584dac001aa0b4d4d59a13000d4ed9caafb0835c00351b672a5ac1fd6000d53d9caa8b0735c00356f67b068ab8d75b9a5a8d2005e6d61fc52001001f3630f0300079b789⟩, ⟨0x4031ef0ee47343751aa0cbc6302f31670abc518267122087c3f81cc0d486702d816209f843c1d80dd06902bc11805c02900bc04a000, 0xaa52326b646300075a00f3c54400191875a0039dd710006463d9ce2da5917466fd6800322e6b5cd64ba880068b187515a459d680068cb87518e457d6f09f0d987e1361af0d3875a761bb0fe29000ad330d98781969786ac4e1bf0d1862c380230cd87c893824003863c4ef368578d000800f0c38781800585fc4c0d2228003ad⟩, ⟨0x35019c8c506062de1678b0053628e13f89d44d023310e07f43b01b30cb05c42a812f08f04342000db06802ac13c079037812804a000, 0x94a74a000c907ad1a38867b242ecf624d249988c006d5b09dc26c0cc2b0000640000061cc3ba500374e8e2ea48edad52b2475d680388c9c30f91cf5a00e3f270c76471d6c99a4a0d2e2991b4007d5e09980065bd5b09c00391a75b030003233eac00197ef6232ac8d3b3⟩, ⟨0x2cc15e0ab453c25412208d444c21810287e83da1c80d2866c2f01670ad052427c11b088040c1bc0bb05882380fe06002980d0014000, 0x90c6fd4d7a980037f200163b4027878ec6a94c7926c86a9913099c4e000c933ada5b168f230352d4b438b1934d99aa0d38240174b0c5c2671380032476b695663ac8c0d4aa31c62ce23803c6d4b713801b254bc676440152a06⟩, ⟨0x32d18e0c346062e41698ad054a29914709fc4b424811f08bc4302010f5072c3741ab0c3054c26c11708003d81ae03f0180080020000, 0x5c693093036d70c74d1a34861dab4f6c4fc8d09a92480b125d6b5d247819b154ed9a59db34b3c1e942b6c7a3c29a672487d739f69c3ea9cf43e6d3803f249df3e9da5d002c7819f669aa5800499200ac7a8026ff4002001801000a006c3caa688c68ac690c6⟩, ⟨0x243116085c4141ef0f2874038c1af0cc06042e41670a904cc22a10b07a039819c0c0054825811207a036016409803b016008801e000, 0x4f6da5b0553f8a41a8353c0d404a981a792d2a4f2c7f0218f912704831aa43ceeda681e60d8f03713ec9f21ba1d21fa86da598f29a1e852712628681513e292934984981a05449a49⟩, ⟨0x32718d0bf45e22e41638a8051227c12b88e84602130b70544288135094046c2180ef07003541700a003c81b80a20400158084014000, 0x309c04ade5708ce270067895cef598032a9f334ae2700064fcd693939cc60626e71958b443d620b28c01540b394402901400b184919961f240324fe295c92e29933184901b2094d649c1200e3b2981d288c640100a4f89b1900a538267a1333c0d3cfe9606⟩, ⟨0x33a18c8c085e62c61588a9852627c134895849222c10c87f03861b80d586182ca13808d83e01d60c605182640ec069022009c03a000, 0xf6cad6077b1cd258026d7836da838557827e145cfd5a593512c8a274cc00d7329ace4c0256f27d7e0b5001002b3c26c33058b289eb75ecabece553af455d67006ae938aaeea38b7138003286eb457f74ec8c0c2beba662dc4e000ca11ad2a2bb98c0c53d732b⟩, ⟨0x2ce15e8ac052628013a89604662160f7874836a1a80c185982b813f095045420c0f106e030c15409b04701fc0e805b02100e002e000, 0x2bcd36660067994ce72684c00ced270a5653ed6cd938c9e689ae70938033849e6da9656e270006538d6d1f514c606ab6a095f7a2a41b5537a9aeb1535daa9d13075e806bace24c19bd24e0908cb75e380b9e060c8db4b581a8c7⟩, ⟨0x2db1620ad455429313b096049c23711308604021f00ec86f033e1780b4054426811708283ec1ac0cc05382280da054019808001a000, 0x16c4c7c8938240e364e296c4b4091bac78187df648c1a6286216993e46903619385d9f2bc285795803419e927a8c6b4c5936506b2bb2452959788f0300072a76b6069530001d6d477fcc6c2bfa57d06ae7db00e7b3c9a890c113666⟩, ⟨0x3b11c60dc469833d1910bf85ce2dd1630ab454628412e893848223010988203f61d60e6069c3141770ae04dc22807c02f810804a000, 0xcb09ad00c2e220024b0db3308e018442c030701c2a717d2c0d38a697e005cf034352034b9ae8fa1a4e7926ccd4c699a00193c2661384f96b06ba0609ead5ed600302ca60093007f50707fed5ad6633b383871a109704f8589063032b36a0c1064e2e874787a59079389b9249c01c4e4e18a4acbad⟩, ⟨0x278132896848e23010787b839a1c20d886102da1560a604ac23c10f08183d01ce0d806082a812608003881980aa03a012806c014000, 0x1cd178262145ce77a59b0010b5cd78025ac00e6bad782470d73560020056a9ceb4b39c696060199a7b5b09e525e231a47715ce2a9cbb4b39569672fd2a2287c89382478d31105c344f0cf03151a606⟩, ⟨0x3161860bac5ac2b5144099c4a4244117886840a1fa0f2872834c18b0be05c42ac135088841c1d80e205e82cc12407302c00e4054000, 0x2069d39d7b683a2a6756746de059398003670319ccb48332a6a8652554c89aa7c55578253e9560bf5c1c0e0af541c11ed83e449c1201f5426716706da0101fa20f0300bcd098189ba96b35b030164df5ac00da9a380fdd0b0036b28e692c021ebb554a⟩ ] def tableLRRLLR : Table Block := .leaf #[ ⟨0x2b014d8a184e224c12008ac4382070f9074436018f0c205b428012908903ec1b40b9056027412007f03901840a4048019809001e000, 0x9f954f7caa78e953280b76ac7e4607454f0a6df354e5b2a67bc0ead73dc0096b0039edb5e090321960033d40056a9dcb4b3b8696242658134efd9c0f6776cf4293893e66e534f8a4a4d2612606e85549a490b8549849⟩, ⟨0x34b1a08c7061e2ea1698ab852e28012d88e84121fd0f9075c3781970ba057427011707903881960bb05202340d805502280b802e000, 0x40c000cc07ab7188003302ecee03d2800370cecee02d281a4c700065fcd683cd07dc621004021da4fc8d898037c83dfafb0d97d4001d6d37598791036d8e000cbe5ad06fa01b881b242331e8b180c364db635a84c98365933fc0b76b0345934d8d4a83267d164e7a8cb⟩, ⟨0x2ca15d8ab050e27a13589844a821f104078c3a01ab0ce06342d015b0a6050826a100074836018e0b804982180f206802b80c804a000, 0x3624d249b89c006d5b09e326c0cc2b0010000000021dc43a5986c001d687491002661dd9ec49a4936db000dab613b84d8198560012c20000043b6c34b86692b349849983000ad5d0a5853526b1835dc42004ecd84f3028007ad⟩, ⟨0x33d1970c245ee2ed16f0b1c54c29c13b89483ea1bc0d7067c31c17d0b7052427812f08d04141c00d305702900fe06a0228080022000, 0x69266487cd35a6b23c0d0926854d28014c559e06000663cd6bccd3206c68b400898410816812c2dacf45816a00200567ea1bb53619a4acd26126633002b574296149392ac1c5577230025b361380073166b606000662ad5835ac400198b366005dc7fb33c8f126d⟩, ⟨0x3de1ea0ec46002bf1590a344d025e11c885040e1fa0f7872832e1720b2856828613408783b018e0bd04c022c0d00380158068016000, 0x206876fc23162fa0e56341352d1998e54e9dac98e808d00e818d03a7803e0613cb4004d3b89e65f00075b31abdc7b181a6347b875702e43f7a7a14b0a71343ed02c6a605787d8001d3c0ad0faea584f89a15bd318479940001d68007e81918596652d9c0d0b1be7bab7138007e778bf96fce80158a9335419f224e09⟩, ⟨0x3cf1dc0e4c6dc3571a00c6c5ec2d11638a8852626e13088f84162010f506e834617e0b3854027211407882f813607802a8120046000, 0x5065a52a5ee6ed9c456000e9e656d34453a6000615ad3c2b733f6b665200074f034ca7332eace238007331eadc4e001f7e62e6607bec002d540d448697378058f6661c0ee6380df338eb40dd63dfbccd030d8f3368089ad47ee7970ee830d153e769c00fef7c4fbe85c389f848b8712e270006666d6c3bbe1591⟩, ⟨0x2d51630abc54827f137896849624011588183d61e10e6070833a17a0aa852c24c10307903841a80af052024c10c06102b80c804a000, 0x16a9964764e0900ae679d5c163115a9f224e0906854cd40f906b410e653c0c148a981a69600075a001f8d6466999a63670300033496b4019818c8c99a4a0d2e299a34007d5e098735b09c0039a275b030003343eadc62000cd13b3⟩, ⟨0x46121f106c7d63c81d38c105ee2d81598a70518275135091444820f10007ac38c1b10c6050825610e07682c011a06a02f80f002e000, 0x1f42fa26255c7f49c3fc495c5f48c3fcbbe7d8700e9bbb3be3023100025593abaf5d3ab52e692467b58149a7c335071454797289d0d381dcc9e0c6dfb59382406e873b56137ebf6707954f6a6eb854cd645626b41a54f3580055adea6a44c05eaa200ee1e93764d7a0dc9eb1fd42ce02b7a9f525eb187ea400130e003c7161e1300071c5879a998e0d68190c9⟩, ⟨0x2f416c8b1c54c29814389d84ce24211a88a041a1f20e687003361910b6056c26c12508b042c1e00cf05e82cc13007302900b4036000, 0x858060f0f837a5000d9f086c334959a4c24cdba0056ae852c290450216019fc2eef22bb372c27000e6d6d6c0c000cda9abc13895cd24fece2ccf9127048066b09133addb69788f0300663099b24001d6800d6c5c412d9b2f672d8349e5907⟩, ⟨0x3af1a90b9c5ba2b81488a004de26011d88b84422060f587183721940c505942a812f08a04141f40df05f0268120075035811804a000, 0x4bc669b9a7200127d4a6ce9e5e234d8d3800055a14fa54d8d3c0d380c929ad10b270664f86692b3498499bf000ad5d0a5852089242c032385de18583ee584e001cdebad8180019bcf57a2712c0600cd98223907c893824031984d8008bdb402038bc1e060145613030003373eb4006beae20884dd3b3⟩, ⟨0x6253031770b7a5932b49528a404ff26910bc8183e91e30c8c4e424f10f87e838e1a20be85b82c813f08904201c60be0458198066000, 0x1b977c51f7bef2dc947de7c128fbcb81ee1a3ef3debb868fbc767d1f6a6f0d9d476d5823b3b6a411366d9c59c5dd23ec77d23ed76f1b4f5c1589f563559cd3d642b3389ad2d67b175a4ad1e2d89b76da3e877c23e976e1b4b5c057701659544d3b134edac7ceef7c7d0edbb3ccda52e00bb78b2aaa1e9c61353fc38c1461153ec394232fde9cb0128425fad380032fa69c9c3913757491e066836572d5800ccece8d9e06000670ad6b4112b76c65e997ae5eed3cbbb2f769e5e397725edd38007300b34da7⟩, ⟨0x5c42d99640afc5742b2956ca6c51527f139c96e47a2320db44d025c11d88703ee1d20d785fc29e10e074831016208c033811804a000, 0x1934801e9d98d2f91e06549303000339f6b7e58006e3561696abcd2800975186ac3aea0002ba7c34e1f29f861d5c6c99914ae056a645f000956927207ff776240878417916dad8bb1c2f4e3ab0d9132215bead448bc000aad04e38ffceebc80ef07af20b9036d4c5d0e15a78467f182cb4801fdf479cc87edd6ce62ac06b61390dec3c2621370ddc3808d37fa2bc3c882011137cd1569e460918b5201548bda7ee9132c748cdab9636470d5d8c18dda4c6ac5ed25864ea9ac⟩, ⟨0x28a13e89b04c225411788304041df0e5069c32817c0b5857829a142098849822e0f206f82e816009d04301e40d00380158068016000, 0x24cd0c6984ce279d80001d68042a1191818023506c5830a9c025504c5f2487c6e2871a34e99b24d3826e0d7098c23cea2000eb4344880073a9ece060c517566695c4e3c6ba79003401d8ad334619f224e09⟩, ⟨0x27f12d094047222c10c88043e81e30ea07243701a50c806182ee16d0a404dc2240fb072035418c0a104a02140f606e01c808801e000, 0x913c46ce068c6d96e270e516ec3d15c668d33e449c1234699211a27067819624c0c000cee9ad1c3880033bb6ceaf9d2d5efa5d8934926b01001b56c278c9b0330ac000f50000018757de973c449e49⟩, ⟨0x28b13a09884b024911f88684061ec0ef86e832e18d0b5054c28413308f04241f80d706202e814609204281d00d205202380e0026000, 0x581acd2f11e065093034f3e000eb678768d639a5713cf36000eb71f8003c8c0d8fe000e2eb83d2c19a572483229d48956e279e44001d6b3e9181a91d658d1a70cd7269c122a6b2e1318479e18001d687c91⟩ ] def tableLRRLL : Table Block := .branch 14 tableLRRLLL tableLRRLLR def tableLRRLRL : Table Block := .leaf #[ ⟨0x2ae14489e84da23d113087040a1d50e006ac3301830ba85902ae14609d846021a10006d82e015c08b03f019c09203c0158070022000, 0x12d99f2366611d8572d6000800f1559069606ac6f4be58c90e4730f206a90a35487a873e255f50c3269b33541a70480272338b84ce279ec0001d6e4440c79181b226061c5b89c0df6593bc35958668b33e449c123069⟩, ⟨0x2ce1618ab8546296138893848822110707ac3b81b70d205fc2ea1620a584a822a0f406782f015a0a204881b80b204f01f00d001e000, 0x304c47aae13389e7e000075a00897a64606004cbcb161f21c0352f0c598479f64001d687091000e7dbd9c0c1aa2eb30d2800c23da610acc003c2f6738527d0d6a2287c89382478d200b9706344f0cf03151a60600067c6d69a51⟩, ⟨0x28f14109b44a424511a08944342090fa07883b01c90df866830e1700b3050424011307703341860a004481d00b20440178078022000, 0x389c1bd56b5c6aab0cd1667c89382460d3420ad2f11e065093034fee000eb7ea48d6a1a581a7f300075bc6e03d71713cfe0000eb78d000ee303643c0038baec34b2d8a7864ad4ea4ea9993548c9a6ccd5069⟩, ⟨0x29114209cc4c825912408bc43421010087dc3a41b90ca05f42cc15c09b84781f20e406782f014e09904501f40dc06302000b4046000, 0x1c668d33e449c123469b8087689c19e06589303000340d6b406c9e2000d039b3ade74b5bbe9606a050001d680d63c4052a05b67206a90a3548748732255f50c71260cde92704801b2558ba050f03649c0638b⟩, ⟨0x3121778b3056c2050f7077839c1bb0d606803221800bb057c29413709204302040dd06502ec15c09f04a01f40d406002380e8042000, 0x351fa56c580072eb89cb76199846269f1a60adc757b888bf944e5127b8199e65db4e075327eb1b2b1ab7449849c46ac93026781bba06583029e1e45ea087b65e8781a83100075beca44e24c19bd24e090dad9760a1e0668c175b89c06fdd61d7c1eea⟩, ⟨0x43a218102c7f83d71e40eec7523921bd8dc46b433918b0bcc5a02ad145099c4882210ff076439e1aa0c3858820a08c02e0118046000, 0x2060006863d69c510012865d99a477159509564be96c98d2c0d649e94fd6522cff5ecee61fde50fbc3fb8fdcb8987cfb930fe7ef40627efdf71c4c3ec00b87000d0c70f433a19634001963b4f03509a000eb4003a98c8a85d427ecdee5946e51c628dc7e5d9b4ecc63dc928d334c463b8fac514a37a7000e4e72f187d2c61b4c3940c4ea432e78b⟩, ⟨0x2a41468a0c4d826112a08bc4342100fe87b83921ba0ca862c2fc1670a804ac2100e3066029c12c07f03601740a4041018006c022000, 0xb2f34b035981a584ce27000687fd68d0ac6063fd16611c001a1eb5a6944003a1f3670330aeca4d2d94fa5a1cc001d680074bb910006875d9dd75a5a1bc001d6e89c6ca8d2a2487c8938247cd3966d13d33c0c5669⟩, ⟨0x25412488e842a2060fb879439c1b70d206643101710ab052c27c11908203e81ca0d806182dc15409703e01940a804501b00a402e000, 0x84d89268a201035a611cf25e2895669696cd4d28e08bc13c26bb32b4a0eaca9e13389c001a2575ae70b1819dd956c2713455c23389c3945b1802aab2f74a30677096691dc565425596ba5⟩, ⟨0x22f10c080c3e81df0e506cc3381910bd05942b4145097046c21c0ff07883781a20c0058829c12808503a01940b6044019807001a000, 0x4e6ec907054e4a6c6f54dd82a653365c970cbc12da3b2f67157825ad15754b31e5343d0a4e24c50d02a27c52526930930344a8934925e693093034c9acd1b34cb94cf6c4f066⟩, ⟨0x2eb16d0b2457429514409ec4c824d114086c3ec1ec0e386e832a1700a904ec24810d07b03ac1a80bd04f82200e204c01e809802e000, 0x619a4acd261268e1002b5742961489d4cb03a59787880ffb9613800746d6b60600068d8d5b0c4062a36b6603c43e1b3ab7b8b1ebcc64cbacc99bd19733932f04f094cbd5c98f9b4f16381e2c7d9b597280d3ccc7fd4c068327953389ec9⟩, ⟨0x2e01678af855a29c14689a04b624e11a88703ee1ea0e286ec32c1890b204fc25c11d08803ac1c00cf061027412606e03080f004a000, 0x91734a39b0cd25669309347f8015aba14b0a4263dd6031cebc43c014dcb09e8f8000f5b03000347b6ad862043d1f1b3003620ed9c99a4a0d2e29a3bc007d5e098735b09e8eb000f5b030003474eadc62000d1d7b3b53b4a03ae1a1b3⟩, ⟨0x3001798b805a22c615b8a7850c27c134894841a1ff0f887883a61ae0d0864030c1770a104bc21410006d83081560860398138052000, 0x93359087c893824d248ad53b4311a1e06805136a4e9426400400b19803acf043490db126924daec005ead84f266d818f258004e20000030c384380334876b606000690cd6c980bc6d6bd2812f484eb43e43803f483eb4098a41b5b4402050ce7⟩, ⟨0x34218e8bf05d62da1668aa053a27813589184782170f9073436c1910b6051c26011d084038c1a80af04d01d40d605802080d0042000, 0x1a5135b18c01b719334941a5c5349f800fabc135fe800fab613800749deb6060006939d580035fc6c4001a4ef675fb69693500075a000da9fb10006937d9dab3a50fd0f04cada4bc584d69847000692dd68312c4003a4bf670307e8bb5574ae270f117603614ea⟩, ⟨0x36d1a90cec66231a1838bf45d0237115086c41c2010f687803a61c50db86883261860b0853825a10807182f813207402780f002e000, 0xf81aaad8ed2c0d6c5e970143c0ccecab0010029764ba00300400500600700800900a00b00cb3e19ae53719b8cd39e8da66d33450df436add9a3534998001a5435bc5244006db6ce5b7529bad20b294cd6d296409eb48afa52b5a443d293ad0006948d687e91000694ad9dadda5⟩, ⟨0x2e51600ab8548295138092c44c20f10287b83ba1cc0df866831e16a0ae84e025c10907202fc15009b03b01840ae042019809002a000, 0x3dfb9ad2f91e0638934c00003ad0006fd7d880034c16cef9fd2c0d7ce6964cd25069714d2ee003eaf04db8c003ead84e001d2e7ad818001a5c756000db83b10006973d9db7fa571380034b66b652163034832acf23b84b308e0faab⟩ ] def tableLRRLRR : Table Block := .leaf #[ ⟨0x21010087d83ce1cf0e006d435219c0c285d02be15509f04d023a10c07f83a81c00d106382c013008c04101a80a603c0158070022000, 0xcc93824e24c92b443627c4d08ce29beeb4b8267a1333c0d7dde9606bf2b4b4a67f148c199e06c893035f5da598448784681830122afaad2df79a58c33e449c123469⟩, ⟨0x26412c891846822a10988243e41e80e886b02f21660ab851827212408d042c2020ea06902ec16207e033815809203a0168080022000, 0x84d70a24ba4781afc9d2c0d7e5e9606bf5b4a007e023a7003b01000334fd521ff24d299fc523066781b224c0d7dc69681121f005d340c0008023801eaafb4d2e699fc52b925c534663092f269⟩, ⟨0x28113b89804a622e0fd87903ae1b20d4060c2d81590a604d0254117079036c1900b7055026c11c081039017c0a0045019007401c000, 0x1036067a571380038e7eb31cec73c001d56049a5613e396001eba0600071c9d6603da52f10fe2908f487818394480038e16bafeed2da087cd33f8a5724b8a68cc6124ff44e649c121e225e6cd0d89f286⟩, ⟨0x28c135894c49023510807bc3941b30d0063430016f0b1055428c13309104542100f5070033411807d03801940a804201c008402e000, 0x785bb7fc2243c26f0512000d401ad001856b880035016cf04ed2e66877c10fe292834b8a74cc69255644ca1a6852e290c91337a680c1120038012005e321a86c4fa6684d62692e91e06c0b74b03605ba5⟩, ⟨0x2de1648aa852a288131896446822110107743701930b7052c24c10f07d03b41bc0d005f82c814209204401cc0c804f02000d802a000, 0x19d57b740754c69556c27000ea20d6c0c000d43dabf852201f6b54f23698f75b50d0003ad98ea818d8800350c6b4003357c8800350d6cf067d2e0929e8527126086f534f8a4a4d2612606a05549a490a654984981a174026da0c4a9⟩, ⟨0x2f51700b5856228c13e89c849a2280fa87ac38c1bc0cb85c82ca14008d84441d80cb05e82bc14209003f81c00be03a015806801a000, 0x1502a781a664a1075600447c7a7c8938240018f835341e47bdad00040038f7b4f0300051ee6a6060006a38d6c6ff41b6c5c4f51a8003ad99563d5d8c0d32a47a7ab0420f153d50d543590de8693e34ae491834d4520066af424da1ae852e29⟩, ⟨0x3b11c80e106ee3541920c345ec2ec1648ac851a26812e89204462170f907343501970b9053427e11a07a8340156086037812804a000, 0x116000b6984671380067438b9d04e840038ac2cb4b180b1e06023ce7316b6db1e352009f531fc004fa984c0c8a7008aa56d6d23436f209ea640c904f5201bc84fa71e33806f5286b401d8fbb5394347540056a63e8002b52004c7cfa999b23ead5800320f6a6419d349d6016e9c00199d74f20bc831ab⟩, ⟨0x2f416e8b40556278137095c49023e10c88304041dd0e986b832e17e0b2856828212e08d84401f20d605302140ec06b02d00dc014000, 0xc30b4ae270007271d664df9380005aa81b09cd2f247818006c9af58e2781b267000f5d0300039336bb092d2cd4a3a64e65d38264a61d958225f444e091d659731a21ae1e62931921a61e2dc022cf9127048c9a517d3a8c6800c59001d9e06⟩, ⟨0x22b10e08443fc1ed0ea872c3701ae0c485f02ae14009484441fc0f1070034c18c0b7052025411207e03681780920380158084014000, 0x6449c121e22660da11e90f030b089818001aa735ae310006a9ed9e1a7a5c36b4b09250f7721fc525069714c998d248a289309388d82474d37922c84cf4269713c0d85fe9606⟩, ⟨0x31e1878ba85ba2d015f8ab851227c12b893445021b0fb07443741950c4058c29813d09704241f80ed071835814208a02b80d0026000, 0xc24d5860056ae852c299e358e9af2d3002366c27aaf0003d6c0c000d575ab618800d55e6cc001cb3367957e96ab500075ac31002aab7d9e555a5d8934927145001b56c27709b0330ac00445c000008789fe944288519355d3cc3a6a98715d9e6b3a3e87⟩, ⟨0x2da15a8a4050227012f894045621e10887f03ce1c20da864030c1610a704a42080f5072035418c0a104a02140f606e01c8088022000, 0x2bab935b0f48003a7b54d86692b349849ab7800ad5d0a58524caab06455e5d80096cd84e001d5afad818001ab57561f244001ab5f66005e5cbb33c8f126dd89349272c7001b56c278c9b0330ac0066840000087960e970cd25669⟩, ⟨0x4031ec8ee075239e1be8d7065e3251820be85aa2b413d896845a20c0f586f83221700a184581e20cc05a82580ee06202680e802a000, 0x57db0161e8e0115d967c893824006ba6d37eab036d001003ae7b3c0c0055cb6981aafa00075b7dcaf771ae9ae0ae2adbb3d7cd74d9eb96be2ba2cf5f162367b0fb10b3d87587d86d9ec2abdebd6cf7755eb67aebbb9af4b3d76d77d7959d4fca88752000d435a9a8774d27e50d2656835a383ea9fff95a18a1eae6004b5a0d4a7⟩, ⟨0x34c1938c545e02cb15a0a744f826f12108e042e20d0f407443481830b204fc25c12108804141c80d9066029c11007e02e80f803e000, 0x7312d6150a4005d52db40006a95da5993a5b33b4a00b61367f14800801d83d9e06002b05b4c0c000e60daeb2ff4b60f6015f3679d1596b5801b3547ac4c691d68c9a6ccd5069c12b1f3956b84ce27ac2c001d6e89b195181a71162ad6006c5d1ec3d88a5d81b1147⟩, ⟨0x29514309ec4d424911d08b44442130f907a03a21c40cf85b02aa14809184641e80e3069030c13c09104201c40c004d01e00bc014000, 0x19927048e1a401ec5ad0d89e4cd09b924800d85d9e06b3974ae270007326d6664b9930003aab3834ac27cc88014d740c0096641acd334961a4c24e638005eb2852e290d11936720c9191278613e628001eba06⟩, ⟨0x2d31620ae852a28813f096449e22a10987f83d21de0e486a830015f09f04bc24810307002cc152088033815809203a0168080022000, 0x5247818006cd4758e27818003cd3b5d036696000ebace1d2d31aa62a1538261e1593067151e5ecc09c3474bef71b3a61591d9f224e09001b26b4f35c9998d0014bdb1eb3c0c97764569b21010b3e699fc52b925c534663092fe69⟩ ] def tableLRRLR : Table Block := .branch 15 tableLRRLRL tableLRRLRR def tableLRRL : Table Block := .branch 29 tableLRRLL tableLRRLR def tableLRRRLL : Table Block := .leaf #[ ⟨0x24e11b88a843a2120fd877438c1ae0cd86382fa1700b18550282132093046c2140fb07303541900be053827410c07902a008402e000, 0xc4a63d0a585389a29464938a058e4a2326124a1eee43f8a4a0d2e299331a4914512612711b048e9a6f2459099e84d2e2781acf3d2c0d679695c4e000e6afaccd57356000b550359d7a5⟩, ⟨0x2fa16c8b3057e2b4149899848a23711308544101e30ec07143701930c485902a612e08b84201fa0e6061829413608402f80f002e000, 0xeade6cf429614e26b6f036b481adba000d9c0d2dced3543499a4a0d2e29ae64007d5e0934916c27ae54003d6c0c000d727abc1389f439be6cc45563e449c12069b27a26007c68107418f03019ec90006b88d68007a1d910006b8ad9da63a5⟩, ⟨0x2a314c8a084e626612a092847a21810707dc3cc1d50e306843281870bb057429813309304041ee0d205882300ea05001c808802e000, 0x40d696e96e23f8a4b847819c52009e757ae81ad3ed2e99a4b0d261273a5002f594297148d1b02a51e4306c55927c309c003ce775d0300039cdeb0040e35e4000d63fb4b4bb4a026d63bb48d0192fe2b2704be92cc⟩, ⟨0x33a1970c885fa2da15a8a404da24811288003d21c80d385e82b214c09e84c024611407983901b20b805001cc0d004701b008402e000, 0x291b118001af8b5b721e2c646be06c6b5b5ef8003ad001ee0b22000d7bbad000fbdf22000d7bfb3c17f4a51b57567bbdbbfb3dde5df5ddd9ee90032cfe295c92e299331849006ba4b4d649c12003743693a6288b99001002b3e26b9d002b4e899c4eccf035a57a5⟩, ⟨0x3061708b485822b414f8a5450c27c13288c844e21d0fc078437c1af0d005ec29614108e043c1d80bc059026c11408002e8060018000, 0xac20f4ff92694cfe2918333c0d912606c1e34a000e0f400169f1340c000e0efa9c1d34bb94005e1ed24c249bbc8008d48007720007c3c0d837800ba971380078cb8bdbff1900058a81aeead2c099e06b96717f1600200400600957767846a46⟩, ⟨0x21f10a88183f81e50e6870c36019d0c8060c2ee1640ac850426011908203bc1c40cd06002cc14009303d81c40bc05402280b802e000, 0x40d512606c2874ba5850f0361287b210f429614c2306489c4d01050fe269c2eb4a498671eb33d9984a4cf466a3316e87f14847543c0c29a26066c55842e97087d2e19da5⟩, ⟨0x26a12d893447422d10e08344061f20f187483861b90cb061c2c81550a504fc26411b07b034c16009904101dc0a803f018007c024000, 0xe24c50d02a27c525269309303629a4d24951a4c24c0dbdc02f634e2481737b58f6c4f89b1330a70b4d280a56186b76d9b6ec4813b6d5878afd92fa23270480f6edd8b85453fe499533f8a4f647⟩, ⟨0x25412508cc4522120ff87c83b41d00de86cc3381850b7055c29013d09604241d60e106502c814c09404401c00cc04e01b808001a000, 0x81b0e9d2c0d880696e543f8a4351a1e06989130361b9a51fe98fe5431fc0963e449c12386903cefdf1a0798463c0dc44324fe2a1f11a9647a46d1028781b01122b0ccd2e1cba594d0f429⟩, ⟨0x26112508ec46021910207983b61c40d906a03221870b8059829e12208583f81de0e206a831815e0a004a81f80cc04801e809802a000, 0x1b7b26b24e0903b192d1468ce04131e136802c92e91e06c4834b036245a581b139d2da484903059f20c63f8a5724b8a64cc612436864d649c12072b26074a22c8104c7c4d84132704cf42667⟩, ⟨0x28513d09a44ae24d11b08b042a20b0fa079c38418f0bc05ac28c13c08b84001da0e006402f8156086037817008a038014807001e000, 0x109ac4d25d23c0d8b6e9606c5b74b0362e7a57138003a446b3487d220001d562c9a5613e908001eba060007482d662bda52ed0fe2908f28781838448003a3debb150d2d5e87e4318fe295c92e299331849⟩, ⟨0x2aa14a8a184e226212c08d44401fd0f2876838e1a20bf856828613008e84401fe0f207283581860b2052826010a07002e807001a000, 0x281552692429952612606c5100271a0c4a9003e2831ff0890f09bc144800365ceb400389bc8800365decf18ed2e66877c10fe292834b8a74cc69255644ca1a6852e290c91337a680c1120038012005e893a86c4fa66⟩, ⟨0x29a14609ec4d425b125089442c2050fc07ac3ac1b50d0064c2dc16409f84b02160e6061827810e07203281580900370150064014000, 0x2686f4349f1a57248c1a6cdf003357a126d0d74297148322ae64c02ee6344ab613800766b6b6060006cd4d5f029100498cb98003668eb4003f12c88003669ecf1a7d2e0929e8527126086f534f8a4a4d2612606⟩, ⟨0x2f71768b2057c29914109ac4a8249119087c4182010f6072435419b0c805fc2b813209404241fa0f0066827410c0730348118062000, 0x40da788007ae818001d3c35d8e2e975e564e4d4c9c138f4b328f44ba689c126d4abad212a70f2a40451f224e091934e357e7d8d00329001d1e069440169308ce27000fcbb17f2df9b8007158e26970143c0c019f94e2c2b54f5ad6c0085927⟩, ⟨0x2b114b09c448223710a07c03ba1d00df86c834a1960c285d82d415f0a704cc23c10d07903a01a20c404f81b00c404b01e00c801a000, 0x18fc2603e58675a001b0404770f03584c23789084401307ab90fe292834b8a64cc6924bcd2612711b048d9a40b0e8449099e04d20180c1e06c7574ae2700074fbd669f3a7d0005aa81b1cfd2f247818006d3d758e27⟩ ] def tableLRRRLR : Table Block := .leaf #[ ⟨0x2ef1650acc544291142097c4a824111a083c40a1e00e786a832617e0b7859029e12a08784141e00e606082700ee06001e8068016000, 0x1d6a46cf487d2c99a4a0d2e29b4fc007d5e0935116c27000ed3bd6c0c000da73abe1388003a916cf3d4d2913a9f224e0906454c0980046b410e253c0c140a9818001b4b35a000c08db10006d2ed9e3e3a5b30d9931360d09161f224e09⟩, ⟨0x2f21728b6058a2b21468a004b625111608643e81cf0dc069c32c1870b1055429013709304041e80cf062828012606e02480c801a000, 0x2852c294ed161d22f573002366c27b578003d6c0c000dab9ab0d122000dabdb3000756cd9e93da5c334959a4c24daa80056ae852c299e358e9af564002366c27000ed4dd6c0c000da97ab618800d6a6ecc001d57767a46694001b51b5ac31⟩, ⟨0x3311860b705a42af1518a584e624311608743f01d50d8069830616c09e04b423c10b07e03b41900bb054027811605602280d004a000, 0x1690a8a7ad000c3400078781a19c005c4c23389c00344fc5d13a898001c56ab3a5308f6bd0003ad000d12b22001daf9b3818003447c5eaa3a5000812218187b54c791d1946ec49a493a5a002dab613d068d81832458004458000010f0cd2566930936b28015ab⟩, ⟨0x28913a09944b024911f089c4202060f787883961ad0d0063c3001750b3050425e12508b03fc1b80d205682580e204e0158070022000, 0x13deab3893066f49382436965d802c781b35965b89c0d765d2ac2995266a833e449c1269260ae01435a6b23c0d092742ed2800a8758781ad8c00075a0643460a5b63b6743686ae1e1aa008c3e449c123269⟩, ⟨0x31d1880bac5a82af14509dc4c8259123088c4282090fc075434a19b0bc05b02be13c08603d41cc0c104f01e40de04c01a8080016000, 0xe310006dc7d9ea91a500675acd9db8000a6b6ce44b6a89c12ca22e8d0008c3e449c123269b9bd21b1a001a31800f0f03518400b8984671380069058ba40d1fc0038ad4df4a611c001b6b75a001a3ee44003b6bf670300068f58bd4bf4b8d2a9a3054e09⟩, ⟨0x3071710b2c5742a914e09dc4d824711d08544161e60e086703121640a784c424611907a03441800af05101f40e406102a00bc04a000, 0xd76f26b6d24d3499a4a0d2e29b77c007d5e09001ad21d5b09c003b76f5b0300036eceaed1b0007620316b85b30c10e008dbabad52a53818e098f24340c000dba1ad0065d3f2326692834b8a6dcb001f578261cd6c27b71c003d6c0c000db8bab⟩, ⟨0x34a1928c005ce2ce1618aa850e27212688d043620c0fe879839a1be0da066c3041780a984e81f20ec06f8318142088031812804a000, 0x178b5e368081daefb4fcf674fafdba704fa7fbb01a514ac3831a9edfc00935a2d6ae7168373e649549207431d76bdd7491e06bdac7580e339e060006df0d6d5d43c4001000ad2f03074f06683300d8b9edea02cb5a0318e70236de8d680cdb9ede602735b6f28141ad⟩, ⟨0x3251800b945b02b41550a3c50a26012488b84121d60df86883301730b0854027e13008583f81e20d605d828010a0780298124048000, 0x46c25ac02f720fe290080fb50781805d884c0db058003accaf34a01e7c1c00184d756000c2680e96ab2b0d2c7400c9e0608ee130d5e1e0da6692c349849d7f800bd650a5c5201c0c30137989006ff0c855de30c27000f5f6d740c000ebe9ac0080ae512⟩, ⟨0x272131895849223a113886041a1fc0f5877039e1c40d986983381850bd85902ae13207f83a01b60b6056021c0e005e02a00bc04a000, 0x1724b8a68cc6124f144e649c123c6979343627b334269134b89e06cb634b0365afa57138003b0feb361ed87c001d565a3a56138007b0deba060007619d66597a52e91e06002f615d740db098013ae⟩, ⟨0x2db15b0a94528285130094c48c22f10a07fc3c81d70d906a030615f09d04542000eb070032c1600a304b022c0e004c018807801a000, 0x3a3b296bb4cd258693093b270017aca14b8a40c166027931207f560c38f186138007b236ba060007644d600405c28900716e46d0029b71f693c2a982654e097e5560627f07a14b0a7134ec2b0909ce8030709cea132821f34cfe29⟩, ⟨0x3561988c886222fc1728b6c5882b714909c44ce24611788383d21c60d186082ba13c08d83e81c60cc060829011a07a02a8100036000, 0x4ba2366611c68d63266ac4a74b03624da5713800373e6b761c00ee3036c8000daf123d2800eb959cd86b9db5a00181461e05302ac6800ef2d9cdfab9cb5aa4fbaf67525d39b3ea8ea9da6cd464d3b0c9c12295232b9b19921921f656004f5c0f6a7d95003cd7007a107⟩, ⟨0x2e315f0ac451826712308844201ff0fa077c37819b0c5057429c12908d03d41d60d806082b813e09404181c00b605102000d8022000, 0x37526ad8620095d4db33156524d9800e0a59cc15ba7f5bac695c34e0912355c4aee8f87001cd3b38c1ac01f15f346d4611ee9500075a614401bba5f67036428bc4f34a88a1f224e091e34cd68d13c33c0c5469818001ba1b5a3a71⟩, ⟨0x2b514f0a504fa26c12d893044e21a10687f03d61c60dc86503141650ac04cc2380f7073035418c0a104a021c0e806101e00bc014000, 0x10093460684419786692b349849baf800ad5d0a5853526b1835ed9c61eee584e001dd6fad818001bad756e310006eb7d9e2b9a530d67ccd9e19a4acd26126ead002b57429614a748b0e517b4998b9b9613dd4c001eb606⟩, ⟨0x2d515f0ad053a28613d899049a23a113887040a1e20e8870033e1950b8055428c13708904141ec0ec06f82a812607202f80c804a000, 0x18c1e9606c63f4a0f032f04de02cbc6174bbaa269a44e09276997225002e1c6ccfb86d001c05b3c0c000dda9adc502623b126924ec380036ad84ee136066158003598000010f616d2800e2b59c364580ae25e2a5a9c4e000dd8bad⟩, ⟨0x37e1ac8ce06463021708b0055e28a134892044e2020f086f03361760aa84c02060f906a02bc13c09103e01c80c2057019008c024000, 0xd00dbcf5800383369bf0b35f7e0c5a6fb802ed37da005691934edd65f66b2faf052d99ef8276cc12cf6b66dd067a6b80073bacfb7299dfae001c0db4edc6606eb0006f5ece5f16dc5acb6d001003b3c0db6f19e7ae33cb6ddd62e19fc5227467818a0d3036dac675eb0c238c1acf64a⟩ ] def tableLRRRL : Table Block := .branch 14 tableLRRRLL tableLRRRLR def tableLRRRRL : Table Block := .leaf #[ ⟨0x3851ad8d1067431517b0b44574299144099c4a022b10907b43a81b30c9061c2cc15109203ac19408503b81a00b404701e00bc014000, 0x1adf1f001a56715a5818001bc875a006f7544001bc8f679a1e97a13a1ad354e6e17e19b481eac701daf19d680c339c083bc5f5b3b28e9e2c094b5f15817daf04816f14dae989520418079e76701fc02c01cf2b380ae78d9f3cc006fff000076cf3431c49ba1ac544c26613edea6816ba06⟩, ⟨0x3061708b0056628e134897c47422b10307e43a81a10cb86002c2157099044c20c0f5073036c1940a904b82340fc05901c00b003e000, 0x1bd135a049b357171380037a0eb46cf852363030d9d0a36ace2380070a26adc4e000c24bab8506124000b55036b05a5d860068f030d8908feaf17801a3c99a28cf9127048d9a761191eda5d23c0c7924001bca75ac83aff71846713801d714b⟩, ⟨0x30016f8ae855629e14609d44bc25411e88a84402010e206d834a1940c485a827412c08b83f01ce0c805d82580ee06d02700a4014000, 0x1dbbb8800b7b3eccd23b8aca84ace734b9e469606cf174b40a1e06077bf296007000d81002987821ba4d31a69c120bf7b52c0035fe014e1e0867ad53c8ed8a706753829ccf4b71380037a5eb774e64a8c0dbaf3152c001bd1f5a09f74d4606⟩, ⟨0x2f71690acc51c27f12d09144402160fb871c36c1a50cc05cc2d01550a4048c2320f407182f815609c04882000be04a02000bc04a000, 0x37c26b400e5ba88c3f7c36ccc2380037c06b4185623915f05b381b9001ea5ce6c02c54dc3c99a4a0d2e29bddc007d5e0935d16c27000ef73d6c0c000dee3abd1388ab5bad6cd1243e449c123e69dc100cb689e99e062b34c0c000decbad⟩, ⟨0x2fe1778b9458c2b714c09e84de25812088c043220e0fb876037219a0bd853828211c07e83cc1a80b5053026c0f805d01980a4014000, 0xc24c0d9c042534d24882cdd4f03f4131e1301f8c9ceff4bae69f81d978242fa65f3be274be75ce29600789d1c00f10a5b87ef5388da9c4e000df23ad0e3cd2a303070e654b0118b28f912704801c5349cc389a9a00401e27a3c0c00b12d2606⟩, ⟨0x2c11510a0c4ec25712188904321fa0f7874035619e0bc85682a013108383f41a60bc051825810e079034016c09403b0188080022000, 0x754d1f4f74ea5d19800e97a4e9aa3699d2d49c13a634ad2e13001d2347bee868ed6b89efb800075ba33a154606d1bd029606399001a3c0c05800f30a567aba5128e73d0a4e24c10dea69f14949a4c24c0d6a6934925269⟩, ⟨0x31817c8b245782ab14e0a4450025d125890446422810187803921aa0c585f82be14b09604842040f706c02cc12806a0258098026000, 0x3a7e97f1734f0037158668b33e449c12306934c7c471a5e23c0ca12606bf60001d69a47e1791cffb4b9df3852737e76a4e19800e68a4e6aa3669ccf49c139ab44d2e13001cc547bf2c660d6846cd14708411733d1c00e69a3df8e3406b623448a089⟩, ⟨0x3511990c445742a114809dc4d824d0fe07a03b01b90d286182e214e0a084701f20ef06602ec15c09d04901cc0d005b01b00b001a000, 0x7c0d1c1c396ad74220039e0009e96b2ea61c0611d33ee69e8374e0913be8696092002b9d2ca004ef567f3946f4c6003a6a93a4e8db140a52c1814e012f94e2dc4f7f98003ad35ffc9b23031afbe498b1834d19a5cd3824046b9a5c26613dfd034ceb606d69a8696e27⟩, ⟨0x21f10908143ec1e50eb072c3781a40ca86282fc1710ad052426812a08984241e40db06702c014c08f04281b80be05302200ac042000, 0x38a68cc6125e4d39927049c499256886c4f89a119c53a1ce9704cf4266781b43ad2c0da28e96f8563f8a40dd06c781ad8264c0da16e94c24e235649c30173c0c1cfcb96b⟩, ⟨0x28b134090c4401fb0f207443841b10d2063c30a1760b6055428012908f83e81d20dc06503001620a704801bc0ca044016807001e000, 0xf1a591c10c001d680064a3910007045d9e5a9a59a90ff92694cfe2918333c0d912606d14f4b42467d1534d03000fa296a654cfe293d91e06a893036893a513ce0173c0c02239aead11b4b9a67f14ae49⟩, ⟨0x3411900bec5d82dd15c0a144f625612508f44542000f4877036e1960c605ac2b414909e045c2180e706d02d415608603080f004a000, 0x17fd16bd208007d3da49849397d8011a9000747e000f4f0368f8002ea6119c4e1a22c09f230034acbcf4ae27c158001d6fec007dc606fd700db5c99a4a0d2e29c13c007d5e09cc30007d5b09f04b000f5b030003824eac001cc1f62000e097b3cc174a000e08bad⟩, ⟨0x31d1868ba058629e14589e04da24a11288604121fc0f8078c3981a70c1053c25411d07f03501940b305302040bc0540188078016000, 0x1058c8dee107adc208b7bd6a345840eb71044bee89c1200e95862c00fd26f4fe295892e29c46714c112c90103336d4e66a003ea4006d248001d3800ba48ea5c4e0079d52c14f390054a81b32ed2b89c001c1af5b29939a6460694d9ccb1746a259344e09⟩, ⟨0x4b924c11ac8944291fe0f3c75c3811aa0b8c58029d14388d845421d10987b83961b60c985b829612608183781760340140070020000, 0x17d978f67bc3bebbc6b3df5df459efaef9ecf7d57cd7cb67be2bebbe8b3dfbdf4d9ef22fdafa2cf7937977cb67003ae7c026e3e00a2f7f290006c3c81a41189000c87b131fbc3000801001dcd807dedd9f91a8cd030003849eb641ce0ac8dcad98003215c3a425847eb40031f9c3a41b846eb40031b7c3a36b845eb40131acc3979a00080040019c58c9b0008002e951a7a46a46a4680c6⟩, ⟨0x4091ee0f487623901b78d086122f41698ab851a28012989244501fb0ec06d43241620a084c824e10607182d815808b0408170072000, 0x239f7e76781873703ad207f77767eefbd8b3f775ebdead9fbbfa5c007be2cfb6b66db4001b39d6fc556bb72ef5acfe29001dc9bd4b3c0db917a569bd7bd0bcab3cb863bb87918c8d70f22c91161e45122b910e1c022f2acf912704800de3da6585233c6800801de2d9e06002bc3b4c0d8538003ad95cc8b72378f77d78177567⟩, ⟨0x49623a915082e3f61e30e6471e36a1a38c9061c2e91620a7c442216105079438419d0bd055426411107802bc11c06102000b801a000, 0x3a6321ad778d7856b742e63ef1cb95c3dcadc359f31b42c001e1c138006f9acf0361ba5f16b643121ac4800645b8990561a06781a75303440cda90012064d3813c9e24f22798005cf398360d000b0f09a91a05fc34f5a001fe761dfcfc3475a00191161d220c33f5a04b904e1ef22eaed3d0175f6b39b8b7d5ddee0ad3dbdde659edaedeaf2ece003bbd69e9418746fd6cfe29⟩ ] def tableLRRRRR : Table Block := .leaf #[ ⟨0x3231880bac5bc2b91578a284f225412188d04522180fb87943b61ca0d286102be1530a2048c1ec0df06402c414e0840318108042000, 0x6e8be474eb7dcb09c003c4075b03000387feaf04e2758dd95b38b33e449c123a6900be70b69788f030c9a70f400075a003cd77100170f6d9d231847001e67b5f330008015ab3b8d2e76da5b0058f0349c1cc38bbeeb8db4df75ceda6e72fb6d371d7d969⟩, ⟨0x2c715c0ab851a27c12d88b841a2000f887943b41c90dd068c3181750b3051426c12b084036c18809104181c80c20520168080026000, 0x184981ba6bb5ada3869ed4e98b78055e9800d9c026f4ad2c27989788d8246cd6d8ab3ddd2e7bfa5cf874ba92c00717ecee12f04800652f8b001bf2c5bb567a7a5391e7ab00074f843619a4acd26127108002b57429614a308b⟩, ⟨0x2c114d0a0c4d825b12508fc44c2090f306d833a1930b8053426c11f07e03c41b40c7053026411407d036017c09c03f01a8088026000, 0x805314ab3d5d2e7aba59534a41a70481ff3ac0196a4e001ce562c4bb9c912ce2bd405cf0303e338d8b92d497313363b2634c64811a5778bc1310e32f794580ddf259e8527127ccdca69f14949a4c24c0d22a24d248a089⟩, ⟨0x286138893845422010287dc3a01b50d1065430c1780b2856028e138097046c2180fb076038817e0ae04581f00e006502b00c4014000, 0x189521239b9634031f01c1e068e87a13d430393d833278d05a0f29a1e852712628681513e292934984981a05449a492e34984981a6ba10ec68d1a421935bc7b627e4684d4924105c51f5a01cc800c9e06⟩, ⟨0x3381948c105da2e31660ac452025d12308944361f60ea872c35418d0b8054c28012308c03dc1ac0b505401ec0e205001a8068016000, 0x3092000eb3dabd6734b036b33a500d2a0e0030996b000484bd67355ae3e96118006cf03108faca6ae1c8006cf0348cc84dae418ee531d481290063494c6d268d63394e092368ffb5fc27c159c0a7e0acfe29001027f80b3c0c04beff6911c960f240441f224e09⟩, ⟨0x3301800bac5b02bb14d094047e22e10987bc3a81b90d6061c2c815a09b84701ee0e406882f815608a03281680920380148070014000, 0xa7869444c18706c54cfb269f02b94c4b935d9d10e886d2653ad23b87a534a49a65d6783cb6cd29838065b079554e16e270007197d6cf142a19181a78e14ec58069307052b192d6e268995d13112243544c2d8085ac00fd69f5782760d73269bc8fe292e91e06⟩, ⟨0x30517b0bac5b42bb1530a7051628112e08f443020b0f607083701a10c905b429c12908f84001d20d806482b811406f02700b4046000, 0x19127048e9a794f0fa689d99e062934c0d8de0003ad003c26a2391637db3713801e0d4be03c140152a06dfc74a611c001c6cf5a00780544003c6d76703001dfb4bdfa74b0a699c9376a9c1e9975a941c034d838a7c395ae18c006cf0344a50df8b⟩, ⟨0x31917d0bc05962ac14389c04be24e12088704221f20f2870036c1910b9053427012308c040c1c00d106102741200710338120026000, 0xbb05260600071e2d6801e935100071e4d9f03da59334941a5c538ed800fabc1201ba052d84e001e3afad818001c75757ce800d44025e6fb671b4a966254e0962155d46802587d893492780d1ccf56c27e6200e9b03001e5f4b000c350000021a2087⟩, ⟨0x2f41738b485662a21498a204ee25612208e84562060f287643981ab0bf059c2b013308903b41c60c205582300fa07202980d0014000, 0xb3303da9c1e76aa6c519f224e091b34bb2dfedb4ba47818f24e3f2000eb40fafe2e308ce27001bf7b5dfb5fa000dab834d2984700071f1d6800df95c4003c7cf6703000df7daf82cd2808ecf47c89382400f64a4f4f0114d00200fb151e06⟩, ⟨0x32418b8bd85aa2b41498a184c225711908143c01bb0ce05f42e41530a104c42480ff07a037c1a40ad05181f80d20440188078026000, 0x714800c285b0026122e400309d6c7aa846bc309c003e8335d030003d056b000400a106e4423e31db41e8f18dda79cf2d49f2be6e93827ca79fa6499a4a0d2e29c844007d5e091b055b09c003c8375b030003905eaea056200ef3e9b3dcd132d22704c728b⟩, ⟨0x3051770b9059a2c014d89a04a224410f88543e01d90e386f433018e0b48510246116074837c17c0b404781e00c605202080c801a000, 0x1c3e69606e1ff4ae270007a2ed6745bd170003aae1d74ac27000fa2ad740c000f451ace1bf4a5d23c0c005f449ae81ba2200275c0047443ac0058a9b3f8a400400e29ecf03001452da606e868001d670c1a5856b3699a4b0d26127a14002f59429⟩, ⟨0x27412388883fa1e80e987203661940c385e82de150093041c1e80e306b031c1740ad04f022c0f8071030013c080033014005c014000, 0x100288ab900718ebed0029c75b693c2a982654e097e55601afb147a14b0a7137d402f4902bf4c00d1c0afd3a4d2087cd33f8a5724b8a68cc6124f144e649c123c6979343627b334269134b89e06⟩, ⟨0x33c1988c405de2d01518a304fe25a11c88bc41c1f70f206fc3541850b204fc25c11d08703a41b80cf05c025c10406102a00bc04a000, 0xc1200720d6b0018f5b3801fd34b0017e88f7b57159a5713800393eeb63f9f92e30347ebf15ae6c66486487e994013d703da9fa6300f35c003131672267a61d7699a4b0d26127a5d002f594297148182cc009891b903fab00c223ef0c27000fa55d740c000f4a7ac⟩, ⟨0x3551a58c986022bc1590a344d824711a088442c1f50ea071436c1910b2056826a12608283601820b7050024c0dc04d0218088022000, 0x1030003951eb648c43e76254f4150e600332b6781b29f00075a00393d710f4f2a1d9d58895d11382402a4dad71d201967b49309276c10027520031ca0116781b8e8001b52611c00648ad60032420076adb7b4b036d71a571380039456b4c1e46ee30349248cdaf14d29669⟩, ⟨0x43920e0ffc7d83cf1e20e9c7043611a00c7c5fc2dd15c0a6c4ec25911e085c3e81d30db068c30c0c7055026c120073027009c03a000, 0x16f5c129006d294d9b26b32d194c26006ce93859995f6b65b4b5acf32732d69a29a5cb4d22d2e5ac006172cf95c1143ad0074593e56c1a36b739d525200e6f27cacc334d6e57935387a3e9a8b3803bdca77593271c4ca52b495b4abcb19c149534aa25552ac38c1b425612b200ac3811bac9f224e090077294a1ff249eb40100f7093c0c016dd29⟩ ] def tableLRRRR : Table Block := .branch 15 tableLRRRRL tableLRRRRR def tableLRRR : Table Block := .branch 29 tableLRRRL tableLRRRR def tableLRR : Table Block := .branch 59 tableLRRL tableLRRR def tableLR : Table Block := .branch 0x76 tableLRL tableLRR def tableL : Table Block := .branch 0xeb tableLL tableLR def tableRLLLLL : Table Block := .leaf #[ ⟨0x3d81d98e386fe3721b08d4068a3381898c245c82c51588a9850e26212188783fe1da0e686a033c17909c03dc1d80cb0530214042000, 0xeb487cdd70f99d68eb0f24f19b58d3426784cc271ef3acbd740c3dd7593ac003e9a93e828d09800fa3a38f6bd61eb800f95a38f39d616b000fada38f5dd5feb984fd5e8e4bae818723eaef594b52d7e4bc9a3fa73bce44f3c7099cd3c26001f08b3e5909caeb6663c76cf612db9a5b92e69747118e970f2b92bd69⟩, ⟨0x3821b80d986b23341950c4c6082e51630a84526280136892842e1f80e986d031416b0a084882060d905d025411006302c80d0014000, 0xb847819c53d778eafac81b481d2dea6f400568e007a751fae91d3f5d74349c896c5136f6b7c624f1da64476ed3801ec3471d8b2f4d6f56f7347ed1d57dc51fc27b6a3f83f6bdca8fe0fc0d1fc477aa3f87ef3dfa8e007c3d1c784eb6758c271e37ad7d740c3c5f5abacf9a00401d1e06⟩, ⟨0x266125890444c20f0fe07bc3c01d20df86c83421920c405dc2d01570a404f823610c074836819e0c405b82800f6058019807001a000, 0x1994153c0cb831aab489d2ca687a149c498a1a0544f8a4a4d2612606c5349a492a34984981a9e400bc69c49004d3c31ed89f13626614e8e5a5000730ad680069d391000730cd9e8e1a5b88fe29⟩, ⟨0x2e81638aa04f626412a88c04221ec0f1070c36019b0c805ec2d01550a204e425411507f039c1a40c504901ec0dc04901a00a802e000, 0x1809b3801f7d4b0017bd808b56981a5308e000e67fad003ee6a200c6683b38180b7b6a5d1a89c8d55e092f055c568b811167e6bc12792f048d5a586974acd2837a9d856000c966016eab4a7d2b89c001cca75b006b181be145e947a5⟩, ⟨0x3181868bf05b62c615e0aac54227c12d88d844e2060ec87083701a10c905b429812708e83e81ae0c104f01b80b0042018808002a000, 0xc123c69eea00bb689e19e062a34c0c000e6bbad001ee4b880099afeccc23800f70dac007b8000ed5a6569606d31f4a611f35300075a003db571549b355d9c0d52476be2c00350cc4d41f0c002a91e1ea38001a9161ea3b86a82e1b54d29869c121c0ab⟩, ⟨0x25011d88b04161fc0f8879039a1be0d606542fc16d0b1054427413008c84301ea0e906e032c160099046019c0ac04c01c808801e000, 0xad559a4b045783753a4bc13a2bd3cb4a792f144ad3cf4ba7ae94ecd782644d7a75e96063b1196c2709099708ce2718358ff02aad38f4ae27000736bd6f99c60688517a6f6951143e449⟩, ⟨0x30c1738b6856a2ab14309e44a822f10507f43b01c10ce05ec2ac14108e04141c80d706482d014c09103e01a40b604801a8080016000, 0xee3d7b8dcb09c003ce8b5b0300039d06ad862002e745b35ec6a20d980039ce6b5862035673db3d46b4b9cc0003ad001d97b8b7c19cd6cc1814e000e729ad718da2f03504a7e334d0c0cca9fa19e955323aa90d9138435ea89a5913832abbc455e09⟩, ⟨0x33f18e0c0c524281138097c4a022b10f08443f41e30df06c43181820ae854025610605e02b814009204081c00c203c0178088022000, 0x1b2b338b40c473ded402801301900c4002fe9032e1e09cd86692b349849cef400ad5d0a5852269b2c0d265f79a049ee584e001e76dad818001ced356c31012f3b6d981196666cef460530008008007879a1ac86ca1b0cd2566930939d48015aba14b0a674d6386b⟩, ⟨0x3351958c485f62e21698b0c5702a113e09944b023f10d07d43841b10d1065c2fc1650a9852426010b079038419004a01c8088016000, 0x1035f59bb40e864d8de3bdb13e563426c605939ee0021adbd858fa66019d73e7b004d6b655b5f774e7eecab4bee69e28cf91270480d1ba686b1da5d23c0c033ee900073cdd6c7ce3c671cd2d36e70535ef007201a00d8005fe171506561e51cde373276f764e09⟩, ⟨0x34e1a20c7c5fc2d91548a384da24a11e88344061e00eb06c426611e08483b81a60c0059829012c08303b01940ac04c01a809801e000, 0x206d00d04cd6800c7cd9c8f7d0075b3e39ff041b0e088e426398412ce005a0161fc52001001d0030f03000a7fd8981bbe5238358001001044c1a77e90238122e857fcc3c1c59a302cd2679425e32584ca687a149c498a1a0544f8a4a4d2612606dc1592692416c649849⟩, ⟨0x5e12ea16bcb185822af94f89a64842058fa87aa3c71d20dd05d22c61528a1047e21e10907c43c41c10cf05ec29612808283540e2000, 0xe270007423d6ccb8b459181a66e5a0c5aa571559eab93df14e83899ccb3ded045d39abf55c2088b579ce3a739bd0433891cc9aae8f793de94e6d3800f50da7a6acd84341620b589c196029a6d87734b89e07ae1ea703dd3986d587b9d06f0e01282fe1fa6fa52d3d27d3569e32e23e34e65e7bb3800f3cda791801b9e2d351240079dad3820c0e62f03ee8dc5b97702c001c3e06703b8b73d60570ee79c0a39230ed480013d7a9a0f63e59bd930ed47000bd7699ef62e56f2c9ec787⟩, ⟨0x48222e911884e4041ea0e9c72c3871be0d7467832a1900c045b82c8153883c28412f09104442000e106682b813408603180f803e000, 0x3c32000759c41e9682506a4d62eb0387ac3d62ab018748ebbc48cb3c499f224e0900322a92a396116d2e11e0600321a93a1b0a2dad90946b2ab24b5c9924db77fa7eab69f20add56cab6c2d2517c3a4c6905a24a56d55a056e15b056ca9f87c78a2c0b4002493669c3044d99abcd3d2690036ce936aa8d6a6d9526d751ad9d1800333dc3a675a13eb400da8a3da4b4b4b⟩, ⟨0x30b1760b685962ac14f89e848e23d113085c41a1e80ec873c3541980c705a42be13a08a83f81e20cc061027410c06502c00ac042000, 0x541a1148e891f124d3aa09477138003e276b3c4cf134002d540dc61696923c0c0057891ac348f03000fe22eb8ba47818004f1075d03787e0016b8001f0fb59c5a69584fe1d8007ae818001f0e759c5ae94016f1acfe29001003bc4b3c0c00378769⟩, ⟨0x2ef1728b0054a28013489104422120f7876838a1a20bf857026e11207f83b01c20cc051023c104071032015c0900370140070022000, 0x40c000f8e3ac043e164000e7ebb4e3934a01867e7b4000dfc3136a980597f0c4d62aa44a952003bf6e26fd8002c4deb4003890063c64d678c800beb37544d3489c129c4aca9344c04d1e6e43f8a4a0d2e299331a492d349849c46c123269⟩ ] def tableRLLLLR : Table Block := .leaf #[ ⟨0x2fa1718ae451e27b12e08c841a1da0e586f83581a20ca85c02cc14f0a104742260ee06e833017a09804581f80da05802380c804a000, 0x38e9d2c88a8d1ea8e006a3479a3c79a34768e9478e11d639d1c471e2f74e2387178234e9ee23f8a4b847819c53e42802fac81b8f5d2b09c013f2075d030023e3feb34cd258693093e3d8017aca14b8a468d857eb2183671eae184e001f8e7ae⟩, ⟨0x279132093c46e22c10c881c3fa1e60ee07143761a40c285982b214c0a084881f00d906602f415809f046820c0e806a02980a403e000, 0xc0a968a34482243c26e05125d23c0dc81e9606e4174b037239a591e0528f23c09d1e852c29c4c00e45d264500e0034791203693866fc932a67f149ec8f03544981b8c8d2c8f0060068f0348d00347⟩, ⟨0x26712a091447621e10587b83be1d20e386d83221740a784e024a11808003d81c60c8058826810e074033816009603e0178068016000, 0xa8893093036ca054b43044811b1cbdb13e99a13589a4001d36b5a00ebb3100074dcd9f241a52e10fe2908ec87818354482178aae45f4bc8be962f43f5887f14ae49714c998c248d1aa6b24e09⟩, ⟨0x25612488c843620a0fa87803961bc0d886702fe1640ad051427412708103cc1aa0b7054825811207a036016409803b016008801e000, 0x1857ca8697951d2ef19e334ce7e0a722f53e449c120d8a908f7e96821d4a78183a1530983b43e9e800deb645323b8098e86e0163fd0d29a1e852712628681513e292934984981ac5449a49⟩, ⟨0x25d129890046c2110ff076438c1b30d106543081790b3056c29c12908c04381fa0f0070835418c0b505002240e406301f00bc014000, 0x1030b289818001d4875a1aa4401dd48f67a8a2619448c9a6ccd5069c12caa2e13389f51500075bd27181bdcd6c27949748c611c6cd74246ae57b4bcac694c23ea10000eb4d288007a856ce06⟩, ⟨0x2ca15b8aa053c27d139893845a2080fa87983b61ca0d486503141790b7852825210407a835014e09004301bc0b404b02000b4030000, 0xf748c2478180db0ded7036a7e000eb40070d2e20196a83b34450f9127048f1a70b802eda27867818a8d3030003a99eb40070a2e20026a6bb3308e00384b6b001c24003b57305a581b97fd291029f224e090f512dc8ad08f687⟩, ⟨0x292140897048e23d11608883fa1d80e586d03021770b0053427c12908a03fc1e00e306a03241640a104b82000da05a02380bc04a000, 0x70d203049d7ad13a33c0c506981b55e00075a02bc9cbb171381b0cb9388057000b55037349a50d5133a9a2594e9caa9912549c498337a49c12821b2e04cf03403ccb0fd0fbe22ebc43c69b43c0daa28003ad⟩, ⟨0x2ad1518a084e626412788e84362080ff07843a01c30d9069c31417f0b9053425011e07c83981820ae04b02300ce0500158068016000, 0x103056689dace24cca694554c2aa9e01024a5cc28781bff1e2563269b33541a704839fd4ae13389f57300075a00549f5b18183f493e3561ba1c01493db56fa21d6e9a1e06d5a8001d681ccd10fb356cd9c799f224e09⟩, ⟨0x3561988c345d02c31560a6852026b13088f042e1f60e486dc34818b0b9059c29c13509303d81ce0dc06782e012e06a0298118042000, 0x1f64b580101566240afea2db40007515da73c3a52e91e06056bd8bd740dec482b1ae055fd88d600168bd9c54800745acf53834d889be0c75de82baf0481ddbac07f1ce692c0093e607d629d25e09d15f3d3a5001d1ab5e8cdba000dab9e7d2b89c001d61b5a15ba2b71⟩, ⟨0x31917a0b8857a2b01458a044b823811308703ee1ea0e286e43581870aa04f423010707b039c1840b505402340e405701e00bc014000, 0xbd7b67aebb41bdb105cf5cc27f6bc176d740c0ba7b5bac0080a590794c1a06f6a013ad7309c004f69f5908ce270007da3d67b45ed18003aae87f4a0097b41aed334961a4c24fb38005eb2852e2900da21809b0448036686022bd186138007eca6ba06⟩, ⟨0x3b41cb8b2c5762ac14689c84a623411387f43e61d40dc867831617d0b5057c28812908703cc1b00b405101d40d004d014005c014000, 0xad24b95800432401934964bc004c8c646b225916319b56b22a28014ec3d8635ea6bb7776939b22c26e65c8a3840b9547f1480107d7228f0303cb8f49c688e1222c64243744f50dcb2270487b110c9f816133f9cc26713e8480a73079a00671079ac18037a9d0320f06600d160fedb028dae3833b89e06⟩, ⟨0x2e21688b0856a2aa14c8a3050426b130892847a2180f2873836e1ad0c4059c28c13908604081c20d005f82d012e07402b809c014000, 0x1e4d0d89eccd09a44d2e2781ba40d2c0dd1fe95c4e000fbcfacf79bde7000755d1ce9620163c0c02a7bc5aca2ea2cb396851659fc5200259d45567818b328a6d32a694834e0900eba958006b7d870064f958939ec75bcc549400c9e06⟩, ⟨0x2a814189e44a823310907e43d81cb0dd067c3141750b5054c26812708d043c1e00c60538250106076033816809a03e0158070022000, 0xf624d6c0db110003addb0c0cb8ed8605dae565dcec27094c08b5ca398b3c183cd0aa609553824ff76601ad7347a14b0a7136b502f4902bad000d1c0aeb4a4d2087cd33f8a5724b8a68cc6124f144e649c123c69⟩, ⟨0x31b1830bac5a02b514d0a044cc241113082c3e01d70d9066c2ec16b0a6049c21c0f506e02ec15009904701d40a803f01a8070014000, 0x6bd59959f784ffbef09fea32128bfe4262809d201fd427e2b02275888fcc33e3f8867dfe10c019473fc4c04aeb80c263fc4804b6ba13001deb47d8cc6f3d687d439e9c51d2274ce9c1adbfb5aa487c893824068dd382bb756d15d33c0c073ee92f11e06⟩, ⟨0x3cd1de0eac74038f1b70d3464030917d0b5456828f142899049a22e10687b039e1b00a9852424811a07a83481620900378138042000, 0x1aa694c34e093b35800ca8d9c0064dad600326b2a16aebe34a611f65b00075a00326371000f65dd9c0c00325d6bebc34bbf360d277df742d7bedbeb6b017af93803e11473088001195acee0010daed3c0db270e09ad81b64c00075bfa15cce4769b602cfaffbd569de9d7eb4ef5ef55af78b688006cfbd1bd36b⟩ ] def tableRLLLL : Table Block := .branch 14 tableRLLLLL tableRLLLLR def tableRLLLRL : Table Block := .leaf #[ ⟨0x31d1890c045d82da1680afc53428513c89a84aa23a11188303fe1da0da86ac30c1650a204d425410907202dc15a08c0338108042000, 0x182470d2558ad2e91e0618348003b3f6b64156348c611c1915718212abb14d2f621a5713ecea000eb6383007b6303470400e6ae83a832ce01141967c89382400682ad330846f9ad001003a07b3c0c00340d69d9a0001d6cb451bbec632a332d310119167⟩, ⟨0x30617e0b6457029513a09844622220fe87a838a1bb0d306543081750a8050c26c12508a03bc1c40bd059823810205c022808001e000, 0x206015fe671600352767001fe5f16003537670dd16016fca2a6714611c001da735a19a44022da7b67034082af0cd256693093b4a0015aba14b0a6a4d6306bf9e9fc9dcb09c003da375b030003b45eadc62000ed1bb3ec974afe0da15b38a33e449⟩, ⟨0x35f19d0cb46102f11660ad453c27912a09244482030f106d433c17d0b905441e80e406a830815e09e04882000ea06002a8120046000, 0x3b626adc62000ed8db3f7cf4a000fd57b3f7cb4b3223263cd0113571e6000babc12001c795ab001a6db3800c505ac00627e9c2d5da36962740f2d78240ea26ed76a8118a00080ccfc10005a7acc6c94d78225f6448c9a6ccd5069c125e2ab84ce2700076a6d6802ff3791⟩, ⟨0x30f17d0b5c5902bd1560a1c4ae24d11508743f41ca0e006a43341750a904b424610007b034415809b04501f40b004d01e00bc014000, 0x172aae1d600cc3e449c1232699749daed680061cc007c3c0d0e7002e25c4e001ed4e2fb55da800162a06f82f4a611c001db575a001ed1e44014db5f6703004bb418b818001db3f5a0064b83b19334941a5c53b65000fabc130e6b6138007b636b606⟩, ⟨0x5b32cf9600ac254028f8fac7ae3c31d70e345682a014609dc4c4241110080c3c81c30d7852c26c11107f03640a40420188078016000, 0x741a3740eeb49ee9cfe92fc7bb96b7e2dceb5b79dbcdfac0008008f74c7a001df25b4cda792e3695b5ada36d436adb58daa6d49c148be7dec3c4ba354aa373ad9b6db65ed6001001000db512576d03689b437c46d23695b4eda66d1b678009878df468f746d77b36c559b737742d7d31cff6bfe6fb94c0f5f749e6de6bb5f5fa37e70683a3b6cbc932f727b8c3834a9f6ed00ab5a1d21f6eb005f5a32b346d1e8c7a40008caa001003630de9fa31a01cd66a259544e09⟩, ⟨0x4fa25811648704151f28f0873e3621ab0ccc6202ed1650a9c50827712908bc44a2020ef86e836018b0b4044415a088032810803e000, 0x3fa30669bae9c207b87fe87f2e0cb374d37c0f30f835839698ba80530f174009c6270e0128ba61c01114ac3c61800200c8b8e1f11a27a009c4c5d00138900445cf131438bbe2e285141c5c5022838b713ee28000eb632313ec8c0d19389e62c003178c3ee1e88f6b606dc35112d6d6aab59891aefee34af7d593436cf0fa561ae7ede4cedb2bea5c3f0ff8a0003a9aaf37e31755d6f162eaba773c5801eed49⟩, ⟨0x4bb245919888242a2028f807ac3b11ba0d4c6643111790b34554287132090443c1fb0ec06a030a16209f84801fa0cd05501b4094000, 0x634b1ab8e5c3b01328c69c001882353100e98003881b4f3dcca2fa781a202dcf75a38eff4ea2253387740ea8b4f6df545a7b2970ace0079951f7371fd35b5cd193626baa32cc48caeba989da1d793173789bbe2f001827c5ca3704187946592703f87c0fd77f17b41af4e2e317187c5b3386349199dcab0e32f1995ca70f1aa8d4e2e0d2019fea468b0f17a18b61c6efa71fe94a0afdf87⟩, ⟨0x3d41e18e786fa3581a08c705f22d415e8ab854429314209c44ce24211488403ee1d60d88470220104070832c1500920368120046000, 0x3838eec6000eb400687ee2000eecbb3fa8b4a000eebfad000c57b22000eec3b3fa9b4a692791b424ba498050f0348ca06eeac0761cfb5b6eba2db73e8d0ed39c0f6dd435ac315e94ffe30c2000800521b00cf21bf483a7c46c46000e3d7138eec363b71e989c7861b748028f5bba38003ad91540ced8e35b1cd87⟩, ⟨0x3511980c746142ff1750b2c5782b115009f44a624911508743f41ca0e006a433018e0b5832016e0aa04e823c10807902a00bc04a000, 0x494836b9b512c9227049722ae6f80ca3e449c123269458c5ef1a0066d007a3c0d36402d25c4e0018bb62e2ef17500162a06fafb4b4267818029170c5800200100060020042002800c4c1407e05f0051a7b673519b4cdb4342684dbb40015ad0017767d6c0c000eecbad⟩, ⟨0x3021678ae0556286130895c46421b10307c43ac1bd0d206442fc1730af04f425c12308903c41880ba04c82300d603e01a0074014000, 0x18e1e40fd5755da57138003bd0eb6404000f63034806000eafaacd2f2ba9fca94e4aa141fdbe1d2a1e8e79b512c92270497a2ae2f8032cf9127048c9a6316932da00317200f6781a2e0016d2e27001a47b5d215230015aa06fb2b4bf0a1e06⟩, ⟨0x2eb1700b3c58429d14989b84c223c11288003da1c80da868831e1840b8856428412b08e043c2000f506802ac14207c02b80c801a000, 0x6098735b09c003df075b030003bdfeadc62000ef83b3ebe74a576ff4db3e551320f002babdd517a222c7945e090c5161b0915d5fe97abdd29c498337a49c120044823ab8e10001d3c0d2074719ab00063f1d380071c56ac00190474ec2b⟩, ⟨0x3621a58c9862630017a8b4055a29e1498a084ba22d11188003e81e70e1063c2f01530a4849018e0b905782280f205402180c804a000, 0x23a865c2ac009e9e6e44b6489c1200642ddabd3800230f9127048c9a615a9b135a001d35800f0f0369a400b89846713800335ceae6b89af4001d57ebfa58468001d3c0d0af4d69ab00040022baa12884a63a7d3dd0d030003be5eb478e20166f9bb39334941a5c53be2800fab⟩, ⟨0x3431960c386082ed1718af854e282135896c490235115084c3c01bb0d606842f815709204681ea0eb06302840f806701a0074014000, 0x67a4cd020e931e06054193030003bffeb40e1688097c00ece30163ca635a289855138247da65c0bc5890015a70022415d3e449c12000c825a98f50035d68002001c821a7818002903b53030003bf66b402e8f3b62000c7e1a706d5580020164811aaebdf4bb0a1e06⟩, ⟨0x3131780b7c5a02c515a0a3c4f427012f895446020b0ff076c3561a10c505ec2ac13308704101c20ca05482100da048018808802e000, 0x2a3cf878f33e449c1238699009578d689d19e062834c0c000f035ad55b63fcd8b89c003570c5d606ade002c540de73694c238003c096b400356ac88007c0a6ce06000d59f17e6f694006c92cfc059677ad03298fc048097ad115d8f91270481a8c9⟩ ] def tableRLLLRR : Table Block := .leaf #[ ⟨0x2cd15d0a8851627e12c890847021f10707f43dc1c90de06bc33c18d0b3056426812a08283e01a60bc04b82000d20440188078026000, 0x1ba2ed80a2bb7cd2b89c001e1035b089346068b1075e19a4acd26127839002b57429614d49ac60d70124004f6584e001f065ad818001e0c356e310007832d9f677a50007147d9f6cda503158fc1480bfadd45130ca2704bf08b⟩, ⟨0x2a914f0a144dc26112b092044621210087d039e1c40d786882fa1730a704f422c10507b03ac1b40b5051826411006301f006401a000, 0x182482c5d6129b1d84f09ac86e17804dd6c99a4a0d2e29e168007d5e091ad55b09f856000f5b030003c2a6af04e2011601ef4e2ccf9127048e1a6430008b5a5e23c0c30690007849d68003215ec401ce12f6708ce27⟩, ⟨0x4312080ffc7dc3e11de0ec47403931b70d9067e3321868bd859e2aa14289804762160f185a826e10406f82e812a06202780a802a000, 0x19375719334941a5c53c40000fabc130e6b613f0f8001eb606000787ad5b8c4001e1f367f04e9408d4061e9cd8d3646a51439b134f175c5dda98be62e6d3c5f117769e2f48bde2edd3b5a708dac249090f658355e14a6de9d4dab049236d3d822a6cb9b7a713520d4d3800305769e0b482bf5a25dc22cddae9c33438029c33eb6989530d0a9⟩, ⟨0x3ca1df8e686ea34219c0c4c5dc2c915209c449c21b0fc07203461920c285d02c61570a2047c2240ed065030013a08202f80bc04a000, 0x30480033986a67489cbb5a0008007394e9e06000672cd48003c4f6b67039d0f62e04cdf5a770226f96fc34fc08e0361f5ff9a2f580d3c8170db876a4c8130d987004613fd38d1a70cd72691d33c2306a87005b88fd6b89c001e2375a12f947646060974a3316018b41c22728ac58477632001c3c0c000f10bad⟩, ⟨0x40f1f50f147763961b88cf86322e61688ab853a28c134897c4742150f807843a41ad0d0064430e17a0a284b82120ac02080d001e000, 0x3c626b689eb16f6303514562ceae8f9a3ef53205481947569d449a3db4eccabde15c369f6a6cd5e9002e1c70cfda6d96180070f03716c000eb4001aa8362004f171b3d8934927e50001b56c27709b0330ac00055c0000087f25697b38a8bb4f35d4db68ba361b0aa8005a79ae66da45cf5bc6c3215400074f266002272ed3e449⟩, ⟨0x3a31cb0e146f436d1a40c8c6322f41688ab051225911a08a840a1e00dd86b034217c0ab84902340f5075831814207c02b809001a000, 0x499a18d3099c4fc700003ad4a471c3d8c0d9fa6383ab000ca770e949637fab94f4a4b0f29894eca470fc6c5835ad81b8d600075a943f15bb10022c6dd3e449c12000d8d5a9b1a2cb4d68002001d8d1a7818002b19b53030003c65eb6cabb18b62000da11a70006d04d58003681da15aae5bf4ae27⟩, ⟨0x42620e0fe47b43bb1ce0dc869e30e15f8ad055029d13c094c45c2090f907743701ad0c4058c27c11907a025c11807e02c80d001e000, 0x206d6c16b316006d6d1ed4daaa5da3b5547b3f68ad4d1c00f857c38004001800948c69c0010009816000e917d3e26a4684dc7c28d7ad646b8f7d6800345d69e8d9e3d75b00069b2ad534698057abc12014d1a3abb21ed2bd5d90d642eaec31b0cf5200a585fa70004002b0531440054020d3c268a1928ae3a35a000e7c7a7cf938e6d69e49⟩, ⟨0x48122e10dc8083c31ba0d4465c31f1880bac5762b1146099c48420f0e705fc2b812c077839418009d04481e80da05c028811003e000, 0xd2d3a7a59f923d6e23b49f3451a7c4731dda4f5a27d3e23748163b949e344da7a44d26313a24a4d61ed24c249e701497d48007441496c3c0dd3da929a98c02302d4a52da7ce9f4bc4a574f8d3cbf54b6c66ed0d69da2697e5a25a5b2336d3eb675b789001972355587001171c011aa9c3c0dc870003add7616db236e68c79264cd0c6984ce27e418001d6db4b5d51⟩, ⟨0x5f82f395b8a3e4c225a128c92446d21d10547e03e51ec0ecc71c3841af8ce862a2f016588a02ee15209683e81aa0be04c81d009e000, 0x80735994951daee961dfc4024d9294a869e99b000ac93b63b850d3f09f6495334000db1bc03e9fa86b534a51a78578f974f1ef70ad1f269c0018f7f4f1f0efb7ab84ce270007937d6ca0dbebec606a5ef7d5d580031eee9e4a8e4cb5b4bbd2dfa9a5ba976d4c3b165b251f49c255f87de0117e85f9d6b1c073a7875ecb5a44128ea4dd2aec3eb007bf3efcdb58a038d3c0570196a6031b5af4f016c0616b569e02500074f013e9aca9b2e353659d971a9b2decb2d4c05f0e7520f49758f1a7⟩, ⟨0x81a4011fccf9c7a93c21de8eaa7303859b6cda26ac3449990c7e58e2b49518a424ee26592a087a38c1668aa83660ae04c0208066000, 0x203d714c23f2c4000eb4001f9036306c72c9b381a0d6f8f756000c30fa7834e0d4d58005d4de96c3c0dcacd63fad000f8030fcabbc03ad7a4aadad3dfedb13605db13db13100b944df3bac403580ffc31e9e921a48f534c8a65627ab553374e01c7568a6669c0b14c4c3e2a715789c69dbb265b5d41bfa572787eb4eb7862c77f5a62b8d3000cdd8dfd0ea06c3d0fcb2d9a75bbf162bfa9314c6940056ec2fe774fe936d8761f865af4e06397761f160bfa131201871a3000800387cd2aa4b29d3d6eba1f665a6934d86efe5d3e2bf7f3a6220306344a8a800200143e4954a592e9e375b0fab2d1499ec357f269ff6386feee19d393fcdbaa87c9399d3d23c000c3dda7⟩, ⟨0x275131094c49023511008444061f80f2874c3921b10d3863c30a16d0a304401fe0f006f834817a0b3052026810407002c0138030000, 0x7fa27324e090f112f36686c4f943426b85125d23c0d01eb8b03407ce2c0d021f8a003e06171c00740c10019c7ea33fe49a533f8a460ccf03644981a034f169447816dc681800080028169ca80cbc5⟩, ⟨0x28413889884b023110f07dc3d01db0e806fc3341730a704d824211508103d41ba0d306002c4132081034815808a038014807001e000, 0x1591261260681e2002b9a1922400440efe7b627f33426d1348003ccd6b4000c0e9e88003cce6ce04df16284cf88c5d21fc5211e10f0306e896c5502438b02438b02778b2821f34cfe295c92e29a331849⟩, ⟨0x24311b089041a1f60f607543801af0d006543001590a204e824a11607d83b01c20ce054825811207a036016409803b016008801e000, 0x38aca84afceb4bf9d69606fce74b49ca7d833e449c120daa9004504279a306678186a553429a705f53cea684c1ba1f9b0005f5b29a1e852712628681513e292934984981b05449a49⟩, ⟨0x2b91550a0c4ec26312c89204262020f887883ae1c60cf86343061740a784a02060eb0708324174095042017c0aa046017807801e000, 0x1492609a0012e5b09e0346c0c3c6b0085fc0000061f71a630cf9127048d1a60940007e697c8f031c4900079d4d680018247d100079d6d9c122e2c0d047b8a611f9cd00075a3471000f9cfd9c0c792ff3fd28c19dc259a47⟩, ⟨0x31a17a8b405862b61538a5850a27812989204462160f8879c38419d0bc054c27c12d08e043c1d40df05d02b411007e02c80d001e000, 0x3a0400075b1300077b1613f19b353499a4a0d2e29e7f0007d5e09fdc8038d5b09f9f8000f5b030003cfb6ac001fdb76201973f1b300079f3d6cf8ac64cd25069714f3dc003eaf04feca015ead84e001f3d5ad818001e7a356000fec1b100979ead9ec49⟩ ] def tableRLLLR : Table Block := .branch 14 tableRLLLRL tableRLLLRR def tableRLLL : Table Block := .branch 29 tableRLLLL tableRLLLR def tableRLLRLL : Table Block := .leaf #[ ⟨0x35319e0c846263021788b9057e2b41478a084ba25311708243c81cf0d506142a412d08403e41d80db068030c13c079037812804a000, 0x61b8cb641c14fe43499a4a0d2e29e878007d5e09f67e24dd5b09fa1a000f5b030003d0c6ac001f66b63123f435b306c53f428016eb624588f74f122447911fe9c001862f4f1367421ad3c932668634c267138003d056b626288eb63034f6111c6ac00188e74f11ac46dab⟩, ⟨0x29514309ec4ac24111b88484061ec0ef87383601a60c786082ba13809704241e40dd06702f814e09c04781a80c00490190088016000, 0x1e9270480111506afd054f03453a03beace2383eacb7138c9af90804ca81bf48d2b89fa3600075b1490007b181a291000757fa1e9673d4e71275b1b50564c26613f45601ceb606c3a19606f3270b1b05d64e09⟩, ⟨0x2d615e8a6051c27512f093c46c22910807bc3ca1ce0dc86502fa158099848022210607983681840b805282000ce042017807001a000, 0x689e2001f4cfb3818067dd7fd9e94e2381ce3adc4e0336eb999a027540dfd6e941fd4e02074afad037d8e03074abad9feba54d6a3487c89382438448ec3bb423aa1e060d113d258003ad018278802fd26ecead44b28893893066⟩, ⟨0x2b51530a444ec25f12408ec42c1fb0f8873034e1820ae851826a12708a040c1f00eb06302b414608a03c81b00b605001f80d004a000, 0x611c18d5710212abf6ed2fed9a57138003d3f6b63a1d88c0d0f98037ab0007a7ad68003775ec4001e9f367ec9e9460d394360e891e33c267138003d386b432b9e30306d63ac68d3a66c934e09d835c26308e000f4cbad⟩, ⟨0x32518c0bcc5d22c414f89e84aa24811188303fa1d80d9863830815f0a804ac23810f06e03141760a404b81c80ae04d014006c018000, 0xc27000faa3d6c0c000f543ab0007fb5d88009d51ecc001ea7b5ac31a083aa0d9ff61a5308e000f533ad000681cd8802dd4dece060052819d59e47000e817d59847615d0280008007aafe034b037ef7a57138003d45eb6540988c0d100000fab613ca4ba46⟩, ⟨0x31417f8bd45bc2c915d0a9453428510c08243f21ea0ef07443861b10d185f82c2157099042c1cc0c104e02100e606202a80c004a000, 0xb7558c0d059b2c1ad536a9aca953826df1560080401808064b80280c0381127c14d998dfa9a91a4cd84354e0db437566000eb43aa9663030003d586b4001c1abe88003d576b4001901362000f561b382ebc59334941a5c53d53800fabc13fdd0015ab⟩, ⟨0x3801b40d7868c32117e0b9459c2b71538a4050a2600d086503021710ad053427c12f08503f41dc0e406a82800f606e02480c804a000, 0x83ffc581a107714001eb875a0a453a7b1c971936f1b240d464d66355a6c9c1202bc4a3ab00a00210088001007c01e008f17409e0020c63715f00774fa660cd13118d0c93278cdb126924ffea004ead84ef93606349600264800000c30007acad6b0c4039eb3367ff6695c4e000f58bad⟩, ⟨0x22d10c082c3fe1ec0ef871c37a1aa0cd860c2d61530a004bc24411308303e41d40cf06002d413408503b01900b203e0160088014000, 0x142467a3362317487f14847843c0c1ba25b154213e2c213e2c224e2ca087cd33f8a5724b8a68cc61240f8d84e649c1201c5425e6cd0d89f0f0684d8500c24ba4781a0fef1606⟩, ⟨0x28a13789944a024511908343f41ed0ef074037a1b00cf864030c1730b2054428413808883f81ae0c805d02bc13c07902900b402a000, 0x10ea53c0c1d0a984c1ba1fb1f005f5b29a1e852712628681513e292934984981b45449a491611261260684c0002b9a1a224004425ee7b6278a1a13789a4001ec275a000612c744001ec2f6708838b58667⟩, ⟨0x2cd1618ac053e292134094046222210b88203c61b90d7864030c16e0af84e82360f6076033416a0a404781e80d605602380f004e000, 0x1035488b1d33b0ac00c7f0174a84cfc58de0228f9127049c49a8b4479d68018d400e8f034680054981a133714c238003d99eb400c71a88007d9aece060031ba9709578bc6679d233e34a9f053117a9f224e0906c54801f84ebcd⟩, ⟨0x3061770b845782a514d8a104e626212988b844221410087b838e1ba0ca862c2cc15909a043c2040dd05c02b811206a02280e0026000, 0x214df15c4e000f6c5adb4cda3035962cbc334959a4c24f6b60056ae852c294e5161c22e1b58495ecb09c003ed535b030003da96ad862008f6a9b3123b46ad9b89c001ed375a23cc43bb181848b886f560063951c46f886756e270007b46d6d0c91⟩, ⟨0x2ac14f8a304f2252122888042c1f10f206fc3341820ba854027e135092045420c0f707303441720af04b82200c60540178094030000, 0x614a6a8b0d1170db000476584e001f6ffad818001edf756c310037b7fd980038feece158f15c4e000f6efade838c0dec6b3c8ee12cc238e1ac6ccd50a638b0342a2e298470007b6ad69a51000fb6cd9c0cc2b851dc5⟩, ⟨0x30a1758b0455428b13a096c47822810b880c3d81dc0e286b832c18a0be05c02c815809984381d20c404f81e80c605202080c801a000, 0x26a06fa386b9a61ba8e07631c30ce0a594e0c7abde3380199949987461f33cb0a3019ec9a2c6a139922a631ca7291e91ba86c46c46c460007b90d6800353a6c4015ee4b67dc68083adee3005ad68003dc5eb6ca568e19a4acd26127b86002b57429⟩, ⟨0x2ba1548a70516280133897049e22a10287ec3ac1bd0cc05fc2e013d09604842240fa075834818a0ae04802180dc06101e008c032000, 0x64d3666a834e090bba75c267138003ddeeb40b5aabf63030169556eac06d9ce001d557ab01be739a4b0012aa802f354706bc13892e16b714e2381c0badc4e06432ff4704ca81a168715c4e000f751ada04278c0d3e80eb⟩ ] def tableRLLRLR : Table Block := .leaf #[ ⟨0x2e916f8b2054627e12c890845621410207b43c41cb0da06943341850b6053828812d08303ec1c80bf04d02140dc06002480c8032000, 0x10301eec90007be2d6800356a6c407cef9367e77b277786481d0c9d4c6d39d9382757465cd5ac7c8938241ad52df4ced0321431e068c9d93af60f9fa9f1301f6c7ef3407cd6f798043eb66795207532748633a593a0c3270069d77e20eb⟩, ⟨0x34e1a20c7c5f42eb1700b3c554277136892047822f105075c37e1a80cf05e428812b08903e41dc0d505e022c0e806502d010c03c000, 0x206022aaedd5d5d200469f224e091934d5e35746b4001ab90003d3c0d571000ba9846713800356eeaeadcab84001d5432fe2e502c781807aab635624c2e835a4747a7a974d6d7ba6bab1d3826b6fdd64150e78c50561c2e7388fac7c8938240fb64d5b20416b4083f0c7⟩, ⟨0x2d115c0a8c51c270130091c46822710e08343d01d70e306e43281890b8058c27c13408783e81a60c2058829811a07c02b812804a000, 0x107eae9c2b54d57aa40e44ec7f0c6abad7493487613c26e54de0d002bad9334941a5c53e0b000fabc120d60eb613f824001eb6060007c10d5de0ac404ac3f9e9d29a524d38244e45d63e670046af2d5b89c001f01b5a03bd5dfb1⟩, ⟨0x529285137498c4ab25092087a23ac1c38dc05622a614d0a384d224410f87e83aa1b00c583301740a904801fc0d005702180c8032000, 0x61bd2d0dbdd4006d5fba6971c0183c0c7221952c005001959e56fb2dacb143deafaf2f30614186b26f4f5f5cf3da70006793d4cf1da60004002b25c181cbbd59a56eabe70f6b2c1cb58182000f4f89a11b118001f0db5a7b35d03b10007c34d6cf4a7b2ec40019e274f3c3f863ad07729d7d382fe0bc02f20ac02ee00082ea0bd65961e7e5c995b02eda7a6c1be9cc03d0e9ea736d02c7e373553a36d399a71dcfed08e9⟩, ⟨0x5692a314849fc4ce25591ec8ac4231f98bf05ca2cf139081c3f81df0dd065c1e80e706b031c1780ab04501e00dc05f01d006401a000, 0x1d3e627c6300075bb4fdbce474e5a27d4c61f523aa8c3ea53521aa7c3b533f7669da98fbadaa3d3ea57445a8dc3acc6f76f25b97b3a27283bf50fe45f09183be46000c6ae0013468ca7281ba78d3f4dee1c359e3a5886df1825f0200169f490b3c34b00dba303be00001d3c26e280193f8a81c56b6c2ed7ec3e657979f248e83f2478434bd400c87e527d8003a79334519f224e091b34fbf21fdb4ba47818f248003e246b50dfde6e308ce27⟩, ⟨0x3ea1ec8ed870c3631a00c405da2c61518a644e42510fd07b43b81cd0d5061c2f415509904a020a0e005e826811608002e80e8014000, 0x1e8d3a5ed24e1f4bba48d2561f4bba59c3e9834a587d2fe9474ad87000e97f0e6972235f334ca001c3c0c69d62347300337fecfa3eea0f500003a1bd44e1e8cd06695c92001d1d61dbb9a33c5b89fc7100075adddd18646066fb68bb17e369be5add426a030e008d4161f224e09000ea0313e76dbf634002003d3ee1e06⟩, ⟨0x5372190c7c5fc2dd15e09944a0241119887841a1fc0f687203761ae0ce86302ca15809984a42080f506802ac10c06102480e0022000, 0x34fa0030010004b32ccdab32ecdbbadaeb6348ee62300b8782ff8c025feac00e9da7c0014007002199566d199666d9d6c75ada46730d804c3bd7fd5fed803bfd1800d3f14ede5a78a770ed7c51c3f6b0008008006004d2138670fe4966b14d1436eb59b0cd256693093e4b8015aba14b0a630d6366b894e3c77b2c27f240003d6c0c000f91dab84a278beb4fb30007c8bd68003e0f6c4001f2376710ef8a3867350311d39d7069⟩, ⟨0x7152ec1714aec551296141c9c44d5258122c8f8471226109c7e83ea1e28e806f63561988c305422280d086583161660a084701ee000, 0xd3387b7a8e8ab0e29be51cebc0239afbb18d8745efa5f8002c6bc16eb466220c12e02afaa887fa7fee4ce6231ab05aad14e63e9c400c15353650e0afab005b1e8d3e6b600b69f4cc00a66f1a7002337fd3e449c12000e6fba9cecf37ad68002001e6f5a7818001cde752000f967adcdab3aed880039bde9fcb0cde35b28c572ba7d31353f000f2e6e5fc004d5934fa61ea7c00165cbcbf592e001eac7a7d30b53d00074e5cb9397db258002d58b4f09a1379539b06b7ca8cd8f5b5c6c187a7ae35f37d3b4fc0038012005336cccc3370eb73adad24398ac0361e2bfeb00b7fb3005a7⟩, ⟨0x49b24611f48d845a22110e08404071fe0f8c7963c11ce0e0c6c03531970c245fe2da15388f04322040ef84101c20bc03d8160066000, 0x384b308e306b3d92a004f16068023c5039a75e09980175c00be2c0d425a015ab019173824e0118b713f9a8000eb6845131b630350882626afc113b9237cd3f3439b54af6a40c79603b1bf7a7fafb7eb0e0fca700ffcccd6bb2900c3b26eb9e74956e5a4b9b6733b692733987fbe5f2bbcf1ba7cee67830f6645995a963be0157d64443d3fd63b27876147be0d3d99cc2877bfa7⟩, ⟨0x2d51528a344ea26012908f44502030ef074c35c19b0c805f42bc13f09004542080da06102a813a08e04101cc0cc05701f809c01e000, 0x181b000b1500bf8b00b78a0dea99a192b9536a2a9a1c0014d5d0de00deaf048033436eaf3045e0975d173a40752e74004a58039cf4bc12346b9c80040152a00ff1600ef1584f292f118d23b8ae7154015e2c011e2c016e29e47⟩, ⟨0x2ef16a0b2856a2ab143098c47c22b10e87e03c21d00db867831217a0b285402560ff07883901aa0c0058827010e0640208078026000, 0x21c4a781828153030003e906b4003051c88037e916cec143e90c2c64a86c7032193aae6d44774a369ba41f553fa9bef153dfaa9a2140cfd5818009c8363f10d066a94c0e8a9894d0e6a9ca054c0ec0458b81d00131600381ce2f0487c8b⟩, ⟨0x3e21de8e606ca32414789e04dc24911c089c4301f30f307643881af0c405ec2ac14c09384501de0d005582300ce05202180e0046000, 0x3d44afa35a24e57a1a7128849baf3f4f3433f4b2f6cd6fa715d000300c0068a898001a22a08da2244e0d3d129a681bd3d14ff5b86692b349849f4e400ad5d0a5852466ab07255c5490a4fd96138007e996b6060007d30d5c42911487649d98019df47f4b04edd68019f547f4a84fbd6913a9f224e0906454c15c0458d⟩, ⟨0x43b217106c8143e31eb0ec474e3821ba8d4065630617c8b5055e2a514009a44882210cd063c29c12908203b41ac0b1046019c014000, 0x30a530458f9ae2bdac07ecb09c003f57f5b030003eaeead8620047abfb3b003b27d9fab35f4eb5c4e000faafad9b10003d8c0d3808003abfcb34b37ccdcba900267270ede8f4939f73c116d4e1e8000cee75e8e9e13379bd23e7d8dcce9fd4d739f5a000ce45a99c774d38f69ab4ead43520025699a7e92fa4dd48002eff29f2295d68a25469e06⟩, ⟨0x3451970c9061a2fc1788b885962be1548a7452026b11c08843dc1cb0d4060c2bc13909784281ca0c003f81c40c605202080c801a000, 0x1fac69606fd734a726bc13c92ff55d2b09c4a55708ce270006c05d5d8080128003aafd3f4b5f437eaf1869fc3be31c4f9b3c6389f252c82d5800764769e7179c7353037ade000eb71d39c6f6200a57fda7b0280019b60002d3c90d343619a4acd26127d66002b57429⟩, ⟨0x2cb1530a044b8237114080c3b21cb0d3064c30c1770b5056429813b096048821e10007783801ac0b105001ec0cc057019008c024000, 0x116176a4007b0675360c000da9b05c002d49849b0aec41d5cf700200a8f54358516216af3343d0a4e24f99b94d3e292934984981a05449a492e34984981ac19b0cf5a3469b0c6c17d7c1099f924fb10275eb4c238c1acf64a⟩ ] def tableRLLRL : Table Block := .branch 14 tableRLLRLL tableRLLRLR def tableRLLRRL : Table Block := .leaf #[ ⟨0x65c32918b4c1c5ef29812dc7d43ba1ca8dc06962ee15689784021a40cb85d02ca14208f84201f20e2065829810606002a80c801a000, 0x81aa2818475600708d1f0760fa5cee9d48f525a4ce3e9a30c21a038cfc738df57338d5105a79d77163b8600709f8ae198432757d3bce7085f521a2ebd0ba4be8bf70bbd09d47bd0f8f93d0d70c69fcfbe7af32e1ec3479ef536213cf7a90042c3bd3e496f38800ae1c5853392e9f24a79c272479b74ee1b584e001ce46f38e9dc35b098002b15272279c34ee1a584b62300c2000bcdfa7a330007cdf89e54c038f37627cda037c481b4c9c94cc6cb26c3064ceb0019eafd47ea4c5fa8c0498bc12022f50e2c001b06353266⟩, ⟨0x3931b00d486823301888bc85ce2da15a8a5851826d12708903d61e00e986b83161810af04fc2380fd06982d012a07602b812804a000, 0x537a0008b3da7ea1a4cd2506900366a8f672da52e13389c001f7735b77ad854606c4f6ba975e6cb51ec6578b2b47001138ff358db3c267138003ee9eb4b85b3dc8c0c5c3d9de2c00dbba396e36738bb676e28f6bed95b7a3808c4d49c4a01e9389b0bd2f12e15a5b89c001f71b5b5148c27b1⟩, ⟨0x3d51e50ee474e39d1c28dec6c63591a08cd061a2d715f8ac851628112d08d443c1b309d0498226105079021c0e605e02780e804a000, 0x109ac4d25d23c0d0cc78b034331e2c0d0ccf8ae27000317a399179e2f40001e54328e2b09e2f225c7e740c97162f1730001b603536c16986259d3110d9d2c153403a9cad38c493a5a2193a502a480680114e4e9eeed183d44fd0dee22461f9d191079d145a500069c4d3e45a3032aa67534d22a6395535250c65ab⟩, ⟨0x2b314f0a3c4f426b13088f04522040f6078439c1a90c2057c28e13409084502060f6074836818e0b60548270112074030807001a000, 0x482aa4d248512a4c24c0d7fc8013ad0f912003dfefafd8448784da0a24001f8675a000dfe5b10007e1bd9c348e2d66877c10fe292834b8a74cc69255644ca1a6852e290c91337a680c112001c004800b8b53c86c4fa66⟩, ⟨0x2b71530a0c4f026b123088442e1f20e786a83321880bd855829613809584181f80d7062027c10e07203281580900370150064014000, 0x4b9a4003060c3c26713fc80000eb50c7943b630321912866ac0030bcc3a17d2856ae4cd25069714fc6e003eaf049be8b6138007f19eb6060007e31d5e4291c108001d9c621e2d8929e8527126086f534f8a4a4d2612606⟩, ⟨0x3151740b7857a2b014689744a623b116081c3c81bf0da86482f41630a605042380f9075035418c0b7048020c0e0066029807801a000, 0x356c00f6781ab28016d2e27000e18317861c2f800b15034554e29847f96c001d680070b591000fe5dd9c0c001c2be2e2a67170db64dac0c9c1202ccc47ac83700e30e791c8855bb126924c63f003dcb613f068d8183a458000018000040c60d3466⟩, ⟨0x33b1960c885fa2ca15f8a704d824711107f43cc1d50e206dc3241870b10554260126080837016a0a204782100e205002080d804a000, 0x724781b19c4533578cc000287ae9f1343ce1cf87876c3ca1cd870007e7dd6e32a8a36c6c0eb043532c8e9a4cd25069714fcec003eaf04800d2c76ad84ff390007ad818001f9c3572c40003b100311967a766a259544e095d11757601967c89382464d3357b0cbad⟩, ⟨0x2d41630acc53028b13c09a84ae24411988944242010ee06dc3581870bc051425a11c08884001d00de05c82b010e07b037012c030000, 0x9219f143ad002a7d3307a89c21afc44eec891f34c50d072277cd38d90025abc6c4004d5e09000b1afd59c4b00171ae0007550d4b8a766bc13226b8699c581b1a69f1b56c2700127c4d5c23389c003151c5a2a13e00003aa8689c5⟩, ⟨0x2f51730b5458c2bc14b8a184c225212308ec4582070f6078838e1af0cb85c829a11a08783e81aa0b0050825410c06102b80c804a000, 0x6924b8d2612606ccbb1dad68d1a71d8ccb35ed89f91a135249bc63eb9d687302a781810a455435ce2c35ce2de5763ae9e782c7274f3c080038e469e1303129c001fabb5b8e34fcfb1309388d59271c000074f0363838e16ad84e0096381ab⟩, ⟨0x3151818ba056a29813a894848a21510587a038619e0c786102de14a08b84341d00da05f826810e07a035817409403d0160074026000, 0x1f5837bfe9070aa91fea94b4f56c112793349930e02993261fc52001013c98b0f0300964c389008ef38d3de6e00469f224e0906254e3df9a1eb4001bcc8003d3c0d798003da9ea19cb1953de5a00b69e5343d0a4e24c50d02a27c52526930930340a89⟩, ⟨0x31917b0b6c5562a014909b44b824b11e085c4141fd0f0070c33818f0b5058027612a08283d01ca0da05f828011c084034811004a000, 0x122000261c093283800643c002c3c26ca1beff04b75b86692b349849fbec00ad5d0a5852044112b0060795c7102451d96138007f7a6b6060007ef2d5e09c5222f2f7671667c89382403fd849fbdbd4d2f11e0600fe613f738003ad003b66a20fafdd3b3⟩, ⟨0x40e1f58f1874237c1b88d3067e31a1870bfc5e42bf1538a3c3d81de0e506943001630a204942100eb06702c4128077036812004a000, 0x302e007c4e4460056ae1cf8743570e78011abc12003439bab6138009ec16ae918c23b0ac001f5f8002d54114e2c112e2841400783fa000e3be0eb800552ff8ab2a48429a7821b84d18001a3434ff8951a3ad9022f94f0346d4be04b32970000d298a40694c5904cae2481e5600c11278160695c0d53d0409ab000f6530ff82bb25ad⟩, ⟨0x30817d0ba45b02c91520a5c51427513008e44582070fe87603961a60c085c0296126074837018a0b6054025410407802980c0046000, 0x921b0cd256693093fa00015aba14b0a4995560c8ab8ea0f357b2c27000ff39d6c0c000fe6fab618803bf9cecfccee13f6634670007f32d6e46000cec7046001004000b0fa6687834c612648688d122822606c8a0010d5800703389933002303189⟩, ⟨0x4c6254926892046d22810b480c3fb1ef0ee46f036d1ab0cc46182dc15b8a104be21e0fc875035e17c0a4849018e0a203e8160066000, 0x29fa526126063aa4a4f1a00cf5299489d4b1f390020149e134ec00ca7f5b0c535a0b5d59439f8003a784c06831c001fd5f5b56404a7b137ac9c46098787fa1e4d3c3fb0f1c3f3a700c2202d3f8956c1ebdf0fc69e1e0f1b34feda79d3abf2d3c97d3f93be59f92da7f2c61dc00074fe72fb61abf10e2861cbc01bf0ab247d3f8530ffea7c6487ff530ff78c7a9c91bc8ed5e485e1f3075a7⟩, ⟨0x3f11ec8ed074e39a1c70da46bc32b1830bb85922ae136894045620c0f6872034a0d805d827812208203a018c0ac04501b00b001e000, 0x112c38b3908011a7a14b0a61180019c775389a71b0008001d3ce34000ea6253716adcab7b53a9d5c2529409a41a3aba34e00d4b270a8ff76d6e98d3549003a5a8e34a7ee7ad3ac42770eb924e1d3d5503be216c25b25674be2183043ab0e2315f7905a7ca01593d060949e8527126086f534f8a4a4d2612606a0005949a49⟩ ] def tableRLLRRR : Table Block := .leaf #[ ⟨0x2e716e8ae855a2a214a09bc49822710b08143f01d30e406d43501830bc855028611c08203c41c40d7062027c114080037812804a000, 0x40c01393062d84f09b286fe7c001d680064b7910037fa1d9c99a4a0d2e29fe64007d5e0934d16c27fe54003d6c0c000ff27abd13880018ef9d38d05c54450f912704862899f54007d689e19e061d348003fc3eb40019f4362000ff13b3⟩, ⟨0x30317c8b505942a313f096444c20e0f4877c3741a70ca06242e81630aa052427011307f03d01c60d905a0244108061018809c01e000, 0x40c0014e1da981a3d7a796e6000338369c001a02756000d011384eaa26ff1680200074f0350074026aed044bea89c1274cab8f33e449c1238699fed26ed689d19e062834c0dfd60003ad60ac9a322e27000c99b17261932800b15034699e2e247⟩, ⟨0x32318b0c1c5f42ed16f0b3457c2b315109f44dc26212b89204462160f786e43421940b6858c27811707802f416608c0328100066000, 0x78a5724b8a68cc6125f4d39927048d1a40609fbb50d89f91a1352490162760d3b89c000c7c2e647c18f8400079513f38ac274f471efb9d0327a18f79cc0006799d3a79a8f75ce00066e8000f4f03279e8f6fce4f3b1edb98002ce25a7f148002001ce21a7⟩, ⟨0x5fe2c293f89ba4bc24d91d88a242c2038f8877a3981b98d3867a2a8102855027e12a08f83e81ca0c005281f80d605802680a0022000, 0x1522a2c36a5f3576ddf35b4385edf4ea90af6db5279a9b6e79aba1bd15f1a869efc8032d37f016d690b5bf7b4fb33207eafd98f60357ecc6371abc6dfd97d5e3711ffeafe5f903b57f2f7a01abf6662efd5c53c000e9eadcca89af51450ed2da14c685b67798fe630fc3a7da57428da4f04edb36341c1360a9f31bcc5a6334f7eeed29a13ed25826ed991a06099054798be625317a7e3354e5baa704806341c6aed99533df803da700fde0e9ef23ecf3b9644d7689c1200a4f75acd6418f9a67⟩, ⟨0x69033c1944c5c5fe2ed9714a284ef26c92d091e46a223909080233414f89e04a621d0ee071820e0f6073831012807102600bc04a000, 0x8595c58046467b9b13a89fe1e26d13989f61e260001c3c4c30dd0ded79208c504896b932e88bbee1c1bb828cc46d5a7000638fd4f7eb0cefcc71fa98e39df8d4c73aefc6b3c29e13c6784bc278cf08f7d718ef73a10e9441bb06f073cedc406adbab6ed9b336dba30b6e5a76db20346dd74606dd33656db5b6f6dc1b71d3c30541d7c783abee8d3a0e959ef0c0f8e000d9ed5ad41d1a7f4de1b06983520d5835b6e7dabf067f383cdfc1a36add10a0d7d3c29a6724def66438798d5ef264187000cc6f0e98ee4a9abf440193c0c99be4a3ab⟩, ⟨0x24811e08c44401f00ec070035a1a00c405c02b014509c04a423610807d83a81b60d106002c414009104381900aa032011806001a000, 0xa46c12306b000c7240058a85c5c585c1c50e90ee2b10708a85bdc585b5c594d0f429389314340a89f14949a4c24c0d8a693492546930930346ae3678d38931b18d4e3db13e26c4cc29⟩, ⟨0x31b17c0ab853028713b099c480233113084c4001d90e606943361740b184f825611c08883f81b60c605e02ac14207a02b80c0046000, 0x47b00478bf030f20002ea600d61e39b86c334959a4c24c05e0015cba14b0a51b458748b90dc4767b2c270007015f9b03000180abcbd138a3a7cb76cd1343e449c12182263ac00ec689f19e062c34c0c0006024f340031d0c880078097d3613801239b8b⟩, ⟨0x59f2be15bca9052528d93e09a24201fe8cf86362f81640a9451e26c0dd86b83461800ac84c821e10006e82e812e0740288118046000, 0x46f7c118b713c0820003cd8fef817230347ffc078b80fc6d1f9a7601f81b820017b8cbb6fb993b1dd3d6e371e4a409a7f3f01770e75f3c3cceda405b810013b8bb3f6edaee60ec61f7c8cce9c0b7191c4c62a32389ec4f983cf587000c797131dec30032327873adde1700051fbdbec002dc419f476bb72967511e2d3d19b1300063778780e046f39b01bc8d5f340031f4c4e0a6017c7cf131f2017627f0202ec5c61230b8b8c200b317824055182c5c7b40578b⟩, ⟨0x6853301950c8a63830297b4baa5862b994908ca3521978c645ec2d10e6062c2d0138097041c1c80c1057028412007f02e0118046000, 0x25e95aba46308ec2b0006f46000b5509d78b09cf8a1f9343acfeee7a000e9fe99371e99e20f648e30fa1a79025a62f5b3773a51b73bd33aeabf5adbfacfaf4e68f9f4fba75d174a2e1e7036c654cedb4c2d5542c59f537f4dfce9cbd4b49191f2bc78dfb69c00321ec4c6c70d1b090ee278ccf8874e7ebbb4bd48c7c1ba4bb4f0aeb7e2f1bb7e8dfae7cba7033ad243b4b8d52ee37a7dcbf748c85f71ad3cc1400787da70007c258781a0478001e6e9d6bb991007ed570e1ea1f4cd6c695a34800638b898dfe1802f1c3c38007c1f87⟩, ⟨0x3821ba8d8069632418b8bc05cc2bf1590a2c4cc24110d08343cc1c10db86482da16009d84581e20d005982300de05201a80a801a000, 0x18524c8ab06355c8d65e9bd96138003817fcd818000c0bde5b0c400e40bfe9de8dceaecc001bcbb4f02e1793735c4e000605b736a23005b630354c000a6ac00185c753a660032170d4c2de005ea6a5b003b5701e64b67ca70f93e5187645270072893e4992caf240225782406c8a56c27⟩, ⟨0x7ef3eb9f28f467993b91d4ce8c71f38a9be0da26b934e19fcc9859b26e103c6a02830d402fc15809d04401cc0ca05402180d001a000, 0x441ce2b09e4680009e740c001e46773002c00a3f8a40100ffe93c0c00ffb29919000079910438a00ff527007fd9587f965c87f1aad4277aec4bbda7f69b776bb9aa6dc4be9818ce6a2ed3ea1185f6f5b896fb4ded2eeeb772d4d9897530119c545ba77d53da5ddd3507deb312d864ea6b694da33bb9312cabdaf54d3dec9ed26ee3895eee7a836f57535545d8967b470c95ea7a7bd8fda3ddc312addcb505deaaa69a8b712bf68b0bb8646f52d3dec5ed16edf894eee3a826f539d054d15166255ed0e1750c85ea3a7bd87da1ddbb128ddc3503dea339fa99ea2bc4a7da0c2e6f6d863ef50d387489b14d5b2a962a54d10d86692b349849818c002b97429⟩, ⟨0x2c314e09d44ba24a11b88b04321f80f387683961be0d886883221820bb8598282132093046c2180e706d02cc0fa06502c00c404e000, 0x2b80f1d4003f01dfa911038bcb226bb44e09a691917602167cd33f8a5724b8a68cc6125f4d39927048d1a48b0b44b50d89f91a135249229ecf3d3b89c000c8d9e648d891b2000795108b8ac2791aa000f9d03000191a7cc⟩, ⟨0x2c31558a8451227c12a887c42a1fd0f7079037a1b00d305fc2ea14e09b049422810506f03441880af04f02240e806702000d801e000, 0x443ae2c0d10e78ae270003243f9924364870002e540d10cb8bc91e06000d242798e2781a4828003e740c000648273a2147174cd25869309323f8005f32852e29074564d1c81c959310b8613c8f60007ce818000c8f4e63632⟩, ⟨0x2e316c0adc514269127089c4041cf0d506743201850b004b42100f006e834017e0b20528258106074034017409803d014005c014000, 0x6268fd01fb480f480000d9c0763fed2019d41e09f850ae692a56a269c94e2546d43d380356ae69e852c29c4d69f002da90056d5700074e00a5aada9849287bb90fe292834b8a64cc692451449849c46c123a69bc9164267a134b89e06⟩, ⟨0x3101758b1857228613e095c46021f10707fc3b01cb0df06b432c1850b7058427413008483ac1880ac04281c00b605001d806801a000, 0xb66ad96d3800b6cc69fc5200080076cb69e060006d95d480119299ced334961a4c24c9480017cca14b8a468d82aa34860d902936184e000e4a073a06000324fb98041cd6900018185d488c1c500710303a98d6a9ab054e09a7456011c82d9e852c29⟩ ] def tableRLLRR : Table Block := .branch 15 tableRLLRRL tableRLLRRR def tableRLLR : Table Block := .branch 29 tableRLLRL tableRLLRR def tableRLL : Table Block := .branch 58 tableRLLL tableRLLR def tableRLRLLL : Table Block := .leaf #[ ⟨0x2bf1588a1c4de25012188d044e21610487e03d21df0e706fc35c19f0ca85c02c213c08903cc1b60bc04e81f80e605401d80a8022000, 0x590c05400ca5a5449de2813e0f47a149c49f33729a7c525269309303529a4d24941a4c24c0daf28df9ad309237d6bc7af005bd800d1c00ef5a4c488e2d2ea5349deb4a697bd04ad2f04893de54b018774c6b9a3219d306e6⟩, ⟨0x2ec16b8b345762ad1518a2c4fc26f131094048c23911788203e01cb0d4059c26e12d083038417809504301e40ce05d0270108054000, 0x73123c0c5423ed0d0344bce2c19af23f8a4ba4781ac530300be930bce8999c5c1f1b5dd3ede400787e0c40038fddb13d3ebc8005b12c3c0c00060c8737047935f62000d6b1a7831aad5b9b711fc525c23c0d512611a24ff1400ca700547⟩, ⟨0x3cf1ab0c1c5ec2d11620ad455029b146099c4a824911208243ac1b10cc85d028211c074835818e0bc05582180e206702b013004a000, 0x70befcef78914e000404f804785569ede002780220006de3d3edb9addc007f4fe295c92e2983318490062dd6d4dc689c12000dba7a9c5885516e88028000e9edd0004f533b450f691001ba7b55ad2100334f690da2fa7b476d20b45b4e8821f224e091d34ec3b68f6b44eccf03149a606834c00079bb0b5a31b1⟩, ⟨0x50b27e13b49904a124a11b48c643c20b8fc872a3701ac8bf052221810607d83d61c60cf85e028a12007d835816208c033817406c000, 0x76495892000c9e7a749f1274398c27939c94379d03250b9399cc92f1dcfd4c978ee7ea5aa5fb4f00cacd2b3524cf4e000c9e9a993bb4cd51000a0018009804f8c1a7f407c7b0009aa1000c004c0234fe8078f4000b5400010007803d857a7846d50e1b137b3560aeae0e834a2e6b4ec839fcdfab9bd600234f2f1fddba9fc13eedd4fdd9f81ea7f64fc1f57fb1fe23ab000bee8d3c0d0719f72f35f5438608189c7⟩, ⟨0x55228e13dc95049b23b11007f63d61df8e686ce3401850b9456427c12b891046c21110207c43981a70c1057426c088031813004e000, 0x116e349e8aadc7002a277d3800316d66c1a4e7e25a78334b272d4e9d16bc0fe6933c745ad03f5a4c3f8fe3800388fea70ffd3622b885e9f111c45310ad3c1f944fbcd7126aa9607071e50f942f4f2874a15284e9d829c0f94a0fc7779e4d4d486a898a1a4b900074f6665450e00fd905a7c9bf271d48039936e9e5d693a75308612edf2555a9b8c002e00555a23ee26036ad0d21c42174a07c7000642dd4c855a69400001d3a51393a9ce⟩, ⟨0x5922b59510a424f126092788dc44920b0fbc7723961b88d886b03331720b6856628e103878837a1a60b985002360e8053816004a000, 0x1a6a4224e6ad298447cdb08582b0f60fb04d82f0f619b0dd85f0f617b12e1ec27616b1261d626c6ef4eb12e374b11e9e34d162fe396298d3258bb8e001b1761d62bc6ab57491e06b5671a7d5dcbc000e4d15e45ff9a781a1090001e6daa38d1ec406f01380ebf043042f51dfe9e2ae2e8d3e953173e9c0019df7533bc69a2e4d29a67cd3c5c7a52cd55a7cf873d7d3e7bb9f067ada7c3ba2e0d28a781d3e1db3c045bfa50e5b3a7cbdf0ec9ec34fa2f68c1a9⟩, ⟨0x5bd2d01634b0456529f1474a1c4e726c12c494e49a24111a888a41e1fc8e385f224b0c706042e80ed06b032c17e09a039813804e000, 0xfd929f8e4d09801fa64e0f9a120737e7fa9ece611c000c23de69a51000708ffa70330ae390f1639bf14001b4e34eb4da11af34011b4a34f185b662b28000a0020012b0f69d64d00180046cc164f593164e000c0088c2b4e592cb26164d46125938001000500066cbe0880007e3964a2c965931184164d000200105790002365d043c00371e8cd466591caef0004002592164a5926305000f4f70c69b1372300036a569d6a8c228e680036aae9d6a94226e6ad0d844bcd⟩, ⟨0x3761a78cc060c2e71640ae455c28f135090046c217106879838e1bd0cb05dc2b014909d04741f40eb07082f813208e0388128046000, 0x213207cce680cfab4701002fea51c06f9ea3808fa747c89382400fd0a48f9b7f06b400803f9d47818017cca4c0c000612bf37dd7c7a8c0d09503c873400f86a3f8bf0f4dcc92a92401fca4e3efe2862f923c0c3f5e26e2c001a5874f89801f5e4e0f62123f34000c246e68fb388f91⟩, ⟨0x2e11610abc54a28613c8968460223109080c3f01e70e406d835819d0c985b029a12608704101ba0d0054822810006102480a803e000, 0x1bfad2ea143c0dfcbdd52dc4e007dc52c0b7b701d4ad334619f224e091934fb10214d2f91e06549303000184e7cd003eaea2002613af4e3b17160684dc1e979ae2784d800079be8c01d4606fb4006971d6f8be97eb52613001f9f47⟩, ⟨0x30e17f8bd05d22dc1620a744f026712b092c46820f0ee06dc32415f0a384e02220ec06282ec12c08103601640880360138068016000, 0x1b13e26c4cc298f0fc500030a7f9a031d42db1f734b71a70485c6cb107eaacd3d35a20f5557a70006a21d380034d86ac001a6beaa8d54795e2984700030a4b9a000d357b100b30a53a70300af4d46ae40d52146a90ed0e644abea18e24c19bd24e09⟩, ⟨0x2b11538a684ca24d114080c3ec1c30dc86502f81720ad050825411708503ec1da0da06682f015a0a3049020c0e406302c80d004a000, 0x10330ac017ed0000018726fb8b557d55ba7001eaadd3f8a40010016aabd3c0c001d555a9d1028781b01122a3cff163dc7165343d0a4e24c50d02a27c525269309303629a4d24951a4c24c0d50f80dfad3892036d43baf⟩, ⟨0x2d51620ae85442951370934486222105078c3ac1af0cb86182ea1660ad852824611108383e01a20aa04181e40c2052021807001e000, 0x1707181a3fa715c4f0b80000f3625800ee303455800dae3f9f1616d8001e6b0c57b542dde9c7ece2ee9a62ccf9127048c9a64e70011e69788f031a4900030b3b9a00064e4f44005c2d0e9c0d27178bb126924c9c4000dcb613c64d⟩, ⟨0x2e916f8ae052226a12a890045a21810507e43d81db0e806bc3481970b8052c28211c08583981660a204982200ee05202000d804e000, 0x10300018607cb0003205ba200a6182f4e30d52144a90ed0e7c2abe21864d3666a834e090098c5b5c26713c2f40003cd22aaf84d8c0c45fdf05ab1e3380037c06aef7f004800cd54519f224e091834801b7bd6b4ba47818c24800185cbcd⟩, ⟨0x3701b30d3c68a31e17c8b705962c114e096c49e24010d87f83ae1b00c585a82aa13408f83f81a20bc055826811a06602d80d004e000, 0x81816d64c0d2c3d57ef30001a9af4fb0ec52b9133c0d5b28719ab0004002999ea7dd3d237ca60db2664d3803b9c9c1bc4316e68001862bcdad70384d8800c6fda635ecd18d1b7678dab300146bd9e30400635acf185669334941a5c530c24003f2f04c81b005fcb613c3050007cd⟩ ] def tableRLRLLR : Table Block := .leaf #[ ⟨0x3a61cd8e086ba34b1a08ca06022f015e8a5850e278128886c4221ea0ef07443581790b08548290123055027c11c06702100ac03c000, 0x30480c63a410aaaeb5a5c23c0c0310e9867c02839b0ce6ad3aac6ad1b4f2078003f1ed24c2498d2e002392000640d0003e3c0d2060002f26119c4e000d6c7abad8ab8b0007551a3f8b891e06b90ab5ed5c8095b397dc00082015b2d6c800169e137ab98000c329e6b6c95acec42f163f8a4083dec7⟩, ⟨0x3d71e50e8c6fc3741a78cf865a32217e8b6054a290135897846e212104078c3841a10c0057c27410707102bc110052018808001e000, 0x389c000c363e6824f5d66c60604a2baad5e39a5acd382402bb9c7575c28057a70092b8400ab4e0caa7009ebb2d5b89c000c356e6b7235d7ec606b9a2badd5cfa4fb5a67d67ced33e8005690019f1b4d58d562eaeb37ab5eb5dd3d6ad5b6e9eb59ad56b6cd3ab5e905bc756bb20b15b471e44063dcf22e68933e449⟩, ⟨0x49023591188423fa1f48f087623a01bd8d206462fe1658a984fe25a12808a44081d10b3053c2700cd05e02ac140085038012c030000, 0xad66b60d656bf5ac6b0001acf34f2dbd59ef3870ceacfa5b6f3ae0d2f469ac6eb06d3d635582d60fa7ac6ab16d3d63b587e9eb1cac3ab13d3800358e69d58ccb64e65640000e9e0656652d87981d8d571a70eb43b0aadf4e014d5f555b4890619028802369e13d64bc82c9abdc02630bc1419114043ad5f4f8a694b34e0901cc6160c2a70006bb1d580035d80161aa90c3c5⟩, ⟨0x4171ff8f6878e3b41d48e586f236a1af8d3864e30017b0b645982a5137899449a23e10b87c03921bf0cc06001d60c602680e803a000, 0x4748e2b183e4869ecd44b2a89c12ba22e0d0324f9127048c9a5371413be68030400f2781a0701652e27000304db9706da09a8002e540d1cef8a611c000c390e680018261d100070e4ba7030001825bcb8e67c5b0cf71173a9d0aed5ba63e8afa29defaa94d383f15f969c05eac4a460312815c0006aa4ab3b4fdbc9865f1653e20c929⟩, ⟨0x40a1fd8f8c7ac3b11d28e5871235619f0c986022e012588f846220c0f387082e61680ad84d021e105070035815e09c03a813804e000, 0x3925c46de2b09c004dd675748c611d856000eeaa0016aa234716233714001dff74f5e55e76befc76e1a9906f500398d60007c30000b391d3f99bccdb9c0011a9dd28008d4800fba4ea738bdb6ea5eefac001d3c267138001875fcdce27792d8c0d9c6ef21ab818000c3aae693c91875000679a00061d3f34000c141e880018753d3⟩, ⟨0x2f71740b785722a6140895c49222a10b877839e1c20d9869432417f0ba854025e121080037c17409904701b40bc04c01a0070016000, 0x184981b7c6ddeb5a1d227778df135e007c4802a3dd0c05bc4d265543d8d00080400159e1537998c24e50d81a245744c0d9da002fab001b10b4c10c01f61f69b0e00eb4e75e008eaec1c012d782400ac16d6792f144a88ebc588efc53935e09⟩, ⟨0x2ce1538a004b624a11c88a84061f60f4876038e1a00c985b02c413b097041c1de0c8054827011a07f03701840a004101b8088026000, 0x220237c7e6c4030003cd003f7e6d8e19a4acd261261ff000ae5d0a5853526b1835cc136f23d9613800387efcd818000c3f5e5b8c4000c3f7e9c4a1e2b789837dd3025e6a8f42938930437a9a7c525269309303402aa4d248bc89⟩, ⟨0x3b31ce0ddc6a43471980c645f42d015d8a9052a27013189384362110fc876036e1920c2857827212f085035c16406302c013004a000, 0x78d6c9e01cb5dd5f00c0066af048ab0cbaf599615fe551c2b7c90814707e53d2a6cb388e001effbab713832aaf7fa0090002d540d130b8aea16a369b4ab51b4f09bbd4eadc4e0006207f373e90073630367da00d6acac7cf93784d3ef07e3269c001df8b748dd48002d3c26846880cdf439a000ef8da7⟩, ⟨0x3841bb8d7868a31e1888ba85c02b91560a144c024911107f43b017b0b3055c29813908a03e41de0da06182b011607401d80b802e000, 0x61484c3bac0619d73159c12f6584e000e21ff3606000310f796c3100ff10ffa7c0f7aabb303958e000621c73741201ef620187003a702247e1d03802de038b74d3e2fa9f224e090f51201f7029ad06c694f0354caa507364f23ec9b64038b5e126cb00107cb677d4b3f19a67964ecf2c9⟩, ⟨0x33c18b8c0057e2ac14289c84be25411d885840e1fc0f587103221870b1055425c0f8077035817a0b304601cc0ca05402180d001a000, 0x723cd4e46ba67709de2660343bd38688788c002eb9b36a259244e090bb875cf2e00669f224e091934a79f83e5cd0006792001f4f034f22002ea5c4e00060f6f2e0ea41ec0005ca81a3fa7169c05cf0300a883cfcba3be73c90d86692b349849888c002b97429⟩, ⟨0x3601a40c846282f91660ad053228f135093c45420b0f606042e81630aa052427011908383f41d80c5053026811606c0308108030000, 0x96fdc600092df792e2700ea6163513ca0036a932bc5d18060f03621a0d26aebf5c84d98625e6ae74cbca5ce80254bec4fafe135bb2cb48e6db00074f2668a33e449c123a69c373869a5d23c0c3269000311b79b33f0b547118d238039b34bc120065552e6b6100034a9311c5⟩, ⟨0x28d13d89c44b224f11b88b442a1ee0ef87383821af0d2865831817409f04d01fc0e606702f41600a104a021c0f4069021006c018000, 0x5d23c0d2d4f8b034b55e2c0d2d838a00325cbf1ff24ca99fc527b23c0d5126069689c500072e38000f1e060002000a5c672a5a0f165ab716accfe295892e2983338a568d200124cf7264ce8008e4b627c46⟩, ⟨0x28c13f896044420a0fe87583981a50c685e82da1550a584e02220f907303541900b9056027c12007d037018c0a003b0160078026000, 0x71380019963cc996132c4000f2a5d771584f32b4001f3a06000332af992ea38a5e21fc5211e90f0307289000332939d2de38b6821f34cfe295c92e29a3318493f1139927048728979b343627b21a1350289⟩, ⟨0x28413c899847e21a0f9876c3901b50d4065c31417d0b7056c29413d09804742100f5058028412808903c01980b804401d0088030000, 0x84de0a24000c4e2e68003695ec4000c4e4e9cbd4e2e66877c10fe292834b8a74cc69255644ca1a6852e290c91337a680c112001c004800b98e5c86c4fa6684d62692e91e06976fc581a5dbf16069773c5⟩, ⟨0x29b13a09944a824711d08944001ed0f006e435e1880ba854027612e08f84442000f3071034c1920b4052824010207702900f4030000, 0x45040019cbd093686ba14b8a4181570dc0d51b337916c27000713ef9b03000189f3cbc0522350c363b3c1253d0a4e24c10dea69f14949a4c24c0d40aa9349214ca93093035a64004eb418952003da61aff84487⟩ ] def tableRLRLL : Table Block := .branch 14 tableRLRLLL tableRLRLLR def tableRLRLRL : Table Block := .leaf #[ ⟨0x2af14f0a3c4f426912e094847423010c082c3c81ae0d206302fa1730a604fc26a10e082037418a0ae04b82300ea0420188080022000, 0xe9a6f2459099e84d2e2781a5fff16069805c571380019a13cc9a0f342000172a0697b9c5e48f0300069a07cc713c0d33fc001f3a06000333fb9d2f4b8b4253264cf64e099139993b6db6a013e9fd0d27c695c923069⟩, ⟨0x2ce1620a7451426311e08643e41da0e386e035a19a0ba85742a614009b043c1d40c3055824c1000730310154090039013005c016000, 0x2060003150f9710a440024d2ce980018a81cd000ea272200062a174e6107151e43e449c121da26e8f00235a11e50f030ae89818000c533e68003744ec4000c535e9cc12e2c24943ddc87f14941a5c53266349228a24c24e23609⟩, ⟨0x2fa1698aec55029514509d44a824511d08a44081d70e686b03401930b8050025011508583a016a0a804b82180f205202380d004e000, 0xc568e9cc4ae2cdc896c913824c8957e2401167c89382464d3758b551ad001f0d003b3c0de1600b69846713800753d8bd4eea840038a986dc58850f03004b5338ba268001006f4fa669334941a5c531524003f2f049ae8b61380038a8bcd⟩, ⟨0x32318a0c285ca2a814f09dc4a422b10d08243f81d50e506dc3541830bc854828211a08103ac1b80d105d02540ee06d02b013004a000, 0x5247818012d1b357f01f70800403787818000c57fe68003a346c4006c581e9c99a4a0d2e298af2001f97824d445b09c001c575e6c0c00062b9f2f84e200066ae74e62c71445363e449c12068326ec200235a041ce63c0c0a6326060003159b9a000dd79b1⟩, ⟨0x34c1998c686022f41668b0c53827b12a08b44281fb0f8075c3881b10d306442bc139095047c21c0e905b02b010e07a02a8088030000, 0x9e87900f73b25399f0c270007363b9d0300019b19cc0102e17900e78a21d4011b143fa90d00e97f8574e097e897651c896cd13824c8d573fb5c7d77369eed700334f9127048c9a6ee4d1df5a000dda4003e9e06bb78005d4b89c001d1cb57a3668e20016aa0698ddc5⟩, ⟨0x3471930bfc5bc2c91540a1c4b425011488203f21ee0e686b02fe1750aa0528246102073833018209c04581e80d205a0198098032000, 0xd9dd9e2e18b39e6800da35a6cfacc0096896700db3ab380480659cd9e068b782cff9a01167767c893824006ce2d366d6af6d001003b36b3c0c0056696981a2d90001e6d8d5a8dc6692f84cba6709c12096e47dabf673699a4b0d261266cb000be650a5c5203e0ec⟩, ⟨0x3141768b54560289135090c46022110b080c3cc1d10e386d83581850b4050426811708584001c60bc05202300de05201f80b0042000, 0x317a3a72b8b8a32f7dfbb38bc20d439a0072651c326c5dfe6a2687c8938243044f46074b44f8cf03161a606000317579a00f3b31000f175fa6c270139a95d236090066995803cb0052a9595c59591c50071493cc7324af8b9354887c4d67b67f69⟩, ⟨0x3011670ac454028f14209bc4a023d10988103f41e50cb062c2fa1690a104b423810b07e03541900bb05502640e406501f00d001a000, 0x143424d975869c22dd24f2a694834e090f355801d07470e9160673c681a5724781ad5956000f9260010006011e9f13550de6a8c00062fa7360416386692b3498498bde002b97429614d49ac60d737fc33376584e000e2f4736060003179b96e31⟩, ⟨0x3f71e90f1473c3791b78d286523081738b0853a29213689304322010e7070c36c18f0b50580276116078833016a07402b80e803a000, 0x32ade53ecdc4e00063117371053a136303621c7416ae0d803ed30b801f6900e85bb4e2147346af109001357824002c41f56003ce96b0004e73ca075524638a000d2c187b69e13389c000c611e6e1e872f6c606c3f4e5cd587d187069f101c47f52000e21ba9c4234d4aabed2fc485bfa7f3c3f94f9f50cafcfa8657e70712b⟩, ⟨0x3751a70ca45b42cb1550a244d025a12488e842a1f40f3870033e1950ba058c2a414308e043c2040e1060026411806502d80d004e000, 0x9ce232273402cca334f4c73f84fd1000389269ea537398105a7a24082d203fd1169da1a0cd2b924001c96b4fca3ca56b71380018c6fcde6de4fb8c0dd2fc9b6bc334959a4c24c6300015cba14b0a402791ad6003c8b6b9c2c6577b2c27000718a79b0300018c4fcb6188e3e8c53d3⟩, ⟨0x59b2ba159ca8051d28993c09964a423e915885e40a1f18ef072a36e19c0c845f82d715b0a544e824411187d83a21ac076808002a000, 0x46643511cd71380018cc5cdd433fa723036a15fcf8be42790bd4aa4e8d09c9549b19f79319f152672633d8002e480035256a6723467ae646798d0dcc8cfd1a17991a1233ef30000a91e8cf7c7a4874c21771f9a7c497127d4c334465a7a77ab2d7d39d376bfe6feb5c9b87e4de51b3f24f2672859e72e9cc352002ce59a7219799986a2668ea521a9107000286e00032166994ca4b4e43273310d3cccfd49c35020d8002784c36e00110b14c9e523a784dc0b66⟩, ⟨0x42d2040f8c70c3751af8cf06322e916e8ae851427d12b08cc4522060f287103461800ae84e824810106f02ec0bc05202380c804e000, 0x17aa003fa7007afafd3b2e600d003779751ccd52e9c6cd3006c3401401589004c01312001d5065bb0f08d94fcb661f29794ecb5e1dc4e000633c737539021c8c0da9b80fe2fc68052d3e4002969013f1fb4ea5dff18bd4b615f16001c2ce270a986000e89b0f853c2a62c00fa8ec38002001000778b519c00269f91b137e5d9a132f908ccbcd⟩, ⟨0x4182030ff07aa3cb1d20df46b834f1910c605ee2ed1630ab851a26811a88743f81f20e686a030e1680a484901fe0cc053820809e000, 0x2e91e0600173a439d034e8e0013ce00113a379800ba2567f14800801e8859e06002d0eb4c0d3a18000f326d571400738ece000eb11ab0007587342355368b8b76200367818cf9d60f57b6df633a9ee5ee7b4c788eb498e91de937dc5f93a9bccefcdd3dea77995f99a7be16f6ed3def4d3c69d965bde5a77d3b2ec00f5e63474b551a7⟩, ⟨0x2a714b0a244f826d12d092447822f10e081c3e81af0d0064c3101770b2856c286139090845c1fe0f206582540fa07002480fc030000, 0x141a5c53a663492ab22650d3429714864899bd3406089000e0024005ce5be43627d33426b1349748f034df0e2c0d37c38b034df6e2b89c000ce9ae64e999d34000795379f8ac2700073a5b9d0300019d29cc9bc3c5⟩, ⟨0x2b61478a144bc24b11308444081f50f387583921b80d4867c31417b0b3055c29a12a08a83c81b40cf05e02540e404b019808001a000, 0x1c6e4e6c0c000637172f01489f091cd6cf0494f42938930437a9a7c525269309303502aa4d248532a4c24c0d807004e3418952007c02e3fe1121e137828900031b2f9a001c00644000c6cde9ce11e2e66877c10fe29⟩ ] def tableRLRLRR : Table Block := .leaf #[ ⟨0x2df1690b1455c29714009a44b823511588103cc1bf0cc06002d21520a384c01fa0ec06d833017609404281d00ce05a022808001a000, 0x50a5c52075b304dc6901d2cc1169b0c279dd6000f9d0300019dd3cc020aab48031466dea00018cd9d49c17c5a12993267b2704c89ccc3e1a0ba009f4fe8693e34ae491834c6ed0019cbd093686ba14b8a4181571d09f17b337916c27⟩, ⟨0x2d61608a704d224811b88a843620e10087c83c21d20e386d832a1860bd05bc2c013f099042c1aa0bd05802240fe05802380d804e000, 0x16b559b04965ba72c9b6082cb34f76a02167cd33f8a5724b8a68cc6125f4d39927048d1a6f86eaad0d89f91a135249bdbba4b3b89c000cefde64efc9dfa000795388b8ac279df200539d0300129defccd334961a4c24cef30017cc⟩, ⟨0x37b1b18cf06422fa1698ae052227912e08fc42a1fd0f807243541a00c0858028e12e09184081d20d405682600e20580188078016000, 0x4e10e2c743038bcd00f3a0f1d040e7f363a00001e6807b91100031d0ba7385b8a00feb27007d6958017ab2129530b78ae2700031cdf9b3167fd46069993f6978d296367a29d74ce50ba70484decc5ae5a3dd20c6a7006b3c6b9c0dea700613c639c0304e79e2c020f9dec226fd44e09⟩, ⟨0x4111f60f3476038f1c10d6c66c32c1838ba05922aa14b09dc49a1e10e785b82b414d0a084d025011c07d835015a08602f80e004e000, 0x17d685fdabf4cbf69600def272fb90bb5b89c000c75fe6df4c4846c606be94906d5f990074987000a930e3c8d27c851a1b410a3c3286b03e8f270018080080140300700327e8f83830013160080180400a01a5a51e6051b8cd88de66a46c46001caab3c74b1957cd8e9432b79a00063a4f34001ce44e8c7470003cd193880018e93d3⟩, ⟨0x3841b68d3c66e32d18a8c005ec2df1620acc544297141099449022110487d03d41cd08003b41860af04801f40bc03f0170088022000, 0x31d9606303654e59e2c0d395b8bc02a7819cc0658e7f307a534a49a70487daac0196a4e00c272b0061296655393b8b982a78183483a561f4dd18000de3400f004000e557801108ae011803e0108f51a7fc24c04a29001a3c4ea300189f49c0a4cc062752626b00a48d9a711968d32869⟩, ⟨0x4412070f9c6f830316f0b1c54427212a88e04221f90f507803861510a384802060f0070835818a0ae04c823c0fc07402680d801e000, 0x1df9f7cddf269e3d18ee0e69cd3310eff7d799d51df76f5fa739a2620dfeb63febc8ea7efb77aed38003bf2ea77ddd372468a8e9c4a1cbb13561c019f64e00cd72b0066a9f25539c78b491e06052669582480088000402335c788f800378f0300018f27cd0326298a2287c89382478d3405b344f0cf03151a60600031e239a065344002478ae99847⟩, ⟨0x7d53e21edcf447983c39df4eac73e3979c78e186f43751b48d7a6b234e9a14ce465f32a18fc9f64c51b187c833c17d06f00c004a000, 0xba67f1489d99e062934c0d3eb0000f3274d714c238c1acf64a9d0dc581a7497143cd57827105573a238bcba26db44e0956d558aeb60b4a84939ebe49800eae85d7ba0f01cd4ebfddfd35a050dc9d013c12a3f7c9efa1d43b3932e3c5136b3ee4c78e2ba582c2a106b7b1f45316a73b7c8f11f543a3be07f4f00155cfbaf51ce6e015d7ea30d1cd0efe10773930e38ae860aea83dade47d04c589ce9f23379588f8a1cddefbfa68008ae79d7a0e727008ebf11860e6777ee83b5c97f1dc9740031d82eb4c76ff1c01bb9ecf00040012b9b515c8c247323bf475e2ebe508b71e00000015735018d456a3081cc6efcdd783af8422bc7c4ddf8f745a7⟩, ⟨0x34c1928c485d62c415b8a4050c25f12708f445c2070fd07b43b41bd0d506343001590a784a02020da059826c11207f02c013804e000, 0x9fa400679c19a1e7e80014e703259f9fce61380149f9bce8180094fcbe6699a4b0d261267e3800be650a5c521ca3009c66641ba3008c5e70c2700073eff9d0300019f7bcc00402c4a6400423a0f50000c740ea4ea9e29748f03000b9f6dce81a7da0009e700089f67cc⟩, ⟨0x26511f088441c1fd0f807843a81c70dc069432c18b0bd05a42b414d0a104c424811a08103e01c00d305601d80bc03d018807801e000, 0xadce00c9c15b9e534821f34cfe295c92e29a3318493c5139927048f1a5e4d0d89eccd09a44d2e2781a768716069da7c571380019fb5cc9fb33f68000f2a764f1410a42d4fc8d9449a1531e47⟩, ⟨0x28513a097c4aa23d119886c4041f30f407643641910c385b82c814c09984682020f606e831815209403f81d00be04201a80a003a000, 0x1e2671d333c0d3ba38b034efbe2ea8439f224e0938933c5806b73407400dcf0367013a6069dc1c5979074e7c83af3961d78255b31d74653242dd424f842a982f54e097ff560357649e852c29c4d7402f29⟩, ⟨0x2cf1590a8c52826d12308f042a2080f386e83601980bf85d42a013308603ec1dc0df069031416c09904501fc0c404a01d80a003a000, 0x78005c9ed24c2499a6200239200f7803c9e069e70001792e27001da1b5ab1ed00015aa069a53c5ee0173c0dadd1b37abe97b193f49d874327cd33f8a5724b8a68cc612407e7653992704803cd4a5145221b13f2f26c4dca80529⟩, ⟨0x3b21c88df06d22fe1738b6c56c29f144098c4602090fc079c3b81bb0d105f429412908f83e81b20ba04f82000ea05602180c004a000, 0x7c16d3e0f664c90e2a4000390a8c9c00169566d869f520d36230003a76ea74e6d369d3a6d3474e2d3e99ba6869c3a790b236b39b2a694834e09003daab580ce39c001c6ab5604fe35204deab68c006cf031b498d36af6c005ecf732e7526311184de32234bc1243ef0d2e4c44ae289c120056b93ab⟩, ⟨0x894436a18107282f4041fecfa87bc3ca9cc8d805c72670f187463311880bec530244118080034618e0b4851023e0ad02500d802a000, 0xa1324717b2c279104000f9b0300019101cb71880019105d39f0fc5237b065fa715322a6bf54795efc71893f1e2a63f53624cf2b9f8dc54b6c85c7527ee34dc6929418a96fd49892a942795accedf8d368a8a94ab7537d2bc6e3a93e71a4e3454a0454a7ea2c4914a0bcac6674fc65b44c54955b89bdd5e2f1d49eb8d171a0a4fe2a4bf5070c2c48d4a03cab6672fc61b44454855b69bd95e271fb8305bc38f8b17ae6a4a20f0aa07e202d578e0030dd6986bb30f8888360008d478bd416a5c71f0e000620d0a9c16a3c7e63465e8a30f51987ac000018739a8b2f40f97d3c7d59ba35e8df523edf485a73c47a32d3b115793b14ea29dbf0a7e84761f8e0005b4d454f6228ab3185771ea8d180062aed314d66⟩, ⟨0x5b62c795e8aa652c283938893a45c2068ee47282f51670a9c50025b11a08343cc16d073037016a09404181c80c603c0178088022000, 0x24520d15e683129c011c8a2e6c8cc5919c7c536becd3c4491136a623ec55c7e20afab8eeddfea5f9e7e7fa7fcfbf3bfd45dbaa3974efcf5fb743d28536f9278ffc07f05a9918aa565b4c000a628c341067f48c38f3adb0f8f22fd24672645f48b8e4c8b74915c908f6489d4c8b658f7cc9176b1eb98b1e645d733690000b13ea524cf633f0b4c2bd34fb47800389ee2714a419ea67d9696579e9e060003223b9a01fa2971c334959a4c24c8890015cba14b0a6a4d6306b⟩, ⟨0x47c238118c87c40b1f98f3068a33a1968c605e22cc1528a6c4e826512688984021da0e105b82520da05c829010606202080b0042000, 0x84671380039016af201c808001d54e5ee2c8bf001bcdd023407d69105e0004008c5ac002000f4f89a4cd7cf66917400079a000e3f5b1000922f3a7030001916dcd84a339478a0006459f34001ea7762000645af4e724f15bcb44583796d07c56d71e22b8ad96f2a2e3b8f8ad3594642981e00fe9c0072a2d394766d1a006b3e46e8a59c0072d2d395f6684c00396367⟩ ] def tableRLRLR : Table Block := .branch 15 tableRLRLRL tableRLRLRR def tableRLRL : Table Block := .branch 29 tableRLRLL tableRLRLR def tableRLRRLL : Table Block := .leaf #[ ⟨0x36b1af0cdc63e2fa1698ab85121e60ec071c3721a60c986002ea1680a084702240ed06e033c17c0b3050025411006102b80c804a000, 0x30c59aac8e7e9ca24e2d91565ae9d5d74906e3d66159269ef8b77f34e4eb684fa136b86010804083ee31400095dc5ede9fa861934e10d74227cf438748784ce27000323539a00de427b181801dc847563069a334b9a704af08b84cc27002123279b0300279046ad84e002640dab⟩, ⟨0x4d625012588de46521f10b48463fc1b60d846ac32f18e0bd459c2a714788ec3bc17307d03b41ac0c705c0244108075035817004e000, 0x8003883bc7818001441be4c0c40ae48073604cf03000991abcb0002000a2e710127faafe758f13d30001dc784d898000c8f9e6d4891000323df9a0006467744000c8f9e9ca2ae2b35a68800011a1f4ab5e3e87da1ee87e001f2fd9ace9f4c5d0f743cd0f8002e5f7358d3e8dba626879a1de87a000f2f99abe9e8cd9aae9b624d249945a002796c27ec9b031a4b00001c0000061c8e50003cd⟩, ⟨0x30517a0b945b42c915a0a88530289131093448223410f88103d81d90e786a830615c0a484f825610406e829c11e06802c813804e000, 0x11467c8938246cd3f58ad2e91e063c92000648e7366e56308ce2706455c7a82aa9497c5e050f03670a00feac00ac427e4801d884fcbe15178247a4580018889c70003110b960006220c44ae54a41e280088845c7c893824000c41fe4c8dd8839cd⟩, ⟨0x3721af8d506763181848bf85da2c814c0a384d625e11c88183f81e40e6870c33c12c08383d019a0ba05382700ee06a02980f004e000, 0x19244e090b9275c22801987c89382464d28497651ad000c21400f8781a108005c4b89c001ec8f57d9ff6440016aa069d9fc5ea058f030105d8eeadcc5c00a7fa4f595cc646037357c7c50c95ad387687925c00db9baaa269944e09004f39cd5e9980c063c18acd06853c925005fcd⟩, ⟨0x47c21b90047b43a41af8ce86262ec1638a804f6254117886038818e0ba857026e11e08784101d60c6052826c10407802880b0026000, 0x8c6b18d9ecc4005e3c6ef800901ff8efc2a03f71df84c07d7cc1c77e0eff4a000c6ece3fc69f27ea6010c012e5c020803fcb0007e0ad3c95b7c11cd0007dfcd3c9597bfbcd0007f0dd4fe03a68c4effddec54628805fc73ce7189d90171e8485cf191ce9002b298d38448b9f224e09018e74a1459476b4040e31cf0301453a606929000079a849e511b18c7e73cda89⟩, ⟨0x4ee27212fc93447522710607a638e1b38cc461c2f815989b848e22f0fc87483741af0c40584274113076031413c08603080f002e000, 0x206594e2ffd5cb3f2d0ea400196774f26012cdf35542c17a7337c7550905e611d399ae3abe18c770071914f1e327464de3c64c8c9ad9878e001b15626c41866cbd19263254adbe3c8858c91192641d71c000c613e4c5fae346468c8af6a38e00063b871e16bf1b13476d8613c700030b278f25ba163f3631a462ee4c62d8c67c9000318c78f25aa406f3644671bf16fcf353f9afe79a90007f42d4fe7ba6⟩, ⟨0x3851b10cfc65832217f8ae855829b14509ec4a824711d085c3e81cd0e0066431e1680ad84d021a0e606182c814607e02c813004a000, 0x1f3561ecc3662c5d428781acf765fc5c1f14b8c0004ae971e286c334959a4c24c99a0015cba14b0a4013656c58006cab8ba3547843b2c270007264f9b0300019323cb618964e9327d33c130aa7a600064c6f36c9f64bc8c19a572480034ac69d3a18c1356e27930c00079aaf5c603b1⟩, ⟨0x46e22590a077a3ad1cf0dec6d836119f0c6c5d62e115f0ad051a26a10d88403da1c60b4854828c12f08d03cc1a00a9043018c066000, 0x2bef5e8c3fa27d0f87b77800158065e9000a3ca00334f058dd298011652c3e449c12001b27e26d17654c6800400764dc3c0c002b25e2606000326db9b603b42e456079710007001566ad3c26000d98b0e597e4d8f34001580c0029700003599b4f5e069a91aba0d303429c01349abe6800614d87214926a79b5b4b6561fce3e6bc3f9c3cd5e69c3bcd54ba3ccfa7⟩, ⟨0x4091f10eec72c36f1ae0d1864630016e8b3055228212f88f04321f40e0867831a1660ad84e02040ea06f82f015e08803f015c02c000, 0xaf624f27364f196bbe680035d469d5ddc9e1e687089b6f61adba017c4db7001989005db6f134469000db6713471c005f30015e2ec67ae3c5b8cf167adf18f355349a779a69a378db4fe69f32e1c6cd2000e8dff33048007d618ca37946f4000f2a5bef17137a5eddf87613d1b73d55ce818f5451b5e64bac000b5e4af669ebdb86⟩, ⟨0x58d2ad14cca1c4e925b124c8c643320810047ec3d31d70df86e835118a0bc45821e60db064c2c613008683a80aa04801e80c804e000, 0x14ec3c7af1de9cf7251f1e753db4f4e9dee9a7af4ef72bdd14f569ec15e44c3f8fec13e43c3f8dfc83e33c3c3b7c7387c893824003e36c4d7b0b50eb40030e8f1a61e06873f8cb13e2ef1878e3c5587b6878bb0f403b67f8b70eb863db0b67b63b30c5c1b1fcca7200500132a64a7a0210088f5ee9edc56f1b6761edc96e5c3db8edc96e2c3c9a726cca67a7b60daef16008b6261e532925800100080255b74003951400494db4f066c4d89b132b8193cbcd⟩, ⟨0x3e91ec0f2477c3ad1c30dd06d435b19a0c346062eb1620a744ec24f11408643e41cf0d406782f61630a004641e80c104e019804a000, 0x11467c89382460d2004e83c734ba47818c24ca1c0003cd001741cfa3035024e2ca1833a9cd295d285f9b2858000f34a56ce30e899bf9429cd308e0006509734003f79c880039429d3818003f76c5d019e28006a0f872a09282f9b3d75089a79f127ada10f4e01257fda75824c4465b571d10bc44110db0474f4ecbc7da7⟩, ⟨0x4111f80f246683111750b1c56228e0f5877839e1c00d8868832617e0b4857829213808a839419a0bf04c01cc0b604f02280c0030000, 0x3bab671ba7290f9a00d000e00441d0004b3fe00500170758033a7000e31f0e84325207340039ebc4e7930c029cf4e1c0140004002838800367e400400140068394013d3f99a25344a6b54d0a9a2534e2aa449953824395563067000fe6316001fcb802b1541178bb4300019459cd54320bdd8c42243c2340c3c46aa061c5a07dc5⟩, ⟨0x5832a994c0a004dd24710fc8664121f58f1873e2fc1780b8c58029d13d095c468211103079436a19d0c285902860f404b820402c000, 0x6417703920c3e77f24387c80e77b24187024e4a30f2dcf5700130004d0ee9c00168725b800979fdd3c23000c23d9c425ca5ce680034a4e9d4a34a5ae69b7c6ddb8ec0008004d0b4a7e00fc1feb16b67ba7e46d33278ec6b894f658d7136344f5e277a7b6fc5ef480098b001ef4717824006852d7bce000800b1533cb8b33c38b42141f6ba0ea0fb59b5c00138cc6d5d2a7a736b65080005c6536aa952d3d8930d0762c3800080192963406d9569ec3d86⟩, ⟨0x3321878bb058a2b41518a584de26411e88c04121ff0ec06c43141790b4056429c13d08b04101f40eb06202740ec05e02a00f002e000, 0x320f908c580071dd87950463b39b26692834b8a653f0007e5e099d985fbb96c2794f4000f9b03000194f1cb00033b1fa25fa253d74fb8d31867c89382468d34320003f34be47818e24800194d9cd0003430fa2000653774e86171606a17dc50006954d4d299a6⟩ ] def tableRLRRLR : Table Block := .leaf #[ ⟨0x3941c38d886763141708b5455c2a113f092c4662260ff87703a41af0c605d828c130086837419c0c1058028412406f02c013804e000, 0x714c1e8004ea5079cef4e4cef3000fc900060f1000b4f48c001287a725c4e001c0762d80d84b4001d54eece2b89e54c0001e6d5e30139181ab27807c58006b1f89ac361aaf7570ac561eb1386ab7d6070f56bab756030e79264cd0c69e892612721b90cc5f202c7818c854ea1e580019d49c7⟩, ⟨0x32517f0b645882af1520a044e026212789084662240fe87c03b21cf0dc060c2ec14f09604881fa0da05b82400b40350140064018000, 0x56c256273661c02b74f6cca996c54e0901256f7163e698a1a0e44d19b624d249a222013f96c279a0d9b030196cb0030d40000061b89e5588001e6ecbb0459181a14b608356001c10e1f03b81ec5d101303dc7302f4400c0ef1c00a83eb4fe295892e29e46⟩, ⟨0x4c4257122c8cc4411ef0f4c7783af1c40d8c6b23341888bb857c2a614a8a2c4cc1df0a504f426210e08183801720960378120046000, 0xa63e18015553c4c19aaabeae0cc5563566e10b25800138dc82ca77ff1f1358b4c9713800195b9cd580e0c6d8c0cb014189ab000d90b0e001aa662c00354bb20e2a795f1744cf032b4b05eeac09a828e17a85dc098025da8e0008003d3813305142f204d42ec04b812cd46800200169eccdc8d582ac2626130006b13872b192b2b9a001abee1cac24ac8e68001958fcd56560b1d88006b6587⟩, ⟨0x5ec2e39688ade53c28b94009b64a824191788564161ea8ec06fa3581928c0059a2ac14489984a014b09c04542140e705a01cc0c6000, 0x988261cd3d27948be9e93ba45a915d3d22d48d5227a70006a15d4d3e5a6a8229fed3d409503d3fba7a7c0e99d38005489e9ce950006912d3f4b59a90da43e911a42b4f3b95223a7a3da771a4434f403cc21a768f6806983f4ecd75213a766219ada4234f96996d69ebb74330e001ebc627ae18666a7b453948e4f7428095974c0965b066466e4400903140b203120bf02d1c0ad3eaa89adf0057178240275bcc5d4d3320b567a7864a6400006a68d3e4631b899e0871cd05b80012ca1c7⟩, ⟨0x46e23090f88363f81ea8f2474c3831b00cf46342f71750b0c540296139896047a20a0f2870033617609383981860a003e8160066000, 0x24cd75b007626fdc00ec48036fdb89000deaf1388c005bd5626f52004c4df16fd78bbccdfc316001ba7e1efd17e9c5b89c000cb17e6deeefe39181af7b7efc5dcee109b7dca13390b87b78f69ef1c9d074f3914e6fa99d0673fd4ce7d3a06a6b0e9cce5149cd2b11d3ce653adca27593e9f04d810c3e90b84189e09f0831340fd215aca42681ed65235476d27da7⟩, ⟨0x42520b8f9c7a23ae1cf8e506e234c18e0c485de2de1668aa452e27412208843f81ed0f186f822010507c834815a0a303e0154060000, 0x12430007087821c3e0870c018c1061f224e09000e07712c1b5a3bad000804f03787818025819c4d39a5a4d201b5dc20f3383055b06d87c18855706b87000e0cf0ec037973abc48f033051e5b6ac0009aa8000c6a9807ba689028e051800101459e9bc784d48d2cac000f35822f2c763034b28303fcd00032c9f9ab2752fbb1bd8804400387⟩, ⟨0x5db2e89708b705912b61514a5a515271128491e3871640ac851e27412888b84121e40df867030e16c09e04641b008902c810c026000, 0x40cb1260600032d879a000d229b100032d8fa7389b8b38938a050cd6ad93e9c00101d66b402834f1a832b5b004660dd3c0a78000045d94c3881719ef06b4409126b402e405c0016a561e3cf013bfcac0bb2000335982de0b835860b8b5a0c380061a7d6561831f75fc4e3b09090c1dd771217abae62418480ef590194075ac80e6031d660b004f8798c53a5296a7c15e13305387011e1070e0bf30fb018b0c5a705f587c61ca03061874e001c3c85f30f85ec35d47091879c386a89⟩, ⟨0x33118e0c1c5a82c715009ec4e224c10387e43d01d70e406843281870ba058427412d08303f01aa0c404e81d80ca05602580e802a000, 0xcea706555804949b004baa71380019701cdb3ec021d8c0d682003fab879c98e4000801be3c10d86692b34984996ee002b97429614a2c8b0d5174e1d47576584e000e5b87360600032dbb97c27151c9121fa72dad32ff3634cf9127048d1a691a00235a27067⟩, ⟨0x3aa1cb8dc869a32a1838b8857a28a13388604041f50f1073c37c1b10d005ec2e014d095041c1a80c905e02540e006602080d001e000, 0x39e44da54010eaed296a4f57a93d44e2f51201ec5cca3329e9da8399474ed414ca0d3fe9c01ba87c3cd020008005464da2ba7d4461a8cdbaa269a448e9a7ccdd8690046d1ad5e09007e9eb17a79d3c62f4efa78c5800333a5a11a784ce2700032e2f9b683527db181ad0fa4f356c27001293ad5d0a6⟩, ⟨0x67332718a4c3c5f92e916b4b0c56129713ec9ac4a323691208463fe1eb8f3474c3851af0ce46242ed0a784a02060d005582180c6000, 0x46fbeef6a7dd4f77b53098001f76f4f2f01eec734001f72f4f2ef9ee4f37d18f4874fe8bfa41e8b69fd14f407cffd3f9fbe54e9fca5f3f3ca8d380065ff1426f8f22d48b9a90012468d3800322be9d22acbb4e6c0c918a5d973400620ecf2ec0444737895b5034f2aee559f1c1c8b52b4ecad9e020f112f0005500b980c8030805540b8818342fc7140ee480f1513e9a480189cd85f906c900e200804b689f4e1ff4d0fe3d3994117cc5eda078d3b1a4bdac0efa78221ffed63ffb043eb01178a6c3a6ed4d16b47c01543f74de3c7⟩, ⟨0x3f41ee0f1073e3921af8d1c6743131770b9057e29a1458a004b623610187e43a81ca0d185f827a116078832814a0800378160066000, 0x9ee3c59ee7c50007d28d3b0ac001f43bd26d54f68e2b89c000cbdde6c8d5ef7ec60691a7dedd58011e5fe9f224e090007cbcd4fa772326b4001000fcbad3c0c0017971a981a5e80001e6fa6322f6c7cbcf2cfcb5f2bb4e91225e6f37ab3c0eb4e90725e5f3400191834f230c8c5ad1833f983a6b187ddbd3d8cf6307bb5a7⟩, ⟨0x26911b087840c1f30f2874838a1b60d4866031617a0b5858429c13f09604742260ee06e82e0146092035817809e04301c009c030000, 0x1f0b80020016aa7c97167c8717bb45d10dc9a1e8527127ccdca69f14949a4c24c0d32a24d248a2893093037c09f1e6b474d3f1d7c05afb2133d09a65f62c91e6b09e625e236091835b62a9edfc5⟩, ⟨0x2cb15e8ab053628c132896049623811287f83e21ca0e006643101610a8050426c12508003b81c80d3056021c0c0054022808002a000, 0x610d86692b3498499840002b97429614a348b0e51750d5f3376584e000e60cf36060003305f9782717cc1278ba71667c8938247cd2006fc47ad2f11e061b34cc0c0003cd0007e1ed88007981dd3e46388e001fc35abc120c2ab⟩, ⟨0x48c240916889a42620e0fd479c3a71c78cb05ec2e61608aa853e27a12988b84121880bc05a028611007c83501920a403f8168066000, 0xc1340c0003f2d84e000e620f3606000330ff960006815f44000cc41e9d029e2c4720110f604c51bd1b491bc7000311c4036f1ee31800192a75325269a13000325369d2524c34e680cd25869c06792134e91fe234007e00026265e88bd770005c7cac6c4c6c907d16d3e4899207a2ba7a52d9325d0097abc12024c971abf8ec049d5fc74011eae05c0b97e3a597e8b0003a7⟩, ⟨0x2e716d8b3057e28f13b897c4a022910d07cc3d21dc0e206b031217a0b7857827610b08083781a40c305b02180dc05602280d004e000, 0x52318476158007b2e002c551c0e2d1c5e29847000331779a6944001cc5fe9c0cc2ba34bc5a377c59e880230f9127048d1a7b113dbc68006798003c3c0d3ca003626918c23b0ac0033d400162a8d7f168ed7164cd25069714cc45000fcb⟩ ] def tableRLRRL : Table Block := .branch 14 tableRLRRLL tableRLRRLR def tableRLRRRL : Table Block := .leaf #[ ⟨0x2f01600aac51027912908bc4101fe0ed871836219c0c385c82ce15409e04902180fb07703741a40bf05a029c10005d02980c0046000, 0x1a4ff8077870755380de8178b308e0006640734003408c880279905d381804b405c5c4caa626557132ab844558702af0486a8b0f448aa3abc5a3a7c51934d99aa0d38259545c26713800198d5cd007767f2303003fb3b8b6138013b378b⟩, ⟨0x2b71550a0c4d6244116086c3e81dd0df86c03421940c185c82d015309f04a42280ff075035c1920b605181cc0ca05402180e0046000, 0x38c4000cca7e9d205e280018b79d3a461c519338001993dcd84a9a30c38163f2a63093a66c334959a606f625595d2a5ce953cb6a9e5d55e0e2af0143f10c1da1f194580067f4021c3cd0dae696c34e09eef55cffc07987⟩, ⟨0x2e716c0ac4538275135895048623211287f83e61e00e986b034417b0b7051c24010f07f03bc1900bb057027411806502c00c404e000, 0x18470003330f9a0c0b1009d3317a7034c3acb9334941a5c5332ec003f2f049f28b6138003996fcd818000ccb5e5b0c4009ccb7e99552a93bd3c334959a4c24ccae0015cba14b0a6a4d6306ba97c0027b2c270007329f9b030001994bcb⟩, ⟨0x2871390950488233111085c4001ed0ea871c36819f0c905ac2ac14c09a849022a10a07c83581880ba05582100c205502400cc030000, 0x3b2aa4401f2c788c6d834be1a70498d6cb1610ef0dd0f043062874f955b89c000ccd7e6abb2c606c2d1971467c8938246cd3e05017e34ba47818f2480019997cd00bf8032308ce2706555c9302aaa4a9c5⟩, ⟨0x3721ac8cc864a2fe17a0b34580299139099447c22510d88083981a90c986082ec1650ac84c821e0df05e026411806502100e002a000, 0x6e9d753b8ad3f6584e000e680f3606000333ff96c3101673407a656821bff4dc4e000667d735eebde3035056bae1c8808c0029c7000d5c31356ac30e1a7919acd3c8d0fd4a6a71fc35566c3d583c33565c38006acb87ab17e9316e27000333a79b587fd0e4606ac37e7f1733ca9⟩, ⟨0x33b1918bf05c62cb1590a744ec25d12208ac4241f90f006f434818b0bd04d4248111080039c15409904581e80d205a0198098032000, 0x5301e2cd230003cdc70178d270e2db1f39f9d1530ee405a71e9aedd3754ae9b9027480d1ba6e6e1d76f82ebad6825f0e3f94e9019874c939a1d715a7000202a78f24e60e51388e6c3187482900035a200161ec1cd243619a4acd26126684000ae5d0a58521376eb⟩, ⟨0x2a214989b049223f11388603e21e20dd86c43401880bd8550286139094046c21810007883801960b304d82300ca0560178094030000, 0xc2480019a87cd9bb8027230352b6e298479a7c00079a6144007cd40e9c0da26ba569c5713cd370003cde938c0dee6b613ca4ba46308e366ba123552a2e2d2a0e298479a5400079a6944001cd2ce9c0cc2ba531c5⟩, ⟨0x2db15a0aa850625c11a88744101f30f0072c37a1ac0cf863830616e0b1855825e10c081037c19c0ab03d81a80b605001f8070014000, 0x39ac9cd818000cd62e58001a29fd100033593a745378b206a90a354876873e255f10c3269b33541a7049342ae13389e6a90001e6805671391818045387c58f19c003385c5ce1002600cc54519f224e091834803a6ff8d2e91e06⟩, ⟨0x30b17a0b585982b51558a104da25611f88a04302010fb077c3a01a90c105e02a213608d83d019a0bc04a82100e606601f80d001a000, 0x57c0cd020ebb1e06055593034d7f0003cd8569a35e73266d664818cc990c68f15938264d265fea6000335d79a013295bf4606000335cb9a059ac44033083cd6f0263cd000335bb9a3c714bab35c3a726692834b8a66b40007e5e09a2a8001f96c27⟩, ⟨0x2fc1790b3457429f13d89a84ba24e12088d044e2180f887283761b00cc05c42b213208d83941a40c805081900ac048018808802e000, 0x81a60c059f561821c036585d90820e855599fc52b125c53066714de490009461f934618002f25b13e26a5b7c600034b6b9346078a000696c71c0eb65806a00dd4b5b9590a1e0600cf4b3f9600100100666bd87e21a88611718f91270481b2c9⟩, ⟨0x290136897849e23a11188304041dd0e406cc33c1890b8052427c12908c04241f80ea070034415409204401c00c205402280e802a000, 0x9cccf470f992552483629d06165d102c781a626017b57858a9aef54d412a41b5532652eb00514beb97826621573269bc8fe292e91e0630920006978f2e977f1606a5d9c53893066f493824006983f57982a7⟩, ⟨0x5752b41514a2a4f0265929890245c21b90407d63c61d08de86aa3221778af052e27212688a04061de0e386882fa156097842010e000, 0x1a66d25be170ef7fd253e130f739658da9b9cb2c6d4dce3963ea72c6b9c3539628005a90006e6ed4d5c9658dcccb173f4d667af9f9eb33f2cf5b5957199ed73ae68fc2f4f7325ccff8569fec5edd4008d3fd89ff07e07a7082ffded4fd97fef6a7fddfb2b53ff17dfbabff87fe0d5fe21f85e9ff0ad37e13f97e9e61d987f533724000f34000d30be880a69b97d37adef865f11af577c38f86df0f5245e3faddf10fc45f0d7c31f0cfc3bf0ddeada7⟩, ⟨0x5ab2c21584a7851927912b48b24231fe0f187203691998c305ac2b11520a5c51826711a083c3d81c90cb06302ca13e01b00a002e000, 0x4e043829cd000f0330ee075005ab000efd70f3800dfb736238c9de957a57938e578e4eecabc88e08c738e164231a4906e3a7aa9339c792049ea64cdf1e4ccc9d99329c7932b265f8f26524cb4993e3c91692ffc7928f24564bf71dfc1879b4f429614e268789fbed4bf790f08003a77ef21ead4feeff6f87b3fda9b0fab60002001e9e06abb0d71b9cd716aebf31c9ab933a4cef645f1dbe407db2000400100036766001196c1a508c3e2a857bcf1fc86c37364f5a6⟩, ⟨0x3de1dc8e486da3461970c245f82d51658a9050225a11b881c3ae1b20bf856824e11808583e81de0e205d825811806702200b8046000, 0x243d0007520006711f34001b1e7620006712f4ea33f1643890db4ec2737c958339d031be2ac15cc000ef470e6f6ab047337b5bd2c3ef677a3bd0c3ef477a7bcec3b7a71c8e9dbd28e41bbdd3b8631c769dc2d70c238dd39e49e336b1a613389e7060001e6b839405ec6067076809d5800783589e0961a13000782f87⟩, ⟨0x2fa1638ad854a29813889984a624610f88543dc1db0db06443081750b38558292138094847c1f40eb06302dc15a08803180f8016000, 0x1ef38184021d3c99a4a0d2e299c80001f97824de45b09c001ce3ce6c0c000671d72f0148cb908056ce44f004b4f42938930437a9a7c525269309303488e002ea4d248005222ea4c24c0d6400013ad0006441d4800f63f6be43e0004002d3c26⟩ ] def tableRLRRRR : Table Block := .leaf #[ ⟨0x4bc258126886e41f1fd0f4c6e035a19a8c405d22dc1678b1053a26712008643c61bc0c4859027e13207f83d41a00ab03c014c060000, 0xa46dd5e18002800184bf1bd20c3cfc5e3c1fce36ac8a9bea5a77564ee715632acb1bc212d8001846fc7ba761b55954cf4fa5e6975a7697508db8f429614e268464d2df92d2d61188001e3b4b58463c983f108c38f08a60fbc22fe3c291853bc7dae70b4dbf34f25cc96ba770624b7d3f8a4001705a4b5d3c0ce0a4969a9c6560cdd3c18d8ca4199a7c651ba3d3ee8fe1d87dcfee8be1b87⟩, ⟨0x7ea3e91eacddc69a2ee9624a2e4f026492888f645421690887f63d41cf0ddc68230b1730b0451c25b11b080c3bc1b90b28408102000, 0x2302f19978cb41e395b78db65666291c521856b156e15a427f856c008638a71e38995988db506a8adb71d600c1d251110b0000e37c56fb52de58e6ad016fd8dba38f2de1bed37d86fb2dfaf8eaffe0e836e68ed6006a15f2886e3c21b8413c984c10ae397097e10972c000c25ce3ce7984b3cd00071d4f8f098000c754e3ce758ea3cd57451c1a126f1cad44207e395a42b4f081b8f1c0d43cc24ae3d0f06f0e9e03a85874f01cc2c101369e03780e6034d3c073133e9e038899807cd3eea0de5e9dbc9ca174eaa3e285a0db2eb2ca0f8ea1e154727a98a148368bac71e7e4c1b800067c02153000200131be38f3f2237b800100047bfc00441b784c5c7⟩, ⟨0x4d82659290934473227109c8043cf1d50e146dc3471900ba858e2a4137099047a218100877035219f0bc054c2580d805101ec04e000, 0x613a079ad25ce81903bd690e6000303369d037d68ee640df033e9e06e819a065d3ee80f9b69f73f90eb4f21ce9a5b5af9fe3cb6a9b4bc796d335b682cf1f24d928c4800f249870002edea8c371e0632413a4b9a000fbada9f74f4c001fba9a7edd7b76000b4f034e8c7ddbcd0007efed3ce8a7dffcd96b6fb90ac8158e7297c796b4e099c1071e5acbda3e3af0401752d61ff1c090e380018c15c9⟩, ⟨0x4f226592908fe4492110fec7c63bc1ca8db868e32018b0bbc5782a5141078c31e16a0ac852c27412d07d02e412806f03100bc04a000, 0x23d24769e5c7540019c7acaab3bd4c7537290b9438f1dba3b8724000c779e4c771e347708ef1c98ee31e739600123baf1c000c767e3ceb98eefcd81a75bc770e68002efcd78ba7af0b4c49dc9c61d61a28bb55b4849a102804f3e9b2e15900195be3a07c97090d117b5195ae3fb3167de9c78d30437e9a68cdf7ffe08ca769fefe6653f0365374f124c48ba7820a247d3f8a40018202245d3c0d03f4489a9⟩, ⟨0x62f3129818bf85d52a2929892a48422e909c8103e31df0e647183591a78ca861630116e08e431017e0ab84c81bc07b03200c404e000, 0x40c00a5f52606ad9e943b9812dd2c304a7095212a02531e9d4b1354db8e12d92c284a60950129c25484a53d389622a9af1f94d29a69088554cb8e1106a98843de38018774710fa56bd5ca3128b69c4b0945b4fe2900044ae94534f030959289ea653001a3c0cce74ac5ab677c3eb48c9d8695d65780d50498928400268eb4ecef07d4918bb0b2ba4aee1a9892e24c4940000b473a781a7660001e6bd15029ec4001426e482a45ece73f1c00080c384da90508bd1ce6e3d0c5a6accc001000f4f034ec55677cd⟩, ⟨0x4352090ff47b43b31c70dec6d03351890b7c5aa2ae145899047e20c0f3870831e16a0a184d821e10506f02b814807d02b00dc054000, 0x19f2cfa62626d52001e72e1eb779ce6e7490e009e9e6f44ba489497e11a75074e003ea661c001c92245ed3c0d3be4ea3f34003d22c3cef73a47cd916a46fd3c8ad22cc8dda791ba46cd3c8e7232e9e4729192469d3800323969d237d6dee6309d23c56dce740c91dab6d733982001001e1e06adae945b9c9456b6b73002cc2a3f8a40080398147⟩, ⟨0x6793379920c4a6002a194789ba49c23b91807be3cb1ac8c8c6082dd15c086440a1e20df86702f2156063024c11007b02a00bc04a000, 0x1034f2307fbcd000ea330ecc95af1ab589c813199e1e9807e94cfd4944bf28e62ad1e1622a6ce3e17b85fea4571f01056fc2bf4fb13ac44b125581a70007130d4e251a65682ae1a15f057c0ab400042ac9b86e3c02a3533753fc6bb92df1ed509bcba3f8eba5cd775336e380191f470a013c579b743dd13a942601371272a5b909b21368f6825bc000355a78f0ee8c43fc7a62725c00ac4e61401589004e613139e0cc262eab104e309aa96c8f6484d209a611012daf1d9d884a0001d3c2671380019e11cd675a697d8c0ccec4d2bab⟩, ⟨0x45621790287c63c01d98e0c6f23561978c605fe2ab14909ec4ac2230ea06843241840b985502941250720338156088032811802c000, 0x2b99a11ae7000309e69eb98213de7001613b87f14800400709bc3c0c001855e26b9522b0e6454ba6999b74a14c96312fde2d5a20ce380c5b9e0d1d3465b19869e32f8c9a32cd3ff21fc47f0ffc660fda77f8a50510334e6126086f334c0800347819a56b61356fed800327f080ba7ccde188a390dc4e51f34b89ccf6697120120051ffaa00100161f33f86⟩, ⟨0x4222048fd079e3be1d68e206c63301858b905a22c715009b44c623c10a87c83841b40ab852827a118079833817a096038813004e000, 0x8309cf39ea9897c009d3cb1a560d31ad449fa78952248d3c4a7123c499a70006253d3a250ae93cca850f032258ae8dcc850c001000f4f0357434593ce45915d0b98002860e1c02800186061ea864270001893000283a90acd3d19a8cd15c8023a98ac8010d4c5620016a478d35cdd1587322af8af35915a4577ac8aea2b3d62245ae67ce⟩, ⟨0x4182038fb07b43bf1d68e206ca33218d0c2c5c82c114d0a404da25511708243c81cd0d404f42521190818378172094037812804a000, 0x7f35806cf09b4c1ad16684d8e0c000c9f5a7000f67f16000bb3d27ceaaad7714c23cf7a0003cd000f66b22000e7be74e06000f65f17569b8b0034204f1c408a99b4e000d4cfa9a98b4c202d4cba7ff1ffcb0004002ff08003b90f4f44a8d618df16c3410703b6a6082b1635362bc103a981ae080d4d8ad6b56b2d62b5a7596b45ac3ac⟩, ⟨0x2e016a8b0855a29814709f44e624c11b88404061ee0f1075c3681990c085a4288121077035818e0a004681980b80490188078016000, 0xc1218226d395a27c67818b0d30300019f3bcd0675880079f3fd36138922ae91b048007a2f8b0600955570f8b57078a000cc0ba7000f44b16000ba23303eaaada714c23cf8d0003cd0dd22000e7c7f4e060d11756b38b14a251044e09⟩, ⟨0x3131760b7c59c28d14009cc4ca24010d87d83d61da0e486882d815409e04bc23c11108103cc1d00c305a027010806c023808801e000, 0xf9f91d3f335f19c001000ac3a000f4fc668335d0d61b000da90016c35d4800bd22eaf049f9afb0d6000644bf2e44b00010005caa115c5a111c5613b41ae0cc791dc25e090006c17d5b62aa0f7c5a0fbc5a0ffc5b04ac11d5d821608ead1343e449⟩, ⟨0x3071790af054828c13b894048423111008443d41dd0e806ec34c17f0b9052c28211a08483881a20c205b82900fa06b030813804e000, 0x3caac000c8880005caa169c5a165c5d7455c3830003c7c21b0cd2566930933f6800572e852c2922255830aaebf7c87aecb09c001cfd3e6c0c00067e8f2f04e321d26ce74e2ccf91270486e89002b22ab9a5e23c0c19a267e30001e68001914bd1⟩, ⟨0x32f1840bc05922ae1508a4850a274133895848e23d113085c4001f10f387003521820af050c23c10c073833014e08002c80c8016000, 0x1a011d3ac67c54ad32477a6589e41e8527127ccdca69f14949a4c24c0d3c2b24d24829ac930930348d39131cd032593225a468f3c8f2b00c1c8d2a8480036336a6530604a2c65d4c9c05090006c63d4c88e9193cb911ae9cb97223000272c001c88be5e09⟩, ⟨0x3381898c105f22d415689e84e024b11207f43c81cb0e0069c30816b0a204b423810b07e03541900bb05502640e406501f00d001a000, 0x2268bd3e449c12000cd13a9acf002639a000800734369e060006685d48001a039cd012159cfa32312e9918975e09878f758287b2f8ba080758001a029cdf041a386692b349849a01e002b97429614d49ac60d7607d2b8f6584e000e804736060003401b96e31⟩ ] def tableRLRRR : Table Block := .branch 15 tableRLRRRL tableRLRRRR def tableRLRR : Table Block := .branch 29 tableRLRRL tableRLRRR def tableRLR : Table Block := .branch 59 tableRLRL tableRLRR def tableRL : Table Block := .branch 0x75 tableRLL tableRLR def tableRRLLLL : Table Block := .leaf #[ ⟨0x3f01ee0f2075a39b1c80dd469c31b1880bd459c2a914e0a3c50825f116081c3ec1e50ed07043381870aa050426e11e02180cc04a000, 0xb5146b574600dc613688342600dba0f40f8309f36b23180c001d3c26b78060e05be81d735df596cf4f429614e2696b9df1d4bbe12d70003a777be5add4ca9a520d38240e6dd6000cb51a706a5580532c9cb4daab850f034a933acef181604ae60004035000232570f3241cccfa688813f0d992679e3c163490d346cd17a7⟩, ⟨0x4d426192d095248a232914c89242a2018f7876e3a31c20d8466230e1748b1053e27a12a88c04161e4093836016a090035811803e000, 0x8b33e449c120070ad2461387835a5e23c0c00708d2682e0001e680030edec4306d05ee9e0da3607c1947819c0d30f032819c0c70e60b81761e16cb58f536b542bda9947f3c4d4ca3f9e2ea6518cf13539e1ca2fa9ce12516d4d83c4a2dcc0308965c012808e68d0a95268f485d58e689a4309d46be3b6b6d34c1f56bcb76da7d63eaeb133ecb57dab9f61abfd5800336ae9e82326d6e6801b5f49⟩, ⟨0x54f294143c9fc46e223908874236e19f0c645e82cf154098c36a1820ba058c2a414308e043c2040e3062027412006902f80e004e000, 0xa2a111d39d0173d0b9899e392e0c9006e402d4892453c030e6a9f1d9e6c204e3bd8554569d14d94562672538da4ccd50911ee4af8f1ccb123a4c69f9c9168c47e1f13bc5cf53f907dffabfc7ff04d5a2959c09c78836d2492e12ce3e3b2da0c7a06b802780b89a91221d64eaa7e4526d24b8f6d7d6b6000e9f086c334959a4c24d0700015cba14b0a404620a5801c3f4bb10a87cfb2c27000741a79b030001a0cfcbc138a1ed9c65d3⟩, ⟨0x45821a90387d22e115e09dc4cc255123087c4242050f6074c35819f0bc05b828e13608783d81ce0dc06182700f607102c013804e000, 0xd94ed27128b024c871edd08c5b4e7d7607c9406457c19255c3864a38eaafe90a285bd0cf2199833c26730cd086fb8f15ebdc9a7201f23e15420019e3e19a4acd2612684d800ae5d0a5852116ceb01b575d8ab92edd96138003a129cd818000d092e5e89c64b849abe9845739f224e0901ab74c9300153cd0103a973c0c054ee9818000d086e680019255d1⟩, ⟨0x5bd2ce15d4a9c52b284139492247222f10ec8304021ef8ef073238f1b40d0461628a12287c43981a50b7856026210a07182f012a000, 0x370167a1862e079b43085c1f37a9bd3ec4f643a858bec7f54716b3390f52ce5922075ff8e0078e5278cd1b9c7d7cc38007afd89ebb61ba85d3cc59b63bd3890014db30f0350b40003cd9fbeecf7a3351a783cb39e3c4f187b536062724d849ec7242e27a71e25681f887b2093f8f12b00fbc3d892d6093b8fbda6e8bac0005258f8eb218000c962e3d90fa6923924b793240e4a571c05dc939e481e39291c9017b251f935f68d7c35e8d7e35e5800ecc0dc15c5d7e3a7⟩, ⟨0x56029d94589e64ce25491d87723961b30d0c64030a1738b1056e28713e896847621e0f5874037418408c839818a06802e00e4046000, 0x89b2264d5c4d6853eae1510a6c5c4c28536ae25a89874f12b44b313069cf4cb342632d15c1706218d890536c10c0ad050d6b24c38fab8daae1f569ab7daa61f63bb23c4800791d89d9261b83fc19c3f11383b87f148007885c1bc3c0dc40e0d62712626a4d6d5c4a63ec6391eedd38069f07f2ce1a48f91b931c1c750c542fb7e855163823e8891b4fed8e53d92e69c022deacee80d9e0e84172a0008dcda7c46000f68313d99c37663b3f89⟩, ⟨0x4b624010ec7d83db1e50e9470035b1a70c9c6042f816989d84d8245110074432817e0af854823e0fc06c82d8126070028811003e000, 0x7c9566881c7001d2555d1b343fe3c363ce9462a00635bda794349c1a42659a8b52000cd37a79a77a3ed5b89e87d8001e6cdc9d1dec6069b8fa39d5c34dce3c61414a0002d69e9e06000343d79b1d8745db151585785162e2142ab4fcc634d0004d518785661800e99a4c99a2674320008d3f2f4d2d89e639a8b13cc6002e24009cc5c4801798989005a7a92e29899a26ed5801d3749⟩, ⟨0x4c625091f08aa4011ee0edc7203691920c646102e115e09ec4d225a12688f04562210fe075c36418d0b4050c25010d079035415c000, 0x175ab075356002e9a9938e05df96df364bd016202c6aaef8f6cc82dda9eea4173d5c9fe02e9cb93fa059f96aada4bab7c80003c784c3267000344679bdd0826db1aad0001001c159d3d9e0c61270cd66692a34c0ddcd025dab03a2aabd48251555ea6aaa049f53dcb0253abb5d415fd5d7e4f0b00ca20f259342d569064eaac808bc9da20b3694b95375e0aeabeb0dba1b29191223192afc7⟩, ⟨0x6e435e9a58bee5d228a94288f446321e101876438b1b20c7c5f82cc14c89d84a623011288183be1d20d586202fc15b09b01e404a000, 0x68f5333f9364ca667f300094be69c2b15d5651cd61309122be55f3248e3800b835e9cc234abc97c9384e2b9aca59abe00040080617915ab2878f898000ce1197c522ae2b898449abb2ae964ff1ece6d3513c6635cd932a5fde08a71e089c5131ace3638c3cf1e2601877e4c4cb30efc95abc1e64004c989e3f573c0f87eb3756fc0d871856d44001b4e00af03627c05e07c5f807c018b84c006ffd1c302512ee6b89c000d12ce6f88fbf79181bc45df9c5efab2c5e9da31a5ec82feb03437f86ec02d324e11a202c39bf2e7538f1329585c97f02d0ab038e007d583a9⟩, ⟨0x7293899b48d5e6903389948c5e6102e79700b1a54c29b129871e36a1a28c805f62d81588a3042618309f03e41a409c03a813804e000, 0x1b7cc36aaceda5b1401ae9fc79e2ec4e4206f49c8e0de920db23527cafe2dc5e3205f4776b462fd53c001d3dea6aa73a07ab1f4f6c000563dd8003a7f17e1a67b4db79af8c976715458a30ba009e69b71d1413572593cb2898ac20ce3c6817fc3b7862a596355d531e87a70f52e80d1b9876ee3bca9311ea5e5398735330dbca5a99868002d48007ca189b27c98679930c4b4bac18a878d1ec39fbb5d478e8daddbad3cdad9ae4c94e7104580003a8da9588c99fe3c4f05620367468171c6cd447446d104938f2d2a674f1e5a4cce855e9c7999ed2eb93333da5df26668b4bae4b4b999a1c9⟩, ⟨0x7fe3e59e98ee674e3949c08db665a2e514e89ae4b023d11548603cd1cb8dd067c2f916b0acc5181de0a704601a60a003d8190046000, 0x37e4df9b7e1d3efd5bf169f7e9df877e0d3b0736a4e9d838b5174f2545c3771c0ebca34e3c98e037ee21e290a6c86338ab9a97071d8cd1881710d26358cd81be55ca9b1e29071d363319a9318c430161c9d4037b147d57271e4e9806a03791479571ab14e3c9919319c79321262e4c571ded8ab834fd653dada76985131e28cbad0759e62a78f16d227b8dc5e3b71f1578989eb15bc6e1f1e27a2d2b8adc370b8f4ad6e1e2714edc3c4c5aa8aa5cb8b3f26926a84dcd9b2461ce72045a0007ac9cd66771c016acd10c8600f22cf459f599a61ca3d271e3d1acf69c53c78f4516722ceacf5e3f42d6c80077a70007463d4e8bba6e84c038b637461d3800770189⟩, ⟨0x5df2af151ca284c022e90d88003d91d18db468c3371960c145bc2a814f09dc46420b0ea867c2f416309e04541be0ba049817406c000, 0x326a83fd08c47eab26b0002f2f9da4f1fcd5d314a3d279877a792e74c122a2ab0a6381c792e49bae981ab098a88c6ff8f26064c1f1e4c0498292ffc730ad26178ee0c0c2ac984e3c989930525ef8e03964c071f224e09000325f7934315e1073400080e092f7c781806fc979e4c98092ef25e64b971e4d3c980e3c97c934d25ff8f267e522c9a6e381c76b6ea6d6bd345a68b45c7710d16938eb4e5c42c5a3e3daa56acea5bf5c95ae3b7ea92b2df578edf9e2b1f1dbf345620663c7⟩, ⟨0x59e2b59510a1c4db25b129c93847722810748263ee1d68e206aa32217e8b2854a2600fe87603821910bd85582040f806882400d6000, 0x3596d04f59ad3d0d06b1bc7a19ed631ac571f58cd65b588d3a8a1ac769f224e09000758bd4d0dd76d3cd000544bd6274f032895ac3ea7583d61758dd5ff4f81c6b07a7c04b037d60b4f80e7fbf81be9fe9ac0e34f80c7d3381be9ffd9ff6f533aa9ff1c8b768b1c7a12b3a40423c1db479b42638e000f8b3a9f1534d8747ede1ef0f87ac30007fe8e9df698001108342007ec71e06a35101239bda6644c7ec7edfa7f393cd1d3e4d7da5644800164d9e5f9fada7⟩, ⟨0x4051f78f307523841af8cb06423141768b2057c29914509f44d826112a08b44101fe0ec86d832215008e83e01dc0c705001a804a000, 0x110dc3443001589004c42f13289aa0fab944959dd5c9f60008019a784ce27000347739abb1ca1bb1819762942f5679264cd0c6984ce270003474f9abad7b6bb1819759f6cf56001a7861d0f8f6c757d3d47d4ad2927fa7e9e63e9000b4e0017fa9a781a8e48001e6a450a2b9d185708f9217bf1e15b952847c70bdb8fa0a6b37a7⟩ ] def tableRRLLLR : Table Block := .leaf #[ ⟨0x47123391007f63c81d88e286c633c1978c205fc2d915c0a5c4ec24910608043e81cd0d306702ea14e08c039417c09703a0110022000, 0x10352032f15cd9df64b50969c4ffe3d5e9a5c0003a7abc34d3c9d578f267a2aaf1e4aaf09e89c96138917a3f7cd81bc6b245f560031bd678e0915b5c66c7059e35e33237ece987000c5911b18784ce27000347c79a23ee683f460611f534179623b6682f1c47488ec9a09c79eceb6a23ab4e0006265f1e264d1e9e6d65eb4d87aced65ab4b8794094d1004f4e3669⟩, ⟨0x67332818809b84b91fe0f9477c38e1bd8db06c233e18b8bfc5ea2d215e0a944ea252111074c36018d0b5051c2480f4074831813e000, 0x42861078784d42821058721364c35eb5a53e289aeb164c7b8559deb19565cf18e29c83331845cc2771266484de44c2ae70afc700f5e9f0e4265c2ac27524230ab0498bc87116ee14c985bd692165c703398f487802673613753e84b61f2843e449c1200184be24bd0c68ae6868343c0c012849e26125868715930a4a9a422f0f08dbac61e119757850e1d43a94afab200ad795d3d3e406989a9b80d312033a9b6269e55cbc4d71ab9789a1a5e3c0038784c001ae3e1cbaa5206e6b83a000309688fb4291122c00c044e3c6c1fafc7⟩, ⟨0xac054da9a146a9ff4e626952de81c3e69970c8e63730817a4b845ad2cf162488a43b20a0fb478c3a513088e842618303d8158046000, 0xf987e47d3fc87f307c8da7f9bfe48f9834f23915c1abaee3a361bea65c9a76d5b120f8f0b55b564482e3a55928d0eb827881f9d85920030c7e89d0235a000d402cf36261d26aa72e08d400e92ee6670c6707cdbc742d6558519fadf557b4e955ca333ade7cd67e6e163800a00cc00dc4e711ab0002a00e79a130c935139684690072976f337e3374f0e31f7c792eb350634d190093c99a9401279201226a4f241ed53ea9bce9520174017254e28baeb55f314f2b26067e484648069857c0004c794e51933f2eba782c66599ac00e38f035230a183cd000343338f48ba866f365200cece015c014254828aeeb3e4ccceff8cbf2ea0c764e4b99a0f97279292fd127a230c031c2b83f18f24f8f1436284726283c50ce488c0999b1970c74cefc974b265a72444cae3a54428a6eb2e4cab85b9df7196e5d218e89c8f333045fbc8f12730ad1c2ebe58e3fc8084269fe3f420d071d3c27e10787⟩, ⟨0x7963921bf4dd4678337191cc285d329293c896246220e8ee86902d61588a384882210ff076c36c1910af04ac2100d8042017406c000, 0x251b46a38d31241649ec903948dc7915122ab93d4c99d98aebf94b8000523a4aba02d7c781a92fabfae682d34183879a7ee40168a0bdc3bd3a11810462095417034ab164a4096a1567b48f28de78f1f13c768e269d5bf204e477c5934f6d0e7a77c3da7f6d2e9d23aac1c587b08c78f3ca923a468a64ecbfed5e071d7fd3275577e91ce344cf297607c75ff2c9d12394f288d10aef997cf1d2a891c74f99d95361e8fbfb2044d4e40ff87036d84713179b08e26c21178c4fcd9f34e9fe6cf9a34ff35fccff3369fe63f9afe69d3c30c08f87863c36e1858770f709cdc3e88df70f5c7002f436b8ef922a9c71df23d5377c81c7⟩, ⟨0x3cc1b48d4468c31f17c0b4457c2ab1480a0c4bc24d11408043b81d10d6061c2c4153096047c1f00c205c028010207702800c404e000, 0x8baa00040014957917719ff8f09bf8d898000ca1de3d280943dcda4ff1e3b9b68225f544807a309b33001572b6a648d2000dca9a9b4ca002b98004f21bacc12003f207ace40b90ad67213c80eb0e238003b4bdcc7138001b4bbccb4b7697000172a06a6a1c58160068f0338f7b4afcc00300e8f035a5371e9ce⟩, ⟨0x76f3a51c94e106e135d1a4ccdc65131a1834bcc5bf2cc15c4a94514276931890a3411950b6c5502360cb85fc27409b042017406c000, 0x7c1620ea6c400f7f537c5d92b587d2cb392f4aa5b072e5afbd29e5de261ece9fd8ac24fef7cb27055d2d57920f5a5aaf241584b54e4cb3d96b1cb96992d2f96bc0a59e71d7842f019677c700032c7b8f4a4e58e735997cac399cf25b4f1b463624f619ec9450d1deb29333306658ca532b1655f265deef3ddc000d221e55132b0495d2c5f8f914699fc5e665994665b2a8d3b28e080dcdda7655b18c4a9f32ab6553264de48f1e31832ab953ac8741ea3dd77bb32208000b21ee3ccc0e345b307a20f4a36f71cb1780015ccb29ad3d3c9269255258a4944684e3dcd5a600111e5f8f22fa45a71e45d48bd9167c7⟩, ⟨0x45b21a108482a3ee1eb0ef872e3861af8ce865632017d8b5054229713909a048221a1010704338169083038417809703d011c018000, 0x424b8041cb8850f08c0006119726116f1a11771a95f0001e68e9c6121d2c0e98011321e9f224e090006640d4c725000fcd000400398fb4f03000531e6a606a56400079b1c78000f46bb2f1663498da63898c74f34ccc65a79a6263198c34f0c1218442ff067cc602b65f1c00cb123536238017a9b1182c1d4d8004ca43df011ec44d3fd000dd173fc327c46⟩, ⟨0x2e41678af052a28713c09ac4b8251115085c41a1e60ea87003141790b5057c29c12708a842c1f80d5057021c0fa06502c00c4014000, 0xa05487287001900fb97a431c498337a49c12001a131f2fa143c0d0980014f2c7cce0ceab004d00c8006f2a2ccf9127048c9a60168021e69788f031a4900034b379a000601474400dd2cfe9c0d5df78ae27a58e00079a002a01174606⟩, ⟨0x44b21d10ac8424021f88f487863b71d60e746ec34c1a10c606002e81618a884241df0dd068c30015b094040c1a00a003d812002a000, 0x171a4c24c0d78354d3468d3a9eef53db13f23426a492176297d73401e9a0034781800802d314ab083c5b083c514778c6d3fe92855a441bc7259f8b2c0d988add84a1f0d29dcff1ccfcee79477d380030346a605fd320cf7eb879366677d3ccbb26c4ceda797765dbd3c0942117ae3a7a0c51168678750c666ed3a816a184cdba799ae66f99a34f086a9⟩, ⟨0x27f13a897449023b11008584021f70ef87003421920c385c82a612908f84001e40c8054825811207a036016409803b016008801e000, 0x40d622b8b58aa7f1483486a781a70953035866e2823bf147bee0228f9127048312a75f5f5a6801be400e8f035f003d49ea180e6ad03347bda05a8f29a1e852712628681513e292934984981a05449a49⟩, ⟨0x2020f987883aa1c30dc86a83401880b805982a613b095047421c10107a03941a80c505d02ac12608403c81b40c004801b8088030000, 0x3f24ca99fc527b23c0d512606b10bc598c28781a2143d8a6e2e699fc52b925c534663092f269cc93824e24c92b443627c4d08ce29b0e5c5c133d0999e06b0e7c5⟩, ⟨0x24410e88143e41e50e6870c3601890b8857829a140098849022e10807a83981b60c8059829012c08b03c01980b804401d0088030000, 0x36d4b9963db8a5e21fc5211e90f030728900036d2f9d63a38b6821f34cfe295c92e29a3318493ed139927048708979b343627aa1a134c2892e91e06b16fc581ac5cf1606b1a1c5⟩, ⟨0x28813a89a04ae24a11e88b843620a0fe87c03ba1c80da85c02c21540a484e024c11c08203e81c40d806002cc11805601f00c4014000, 0x7c10fe292834b8a74cc69255644ca1a6852e290c91337a680c112001c004800bb633c86c4fa6684d62692e91e06b20bc581ac82f1606b20fc57138001b6b1ccb6af6d60000f2ac7e71584f6d50001f3a06⟩, ⟨0x2b61518a584de26511f08ac40c1f10f2075438e1b60d4866031217f0b5056c28c13709684281ea0d205d02bc13807502900ac026000, 0xde45b09c001d3a2e6c0c00069d072f014895d582c6cf0494f42938930437a9a7c525269309303502aa4d248532a4c24c0dae4004e3418952007d7163fe1121e137828900034e279a001d6ee44000d38be9d922e2e6687⟩, ⟨0x31d1738b7458a2b61560a144f026e12388f442c1fe0f3874038a1ae0c685b027e11e06e83301760ac04d81d00ca05402380e804a000, 0x16ecadd98002e540d65438bc91e06000d6ebb98e2781add50003e740c0006dd4f3aca3716a4e64cda6c9c13329332b8ebcad34d75df67a67a6aaeeb3d6d81459e980a604ada009f4fe8693e34ae491834d3ab0019cbd093686ba14b8a41815782f95e3b3⟩ ] def tableRRLLL : Table Block := .branch 14 tableRRLLLL tableRRLLLR def tableRRLLRL : Table Block := .leaf #[ ⟨0x3531960c2c5c82bd1540a4c51027312007fc3b81b70c9057c26a12208a84101ee0ea06d83281760af052024c0e806202980d004e000, 0x1b7a5cc010280790086a6add400514d57a90b6a96a054e09664560dd92fc8e23a71bae5f85cf4710d3ed436a58984e7c7dd3c272e3269dc5e84e1c63d3f0df100268f3721fc525069714c998d24969a4c24e236091934f05f0348e891f124efeef3477138001b769cc⟩, ⟨0x2ba1558a6851a278137097c4aa23d10387f03e41cb0d986502ea1560a60494228103079038c1780af05102240e005701f00c4014000, 0x3f24d299fc523066781b224c0d65078a0006ca18002e3e26818000d940e4d93de2801cc747ccfb56978b000d1e060da564db972ae6d334961a4c24dbdc0017cca14b8a4063dd8130ef2018d7617c2be184e000edea73a06⟩, ⟨0x63830897a8b0e51524a108872433517a0b3c538277122087c3b41770af852826e12408883c81900b5054024010c07303480fc04e000, 0x90c06d7797106220bf2e63e175f903f336a3a5c3fbe3cc7b2ebcbf6e40f4cd98e950feb8ef310171d0f3a1e1214cd9352d25f03c75efe0bbde61d0efa5a2be017cd71c16faf8311eaf30a87752d05efcbdfc17771f14b5e088a25e03cc1965f4f8a52f03e6027eda7f2ffc83d3f97d31bbbeda792d24bcd3c961259c977a7f2ed6f7d3d03ba0ed31a2a5771c000d0e6982141d681d4c67e3cba4e340eaa79f44ec4890f513bbb4052c717c000f472d50fe2908e6878185144c0c0046f7bea5594ce2800ab299c7⟩, ⟨0x76139d1c10d9c65c3149810b865742a0948894246021d90207a437e15189f048c1d40d686182be13808883a818609c03a813804e000, 0x130fe62ef1e61d4c3e98b9c7987733ce62cf1c4c3511490e93149793a65e8933c7994e713f3934f80f0729a9076301eece3b34d383af80ee013d9bf667a7c0697e2075b4e75aee51e625c4925e4025fe886c86d4caed1678e17d79bbd72df69a78436113d5e12bd7183aba799211e1e3c4f1e3af47864ca45e5c2ea71e3b047c0767c5dc6676475d991d4b99e6c5104a20f219d7cac439e3af9488d9c75f27119a235f1cbb747bd9058ecee3aec461886dc7b87600079333de211f2e67b43fee5cd1d90d1cb87e71eb7930fea3dbf263db43f9e4c86487f3cb91032eaf97119e21c72e22343f6e5c861880dcb⟩, ⟨0xb925b5ad1166eb10576ab8d580ab35522a61512a64518a8654029174721d18af63921bd8c0855c28913208f43f80f4041013004e000, 0x6d468e9aa4ea461d37138001a8c3cdf97802723037cc400f8b613ca4ba46308e000d7d3abafa0001000b5562cf8b62c78b2b1e889d0b5a0f40c944c4bd254ce455053b888da14dabced513cca7e3cee1e9d38d1a76f1e9409e91a66676ba27f2adb44af894c1395296153f63029dbd1e588d8441c28a92bfb86f5cb629ad013af39544a99c2652f1d0b6a9392a7cc6013b7098614322a8d8310aa50004d15109823ca60f229a983d09265f5a29ad7cd08d70b3a8c3a2554ca41452bce1106a05ee3953d1566c5fd3b6a20c125a2a898308aa40002d14c48da12f4792c1e0534a05d60f224957d60a6a5f3223582ce230d895361c179b8a28130a2862651f1ea73d37f39fcd4ed6b3d79e4550154453569c9700aa114d22a7eba071f5f7d7c352000ebeba76be7512f9b79879ef333f0d5a70bca938e3cdc4a10a1c99998f6cabba20e1606854d06e369e0c642c8cc5a3de3c768cf31663f6059067b32d399ed71e60ccc359821c7eb73025d3cc5c98b1c7⟩, ⟨0x2b715509dc4be24711c08a44342090fb877c3aa1bd0d4067431417209f84c424010f08003641980bf05602640e406501f00d001a000, 0x30ac001a9b8002d558dbe2d8d9e29e477096611c60d67b2558d2e2c0d635b8a1c0abc13e0a2ec67f15f41a918001d3c90d86692b349849a8de002b97429614a6a8b0d117721152af6584e000ea34736060003519b96c31⟩, ⟨0x32218c0bcc5bc2b914489984822080fd07b43bc1d00de86a834017d0ae053c25c10d075032415009d03e01a40bc04d020006c01e000, 0x206b0cea8ed6834aa6a8cb0c75e026f3e80070e026f3ee2400f80274f39600201000567ea1b0cc6126a86a0d1229a2606fb4004f1600338369c33005ce05a66fc02ad3f63006e2e6e66ead73720256bc1202136f6b82117825b8d6c270012a72d5d231847⟩, ⟨0x2fc1768b185722ac14b8a084b624e11388743ec1e90e1066c30c15f09e03fc1b80b9056027412007f03901840a4048019809001e000, 0x3093530c00572e852c2927e5583eaaee69ac4eecb09c001d4bce6c0c0006a5d72d86200daa5e74d623cdd2e983029c000d4b5e6fe0c065914f08078b5de8fc3fa3bd218701bfa3b0f4293893e66e534f8a4a4d2612606bc5549a490ad549849⟩, ⟨0x4cf236109c7a638e1c10d6c64a2fe16b8ac053028012c888c3e01cb0cc055c27012808483a81a60c305602540e40510180088022000, 0x49239b352175ec880049705c7304c000dec84b69e3ccb492432e026cc4b7de380016a4d2168c1771e118a21cba4e3982928852e8f8e00065ebf1ea6e4bd4e68001839bc98391c68393c683cb076f8f07860f241dae3fb07379df79a7f5e7d6fd3faebebc7adda79bc2aa5f5d9fa0d3801b9949f0c60ef72e937283b5240ef64f16370dcc9dbbd93f9d03962d6de7dad33e33ed69921b0cd25669⟩, ⟨0x8b84399fc8fba6e42ee14f493c3e11dd0e106ba34517b0ba45882a714009844782170f9072c35c13c08b83c01920a204281ec0a8000, 0x11aa254446a441ee3c6607a7a0005e9f441d7a76f4f0469f1e53acd47e8206322faa5b50161800c727b5c65b0cb3552b8727156c1ac3e998455c7a3f2f8cc205b22eaa59501217f8c717b5a65accb2d52a872515681abbe988453c706acf96e2acc2287cb0f8c8205322da3f0fa5f8f129e2a9c5548ab00d562adc5568ab3089d47c71e25345528aa7155c1aa455a8ab315562a8c5588aa1089b8f26064c2726192932966fbc700032fd393284b8c000b13c13876c3dfae9e0cddc28513ac0068c93dce37707ce890032938670019a9c334281d4800385c69ee6f3b6ce74fc044a665fc8915caccb19993b8e0997dc797ab1fad4d4eb93c5cd00032b1b8f74125e2f36830064f033b75b9a9cc9249366e42f3d92000bc7⟩, ⟨0x4152018fe47d43c31d00e5070e3741a20cb06122d9161896049823611588583de1ca0dd86502e214a0a0047420a0d50658290102000, 0x5d23c0c7924000d521e6804f4b3918467138668b00969540038ab467c500148e30f232000c8df0f233c3000200100060022aed53172afa7e46d82e1a134b1d9aa890001e6fadc003ec4c23d50f0003cd000d5fb22000ea88f4e06000d5ef17688f8b093000800f0f0355072137cdabb5ac3171989e9fbd407a7af4f846b08d5883fc7⟩, ⟨0x2b21518a404f6266129892444c21510407dc3d81c90df06c43141670ae84e824e10407883641980c204d82180be04e01f80d0046000, 0x275356e8712554c81aa68143c0d26201a62c64d3666a834e0900ec97717099c4f54d8000f34017a6ec8c0d257d3662c334380574d58b1550ec0d10fa6681aa960001e6830ac4927552ee9c519f224e091b34e9780378d⟩, ⟨0x41c2028fb87923b21d28e006d234418f8be85aa2b014589a048e224100877838e1a40c085d82be12c08a03bc1940a5024009401e000, 0xbc159212eb27e9c5c33560ab325c53414fd33ab034d93f4bd04fabfa58052d5fd2bf4d6afe9af99f57f335eb3abbd616f9d5dc061e38bdeb04ab4c3b009589024c3af12049876e2e40565d6500098b001d64f178240c4658002ac87931aab4cdc5a0555bbd5d0293d8eae806568756019006601aab4f549f311a7000c9a713249c31c49⟩, ⟨0x3811b80d6c68632b18e0bd45cc2bf15a8aa0520278134890843e1f80f7072c36618e08383c41c60c205a82380d606101f009c02e000, 0x366ba1235596ce2d966e29847aafe00079a6944001d581e9c0cc2bb2bdc5b2bfc5308e0006abbf34003ccbc88003aaf3d3818003cc8c5d954e28043e5be9e7ce000532d000be9f016c05daaef9b0d3d71b0de43002f065a5c4f55ac000f340bb714c8c0c05eb8962c0db64e0635fb4c9⟩, ⟨0x24311c88904181f70f407743941b50ce864c3001760a784f022a10207783781a20c005a828812e08a0318148090037015006c01e000, 0x40d082abb325c522053e449c121ea25b915a11ed0f030b289818000d598e686a91003b566ba7a8a2619448c9a6ccd5069c12caa2e13389eac60001e6f49c606f735b09e525d231847⟩ ] def tableRRLLRR : Table Block := .leaf #[ ⟨0x2d015d8ab453828f13f09cc4bc253123087c3f41f00e586e832a1620a8850826e12608083bc1ca0d6057823810806c02e80d804e000, 0x3e255f10c3269b33541a70493e2ae13389eadd8001e6802b711ec60600dae21d58f19c001b87f5770f00260066aa28cf9127048c1a400eb8675a5d23c0c6124000d5ace6c1f804dc606b329c5308f569c000f34c288023ab53d3⟩, ⟨0x2a014989f84e826312c88c84342050fc87bc3b41c20d5066431417f0b8056428813a09584842120d604a82140f605401e80a0026000, 0xf1489d99e062934c0d7734000f32ceff17c48cf08d030e11aacdcf16ceaf17a0cf9127049c49c3659a3266781ba24c0d66bf8a0015c5c001e9c001b8b6e79000b4f518d0355c90003cda739a3206a90a35487687⟩, ⟨0x30e16c0b0056628c141096c494239115080c3ec1e90eb07143641a10ca05b42c613c095040c1b80c4056026812006902f80e0022000, 0x2ef95df30003cab419c5613ddef002bce818009ddede6699a4b0d26126ef4800be650a5c521d2326ce41c23224f0c27000777879d030001bbbfcc2a148008d563ea0001aac5d4b3dfc5b3e9c52e91e060017775f9d035dd50013ce0011775398ba67⟩, ⟨0x2ec1708b405862b91508a5c4fe27212588543fa1f00e486fc3301830bc058c2ac14709d04b42400f906903040f806402600d004e000, 0x84d2269713c0d68938b035a24e2b89c000de0ae65e09bc1400079568778ac270057781b9d030029bc09cca51566093e75678a5624b8a70cce29bc30002b93785c00172460d200040010003bc2bc8b427c5b429c5b437c57138001bbe7cc⟩, ⟨0x240114085c4041f80f0075837c1a70cd05f02e415b0a884e425810507d83501820b0051825010e07a035816009203e016807001a000, 0xb445c5c13389d19e06b43fc581ad10f16a0563f8a40d206c781a80264c0d68df8ac27009178939d030046bc45cc9410f9a67f14ae49714d198c249e289cc9382478d2f2686c4f666⟩, ⟨0x21a10187943b01ba0d1064c3041750b18564294140094044020c0f306d832817a0ae050825010a0740328168096033012006401a000, 0x2342638188098fc6602361b2ad0af17f24ca99fc527b23c0d512606b41fc51cc2878183143da0ce2e699fc52b925c534663092f269cc93824e24a572443627c4d08ce29⟩, ⟨0x2eb1620ad0502266125890044a20c0f486e434218c0b9859828a13b09104241f60dd06782e815a0a004a82000ca05001c808802e000, 0x69bce7cc9cc60086ee301934f0e02c24090d84e0901c32160342e7000f74716001ee8028f1569d78bceea79e3773f8a40670d5cf034d1a3a65235d314301a6418f0431f5a9e852c29c4d216a92a6054e4caa9a531932e8b2704caf0cc⟩, ⟨0x2c01588a9052e28813889884ae240115884040a1ee0ee07483741b00cc06382ec1610a184b021c0f0065826010206a02600d402e000, 0x5c92e2993318490d31935927048192c968a3472084a784d140b24ba4781ad27f1606b4a3c581ad35715ff54ef389e639f90c73d1d2b1d6ef36c7bbb402bd3ddd80350055a7ae199216b3273e9c8c7db958fb32636381c0c7⟩, ⟨0x2e316c8ac8550281138097c4a022910e083c3f81e30e806dc3541830bc854826210a071832c1700ab04982240ec04f01b809001a000, 0x40c0052f5973a06bd5e004b9da6692c349849bd56002f994297148648c09cd790608c08cb7c309c001dea3e740c0006f50f30040b19e40026b12f50000d624ea5a89e297687f14847943c0c1c224000de97e75a81e2d5e8788318fe29⟩, ⟨0x26e12a88d04362030f8078c3a41c50dc06a432c1870bd85c02be15009d84a823a11307d83c41b20cc05281bc0ca04d01f00d001a000, 0x31459d22b8a02e714c474c24943ddc87f14941a5c53266349228a24c24e236091d34de48b2133d09a5c4f035aace2c0d6aaf8ae2700037aef997ae6f5d0002e540d6a938b491e06002f7ad798e27⟩, ⟨0x30b1720b3053228b13d09a44b8235115085c4141e30ec86c834217a0b0854828e12e08583a81c00c705001f40ac03e0128060016000, 0x1ae11d3b2f3c53917faf00074f543499a4a0d2e29adfa001f97824d245b09eb7c8003e6c0c0006b7bf2f04e23906f7074c2355cf91270480e9ba7c8a007c68081e839e0601cf748001add9cd000f903220006b7774ed787146b29cf429614e26⟩, ⟨0x3451920c445d42c714b8a204f626a12f89484562040fd074c3601890b30564290137095040c1f00e706d02cc152082039813004a000, 0x23bb9670e50e006ab91736b2338ec3ce22b2138dc39e49933431a613389eb8d0001e6938baa77d18189c65539e5800670987270354df9735d000e1f4cd26692834b8a6b878007e5e096a35b09eb858003e6c0c0006b84f2e128937cbde5d300035c1b9a000f49bb1⟩, ⟨0x32418c8c185f22d21640a8452026912708fc4682190fb07483901ad0c3058c27812408483f01de0e4064829411407703200c404e000, 0xc126922d84f5d04001f360600035cff9782711d1b7ca3a6088dc1f224e0900c6613e8d003e3402038b41e0600c56120006b9a734003e88c88001ae6dd3b66dc5304420f429614e2685972125b858060e5a8542654448e0870084001ed0b4f03000cae4bcd⟩, ⟨0x3441978c385da2c81538a004be23e10e88483e21e70e106cc3481950b704e024011607f03b41a80bb058025c0c805602280d004e000, 0xb7ab35bcdc4da6e22de2d37f816f7abb81b7ab5c97216f7cb001b7bb3dbbdbc5aeddc026d782401edd6d7035fce0036acf23b84b308e00064cff2c000c99e0007cab5bdc581ad6df1699cd1104e9818774e09809c760003d4b9cdda7aa1a4cd25069714d745000fcb⟩, ⟨0x36c1a28ce06222ea16a8ab851226812e08ec4341f30e6064c2fc1690ac052826e12408c84301ca0be05a02340f406c02c8118042000, 0x35e1396c3100615e1ba7265284e74c19d4e0006bbff3700c00b36200374569846003ba1b4dd00015a4000c8aee38b98914dcb00101fb9a002b3db7d9ae52cc3069fa1bc7449ba8984ce2700035dbb9abfee4dc746065ff526db9618a2668694112f8a26ff5004f5600371569⟩ ] def tableRRLLR : Table Block := .branch 15 tableRRLLRL tableRRLLRR def tableRRLL : Table Block := .branch 29 tableRRLLL tableRRLLR def tableRRLRLL : Table Block := .leaf #[ ⟨0x3d91d90e2c7003591a60c946362f41668a9853627412688a04021da0d2058c21e101078037c1a00a904e023c0f406501f00c4014000, 0x15c52fc973ab8c3b27e6609764b5c5b98c27ae297e379d035712bf17ccadfb5bdf935bdab7e72704d6f5ae19cc536b3ad38f488aee9a78074f4a78ea6ca02171e442bd3e7ff9c7b379e39f49b82ed3c8863c70b37400e0bb5e3c90d86692b349849af1a002b9742961493c2ac1dd577e764cdf6584e000ebc373606⟩, ⟨0x4041e70e246c831f1870bf45dc2dd15b0a9c52c28913e095445c2070fd074c3921a20bd855025a10607d835015a09c03a813804e000, 0xa03ae8a1d8871e80e3bb6744eec3f8f4eb7cdda7af80e8958a05751e3fa1a4f8d2b92460d35ef000672f424da1ae852e2900035eeb96d1c2bc774c00357b8e5b09c001d7b3e6c0c0006bd8f2ebd90001e8d78768d3d3ae795ccf935ccab9df2704d731ae7dcbae595c97923667bf2d5c779c0006b83f1eb8cdf94e70001ae27c7⟩, ⟨0x496238912882e40d1f40e9c70434f1720b605942be1588a9052e27012688983e61cc0cb05bc29012107d034c176098038813804e000, 0x1fc4f53010416cf340010b3bf11d3c0c1677e1fa9fc5bf0dfc3ff09d3fe4df8b69ff12fc97f15d3fe4a00080040018008002fe45a7c46a21b11a4cd466e330001afabcda7df4e722767abe9f37f16fc63f1bd3c0097e37c77e230021f8d71c000d7cfe68003824bd1af9a00079a0006f64744000d7cfe9de7ee2800701d87af91003f9a001a6ae1ca69d7c6e6c10b8277c7⟩, ⟨0x3eb1e20e7471037e1ab8c846203031790b9858629c14789a048a23b10a07cc3a01a90b98540256114078832814a07201f8068016000, 0x58040003cd8e6712f3a3682a781a2489d65e58a3370fd016b8e3269b33541a6118003e9bc39e98aff3cd713d7f70003cdead547b230345782a39cb001fbab3bedea358bbdd63edf8e3ec6f750fb6e3f7a3bd5890007f68d4fec7a6000f7930f5facef1737ff2fc5f4fff8fe2df8a69ff1ffc63f12d385a7f8b69f224e09⟩, ⟨0x42d20e10348063f01f08f407823b71c80dfc6b034919e8cc86462fc1750b805a22b91508a242e41670ae04d42240eb01e80c804e000, 0x526930930340a8934925c693093035f1800a5cd1a348050be2dcf6c4fc8d09a9248049b02bcd7491e066c557b0f8b7b0f8b7b438a00de18f000789ea00d801980082bc40004a7194e43d9c3a96024d18a9ef6578001af1e1362605ad602f9a001a9661ca955809e694dd005f0c62021800189de00c00168002006200bb8f09a1358055849cd⟩, ⟨0x4211f58e5c51e27813088f84361f80ea872033018e0b5855027a12e09184381ce0c905f82a013408203a017409403d017008001a000, 0x149129bdd4f6e3d4a3a8d1490e9bd54f5e3806a007800ee29495172a305850b0b006986a43b6603e80353e0546fa7d793bde3c106c90501920019dd61e77dda3c5ce6e733870154e670fe2900080a272f8781804d396c4a4d4c7d2218f912704831aa40345f2ee681c80d8f03623ec9f21ba1d21fa86bc598f29a1e852712628681513e29⟩, ⟨0x91b46b22090be83c40b9f90f7a72d3831b40c6260a2ea163cad44bc252123090043b1ec0ce46242eb153072c34816e042017404e000, 0x46969ed55575d8f71e34acf69763b55718ac71c003ed6c3c73639d8bc9af20ed3befb935641ba7a12b4d9f8f2ebd8e34b82875323aa347cca0a1df2d7f8f221e44c71e441c886912fc79758c70e5bfc3a691ce001a3464c9da1d92d738f1a2dd8071cc94bb0f96abc7aaa064a1d874b54e38013d8669e5d3b1be96f50e8647100010004000e873c6879931c7912fc69665c6a469746c6ea6274ba4e3cba29f7b47318dccc4d9747c797434bce7de51cb6371320aa914c4ca8dd2e8b8f3242648f1ec26bb08e686a97cfee44e58af1dc650045008914c8a90161d2c3e7c2c77113c600e401cc01f4362e3bc8a86b5c786c6f2261acf1c0380042008314bca8e951e2c345870037c3581dbf020c01d9f082787c7a9d552cf8f5122a14d2ece3d424a9efc7⟩, ⟨0x3731a00cd862230517c0b4c54028813c894845a2060fe075c38c1b50d406042ec1650ac04c424e100078832816408b03300fc04e000, 0x36e78007a781adcd00175308ce270006dc9d5db916e60003aabe1bc5308f61ec000f34001b71362003ec3ef4e060036dc1d5c99a4a0d2e29b0e6001f97825acd6c27b0de000f9b030001b0dbcba4a2000702b74ef7cf14000d869e680036dfec4000d86be9def4e2c697763fc7⟩, ⟨0x74138e1bd4d9c68d33b9948c566062e995fca7c4db23c0fdc7d03c91c40d605cc2740db83ac1760a804a82280ea05002080d804a000, 0x1a866483a9a2b1452396c83208571f68900069b2d6bf4fc1ac30003cd6e9dd25589ee6ebb1b1569f61bd75f629d3cbc0a25ad724a754874e38ed59fdbf41cd069c3b4b3fa3f3f401a90ab99fe3db8a3c3cfb35da880026847c7b712787680252137d98ed40000b422e3daa6d63b0a8f5d8357e3580d83a7d5f1a2cd81877d8b4838794cfff7d8f6e12469f1df63520d9ffc3ca0fa89663b707c73576fb169065563a6693ff6661d4af1e4e7d40b315b82e39aba36ed482e7fe5333aac45985f6254ae3e9e3c9a6615b81e39a1b57268ac3d9c896d513824c81576ea0011a7c89382464d36ee5ba7ad⟩, ⟨0x5e72b3140c9bc4b924311848a043f20d0fd47a03ab1ca0d7868e32218b8c285c62be15a0a3c4941e70ba85082360e505f022004a000, 0x3e4380f33da77e4d0199eeff3a3d5f1e7b35155b44ce389311b2cbe3f9c54aee9eaf1cb274f578001596469eb33abbb4fe6692e348003584e9eb0bfe2b57586d5f5a70006b0fd4d60fa60002ab9e87771eb09d3000357269e13389ec590001e6d60dfc06c606ac1ff7ed5cf515642867de64f1ed084bff528e2924528513fe3da0f97fca51a6760a48149f44fb8e322e917fd0e9e83e5098e39fae718f0ab78f2fc6880f1e6104c4c6a39c7a17b43a53033837718b455f8f9216a1ba9⟩, ⟨0x90246622950c080c3eb1e44e2067b333190cc3c5eb2d315489de47d2058db06302a613808e83cc1bf0c4854c25810506f02a00e4000, 0x264415352935c783201ed78f063e89dd1746aafc7a16769119254c857201c799089901aa671dfc64c834c7ed52f8f73f688a98475f083a919e2289b70abc738440013ac2f833a8a89a3a98ea33a92f86d3f6059b969d40c3e5cb10169e1fccb92201d3da3b65c145a9920f1d5a52971ab52cb7de7971d5a4a970ab50cb79a7ebcf1e3ab48b02ca5bead3b2dd69f8f3c38f3ddd5a3a96e55d1569ac0abcefe3cf76568d3094537a96da1c95696c0a2ae779ddc714eaa5b2ad25813a149c78b6e286663ad5a392554389fbf71e873d725a303c7ae494330336f1d2903b322e7d4b2de0d71dd98c179e3d58a766105e38f31120bc4f69e3cf959eefc99f8b3df7973f127c572c1f3cc403829c707cc702677f71c1f29c0899ef3bf667c3fcf8f59c7⟩, ⟨0x4d726312848d644820c0fd479c3bf1da8e386d636119d0c5c5ce2c4138098c4ac22f10407c03cc1bf0cc05c4276114076822808a000, 0x349a6117f47b4e82f22841813e3e06302987c0be04f02587000e03f0e6053076f32923c0c605f075732e70001c3c0c6053073f3aec1759c3dd72ebf758c3dd7eea7870ea2000400139bbaf95c7a33519a2058004e3800187bbc98775c681ac768001e6c4da87b7d1879b0f0f8f0f261e643c2e3d8e925b3cdb1d06c379b06528a03250720cd121aae71e88ecc8a997f22ff8f303a88e48be2a69c7⟩, ⟨0x2cc15f8ac053a28c13f89c84be24a11b87c83c61d60e586e835019e0c305f02c815a0a104d421c0d806002cc11808202d80e0022000, 0xd331a49559132869a14b8a43244cde9a0304480070012002f05ef21b13e99a13589a4ba4781ae2a71606b8a9c581ae2b715c4e000707e73307de0fc0003cab897c5613e0f83011ce818c0360f6e6000700187300383d39d4e69⟩, ⟨0x2b114509dc4a023b117087c4222000f987883a61c90da06943201810bb854027611407e03c41bc0b704801a40a203e015807801a000, 0x6ca272f0148d7a76bf9d3c1253d0a4e24c10dea69f14949a4c24c0d40aa9349214ca930930357460013cd062548007ae89cff8448784de0a24000d92de68001ae7fd1000364bfa771c78b99a1df043f8a4a0d2e29⟩ ] def tableRRLRLR : Table Block := .leaf #[ ⟨0x3861b08cb86122e416b8ac051628112e08983a41af0c605d42bc153098047c21c0ff077031c1700a704d02340f005101f00c4014000, 0x3b6fed574fda6f6dddaa69c001ed3b4fda876a3ab7138001b2bfcded4fb4ed8c0ddaa7699ab00d3070d0adf1c0342c765d4b07090ad71c0e134ac381c36fd879f259322732704811f0a58cf4349f1a57248c1a6ca7800ce5e849b435d0a5c520c0ab6c075ebba66f22d84e000eca373606⟩, ⟨0x55c29b94b4a104e325f12648e844f22290807f63d61e18ec0640281138098c4a41b30d3854c1e00e305e02c811607e02b8108042000, 0xa55fd4c0d4a15605ab9554005d4d5fc002ea4004abf75349f55fbaba4f6842d5c0d49dd607ab0006a98d3d07d54deaf9744db68969a69b599c3b37e6571088deb4b937b809c769a23f219c3337d656f0889eb434d24daae4db8e3269b33541a5caa338266f23f11a668e48699ccace10f0001e3c2333776562d65a10e33c3e3b3766560d65610b421b6785c7613ae4dc2b7ce819725e159e6309c7cd6157e67cd59be57e66cfec5f3b67⟩, ⟨0x4d525f92608c441d1fc0f4c75c3691a98cf062e2f216e8a2442e2000fa87403521820ae84d81ea0d406482e012206c02b812804a000, 0x136bc300078af9c7000cb2fa2bdf1cddc935c379915eb8f0e9c403a987a6201d4c4010f46a4000acb98aec000b8f365c343f5a69f7a13bd3953f77e69c7ed4eeca0001c34b00051d7f8f17821a53a5c00020008bb53b27e3f0b9a6c4c000ea57a7b324d4b39b6644019f34001ed3b4eed32cc7f37474a42b2f7254b4f2a60236784c30670003662b9b4a45613b1d6133f19a556000f532b00007a9⟩, ⟨0x56429f94689ea4a622490f484c4051f80f907463821ad8d1063a2ea14d89d846a2100ee871833e16908303841940a303f0164046000, 0xb9926dbd3801773069ee57b93b4e73d4dbc0015cc937a69e5cc39e66dd0006e639bcf4fc8d52b324007fd6d3fd766a469bb4e73971aea2d3ff8026d9f0d3ae5ce70198c7c34aba5f9d38a9d2332c69e6579817da79c52607d3953532b69ca9940535d999574f388cf9fa700067109f3b4f3df6993b34587e3a1e18611161b8e6f5d0f0430759910c1a2c2f1c00185b7530b36989b24582e3c4071056a6204882b566ef89b0c57fe380066e189⟩, ⟨0x84a40a9fb8fbe7c73d01e44ed47523959c18dbe6c73411904b6257b29b148497c4791b88d286462d410407e02d01560978240102000, 0x961000001860006cf1f36128dfd1e2d9e00003cd38a20006cf174efe0f16cee0001e68003794ec4000d9dee9e173e2b5e857d96465a15f1ea862b36c0692934f48be83cc2833a769cd9cfab33f6e08d2f38f349c0011d81e3cd260002afa0ec071ed6acd352e9324cf72bf257e24d5f1e931ccf69354561f8ee64613eb4b63a6a9cc2909d1e7000e2245cf79d760e91348999cd2626dfcd56f8f034c492726069b5aae4d1100293a6540855d7a74e59483e8f1901900063f90446b07373d6a5214a38001a4fbc7d8c600081da07f139e90002405e8e3888b73d7c795c1a6a59619e3c274679ed2b4e96478f4e4f488199839e6a573c7dd4ce7928eb3956161b4878503cd69665dc7⟩, ⟨0x31c1890bb45c02bb1578a884fa24a11908943fc1d90e786a82d215e0a984b020a0f4071828812a08803d01ac0b8035014006401e000, 0x81802abd4756c270012f4fd5c23389c001bd23577a3de96000eab0cbf15c4e0006cfd73401fbd0f6303003d7a0eaf7240004002004f4f09a130018b3e7cd002767cb9a3667fc3680020010007419e9eccda66821b624d249bfb2002396c27789b03184b⟩, ⟨0x28913f896049c22710007bc3c41cd0e186c83501810b4856829a13b091842c2020e906b033016e084038817809e04201980a0026000, 0x103000bc423ce81b1078009e70008c41dcc5e33f8a44f0cf03151a606c40e000799802f8a691dc5654255ff9e2e000e2c0d80038be0a1e06c7555ee7600c8055a7ab912da224e24c19bd24e0926d55c8287⟩, ⟨0x3351780b605802a814d89d047c22610c87c83d01c10d8067c3201690ae053c27812b08c041c1f40d3064828812006902100a8024000, 0x40010003c49fc8c07fc5c081c5c087c57138001c45bccc45988b4000f2b01c71584e0057114f3a060027889f99a6692c349849c446002f994297148748c9b390708c893c309f10d8003e740c000710cf30a85200236677a80006cce75300df17010714ba47⟩, ⟨0x28313a09a44b024711c08ac44020f10107e03c01d60df06c431415409e04bc2100fe06b830816e0a204a82180f206c02f80e0022000, 0x6649c123c6979343627b334269134b89e06c0a1c581b028715c4e0007122733121e2440003cac093c5613e2400057ce818014e23ee6528ab3049f3ab3c52b125c53866714e2520015c9c4a2000b923069⟩, ⟨0x2b21508a4050625c12888f846220a10007643901a10c705fc2e816109e049023410707002ec12807c034816009603c0178088026000, 0x24cd25069714da81000fcbc126922d84f69f4001f3606000369ef97827101418993a68ea1f224e090ed13a32000fad08f08781837448001b4e1cd000745fd88001b4e5d3c0c9c59410f9a67f14ae49714d198c249e289⟩, ⟨0x35c1a80d0465031d1820b8c5962b314d0a0c4b824510f081c3c01c90d9069c3201770aa051427412107e033018409f043010401c000, 0xe46388e0792ebc12031aebc6010275623ce2e08be2c1be3a40ca638073c511ce037d8f8a180397380eb63806cc509ce8afd92fa232704bdd6cc8e9074e80012987c8938240645d3a3e5fb5ad000e7ec11f8781b3f408dc4d64239d64dd9c8425aff0b8e04d7f84000e9ea86⟩, ⟨0x33f18d0c2c6002ef1650a5c51a26812e093c4541f70ef874038c1a10a6850826a10e07483081620a204b82180da05b0288100032000, 0x695200469f224e091934e961a606b4001d290003d3c0da51000ba98467138003a5e6af4bbd2e4001d56257e2e247818017d2df56000406459f55990000b8f09b0cc0006d58f34001d2cb620046d59f4e28cf9127048f1a43345da5d23c0c346900036a9b9b960ef1⟩, ⟨0x2bb1588a284ee25e12788d843a2020f4877036a19c0c905e42c815a0a084b02220fc073833816a09c04881e00be046019808002a000, 0x40d6b8c01f735724480e93a7e531ee8ba740f1d3001f42f24f5d6e27b5b400079bf676f181be8e5d7802a781becd9d70eca7aa0d54e0daa7c7255f7e039f02e1d3e170ebc136ddcebf1b775f8153ae6e44b6489c1264eab⟩, ⟨0x63c31097e8bae5b02cf1620afc55729814249f84c625e12549164642170fa472a314178890c32a12305c027410806b02800b0036000, 0xfee0e6807178f380039b1c3e2ef3365ce2a11f3438681b17599b0e719afc5d5cc000b1d9b8fe290002000e3b271e0600051d8b930362e33351cc571d5f19c1171d5c6d7c56e34e0878eae32be23719704168cf8f68c95c5d7c354d2dc6085c381f7e1bc75f5c06712eeddddc0fc21f8e7469705c39243ed07e50fa110ae3bbb6776f77807e3113f22823f057051d19872244278e44208a0113e1f8a3f0048c5ddfe3b2fc89ef41289ff769ddaa20fa702c2e0fb826e912db7492a1f0b098060f07d073660a2a7⟩, ⟨0x71234899a8c0e55923f116486833b17d0bbc5902a112e08bc4482050ef072c3741930c105c4294114078833813c07b02a00c404e000, 0x28e3c3d1a6fad2355df5a285108e1638f087e110f1dc51ce748715503c65f352ae3ce73577633129b25338b44aa2069d9c21743b372138f39c95dd4f6019874d8e99bda2451014eca7a9c21a842c8762e41f1f6fe18e353b7f0c71a9198139bc65d2bb79ebb4ebc0039ec3112a875699a53609ea0a1f6d10dc80e3f55dd9df55a001e9e130001a53fc7b2df6c679b4c5445b57eab9b5c70018b1631b3c260038ba8f068f18173bd7448e19ccfee2ffe75c1a5e8d267ae38a71ccf5471333afc7cf5679b0f9edcefe1f3d99decf1e1c0039ecc399e9c5edcccf800070f0319f1c5e7cc⟩ ] def tableRRLRL : Table Block := .branch 14 tableRRLRLL tableRRLRLR def tableRRLRRL : Table Block := .leaf #[ ⟨0x6983399840b3c51d23f11c489842720c10347d03c31c80e186c233a18a8bb855a28812a88b83f61d80e1066c2ac0f305701ec0a8000, 0x472b1d3abe600093b9dbd7b69c55adc757ca000e77337ae6d3707bd56af1d5f2369b00053b95bd6b69a83dcab538eaf8db4d3c7778bc000677237ac6d3307b5569f1f0cd5955651a70022b28d3e449c12000d64da9c81f2c4d68002001d647a7818001ac8b536cd4000f37201caff636ccd94ff3768b43e10d4abbf4f6a25c09a7b50ed44b80f4f2e092e8f1f965e50f8f4d38007d6589f57e19e9b5c8ee3cecea7062db1a6271dda4533a9d9a31c5d5d3abbe38c609d9877654a2f1cc1db55a5f4d3d22c5105c7ad88f0ad11589f5ae09c7⟩, ⟨0x3a71cb0e246f836d1a40cdc65431d17c0b8c57c27912308ec42c2040fd07883b01c00db06782f215409784281ae0b2046813004e000, 0x141a5c538663492004cb5ba98434d0a5c52000cb53a98ac3400032d3ea4003000800158bef912d0800200169e134b46000ea4ba4781afe071606bf81c581afe17166bd9c0b4f37d4da1a7b0a66ebd3cddd37269e6ed9b8e6e8d3cda7376e9e6f79b2f4f379cdeb35b4df7a700066fad3a6fbc667ce⟩, ⟨0x2d41568a8c4f826912208bc44421310287d03ce1d60e386f43501990c205d42d614409784201e00e506902ac10805d02280c801a000, 0x76e139b030001b705cbc0523c9a7075b3bd253d0a4e24c10dea69f14949a4c24c0d38aa9349214aa930930343ff0013cd06154800787fbcff0448784dd0a24000db6be6800187f1d100036db7a77f738b8921e5af003f4fe29⟩, ⟨0x5702a59498a1e4ca242913c7f63b61b10cec5d823e0ed86d832216c0a384881fa0ec06d833017609404281d00ce05a022808001a000, 0x953a547d580036d7ea6dacd3153a88e2bf10a9c71d7decbfcbf7ee9d38ee9cd7de4b3de3cbfa97e230c1d395fbde39f263e014fbdd5371cf929eff20434fb9d52f1e9f6a3aee3bdfef7ef1911d75a29a7714eae7961e4f3da7a0a5508b83bb8a7e4b722e7e71dbfb53931270b6ae9f88aa2e395452bae9f304cc3f533a8ce09a99d426fdd4cea1389eb3678009f4fe8693e34ae491834db8d0019cbd093686ba14b8a418157c20f277b337916c27⟩, ⟨0x39e1b40d0c6583071710b2c54c27012f893847e21810587f83b21b40c686002b214f094046c1e80cd05e02b411006302b00bc014000, 0x26105fe37531c70006da5d4db3da6b676da4d48003293ea6520d32aaf7f0e9caab448d5fc1c7c334959a4c24dbb90015cba14b0a4009956756000cab1abc792ba2fb2c2700076ecb9b030001b761cb618a551b765d35d095323a706695c92000dd39a7952e54cd5b89c000dba7e6ca9b2a4ec606⟩, ⟨0x5d02ce9640ad255f29c140897a46921b103c6e034d1940c045b429513f08303ea1d20d686202c613e08583a018209a03200f404a000, 0x9d0e7349ccf4ec274c858f479d032640c79fcc721a2baacf871ec6bb90c15d367bf8f1442c6b390b15d167bb8f6f795cd2dc69ecf63ffbe3a99515548b82bbcb90871d046c5704d9eaa859c787ac41b132dda20da9897a8faf8f41057e8f1e82000011934bf438f6b86986422ecf1938000681f4c315f0fc7b6974dd2ae96624c94b6cf536d91927a9b6caf42d65b617c0e9edacb6bef80d38007a4787b7953b8b9b3070e8af1ce7acc1b3a29c700032db7932da38d1ecd3c5a7⟩, ⟨0x57329e94589de4ca25191f08aa41f1d68ddc5b02a514909fc4b422710107743a01c30dc064c2c013b084038c16008b032016004a000, 0x393289502c3f8f129e25671d42a44a6e3d0d320a69e2348ad2e38ad1a8a3c78945683b8f27f2250da0de3b90a9f4150cd4db91d35c5712a78e93f62543398e3ae0d536a2b2918057997250e4208e8c49db417c7af3e636b2774f88225f744cbf764d69e5fab2665e5d3cbf12f9e9e5f6b3434f429614e26b3225f2d4cbe36658003a797c2ccad4cbdd2f84bd7a797d25ecd3cbe72f5cbd5a700065e7d3a5f0c7afcca46aefac8aaef34f3a24e6ba7⟩, ⟨0x76b3a21c84df46ca35399dcc0a5f02e69674ada4ec262923c8943f61c98c8457c29d115881039c1980a2038418c0b404c81f80c6000, 0x4844366fc7000ecf70e6cfb20873b513abcda0e1f573f42c3ed0f571f41c3cbc798f731c8000cc7a98e285978f3ff6650c6a6b0ea0550bea670ea06f9dea5f0e8d625f92325a70d565456e377aaa17c7048b3fc78f51c4122234be3ae2aa8e0090d1a571edab2e29a8de09091a4f1c6cedb555c5151b8120a348e38d9cb6a8b89ea3682409ea48d1f8f51b0c1ccf95a948e5025f5f1e6adcaece26004d740301a915035e17bba1e3a2b58295c75c448ad20a4f1e0a481ff0443c75c4005660a401fe0441c7b698b87c0ac414703fa087f8e01f8427d306f47be1321fc427e1f88482110432086171a3913a9efc7⟩, ⟨0x66031c9848bd65c42c715a4a8851f27d135496048923210c48183e71e00e646e431e17c8b5055e28a13288f84321f20ca847012a000, 0x6af971139adaa6029f2e6ffc052e5b8688081c770cf00ea01ff1f682712753b4b39e7a9da57870d4f0dfb4a6a786ee18353c2fed25a9809ada5397c246d17a7e11ee4bda2b4fc34b9d7a973ab868d4d9ce70d7cbb4aafcab976660e1e71dcafa927786ce106d20f1e868a4275347dd213a9493e836d4d25941b6a7082c45758e0ee01c71c00180674e806ae14f37850d8c11098037838f0b74fc27f09db17d0668844019c1bf859a7e13b84dd8ba832441e31a802f836f0af4fc26f099b16d062883463300526ffc1af855a7⟩, ⟨0x7873aa1a5ccc86473151834bb458b26e90447d43871b50d0c64c2ff14687f43b01b10c5059428011d07c034415808703100f4014000, 0x5d266a94e63a773227f21716aa1e1a28bd7dba4923a2452b0808cbd4b5e3dbd2173d06da7b6ae594dcf72ca6e4b9a529e7c187abbe9e0c84f3a0c2e213576d3d2ff6cf93016657ccb0997332e21488b2c731495378f4bf9b3dcc04995d32be65c4cb785202cae9e455d7731295338f52b1446f1dc348afe6f7c2c694a7cc75e3803f549c1f5dc57e6803ef49c1eddc55e6b6676ce8f159b2e38619508daf78ed999b39bc5570f4d96dc304a83b25cdaf38fc4c6d5bab80cafd239769cacabf2dc59dadf52e81ed6fa9e8173fb12e7eed6ba9b560db3797c2d000da700136abd38003ac169f6acdab756000eaca001e9e06⟩, ⟨0x3711a60c9461a2fa1698b1856a2a814d8a304ca25412388e84261fe0eb86482b8151095046021c0f607603501940b20458198066000, 0xff99b10003721fa780a78b8921e0b6000fe3f8a4a0d2e29c331a490013059f930869a14b8a4000c163e4c561a0000c161e480060010002b20af220af00010005c784d0574000f24ba4781b006f1606c01bc581b007f160fdb5d2e3f1f9c7c69f8fbe3df8f6d3f3dfd15f1e9a7⟩, ⟨0x29914609fc4d424511908943fc1f40e686e832a1800b985902ac14509c049c23010e07c83a81aa0c605e025c10405d02280e804e000, 0x14297148302af95b645b666f22d84e000ee4f73606000372739780a4590fe553677a4a7a149c49821bd4d3e292934984981a71552692429552612606ff4c009d6830aa4007ff475fe0890f09ba1448001b90bcd⟩, ⟨0x41f20a8fc07c23bc1d68e8c6f83571980bf45e42cd15309fc4b024010d879432216a0a183f81ae0b004481e00ce0580238080022000, 0x40dcd5800ba934920017353a93093034e450013cd00079a5d480079c87cfe688001000b4f09b9a10007520006e5c734000ce3ee88001b975d3bf25c5e67399ad3a1187383785b8ee701637a117bc2ad8738f1468fc8f1e2ae9f90e3c55c3b367b68fc7f1cfcfc81ee3ca4e1dc3c78325065393e8693e34ae491834dca70019cbd093686b⟩, ⟨0x2ff16e0ad44e826a121887841a1fc0f6877036a1a60ca86202f616609f84b023e0f8077031c16808d034016c09803e016808001e000, 0x6ca787b9c6880f9b0a3800305a0055a781ae700001e6c68f3106c7d0d27c695c923069b9b4003397a126d0d74297148302acf5340e4e99bc8b6138003b9a3cd818000dccfe5e029181ba7a7fa7cd98025a7a149c49821bd4d3e2929349849⟩, ⟨0x36b1a30c145f02e716c0b3457429514189e44cc23f10d08343f81bb0d7067431216a0a584982020dc05b82b011205601f00bc04a000, 0x42d200169e1680006e2f85bb4f2668a33e449c121b22618498fb5a5d23c0c19224000dcf9e6cc4b0bfec7ccd5c6700076fd8334015d3c19874d32468d2400652405c8fa4c6b0b2deae62f596f573170009ab000e62dd5e09000d95f1731542e0000eab1fc717923c0d1a74c4dab⟩ ] def tableRRLRRR : Table Block := .leaf #[ ⟨0x5ea2ef9738b4e5962b01544a5451b27a13a89ba4c525691a08283b119f8a4449823710807a43901a10bd054c2580e705881b004e000, 0x3049d1ac000dc79e38c9ac0045c64b8efca308f7478000f34d288003ba41d381985793a78b93a78b19c3004adb194adc78ce51ab96d8466fc011c78ce31ab56d7da0e8cdd801f8e3ac633846ac5b5d6836336e006e3ccbc16d535b66b7cd699ae135ba6b44d679acd28f38f5692675993f0003c7aa3b308298105c91053020f9305153d69153b020793020054e7260208a9be4e4f9153bcca105566c752cce2e3d59aa1c333878f566687036ec99c1c7a05f337eacc1955e3d0e41d19c7⟩, ⟨0x33d1980c245fe2d81658a904fa26a12b893047221210187e03a21aa0ba05a828611c085835418c09f04801a40be05201d0088022000, 0xc270007750f9b030001ba83cb6188027ba87d3b9055967a746a259344e095c917179ae48f1f224e090003723f93734a2f9f34000c5e1b919c781a2efdc8be48001b915c7193580088bdb722394611ee968001e69a51000774bfa70330af27d71727d71714d29669⟩, ⟨0x3a11900b3057c2ad14e0a344cc25912608dc4441fb0f7071c37a1960c4858827611407f83a81860b205082480d605e02880f004e000, 0x17641f1214d58c228726ec75c68971dc7426a00050e43fc7b6e9c78a1b0cd256693093757800572e852c2927455839aaf2a25cedecb09eeab8003e6c0c0006eaaf2d86200b2eabf4ee7353d5e9dd510003cdd285883a29c018dd4ee6e19a4acd26126ea5000ae5d0a58524deab06e55e55ab913d9⟩, ⟨0x3e91ef8ee074a37e1ab8d2867632d18e0c3c5fc2ef1728af855e28813c89bc4902210fd07103721920b5851023a10506f02dc102000, 0x1030001bb07cbc05236260fa9f4eecd0012e3d0a4e24c10dea69f14949a4c24c0d7648002f24d248002bb21c93093035d770013cd0003763392001eebaf3eec480010005c784d7620000f24000dd6ce68001bae1d1000375bba77deb8b760eec0f1e5ccda4ee3cb98b49aab0f8ef8950e55d8f8c24535aec8bfb5b8d3c7⟩, ⟨0x3791b70d2c6482f41750b1c57a296137892044220a0f1873034a18e0b3849822a10407a839017a0ae04e824010606e02380d004e000, 0x1824003d05c4cc483a07cd000800fa0787818005d01c4c0c0006ecef34e70cc42e880019863c7bb3530bf9a061b1c0225d98e681aac7bb2c015b9a075b1c0345d94e6c3f005942ca013e9fd0d27c695c923069bb1c003397a126d0d74297148302acfad589fe99bc8b6138003bb0bcd⟩, ⟨0x42f20f10448083e11e60ea46c833a1978c305f42f016c0b3856c2ac14a08c44141e30de065c2e012b06b833014a07e02b80c801e000, 0x421a6852e29000cfd31315868000cfcb120018004000acac1c88ac0040151e134fb8003892e91e06bed3c581afb4f1606bed7c58cc054910c2a21897caf9cf8e00065e7f1eed8cbd0e69d108ebbcb80ae02ad58006982bc700052f7e5df2506e3800197bd6a965dea505e3e2600032fab8f76a65f5f36ed44c0de6fd43f506ac011d08c3e449⟩, ⟨0x29914209dc4d025a12488f045621c10907f43dc1d90e507003321860af851c278129081036c16809c04481a80ba04c01f80c8046000, 0x15a4a7a149c49821bd4d3e292934984981a31552692428552612606ad8c00279a1ea24003d6c4e7e82243c26c85120006ee8734000d6bfe88001bba5d3beffc5a490f19007d1fc525069714e198d2480267f189⟩, ⟨0x3f31e90f0076c39e1ca0df06e435a1830a8c46220c0f2864430016f0b0053c25011908403ec1dc0d9059027c12406b03080e804e000, 0x5cc800da4ba4781af73f1606bdcfc581af75f160305655b2675ff2a4d71e02fdab9aca964cabfdd499e3be19ad18e00aa4ebb845a7b7d778fc45711da9023377e39a897008b21c9ad12009f8fe8693e34ae491834ddf20019cbd093686ba14b8a4181567efab6674cde45b09c001dde9e6c0c0006ef3f2f0148d6c53f6fd3⟩, ⟨0x2d115e0abc54029314309dc4c425512488d841e1f70f206f434a1880b3856829213c09784801fe0f007183581920a804981c805a000, 0x139aa7f14ae49714c198c24850aa5c5348c1f2240026635e7f04143ec289cc6400079b7c178b3add287ba9011b3f8a4a4d2e29c331c49002ba3b49a4993350a5c5200373d6979b34000dce5a40028007001396a39173400400367⟩, ⟨0x2e11648ac8546298140896847e23511008583de1d70d8067c31c17f0b7051c27012708d04341f40d306002cc11808202d813804e000, 0x199038a22231f224e09030593996800373410ff53c0c17aa981b32a8001e6df22e2d68a0039c7f4349f1a57248c1a6f19800ce5e849c435d0a5c521c22dd73dc2ce99ec8b613de2a0007cd818000de28e5b0c40085e2ae9dc2475bfd3⟩, ⟨0x3321930bfc5b02cb15209f44e624c10587f03d21da0e5869032e1840bd05a426812308904141bc0d306002cc11808202d813804e000, 0x2118000d6d4e3de62ada5cd713de600003cd344947dfa3031aa1a3ebcb8b0417b88b8022d39e474591bb126924e6530027cb613c468d8187cd600001200002839334941a5c537938003f2f049e68b6138003bc95cd818000de48e5b0c4006de4ae9d7e60003d3⟩, ⟨0x4f0255915c8603fa1c40d846743131760b1453c279123088c3f81d90da06442dc14b09c04541e40e306c02d411c05e02a00c404e000, 0xb31b32d83195180e39616b31932d4318d17fe3d17fa2ebc7a2f745fa8ba71de05007e45ca894ab89062dada5c7762d07c792ec5a0f9725d8841f1e4c1f0761fc98362ec3b9399a5d87733b6cec474fdb576d7d8869f547aa0c49ab99cafcbd596ab3172d74b5babd4e005713ab400ae27566002c486689d59eacb16008d59e1f224e09000eac3134808d57734002003d5761e060016ab313030006bccbcd⟩, ⟨0x2d71640adc520281138098c4ac24310e08243f81d50e5869032e1700a484c024611408383e81d60d206282e414007902c00fc030000, 0x2e491834dea20019cbd093886ba14b8a43845a06eb07bd33d916c27bd32000f9b030001bd2fcb6188010bd33d3b06a819ba7241ae7f14ae49714c198c2481463a5c5348c0312e900099a939f0e0402e7860174e6a10003cdbed9c5⟩, ⟨0x87e42ba0c90167f33b19d64e6470d3641a8ccfc6672c6142c9143dc18f894c43a1ab0c30584278115078032c10c04501a0088022000, 0xdec4e68003a0d6c4000dec6e9e521e29cad61a68a6000c001900023004b304b0ae3c0d7af8000f34bf2c61f628a380edc2d82c5dc73173857d380039abea7351d352314ae148ec3328666a3ba3622ba52f5277cf4d29895d55b034fc7ae92199267490560ccb477295a6079e3d20820a580657a858b3b89d4d21df2f1e97ad20720a380617a7d8b23a4b7136dc8534777c9c7a5e9481882860175e9d62c4e925df5b8996e3e9a33be3e3d2f3a40a4140827e0165e9b62c0e91ddf4b8976e3a9a2bbe2e3b0e20bf94d138f0af6153dc49757ceb6edc63b08e3f60efb2ea5f64ec1b52faff60ba9ba24fdf397d6a7605a9eb73b02d4bec675a34cf1d7d71e2810004002007b4f60e6e241bd0d27c69⟩, ⟨0x3791a90ce865031e17b8bb458c29f1470a044d8262128891c4402080fc87503421890bf859c2ac14c093825c11808103a813804e000, 0x73697332bdf14ba47818005e6cee740d9b30004f3800466cbe62e99fc5227667818a4d30366c40003ccca89c5308e000e855ab0007429000f5594f38b03653ce2d099e06002f423d5800100468a8c012000c0004c378001ce4be3e26c4d08d2dcef63f36f630001e68003cae3d1⟩ ] def tableRRLRR : Table Block := .branch 15 tableRRLRRL tableRRLRRR def tableRRLR : Table Block := .branch 29 tableRRLRL tableRRLRR def tableRRL : Table Block := .branch 59 tableRRLL tableRRLR def tableRRRLLL : Table Block := .leaf #[ ⟨0x28813a89a04ae24a11e88b843620a0fe87c03ba1c80da85c02c21540a484e024c11c08203e81c40d806002cc11805601f00c4014000, 0x7c10fe292834b8a74cc69255644ca1a6852e290c91337a680c112001c004800bcd33c86c4fa6684d62692e91e06cb15c581b2c571606cb19c57138001cdb1cccdaf9b60000f2b2c0f1584f9b50001f3a06⟩, ⟨0x2d31648a8851e26812f08dc4241fd0f807843a61c20da869032a18b0bb059c2a414309c84481fa0d605f02cc14007902900ac026000, 0x40c0006f91f2f6148c85b77b7d3818000df1fe6dfffb54ec70494f42938930437a9a7c525269309303502aa4d248532a4c24c0d48a8004f3418952001e91473fe1121e137828900037c279a0006911f44000df0be9e5a7e2e6687⟩, ⟨0x4051ef0f447543a01bc8db068a31e1888ba858a2bb14b09c44981fd0cd04a022e10607b839817e0b004f824810a07002480d004e000, 0x19cbda97f6584e000efa17360600037d0396c315fbf7d0ba6d4a2ae074dc4e0006f9df36fbcbf6f63036db97eceac001bf6f4f7eb5fafab00b0016bfc28370fdb4e00ac00aafef506d20101faf1c01500145fdca0d4868480307e9c7f4349f1a57248c1a6f97000ce5e849b435d0a5c520c6ab77c5218ba6342ab6138003be4bcd⟩, ⟨0x3661ae0cf465c30f1800bd859e2b0144897c4a8235107079c3801a80c485902620fe07583741940bc055826811606402b812804a000, 0x2068200169269240140ea4984981a3f60009e680181549000f1fab9f01c00802a3c2680c006920006fac734000c7e5e88001beb5d3c787c5802ffe8fa92dfa7a743bf524bf4b4e87759657e8e9c3744e50d8b226486c334959a4c24df490015cba14b0a4009bf9f56000dfcdab⟩, ⟨0x4ca244915886240c1e58e286e633d16d09a03ce1980c385d82d214209b849022e0f007302fc158087034016c09803e016808001e000, 0x36e200df556c16f4f819607f49fe9f029dae353831ee47aba4f3668c0bf03cd3e09b81d800381469f033d3532250fedc6b8f4c85b32302b72c2a1f9b8cf1e990366360544461cb0287d6e31c722074c7db313029222ee57d43e3717e3c7bc14c4697d1b0043a79334941a5c537dd4003f2f049bc8b6138003bee3cd818000df6fe5e0291f39613fd9c1802547a149c49821bd4d3e2929349849⟩, ⟨0x32e18d8c306022f016f8b405862b81538a6852027813709584922220f6075038e1a00cb05bc2ae13e09284682020da04c81d0082000, 0xf144e649c123c6979343627b334269134b89e06cc4dc581b314f15c4e00073c1f333c167830003cacc09c56138003ceffce818000e77de665fee2d4d1ba68aa1d3826869dd920d9822f1f55ac112f8edafb4f7fcee51a9d560039db934faabd2a001c6dc7a7⟩, ⟨0x2c915e0abc52c27d132092c47c217106879838a19e0bb858829a14209684381fe0f407082f0124088034815808a038014807001e000, 0x142971480f6bb02779e403d6ec31dc7c309c001e7abe740c00073d4f30040b5de40392f96f500155f2cea5112a619d5382609959d280cd1f224e090dd13a830e93ad003d140a51e06e8604e932821f34cfe295c92e29a331849⟩, ⟨0x36f1b28cbc62e2ff16c0b2c5782af1518a504da246117081c3a21aa0c185a029a14209384381f60d405f82600fe05802380d804e000, 0x40c0004001668de5663ee2e653e2cc84cd15c7f14ae49714f231849000531fb920007245f2734171b244cc7be4cc7acd0000078f31e733ff24086cc70e3c1e01097fc1a13825fd0f85fcf93a43243e7bb0027ce07c53e7b9007bce01e57380e6cf6fced334961a4c24e7b30017cc⟩, ⟨0x2000f787883a61c60dc86a832e1880be85a82aa14609c04b423410807f03981b80c405d028811e08003781880a004601b80b402a000, 0xcd33f8a5724b8a68cc6124fd44e649c121d225e6cd0d89ee8684d50a24ba4781b33371606ccd1c581b33bf15b643fe499533f8a4f64781aa24c0d99078a9a267⟩, ⟨0x29c1488a004e225c12588f846821c10907e83da1c60c806182dc15f0aa84b8242117078039817e0a704a021c0de06502900ac026000, 0xc123a69bc9164267a134b89e06cd53c581b356715c4e000740473340368070005ca81b350f17923c0c001b401731c4f0367fe0007ce818000e7fde76697e297887f14847a43c0c1ca24000e7f5e7668fe2da087⟩, ⟨0x2d71580a244e225812488f844a2000ef87543781950b8052426211808583f81e60da05c8280110075034015c09403d017006c018000, 0x19e5dd10003811fa79b5b8a1152e7c893824069dd3aca000fad0103a473c0c0346e9000380e79a000eb1fb1000380efa79b278a353ce7a14b0a7134c8b3a4566405ce2930e9849287bb90fe292834b8a64cc692451449849c46⟩, ⟨0x31b1850b8c59c2c41598aa450425b127089c3e21e70e786f036418b0aa852027412908c042c1c80d906302e4124088030813804e000, 0xe1a5add4f4de689d19e062834c0d8178000f35ad54f47e8b89c000cf45e5cf3f9e88000b950366ede2c8287818009cf3fe580019202000b8fc66ca1a4cd25069714e04e000fcbc126b22d84f8128001f3606000381239700a440026831e9e0450003cd⟩, ⟨0x2ce1608ad053a282135894048621c10907ac38e1a00bc858829614009484402060f6075834816209804281c80ce0520158068016000, 0x2852e2903f19809cf4480fa661cb39186138003d0d7ce818000e869e60040597890073bfdbd400d77fb3a992f326ee364e09b99d98adb4e7a14b0a7136aa93a5475405cea1a8e9bc5130b227049f3aaef3c000ae3c799f224e09⟩, ⟨0x3a11cb0dc46943171868ba056a290135891846a22810b88183ca1da0dc86502de14a09283c81b40bf05a82400d205802380d804e000, 0x1824001887b5327719b67340013eb2218d3c0c7d54435a9004e21c87ff4f0fe4435a9882221ad4c433103ea478d32668d34e39a779801ed7824017792d79aec40babcd7220cd580030f6e9c001880b56000c4030feeab2a27179e0183c0c6ede6abab9a4f34a79304e6d334961a4c24e8730017cc⟩ ] def tableRRRLLR : Table Block := .leaf #[ ⟨0x2d11600aac54228913f899c4ac24911b88b443c2140fe076039c1aa0c905dc2d015d0a7049c2060f906f035017808902400d001e000, 0x18267a1333c0d9c8b8b03672de2ca99fc527b23c0d512606ce2bc506f9c0307818020bf342b389717da0883e449c1271240f7675be6807d00383c0de60142606ce13c5000b2d888a74e000e5ad96bc451a79bb463ec621dd3e449⟩, ⟨0x3dd1dc0e4c71036319f0c2c5e62db146099c48421b0f286bc2b613407f03b41c00d106202dc15008f04001d40b804401a8090032000, 0x16b35b7fabb5a0004d5e09000ad66d580036ddeaedba0004002d56258e2e256e2da5fe76306d260daffa70006cfcd3dabd6afeae957d209e3d1c9a55d48238f48da956d207e3cc20a467307e7f84155e380f3ceffc701e59df807871f34cfe295c92e29a33184907eb74e649c1203d0e98a14886c4fcae6c4dc604e9⟩, ⟨0x3ff1f90f747903a11ca0db46c633c1958c105c22ba1548a6851e27c12b8914476228100877036a1a70cb051c1b806302b012804a000, 0x30a4895560c8abd236b747b2c27000783ff9b030001c1fbcbe138adcbbd91d3000dda30f83e4bb4f362ccf91270487089005adcfd69788f0306889c1e000079a000db95b1002183cba70436799e4d0f3ec0030012d8ed3fa22ba6499fe7d0004001db1ba7f44174b933bcf9610c001000ad8cd3f19b91ad555747536b12ba3a9⟩, ⟨0x5bd2cb15c4a984da259926c8523a81c18d7865630616f8ae850e1f70e806742f016109003ec1b00a504d02300ca05402180d001a000, 0xe9ca29af1e09382974f05277d9a77c35145207120967cb8ba0a02bf1c000cd0fe4cd09e32d1a826ee981d441ef295a508278eb46609b3a5f35ae7bc66b3cad1750fc7e97ba35d3aba9b01e9ed26574f602d3eab9725e9ebdb4a0be3fa4fef369ee77e963b6ad3a08a7ca0ec71d2bc12e5a22f1cd73b3c72e3df244a65c793e2db6f48f4f6da8003a7b69b4d6b1fa4127adb67a7f47c004d38012edb870007d1d000b4f09b686c2145dfb9b86692b349849c20c002b97429⟩, ⟨0x67430897b0b9257528193d899e4a824091688a04291f98f3074a36f1a40b5852222e0ed06f433016209e84581e20b003e816004a000, 0x2028586c802bca9794b450b8f240001fa700776570f90cc00147760edcf3338f6af2c56e43200031dd43b6bccbe3d99af49543be38004bd73c700077aeb8e00061d071e06c2737adb9b7a3126fd435e3d4347459c787cb0f07977a261f75432e3e1343b0dcd792967147fb1d82a8b0a0fc15471f21247652f9345cf8f908e3b217c8b13d6ab68b971cbe3a7f0b55962769e8f1f2ecb24f2c9d4bda788f4964952ef1e5f7686f4eea624c9f1e899697f4fb7cedf544c34bda70a0658d0a034ff807d63a7fbffeb0facb4ff7ffdfba7⟩, ⟨0x7a23bd9bacd106342eb96c8afe55a293936094a49823991388524041ef8ee072636e1a38c885fa2d614109844741b908d03e4198000, 0x2aa454fce5e5e284d240cc15233763b655222cfacf2be3b375054708a47dfe038cbc3c77dd72839299a5c6c8a7c7c28e0d0f11963740c3f99d3e131e55e9f09bc25fcaad3801de4669fe96f10bc10d3fd2be20eba7ec1781fa7f034001f16b4f466eff706ed4f81b8376a706df033538360005a90007c0ad4becb85b5cbc1a3bfed4e0d1e28ea616bbc51e5e081e196ac001c1934f853585df3721f3ed64b62947accf71fb43192d2a0864277263bf4d690eec002a87951a66a88f3538f6b12c5ac77d9ad01dd4004d0f1a34ad50de69f1fb6cceecfdb467468567b33e0d141a38772c86f1de880a961c200cf2aaa3559d7a245c7⟩, ⟨0x4171f90f347503951c10d4868633618a8bd059e2aa14389c84c025611788203c61b00be85cc29812507f035c1960a403e8158066000, 0x45f4008ea40108be75276945f9ab9910f2621c01508a07361cf24d198027076d383801169d110ecad5c5d60756ae106001c3e0c598f647818003e174e68ec3955bcb41f22edd381a283dc5d9a78bb80010acb4f03616e0003cd1d452a9fa21e66a8171c000d4eee4e230005a9ffc9a9fc00139353f49767265d6002c4d1332878003a7⟩, ⟨0x9484549fb0e045dc2e896a8b0655e29593a896e47622890e87f23d41d68cb060e2e81628abc51425410f07282ce0f505080f804a000, 0x53af6c80c1da86453b16444fbb1f789515383f8ed6ddadf9b666b7d2a24fba9f77b63e60e9431d9103ef3c73eec7dd23eb9f783eeed6fef3ad5d5b63d711aee0983950c5643dadb71daddb5be6b7ad6f2e22de743eea6d90000d5d43ee6d2f6ee01838b63b643a543a8613eefc784c000664671e644e19ee693953b4e9fc828433157d3f903085f8b18ab69fc80457b155d3c213e2b103d8aa69c001c17f5382de9880a841bc53c5474e000c22ba7422786539b5395d7e54b899bf48827e2d5d6a92bc712be6b1d3b9995747000ebff13afac34be72b069d0034a30495fc74abc97c6cef71ecf2d1b6b43afae6ae771ecf251b5b43824d9f5c55cde3d5c9b3c746d2d0d89357d6f57338f5616cf151b31269536f8f5612cf0d1b21267536a8c871fb461cf1750011a9⟩, ⟨0x5732b49508a424fa26212b091648122d0f6476437c18c8c0c5da2d715a0a9c4ee26d125089c4001ca0d386001e00ab042017404e000, 0x40da6c4e8773000665ace000658c72c000cb171363cad0fdc59ef001b3c0c27ca589f2f04880050009491cc294a687637308b8e633261271e60f18cb9847c700033022e2ebb180004735b8f892c362230d9d1c367b332987f1480073d5992c3c0d9e8cc8e2732198cc39d2fd151c73a5da29ce9571f71bb95c4c4627537c9abbb77254355b26bcfb713ac8bdc4f3fadc7c1237bf6f516071e3e074c0e1c7c3a581cb8f11e70e8e071e3e1d23f6bc7⟩, ⟨0x4262028f8877e39c1c48d8867e31c17c8ba05822b014f897847620b0f4071432a1720a584a023c0f706802b410c06502c00ac042000, 0x9286ad6020e90627a3e01fc4f478005890f513a734e8ef33a39d29c67487a518ce93f483183a673999a7239d92698b34fbfce51a21fb27e9f947cb7c3f27f945cb6c3f2db96987e5df2b70fcbae5672c70e001e5d61ce5be9bee672f800387818e5fe9bbe669bb3403ce000f0b30fa6e0e16f380166eacfe290010039b8b3c0c00536d69⟩, ⟨0x4a223d91588984272000f6c7503811ba0d946b034c19f8c685e62cc14b09bc49422509604881f60d6058829810205a01a8080016000, 0xe204e6d0d73456c606a1aa688d5e2001459cda0fe897d3d07d44b0017a7507da52f8fe295892e29c46714d11f41c6a54476770e4e76f506dc9506ba508000f1d41a6941e4cf673daea40039ec74e7f08f631ec5904b6576b11ca2bbc1ea2c0c43db6c3f897b0ee4a26cf0003c78193f5e1eee6d04000269e7f99f0b4f098001a0834ea0770f4f349e3d7ff4f5cca996a54e09⟩, ⟨0x623251924c7e83d11dd8e6870a3641988c685f62dc14d89f045a21f106079c3881910b9052020e0fb06d02d412005d02880c801a000, 0x5f0495a37de0036806eb992ee100009a4054b0a95db1c36406c7f2c2a7859ff83df262ec50f0a1794bf6e82cc8a8e4e3d7631ff494ba7be2cc7a8e231727fdadcf1ef74fd5c7000f69313d9fc3000d0f5a6782cc03b43967a06c0079f474f30ae9a93534a4d2da69499f34003a05e5f1d3d32a574997be7cba05400198734f5434dc89a1f052ad5edfca538b14625ea98bf4f43a9451e8a50da4f47a1e66790006882d3f23005cd5da66926de3573488a43ab99d0001a1bf4f08c0068851c51d9a3756e27⟩, ⟨0x68032818b4c145fd2f81794b845922b794fca384ec2649288926489231112c88241a1fb8f5077c3811b60d586401cd02e00e402c000, 0xd2b74a348387d2a693f0fa52e9261e852c29c4dd1fd2762749bd1f000e1f499d1ec4e92b499a47c3e94349187d27e91f48d87000e90f0e6933513732923c0c69a7511f300fe63c0c699b51073946bf07c38007e0389f7e618002a320017c130f46766f6ae197c55fb689a3c7be132b5afbe8072b99cee240031a4554baa971b1eb6456c892c3e7881ffd3dfc63005118a1c94c8a3a78f7c2256adf7c00e37335dc400053488a97152db63c6c88d90e5874f0f3ff87bf4c5f8a221437298edd2599551d1c781740c312001c8962721b86⟩, ⟨0x59f2ca95b8a9652427f933094e47422790a88364111f60e9c73a3761a88ca84081eb0e5061426210a079037c1980a903b014c046000, 0x40d898cabdf340035acc3e2612b5bcd56562b3d3ab28ab7c565a78aca2b7d3c55d158c56da700062b6d3c567a8a6ae923c0d1646a23ab00036ba6b1822b7e3c0d8954000f362b7d43762eef25a371d7d90a4c95ff73dc04db66d9e72aa19542b66631d2d9ba546a026148b2ce14893bb2bfbdc7851c73d2e52f5a404c5cf4775e75b78e025ee79bbae013075b38e000665e72664df1af444cec89d7c738b0fcfdb5eee70e9f9c3d2ac3f3779c1d29c3e95fa5387⟩, ⟨0x3a61c18db86c83531a48c885fe2f21678a7c52a27d139894048621c0fc87bc3981a50c005b42740f9077832014208e03d8158066000, 0x3a29d47c689d19e062834c0c000713ff37a81d0ec8b89c003d0cc5f4fba16002c540da4e78b032ab7a0f8b7138001c4ebcd554f4df23032aa3a6b8b69435c0f8fa4fc5d3a72590e001693b173e9c001d26f49c8b9b4f030017c4d7cdac868b2b8f17225b044ab19e3969c00757fc38002ac578e1a7⟩ ] def tableRRRLL : Table Block := .branch 14 tableRRRLLL tableRRRLLR def tableRRRLRL : Table Block := .leaf #[ ⟨0x2bc1508a504fe27112e091c46421f0fe079c3b41c50d8063c2dc15509e04c4230105071033c16e0a204b81d00c603c0158070022000, 0x601c94fc6606f54d90cadca9b5454d812a43244f57d5a58b06854d19899d53310a9acd01cb5d6606b5af5759d7aa32ebc122fa6eb0e10e015ea9e2e1543b1f443e8919f13753ba378bb133e2890017cd8f33e449c123869⟩, ⟨0x84940b1ffcfb07b33b71c68daa6b033e96c4af655429693dc98248b22308fc3401790a904ac1ea0d006282c011206602680f0036000, 0x17460003989e9ee8dd30001c585cdc44380bd8e54e23205e5d945f1cbb297d9231e5e5b2a6f1e227892a1253421b8fe6454bda7f31e3bba9774f58d1ed0b962b5fc23c0c8408f2646e45f0c69b01b85b54a538f58cca2b5293e3d692a525c7acba88a78e5102b2e2228e3be1753790ef38f6561e0a99b5e39a47b2aef050cda71e5b05d5801f8ab9d5733c1395dcf665cad5af611d06400475322f22e8632ed6542d252d89966b02d3409bfef0721bd111038ec821c5568aa632942b694b9d251e3b6c66d9c71d5b66cb9841088218ca4a9724111c796bd4f878f5166a2df25d3453dfe3c35296b750978fe0b15bda784c0e6a700038aab9aadee9ce4407add3cce6011a97b3e7704a7⟩, ⟨0x5bf2a694a09b248a22b910c83c4071f10eec72836d19d0be45c42bd145095c46420d0ed06d432015d0a484201c60b0045816004a000, 0x2beb7312e6219c3ad0225439c0f8f68bdca3a94a7d7b6b7b2be9cd7b4f9c25a4dcd62f6b73269c001b476e95d3f9aa300038b26a715fd35a4572569c56c62dbe680019f1fc79f218b679b957e5999bde9f2aecb2ee83cdeb4f65069b2bdcaff4f95e657d95de9f2c7cb032b9d3d79d98e6a79c5e6b74fcd9f389cd669f30d1e6b4e0016575a71e58001cae74fe5e8d95fe56d95c6563a7b4b32b8d3d9df695e56fa7cc572bdd3e57398a6579a7ba47a43cc534e0016629a7⟩, ⟨0x5862af94e8a2a4f025791f070636d1ae0d2c64c3171790b3458029913a09a848a22210607a438c1a30bf044c1fa0e706880c804a000, 0x291c4fbde5da9d7366a6cc5b9af536a6dd03acb8412bdb47ae6bd3dc4a95e27b5a7580a006168e33a174f610d421b00142576000400aba6744e6001601ce71de3cdb30d4a6949348003c2f69f7530003c38e9d2cbe17b56e2700038bd79a9acf0b7b181935ee167560019b3e266af869ab4d9b133659aae266cb358c5e0da9abeafa54e77c001000adf54aa0003d3cb3b0d36fc34d6f0cafb8952398c5a0ace29d320001083c107f38371eccd97ae5e1a9⟩, ⟨0x51124f91e08483ee1e48e586e234c19a8cac60c1fe0f5876038a1b20d386002b214a09d84501bc0d4056828412806d01b807c014000, 0x2545f57d676791b5926ddb6616e3d6bbae0fcb92aa66e64abe614a6c7c73370a786ae171f164c5ab4f8b062c78b4e9c001c5a74f8b370cfabb4058f0362d9c326ad98f3c8267a80c2400080025840cef096b002f0040007339c228e80a800c169bf1f4d9370d2693512c8a2704800ba48fcbd378001f8f6926124e79b0011c90003a6e0001f1e06d36c00179308ce2700033f0b973f067ea8001e56793e2d60a9e06⟩, ⟨0x60f2f41740b5256429f94a0a064be21710347f03e31b88cec62c2e315f0a2c4b023310006fc33416709a043c1b80b703f00a802a000, 0x1c691d3c9f7c5b7cefff3a6f89e12599f85e2fc70007639d4ec67a6f27bcbed3a1b6434b4092f7371e2d05e73b72b3d090d211672271408db96f1c0068cad345966a2fb32bea57d7407e810113422c7676f8edca280f67b6e3ea1db6ae9d48fd4376d4d3ee5db67e9f72ddb3b6ccd3edafb686d95a7b1276ced3d98d6246d9ba7db536cbdb376c7d3edc9b6a69f6d0db8f6d3d3edbdb706dc7a7dd1f6e3d3edb3ba36dc5a77317513d3801001f244fdd9c00080021c8f80804fd71f8eecdc7966⟩, ⟨0x3781ac8cc86102e91520a644e824d11408443d81b60d606142bc14d09e04b42380f507303541900bb055020c0e406501f00d001a000, 0x36c2920082e29f3ed680a00347b5a02a92f876d01800981fbc784c000fc6fa7c6bafbf79a000fcada9f8e74df1c7caba9000503f196971e0600038d5f9a004ae23747d0d27c695c923069c6a2003397a12750d74297148c9ae002dbf0e9c39ad84e000f1a47360600038d1b96e31⟩, ⟨0x3a61cc8e206ee3501a18c706242eb16f0adc53e2780e506942e413c08e83f81e20e206a831016e0a604b82340dc05f02000c404e000, 0x1853526b1835eb96bd1bd96138003c6ffcd818000e37de5b8c4000e37fe9e492e2de85b929d3b4375b29a0964dbb7776e3f13e5c0a94dcc361e9371f5a7f4974fad31581e9269ee91dd757a31c7b816ea8f6f80dd1e8527127ccdca69f14949a4c24c0d6d802d24d24802b69493093035c550045cd⟩, ⟨0x3301848bd859e2be1568a784ee26a12e893047621410387803ac1af0d105ec2c613c08b83c01920bc04a81f40ca05402180d001a000, 0xc74800079a18a4400c63a6e9e19a4acd261271cf000ae5d0a5853526b1835eb84c6e3d96138003c72fcd818000e395e5b8c4000e397e9e4ace2e369b429d30007d14d3e38fc6cbcdc71c00079ae3100038e43a7928b8b928f8b86692b349849c70c002b97429⟩, ⟨0x3331860ae055a29e13b898049622410887f83de1e20e987203661a00cb06042b414709003e41860b4055020c0e206602c00c4014000, 0x63c40091cd00031ed9e9180028fa1c784d9a98000e3c0e6b38ad106853e3bd0053cd8b512c8224e24c19bd24e0922c55c428781a985560006fcaf1c7f458001bf1fc700037d6f960072fad5f91e56247818010df57e59588f09b286c74e00079a0012fa974606⟩, ⟨0x4f0265929890245c2148edc66c2e215089f04ae23010487d83ca1d40e486c831617409f04b424610c07c83980f607003280f802e000, 0x7b3fd3f689da2eaece6ed3f53dad769fa9ed27140eb534eea11d41c36059ceb39967433aae3ba837512ea09d452ce559ceb39a1aff1df61bf257d34d3b60b571ff24fa23e99fca34ff0f5f97a9f8cafd1d4c00c5fa1c95f9f002f9374a1e54d29069c120e432c000df72e381aecb00ad7b72fb872a44cf0342a6cbced124ba1fddbf432ae0000400200f2cbbd3c2684c00931e3f371e30007e6818ec7⟩, ⟨0x6503159798b8259a2ba9508a525102220fc07923931b60cd85e22ca14288883601a40bf856826a110082838015a09503e8160066000, 0x8f2a3c3d5a766827d32c11dd71f5198f8f530b55bf671f81cd0a34fc0e7037a13e9f9385d3c1c6e984670626654beb90016c571a4f93b95a06ea81682baa27dc5c74ebc9d826543eb86aebc79aaab9c38ed8326aa1303e3add3c309c77392b74b0c1f1dce42dc1c304b7478f06620ccf1c001cc5d59eced7f8e000a62e2cf575b6d289daf71c000cc5b2b1eb3d1d6d34a176bbc7846edd3b67d4f725db56afb91001356001f721abc12000f69babee34001000b55a07f8ba0778bda4f691abed27b44d3f691da1f685a7⟩, ⟨0x4c324111bc8c244e21d90a08063dc1da8e386ce3401978c205c62be14b89c04922220f786b82be14009b04441c20ba02400c404e000, 0x4c9e92dfb1b5ede9c3744e50d8b226e944a2c89d9db6a9d5caee6d41cb9b578ec3974c0297f72e97ee3d1e5e3d09965cb1d34b66f9b4dcbd9bad57d5ecdbb32eae572ad3be5cda25135cb9b42b0ff974bd940d72c70ef86fd79d38e1b43d7c35ebc69e87b1c32879f867d77d3f140034781ad4ca24b5600492000070eda531cef2c000e19446fb19b0001beee47cbc78e174d03123dc80bcd⟩, ⟨0x5872bc15b4aac53128f94549fc4d7259122c8f64641c48d9066231e16e8af053227812288803da16c0b104ec22c0f106601e0066000, 0x6449c1206d324058ef935a5e23c0c06b32721e8001e68003defec4029643fe9d2634ca2c7c679713ee3dbda199912cbae6534d2af14e0a6d6d80476331966f8ff7a0019a7fbcd9fc002f4f50c9bef167ea79900274f55801167ab32adb0e00d55d67cb9b54ecbb34f97665d1a7cbaf2e7cb9b4e00991d1000175a6c0130dcb51165c9c781b2158aa2e6eb631e0ea63c0d6c353aa26b61abb172f8e1eb4ccd45a31c7809afa8ac5c2d17e3a4b9ec757b9a7⟩, ⟨0x5d12d5133c8d844520f0fdc7a03a91c10d8c6002d913b08103061750b2054c28811d088040c1d80d505702840f407002480e0022000, 0x1064df0971ea061201b8c152e2a6054b926491212a5f8a9a890552dea5b4608e3d40ba96f52fea5c45f3a81fc71ef72b1b9247c2562f248f94ac5e64aed95b7cc95b52bb3992b66561732624c0a3a081aeff73b2be9a0aea867c799f800138f33eddaaba2a68bcd9b0001f1e67d3b547452d175b35e3980005c799f2ed4d710ba2868b8d9ab1cb8001e3e10d86692b349849c8a2002b9742961488cacb039197b199df876584e000f225736060003912397827177d5884fa71667⟩ ] def tableRRRLRR : Table Block := .leaf #[ ⟨0x3641970c686082f61718b405822ae14689b849622e10987c839e1ae0c4859828e12008283e81be0bc050824810e07a0310114030000, 0xfc0040403fa41e1451bdf586d21a6944a2489e892182250eb04ad70e409d2fe141ffc5d7409cac03ed84e06a1adad819f39c5e05dfbdaf9be7c8756431f81e2e18418a5d35b3dd5cb00f5a1309803de848017e618b027c616e92f04e8af58f71401aa25600254f8af6ad639c5⟩, ⟨0x3a91c10d0466c31f1860b945802a814909fc4d825912308843f81d70e306e83521980b9853825610807282d410a07b02a00bc04a000, 0x7fbf649731eac000423785034f89a13ed3074870003927f9b131bda5b1a07087f69e1ad444cea899091219a262607b2f5712fc4bdab84c212fd58f1a711974d388698961ec3d5c254f616ac003ec3c3fb03d838bf5bfaf30feb3f5b7aef0feb4000800f0f0364883d69cd7aee250d5c0d126bd73ab⟩, ⟨0x47d2330fec6e835d1a30c8c6002df1640a844fc25911a08944341f50e7066c32216c0a284781ee0ed06302a411806b01f00c4014000, 0x10aee98229737c022000a53c095cc97d38450fd839bc010a7f4000ca7612b192da7860f4d4ecb27f04300c5fe044878b056c91b3819ac7c97600079a00cfbee4601980574e004402fa7c893824001805753aec0026734001000e012d3c0c000c023a9000392c39a00075d5f4402364b2e9c0c7fc364df3807ba2537380d292e6c7db3971172e3e59d84fb250ff8f3a06⟩, ⟨0x46622090707ee3d21cf8c605ea29e1498a144bc24d11e08b440c1f90f6071c34417b0b7051c27a1160848388176098038812804a000, 0x1f18958356000cacba77b9a55ed5ca832b369e5579502565d3803c1229966129bb1c0020512139cab1a70027b930e251ec6000450e00202ae1e13510d9368f73f370cd256693093935800572e852c29002623fd5800311f6af65e267becb09c001e4cfe6c0c0007266f2d86288df267f4d33a5b4de98007dc587c9907b8f9a0007263f3623688cb62000c2c9a9⟩, ⟨0x4f52759328980499239112c84841a1fa8f387523841a88c786162f816a8afc4fc27313108ec4301c40b083bc0dc06302b00bc014000, 0x1030016d9da606000394079a35faba5f46ba55740e5d7407027cb81acefe0bb578292835f1e24186f34f0ddc4b5a7890625888ff4e145c32802ae9e5444ce289000fbeb13ef6c300a0000caa50c7e9e130d99c004e4efe6fc640cd879b20004814b80043e2fc79b1e004414b370000067c5b8f363800802956dfe000b2161f15e3cd8d001e0a5115436fe000390acf8a71e13389f2738001e6be272b16c606⟩, ⟨0x50626f92e092246a21a103c7b835b1a30c845f42d31560a144aa24b11207f43b41c40ce85d829e11907182c011e08003a815005a000, 0x25734898e4c89795cbc990b12b9393b442572730b9dcaeb95cfc7f6afda1d3fb4fed57b41a732d463b4c7398e4adca0004010d661e3edfd9ad0eb417570a16b82f2eb82572ce5d72b7b4fcbacb759ef8f8dd000e4f30f0365143271cd949f5a2b8f94bcaa61f2a7860003590b8f943eb20734ba15653e3d6492e83594b8f592eb20d650e38015f31fde1a7008dbab3e449c12003b6f69aea236d39a002007b6b67⟩, ⟨0x4f626792a08e444b20a8fc079e3aa1c28d806963241770ae052228213b89404521f30f487082fa15609003a818608d033013804e000, 0x32a2511ee6d18da35bc7a30f46328d671e8b8d173e3d170a2e545bf8e521c8cba9a42a49b49491231ea63ef918f591ee8003a7a3eb30a3aa2dfc747b028e68b771e8b9d16ca2cbc7189145ab8f9127048001a2cfc9a5e340879a0004621d165e3c0c310a8b1f268b55161a2c745738f46528b571e8b35193a2d3c7a2e545d28c9f1e4ce4a0fe3c5c29431282b8e0006577726574f1a5764898e4caec9133c9⟩, ⟨0x6062f096e8b1a5832ae14b0a0a4de25b92488d644420e8fe86b632b16b899438c1b10ce05ec2b413908c03c41980a7041016c04a000, 0x3896e1e7575e96bd272f7c80077decf0365601be7cd6fa6615bc787aca4660f935db0cc1f24cc1576be4fa286f7ea6bb58defe48deeaed5c97bcf5dab96043cbe61eed7cdf9ac459169f5fb2b66be16fe671e5731e3fcdbe8ff14c3d15a9bee8e480025140e3d1599bece1bd3bf2391000744ff8e8e40000a43a00048ee91e5d13ea33d569e8cdf1e902cd25d66c47a5ab4e2052cda70fc00ad20034af69da7230fb9861ec7fbac911e3fcd647f72236b05295190e38a4e14a3463f8e000db37a7⟩, ⟨0x4d026212848e245b21c10207ca3b51c90d8867e3181798ab850e26411a087440c1df0d486082f015107e837017609a03a813804e000, 0x84691ac5f71200191a000b0f17bc345ea48f898bce4da2ef878bbc60f0f1738bb460b0f184bf461e3077e78c0e1c0037edc3e579300bcdb079954d3d66b583a3804ccd71e30d198ae3e6332eb87cc5e5d330f87ec1593d82b256b25784e5ac169607182f8f184c000f1e06af015ee3975cac0380dfc8c2037c38fbfe0dd69dff06eb4836eff5a6d5bf7df575d4ab99f2eb4a1986e5b897af61cb⟩, ⟨0x2a114489d84d225a12608e445821b10608083e21e20e887083701950c3058c2a814909f04c42320f206782a012006d01e806801a000, 0x1acb38b29a1e852712628681513e292934984981b14d26924a8d2612606c38002f1a712401386ec7b627c4d899853abf78a00072c6f34003867c88001cb1fd3d5f7c58c0c9830f25fc9d46030e00691ce1e852c29⟩, ⟨0x2df1690a88530275131094448423711208043de1e50e907103581a10c605942b013108604081ba0ce05481d80bc05201d00c0030000, 0x78a400201d93ce1e0600dc9e31396a1f20cf91270486e89018e25b1a7b23c0c59a264868b5e8784c0cea7cb66009f9ae27000396c79a012edcdb1818024db9356611c001db8b56000edc2003eab59871691b440a1e06c0448ad62bc5⟩, ⟨0x32a18a8c005ea2e016a8b2054227c139093448021b10788083ba1aa0c906142bc13909784281ee0e806983201620a303e0118046000, 0x39e957c9cabc1266eab84ce270003977b9a0295d03b1818051b9ff56c270012e7dd5c23389c001b9db5773adcf2000eab5adf15c4e00072e9734046b9c76303008b737eac3f44c2a681e54e093f01978431836d61fc7306bac38c1a71e4fb27bc3807e4f787⟩, ⟨0x3681a80d0466e3101818be45a42c81508a244cc259114887c3f81d50de86682b210a06d033018409b04401dc0d205602280b802e000, 0xd6ddc5a48f030006dbe1cc713c0c000f6f6f3a06dbd400079dad938a00596b61fc52001001cb530f0300065a7890003b78f9dad738b2d096661ee86cd4be534b274f742e6a3f4f7ca496469c00390000161fa8681b2f6803de6f6c891f34c50d072277cd374932ee3b658182c7⟩, ⟨0x2aa13a094448823711608243b21b60cf062c2fc16d0b0054c28813109104582160fa075835818a0b805702581180740338100014000, 0xedbe12d3293c700c657b0f429614e26cab005312013cac80070e012cac626124a1eee43f8a4a0d2e299331a4914512612711b048e9a6f2459099e84d2e2781b5bb71606d6ebc57138001dbedccdbe9b7d400172a06⟩, ⟨0x3521a10c746182fb1760b145702ab14a09c44b4237115080c3f21d20d105ec2a813f095047c2140e506102d415009d03d012804e000, 0x27b1b3a34aeb4fa6692c349849dc5a002f994297148190cc004cb632406333007d2d6cc309c001ee25e740c0007711f30002002968e4801fe5a7ea0037cb4dd4c2a54d37aa704d19ab2ec3b69f4e023cf1e1e852c29c4d9da00fe2403d9de000e1c03b9ddc4e12e3295c7⟩ ] def tableRRRLR : Table Block := .branch 15 tableRRRLRL tableRRRLRR def tableRRRL : Table Block := .branch 29 tableRRRLL tableRRRLR def tableRRRRLL : Table Block := .leaf #[ ⟨0x69e32c96aca904f425010f46e232c1828b88576294130893c46822210988103ba1b80ce864c2dc14709003e41a40ab042013804e000, 0x2506c8b492fd9a3b8f677168dd9e61c203846cc436fdb5eae35ae830952e38c8f83db66d1fe5d987d2a9c7b3b566191442287ac75c79ab9a5494ced9857f93c79ab7a5454ce5984bde2ff238ee5214cdd983bde106fe0a23fc7ad635aeab5956b4ad672fc78f2fc01f8a6d607a9c7677b2fbf8fd5eea7e273196190e5e631c2dfcb82b000106d34fb183006e309b9c1b324aa49000339978f1de477babc48060f03482f1dd6aef3dbf93e4de808005c9800379ff930006f96f2ef96df29e5dedabe4fc7bdb25f42f9371ef935f29e5df324d31c7⟩, ⟨0xbe75baac8557ca014d6a6192dc91a484230d1588794319b14d5c66932318c0c1a5dd2e39680af24351ff8f244921e60ba04bc17a000, 0x4a775eeb749dcb72d8b5b132a7f8f9f9aceab71d303e609b8e5eea5511420bcff1a86309f1ce673d286bf8d7f63500cb6283e550865c1c99bcfd1a8b8e001122a0e7acaad5be38e0006a20f26a1df18a6d47440003954e96ef1e7106ade74b752279478e3f0cec7b0b80b003134f94ec3657b8efa00046710ce391b7981e7455d1a5d56baaa0aebd1ebd7432b0e6235f3bd1cb4c150ed9c94074912c7388e6a1d3d69438f44069a39e14d2ca96ea2b8e0019d7e26723860014ea70f3a2000cea30f3a3c3601d8025c7c22184138e399eb6556c382a6f452f580ca26bd2d7a19e6e5715a4adc1ee8848d1cbfa326a3b9d9e6b325a57f8f561a375e95ee394671ccb58278f584eb5ed6c6ad8f5afab6056c482a0f446f568c9f6bccd7959e5477072a9a5732b759e35a4567b5b825d0db31f24d38f678b2b6c93374c91dbcc02f1f573c76e0f52e1ed15bd98da861c78edb95ae45bda40e38e13a930601470a598bb4c7a0a38f583ab5fd6c1ad715b0ab5cd6bb916adbff4abe5698fedc7⟩, ⟨0x5cc2e11674b1c5692ad1540a5250426e92a893e47a22990b080a3ed1e40e846d63461898b3857029112d88943fc1c809483cc198000, 0x81a8a70017526924002a29752612606b0f000279a000d143a9000f61db9f44f000200169e13513a000ea4000e698e68001b0e3d100039a6ba7af378b44c5125a765f73fbb8e827679fa225e3c43711669e221886a22bd3a09a00024586555f1e247864bfb103b8f3ce6f72c301e3c8efbdc974a78f3cba7f2f1e7f1cf2d9fc9c7cb197a7e78c5ecb6e4574ac14bd9da9afd10978f74a81984424e3cc309dddc7cb137a72f643fee9e2b35edb8fd9d774ed74a014a33e5cfd1c7⟩, ⟨0x3031698ac051a26a121887841a1fc0f6877036a1a60ca86202f616609f84b023e0f8077031c16808d034016c09803e016808001e000, 0x4572373156c3fd722b589fb0c56b120018dae1c8d966c0e6e622013e9fd0d27c695c923069cd74003397a126d0d74297148302ae1b758ffe99bc8b6138003cd63cd818000e6afe5e0291b1f10d9fa74578025a7a149c49821bd4d3e2929349849⟩, ⟨0x57d2ab14cca5250627193009363ed1e30e7c6d23331860b5852226e12588a03f01ee0e386802f215209584101dc0a902a812804e000, 0x19b90000f36eb174fc8c0d759ba6e2c00374dc3dd2ae978bf167c50d3d738ae655ceab99df36ad0d8ebc009b4fbae6d5a2b8e0006b1f71eb2866dbe6df339f0e60538e5c661a9171be3e1e10011c73cd58780003f1cf34985fc3be001b8e004b8f61c003711c3dc76e3d8b000dbd000787818b85e6d0e6971abf5fcba2ab19778f40a0a1d71cc075f56e4df7ebeadc9a1be188ada0d49eec00138e4569069845c9eea000f8f09800315dc3915bcd8bcd⟩, ⟨0x3521a20ce465c3191790b2c5742a914d09cc4cc25911b084c3d81df0dc06b830e17a0a984b02120d9066029410407802a80c001a000, 0x3286c4d89a089539c0020673737f843ee6e19a4acd2612737d800ae5d0a5852009bbe62c00377bc5eee16a15d96138003cde9cd818000e6f2e5b0c4bba66f4e9b503bae5d3ba8dd5b0f74dba85d570ee2700039baf9b772bb764606bb9ddb316000f8c7a7bb4ddab16e27⟩, ⟨0x6c234d9a0ccc463b30a1778b505812ad14d4a3c4d925911f08503b61d08e486fa36e1768b605922b4147897046e21a0fd85ac17a000, 0xe728e9edbee2c1941859e9d2d3a7e4b3729ecdc70966cdc67b2f1e7ab4f57a729c700034e838f4e7b38e734001f27b53e4c69953e2a7e9f8ce24f8f330a594f1ec044cc19651c77b78db4d9769cdc8d11c7892d3ee2598be7e643ef825eb371c1c953a29b3c5536a9a248bd619f66f9e5f0258e69658c86b8e0cca9a14d3caa9d31fc85d3e98de422db1a7d31b4c4d3815f749c04415a380039f5400142053211891000120e23d58e38d5700053ea400204096421121c0019bda8386f55f8e3558000cfa808110708001000308365b099079bd9890dc7⟩, ⟨0x30217a8b385862b015189f04e424b11c084c3e41e50eb072036e1aa0cc862830015f0a804bc240116077833814e07a037813804e000, 0x1c539d0c003f2f049bc8b6138003ce7fcd818000e73de5e0291e81690dd9c2480959e8527126086f534f8a4a4d2612606841005b49a4900283fb4984981ad238009e6800c1dda4003da45e7c1c00080159e1341b800da4000e726e68001b481d1⟩, ⟨0x37e1b68d7069a32618c8c305f62ea1618ad851e28512f09444542030fb073c3581a20bf859c2680ef06602940fc0570238088022000, 0x30cd2566930939d8400572e852c299f358f1af7bb5096ecb09c001e75ae6c0c00073ac72d862001f3ad74e847e522e9b89c000e753e6d21c0079181a940001c5ec0be2a9022ece741a7a03a52002ec339fe3800690f87290b9d2f9a0006b5df1eb5ce749e6ed6372ac010e9e4cd25069⟩, ⟨0x28c13c89b04ba24f11e08bc43c20f10287d03ca1d40e286ec3281850af053c28813909604501da0de05c82b013206602e011001c000, 0x94d0f429389314340a89f14949a4c24c0d8a69349254693093033a40a161cd389342b9d1f73db13e26c4cc29d859c5cedc59eb9a711c003e8db56e270ed17d1980340016aa06d845c5a13217c8000f1e486⟩, ⟨0x3921b40d4c67c3231820b9458c29f13c095446c2110ee07343841a30c0058428413708c03cc19c0c3057026c11c07602f011804e000, 0x31805406d4773a55e7a29f2cf153f07c4749e1f8b2938af8752686ba90fe5d0d6522dcbb5300b70f89b0ed1c006a41f4e0040162404d47ad4d89b8500ba4d3900178be09c1697c1004d2f04807e054be964008d5f4b0012eaf04c62aac3943b8ac22d22b61ff17620f1400efaa388c8cf0bcd⟩, ⟨0x75538f9b2ccd06142e01628a8a526278132494443f1e68de468626812c08c44141e70e106742f015109604141bc0bb042815406c000, 0x157d87b95ac0e3cbb6682ad050e4fb466e3c4bb976b1e0e27eb5238df1c7998b44725da3aabd249c7a237a48e5d9baaab733c7a2356073248f1ccb0b858c9217e438fe87cc51f2475117a2a9c700039d238f9eeb3a3736d85995570a786db48e6548e3db0a32a9a46dc2961b5caa1712b8f92264365810a29f94d78f4446887d122e3b0a6616e31d9a039e6c0f4b4163007580ec90f602ac05d812b021c7d6c6000354338f5436a87734c7524bc4d041d3d6ae81fa01f57d33f42bab52af439f974ab529bab835742e39743aa874f2e545243c3de4b2d66e6df8f6b101b49230e0e31951c01bd0d80c63c7⟩, ⟨0x7683a19c98e026f23739b28d4a672334190cc385d72c19508a4250c27b936098848e23691205ea2bf0db851416a0aa04981b006c000, 0xc21020fd5c64fb49f07d082b4f91270480305ca7082c1fb5a000e0f0102e9e06c1d8207d4d1356a77c792d4391472253f4e3c9691c894630721d3f3e3aba63e3f347de169c0063c6d31d7668eeb300199d4999346a7af41d29def1ff3132ece004435fa7191eaecf3694e037e6e00140033bc991a9213654c5777b056e1a2f38e01197dcf9d5ba4b74a1c072fab8e00140025847e3e6d07d813805f9a80030009234a50e600f97d12fb0f0c8e016e90f9cdba3e520e3cdfe9c000008001bebf7e690d5b8f37f70a35f379bfe00040013ebe7e670d578f09af9fd367c7434dcdb5d75e7d1be71ebcf23f21569c7⟩, ⟨0x38d1c10dc467c3261870b785982bf1580a9052a28813c8984492231107079c3681970bd0574270113069028811e07202f810804a000, 0x182470d743900020016ab690f1768ff14b2600196f61e7d06613ca4bc46348ee2b9c55b4578bb4478bb45b8afe996061e84b0242e3eaa41040483a70261594c190aca61482e538490489abc244218d58419aa6610011de9f5f600111d61e14930030cca604934070c4a61780a538428477ab⟩ ] def tableRRRRLR : Table Block := .leaf #[ ⟨0x3f51e70efc75435b1a68d0463c30f1760b2454827f12d093c4742070f7875c3681a60c1858027a10a071830013a092037812804a000, 0x8f41474e3533b129f58116d40010009300d3ed0dc8c00195ae26453008e56989959808b134e20049aba70c004d580074e16af048302ac001a6fc002d56d31e2ed2fe2800660d89aa18029305c4cc1002789982005b160a36ada97669c000cf57e3cafa57f8b95f004b178240212bcc5d0ee0086ae876001356001d0ebab⟩, ⟨0x37d1b70cec6382e9152094048423111008443d41dd0e806ec34c17f0b9052c28211a08483881a20c205b82880fa06b030813004a000, 0x18a9b5a30091322d3dec00947e9545eb000f4f9e05d2a05ea0005c7cf00e94d2fe85e90003c7c21b0cd256693093a0e800572e852c292365583aaaf827a9dfecb09c001e833e6c0c0007418f2f04e2a7672fe74e2ccf912704835aa4029a26b5a5e23c0c0cea9d04c00079a000d12bb1⟩, ⟨0x35919b0c445bc29914409dc4d024111a089c4201f90e9071433c1940b6857026a12008884181e20cc058829c12408803080f002a000, 0x1331999e2626e006f4f1368bec00d69d13605f5848c00678f86692b349849d0ba002b97429614888ccb031597c1b546476584e000f42b736060003a15397a271518585b7a647ca7c8938241ed534fb8073ad043e54f0305baa6060003a1239a000d3e3b10065a12ba7682a7⟩, ⟨0x5ed2c814949fc4f125d92c491446d22810ac7f03951af8ca45c825412288e044e21c10787a03821b70c805c4294123076826406c000, 0x12e5cb3e844c57c854ca7ba742a259e0f0a2bd42203e24d2f4ea2e27d9f1fc52000545b4fb1e3c0ca2d67d7f270fe025387f0129b0cc37ed3b91d7905865a7391aa596cb52f1f5548b0c78f244ce3c030be3af1d06c5040b8ebc701b0c2818203c762f860c9f8d32937230ffc84d609add929c73c932668634c267138001d0dfcdaf3d54efa30357a0aa73cb0035828e158aa9bf2e8e269cce3d1c3d39794eb8f09e2e0641d18352c5638f09dee05c1d0835112358abf1f5799d3c7061c7⟩, ⟨0x3971b80d9867e32c1838b885aa2c615c0a9c53428913d09c049623c10b88203fc1d70d9062c2b014d09404041b40b304d81d809e000, 0x3d149cd818000e8a2e5e0291a442a72d9c7aa00969e8527126086f534f8a4a4d26126068f34005d49a49000a3cbd4984981a86d8009e680031e3ea4003d0d9e7c7880008005a784d1e18003a90003a22f9a000686a744000e88de9ef77e2c77d1de69e8125022e3cb992d021148554a7da7⟩, ⟨0x3c11d80e7c72037f1ac0d2467032b18f0c345cc2d51640a8452e27013188f04481fd0eb04a02220de04081c00be052015808001a000, 0x1e8693e34ae491834e8c00019cbd093a86ba14b8a464d629da66574e1cd6c27d16e000f9b030001d16bcb7188001d16fd3d723c5998229b7a7482e5bd71e874439558ce000411ca0cb38ff430886b10a2aca1c7a30f4c253705001169c4a5e09c480a08464000874f26692834b8a74540007e5e0937916c27⟩, ⟨0x4241fe8f1c72237e1b68d706a233e18e8bf05aa29f14909ac4c223a10087d83c61bc0ca85b82c813d08e03d41ba06b02c013804e000, 0xa310b3278e80f68c3acc8e3e8e1968da1cb8f15a1ed8d2b469c1249a2faf3a2ece003d936700030b2b963b1a1648ec8e5309f46b8008e6c0c002e162f2fba000401c03acf8983c43801dd1a3cd0003a3439a001215ff46060003a3379a003de7710003a33fa7ba778a7264e8b0001b4587240e498002e3f7326818000e8c6e68012b499d1⟩, ⟨0x4392090fb47c63be1cc8dd069e3381898bb85be2d515809f44e624c11388083ec1d10d506742ec14f0a284781f20d2056822004a000, 0x7482736e57860763035cad0bfeac00186034f0be42fbab00060aed4c155a60006145d3c1530a46ae923c0d726c377ab0006e4900174f030001d1ebcdb9221b7d880031c6e9e11800185ff4e86c7478735c4e00074777351b857d2e8c0c8deebe872c0018d974e8d8abe772ea17a8cb4fe3678d3a7888e5ea529adc0b5fe4296f8f6819593a7⟩, ⟨0x34919a0c7c5f42d51580a8852228212e88e04562040ef875436019f0c705fc2b014b09f04641e80cd060026411e06802d80d001a000, 0x14c6a98a854dcef0686ae19f85bb570cf433babda1a0cd2b9240018ffb4f0c0c305ab7138001d233cd864a17fd8c0d0ca42fbabc334959a4c24e9120015cba14b0a400985db56000c2ebabe2448f77b2c270007a42f9b030001d213cb618a16ed217d347ad8887a6e27⟩, ⟨0x3491910c546102e315f0a5c51426312c88c844a1fe0eb871836e1920b68580272114085039419c0be05382480fa058019809001e000, 0x1a51000572e852c2900261cdd580030e66af89523cfecb09c001e93de6c0c000749df2d862871749ef4d1e45fbbe9c19a5724800320ce9e1bf870356e270003a4cb9b0f9c37bb181a1f286ef56061326231a1c164e782a6fc9530bb43d9ab0006e7ad3d0a606454d4a6⟩, ⟨0x53828993b895a49a24391448183b81cb8da860e295138092c44c1ff0e486902fe15a08a84281fc0f206582980fe058018808001e000, 0xd6d8906d3b0dddb969c65b0004002f5674f22c9a159358df7af619638f6379ebdbd7a0cafc7b1baf5e8b3e3d790cadc7984655b3b274c1b2a59cb3cbd767aee455054858dae396787aeaf5d88a9d673151f63678fea8fa9fa7ec87b1ed3d06741569c004d5e4e38005b364001b8f33c0015a745de639d3801126a69c000d9ae0004000f8f89b11a11aaed694ce68003323e9d324694ae6a66fd293cdd290ba679b86692b349849⟩, ⟨0x41c1fb8f4875a3881b18cc063630c1808bc05922ae1520a3c50424f12188784221de0ea06bc2f81640a6049c1cc0b004581d0082000, 0x1f061c6d4c38a3e06a61c59337592664389ac870a1c8d3c37d0e0c38fa7d8853e449c123e695d9fc1db9a0e21a9e06bcb54d19800986f4001d3e23000b0a8e9fc5200080070a7e9e06000614ed48002001436faae06bc5e06bc5852a148d3a3268c9421601169e7ce000889e9c7000684dd4d08fa60017d5dd6e34f3916b6e0027ab9a7⟩, ⟨0x4202098fb07c43bd1ad0d3868831d1860b9458029914089c84c623c117888042c2090ea06f032e16409f84981fe0c904400ac02e000, 0x613e9a30013cd818009c907572922135a0570006000652d71e11a060003a6779a7a710003a66f9a000e475b10003a677a7bc578bb126924ef1e000dcb613c64d81985600359800000c3de31c587264d0d3c34b0d34391a701121d4d3d0513a696f2404e3a3fea5ba900f8e0018fa602043a1a7000647500087d200fe1cfd3faca3434da6⟩, ⟨0x2db1640acc5502931370924448219104075437a1a50ca06282ca1540a284e025211d08904041e40da06102a811607c02f8108030000, 0x3b689add55e096e955e4c800deaf263001356001e4c5abc123e6b000725f000b55bcef8bbce78b746b81801ec96b563467dc96c27989788d82468d6d8ab79671779771779871400c06a3b84b007ff93803fecac00bfc8054ade47c5⟩, ⟨0x35f1a20ce46482ff16c0acc50026b12b09044381f70e9071c36417f0b3853c27411908583f41c40c5054022c0dc05101a0084026000, 0x66084a7c4db84a9c9f0001d3e9e064f9cdc9e440bd3840593c0815a75fb54e7daa7ac95393d006babc9e4004d5800793c6af048352af2750004002d56f58e2ef56e2cd22ac10b06d4f2436d0de416427f70b25215fed29f841494fe20a4a413fc252187e72b0c113d4371e89⟩ ] def tableRRRRL : Table Block := .branch 14 tableRRRRLL tableRRRRLR def tableRRRRRL : Table Block := .leaf #[ ⟨0x2b214689ec4e225c11a88403d21da0e2868032217a0b5054c27812508c04241f60ea06e833017a0b304e02340f006902f80e804a000, 0x30ca935a5e23c0c0dca9d40000079a000e53fb10055a80ba7529a4a54eac0da8ac7894c0613268b1a84164c09ec988498f42938930437a9a7c525269309303410ac9349217ea9309303650f945eb41ed53944e50baf⟩, ⟨0x2f51758b1855029c14909ac4a823d10b07c43a61ae0d0063c2fc16f0a404ec25c11908203741a00a904f81e00ce040017808002a000, 0x1036587963eac082d8c7a4681b50f8004e6fdeec903998e000750e734082caff632bce463e310000e9f086c334959a4c24ea140015cba14b0a48f5560f8abe452cacfb2c270007a8379b030001d417cbc138b2adcfadd38b33e449c120e4a9⟩, ⟨0x4192060fb47863821ad8cd861e2e81608aa450c27912488fc4381f50eb072433e1950bb05b028a13007e82b812e080034811004a000, 0x1e6602b26a8e0440a499a3baa382088a425a69f5200001e68007788ec4000ea3ee68001e31bd10003a903a7c55f8a005eeb61fc52001001f7530f030007baf89e4461107980164851fc5200401c8ea3c0c00a4652606e4385b4b9866aa7002f19b00d34e005633527c49bc019e9f98664f30cc90bc993963811fab8f8202979600003a7⟩, ⟨0x3d91e08ed071a36a1b00cf464a31017d8b6056a296137897846e22610a87c83841a30c2056827611407a83ac18809d03d014c060000, 0x1bed78ae27d4c400079bc9a001e4606e9f000717c04f8b732a9ba754dbfc8cf8c2335bfb1800611d1f9230424e70e19c22df244e75c1a5e8d2449f02e1c891e0421661e24444a3c4b87b478950f220d1c00c4aa38447e477cc8a00068f03044fe471cc2d21c8df9c001b31e1f91a9664e7000bbcf870070007bcd87⟩, ⟨0x27212f892847622e10f88503e21de0ea06c43481910bc85b02b614c0a084c823e10d08183d01b80ca05e82cc11807b02a0128046000, 0x3643972aace24c19bd24e0900375771770a1e06ead005f16e270d517aa2915266b833e449c126925d4469cc8f035249df7dc56791e8cd036a6a0003cd1b388004d4d9d381b5330001e6f27800391⟩, ⟨0x2c215c0a944fc25912308cc44421510207e43c81d90e606943001760a8850823a11007f83301840aa04e81d80c205702100a802a000, 0x2060d912000755173703e006b6388225f7448c9a6ccd5069c125ecab84ce27d52e00079a017606db1818030c0d356711c003c0cb56e271935e05e0040005aa81b7eff15c4faa2c000f3620d6303480aaf7ee71670d5214ca9⟩, ⟨0x55729394749f44f0264929880e3f01ef8f387563881ac0cd461c2eb1708ae852a1c906f833c1880b405201f40d405b02800f4030000, 0x4007e52c3c0c002f28626060003ab039bdfef34644f1a02d4617c004191680110025348835c9e5fe3f412c79634ac1a7beb6f3c3dbdadd987b7adbaede187000dbd70e5bcb952732df2001c3c0c5beb950f333e3ba2f4e0008b7a1e27058ec2c4001b2205e3e0010002cd150d58794b8e0004b799e26058c77018580002643ebc7800180049a28f3103559e51e3e663626dac6dcc6d556c0f39a8e21f224e090e91200fe08dad08ee87⟩, ⟨0x59c2b49510a5a50e25d124c8603be1cb8dd069a30817f0b5c51026f132890037e19c0b604bc2320f606782a81060600288118046000, 0xbc02ec9bde34e000d4c7a9a97b4db692b51f19931e5922ec79e9c1f1e9c10008e380069a8524558f2b1e3c661c7000b350648a3fc463c8c78b197f1e22da1dbe380071d987d5b463ab9b34f4000e3330f05c781b56bea68e6b1c78ede3bb0dd38f3a7950173c0c04c5f4bab05d0c3480120025004d34d83669e73e3cf2c023870014f2802187000cf2675200fc3f82f0c001f2861f5661e4de6800392069f565323ee68023caf87c893824003e54c4f9bbca58d⟩, ⟨0x3d61e28ed875639a1c38dc86d03591a78ca06362f416e0b1056a28e13f896049c23f11388003e61cc0da06702ae0f405000f404a000, 0x234cf9127048d1a5104689c19e065893030001d5f7cd6188009d5fbd3daa3c5da97c5308fabd4000f34c288008d5efd381b125ed45e2eaef0003cd7188001d5e3d3da7bc5da7dc55d44747812fdca9e3aea196d0747412f136db951c796ce74718c705d304bbc796cc746d8c685d210f609738f0d578d7655ef3a7⟩, ⟨0x27e13a09704a422b10207d439c1bf0cc06382f21610a604dc24810f08083c01c60d206382c814e09a03981800ac04301b009401a000, 0x206dafbc581b5908001e68004bb7fd1308fac78000f34c288024d641d381a20557b5e38b386a90a65487e873e555fd0c3269b33541a7049322ae13389f5860001e6e269181bd145b89c7cd7673d15c66⟩, ⟨0x3591828a8852e28713008e444820f0fe079c3b21ca0de86b834618e0bd85c429413908903701960bc05882800f206702e813804e000, 0x17186e2a00020007c09f8e58c142f162e0002000ae3071e1352630001d681cd00a53a1fa3206a90a3548708732255f10c71260cde927048deaae6143c0c00eaee8f2c78ce0006ee7f2eee700160019ca8a33e449c123069002377279a5d23c0c6124000eb26e6dd8e0019d1⟩, ⟨0x3471900c585de2dd15b0a3c4ee25f126890c4382120f587103661a60c8861c2ec16c0a284b423c0f706082a413e08703b01b008a000, 0x3e6a5ce818000f350e6150a4004756a750000ead3ea6dcfe2edd4e29748f03000be691ce81b9a30009e70008e68bcc5d33f8a44eccf03149a606e67c000799b6ff8a611c000ce95e580019d28000f95b6d78b036db5e2c099e0600b53a3b9600138140003bb4bc7⟩, ⟨0x2f216e8b405822b41538a684e624c11d87d83bc1c60d706842f4144096047c1f00ee06382d814a09603781880aa042018807801a000, 0xf9d59e295892e29c3338a79c4800ae4f3880005c9183480010004000f9c37236f9f176fa7176fbf15c4e00079b27339b1f3640003cadbd9c5613f360002bce818009f35ee6699a4b0d261279ad000be650a5c521d2326ce41c23224f0c27⟩, ⟨0x2b114f0a3c508273131094c48c23b11508744261fb0f887643981a50b7855c28413309103ec1d00c105602140f00510238080016000, 0x78a27324e091e34bc9a1b13d99a13489a5c4f036e0ce2c0db8338ae270003ce0f99ce0b9c18001e56e05e2f6529fa530c19f9be8031e707a870061cdef9c0d2a7e6f200ab9cc270057cddf9d030029e6ebcca5156609⟩, ⟨0x2b61538a384da26312509004501f20ed87103721a00c485d02be15409e8468216100076831812c08c034815808a038014807001e000, 0xe24ebec3b4074c0dcf0368813a606dc1dc500f9c282f0ef1fb6f64eeeac9c12db9aebd18593844a986f54e094159994ad00de1f224e090e5133bdca567340034a800b61e06a530057134821f34cfe295c92e29a331849⟩ ] def tableRRRRRR : Table Block := .leaf #[ ⟨0x22c10e88303fa1f20f1872c3781b10d2866030016f0ad054027012e08b04141f00e306c83281800a804b81d80d804b0198068016000, 0x3092f269cc93824e24c92b443627c4d08ce29dc4fc5c133d0999e06dc51c581b721f1694cfe2918333c0d912606dc37c5e23386c080b9e06010b80756e17e2ec0439f224e09⟩, ⟨0x2030fa07a43ac1c10d906903321860ba05a82a4148098049821c0ff077038419e0c505b02b012807c039017c08e036014806801a000, 0x6649c121c225e6cd0d89ea8684d30a24ba4781b71171606dc49c581b71ef17f24ca99fc527b23c0d512606dc29c51cc2878183143ee11e2e699fc52b925c53466⟩, ⟨0x2b51520a544dc26112a09044502150fe07bc3901be0cb85d829e12808803f41e00d806702ec12807c034816009603c0178088026000, 0x58693093d040005f32852e290c9181382f20c118117ef86138003e811ce818000f406e600815d3c8004eb8aea0001d713d4dcbbc52f10fe2908f48781839448001e7f9cedcabc5b410f9a67f14ae49714d198c249f689⟩, ⟨0x26312b091447022b10e08243f41ee0f187483861ae0ce864030c16e0b2053027e11807103601800b105382000e606902100e0022000, 0x78a4a0d2e299331a4914512612711b048e9a6f2459099e84d2e2781b74071606dcffc57138001e841cce83dd07c00172a06dcf1c5e48f030017e835cc713c0dd05800a73a060025d0579da669⟩, ⟨0x3261780b2c54828b13e09c44b023110808183da1c60cf85e02c014709d04b4244109074033c1780a304b02240fc06502200ac026000, 0x1407cfa15029c70006814d3a811d3cbcb08c773e449c12038ae99f4a001f9a020784e78180705d2000762cf34000cfa0e88001d8b7d3dd95c520bc73d0a585389adc71d2376e02e71ab674e22871ab673d0a585389ac459d22b6202e714b074c24943ddc87⟩, ⟨0x33d1838b0853628b13a09744a423b10b081c3e81e60e9871836a1a40cb85c02ca1520a284782280ed06d02cc14c07f02c013804e000, 0x11d06502b033e3bf9f8e81281181971ea465494e3f363559ec99d51938266e9660003f7869e25306689ba1ad244f19a4cd25069714ec73000fcbc126da2d84fb1bc001f36060003b1b79750a45463f456e9b89f6348001e6a8c3d3d7d181946169e9e5cfa2502bc7⟩, ⟨0x3771b68d546963331930bfc5922b115209f44e624c11a08884301f10f387003321740b384d025410507d835017809703900fc04e000, 0x40dcf4f8b0373d6e2b89c000f48de6748ce91a000795cf338ac270007d2279d030001e90fcce78dc52e91e060017d20f9d0374810013ce0011d20398002e331a7f148002001e32da7818002c653530374790003cce76fc50007186d3800386beac001c35b18ed573a3e2ca066069c7⟩, ⟨0x2b6147897046a20e0fc87903b21c40cf864830a17a0aa84881fa0ea06c833017a0b00518250102072033815808a036014807801a000, 0xf4b2e600020014c3db20071b0dba800a761af527855304ca9c12fcaac0063186d3d0a585389b182005752009e302000e9c013c607532821f34cfe295c92e29a3318493c5139927048f1a5e4d0d89eccd09a44d2e27⟩, ⟨0x3541978c285f62f01658a904e226712108743f01db0e806cc3381890b1053424c11508203d419c0c105a02740f006301f00c4014000, 0xc8031fcd3854b8ff69f224e0900071fcd4f42f0549cd00042a0c7e74f03053d8fc6a4208c4b35214fe25daba785295e091429c95cb88c90c10fd308008f381e54fd30001d73b4cd258693093d2f0005f32852e29030598004cc4bb207f560061311ee184e000fa5a73a06⟩, ⟨0x3dc1d48e106be33a1958c705ea2c215c0a444d825b12508943e41cd0cd05d429c13f09a84382020ea07002e412808702a012804a000, 0xd6783210b874f99d667ba9ca572a6d4e73395469ed24c249e4a4ca9792000e72b95269e06e892ca8b92127e519a7a734b49a718a97934f8e063132f1e9e5e897934f2f3cbc72f169c001977f4e9793a70f33123c0c97e3a6f73184f2f169a064be9d36b9d32466e9a7f14800332366e5a781a644cdc7539b866d5a7⟩, ⟨0x5602ab14cca5250226d926888c3e31b88d3064a2fe16d8ae052626c11b084c3ba1980c7059c2680e006a02bc11007b02a00bc04a000, 0x8180058a2c4c0c0007690f34c34430be8ee7ac463106f0be9db9e188b31051ca4f0b71db9d988a31031ca21779e15e3b73a31126202393c2ee6dce78538f124b119a9860a8917970c10c4b72f13b89cc5f817c238988fde11d4eaa16de1c785cdaa81b77f1c009e0dc380026fbd83af8f968c000b7ddc1d5c781b6879e08e6bc09bed8005a73c06f6f1bed55dd0003c78460007f17d3ed0a7e37cd713ed080003cd16c7fd1d8c0c2db7f9fab⟩, ⟨0x4b024992248c443d20b0fe47cc3c91d10db064e2d3138094c46c219102077c3741950b7051c25010106e02dc12808503d015c060000, 0xb8b94c0c00076a1734001d797620e1b6a274f810064fc2c9b08c3e53577c1ae71eaef34aa06b7c7abbafd39a54835ae3d5dc7e9ad2a363d0359e3d5db7e98d29c56a6c7906b1c7c4c3194e2618ca71200a520dea9d75f5d3d5ebac2f1eaf5d5d6f3571cc82f0f2c2f04731e5801bab47da5a175b9bae67fedabd72f5a2d5802315387c8938240038a6c4c3113149cd000800f14987⟩, ⟨0x4ac23b0f2074636d1940b504e225411b88684121f80f4870836a1a80c585b828e13a08984241c40d105502340fc07302b00c4014000, 0xb302af0ecc271eede0699b49396f0ed2ab8f572333d2c56d8ac6aefc7d5d641ad38391ac080f1b8e0e42b01b4cf078bc7071f5809a673f730789c7071d5805a66bf72d93e0f0f8fe177727007ca93f97e64b70cd256693093b55c00572e852c290239a95803cccafab3b5f2ecb09c001ed50e6c0c00076a772f44e2d7b3333f4c08e4a4f912704803c7ca75eb0e375a00807c6c9e06⟩, ⟨0x82c3fc9f50f2674e37d1a98d0265c30b970cb2054b27b9340970491236111c8043bd18f094845a2160f786e430616c093831013e000, 0xd22748b91a34fcc64765a9d21f4899199f25d3a2583885239aebff1d12b9c4191cb2386ebf71ce2129cec148d22c77a71ffadbbfb4f77d9d7fa74826d0f36293481e3b4806877b1452093482e3dd8cf167e29a7482030eb835c904e3a40f1873c1ab3054903e38001c2b3c9c135c6a75124038f77d5e2da7acaa891d3c3428686aca544871eac22b2e7386139b8f7712ee1ea42cb93771aee6ddc5bb97772435371ee8c5dc3bb85772f520e5c8bb8b7732ee25dcabb901a96b72f1c001ac8b5358fe99591d5b2e3ab2215ff56c78f56c15908001e3cc15a6bb8b76f2eddb2afe3dd10bb8976eeee1ddba655dc76d4abe3d3abc4bb7c1a6ed25e5be3b4f33d95c8ab936af3c7⟩, ⟨0x24a11b488c41f1fc0f0873a37616b8a8449a1f90cb05c418609c03a813804e000, 0x372f4137931a1a826f26de39543e3d297a52bc75ccab99304871cf76f8b74f72af841f1eef55de3bbdb7792ef34fe07c55c20b64a4f21e3acff44cd2f238ef34567f487444cb2f1f8f3a4edf5c4347a124f0b8f3a4adf544337a104f06476f1f170e8bb4e8f5e218bd069b524efcd941c4b27828e8b2c3cdabe38f6dda31c7c25a3d3b8ed236746f1e5cbcbbde3cb0f9429c7⟩ ] def tableRRRRR : Table Block := .branch 15 tableRRRRRL tableRRRRRR def tableRRRR : Table Block := .branch 29 tableRRRRL tableRRRRR def tableRRR : Table Block := .branch 59 tableRRRL tableRRRR def tableRR : Table Block := .branch 0x76 tableRRL tableRRR def tableR : Table Block := .branch 0xeb tableRL tableRR def table : Table Block := .branch 0x1d7 tableL tableR def program : Nat → ClosureSemantics.Node := ClosureFixedWidthProgram.raw table end ClosureFixedWidthData0 end PolicySubmissionPart29 /- Component ClosureFixedWidthData1; SHA256 d3d27c0d6cbcdf064cde992107a4e922ac3e24f67165c541779425ad553968a2. -/ section PolicySubmissionPart30 namespace ClosureFixedWidthData1 open PackedNatTable def tableLLLLLL : Table Block := .leaf #[ ⟨0x32818d8b985622a01488a084e626012688e840a1f20f286c02f61760b505742a214208683f01de0e306a027c12008303b81a806a000, 0x61c8000008000090c0000040000506326f3ca7c8ab126dc293a05261b264000004008000731a6587200000201069c300000100000a18500985a84471640000040834e07446d6178111e590000010000061d44d61780130e400000400002060000020000043⟩, ⟨0x2bf1580a7c51427513008ac44221010087c83c61ce0dc86902de13a092845821e10807583601920b4050824810607002e812806a000, 0x722af136ee0acf405660f6b90000010099c61c0d226d3ca7c8ab126e60acf005660e4b900000102000018000008000020ddbd72d8a8244091fb4406e8f84a714eb9a051a794f9154428de8527a0a4c185720000020066843⟩, ⟨0x288139896048622b10987f03ca1ca0d986783181770b3053c27a12e08b84201ec0e906a02f414a09203f81b00b20410180098026000, 0x715c63902aa7255404b644045445029acf03319a5d28aaa501668cf9a8ce4a2b135509b66076ce449469367066cd64f5092b45a3746a8829b21945158926742460728e0dd317c0514346881a414686093⟩, ⟨0x3011750b6c5882a614789e0486237115087840e1d20da067030816d0ab04ec24810f07e838819a0b604d82180de05a01f80a802a000, 0x16e334c2781d2d3cb900b280e36681f4d90000010012c21a2130b51880ef6c80000080bb940c097c8ca09648808a08a058d9e071334bfcd556002cd19b3519c941680aab3055b894b66808155033ab722f6cdd2abe4b4155591ab7409580e6ae⟩, ⟨0x2fe1748b405762a414689d84c624511b08b04362040f3073c38a1b40ce86382fe1660a684d01fe0e6058824c0dc05d02300d403c000, 0x6e8d53014f91ed356c1cd9dc0998076b38334c6bd80594712206d13681c8d3af580b2855566c0d026d037da7c8aa926c580bce2005e60314f9000001008000180c43e4000004017728766d016501061fab2068de0edb4e04da07134ef5d02ca⟩, ⟨0x2be1560a444f826312408cc4342050f507543781a30c705b42b0140094044c1fc0e306702e414e09204081a00ac047017007c01a000, 0xce4a0b00555782adb6297cd0102aa06756dc15be6a955f2520aaa88d5b1004ec018777036ae2161805d4e42a8096c8808a88a0b85783bab4b911556a0ab467cd467251589aa84db400ef9c8928d26d1033e6b27a8495a2d⟩, ⟨0x3591920c0c5b42c91580a7c50c277133093446821b0f3075c37c19d0c205ac26c12a08e84441f00c305282340ea05e02380b002a000, 0x20085fc3b1b20175008185e6ba078de0766f3c13680dd3cf915489b74005e79a02f301d47c80000080088b0cc2780debcee6e005d4036eed01ce7c8000008006b30d20985a9440386f9000001010bf81812f3d9412c9101141140a733c0cd6697d1aaa96059a3366a⟩, ⟨0x2a014589d84c824f11f08944262040f587703941bd0d4063c2f41610a404bc23c0fd07703901a60ba04c82000ec06702700c0032000, 0xd41568cf9a8ce4a2b135509b7d01df391251a4df6067cd64f5092b45a3746aec0a7c8f69ab0039f38404ec01c1770f9e2ff0005d4712206913680dc3ceaea805d40d52ed81a12680d9bcebd602ca03559a03c0f9⟩, ⟨0x30b17f0bc85ae2a214209b04a823d113082c3e81df0e686c833a1820b3854826e12208383c81b20c005582280ea05d02280c0036000, 0x30b538803178c800000805fb40c0979eca09648808a08a05399e066b34bd8d554b02cd19b3519c941600aaaf055b0a14c66808155033ab6182b8cd52abe4a4155511ab77009d803b6ee0695c6ced00ba9c855012d910115114170af0775697022aa⟩, ⟨0x35019a8c686122e516b0b305762a013e09844ae24811688303e61d80d185fc2a414109304541f40dc06282d813607702e0104018000, 0x8900a180188c387cf10f8800614712206913680611138ac50030a0344e1b03424d00c0e274f4c02ea01a5768066119000001002fda1c0604018500406078ec2068de0381c4e04da018544e9d202ca0b459a613c031189c36180185006170d00c8a3200000200132434c2⟩, ⟨0x2d015a8a8050a27012a890044a20a0fa87443781a40c605dc2c414709904742160f607283281700a904701fc0da06002580c0036000, 0xa0205540ceadae0ae3354aaf9290555446ad9600a180195c381a571299500614e42a8096c8808a88a0b457839ab4b81155620ab467cd467251589aa84db4403c67224a349b4603466b27a8495a2d1ba354f015191ed354401d19⟩, ⟨0x33618d8c285de2ce15a8a9051227a135894046a21a0f2872832a1890be05c02aa12008103a81a40bb05202240e405d02580c0036000, 0x75789e09b4035e89d3d300ba82695da306f00d9627c8aa926dd40313b90062601ba464000004002000601b9464000004001b586a04c2d52200d9e320000020111703025e5b2825922022822814a678192cd2f635551c0b3466cd4672505802aabc156d685319⟩, ⟨0x30517a0b6458e2b814e8a384f826f12d08fc45420f0fa07643901a40ca862c2f415f09d848022c107076032c16409703100f8022000, 0x1426dcc01e3391251a4dcd01a33593d424ad168dd1ab200a8c8f69aac80e8cd98050c00d961c3e78b1d90030a389103489b4035c89da6d0018501acf0d81a126806af13fbfa017500fcbb403848c8000008011170eab5600c28020303dc6103c6f⟩ ] def tableLLLLLR : Table Block := .leaf #[ ⟨0x2fa16e0b1055829513f098c49823711288283ea1da0df86a831e17a0af852825e11407f836c18c0ae04b02040d805101e009c02a000, 0x979eca09648808a08a05399e066b34bd8d554b02cd19b3519c941600aaaf055bae14c66808155033ab7602b8cd52abe4a4155511ab7000286006ff0e0695c5f6fc0185390aa025b22022a2282e15e0eead2e04555a82ad19f3519c945626a⟩, ⟨0x3751a88cd865831d1810b785862a8139893c4442110fb07943941bb0d5063c2e815909204541f40dc06282a80ea06902e014006a000, 0x1bdde0061406ddc3606849a01d5c4f87c200c2803c186807b11900000100186a1ea7540185004060be2c2078de03d5c4f04da01d944f915489b7900189f14031300f3232000002000b643309e01dac4e9d202ca03459a01e34640000040013886a84c2d56200eee3200000200c3503⟩, ⟨0x2ba1528a044d825411e089c4241f70f107343761a60ca85e82d015909f04bc23a11007d83801960b004a81e80d204501b00b0036000, 0x1a571d1e900614e42a8096c8808a88a0b85783bab4b811556a0ab467cd467251589aa84dbec03c67224a349bee03466b27a8495a2d1ba3579015191ed356e01d19dd00a1801dcc387cf1b7dc0061471220691368076113⟩, ⟨0x32b17d0ba459c2bd1510a104da25e120888040e1ea0e606d03381850b7054c27812708a83e81ca0c805682600f606602580d8036000, 0x20180f07ca068de03fac4e04da01fe44e6cc02ca0b2d9a613c0180e67434002ea019f76b3701ce40979eca09648808a08a05399e066b34bd8d554b02cd19b3519c941600aaaf055b0105339a0205540cead8102b9cd52abe4a4155511ab7a80286007a70e⟩, ⟨0x3651ab0d106522f416b8af056e2a214889f04d424611588383d41cf0d9065c2e615809e84801d60d0060827412007502d00fc048000, 0x1c934b84ae38062600000200001837163a99807850901709ab44da3366a3392805b800c2b6e0186c58d94e7620200c2803b086c5cd9ce765ae87eb76201856c3590dff0121800c4939000001004b081807f70e3cb1f9fd00614e28d50061ba3f9c4f500186e97e313f9fd0030a⟩, ⟨0x2d015f8a88520281132095448623610d87f83c61c60d486302ee1500a184d024a10a07783801a60af04e02280f606c02780c802a000, 0xa136cb003ce7224a349b2d00d39ac9ea12568b41d33554a019ce41d3355448ec4e62600a5800c4b2e0715c447120032a61454a6ad4c08b22a010a055284f71686f9c1d850628d5892a926b62a8d80799c6b20ccc088ca525026a⟩, ⟨0x2db15f0a684fe262116888040a1f90f6073837e1b30cf060c2d615c0a784ac23410807d83801860b105202240d805101e009c02a000, 0x335cce130800c280307868033e4e4000004000ab86c2bccd15545c4e290212a32a953161033a9c116054045e45284f716857e81b850d9b5424ad16cf402aa9665a94a8495a2da6b05552abdb290ba0555c82ad19f3519c945626a⟩, ⟨0x3861ba8d8069c32a1878bc859c2b314b09ec4ae23c10f880839a1b00d085e82da15209a84681fa0d605282500ee06602480a001e000, 0x344da3366a3392805cc00c2b960186d28e14e7820200c2803c086d2ce3ce78dbe87ef78a0185713790d9980496003464e400000400d660600cc72e3cb130cc400ca9c51be00c35b396e67bc00c35b9966672dcb800ca80100c079de50346f00e5d99c09b401992676b6802ea05b376984f⟩, ⟨0x2cb15c8aa851a27e136097c48822710607bc3a41b50d005e42d815d0a704d823c10f081037819a0af04c02180ee06802680c002a000, 0x644946936bc01a73593d424ad168375aaaac82d9c8375aaaa19e69cd10014b001a1e5c0d6b8a168600654c28914d2a9825f22022d229427b8b42bdc0bc286cdba81016501d2cd5892a926b62aec99e26ec5433334756125c26a⟩, ⟨0x2fa16e8b0051626e11c88b04222050fc07683961bf0d506482f416b0af04dc24c108078837c1a40b704d01fc0d405502180b803a000, 0x2dc0066600dbd3900000100020018036e4e40000040007a86c2bc4d1554644e290212632a753181032a9c25f22022e229427b8b41380019950c9b730202ca03959aa12568b659815556efdca42d0155660ab467cd467251589aa84db5d00f39⟩, ⟨0x3891b70d4465a31217a8b6856c29b13f098445820f10007643981b10ca05e42b813508203cc1ac0c505402100d205801d80b003a000, 0x1db00c36f875a73d5010061401ea436fa75e73d6e943fa3d500c2ba9d086d94024b001bc272000002004c903006c7971e58b16c600654e28e70061ae3d7f33e60061ae4d7b33afec0006540080603db7281e3780760ccf04da00d91338cc60030a04c5e1a306f006cf99f22aa49b6f80333⟩, ⟨0x2da1640aec540283134092c45c2110fe07543901b90d506482f416b0af04e825210b07a03881a60c405482300e205c02580d8048000, 0x1424ad168375aaac582d9c8375aaaba9f69cdd8014b001bae5c0d6b8ba6ea00654c28914d2a9825f22022d229427b8b42bec0bc286cdba01016501cecd5892a926b62af4b2e26f460b3366796125c26ad1368cd9a8ce4a01770030a⟩, ⟨0x2bb14309e44bc252122889c43020c0fb877c38e1b80d586102e615509f04b023e104073833016e0a204801ec0d404d01d80b001e000, 0x8000af0d85789a2aa8d89c520424c654ea63420655384be44045c45284f716827080332a1936e8040594073b35424ad16cb302aac6e0b9485a02aacc1568cf9a8ce4a2b135509b71e01e7391251a4dc80069cd64f⟩, ⟨0x3941bb8d7067031d1800b8c55c291141096c49c23310b07ec3bc1b70c305d42b0147095046c2140ed06802cc0fc06f02900d003a000, 0xd79e79cf9bc50ff0f94030af27821b970092c007549c800000800dac0c01cae5c796329ca8019538a3c40186baf91ccfc00186bb390ccf23c900195002018179fca078de01e4b33c136803964cf915489b742006679f80333007469c8000008000f30cc2780397ccf1e202ca03859a00e8139⟩ ] def tableLLLLL : Table Block := .branch 13 tableLLLLLL tableLLLLLR def tableLLLLRL : Table Block := .leaf #[ ⟨0x2fd1710b1455028b13b093c48423311208303e81e50ec06c43401820b5856429413b090040c1d00d306102b413607702e00fc036000, 0xdd6aab4e81a73a80052c0074f97035ae34dd38019530a24534aa6097c8808b48a509ee2d0560005e54366dd0080b280e766ac4954935b157f65f137f36999cc3f3092e135689b466cd4672500bd801857ac030dd71e69cf94040185007c90d⟩, ⟨0x2a914e09f84de26312708d843c20f101076c3941ac0ca860c2ec15b09f048c21c0f907383481820a4049020c0cc05702280e003a000, 0xe290212632a7531c1032a9c25f22022e229427b8b41389019950c9b740202ca039d9aa12568b65981556ff0fca42d0155660ab467cd467251589aa84dbc100f39c8928d26f08034e6b27a8495a2d06eb555bd05b39⟩, ⟨0x38b1b70d4c65e31417b8b6854a28813c894848a22a10687c83aa1ae0be85b029e13e090840c1d80dd060027c10c06901a009c018000, 0x77cfbce7edee87fb7ea01857d3d90de380496003da4e4000004004e20600f172e3cb1c4f1400ca9c51ee00c35e3e0e67ec00c35e9e0667c1f0800ca80100c07e7e50346f00f8599c09b401e32678f1016505c2cd309e00f2733c7c6017500e2bb401e92720000020001f43615e268aaa3a2⟩, ⟨0x3011730b2455828f13d094c48c23711408403f01e90ee06d43481860b7857429c13f09104141d00d306102b413607702e00fc036000, 0xdd6aabae85a73d80052c007af97035ae3adeb8019530a24534aa6097c8808b48a509ee2d0560c05e54366dc8080b280e366ac4954935b15412c7cce08f2666c840b292e135689b466cd4672500bf801857ec030def1f29cfc4040185007e10d⟩, ⟨0x2a914e09f84de26312708d843c20f101076c3941ac0ca860c2ec15b09f048c21c0f907383481820a4049020c0cc05702280e003a000, 0xe290212632a7531e1032a9c25f22022e229427b8b4138c019950c9b720202ca038d9aa12568b65981557bf15ca42d0155660ab467cd467251589aa84dbf100f39c8928d26fc8034e6b27a8495a2d06eb555ed05b39⟩, ⟨0x3821b38d286562f616c8b2854629613d89784862260ff872837219c0c585b82be14e09784401e20bc05682400d805101a009c018000, 0x3439d86fe2024b000c17ac80000080055c0c01fba5c7963ecfb4019538a3360186b29f34cf320186b2df24cfe6f9c019500100602e0152078de01fd133c136803f7ccf915489b602801a9c0200353003026b20000020001443309e00fe53393494030a00c921ac47e539615e268aaa3e2⟩, ⟨0x2f41728b585762a314a0a1c4c625212008c44442070f407343761ac0ce86082c6148099848821a0fb06b82f013a07902f00fc048000, 0xa14d4a98116254045e45284f7168677a1b850f9b5624aa49ad8ab79f8899bb86553fcefa12b125524d6c5556f944caac2ca9fceb1092e135689b466cd4672500b5201856a0030d83e68eb3a2010061401d0c36109a4ace8f3f0fcf688030a⟩, ⟨0x2ef1658ae855029b140098449e24211388203da1d80e186c433818b0b6056829612c08e842c1fc0e306202a411406b02600dc01a000, 0x57c61b850d9b5424ad16cf402aa89479a92a12568b69a8155446305490b80555b82ad19f3519c945626aa136c4900f59c8928d26c4b00d59ac9ea12568b41cb15544106359072c555054e3d660b802a600182d4e06f5c41482a00694c28⟩, ⟨0x3401928c185b82a714b09dc4cc24711488484021e20e9871034a1860b384c82260de06882d815409d03f81c00c804f01a007001a000, 0xd18061a6722754e284510034a00200c03c6ca40f1bc01c52a9e09b400c59a9edd80594275b3460de0063054f915524d8e0006a71b400d4c00c6fac8000008000400c00c6dac8000008000310d85799a2aa8789c52042526552a61c206753822c0a808bc8a509ee2d⟩, ⟨0x3681a20ccc62a2fe1760b7459c2b114909d44c024f11d08a04081e90e5069831616c0a884b42240f306a027c10007102380e803e000, 0xaf0c2f0a1b36ee040594076b35624aa49ad8a95c9726656e4b54e5d57a525c26ad1368cd9a8ce4a016bc030ad70061b224d4d67500200c2803a786c8b35559d4e961fa4d400615a7d1c362d804a6001903590000010007a818018b14e3cb115a2b801a538a34a018699a8a153⟩, ⟨0x2cb15c8ab052227212b890845a21b10307d43ac1c40da865830e1750b4053425c11307a035416c0a103b81a80b604c01a007001a000, 0x28495a2d96605552b0c25242d0155660ab467cd467251589aa84db2bc03d67224a349b2c403566b27a8495a2d06eb55529c16d641bad5547b393598fa00a980063e5381ad711ea3d801a530a24534aa6097c8808b48a509ee2d⟩, ⟨0x32f18a0bd459629614289984aa23610a87f03da1ce0d806642f414509c0474222104073035c1960b604f02180ee06a02300d402e000, 0x67c030d3392baa72c258801a500100601e6652068de00e5954e04da0065cd4f373005d40b96ed309e0066054f1e202ca03859a00668d640000040001186c2bc4d1554444e290212632a753101032a9c25f22022e229427b8b427e70cc2864dba81016501d2cd⟩, ⟨0x3681a20ccc62a2fe1760b7459c2b114909d44c024f11d08a04081e90e5069831616c0a884b42240f306a027c10007102380e803e000, 0xaefc2f0a1b36e4040594071b35624aa49ad8a958af26655e7b54ebd56a525c26ad1368cd9a8ce4a016bc030ad70061b3a4d2d67480200c2803a386ceb35559d4e861fa0d400615a7cfc365d804a60019c35900000100057818019714e3cb12da5b801a538a342018699696153⟩ ] def tableLLLLRR : Table Block := .leaf #[ ⟨0x2cb15c8ab052227212b890845a21b10307d43ac1c40da865830e1750b4053425c11307a035416c0a103b81a80b604c01a007001a000, 0x28495a2d9660555430c05242d0155660ab467cd467251589aa84db43c03d67224a349b44403566b27a8495a2d06eb55541c16d641bad554db393599ba00a980066e5381ad7136a6d801a530a24534aa6097c8808b48a509ee2d⟩, ⟨0x3131810b8c5a42b31520a4c4e825511b08043e41d30d906642f414509c0474222104073035c1960b604f02180ee06a02300d402e000, 0xf1bc01d16a9e09b400d1da9f22a9136d3300353a60006a60069bd640000040000d86613c00d20a9e1e100ba80705da00698d640000040000c86c2bc4d15544c4e290212632a753121032a9c25f22022e229427b8b427e30cc2864db901016501c6cd⟩, ⟨0x3971c28dd86ce34a1958c385f22e81698b0453a28213188fc4482050f5071835618c0b684e023210a070034c17009903f017c06a000, 0x2c4954935b152b9904ccadd5aa9e42af4a4b84d5a26d19b3519c9402d780615ae00c36a69a9acea00401850074f0da9e6aab3a9d2c3f49a800c2b4fa386d1f0094c003516b20000020007d030034729c79628d51b0034a714684030d335452a79f00c34ce512a9d14a2a006940040180ba6148⟩, ⟨0x2dc1608ab052e285138097c48022e10f88003e21df0e906dc33017d0af04fc24010b070835018a0b604f02180ee06a02300d402e000, 0xb40555982ad19f3519c945626aa136d7300f59c8928d26d7500d59ac9ea12568b41bad5556b05b5906eb5554fce4d66a0802a6001a814e06b5c53ea7e00694c28914d2a9825f22022d229427b8b42bbf0bc286cdba01016501cecd⟩, ⟨0x2f11690ad053a28c136897849e23010887c837a19e0c885d82d415d09f84c024810f07b837c1a00c304f82380e005902380e803e000, 0x6c054f36502ca13919a306f00361ea7c8aa926d9700353b28006a6006cb56400000400008064a2c1d6585789a2aa8a89c520424c654ea62820655384be44045c45284f71684fc619850c9b740202ca039d9aa12568b659815557030949⟩, ⟨0x3a81c58db069e33a1948c506042de1618a9050026512308ac40e1ec0e686b82f215a0a584842280f906d02fc14007602080c0022000, 0x3cb83998f1b7b53e10f4949709ab44da3366a33928054500c2a880186db027f599f008030a00cf61b6c8a05667f3b87cea7c01854f6730db0401298006d45640000040006206006bfd38f2c57dafc00694e289d8061a4c2bbd4e720186932aeb53aef5e000d280080300f64e903c6f0075e6a7826d⟩, ⟨0x2c715a8a9850e278133096447c21f102079438c1a70c905a02b614c09e84882140fb07703281720a704c02240d804d018007801e000, 0x644946936ee006acd64f5092b45a0e58aaae9031ac83962aab4c58eb36a00153000da7a7037ae2d2da60034a61450a6a54c08b12a022f229427b8b4335d0dc287cdab125524d6c54ae713332b770ea7c52bd295892a926b62a⟩, ⟨0x2cc15a8a584c225411c88b44402020f9879c3a41b70cf864030615f0a704f025e11407a838c1ac0bb04e02040d805702280c003e000, 0x39d9a006ff5640000040000386c2bccd1554244e290212932a953081033a9c116054045e45284f716857061b850d9b5424ad16cf402aabb661a92a12568b69a81555d723d490b80555b82ad19f3519c945626aa136dda00f59⟩, ⟨0x3ab1c60da069a32e1898bbc5a82b514b098448423310487f03c21c20d386202bc12908c03e41d00c905d02a411406b02600f403c000, 0x61929159a3808030a00d1a1b86ca4d66914487d0e8e018551a850dbd60129800708d640000040004606006f4538f2c5e6bce00694e28a00061a4e6f054e7c018693bbbd53bc178400d28008030157f2903a6f00778aa7626d0037a6a7c8aa04db7fc00d4efe001a9de5c0759309e006f6d4f4e802ca⟩, ⟨0x2f41738b3055a292139895046a2200fb07a43b41cb0d9866c31817f0ad852825811508183d01ca0c805482300ee06602880fc036000, 0xd168375aaac6e0b6b20dd6aab05968ace0d0054c0038329c0d6b8c1582c00d29851229a55304be44045a45284f716856bc17850d9b768202ca03b19ab125524d6c547dfd9331f589aa7f69fb292e135689b466cd4672500a9c0185534030d⟩, ⟨0x29b14709cc4ce25a11e08b444220c0fa077039a1c00ce062c2da1560a204dc2380fd07103341700a604882000c204f0200084024000, 0x30af1345550b138a408498ca9d4c2840caa7097c8808b88a509ee2d09e08330a1936e9040594074335424ad16cb302aac7848e921680aab3055a33e6a33928ac4d5426dc7e01eb391251a4dc8201ab3593d424a⟩, ⟨0x3b91cf0dfc6b63401908c185c42c71540a244a823511307f03de1d40da86682f615108e042c1d80db05e027810e07802c80e003e000, 0x14c00c373c143acd08040185006830dcf4522b3479fc3e7d4600c2a8b3d86e4a0094c0039c2b2000002000190300391e9c796322e460034a7144fc030d2698fea73d00c349d63da9e3fc800069400401807cb7481a37803c83538136801c9153c5840b282e066984f00393ea7979402ea01c976e4fcc159⟩, ⟨0x2ef16e8b4056a29613d897047a21e104877c3a41c30da06703081750b4051026611507f03b01ba0ce05782400e205c02580d8048000, 0x28495a2d06eb555a5816d641bad5566a2cf59cd800a9800735d381ad719a735001a530a24534aa6097c8808b48a509ee2d0ad742f0a1b36e3040594071335624aa49ad8a87b44ba98f5d0b538983e2925c26ad1368cd9a8ce4a01534030a⟩, ⟨0x2a814489f04c225512408a843620f0fd07883941bb0d706282f215b0a204c824a10a07583401760a604a01fc0dc04f01e80b801e000, 0x185abab2c2bc4d1554344e290212632a7530c1032a9c25f22022e229427b8b427810cc2864db8c1016501c4cd5092b45b2cc0aab4d91ea485a02aacc1568cf9a8ce4a2b135509b74f007ace4494693750006acd64f⟩ ] def tableLLLLR : Table Block := .branch 13 tableLLLLRL tableLLLLRR def tableLLLL : Table Block := .branch 27 tableLLLLL tableLLLLR def tableLLLRLL : Table Block := .leaf #[ ⟨0x3781af8d0064e3061768b3855e27a12d89304442150fe07743881a50bd851826a11608283981ae0c605382200f205a02580f803e000, 0x1d876edd1bd59ddd677eaee00bab6f51dbab40253000ed3ac80000080001c0c00eaaa71e58d51aa400d29c51aa02ed197a8aa7a602ed1a1a82a7a8b51801a50010060275f52078de00f5254f04da00755d4f915489b760801a9ebed7f53389e0075854f91568b760001a9ebdd7d53⟩, ⟨0x2eb1660adc51a280138898848e22f110084c3e41e10e787003621920b9855028413309204141cc0c7059028411807a02c8100042000, 0x1da54e06f5c6d0da200694c28a14d4a98116254045e45284f7168cfb8dba87cdab125524d6c543da5a54c7aeeea9cb51f1495892a926b62a11b2baa62337454e5788fa49709ab44da3366a339280b8c05d5c402eddb636ab3b20402ea⟩, ⟨0x2d315c0a80522284130093c47a23010a87d83c81d70de067430416d0ac051826212008083bc1c00c1059028012607802c80f803e000, 0x22c0a808bc8a509ee2d0ac74370a1b36a8495a2d9e80555c1890525424ad16d3502aae042e6921700aab7055a33e6a33928ac4d5426de0a01eb391251a4de0e01ab3593d424ad1683962aadfa0c6b20e58aab68901aced30054c⟩, ⟨0x35519b0c9c5fa2f016b8ae053e28012b08844041e30e2069432c1770ac04e42340fb076033415c08f041019c0b604e018008402a000, 0x789538f2c710e2200694e28db01768d4e1553d901768d6e1153e15c2c00d2800803013c9a900079ad3c01f0ca9f330034d003c4ea7c8ab98001a6f2900353e4dcbaa600796d3c00f18a9f22ae540069bca000d4f92f28a9b0af33455505138a4084a4caa54c1040cea7⟩, ⟨0x32318a0c145da2d51630ae45302871348948480231111080c3c81c50d8067c3141780ab84f823e0fe072831815a08c039815006a000, 0x48a6954c12f910116914a13dc5a2bf22eea1b36ec040594075b35624aa49ad8a84b516a9895ea153a2e262925c26ad1368cd9a8ce4a02e901757400bb7a18e3acf10100ba80785dbd14725678f7ddfbdc402eae1dd76f150094c003ceeb20000020000503⟩, ⟨0x2e716c0b2c54e29613c098449e24211388203da1d80e186c433818b0b6056829612c08e842c1fc0e306202a411406b02600dc01a000, 0x284f71684e3a19850c9b740202ca039d9aa12568b659815576617d490b40555982ad19f3519c945626aa136f6900f59c8928d26f6b00d59ac9ea12568b41bad5576105b5906eb555cd481d679b802a6001e6d4e06b5c734e6a00694c28⟩, ⟨0x36319c8cb061a2ee1678ac050c251119084c3e81d50e3069c3101690a504ac2380fd06f02fc16409704581f80c005102280c0030000, 0x772ee600694e28f3a0069a1afb654fcd801a686fed553ed9db400d2800803013e2290007c353c01f6ea9f840034d003dd6a7c8abc0801a6f8b00353f11e2aa6007bf53c00f7aa9f22aef60069be2800d4fc3f89a9b0af13455507138a408498ca9d4c1840caa7097c8808b88a⟩, ⟨0x3141838b745982ba1558a704fa25e11f88b443c20f0f8074436419d0c605dc2ca14409584301dc0d705c028410606c02680b801e000, 0x716819f7c06e943e6d5892a926b62a1295f6a624fdbd4ebf096a4ac4954935b1502caef53057ec6a75e017524b84d5a26d19b3519c94050202ea800176fa40f359f0080b280f766fa60f959f7d59fd3d016579e6cdeec00e99e87ce56400f74a71e58⟩, ⟨0x2cb15c8ab052227212b890845a21b10307d43ac1c40da865830e1750b4053425c11307a035416c0a103b81a80b604c021009c01e000, 0x28495a2daab0555f302cd242e4155700ab467cd467251589aa84dbf3c03d67224a349bf4403566b27a8495a2d072c555f1c18d641cb15579b14159f3a00a98007ce5381bd71e6bcd801a530a285352a6818116154045e45284f⟩, ⟨0x28a13f89a04b624c12108cc43820f100072c32c1850bc05982b814d0a18490226102076838c1900b005082500d405902380e803e000, 0x304c60ecb613be4d818d258182d1619fea500000100000118000008000000d60cfe292f11e065093037c10034cef72f63941a15103022c0a808bc8a509ee2d02bf940dd286cdaa12568b68a41557d017f49⟩, ⟨0x2040f787943a41c20da868831417d0b605742a4141098046c22210207c03941b00c505b029812e08403b81900a60400178078022000, 0xe959c0c19a2e0b15c4e1822dcf822bccd1c67c8938246cd3306d13933c0cb926060e51ae310d92792974316f528668d71886093ea72c0d259334941a5c536e6b⟩, ⟨0x24011808844241f90f6075c39a1b80c185c02c21540a184e025611608083dc1c40cd05c029411a07c03781780a604201b80a0026000, 0xbcc5d893492668c9d6c27c0356c0c0dcab0000040000061eba8b3c932668634c26713f60ab509163032312ac18d4e940abe490f8dc50e3469d33649a704dc1ae131847b015686c91⟩, ⟨0x29314489b849a24111a08984302080f8875837e1b50cf062c2e815f0a404e025211a07e83c01b20cf05c020c0d805702280b802e000, 0x40c1b9cc2c48d168cf48d466aa1ae86a0c6c4059a0198c4495f69c0c06f3364448dc02cd0745881b2d3dec5d89349264d11e56c2707159b030186cb0000070000021d002cdf8158caa0a066b340ca688194d3⟩ ] def tableLLLRLR : Table Block := .leaf #[ ⟨0x25d12408d444420d0f9079c3a81c30da069c32a18b0be058429e14509984602120fa07082f416609804701f40dc05901a808c022000, 0xdc2a9d09121fa279655618ab42f04d908b9934de47f149748f03184900d36174b82c0d4882d340f07b49309262c15d201a480e0f0351c050981a19ca611c18556011050a156f82d020d2267⟩, ⟨0x26f132095447821e10a07f43e61e10e806fc36819b0c605cc2a414009784582180f3071034418c0af04d02040c004f01c00b802a000, 0x609389330b4ed035c1b1e06aa0993035f20b6a694a34e09038f759847018e7580c6d2bab1505a3734300b9e06878875d29a524d38241c96583029c063dd6031c3eeacb72c102c78190a29d7138a9⟩, ⟨0x1fe0f887903aa1c40da86a83361830ba05a42ba15009f04b423010e07e03c81c00cf06102c014c09704681ec0c605901c009801e000, 0x1c534663092f269cc93824e24c92b443627c4d08ce29ca41704cf4266781b2b0581b5d059533f8a4f64781aa24c0d8882b6c143c0c02176eeac2c16e0863e449⟩, ⟨0x1fc0f3873037c1af0cf06442fe1750b3057029412f09284482060f607483741980bd058829812e08503981a40a203f016807001e000, 0x66c53d60b0a7d21bf24ca99fc527b23c0d512606dac16130153c0df521f723d0a585348c72696c4fc8d09a924f3e0ae123c0c190915a282fca0b9a67f14ae49⟩, ⟨0x24f12208cc4342050fd87b03c41c70d7064c30216f0a304b423c10d08003b81c80d506582e413008e03981780a20390178070024000, 0x6091a34f0843b44e0cf032c4981803038680edbc4030089c620b1682b24c504639c4a45cff92654cfe293d91e06a8930371a0a131002e78180fc684c22a9fc521f8d0f037448981b7b05⟩, ⟨0x29f14a89e84c624511508183da1cc0d586683161760b1855827612208c03fc1e00e306a032416009704681d00ce04e016808001e000, 0x40cbcfcc2ebbd63b9acf18e3afd41c73f91941ee2cdcf5f6f64e788c4b073c19a572483029e1e45b89e380186e08dbc606c019759c498337a49c120d76ebb70173c0d71d4eb71380f43ac3b9c3dd5c668d33e449⟩, ⟨0x2cb15d0ab4524287136097c48823a10f88103d21ce0da866831016d0a904dc248103078838019e0c005782580f206002880d8036000, 0x141a5c534803c2f04e096f0b61380e890d818034285806fb1158cfe26019fc3407d1e2019e44e9d0500cee1a0195c44033889c712500192cb6d1a0b8c695b34c4491934e261bac018124f8384eb308f2d00c3403fc88afa5513⟩, ⟨0x23210d08403f01e50e906fc3641a30ca86082ea1640aa852c27412b08d042c2020e806c83001620a604d82380f606002380b0022000, 0x3440a1e06c0448a99a4b40c965343d0a4e24c50d02a27c525269309303629a4d24951a4c24c0dd43eed38923bd0ef6c4f89b1330a64e928069f0d15e1788069b0d80af6232669⟩, ⟨0x28113708ec45621b10587f03e41d70e0069431a17c0b6858829e134091046020a0ea06e832017a0a804c81f80b404701d0094036000, 0x143c96004608311b53c9635a634f6370a681b060186818cd125e0227995d0f1267c893824354490e1d0d2e11e060c5137714c37ccde8aabc121f6ab308e01b142c03610542a8892c19b2054f030ceb90b⟩, ⟨0x27a133094847e1fe0f707343681a70cc062c2fc16f0ab051c27812308583a81be0c605a828012c08303c81980a2044014807c014000, 0x203d1603d179e92df92110f8090ebb9f5b1b92f755cf9e18e7f14ae49714c998c248365ba6b24e0901c874c0e94462008139f1362013a704cf4266781a9492c0d57c968154fe290660d4f034812a606⟩, ⟨0x23110d083c3f01eb0ed073837e1b20ce86282ee16a0a784d825811308003bc1c00d506202a412e08d03e01840a4037015807001e000, 0x16c432f0486b2cb613a61ae918c23b0ac608d5d7c96da92b89c03be86c201bc606830175f5f258b33e449c123c69d302e1a5e23c0c3469d88061a714741ae89e231a47715ce2a⟩, ⟨0x26412d092c48222610587c03ba1ca0dd86803221760b6056428c13508d04041d20dc06682fc15809904781d80c605602180c002e000, 0x819624c0c01f3c3403d788807c913f524be9494c23807c30d30a21eef44e06e0517e6c9464ce01ed4368061e3d3850f86630932434468914113034c883ac3444c9991344c8e89940a75dbb8cb⟩, ⟨0x24d12008cc43c2090f4076c37c1b40cb86102c61520a284d025211408483f01c20ce06202bc14409103c81b00b604c02080c002a000, 0x14296149122ac18d573ea05573613c0801cb6060060295f02910249efb98c9a6ccd5069c124f4ab84ce2700fe21b89a4606d1155b89c7cd7673d15c668d33e449c123469ee8221a27067⟩, ⟨0x2bd1570a9052e26212708fc43c2110f207683721af0cd062c2dc15709d04c0232104074835017e0aa04a82180d604e01e80b003a000, 0x11936066158000048000010e0c517f24d07802d9fc5200341a0076781a82c00ad303504d94c238030e4b40f1688c10ccce06bdb99784ca7b2f954fc06a90b75483829e0d957829803bd83c00df4b70cd256693093058152b⟩ ] def tableLLLRL : Table Block := .branch 13 tableLLLRLL tableLLLRLR def tableLLLRRL : Table Block := .leaf #[ ⟨0x2a314c8a004a624211988884222020f287603961b40ce85f02de1520a404ac2280f706b02f415809303d01a80b604a01d80b001a000, 0x40d1f40eb008086f0d83cb39aa53619a4acd261264202a5742961489c6cb03899745402f73613c7601cb606006399581b8d10063699808511dcc0725d386e6c2c874b3e639f9b18f23c49b7624d24983c01a96c27⟩, ⟨0x29e14a09fc4dc25d12708c44482170ff07943881b70cd06402e615a09e847021a0fc076837817e0b2051826411805702180d8032000, 0x206a59b2e19a4acd261266502a5742961484dcbac06e1d74a402573613cbc01cb6060065c9580d93c40196666017497733c8f126dd893492659806a5b09e326c0cc2b0000100000021cada2b89c019325a6344f1⟩, ⟨0x29b14509c44cc24d11d08744181ff0f807983921ac0cd86282fa1600aa851026e11a08803cc1cc0c905b025410c06502c00ac042000, 0x6f39b7501d38277335d61821e850465b54e6d13eca681801a025a064e1319334941a5c533d80f2bc130e6b6138073bcb6060067595b8c4019ca67cbc942de8dae7f92697c016cfe29001a5d003b3c0d4b600569⟩, ⟨0x2a914f8a084ea25812188b843a20c0fe87803a61c60da86903061760ac853c26412308303941a00bb05102480ee06002480c002e000, 0x10355200cb5c6200d4d33a21b2d415970cd256693093508152ba14b0a66cd6346ba8e008b9b09e9a00e5b030034c4acc288034accc006a1ee74e765a71b280da3a7fb1aaa7f83f706c905d99203bee7e1e2758182c9⟩, ⟨0x2ad14f0a3c4dc261126090845a1f80f487683721ac0cc863c2f814709b049422c0f9076037c19c0bd04e023c0e406802580f8042000, 0x1b126924d5381a5ad84f906ad8181c1560020000000043d89349268ec06ad6c27c0d1b0306c8b0009610000021e19a4acd26126b702a57429614cf9ac78d754c03f73613807584b606006ae95b0c407aae6603153f73⟩, ⟨0x2c91560a544f026e12688e844a2100fb87703861b30d106443041650ac052c26011507a039c1940c005182580f2058020809002a000, 0x17507b2d03418e28dd12d81ab6c006dba049419d4f47aad39c673a626b0901c774d363619a4acd26126db02a574296148265d0b00cb61759425b73613da801cb606006d295b0c526b3e6624d5877303c58e3959b2d3c8e46ead⟩, ⟨0x29214389d84aa24311c88a84121fd0f7076c3861b00ce86382e21600a184e425011508403ec1b40bd05702440e005302480a002a000, 0x3048d9a6bf4026da5c23c0c7926be4016db48c611c3545d0224579725f264a611c01bf25a3e7100ef999c0c386bf064b429614d730045afc001e56611c01bc65a0035c57100eee99c0c0035bf6bee64a0f8a7⟩, ⟨0x25a12388f44541f50f407643961b80d586683161810b805842a014109b845820e0e606b832017a0b205282400e605201a808001e000, 0x3a346c0c1da2c0000100000087429389324344a89f14949a4c24c0daa6934925669309303006585db4f24d848055bed24b627c4d89985360565c400196800d80dc401c3667601658933e449⟩, ⟨0x2a614489fc4c425511c085c4001f50ef073c37019b0c505e42d414d0a004cc23c109074036c17c0b404b82280da04c01e80b801a000, 0x3d2a5b03003a44ad86230e8b3304eb0ab9cd88cbc130a5b2fd5301a4c7cfc4f96e19a4acd261273b02a5742961493caac1e15765409573613e6801cb6060073295b0c431cbe6608764773d8934926c7c07ed6c27⟩, ⟨0x3001778b785922bf1580a9851227c12f892c46e2230ef06dc3381810ae84b02260f606f830816209403d81a80b204c017809001a000, 0x1b34cc1b44e4cf032e4981801d925ae310076199c43a2c44a2c40a2cecedbb2eb3b14749c765d622939d757078a6ce0fa789eca0e3943c89a512701857390dabcb40dd63eaa2d4b46ccfa98192da86c73c99a4a0d2e29d380795e090f9d96c27⟩, ⟨0x23411508343f21e80ec871035e1a20c285c02cc1530a104d424811908403f41dc0d105f028412e084038018c0a00380158068016000, 0x81b3b0065719a8b06695c920cca756355b89f820065a640b1819be458d1a74cd9269c13706b84c611f770065a1b24403dd267030668b8a5457138608b73e08af334719f224e09⟩, ⟨0x25612408dc45421910707c43cc1d90de067c32a1780b5855827612e08e84382060f206e832c1820b2054022c0f005b02380e803a000, 0x3c861934d99aa0d382409d5e57099c4fd10032dd042f98c0da885b2b713835aad4a8e55699a30cf9127048c9a64395a5f23c0ca92606007919687c9101f8e99c6ba2b89f8c0065b9580731⟩, ⟨0x24911f089c43820d0f807743801b60cf86482fe1670ad052427412f08f04341f00ee06f83541700ab04701e80cc05201e80a002a000, 0x182456965c26308fe30032d0d522327873381b11265b89c3045b9f045799a38cf9127048d9a660da27267819724c0c00f692d718803d8cce4bd16665164a51650d52148a90f90e7c6ab⟩, ⟨0x2ae14889d04ae23a10e88383fe1e00e986f836819f0b5053426011b08003b41bc0d206182d015409303f01a40be0420178078022000, 0x3a0d6e5600ef127d635995803bec9f85f9a5bb126924cff0674b613e21ab60606f5580000e0000030c01a6a4fee5372d9dd53c7338a7be512612711ab24e24781b9a265831a9d281570379e00cb55d488d1a70cd7269⟩ ] def tableLLLRRR : Table Block := .leaf #[ ⟨0x3571a18cdc65031b1880bec5ce2d315b0a9c53828d138092447e222107074c31c13f08c03ec1a80b705682300a204201b009c014000, 0x42fa2c233627d336261b235412a2c2ea2cfc0449f224e093493645852d0067900e4f034f000ca604d172b9da719cf2993e553ace7384e59449f299d2729be519c72793e419464d27c9b2293e4b90e4127af00193c0c5777cd6bc226d9a26ac824e612711ab24d3e00c9e06⟩, ⟨0x26012b090846622810e08343f21e70ec071035e1a50c986182f81680af052827212c08b84341f80e8056826010a07a02e813805a000, 0x81a2dd15b13e26a4630930be8aa923984985b4573123c0c5423d19a068594581a22d17d4cfe291d333c0de2698414503744d0a8a0324f00aa927d1382403b6256791c007006d60038000116a⟩, ⟨0x1ed0f007443881b50d306442f81710ae050426812708c84181f20ea06e83401820b0050825810e076033816009a04101a008001e000, 0x1e295c92e29954c612669153286a9c120c2a9ba6a151429614e50d7ca27c52b925c5366630931469ec93824f24fd1a2d24b627c4d08ce2986f458133c247⟩, ⟨0x2f916e0b2457e2a014989d04d025b11e08483fc1f10e9072035217f0b004ac24210207283401820b605082080ce05d02400f803e000, 0x4e5d2b9050f0332b81d4b6138048194b8467138018314b82f02000d2a39d1584f179905360664104a9707807803a3c016994b83803400bf3a3c0d15c00d3719ff662474a7c8938241dd52c561dd3410f553c0c166a981a26001a6b0e86b51⟩, ⟨0x2b21540a1c4e626612288e445820b0ef07283661a60c405f82ce15d09e04a02220f2071836018a0a603e01c80a60360138068016000, 0x206001c52b64e4a2b09c01313ed908ce27001c4bb6625625800daa6f5142e763f8a4083cac781816364c0c0038856e94d45b7798f0600bd1f224e090d11306a14d3400c130254781a09010a4e66074ace24c19bd24e09⟩, ⟨0x26b12f08f44662120ff87c43bc1d30df06c031e17e0b6857827a13009184381f60e806b832815209f03f01a40ac04901a80b8042000, 0x309c0871c6dd0300fe37db03c44fd0deda2704c0d2b2c86c68012b7699a4b0d2612719002ed94297148302b1304907c8c8e3c309f17000edd03000e2d5b04a4e571a518692f28a9184e0078a96e⟩, ⟨0x22210a88183f21ec0ee87283761b00cf86382fe1720b3855829213f095848421a10006f82c813c08b040818009603e0178080016000, 0x3c52b925c53466309278a27324e091e34bc9a1b13d99a13489a5c4f034eaa2c0d3a68ae27001c7eb663ee3f000daa71d166143c0c0478f36c07653f998e24d4a6a4554c26⟩, ⟨0x25712688f043a2100f887743a21c20da869832417e0b5053c280135092040c1be0d505d029c13408d04081b80ac04b01c0090022000, 0x40c36690033a29ac3100d396a7ea68b88c691dc5738ab335171c51731d17ec1083e449c123a69cce1f4b6807e20b83c0df004c278643d0a585308c2ca26e1121e1358289a4f45a410f9a67⟩, ⟨0x281138097c4a0231112085c40c1f50ea071c35019e0bf85c82a613f08f04281f60ec066830015e0a504a017c09c03f01a008c024000, 0x186692b349849a0e02a97429614d49ac60d79e201373613d000074d81800cfea5b8c400cfba9fb7a2800e74dcfdb517624d249f7404696c273f36c0c3a6b0000190000021c619f224e091f34be1b4be47⟩, ⟨0x25512408e445e2220f687643981bd0d7867031e17e0b785942a814509a04942360fa07583281760ac050825811207402a80d002a000, 0xc278c9b0330ac00006c0000087f8e8b429389324344a89f14949a4c24c0daa69349256693093030066825b4f24e810055bed24b627c4d8998539f765a1c0069a0039f57100342ea79f365⟩, ⟨0x2c21558a304ee26612a891844e21a10687d83be1be0d886483101690a904cc22410307a034c18c0b105382480ba04e01e80b803e000, 0xcf68801a9153802b2e19a4acd26126a200aa5d0a585226432c0c765e9600d5cd84e00e9ed36060034ee96060b4400d38a9809e92dcf624d249d2302ab5b09e80d5b030332ac00000c0000086791e24dbb126924fe900d4b⟩, ⟨0x279132896047222210c08043e41db0e706dc33218f0bd059c2ba14609c84b023810b07d03b419c0c3056027c10007602b810003e000, 0x1ab68ae270035a29a7b7346063bb196711c1ea65b89c0e665e7ca09950340cd964143c0c4f032d84fc66e0c69334941a5c5355003d2f0486e4cb613d500074d81800d4ea5e702d1004d11b9d4b0034d⟩, ⟨0x24911d08bc43c20d0fc07b83be1d50db06a43141760b10538282132093045c20c0f106e832417809d04702100ea06102b80e003e000, 0x19127048d9a660da27267819724c0c006c1535c62006bfd4f6451764d1762d1584f292e918c238c9ae048d5b428bb328ae270035ce9bd94606c497b1e8b03001adb4d018778801ad553⟩, ⟨0x24211a889042a20b0fb07843ae1b80d186402fa1650a804f425811f087040c1e40e706c02e414c08703e81a80ac04901b0078022000, 0x34cd8669a48f032d3aae2094f035a30034d3e358c2689f510faecd0e0c2a7879163469d33649a704dc1ae131847b2a0069a1b24401d92a9c0c19a2f6bd15c4e1822dcf822bccd1c67⟩ ] def tableLLLRR : Table Block := .branch 14 tableLLLRRL tableLLLRRR def tableLLLR : Table Block := .branch 27 tableLLLRL tableLLLRR def tableLLL : Table Block := .branch 54 tableLLLL tableLLLR def tableLLRLLL : Table Block := .leaf #[ ⟨0x24811a88ac4282070fa077039e1be0d786903261800b705902aa14b09604741fc0ea070030416409e04781c00c204201c008c01e000, 0xa850f034a2acb7138668bcc9c8ad334619f224e091934b268d2f91e06549303001b754d38a2032dbd4f81d1606b6a0069b494799514c23db10034d30a20c6d754e06bc155ef9a29849⟩, ⟨0x26712408cc43c20b0fa07a43a41bb0d206643041760b3856827212508884101ca0ce06202b4130083038016c09a03e018808802e000, 0x1bd3538abb2cb6d964a44fc14cbc1223d32f68865ecd6cbc13a42b2e918c23b0ac07dc09d5cc68bcda8ae270037629bb30b4606d77d97386a90a6548768732555fd0c71260cde92704869acb⟩, ⟨0x2f215e8a7850226212688f045621c0fe87c03c61d00de867031e1700b3051c26811507a037c1a00c1051025410007603080b001a000, 0x1324000008782400d3401d8e620070354f366cb86692b349849c0402a97429614a6e8b0d917bde01173613dfb0074d81800df9a5860910037daa6003bd17397bb2ec49a493dc41fd2d84fe86ad8181ed560000c800000c30037b29ae31⟩, ⟨0x26912f890045a22310207ac3981b80d2865831617a0b0853028413109384201de0e0063829812408803a01940ac035014006401e000, 0x1036290034d25123036260034d019578801c4753ed1454410f9127048e9a63829da27667818a4d3036190034d850478984701867580c281babde51606eb145d8934927388026d6c277c9b031a4b⟩, ⟨0x23611388744081f50ee07343841b70d506582ee15e0a7850025611608183e41c00d106202d415409704301f00d205602180c0030000, 0xc24c0c4bbced3893b846ef6c4f89b1330a7c151400e40a6ea0e3c4d24cea612654ca1aa68143c0c2b50eb3893066f493827d045c899e066f1161ea1f3a45d348784f287904a87⟩, ⟨0x27e13a095449022910a87d03ca1ce0df86c031e1820b5858429411507a03a81980b8052826011207b034016c09403b0188080022000, 0x2060039a696e3100399aa7fba8a0f9c55733c8e237337624d2499e606bb5b09f48366c0c073b2c0001000000086330002e7818b81fccaf334594d0f429389314340a89f14949a4c24c0d8a6934925469⟩, ⟨0x25d129090c44820f0f807983961bc0d486442fa1700af854028a13408c841c1fa0ee072031415409604281d00ce04801e80b003e000, 0x1098c23801d114d06158910d0b5381a1c1e8598470f1161db915f6e8b8668b33e449c123069ca8521a5e23c0ca126060039d69a0dc7c47fd5164cd25069714e6f00f4bc130e6b613e6b0074d⟩, ⟨0x2aa14c8a284d625e12888f044e2060fc87683a01b10d206142d8137093045c2040ef071030c1600a604581c00aa04401b8098036000, 0xacd261275400aa5d0a58524caab06455f3405d5e584e00f50d3606003a7e96c3103ba72a76602f30000020000021c19a5724832a9ed745b89c00e95a6ba89181a3812858073d07d5e7e1a3469c335c9a70482a2b0b⟩, ⟨0x2cd15c0a7c52a27612b88e045221a0fc87b03ba1d30e306442f81630a504ec25e12008283ec1c00c705601ec0d205802380c0022000, 0x10bd65c00173c0db1c00d3400d1ca8809d8953d893492615c01ad6c27709b0330ac00001400000870a36501af73da583b4c24e235649a48060f0352b9f0b01d473b5b9b0b58010203d773cd60d4ce6c2730186c7089ab29b8669⟩, ⟨0x21a10687f83da1dc0e7870836219c0c6855028a13a09704842180fd07583841980c2056828c11c07d037018c0a80350118064014000, 0x34cc6926b0d32869a14b8a460d37be68389201201601bd8d686c4f89a119c53d4d65e48e5d23c0dd476581ba92cb03756d9720cf9127049c490274969a7b23c0d512606⟩, ⟨0x35619b8c606182ed1670abc52027112a08d44302050f406a03281750b0850824a118078839c1940c004f82300d603e015807801a000, 0xed1a3ecfe134da46003b0e8fb1378d3755705a6801db747db1c0e9a00d3527557c069a00d4729a764d4e545290035eabbd76aeb47b0b460039ba939a68d6e94e51c05bd64fe2900403bce4f0300578ca606eba279b606a87001eb8b675bf5c009da9f043f8a4a0d2e29⟩, ⟨0x29e1468a004c225612288e043220f0f8078c3881b00c785ec2d41590a504ac23c11108003bc19c0c105102600f206a02580a802a000, 0xa0d2e29e5001e978261cd6c27007c929b03001e454b718801e3f53ef145001ee3b9fe1a2e19a4acd261278c80aa5d0a5853366b1a35f808045cd84e00f8953606003c4296614400f0da9800f7d5cfb82cbdbd65⟩, ⟨0x28d14189c047622a10d88403fe1de0e486fc35c1a40c185d02c214909a84ac22e108074835816e0ad04d02180ce05a01d8098022000, 0x1030788b0011170000021c799f224e091c34f9c0125b44e8cf03141a606f3301fb698470f5161e0d15d8a8b03790a29847003cda9a1b24401f33a9c0c19a2fac51798001a6b8c400f2da9ecf597bfacb2669⟩ ] def tableLLRLLR : Table Block := .leaf #[ ⟨0x28513989a44b4239116887841a1f80f1873837e1a00c885c82d015309f04bc23010907d03641980b505582500be0500208080026000, 0x5c23c0c7927d70016db48c611c68d72246a828b2c13594c23801ebf4d30a2103ae54e06f8155c10d94f238898cdd8934927ca4126d6c278e0d9b03018acb0019a10000021ec49a493b7c0416b6138fc8d⟩, ⟨0x2b41528a6051626a12488e84361fa0ed874436019f0c705fc2c01530a304cc2400ff079034c1920aa04e81f80ba04c01e80c8042000, 0x8d4d429614fba016dae1340b2d6611fc2001a6800fb85c414781a9c0c04dedb6bc334959a4c24f7c0154ba14b0a5374586c8bf6601db9b09fba803a6c0c007b9d2d86203fb854c05bd7ee71267c8938246cd3ec00136d⟩, ⟨0x2a614d8a284f225a11d889041a2020f587503881b30d1064c2e81670ad050c25810b07f037c1aa0b605482280d205801c808802e000, 0x3135239a7dcc007d3d37c7875a8f3d2c9d1c9938273f16581c6c7e0c6c334959a4c24f9c0154ba14b0a44ed6581d8cbf8608cb9b09fca803a6c0c007c9d2d862197c854c217dfee63c67017e3a9bc1532f04a8dccb⟩, ⟨0x2c215289f84d424d12108944281fb0ed07243741af0d0061c2ea16b0ae054827c12c091040c1f20da06182a812c08503d8170022000, 0x1f025600f7fe34abf2d17bd0165782403eee563867019275c889053ab20cf9127049c490d8c769ec8f03544981bef514bc4781801fb5a6c0decc00d37f0268c000bafecd1604cf037970f94b00389b1480201800e8f54e6⟩, ⟨0x26812b892046e22810f08143e81db0e006d033e1900c085bc2b614709c04b424010c07b83701900b404f82480fa06802480a803e000, 0xf5349a492d34984981ad0d5da326933b27783704a7c4616d5498473c978a257fda2fffa2ba4bc13a2bfeb450665583284aafe945fe54506454f198d8d53118a9f7003297edc0252f04802f6b4b⟩, ⟨0x27b132093448422d10a07ec3cc1cf0d8866831a1780b0853026612008a84081d20c8059827810e07203281580900370150064014000, 0x4184cb82b197826afd57aa54ebd40e758b1a9d45063a79e898e0a8325c53146ab0335930c0ab20cb75fc88bc122ea2c071dd78c0204ea819b2c0bd94bc465a5fa9e8527126086f534f8a4a4d2612606⟩, ⟨0x35f1798b1c56e29613a894048222a10d080c3d81d50df069431c1770b4854827611a08483e41c40cb05602540fc06702e80f803e000, 0x4250040183b6a325c20445424a394ea140fc63d263025408dac1da042d6600f8c4c7b14c0693278b1b85e64dddec9b80992076b27b16dd7a35b1c0ed64ed0c6b632759964c0081d5ac60d32d8d283b24349648628114bc33d9606bb1e6df65c0dfdc2ed2c21406a380181147⟩, ⟨0x2eb1640ac8522284131893847e22e10f88403de1e20e987243781870b9058c2a8133093045c21a10006582d813607a0308100042000, 0x4206f93801616120006dac31015845b9ffed94f23c49b7624d249ffa006b5b09e326c0cc2b004ce30000021ffa597624d249fa4006b5b09dc26c0cc2b002ee50000021fcf594031f83c178905b40669ce13705b6d0037ca8ebe70576d⟩, ⟨0x2b41538a184c625212088d04262080fb87a83921bf0cf06442e015b09c049c22c10707303641980bb055021c0f405902780b8042000, 0x6188124345cc03f057c9c99a4a0d2e29864007b5e098735b09c00e182db03000c2f5adc620030b77397eb29a6603f93c334959a4c24c2b0055ae852c299a358c9ae07c017c9b09c00e13edb03000c26dadc6200309573⟩, ⟨0x3121788b605842a714609ac4ac23510d07e43cc1c50d7065c2da15e0aa04cc22410107803841800b305302440f805902600ac042000, 0x622adbf002f18356147f48838065507885127b683b29e20c0deda01afc1e204582da1a21c0561feda06531e64b66e6b00200e8f9a9a06001879b680e434dc70cd2566930930e80156ba14b0a49b1560d6ab82f009b26c2786d003b6c0c0030d76b⟩, ⟨0x28d13f09b44b0243117087c3fc1ef0e7071036e1a20c685f82de14c09f84b024411106e03341780ad04f01f40e006102b812802a000, 0x611c6cd74246abc9b2d41594c23800c525b4d28801c50dce06615d38d96ef2cbb126924c1f40278b6138e28d8187cd600834e00001433c8f126dd89349271f401ad6c278c9b0330ac00014400000878ef65⟩, ⟨0x29514209d44a824711d08a44301f50f4071c37a19c0c785b8296136096042c1dc0d906402e415c09d04501e00dc05d01e00b4018000, 0x566930931900156ba14b0a678d63a6b859002326c270038c1b6c0c00317f6b61880345e5cc0030abc9fedd96068b9001b6d6200cc7f5acb1667c89382474d2ba234bc4781864d200315d6d38a201d15773a46⟩, ⟨0x2ee16e8b3055229c13d89c44a024311107fc3d41c90d6062c2f41690ad04e425811f08603e41ac0c905402780fa06a0248098022000, 0x268d6326b86a817726c270038e6b6c0c0031c96b718800c70dcc0ad0cec9e65d9400637eda00ded310368dcb9e19a4acd2612636402ad7429614a768b0e9170c100464d84f1a40076d818006342d61a244006336e600185d64ffb6cb8669⟩, ⟨0x2bc1568a284fa26812f09244282030f9078c3841b50d4065c30c1630ab04d425610a07e837017209804081b00b604a01d806801a000, 0xa49302a01ee2d84fd86ad8181e5560011160000043c334959a4c24c800055ae852c299c358d9ae1d401bc9b09e3e400edb03000c7bdad8620091e97300a438f271e60036d8c05a39b765c334959a4c24c768055ae852c29⟩ ] def tableLLRLL : Table Block := .branch 13 tableLLRLLL tableLLRLLR def tableLLRLRL : Table Block := .leaf #[ ⟨0x275131096048e2120ff87c03ca1d40df86a834018f0c2859029e12e08c84301ee0dc06902f415009e04381880a804501a809801e000, 0x101a36061e358000118000010d1143e449c123c692315689e19e062a34c0d23a0036d06b58800c8d5cf0facae2706755ef304aa81b0d2cb082a781ba21658105601b1fa86c14d818c791c44066ec49⟩, ⟨0x2bb1580a7c4f826a130094448e22410787e83ca1d80e486e832e18a0bc85bc2c012b08b03d41a80bb04d02100da04c01e80b801a000, 0x6091834c4f400d8d2f11e0650930344e00038da05b2d01d963054f666d89349260a200bc5b09ce4db031e4b00217f000002183f29c0fe4d6db2680036d01ee78800c98dce08d85032d8f25e0996dd893492714004ad6c27⟩, ⟨0x2c51560a2c50226812c890046621a0fc87bc3b21c80db86a831217e0b6858027e13508a04141c40cc05582380da058020808001e000, 0x35ef1016968b9c0c2958eb388e0754eb71380d63ae9eac09d50340bb0b26692834b8a657001ed7825acd6c27958003b6c0c0032ad6ba4a200188ce4e04185001952b6803a5cc400653ee7cab6503f58e0fd29b6d8b33e449⟩, ⟨0x2ad13c09b849a23410987f43c81d50e506d43301770b6855028e13b096044c1e40e506202ac14208803b81a80b204e01d80c0042000, 0x6d6000004381a620006da03a0f1001985b9c0230b9646e7c89382418553bd1932d01c61e73c0d883ae9613d2350a601b973cbc05d5b5c4f2ec0036d0cbe78c0c4178eb1a34e19ae4d38259b45c26308f2d60036d⟩, ⟨0x29513c09a44b024911d085c4141fb0f8879035e1990c205d42c014909a04582180eb06d031c16409103c01a40b4037015006401e000, 0x146817333c8f126dd89349262f6006c5b09e326c0cc2b0000090000141c5d70a0d4a9e94dcd2a992c18f786a702423b1e0602d997b68d19d704683ea9c0fa64eda15b0e7d893492602400ac5b09e0cdb031c4b⟩, ⟨0x2e71630af053628e136896046a22810387b03c41c70d706542f815b0a104a42200f9074035c1940a904f021c0f405902780b8042000, 0x1ce55b6060019c8b5b8c4006716e775565093462726e270019c2b6c55c31181a42df8580d4b9e9b75d73f4ce79b9ea573ce1939c0641cf233cede8f58f26692834b8a66cc01ed78243ef65b09c00e6bedb03000cd6dad8620d335573⟩, ⟨0x21810487d83c81d50e006b83481970c506002d615a0a5850026211808303f01da0d806582f416609203c81a00ae04a014807801a000, 0x309324a2152473093793657091e06613d99a06bc6b2dc19f224e093493822ced3991e06a49377765713cd0d03000ce9db432e1e326692834b8a673801ed78261cd6c27⟩, ⟨0x2b014689a849623e10a08283d61e10df06a43381920b785902ae134095041c1e40e5061024810a072032815809203c0168070016000, 0x8e900271c0088e8e3002c2ea3f8a400803859478180142aa4c0d1ca000e32d7ecae2781a38c006c7426613800e3898e8180031c2c65ed595c4e0018dfe3237b1be007e2b8ccd821fc52b925c5306630932e698334e09⟩, ⟨0x2aa14389bc4c825a11b88504061f20f187003661a60ca86102e61620aa84c8250105079835016a0a004582040bc04901b80b4014000, 0x311f2c6072243e2681a3dc014c7004a3db8ed334961a4c24c7a40178ca14b8a47cd936721d36449e184e0038f0e3a06000c77f185429006b115400361ea972d65b9bb2c0d1d8000e3ae46ca5d23c0c00b8ea63a06⟩, ⟨0x25812288c844a21410387e83d61d80e386e835a19a0c285c826a12608c84381fa0eb07083301840ad051823810205e0170064014000, 0xacd0ef821fc525069714e998d24aac899434d0a5c52192266f4d01822400e009005c88710d89f4cd09ac4d25d23c0d7816581af02cb035e1595c4e0018fbe323ed1f7000e2aedecb891e06⟩, ⟨0x274133891847821b10407ec3cc1d00dd86b833e1910c005cc2c41530a484d024a11008083dc1b40c7055024810e07402980d802a000, 0x613801d34db606001a67b5e8291619df9d9646185b1253d0a4e24c10dea69f14949a4c24c0d20aa93492144a930930373004cb43e4480fcb4bf61121e1368289001a4eb6803c8cc400692ee77af65⟩, ⟨0x2a21458a004d225412508a44101e70ec071436c1a70c205dc2c815a0a384481ea0d806382d814e09603a81980aa04801d809802a000, 0x2de064e09b5d9980f2a7818006a16da0031517101fa82b99e474791bb126924c92c0378b613e468d81837458000018000040c01ee64fddf752df4349f1a57248c1a69c8032d7a126d0d74297148312ae60e6340ab⟩, ⟨0x2c714e8a4c4e825311a08543e81d50e206dc35019b0c705fc2dc15f0aa050c24811508483f81de0d006182800e005b02200e802e000, 0x100752e8f03001a9549001aa7b6daab83510034fe8f548a7b6db8a0428f9a67f14ae49714d198c24be9a7324e091a34dba84b486c4fc8d09a924daf8294771380064b38c92c49640038ac13b2e902c78180f3254c661b8c9⟩, ⟨0x2f01728b3055a28e137899048a22410187883821b00cf86383001710b104fc26412308c84281aa0cb05502340ee05802480f803e000, 0xc12736cec5015c28f58ab2526b1d61a4e09ac95f2971b64f76700f8dbb3800c5f59e2feb02da3267ae36d899ea86d89349264fe009c5b09fb26c0c692c01069c000008703000d595b64800663276c2808aa147c89382400d4ea4dc6b614d⟩ ] def tableLLRLRR : Table Block := .leaf #[ ⟨0x3171850b9c56e2a214a89c84d024511a088c4281f10f2075c37c1a50c605cc2cc14309c84581ea0d605b828811206602780b002a000, 0x389c0032b1c64ac2562001c5623d9584e014956e3a060094aaf19a6692c349849953802f1942971480edbb02725e403b2ec08c77c309c00729fc740c00194ee30040b09e434b2355000e45aa61859406e1cf29705ce380c163ca541758e80ed93d7ea9⟩, ⟨0x24e117889440c1e70e406ec35c1a30c2056827612808b84281f60ee070834817e0b00528250106074033817009603e01a007c02a000, 0x28f001a3c0d47e9052e49459a381a90f47a14b0a71348302f4902b20800d1c0ac8da4d2087cd33f8a5724b8a68cc6124f144e649c123c6979343627b334269134b89e06c4eb2c0d89b65⟩, ⟨0x2a714b0a144f025712608ec45c20d10187883aa1b40cf85f02ce1560a384f025610c07d03c01be0be057823810407302a00a802a000, 0x499a4a0d2e29b27007b5e098735b09c00ec8edb03000d90dadc6200363d73d6eb280065c593e9eb2c599f224e091d34e320174d2f11e061934d89800db4e28b165885ce918c23801a4d4ba4a0040152ba42cbb9d65⟩, ⟨0x2cd15f0ab453828d136097c4a423d11408143f01d70e686b033e17e0ad84e82360fa078033c1780ad04f01f40e006102b812802a000, 0x1ba9b0cd25669309368c0156ba14b0a49dd560ecab99a956726c27b3f003b6c0c00367b6b618817d9d5ccaa532ec9800d9cdb400d50a880dd9b5ce06001b35b6d5291d8934927ae401ad6c278c9b0330ac0000c40000087d6765⟩, ⟨0x2bb1560a2c4fc271130093c45821f0ff07d03a61c40d186002be152098846c20a0f6072835818e0a404b82200fc07101e009801c000, 0x1849b6900ab5d0a58533c6b1d35cd5802f93613db1001db606001b60b59e51001b5db9804269f93001b5cb6b8c4006d66e72c0c2cb0b0a791e24dbb126924caf800d8b613c64d819856008000000004395c61437121e486⟩, ⟨0x2f616a8b0053e27a137097c48021f10407c43a01b90cc061c2ec1690a404f425811f07f03d01a60c4050825c0ec05901c0088022000, 0x2e2805eda0d0a7029b88b6812e0a8b1f11a953001b154758bb83b681a8c7ab599b7000916d03758f6fc0bd6d9334941a5c536f400f6bc12d66b613801dbb5b606001b74b5d25100cccdf2703000db85b401cfa620036db73969e170cd25669⟩, ⟨0x29914509cc4cc25311a88ac42a2080f3874038c1af0cf06342fc15d0a8050c26412107f03c41a00c605282600ee06101f00d0026000, 0x711c1d165b89c3845ce2e0995034c330ae27ba2001b6c724d181a31065e19a4acd26126e6c02ad7429614d49ac60d738a01f64d84f7280076d818006e4ad6e31001b8fb9cbe30a0369c164e06b8c031b686c87⟩, ⟨0x26e12e892047c22910f88283de1e20df06d033218f0bd058429013d092042c1e40e706402a412c08303a019c0b004d01b008402e000, 0x304ce2746781b41ecb03684d97700583f8a403b601c1e06da00a130368dd976b51d3a7b2e9c13a5d2ecb1ab74d5583a7048a9b9b4b0893ba8f56a2594449c498337a49c1222ab2e1054f0352a6cb⟩, ⟨0x21010307cc3c81d70e506f835a19e0c9061c2f016309c84bc20a0f006f83481860b6054826811207a0378180090039017008802a000, 0x81bca43ee47a14b0a6918e4d2d89f91a135249d42b2803ad60068f030010235a695a2f65cd33f8a5724b8a68cc6125e4d39927049c494ae4886c4f89a119c53a1565⟩, ⟨0x23e114885840e1f60f487503941bb0d8867030e1720b4051c264125086840c1e00e606882f012408303901940a604901d00c0036000, 0x3ae2cb3521ff24d299fc523066781b224c0da7765a1233e9e59a06007d3ab4c02a9fc521f0d0f037048981b4c6cac54a70535d40bd1ff24ca99fc527b23c0d512606d2ab2c0602a7⟩, ⟨0x2e31600a404f626e125890443c1fb0f507643941a70cd06342f816b0ad052427811908783b01b40bb053021c0e405d02800b4046000, 0x67e58c9f8cfc80038aeb3b2b09e7dc016c740c0149f66327d6011c7699a4b0d261267ce00bc650a5c52346cac390c1b268f0c279ef800f1d0300067bb8c2e94800f86aa74dd9400f84aa74d597b0ecac27001cf5b1d0300067a98c⟩, ⟨0x1f40ef873037e1b20d3064c2f61700ae852026a12408b84201f60ee06f833017a0b205082401020740348160096041016008801a000, 0x87a5670c87a14b0a61185944dc2243c26b0513de765a410f9a67f14ae49714d198c249e289cc9382478d2f2686c4f66684d2269713c0dd756581bae6cae27⟩, ⟨0x27c133897449023911608684202030f007583821b00cf86402da1600a9850825611a08183d81a60c905302200d205401a8080016000, 0xef9b2c0ddf765b88fe292e11e06714804e8558e81bc32cba6692c349849a12002f194297148d1b0549690c1b26476c309c00741cc740c001a0d63008384d2003f0ea9df965089f06a94c6a98a854e09⟩, ⟨0x21f10a08043d21d60e206e033418e0b80594294135090043c2040f307303641940b9055027c12007803481780a4045018007c014000, 0x626c29129d050e8ca25dc47a460304231e9180c104c784c085faabb9acbdd165cd33f8a5724b8a68cc6125e4d39927049c494ae6886c4f89a119c53df965d13389d99e06⟩ ] def tableLLRLR : Table Block := .branch 14 tableLLRLRL tableLLRLRR def tableLLRL : Table Block := .branch 27 tableLLRLL tableLLRLR def tableLLRRLL : Table Block := .leaf #[ ⟨0x22d10e083c3f41f00f0875c3841950c405f82ba14a09e8494236108079837819e0be058827c12a08603e019c098042016806801a000, 0x14a67f148c199e06c89303784d94007c2c00acf06681801bc22d3a2a1fc521c0d0f036c289f00b2b35a9ff24ca99fc527b23c0d512606efab2a5102a78190814eefa1e852c29⟩, ⟨0x2cf1570a744f824f11f08bc4482130f907803ac1c70d306142f61660ac84e022e10d076037419c0ad050024410e07a02280c001e000, 0x1335775ac78ce0035d96baebae300cb54519f224e091834b0356f5b4ba47818c24e5f000db57e2b66e303725d95c4e0039736d235ad4b8c0c4a55a56bd8934927d7401ad6c278c9b0330ac0007d00000187eaf6500af14b3fe49⟩, ⟨0x29e14589f84d625311f08bc41c1fb0ed074037a1a80cb86182ee1560a484f025611a07b83a81920bf04f02440e005b01e009c014000, 0x17d45b89c3945e341456d0594c23800e725b43448801e70dce060c517ad965c334959a4c24e6d8055ae852c29a9358c1ae98a009ccb09c00f352db03000e695adc6200399f73d5db2801f3d53d88b2c8e00c9e06⟩, ⟨0x29a14109d44c424f12208bc4382070fc87603861b90cc05e42b0143099048c23010507303501940b904c01e40b004b01f0074014000, 0x2cda1e0cde2a249d44e097a65586a8773655d50c003a036d12158c0c0039fd6d003906a20039f773d73b2c599f224e090c5138e814d34bc4781874d20039e56d0038d6a20479df73933389c0073b6daafa4606⟩, ⟨0x27912d092047c22f10707bc39c1c40d786802fe1700a7851426811f08903c41bc0d406082d014a09904501d40b4045018007c02a000, 0x19b807d34bc47818d24800e935b400e69a8804e91dce06ddeb29847001d20b6985100fd1db9c0da26bdd8b2b89c007466dbc4a4606d9d16c27949748c611c1c95788212ab67acbb3565c133c0c858ab⟩, ⟨0x2a71430964490237114081c3f41ed0ed071c3481970bb05b029613e08e83f81d20dc05d82a013c08903b01a40a203c0158070022000, 0xdd0daee82e7d9fed586692b349849d4500ab5d0a585299a2c3245d41401199613801e9f5b606001d3cb5b0c402f4e6e60074f54fb2ecae27001d36b6dcc9181a411561821d8561ab915b7f658b33e449c123269⟩, ⟨0x2a114609f44d025d12308a04302090fd07b03b21ce0e086802fe1750aa050c26c12508d041c1f80ed06602ac11408002f810003e000, 0xeca9e14dbeaa9c12dabb2f38104c796c6b54c7926e86b1913099c4e003abb6d00cbb3b8c0c0457636b1a34e19ae4d38259d45c26308e003aa56d001ba7b880c6a7dce06016ba4b5801d0547003ba2b5801d0347⟩, ⟨0x29313e09944aa23e11388383ea1e60ec872837e1a60c6860c2c815709c04b023e11007303441740af04c020c0d805501f009c020000, 0x7ff2c903c993d18dcf8b2787264c53abae2439d671260cde9270484c23ae0005cf03081d814b613804d7d4b8467139c4b00bae800d2b81aca0f232f04e202cbdfcb2f218c7a60d920a93240ca63bca2cb96c6⟩, ⟨0x2d41598a90506279136095848022710707d43a81c30d506643001750ac04ec25411908603ac1c00c705d026411e06e02a80c8032000, 0xdaa001b69a51003da7b9c0cc2b80ae160f985ed037481763a40795ce1b37796be67300e9ba755cda9a4e9c1269e6d2b26f1393c99a4a0d2e29d95007b5e0906c675b09c00f646db03000ec7dae7805e2329aa964eb291d34756e9⟩, ⟨0x23110e08383fa1f00ef87503821b60d486202ea16b0ac052c27412208a84101ea0ea06c83181620a704c02380da05c01d809401e000, 0x7ccabfa1864d3666a834e094fd17099c4fb820036dc4d23036628b7138f9aeee7a2b8cd1a67c89382468d288a344e0cf032c4981b6c0006da3671001dadb9c07f0b01dc29847⟩, ⟨0x26412188c041e1fa0f487703961c00d586803261720ae854c27c131091045820e0f6070832c16a0a804381c80d005301e80a0026000, 0x1deab68689101ade7b9f48aac64d3666a834e0933555c26713eef800db702563035e3aad84f292e918c238c9ae048d504bc2c11f0ae27dd2001b6c61ac60688155c10b0b386a90a65487e87⟩, ⟨0x2bb14d09e44de24e11c88a042e20a0f4877837a1b00c786142c814309104341d80df05f02a4128081039019c0a803f0138074014000, 0xd54dc400f822e703000d535afa02cb26692834b8a780801ed7827db801ed6c27dfe003b6c0c003bf96b001f69b8800efcdcfd9ecbbf00036d718800efadcf9cecbd2f6547d0f912704878896a156847a43c0c2c22606⟩, ⟨0x273133095c498237112086840e1fa0f386e835a19c0c686082e615209e84cc24410d07d83b81c80c305902a010e06602280c0042000, 0x419bd24e091a155cc28781bd745b89c3545d6000a0055aa4cdd067c893824d2480755d5b464ccf03409a7a4acb8b23d19a06e13001b6ca9c606e10001b6800d575c4007836e7d1365308fc160036d⟩ ] def tableLLRRLR : Table Block := .leaf #[ ⟨0x26b12d093c48021f10607ac3c21ce0dc869832a1800b785802aa1440998478228105072035c16c0a104602080da05802180c001e000, 0x5c1ae131847e47001b686691003e44b9c0c1822feb6ca18a1c74d79be6a8d33e449c123669873689c19e063c92003c6d6d718800f19dcfe82cbf476581be72cb406a90a75486c8700bacbb59c49⟩, ⟨0x288133893048422110307943ac1b50d306142f61620a604dc23810d07d03ac1be0d006082dc14408d03c01b809a03a0148070016000, 0xe6a001b6823791181800799eda01dcc4401f992e6611f98c006da6144233982e7034500bae1ad850ad53c80d8a7954d7d224c24e235649c48f032512ac1894e9c0ab81b940006daaea4468d3a66c934e09⟩, ⟨0x24f11c08684081fa0f287303721a40ca86202f216e0aa850827011d08803d41a20c4059829013208a03781680a003f014805c014000, 0x190cb031c1b2a0a98581bfc2cb601aeb0d90e5caab3893066f4938241aa5d730a1e065373a16e2700f32161ae582a15266e833e449c1269278a14868c999e068134c3970b8b23c99a06⟩, ⟨0x24e11b88b442c2050fc079c3b81c90df06bc31c17b0ad054027a12708a04041dc0d606182d015209804081b00c4051023809801e000, 0x66868c0c37332c68d3a66c934e09d2117098c23f50000db43748801f4edce060d117004c28688784516b8a1cea821d1043e449c123a69a0299a27667818a4d303746800db6384689847⟩, ⟨0x2b31510a4c51027712f093048423310907e43de1da0e686b03261890b8056c27411907c035416809904401e40c805802180b8042000, 0x4519f224e09183486e8bb4ba47818c24800f615b72c21e30379e595c4fd7a0036dae0378c0d5a02ebf39b2800f5c5b4067fc2e2003d6d6d086c46723d680036ddbab62232699d4d18aa78461a454c62aa5c4fd560036d⟩, ⟨0x2b31510a544e826912408ec4342100f7873835a18c0b98578292136090844c2040f507203641800b5054021c0dc06402580e8042000, 0x141a5c53dd000f6bc13f121e56b613f72001db606001ee2b5800fc25c43b3b7ee7dbe0036daae578c61aa4289521da1cf8557c430c9a6ccd5069c12138eeb84ce27ed1001b6e16dbc606c1d9758f19c075dd7ac2418ea⟩, ⟨0x26912b090c47021f10708043e41e50ec072c3741970ba05942b214309004441f00d706082ac13008e03a817409e0400188080022000, 0x1892263744e0910d475d599fc52b125c53066714ad9a400906fc4c1b8013896c4fc8d163c300162c589308e03feebfe01027541970b065c2d428781affe5d653948f1436ea6e14deae6e14d2669⟩, ⟨0x2be14d0a144e025512588c041e1fc0f487583861a80c285e82d21580a484f025412008883b81b00ce05c029411405a02200b4046000, 0x26c010142bf36cbf4f65978060f034c2630bdf5e2953e268995d13112243544de8210b007c60b1782760d73269bc8fe292e91e0630920018bce2e2ef8581a2e9850d90e01b5c2c00216a8bbe2a34585ae058f03059a2df8b⟩, ⟨0x2c015a8a9052628413b89944b624c114884c4121f30e806dc30e16e0b2050425c11b08803d41a40c305a024c0c605901b00a8036000, 0xc13b06b9934de47f149748f031849000c1ef17079c2c0d076c280060f78701a2758285233079c54180b9e0604f41cb1736a259244e0905d0217071003e1ed24c249fb0009b480060da003c3c0d06b003626918c238066f0b⟩, ⟨0x2aa14a09b44b424d11e08bc44421310107cc3ce1dc0e586b83321880b5858429613e08d83ac1c20cb05c02200ea06202780f0046000, 0x277785043260264f5721fc525069714c998d24979a4c24e236091b3480b8e4a2484cf02690071793c0d208c2b89c00371fc65c76e3c002c540d202c2e8b26032815a11d87bcd132b226224486889b11075803e1098b⟩, ⟨0x2ba14c89d84c024a11c88a04361fa0f7877039e1ae0d2060c2e014d09b84581ea0e2069832016a0a404602080de06502200dc02c000, 0x7e26e6001bbb64e86f85a1ae164cd25069714fc1803daf049ac8b613801fbfdb606001f7db5c0291000dd03273c5c2fbc800db7346132e28fa1f224e090f113306d08f4878185844c0c003edd6d718800fb5dce43985⟩, ⟨0x2b91560a5c51a278121888841e1ee0ef873037a1ae0c585f82d61610a704642100f7074031c1740ad04e022c0d005b01d00c001e000, 0xc27fc356c0c0faab00007d0000021800fd2db43d48814fd15ccf23a328dd893492689a016c5b09e8346c0c1922c0003cc000008786692b349849f9500ab5d0a5853366b1a35ddf401193613fc7001db606001f8cb59851⟩, ⟨0x3781aa0c9c63a2fc1748b2055a2a3141099c48c225102078c39c1ba0c685e02ae13608a83d01a60b204881ec0ba05002080c8046000, 0x10227b079e01c037883c0df8e0036d0d522327f8973944ae13037e1000db6461088d32d2fda697a992d2a354ad67001a57b4d2cd9a8bd1800541eb4acf4a366001a69b3d357dbdb40069eacff6b4f76dfb4001b6800d35dc4007ec6e7124c28105098f466d54db126924cff00838b⟩, ⟨0x2ab14e0a3c50027512d091c47a22210887f039e1be0d786903261720b0055828e12608283ec1ca0d805b825811806b02d00fc036000, 0x1c498337a49c1206da42fc143c0db11942c78ce0e0ab02fa2d00cb54519f224e091834d140155b4ba47818c24800febdb409288ee303451b0ae27fd2001b680650f5c60619da1cb5e319ef37b84810159c83cc2850b⟩ ] def tableLLRRL : Table Block := .branch 13 tableLLRRLL tableLLRRLR def tableLLRRRL : Table Block := .leaf #[ ⟨0x34f19c8c706122fd1770b2c55c28b134096c47022e10587e43de1cc0d7869430412b08c03ec1bc0d305b01e40d405502100bc01c000, 0x4af70a1145487f8a4d48c791c7ed7cdc7003f749c7df7cbc70fcaf958e613df207e38e8187df7c6c61f48f030fa6f878ef5c0193c0c3e6be063000e10b0240ed0003134c3fa726fa89f9493df4ca70493bf44b020a00103c44bb0fe29a00d522fa24384380651cdaf286⟩, ⟨0x30016e8ae854828113a094447622a10c88303d21de0e586f83361910b7057427412408383e01da0d005b824010c06902f80f0046000, 0xc0a726001c0de4ea7f85000c09f1ac3100740932753ac2c99a4a0d2e29810001f17824d445b09c00701cc6c0c00180d62f84e2001beee4e8cd85023d593e449c1200fa529a8087680201fa12781802f3a5303000601b8d01a278800601593⟩, ⟨0x29213b8984496236116085c4041f40f287483861b40c886102e21670aa047c21c0fd077032c17c0b1050023c0d805f01e00c801e000, 0x2604255557b0b498c2c00a9e06ba15583ba9f8863c8e8ca37624d249aaa805b16c27a0d1b030648b0001000000021e19a4acd2612606a00ac5d0a58533c6b1d35e08801193613c0b80078d81800302cc59e51⟩, ⟨0x2a614889b84ba24c11e886841a2000f6876836e1aa0c385f42b414d095041c1ec0e706e032c1640a004b02140c4053018009002a000, 0x1f54e03e834e370cd25669309306500562e852c294e5161c22f0a803cc9b09e0bc003c6c0c00182e62d86201182ce4c06b84dc9c599f224e091d34f505bb4bc4781864d3050000e34e28839209b93a46308e0ceab⟩, ⟨0x29d14709ec4d425d12808f44502150ec07243781b10d0063830816e0b2053828812e09083f819c0b8051823810606c02100d0036000, 0x69255644ca1a6852e290c91337a680c112007004802f0cf886c4fa6684d62692e91e06998e1606998e160699be15c4e001c1ee3307983d000e2a65185b6754cd62a704a5b0cb0033a67f51fa8601c473b16030d⟩, ⟨0x28c12b890445821f10808083e21e40e987103741a50cb06042e41680a384c82220f9077036c17009703a0178096038015806801a000, 0x400000a1e22b0b824a7a149c49821bd4d3e292934984981a81552692429952612606bb5009b68312a401eecedff0890f09bc14480061298d001baeb88006123939a96173343be087f14941a5c53a66⟩, ⟨0x28e13a89704a223210888003de1e00e786b033a18c0bf85c82ba13c09384681ee0ed06502d412808503a01940ac033013005c01a000, 0x33155d2a996e9c1214e5c5328600cacfe8693e34ae491834c3040198bd093686ba14b8a41ad560255a5731a955b09c0070b8c6c0c00185b62e30563596017733c8f126dd8934927120006c5b09e326c0cc2b⟩, ⟨0x288135897446c21910307e43d41dc0e486f035619c0c905fc2e015f0a8051825211807d83b01c00d5063028c0f807202580d403e000, 0x8d81e94f50c0e6de0cc9e3305a4f29a1e852712628681513e292934984981a05449a492e34984981ad2f765a3469f6ed097b627e4684d492443d0d1c6807ad803278180100b5995450f0b143c28c994d47⟩, ⟨0x24311a088c4282090fd07883a61c80de06bc3321880b985a42a614909984782220f6076035c19a0b704d01f40dc06302700c4014000, 0x18497934e649c127126495a21b13e26846714c5d30b8267a1333c0d175c2c0d18cc2d62a9fc520d21a9e069c254c0d168c28471f49e3d0224f9127048312a7f2b9e5a00c7001c9e06⟩, ⟨0x23511007d83ce1d60e486dc35a19e0ca05f82c61590a304dc25411d08884001e20e506d032c16a08e042017408e036014806801a000, 0xc54a70530180bd1ff24ca99fc527b23c0d5126068ca616030153c0de521f723d0a585348c72696c4fc8d09a924c6b30a01fe200c9e0600411fbe55181c2e699fc52b925c53466⟩, ⟨0x29c143098c4b223611488183e01da0db86582e615d0a504ec25411d08403f81de0e506782e814809a03b81880aa03d019808002c000, 0x8c7e1400b93ec6c0d147000e35c620018a264e2f7858be614003142c6800f255c400313fc9c61b0b3521ff24d299fc523066781b224c0d1a5c2d0919e34d8681800f1a4c4c02a9fc521f0d0f037048981a33785⟩, ⟨0x2d115e0ab454429313f09984b824911988304041df0df06ac34217e0ab852c27c131091845c1e80e5061027c12006d02b80d0046000, 0x1110a7c893824d24c51ab43d1a1e06e0513198c2e9014a988781800315fc680f520dc68143c0c017ca862c221cc8543d23599b8cd44342300062a98d34a200f8a8e4c003151c69c51000c53b2718dc2800629b8d1d38800629593⟩, ⟨0x25b12888f845e21c106880c3c41d10d806843281890bc055426812508c04241e60dd06382d815209403f01a00b204c02080b002c000, 0x40d32a24d248a289309303533f46db474d3d174cb6f6c4f46684d02698be80071b43fd0b71348ee2b9c551c4c2c7030b1c5c28d19dc564306a8e1616373856c4fa66c4c3646a8d0e1637b85⟩, ⟨0x28913c09a44bc24d11608684201ff0ee06ec33018c0be85702a213c08783e41c60d005e82a013c07d035017409c040016808001e000, 0x11667c8938247cd201b5136d2f11e061b34c6880038d001a84b8801e33f93e46388e0075016bc120c6aba7d001002b5479f0b1e5c286e87ef917b02a78181529dad729a1e852712628681513e2929349849⟩ ] def tableLLRRRR : Table Block := .leaf #[ ⟨0x2c715d0a6451a28213588f845021e0fe879839e1b80d686582ea1540a304d424811507903941b00c5059023c10405f02a80c8042000, 0x309c013b4ad708d8240d465d54767000daa42b8581820fb2ed6069b1e6ce65ce8ccbc1312632ea7c112d753c0436bc21b0cd2566930931b600562e852c29469161ca2f34aebaccb09c0071afc6c0c0018d6e2f04e3d69d0973⟩, ⟨0x2e91690ac452026f132093444020a0fa07743941bb0d806742f81640ad051c27812508103ac1ba0c6058826011a07402980c8042000, 0xa3b327bc81e2d7de20096b003ef0b5e0903b996003dda0056a91761645985d5a1968e21f224e090e513dcb57f6d08ee878187544c2603698e05a8eb6340c164d10c4e0327f495324bcebc12b920ebab105cb5d580045ac60ce00d55d6b⟩, ⟨0x3291880c145d82d31580a004de24e11688303e61d50e006bc32c17d0ae051426a11e08383b81b20c405782380da04801e009c02e000, 0x95ee9c120788eb01997380073f78b049e7e81358a97730a8be0b9e145301cf09437ee7be3d73917bb18e0f6a98373411d3a4e605d3e061076b039593898d8723271e064db3e3ae0c5539e2a9c3254f7d03fdafbe40aed7700ad56c7e4606a54f8637752c9⟩, ⟨0x2c515d8a8852628413a897047622510d88143f01d50d906a030a1760b4856829e13608e844c1f40eb06903141440720340148032000, 0x1036d833acf23b84b308e03b6eb01da037549930b0349870ae27000c87f1a0d3904e4606069481f1671260cde927048466baf2405cf03656abace2381e9badc4e0018fde2c1a11fa00162a06929e147a7eceded329cf600ae9⟩, ⟨0x2fe1768b5c5882b914d0a344d424b120888842a1f60f5077437c1940bf05bc2ca14608e04481de0d0063028c10405f02480f0032000, 0x3c4d72fac2dc287c4d3b27e525c4e0019226340a50ba8c0c04e84d2d84e01283d2e119c4e007ec52febd030034a976616923c0c027e9d2c00fb000b47818003234c6804f9f51818003231c6800dba5c400322ec9cb2b0ae27000c8b31bb810f1⟩, ⟨0x2a714209dc4a824a11388103c21cb0db068c32817f0b6055c284133093045c2180f7071036016e0aa04481f40e006101a0078016000, 0x4ab400f8b613800e4d18d818003266c5800655191000c98f272a6c2d732a43f44c2a681e54f7e89be255dc72ace24c19bd24e0926955ca0a9e06026b98b5b09c012e5ad708ce27389600b7240036a9806147145e09⟩, ⟨0x23d11608744181fd0f9877039a1b60d386703221840b7052c27412b090043c1f00e606e033415409303e81cc0ba04c01d80b8016000, 0x18a693492546930930313aecd3893548b3db13e26c4cc2998c61401527dc6c599f224e091934ca0ccd2f11e063493274000e3620168cc430b034c2f0b26692834b8a64d8007c5e09⟩, ⟨0x24311908744261fd0f987743981bf0d5068031e1850b7856827e12108183e41b60c6055827010e07403381600940370150064014000, 0x6099e84ccf034d130b034d6f0b8a67f148d199e068234c0d337c2896a9ec78353ab94098e7268163c0c6944b65053a9e006653c2a681753ca687a149c498a1a0544f8a4a4d2612606⟩, ⟨0x3071780b485782b214e0a344d4253118089841a1ea0dd067c2f615109b04481ee0ea06d83381820b204b82200fa0620250098036000, 0x1cecb03981b2a6158581a61585308e0019626340e068827e5839381a7575d6193998e1c3253300c5e1f579283e3b5591839a4b326aa8faad341f53a5d241f440c83f8a5724b8a64cc61240d9e84d649c1201cdc26074a232e010141f1365c0509⟩, ⟨0x3051798ba45b42b71508a5c50225e123885c4101e50e1067c32a1720af853028212808283e01d20dc068030c15008503100c801e000, 0x5d23c0c6124003355c5cd4f0b034d430a0019aae1c0f06581bc9b7353c5184796f80071a0019a66440d72dcc9c0c0699a4e2f5044bf289c121d68eb0084d230fe295892e29c46714e7015090cdcc4f1331200462400f33f000e1c00d33ec49847⟩, ⟨0x3081768b805782b214b8a0445421910507e43c01c50dd868030e1760ae854826e0e006782f015209604181b009203e016807001a000, 0x830160fe2900c10070781b320184cce70a5e29bb06b437a0010d5e1f91cc612771cdb606e9d70060f036bf670b01d274ea39b4f45d3825a9aa85975400219e0d806826d387ca736a68996513112243744ff20cb007cd7b1782760d73269bc8fe29⟩, ⟨0x25f12a88c842e20a0fd87b83c01d10df06ac34018f0bb85a82ba151098043c1c40d605a828c12807e034817c09a04001b008002c000, 0x40d329000e37ade988f8a5724b8a6086309317a260344e091c34e6334450a585348c007de369ef0eeeb3f7700080159e11bbb400ed2a92398499a3615cc48f031508f46681a68b8581a6bf85⟩, ⟨0x2a814589e04dc25112208a443a2100ff876c38a1b80ca85e82e015509f848822c10a080037417409704101cc0d005301c0074026000, 0x260795d428781a047e656c27027de1708ce27183581fe601854deb0ae2799f00071beb01c4606fc00617375c284501a1e11a11a0699a87971b3340f0e366661e7c6912a9f224e0906254fafdf0d043814f030bc89⟩, ⟨0x2b414c8a284fe264123888c4321fe0fa07443681990bb056c290139097046c1fc0e606e032417e09c03f81700920360138068016000, 0x45260f9127048068d098714396804074483c0c02a142606000cd871a4f42d3100cd60f35e099e366d2753a3887c8938243944c140f4b423ba1e06155130300066a78d0060498805e6a193ab912da224e24c19bd24e09⟩ ] def tableLLRRR : Table Block := .branch 14 tableLLRRRL tableLLRRRR def tableLLRR : Table Block := .branch 27 tableLLRRL tableLLRRR def tableLLR : Table Block := .branch 55 tableLLRL tableLLRR def tableLL : Table Block := .branch 0x6d tableLLL tableLLR def tableLRLLLL : Table Block := .leaf #[ ⟨0x3801ba8d4865e30c1758af853e26f132094045a21c10587f83b61d00d886903021770aa04d42240bb05002380e605601f809002e000, 0x84c2439c4e36710001c6890a12191cbecbcb3e5c65ee5dd9c02635a380061b4002c3c26cb7469c018bf1b26692834b8a66f8007c5e0900d97e96c279bc000f1b0300066ed8bca2006a263cd9ce4c0ce2059f28868ca2226c3806ab09b0c1ac154848791149dbc563d128d09e3336dac7⟩, ⟨0x46422090988283f91f00f147423961bd8d6067a32e1918c205ca2c115b8a7052426f12608c43ce190096046c1e209403c8170016000, 0xe3cea727c200c1f8d065560a132f34e70765e0e0a06e5a0f098038583ce843078d0464e0f91270480721099c389771a0101e3a0f0300b1909818003397c6895a70391316020e24d11e8278477406c3893047809d11d19c280b87337892c47223b04e000680987b27328dcda9fe8e00999046c47049034247567bd5f2131b00b27233089237001cc5002b3c26⟩, ⟨0x32017c8b7056a2a214289884a224011888384021f40ec86f833618e0b5858427c12d08603c41c40d705e02640ea06b0280118046000, 0x978410064f2e881290065d96e4f2dc9a7f0f64f11c00ce1f0cd2566930933c100562e852c290476e1601ed42f756c9fccb09c0073bac6c0c0019dc62f44e3933d0d730474e0f912704807a10985d073b1a0101f3a0f0300b99098180033acc6800616991⟩, ⟨0x2ff1690ac452027a130895046622910808183c61cd0c1859028e12a08e84382020f007183481860b904e02340e006102b80e803a000, 0x8017b15c802bd72e8003eb774a1ee14176dcfe290103d973c0c05aee9818003ba8c750d30b135138034850b450c3e8fd23499bc5393cde2949e8527127ccdca69f14949a4c24c0d3300b293492014c92930930351544cb4019825343d112f⟩, ⟨0x2b81568a704f626c130095448c22510c07d438a1af0d006582e61600ab04cc244111081037c1a40c505902440fc05d02800b4046000, 0xc123469cd0f3bb43627e4684d492732bcd2cee27000ef2719bc8de4800715456c2d24781802bbc4c60768781b782012c7699a4b0d2612777a00bc650a5c5219a30027da6e418a30023d9ef0c27dda800f1d0300077678c⟩, ⟨0x29e14789b84b825212188e444621110387903b41b70cb05d42ac14c095846020a0fa072831012e076032816009203c017808001e000, 0xe24f20770db4f64781aa24c0d5a1c29788f03000e8438d81a83e001c6f6af1adc7b578d2d71a000d1e06469ed2b5f7089bf1138256bd599af9b967cd3cd6cdbb3e6d80859f34cfe295c92e29a3318497d34e649⟩, ⟨0x278133894846222210a08043dc1db0e8070436e1960c005bc2bc13109104441fe0e906f83241740af05002280f20580158068016000, 0xcf3583229c06b97ed67926e86b19136322e4845e09cc9703000f7bdaeb4b8518338d9ac02bd5801ad4611c60d67b2556af0b0356cf0af12f04c24bad6e1470ce003dcf6bee6e4500ab56419f224e09⟩, ⟨0x32f1900c585ea2cb1600ad052227012d88e042e1f40e386a43101710ad051424c10707e03741840b405082480fa06802b8108042000, 0x62478180abe0ed600657002a3c26846a3200071a009efd710625380068c38d001f18b880868bd93c16db003fb39e86f58fce7e296b2b0192ae0327fa95329c1552e5301fa5e0903b29297a02aa9ee860c913a29b34552864a9f2348382a7c1003ad601bcc56b⟩, ⟨0x3051780b985aa2cb1540a244cc25711c08383f01ee0ec06dc3481910c0057c27810f082838817e0aa04e82080f006302c80d8042000, 0x27867818a8d303000690d8d003ddaa2004a41e4cc23801ee74b003dc801d2aa0d8581aa0785a7ba74b4d228984d13ac69001a4eb3a99b8818e001a66003b3c0ca66e1ee394cbc3cc60bf29fc52087e29e060ba54c0dc3552f6301d94e061f0d6b⟩, ⟨0x3031700b4c5882ba15689e04c42050fb87a43b01c70dc065431017b0b4055426412508103e01aa0c405182000ba04a01d80c003e000, 0x557800d8b613c64d81985600002800000c3aac615e8647a4cc00400a874076cf143450d86692b349849a4e802b17429614a348b0e517c873dce6584e003a4b63606000d25317e2717b3f62b9d244ee58da481cd31a88a1f224e091e34f7c0174d⟩, ⟨0x30b17b8b605882a514309d44d025712308cc4502150fb075c39a1ae0c785c028c13007b83ac1ae0cd05502640ec05701a007801e000, 0x7b9a3001f7b49ea346ea1ef293eefa7d2464d3666a834bc9a68945e093c917f7fa6d2fef7ada5c0c03bee52c00f41a3801e914b003d1fa1d2aa7585004001a30002b3d237d0a340c001a59634f4e2001a5863400fd0a8800695b93a97e17624d249⟩, ⟨0x2c51590a7c52028313a09a449423711688384021ec0f0074c37c1a30c686002ba14809f047c22a0f206e82e813608703400f8054000, 0x157225b4449c498337a49c1202715d2e0143c0d8a01ed2d84e276ab846713837aaeedc155556f0ae27a6c00071a354b181b0e028a5c0d4d3000e341b962618a6864c00e15a4df5a3002c1f47c120070751f05518087c000347⟩, ⟨0x38f1bc0d686863241828b9858e2a814489fc4c0223102079438c1960b6053425c11a07d834416c09303f01bc0c805101d007c02a000, 0x5a9cc7133a2b1df4c64ff609949097fd693df402527f8004a4803fdf490abfca9703053fe34b2184958eee78ac3fe8f0f49fdde3297fb7f652e4a442a3cbe1fcdc29f2d47f8df2292007edd27c5d18bafd4a3fcd2e9f4e8e01bec1c2fd4f3c6fec29f224e090d5132a0b341e9353c0dca2a9⟩ ] def tableLRLLLR : Table Block := .leaf #[ ⟨0x3961c48d986b833918b0bcc5a02ad145099c48822510107d43a41b30d486282ea15209404741f80e906302940d005302200b401e000, 0x184e003a94e3606000d49f16001ae5644bf9524c9d491dcb8da9180071aefeb2de46a42001c69c5eb1d910039428e64ea8f635c4e001a8e63792df2a8c0dc92f852c1d94e045a8be37db86400347c4d00afc96b0c90e001a8963418e00ae2010220c99c0c18707954e4a6b6bd8e82d2e63e6a6⟩, ⟨0x35f1a30c9c60826b12e893c480232112085440c1f50f2075c3681a90c305e42ac14c09484181c60c005182000de05e02880b8046000, 0x52d33b400e8ea39a32a918d0012514003f03ee002fd9003004005006007b3cd0d44350a6fa1be86814d129a4cd25069714d4f000f8bc1357c13962d84e003a9c63606000d4db16001abbe444d9533c98006a678d9c26a989c7ea638d9334941a5c5352d003e2f04d73cc058b⟩, ⟨0x4c621690587fe3de1d88e486e63521988c905ee2ed1660aac514275133096c4742190ff07d03a61a60c8859017e0a001a0094032000, 0xff4df3a8fff00940a0090ff00a40750465aecf402b2424f64cb431fd9d8de59d8face0071c51f1d63ba5cce4cd59fc2a66acfe29001f08998b3c0de0d32f69f04039b381c78e59f7254f912704800f80da7fb7cd2da0e4229e06030efdb4f7e78977d59fbeecddf5ee5df1673e3362e89fe200d00e00c3f700b00a00300f3e2b3e81d0749012035fabf700301d2c008d0547d94d08c0348e7⟩, ⟨0x271129090446822310c07e43dc1df0de06a430c17c0ae854027e12708d04241f40ef06f03341700ae04f82540e406502100b002c000, 0x19f00f52c68d3866b934e090159de97098c23d6080038d0d122672abfe4e06ce004696e271f35bdd045799a38cf9127048d9a624da27267819724c0d570000e35c62001ab6e4f00785c3461700185⟩, ⟨0x2df1680ab451826912f88f845021b0fd07343801af0d006543081630a7051026a12b084039c1880ae04c01e40c804f021007c014000, 0x1847ad480071a0031f771001d69b2703000c7c5af08185713800c7adac03a3d003ed5c668d33e449c1234698ee008b689c19e065893030006b2d8d0018e8b88006b2793c18e1705f85d0605a960caa752355b89eb1a001c69902c606⟩, ⟨0x26a12d894447423010687d83ce1da0e486e835618a0b8859c28812308103c41c40cd05c02ac110073034815808a0380138070016000, 0x2123c0d6d232e06ae300071b5d0b44f24c99a18d3d124c24fce341dae6c05cf033e66deb8b0019bcb3b3f7cbdae0cd2b9241954eac6ab713d6d00038d32058c0cdf22c68d3a66c934e09b835c26⟩, ⟨0x26212a890846622810a87f83cc1dc0e4869832216e0ab851827212808e84181f60ee06582d015409304201d40cc05101b008002c000, 0x24cc8ea1f224e090ed1304c33423c21e060dd12001af0e341f162012aef64f890658c9a6ccd5069c122f632e13389ebac001c6e710d181b306659e477096611c1ad560d41aab0cb8581b0c585⟩, ⟨0x3321878bf05d22de15d8a6051227a12b889c43a1fa0f707843801930be85b02c413f08503fc1e80d1057022c0d005302280c0036000, 0xdf986ec5c9a8964513824017087c5e1b400f87b4930926e98008c480070d2003c3c0d867002e26119c4e0030076b802705001b55d130b026781a0f07fec5801005c2869d1e13626000d7cf1a072c2b646be2001c6c1c0fef9106654fd0cf4aa90a153900c0a7⟩, ⟨0x3041790ba05a42bd1598a744f825911c088c4282090f407143741990bb0554268113079037417c0ad04e02340fc05f01e0074014000, 0x2e11e06b7461739acd035bb70a00312967b11a2571a0032d769881b31c4784c0032cf67b0ea5971b098006542cf61a5cb6363ce2eace30f1f7671878bcb3800c9ada64b6cc3c79451e58d2b0698892712780f00a580070ed87dfdbfe9790a1e06⟩, ⟨0x29013f89c84ca25211888784221ee0f207043681910b8055426411f089040c1ec0e906d03241780b004f81f00ce05801a807c014000, 0xc435d0a5c521d22ef8fca6e67c22d84f643001e3606000d90716c3100958fb27e437b77300d9e0e165b1e6366d43f8a5724b8a60cc6124b4d2e29a461a348013c4d8f82133f249f1180071b6eec2bb891e06⟩, ⟨0x34f1960c885fe2e916e0ae451227b133096449023b117087c4141f50f4076c39819f0c8054c27012308681d00c605202180c801e000, 0xfc678e818003e31c65c970ae27000f8bb19e2cf16804b1514321c29fc525069714d998d24e252a7011534297149c4902fd16032b41849016b450061e3ac405502a706954dc470b796a149f42206b62169f021820b29e33803d67f4349f1a57248c1a6c9800cc5e849⟩, ⟨0x2b81570a6051c27813589204302020fa87483901a50ca060c2e81510a204dc24c11308103c41c80c105b82500fe05c023008c01a000, 0x81ae3f8581ae3d857138007c9b8cf2679340038ab8c61584fe4900ae3a06009f91f19a6692c349849f21802f194297148d1b150490c1b278f0c27f1d800f1d030007c738c1393900063c594b80e140031e0ca5c030ac27⟩, ⟨0x25912608a443e1fc0f3874838e1b20c886102ee16c0a584781fa0ea06c833017a0b00518250102072033815808a036014807801a000, 0xc27f3880ef1d0300e7cdf8c9e154c132a704bfbab006a5fecf429614e2697b017b480acbd000d9c0565ead34821f34cfe295c92e29a3318493c5139927048f1a5e4d0d89eccd09a44d2e27⟩, ⟨0x2b21518a6450c277132095449622a10c87e03d21dc0e8870033a17c0b685782a613609384441f60e506202a411007b0270110046000, 0xc24c0d52a24d248a6893093034f24da5b47cd33653c56f6c4f86684d4269b5e00071b3b3359713c8ee12f04803004adb155ce70b73bc2dcf70a00327b67fcfea1600b26f67f14800801c9ad9e06001937b4f9cc07b8c⟩ ] def tableLRLLL : Table Block := .branch 13 tableLRLLLL tableLRLLLR def tableLRLLRL : Table Block := .leaf #[ ⟨0x4a6241918087a4271a08aa43f01e50e706f834e19c0c285d42c014b098048420c0eb06502a413c081037016c09c03f0188078022000, 0x36eac58006feb91000db9f277f3c295e49f101f2bc45e15cf43d30badd96c2c600d28fc034058d06006870e3ef2c606962ee1a40d0163834659e0cfab9b0f30a0038bcb3ab1a3467dc33cb1633e45f3c417c331679864c07cb27e31bdf864e09f5dd99cd8dae2a9c3454807b309a14c27ec427ae2684ce390fdae718952d78265207a57de22e5343d0a4e24c50d02a27c525269⟩, ⟨0x25f12608f445421b10888003de1de0e7870836e1a60c185d82a613d09384542160fc07303401740a904c022c0d005d01d00b4014000, 0x50a89349229224c24c0d746d1e34c49bdb13d99a13489a40036fec6b8c40036fbc9e2770b89ec2ba48f03362ac4b61712d85c57e164cd25069714dbc000f8bc137fa003e2d84e003b7663606⟩, ⟨0x23110d88183f21de0ea06fc36a19f0c505e42d415f0a504d424011608083c81ae0c805e82a810e07403381600940370150064014000, 0x18e6c2e42a9fc520e01a9e06b8254c0d8c2c2d4729f60cf912704834aa628d5a3066781869553229a306053c6a684c1ba1ee28017c6ca687a149c498a1a0544f8a4a4d2612606⟩, ⟨0x22310b88183ee1eb0f0074437618e0c2055c282130091845020e0fa07583681960c0058826411407f03981980a003f0150080014000, 0x5231c9a5b13f23426a493906c2801eb1800d9e06001011d61b5636f0b9a67f14ae49714d198c24bc9a7324e09389324ad10d89f1342338a719d85c133d0999e06c67e1606⟩, ⟨0x23811188644142000f5075437e1b50c905f42e01580a704ec26211b08303641940b9056026812008103b818408c03c014806801a000, 0x18333c0d912606c7fe16848cf900c340c007c7f6260154fe290f868781b8244c0d8f5c2b1529c0a75e005ecff92654cfe293d91e06a8930363bb0b0180a9e06f290fb91e852c29⟩, ⟨0x2d81628ab051227e136897049a240117089042a1f20ee07483781a90c8058029413b08c03d41a40c805282100c6040016807801a000, 0xe1131e20eb007e4831782760d73269bc8fe292e91e063092001c8be2f22b8581b225850dd0e0300eb00081ff22b8aca0614c23ddd80038d000e4372207abb9e4e0603c642b1648129967001968b3a596edf8d9a90ff92694cfe29⟩, ⟨0x2e11690abc51c26b130890045421710207e43ac1c10d9068c3001650ad84e0252110077836419e0b905602240cc05c01c8098026000, 0x611c0037a9c6800ef1dc40077a6c9c0c003bc16bcade16ac44ae889c1200aa1fe2fb314f6926124e1fc01389077214f0364d400d89308e0360eb01af037562830b0361db0ae27000de471b42e054e4606a16829f17b9a265a44c4489⟩, ⟨0x28d13a099447022710e08343ee1e80ea872036e19f0ca85fc2e414f09b04b0226104070834815e0a504c02080d805f01e008c032000, 0x3ace73496009d5c1a96a3835e09c497979c29c471f916e271f35edc24540d973c2b89c0037bbc6df04bc606bd07759847000dedb1a69440077b3c9c0cc2bcb561732f857138006f5d8db10978c0d600eeb⟩, ⟨0x2fa1720b0c5682a9144099c47423010787b03961a80c985f82e015b0a304b422810307b03941b40c105b02a410c06502d80e8042000, 0x334985008e08b3e449c12003c0d69ecb035b6800801f01d9e06001e02b48006fc38d001ec6b880befbd9399e54838aa748667054dec2a77869d7ba20eb1934d99aa0d38242f61d7099c4e001be863434fad6e303069759dac06d5ce007d636b⟩, ⟨0x2f61750b7457428a13a094c49222610a88103ea1d20e286e034a1920b7858827e13508904141c40bf059023c0f407002d80e805a000, 0x2119c4e00191062e43ecfb000e2b65385f26001b3c0cf5c90de2f0cd2566930937ff00562e852c294c91618a2ff7ef53ccb09c0077f8c6c0c001bfb62d86200abf9e4de99158c9b89c0037f1c6f832c606f4455800f06d9d856002077c176a⟩, ⟨0x29214389c04a424211988784201fd0f7078c3a01af0cb86342f415709b048c2200ff07903841ac0b505502740f405902780b8042000, 0x304bef0cb0360131f631b553030aa78864650f91270487489f05d13b6847443c0c1b227036001c6f7fe875c6d144c2a891934d99aa0d3824033db2d7099c4e001c08637ccb40ee3037b3680dad84e0099ff6b⟩, ⟨0x34f1a18ca863e3061728b1054627612a891843220c0f4874038c1ad0cb85d82a612607683701960b204c82080c204a01d009402a000, 0x52302523a70483d1bac007992ce00bd016be71e62b3f35738730d9c0079aece792c01b9ef9a6d4e27000e0fb1b2c06f181a5c05d79f2c2800f9359de8d838c6f31801033d9c00798819800acf18e686734431b9e000dd20bfb2400793ecf13fb2fc3181f953018dffaa9⟩, ⟨0x3081738b18562290142899048622e10687e03d41d50e306d43481950b905942b014509904342000dd06982c014608002e80f0032000, 0xeadeabb4800fab5a7d42cde9feab69c13e9df8f6b094f51b3d112a7d482e6ce0caa9fa19e9153029b0cd25669309385a00562e852c294f5161e22e0443a4372c27001e14f1b0300070a38b618805709d93744cc7b26003d0967c263a171a034ae9⟩, ⟨0x30317b0b9c5b42cd15f0a8c528289137096446a22a10787f43e61dd0e986f436619d0c1059c286116074833815408702b80e8042000, 0x78a5724b8a64cc61240d4184d649c12019f425a28d13a0080a0f09a7401849748f0368fb0b0369030b03695f0b359941e6b3183cd2612f838a074909959c4afa484c6cf2f8b41e252e8ac1c227a0bc3844b41410bc3e7884c9f1c9dd3d59d5d69⟩ ] def tableLRLLRR : Table Block := .leaf #[ ⟨0x2c91598a9850227712909044602210fe07bc3c41cf0df06ac31417d0ac053825211a07b835017c0ab04f02180f806902200b8036000, 0x1a93c2b09e07000535d0300250376b34cd2586930930350017aca14b8a432464d1c830467520045e184e001c0c5ae818001818358d8c8013409ca3a7681194d3e614bb43f8a423ca1e060e112000c0adaed37616af43d141907⟩, ⟨0x292137893046c223108080c3e41e50ec072436c1a50cc062c2f01630a8043c2000f3074035c18a0bb052826c10a07b0328160066000, 0x38bbc8800719193d5e6173343be087f14941a5c53a663492ab22650d3429714864899bd3406089001c009002e09ed43627d33426b1349748f036a730b036a730b036a870ae270006074d640e703a0003aa⟩, ⟨0x28513c09ac4ac233110084c3e01e60e186c031a1780b5857029c13d098047c220106078838819a0be05a02440f805902080d8046000, 0x14297148302ad07d72dc99bc8b613800f1c98d8180038e2c5e0291b9320df27824a7a149c49821bd4d3e292934984981a81552692429952612606c6100271a0c4a9003e3031ff0890f09bc14480071978d⟩, ⟨0x2e416b8ad0522274133896049623e117884840a1f90ee06dc3201730a704e025011107d03bc1b00a804281d00c60540218080022000, 0x618804321193b08a17f277101b27f14ae49714c198c248056e4a5c5348c00db32900120f2d7dae0100327b580194c1de000eb738585d4c6a32d932a832704c9c0cc6b7360ed5987b38009f0fe8693e34ae491834e3b40198bd093686b⟩, ⟨0x3021708b0854228213c095448823510b07b039a1ae0c8861c2d014509a048c22810307003441800b3053024c0e005d02800b4046000, 0x2c91926d6007fad1d91ec8ad701800d1e0658fe64f170a699c9396ff751f2d7edcab4700396a8f95b2bd2feb0064f036f9ca94b92a00730fe8693e34ae491834e4580198bd093886ba14b8a43845a19ec33933d916c27c86800f1b0300072178b⟩, ⟨0x3771b60d3c67c3291898c185c62c815f0a8451628112f090c45a2200fe87683a01ad0c906002dc14b08d84001ca040017807801e000, 0x60900a4f958c1adec4d5aebc2b89f288001c6f3c071181a4700657b4dc2c0d93e000e37920188eb8b0ae27c9d00071b5d70d264606aeb068b1601e1c277706df41b59e19fc3866359c19ec38073d07cd66e16da96f2439d300f313e0da19b54ea931c9f5a4d1879634ac1a62249c49⟩, ⟨0x24c11f88c044c2190f207383761ac0d086382f21610ab851027411708203841a40c605b829013407d03801740a003f0170088022000, 0x613c64d81985600011800000c3da1e151e43e449c121da264815a11e50f030ae8981b2b6001c68749100ee56326612711ab24dc28781a5905e56c275551746679338e99e91ad0d27469⟩, ⟨0x27a132896048622810d88283f61f00ef87303741b00d0865c2e816109f04a023c0fb074036416c0a704201e80da05702080c8046000, 0x1b9556e2706355b311caad334619f224e091934f268d2f91e0654930300072f98d0d92200ccbce4f6498581b2ee001c692291308f974000e34d28800f2e393819857b19c2ec6b0bb126924ed2400d8b⟩, ⟨0x294138899c4a224411088284001e90ec071c3741970c605a42b813909784301d20c60588270112074033015c09403b0180074014000, 0x9cb66a727036d3f0ae27cd300071b31b34606ced19726692834b8a733e007c5e09d54082316c27ccd800f1b0300073338b000ea8f22202ccb64e60d5214aa90ed0e64aabf218e24c19bd24e093791750a1e06⟩, ⟨0x2a414789d04cc25111e08a44242040f987983aa1ca0d886983321760a9852424c11507903081620a204b82180c605102380e002a000, 0xa253b60c2a7e21a40d52146a90f10e3eab2fa861934d99aa0d38242609d7099c4f9bb000e340c33a6c8c0c07c9d262c7cce0019d162e742046006e2a2ccf9127048c9a408339cc69788f031a49000e6b31a0f8b1⟩, ⟨0x3081728b1056a2a6141895849822910e07f43a61c90d986983061600ab04cc24c10307203681760a504401d40b804b0190084018000, 0x38667ab1b16a01767b49309273fe008c4800c58803d9e06d2a801712e27003dfa97c63be802a540d9f7c2b89c0039dcc6e368ef19181b1b2776c5b89c0039d7c6ef90075181bb1001a5eb770a00cb9279024c0330e99f734f4bba64dcc0d0a9e46⟩, ⟨0x2fc16c8aa450c27912e08d4456215103078c38c1a30cc85f02ce1520a384a023810d07c037418e0b104f022c10005d01f00a803e000, 0xd8b801f12006dd280070e005dd2625c4e00e3f2b9c31e00a55036c430a611c003a01c68038ccc40599fec9c0c1562d2ba06548b3aa704804f0f4ba46308e0c6ab8810955a94c2ea4b0b98a261844e09007e3bf160078952785d1a13001e1f47⟩, ⟨0x2ab14c8a3c50027612988d04221fb0f607243741970c686002d41540a5049c2200ed06d031c1780a504101d40cc0590268100046000, 0x17c8f032a49818003a26c6801b0351004e88f27acac29847d1080071a6944007a1ec9c0cc2bd616175878581b432001c6818ad1011e85b2798225f844e091d019600fdd761fc52b125c5388ce29aa009948a9f63189⟩, ⟨0x28513c095448023610f88243dc1d90e206c433818e0be85c02be1540a084d8252106073837417c0b104901a00b604a01d80c003e000, 0xe27d2480071b886b181a90165eb9f0b0d8a42660d5214aa90f90e7caabf21864d3666a834e094f917099c4fa37000e340bd92a8c0c062c852dc4e006c752c0b58d01d4ad334619f224e091934d870214d⟩ ] def tableLRLLR : Table Block := .branch 14 tableLRLLRL tableLRLLRR def tableLRLL : Table Block := .branch 27 tableLRLLL tableLRLLR def tableLRLRLL : Table Block := .leaf #[ ⟨0x28212488d844e21c10487c83b41d00de86cc3201790ab04fc25c12108804141dc0e306b02cc13c09403e81c00b604f02100c402c000, 0x146dfb154b5ece8f21f224e090ed1325033423ca1e0615d130300074c18d030da2019d2ee4f491658c9a6ccd5069c1233232e13389f4aa001c6fbc2c606bcd996c2713455c23389c60d63e00aab5d985⟩, ⟨0x38b1ba8c786223001618ac854228412e891845221c0fc87703a41b50ce05e42c01510a304b42280f3074834814a084037813805a000, 0x718b0a391cc3055400209f04b61e8cd60e61c40273306093c3d29a524d23fe3f271fb1e1ea4e07f31c7bbae56e27000e9fb1a3f5d131818a8b9a5603c0e7070e9e71abd0ae7c8938240609d30142ed01598073c0d63f32415ee10b76ce0038cf69c42b362e63159f173132cf8a58b789767⟩, ⟨0x33718d0c2c6002e31600a6451e27212788b04121fa0f7874835e1a40c3859028612008983c019a0c3050024c108078034811802c000, 0x111849f224e090062e948cba40f8d004038ae4f03003154a7544001c68006405911946a7f26711e1300347c9f53828dc6c260069693ea663778d001f5ab3bd6f52f8d713ea540038d8f90027230347cc00f8b613ca4ba46308e0018f7e2e3dc00100162b8c985⟩, ⟨0x2e01668af055629c13c89b04be24a11a88404061e00eb06cc34c1830b0053c27c12f08f04041bc0c105a02440dc06402080b003a000, 0xabe4d86692b349849d63002b1742961493c2ac1dd5715aa435b9613eafc0078d818003abdc5b0c4061abac9c84ef2793b634ad1a62248c1a73dcf256001e2861f3acee56e27000eac71a010e246460619b711b160e2a9b14d1945d27⟩, ⟨0x295138093445421b10707d83c01ca0de06a433818d0c005bc2c41510a104e024e11808383e01dc0cb05e026411407d033811004e000, 0x921c55fb3000c9230fae8922e34d23b8ac22ba2b97185e5d6168869d10f4293893e66e534f8a4a4d2612606a5349a492834984981a46b22cc6984991548cf1f689d853ca8c2eb364418d00ac693d5c00d8b27⟩, ⟨0x2ee1658af854e28413689784a623c10c87ec3e21da0db86503121720b2050423c10707a038c1a40c5051025c0f406d025010003a000, 0x24d807ec5d9980ca63812f60f8d11dd8f91270481f2c903bc9931a041f263c0c07ab275fc001c6810a4bf91c13bcc32e486000c4e70faf889be340d963e2b269334941a5c53af2003e2f0480da04ad84faee001e3606000ebb3178600331⟩, ⟨0x2e91630ac051a26a12c893047622a10387903b21b60c986202ca15b09c04541e40e506b03281760ac04d02100dc05902700e4046000, 0x1944e265018693fca231328793f6246cd3a66ca34cd9a650727ac5ca0801f8bc1200d94062c01b276c5e0993a002f170349ee4e78b000c9bb0f270938e2d84f292e918c239e4bc512b9d985e76e143a95782680557cdfc2c9b40518b⟩, ⟨0x3791ab0ccc64c30317b8bb05aa2a514789e44c424b11908843fc1e10d206042e214e09584201ae0cb05d02a412e08403080f801c000, 0x1951e4400fb48c9b09c0092a0c5d2360903819600194e000b15d18c2f45b0a07931ed5b65add93aea1cd22a9126272ecc25207005e027243b87000ca6313498c05194be2652c050c4ca580a18b01020304b673d234839a01cd2f8306887d9700071b28b94364402528c000e1ea86⟩, ⟨0x2ff1780b345802b314f0a244c825711a08a840e1f40e886b83161750b104fc2380f906b030015a09e04982000ba04801f00b4046000, 0x1849db4802b174296149122ac18d571a9a58db9613800f6c58d818003b60c5d829196058bb27976192e1c00319cc4c67b0d9149a5bd2cfc3800658187967cb071a00191ce1e5978644d0f91270486089954803b1a27c67818b0d30300076978d⟩, ⟨0x34519c0c4c6122e41668b0054429814089dc4a424511107fc3ea1d20da86482f21680a784d82260fc076835817e0680228088022000, 0xc278d482f5d740c179c6a1ac0bd98fe29020fa31e0605c993034690179eb1c4fb7e000e365b603bc8c0d2dc01ce2cfcdc24f2d90766240795d3cee6e6e474f1f2ba65aa0e8c581b0c9cd4ccabb26b316481101e203f01e80fa4bf87963822b172c601562f0cd25669⟩, ⟨0x33e18c8c285f82d715d0a5451626612088c043e2100f587783a21c00d186482ea1680a184e42280ed06502d012207b02a012804a000, 0x2ff8dcf59029ba868dc11afd700386c9e36d0c3b5d0346d60096b80138dab5da6692c3498498d9800bd650a5c52346c02b06990c1b009c1270c27000e35ed740c000c6b9ac00403bfe64001b82e53a9d85000dc0f29d4dc2d2c008072781a3540bff5c17f46a7ac⟩, ⟨0x3ae1c68df06c634017b0b4c54624c11f08c044420d0fc07943a41b50cc05ec2d4145094042c1dc0db05b024410405d026010803a000, 0x3a007edcff8e601db73837378f8d95b85201295bd958e1c19f1e5c38f8419d1e4c3800400400301c4714041878a1b486f21b85552a6ea90c1138849b0f03e538701729c3402948c9a637f0c33598584b2cc842496047904b03e43c6f400feba379008b5c6126377007b59626781801b8dd35800de927⟩, ⟨0x3771b08d5c6823341878b7058c2b11538a084be23c11888383a21c00d784f825a11e08783a81ba0ce06202d410007602980c0032000, 0x76ab0b0376a70ae2700063aed6475b1d70003aaed1e172054f0300a51d4eb23cf1eac4c7a63cd89c131e88f2e307f60aa0af4b370e3267ae368fe00ff2bb00082fe5952c9005e1f15cdb126924c5f8004ead84fd936063496000d660000043818003bcec6cc40003918bcf4bd204e7⟩ ] def tableLRLRLR : Table Block := .leaf #[ ⟨0x26412588d04221fc0f3877038a1a20ca86202fa15a095041c1e80e306b031c1740ad04f022c0f8071030013c080033014005c014000, 0x8a7f74e74ec7030c83b0f342a982554e093fd59801a91161e852c29c4d21e00be2402b21d000e1c02b21dc4d2087cd33f8a5724b8a68cc6124f144e649c123c6979343627b334269134b89e06⟩, ⟨0x4322078fb876a3941b38d106423141788b4058c2a514409ac4421fe0f6072435c1930a484e023a0fa06f828811207002f8118046000, 0x3854001c6ca61075c662660260a5f2cf6272fd67b1297d97bb3874784b8d0f770931ae27000f08b1b28845b7181a6b48aed600c4d278a2299594936322e811908a70e0019bd6271b060c64de7139a5341e66d485cc180020a491a86630f9ce67d4061336c083e2e5d2d85c8c01cd3010c9e1c073dcf999aeb907300d639f8180adc6863649787⟩, ⟨0x3b11c60dd86aa3321828b9056e28a13a898048622610487dc38c1ba0ce85d82aa13808a84081be0be057829010606201a80ac014000, 0x12090003ace806140067cecfc4750be367567d66bacf35934f679a39ab9a6b3cd24ceccbd9e39553244a905a4d93c1706ca40188253fd8300311824fec9e91a1482a4f0842704c9e71890ed600cc527e1b09831a1aa1f868013c68044c659f224e09001989b4cde90a5b400400e61ecf030014c2da606⟩, ⟨0x3861ae0ce462c3001778b7857629e13d89704642130fa07283561860bc855029412508984241c80da05a82400de06201a80ac014000, 0x802c07520105f7328001bede53a3f85fb34d71a61e636ac3803abc9c6b1c62c6e3b6c547c74d85b2d1f1d635a3dfbc6747bf58cb0551c00e0aa38bef211eb184f2108be5ae8185f0907f585d23c0c005c839ae81a41a00275c0044833ac005a03b3f8a400400e806cf030014ffda606⟩, ⟨0x2c815b8aa053a28c13589704a024511b08544101e30d8066831a1680af04e4250117084038c1ac0c905a025410006102a00bc04a000, 0x7d34e649c123469fa0f64b43627e4684d4927e4bd7acee270006447d6488d2238003aae9b61584e00a4887ae818012910759a6692c34984990f400bd650a5c520d2ac01382aa40ceac011822b0c27000e435d740c000c867ac⟩, ⟨0x3241808b785a82b114809bc49822910407ec39c1c40d186082d615609884701ee0e205e82a812e08c03b815808a038014807001e000, 0xe5500071ab64ac6646065b1d62b1600367767aa0b33b580066d7879b94db31a09b3fb67f14800825cfdd9e0604a9f9b4d24d25da694b64830a9e46200cf5c0daa7918002ed703fa9c62f917b5dcb226bb44e0952b567b780859f34cfe295c92e29a331849⟩, ⟨0x3fd1f60f7c7783b21c78e006b63441908c505e22da1618a9843620a0fc87a038e170086037013e08e03c81a00b604a01c806001a000, 0xd66b613f3200078d818003cc6c5d2510006489d9c3ada5000f30b1ae31000f2ff2701b6961d7d29334449c0149b07cd2b3a2960010014e216c6003c3ccb9a59cd28e6a9caa8b4a6ac00bd297caad7969387e943e516deb5f5ab2d796bb875afc51123d875af449e28691dc38c99eb9ecc3269b33541a5e4d36d35516b84ce27⟩, ⟨0x2fd16d0adc50e27b134091446421d0fd07643981c10d9869030216009e84cc22410307a033c1840af05282480ba04c01d80b8016000, 0x1e7563747b461c8809b47c001c3d2307e8701073971a1921e54d5a001e7163401f2f6e2c27c4dc431847e6e00071a0039257100bf367270300ae47daf624d24987b8017d5b09c7546c0c19a2c0003d4000008726692834b8a7998007c5e09⟩, ⟨0x29013e897048e236114886041a1f60f587783761b10c805fc2bc131090044420c0f706b03101740ab05082280f607102700b4014000, 0xe10e01d9816b226538c1a68cd2e69c1222032e13309fa0001fc6c0c0779b56b1c33800e6c5af35f2c802ad59067c893824e2481c656db4f64781aa24c0d102e97123c0c001e7763724c0bee3a43000e1e06⟩, ⟨0x3101818bd85ca2d41578a884fe275129090c4401fb0f2073435819d0c905c429c12108b83d81d80c905302640ec05502580a802a000, 0xa14b0a66cd6346b9460008d9b09fa48003c6c0c001e9162cc288007a3f930006511d9c9c3a5937f4a0115c567c893824006b7ed2fe095a63400400eb76cf0300156dda606000f44f1b28f7ed645c4e001e88634baff5ee3031797eadaf40d52166a9⟩, ⟨0x2d61660aa450c26312a091c45821510587d03c61d20e2868832e1860bc855829812908d03d41bc0d405882380d605402180c8046000, 0x206000f5271a00194c644009d46c99847615ce086aa94134b034a03a59334941a5c53d3d003e2f04b61ad84e003e9ce3606000f4df17894400193eb67279e9606000f4cb1a001940e44003d2fc9c9dba5c334959a4c24f4ac0158b⟩, ⟨0x2d51590a94530283137092447821910787b03b21b40d286403021720a68500256121086035c16809103f01bc0c8053018006c022000, 0x1d6a00562e852c2922455831aae559012366c27001f58f1b030007ac38bc85220214aa7b33c8e47eadd893492651d00f356c27e8356c0c0f0ab0100000000021f5500038db12c7132288a1f224e091e34ca780178d13c33c0c5469⟩, ⟨0x2e115f0a9c53028713c09a448823711408784221dc0e286d834e1820ba85982b814f08d040c1c00bd04d01dc0a803f018808001e000, 0x15ec4e4e408d29e478936ec49a493202800dab613c64d81985600080000000438fff4bb126924c5e80036ad84ee136066158000ab8000010e2eed2db1404187000d8a70f645b156340031dec3c77fae18d06653e90d86692b349849⟩, ⟨0x2ee1658af856229e14589984b223611608243ec1d30d7067431817d0ad053428012f08f03e41d80c905f827011e06c02380c001a000, 0x3b5400ac5d0a58529d22c3945cb2e013ecd84e003ed1e3606000f6871619a44003d9ec980412c86cf0cd256693093d9a00562e852c299e358e9ae589002366c27ec9800f1b030007b238b618801bb1d930006582d9c81ba5ec600071ac31⟩ ] def tableLRLRL : Table Block := .branch 13 tableLRLRLL tableLRLRLR def tableLRLRRL : Table Block := .leaf #[ ⟨0x2b91570a844fc26512d890846222110507fc3cc1db0e606a432416f0b2853026a11c07c83901820ac04b82180c6040018808001e000, 0x1099c4e001ee463432a9e30348d43ac68d3f98df44b2704be463ae131847000f6f71a07cb4410fdbac9c0d0aeceb03dd8ee734eb0156b3f0e0c6a701276d31a0f6a7f7c568f99fb60010c68006f4d87894d86692b349849⟩, ⟨0x39a1c68da86a632e18b8bd85aa2b81568a404de24e110882c3d01d20ca85c82be15009e84a81f40ee06a82c813207602f80f0032000, 0x1c62001ef464e40fd280032eb6ce40ed286c5d35a4f26ea6d7e400b2bc1201f8d2b001b8fb3800dcb5ac006e56e46d5e86c2c44a2298988ee1a6a8a58054031f0faf300e61c3244c0a6fc5129c21c142001d7761f9180669cfdd104de3406b5ce0aeee7e340ec63f7340db8dee600431b3202e7⟩, ⟨0x2c215c0a5450025d11c08b84161f40f2875038a1b60c886102ea16b0af04a4224101078038417c0b1052024c10405d02800b4046000, 0x206000f827160c4b1000f81b260074be7b381bc08001c6f936d13c8f126dd8934926427001b56c278c9b0330ac000b640000087210e970cd256693093df400562e852c29a9358c1ae5de002766c27001f7b71b030007bd78b⟩, ⟨0x3ad1b40d585f22ef1660aac52c27512408cc4241ef0e606c433e17c0b3851026611007683701960bc04c82300fe06a02a80c0046000, 0x1e7d6960031d376d67f141aa5c007ce7cec5b45bc5bacf03241bc4d8d001e55b4f1c59800b93ecfc92003c9d67e4ab3000ddcd9fc3ebbac6f87a2438d00ff613ff83539c02d8706e53f86405f8d1e33803fc2f8dacd804b0f86692b349849f09002b17429614934aac1a1572fd002bb3613f82c0078d⟩, ⟨0x510281938097a49a24691a88a84312070fac74237e1b40d146442ff16e0ae452c27312808c441c1ef0b704f82020de05d827008a000, 0x6188017c9193da8deb726001f23e35863695f2264fcdd85000d8d70e001f21637c55691c8d9bec39618b19da4f0e001b18e26cc186b2fd8c31362fb2f626d17664c5da2accb8bb125a2f1366eb45e26d1566dc4dc174598b00316e8fe3422ce3406d0da3fa3478df0fa28bcfa18058bc6b0dcd59dac0418fe6e1dabe417898ff330f00b806e2759a698c5c5a8514b22f8bf082712d6adc05f0f727e7f1d56997b567⟩, ⟨0x30116f0b2457e29c1450a004ba25311808343d41c70d2065c2e815e0970480224101078038417c0b1052024c10405d02800b4046000, 0x1674b9ce345f8cf030016ce5892f91e06001f9931b0379880038d000dcc32366af2fe4ecd372ec5d99acd387613d996ccd8bb3361bc8200100161e486b21b0cd256693093e5400562e852c299d358e1ae6146d6372c27001f9371b030007c978b⟩, ⟨0x34018d8c385d62e115f0ac451c26b12d092447421710507f43b41b70c906142c415809a84881fe0dc05c82580e605001e80b8046000, 0x99e576bdcb09fd10003c6c0c001f4362d86374af41e4eec9953c9e19a4acd26127cfe00ac5d0a5852008b4362c003685c5ccdcb656e584e003f3c63606000f9db1750a46d89b4dc9f9cc0038db9f5ce32200cb3ce1ecf0014c4804ecef8964d0f9127048006ced89⟩, ⟨0x3751af8cbc64a30215c0a204ca24f11d08b84361f80ea86c83461970c405cc2d214609184001860b405182481060600298118046000, 0x16d7c35bffd20001c3c0c035f53e36ed1e8db71dbe409b870265d9c08387000ddc713767c3037a9e1183943806bd3f8d000ddaf0fe9dbb4634c24e23564998153c0d766baee2c00375ec3dd6aeb78b01d8006eac030c3c0a6c334959a4c24fa3c0158ba14b0a4013752c58006ea38b⟩, ⟨0x3811ae0d3c65832217f8bb05922bc14c89d84d8249113080c3a61c60d186642ec1530a204e422c0f306182e412c08c0348118046000, 0x135caf33b9613800fd918d818003ec6c5e4291bc9e65326e27f6100071a07cdee64606b87ef6b16001cf7e1c003bd8c581e37af9efc5309fd74074c6c0d70803a62c0116e4c3e449c12001b70e26e076dfc680040076dfc3c0c002b6ee2606000fabb1a001b7ee46db1eabc9db5400387⟩, ⟨0x36a19d0bf45d02cf14289ec4b023510287c03b61c60d186282f616209f84b023c10b08003741840b405182481060600298118046000, 0x3806086e81e1f804085e81015b0e250a7a02e73effc002082e7f814f0f03008fdc98ddfee8530fa0bdfe684f0fce6a7a0354853aa4003a11c390ccbae25300c7b9fdb4090c687289da1b5844e0900cdc97173580a9e286c334959a4c24fb3c0158ba14b0a40116f8c58006def8b⟩, ⟨0x4021c88c806242e21660aa453828d14009bc4c425112108e042a2060f187503941a70c2058426210e075832014a06802280c0046000, 0x360bd8301b800bb0b80e377f60b0fd8201b0007b03d84c069bbbb0d87ba18003b04d8161f60586d80804f0f4293893e66e534f8a4a4d2612606d7c0017126924005af6c4984981bb77dc1c680075e589edff6e71faf000100070faef000e27ae1ef2c6fbc40038deb7dd0322047bd8825bdad87bd8022b0e0e8a9f335eb7a0787⟩, ⟨0x3601a98d0065a31c1848bf05ae2cd1540a404da24a11288384021dc0e906b432c1870b105542600fd079837019e0aa05001ec0c8000, 0x7148628c4f1243e6c4e930c279bb0003d740c000cdd5ac08aa920046a4f28002d496526e600075d01ee9584f3718007ae8180019b875901be94e23800736f6b1c4e000cdbbac9b6e6dc000b55034071a5613cdb0001eba0600066d6d64065a5d837610070003c079bc3b0787⟩, ⟨0x26912c092c47c22f10e08344021f60f287583821b00d186643041780b0855025e0fc079036c19c0a904f81e80c605202080c801a000, 0x5069714c998d248a289309388d82474d37922c84cf4269713c0d01b6960680d74ae270006701d64dff3800005aa81a02ed2b09c0039bf35d03000337d6b2028d2e99a4b0d261266f4002f59429⟩, ⟨0x31e17c8b505862b215189f84e226412088a840e1f00f186f836818f0b8853825611608583d81a60c605c82b811605b01c008001a000, 0x27327dcb5cfb8ce63acd334961a4c24ce5a005eb2852e29000fdab1826ab48003f68c62fa6d86138007392eba060006723d6010539a5f61d66650051acbca4f02b304bd2ab0035e86c3d0a585389bcd0016c48057d02001c38053d0189849287bb90fe29⟩ ] def tableLRLRRR : Table Block := .leaf #[ ⟨0x31a1818bb05b22b414e8a484f626412688d84221fc0eb86c83361760af855027a11808403ec1b00b505401e00dc04b01c80bc014000, 0x3a1364f304c90c5133a780e9ace7b9998278f86677d6ccd5d998067b1e74901435c0c6a79d18024d700c13a2eb80d96380b53a1eb80e064c26037d9339f80bfacb6c6c337af3d7187003faeb0fe290008017d7187818007eb7c49748f033ee939a6ba06⟩, ⟨0x490236912884e4041eb8f347503831b00cf464e2d01618a804fa27212788b04361f80ea86c831e13806a02c40b404c01e008c020000, 0xbcedf5313f93bea62c0037d5c3df4afa78bbc5001003b3c0d3b6178bae2f1276bd67a47d2789000fa1f13e82c30332fe80013c2025dcd7879336bb35cf89d736baf138275cbb0cc66e5014f87a673785014b87000f9f30fe7afcae3711fe82c3fcd400bec5002015be4f87f967cd0009ec40018157e4d87fcc00a313ebf029809c002002f6161e486e0c6817a7606689eac6⟩, ⟨0x3c11cf0e486ee35c1a90cb46402fb1788b3055227911e08643ec1d30d805982b614a093841018e0b105102541080730348118046000, 0x18d8004e2711a633384c825f0781a78d6cf75cc279e2db4ad740cda44f13acc676eeb0f8cac66eee70e159005e046f4987bcce03f137c4c07e2701d7c3c4fe92f878bc02844400c17bfd061e130c99c003fb6c6fe7afc391bd385d800e001c3dea70c61268cd26692834c0df97bece2ef0979ec4df56f3d89⟩, ⟨0x4bd25992408da45e22990c081a3dd1e98ec06b231c17c8b2454c28313008f44341f50e906b43301730a904b42180e70620180046000, 0x1037fa7b9d8deb47c030f9127048007e2f89feaf5cb1a001eb1fbef0f037587e27893e2bab021b8a206c60d70e10c09bf4db05587c14609b0f822c13e0970ffa4fd36271d2038c4e3a000f89db02feb18001d9361db499e7f5c001da1e1db449e775c0e2a99e6cbf4d6000dead9cbea9e675c0037c9672f96797d77490f6787c11609018a0fa01af49318b87c47001c2cffb3c3e36001389⟩, ⟨0x4192040fd47c43c71de8e686ee3541a48ce862a2f21610ad452426f132090443c1fb0ec06d432412107f036c170095039013c060000, 0x1a869a91123a2262c0183c0decfc2ae2f06600ac4e1000178984c791e00000075be7ec67647094001c1de1e4cd84cc65e2c00382ac4c26000e0db13ec2c63e2fd83835c5fb037d78b000efcb0fbe9df562dd7f8b503282d80c80eb0901f630ff22f8fe1fd11e7ac3f9e7d4387dc9ee371211bf1ee1c009dd4c3fd1603470008c07ad587⟩, ⟨0x4d024991248183cf1dd0e5c6e83511970c245b22ac13e099c4a423d10d07dc3a81b10c705ac290125081037c15e07f0348118060000, 0xc0100a038a139c3e00404e1c40e804e30f81bc00073c26f870115fff035c24c3b102a702c020c4807f02b89c3761c30e001c0a61e02107835bd3900f04bf0e1de35fa5d07c08009b0d38782354d122a639d53805bfc62709f868c4e13b01389c04613713807c02e2700984bc4e1930978bc02618b13861c01e270b97efc3804fa52010c3f4a000211ec3dfff0c001e0de2780186f42f49023587⟩, ⟨0x3aa1cc8e286fe36e1a58cf065e32418a8bc85d02d11620a7c4d825511d08c04161ee0e7871434017d08c83f81b60ab037012c060000, 0x1fcd39927048e1a400ff78c43627933426e492001face1e0685874ae270006805d650094028003aa85734b1c00c1e06046e800d660a0149c0156ca3c0d01a0003adb80d29322efec7a02901ea0a30afa05f0f40ec41c27f87dc3875831d87cc384f4300036c3d61c2798efc3e105907c2d060c05787⟩, ⟨0x2ef16a0b1c5742af14a09c04aa240115888040a1e20d906a030616009d84602120fe075831812c08c034815808a038014807001e000, 0x4b85707a14b0a71309a550994898030794096135cca996a54e091250e18003f40e1c0037d4bf261e068171e7cd68006ff98781697fdd6df8003387c8938243744c08cbfd6b40037db00a61e06bec804f132821f34cfe295c92e29a331849⟩, ⟨0x4cb23d11948ae43620a8fd07a63b21c88df86d43491960c2c5cc2c51520a0c4c424110e07dc3b41b50c9058829a12a02880f8032000, 0x4ef800a1ba1a80151159e822cd34350f80a5a687a886d344002569011a1fb4a02d0fdb286e87ad818a2600d19002752d3ff805290019d2b4d0881ff6b0ff6836d88274276ca12a0bb6505508db0006816ce503507dae282683dd7003f849c3f5a0f35800297ee1d38800197e61e716cc25197961d9d8f3a1c80ef1d0134ca7ebc56e743b58c0c5fdc3add60008cf30f27c9a044811f53dc64e7⟩, ⟨0x3831b00cf465c3231800b7455a2a3140096c4702150f8073c35c18d0c0054c29212808183d019e0c005a029412c08c0338118042000, 0x7ba7de18b0047b930f9127048007dcd89f75fb931a001001fb7f0f030007dc58900060a1d6fb07dcd91000fb370f04f3d8badf49d55b3fd17cf59c017e82cfe29001003f9eb3c0c003f3b6928a285ed71c4728a285dd75247c467493112606288a857d6000cffd9ca08a1575802d41767⟩, ⟨0x3701a58c9c63a2f816f8ae854228012808dc44c1f60f3870836618e0c205dc2c014908c83d81d20c605182000e204e01e00bc04a000, 0x6b6893d7006a7b083c0c0d7d11fae01827381134476b2260dcf110502e70417f680ff870182738c9ac011864040628c23800305eeb4d28800705d6ce06615c353a586a74bedf0057b970e001f71e268cc009f71627dc2008c4fb80005893893eeefbbe2ca847c3340d0558017ad⟩, ⟨0x2fe1788b3058429d14809ac49023310f084c3fc1eb0ee872835e1940b8859026812a083836819c0bc05682200c60540250094014000, 0x184e001c1d3ad818001839f56c3100ba0e4d9e22776993aa354c54aa704c342ac3144e50d88227856384f0ac9090b0fdd30fe29000857fee5878182bff70c480405bc03c1e11b8906308f44d0369ae0712899d752478181b0a25b593e00c1e06⟩, ⟨0x32e1858bf85b22b41550a144f026912e893846e21910107ac3b81d20d68508270113077039017e0ae04e82380d205c02780e804a000, 0x19e98c5b89c00184235b07b0013b181a0f5001f56c27949748c611c0c865c70209950f8e961edd2d24781a0ea010b56026804a0134022000800afc9e9e0600060f7d6c1ca01f6c60682960f4d6e19a4acd261260f0002b5742961493b2ac1d55746d3121b9⟩, ⟨0x36a1ae8d3067a3331870bfc5b42cb1608a704ee25211b88803f61be0d8067c31c1830b8052c2300f3068027410c07702900bc014000, 0x3c52526930930340f2002ea4d24800503bea4c24c0d069c223ad0006073d4c21f068ebc1a4253c0e1a681bc028d4809fd33a6c000e1e486f734b71a7049708b7a52047d38264f49c08da7000602bd38007d418b0005e9f810f55102694c2380030876b4003e9bc8801d085ece06⟩ ] def tableLRLRR : Table Block := .branch 14 tableLRLRRL tableLRLRRR def tableLRLR : Table Block := .branch 27 tableLRLRL tableLRLRR def tableLRL : Table Block := .branch 55 tableLRLL tableLRLR def tableLRRLLL : Table Block := .leaf #[ ⟨0x3f91e90ed472037f1ba8d405e62e716d8ad852226c12388903e81cf0c005c42b813708903f41e40cd054020c0a003b017007c022000, 0x10a40d05c9c018524e108d221ac9133c0c10ad21bac06d41b60004002852c1cbd3c2342304530a4eb214808a358107d20faea41820ed7071bf9f870328717f9d87828003cd5c116d45bd70000c287a7d94d98ea9849e09bd5807104deaf7d957824034826356000c277a78256096d5c10709cc103a74ba53d0a4e24c10dea69⟩, ⟨0x4cc24590f07be3d51d80e2c6402fb16b0a9845a2100f987603961b00c985d82c815a09a84a820a0ec06382d014609203680e803a000, 0x385dfe3000e01bd39c2cff10004fe1c035a73855fe10005fc28064dc5d3c0c000c2cdad3852163d8c1260fb88f4c75c16ad5ac2dba707ba169d483f30b4ea7dbf8e805b61e0b16ac5ede07441d200240b485a74f294972992a5194807c90983301fc90901a4494c8602ca4b84781824aa47b5d898248a473590602e7a468246d749687b834bd1a4213819b4e10940ca0ffe9e1283a4f0ac0f27⟩, ⟨0x3901b58d1867831717b0b4455828713a09844ac235108080c3e81e70ed87383521840af84b020e0fa06a82881300810380198082000, 0x618ad69c7107d6c60639360f8d5800f2559ce4886175a718c4b1a738c20c5d3da0897d51382403b916d6007c4a5a7f14ac49714e2338a610c002753085c36ba986d0007d4800d1248003a70016248d4b89c00185c35707142de0016aa0686b74b0267818e3285ab570013fc80021c31a7⟩, ⟨0x4112000fbc7c43bd1d90e8472836f1b28d0065e30a1728b0853a28613088f84322020d585a82360cc05f82b813a07802280c801a000, 0x126692834b8a61a7001f57825b8d6c27868c003d6c0c000c343ab813880094b26ce19e00075a001caa644001866f6747ee94001866b5a001cb4644001865f6747c6960530282566b9f23ae56c3a050813c1f672ae9d02783e800284a1026d3c1f281e2098000c24fa7d33529a524d200fc247a7007a122006b4e1f21c01b83f756e27⟩, ⟨0x2d51528a5050c27312f094448a23b10b08243c81c10db865030a1780b48578296138097042c1f80d906602a40f206f02c006c01c000, 0x183200fe1e30e3669ba1aca44d0229d84f08d03004b0e16b5c4f0e00003ad011e5eb2303008b2f18b3893066f4938251d45e428781803596cc59c47001e5ab16e27000e5b317967cb5800b15035223a5c0a800400585bc3f19a286⟩, ⟨0x2fc1648afc550296146099c4ba23810987f03ae1c60da86983021740b3855828a13409184581e20e706102c011a07602980f002e000, 0xa6ca9b3000b550349afa52e91e0600129add740d4d58005ae00069aad6499fa5a6a0011d7699a4b0d261269a4002f594297148d1b2ace4306cb93c309e99c000f5d0300034cd6b0b852000f50f29270694007d41ca49cba5a650001d749bba5⟩, ⟨0x29814089dc4c023d11388604121e40e086dc32417f0b8058829e13c09884901fe0f5068030416a0a204b82100e606602b80c804a000, 0x93eb4b0349f3a5000e03713810c354493092c075397acc0200070f0330114e46b37d439e49921a264486c8784cc27005e9c1d740c00ad37fac3893c8c68a27049e08cb133e998e2380074daeb1c4e000d369ac⟩, ⟨0x24911c084c40c1e10e506cc3401930c305e82ce15c0a204c4234102076838019e0c205a829812208203b01ac0ac047016005c014000, 0x3c690006229d6b8c4001889b6729de966dad2e9087a14b0a61183644e26a0828798513298696124a1f2394fe292834b8a64cc69242b152612711b048342a6f244c102a794154b89e06⟩, ⟨0x2da1668ae856029d134091444020f0ff07c43981c10d706842f81720a684e822a0fe07a033c158087038017409c043018007c014000, 0x184f71a36060d51600186a0000043000cae30e95cc489ad9334941a5c53120000fabc126c22d84f11e0007ad81800188eb5720a44001a7f7673716960688d4001d68007611910006232d9d09fa54490f91270486489873689e99e06⟩, ⟨0x30917c0b4c58c2a114b89c84ca24010d88383d21d60e606dc3401850bc05a42b414b09304642080fa07282c011606802180d004a000, 0x3c6ba9612e2d9b09e267000f5b030003132ead862003c4c5b34b6ea51d9b89e26000075b11a460698155ce13a5066094f466c14db126924ce16018ead84e1dead8181b55600015e00000438940001d6800659191005e24dd9ec49a4934340033ab⟩, ⟨0x2bb14c09a04ae24811e88b842e2050fd87b03c41cb0d406782f216209c04b42300f306702e414408f04081c00be0500158078022000, 0x66078b98100b40158ac833e449c127126fa8669ec8f03544981a72bd2e7d00038781800189f35a62b34400f250a347c4c0faa700fa277d6804f13b6b41894f3d1b343a43c90d86692b34984989b800ad5d0a58533e6b⟩, ⟨0x32e1858bd05a22b814a89f04b223610987e83aa1b00c605d42bc14509004241e80df06602dc14009104201d40d405301f00d0022000, 0x3e1dca4b2da5063f86f297142e906262c3138770e905be2bb138ad05b627158002c480da3a6a6962af59534016bac3436e090703558f5b533407e5ce07d4535adc9018fd86a90ba5486c8733955c43cc73893066f49382435865fc0a9e0602acc17163867⟩, ⟨0x26912e894047222810988243e41e80e8870836a1a30cc86302ce15d0a304d4248115078038c1ac0c5056026c1040750280118042000, 0x108ce29965b4ba26713b33c0d2c9e960696574b711fc525c23c0ce29004ea84d740d2d36974cd25869309353f0017aca14b8a468d815caf2183667f1be184e001d4edae818001a9d3580207bcf2⟩ ] def tableLRRLLR : Table Block := .leaf #[ ⟨0x1fa0f8076c3981bf0d9069832a1860bc85b82be148098049022410807803641840b1052025411007b036016c0980410190068016000, 0x20684a53ee47a14b0a6918ecd2d89e4cd09b924cba3a5b04687a467091e060c848a96934b2f769734cfe295c92e29a3318497934e649c1271252b9a21b13e26⟩, ⟨0x239111082c3f01e90ec072c36c1ac0ce864c2f81670a8051824210c07f839c1ba0ca06002a412808503a019c0aa04b01e00c8036000, 0x126d6964d4d2cd487fc934a67f148c199e06c893034b93a5a1233cb95a681800797235308aa7f1487e343c0dd12260696ff4b632a7fc932a67f149ec8f03544981a5b9d2c6602a7⟩, ⟨0x3731a90c946362f614f8a4c50e27a137098c47c2190fa074c35c18d0b4051c24c11707903841780b205082280fa06e031014c060000, 0x1ddbd9c00656002acf031765193eb40020020018012a2c005c3d23523699b11b1346404386b49e68c7f5a000c63dad87d00cb8800318e6b40066dae20084633b30019b1b3cd94d9db4c23800318b6b46ce2001c627b381860d726de9584f292e918c2380069098ba4180040058a⟩, ⟨0x34a19f0cbc6282f016c8b0856a29013a89ac4a024611088183c21ca0d286002b614409b84481de0e506102bc14008b04001ac042000, 0x2918c23806230b88004050a9fe74b328e95c4e000c687ad0342e2303016130b8180018cfb5a018c4440018cef67318e9633a00075a000cc03b10006337d9cc5fa5713800319aeb40414acc8c0c021a5562c3e44c2a681d54e0989c55801c01200aa8e002f0e0193e767⟩, ⟨0x27512908b444620c0fc875037e1a40cb86082e81610a704f425e11c08583e01ca0da06382e012807d03601840a0039017807001e000, 0x1990e441448da367035037a50e10e000c6cbada1e58ad182a7d330302a7086bfd13eb2247cd314341c89df34fa48be91178245b459c4b02cbc030a99834a766bc13226b996b4b0348e8b613ca4b⟩, ⟨0x2e616b8b0056c29b14709cc4c824f118889442e1fc0f086f035a1880b2850026c113081037c15e09e04782100e605001f00d004a000, 0x2b24cb02c7818996285b09c636085e2a6bb053c402098f88db43425e50700c820e08f46fbad308e000c6f7ad000cd5b22019c6f1b3818063353c58f99c003351c5cd4265600dc54599f224e091934852a64d8d2f11e0634931b58003ad⟩, ⟨0x2f51740b0c572294137892846620e0fb87703821af0ca05c02be15009d84602160e606182e412c08303a81880ae040014806c018000, 0xc27000e3a9d6c0c000c74fab0006574d880031d26ce572d2c746000eb736b68c562f0900d0a130a834863f078dc823d078334ae490725380966a18b71380031cbeb403b34dc8c0c04e9a5e2c3b44f50dcd227049b92cb1b418f0431849c46⟩, ⟨0x3391968c8060e2e215e8a284ca25612188ac42820a0f987883b01b50af054828813409184081be0ba05482100e606202a80c004a000, 0x188ce29ca0a7481932cb6a6595002352003cd22000e9c0069a4352611c3e4587a3454b1ba581a58dd2d099e06a99805f16099ad5000400400300261f11aa86fac6817304ac8359eb48e6fc380031d9eb478e2a94c761b39334941a5c531d6800fabc132bc800fab⟩, ⟨0x2ba1538a5050226812188e044e21610387e83d01de0e786a83261890b90534268101075034418e0a204781f00e204e014807001a000, 0x25744c44890d5136020eb003e6aed5e09d835cc9a6f23f8a4ba47818c248003352eae6a3d2c0d3506940019a974e0342eb02800019a8f553556966c05cf03013934deaef044bec89c1200eaa3e2c0109a6b4fe295892e29⟩, ⟨0x25a12188d44281fd0f5077439c1c00d6868031e1800bb058c2a814309a04a822210007383601980c105902340d806202080a8026000, 0x339e64f50c390832e7c8598f29a1e852712628681513e292934984981a05449a492e34984981b06f5da3469bbbf77b627e4684d492404f8fc75a073a02e7818040a6dd5370e966e1d2e2689⟩, ⟨0x25e128891046a21a10588003ca1cd0d486783061720ae854c27813208d84181f20de06a02fc16a09e04381c00c205602080a0014000, 0x1c53266309206a4426b24e0900d161303a511410080a0f89a820284e099e84ccf034e27a581a72ad2d62a9fc520d21a9e069c254c0d3836951ef63ee10c7c89382418953a5aced03a41b1e06⟩, ⟨0x3b21c78de86e035f1aa8cc061a30016f8abc54a28e13989a44901f90ef07303621700a584601fa0d905f028c0fe05b01b807001e000, 0x15cbbabc689d19e062834c0c000c88baddd12b7f22e27001addb5ee895b8002c540d308696440183c0c2655af6b04581199c1c11a58af4e0183c265b069641a1208b2c4e040ce07a70502702d3827f3808271a7accfe0f3bac4fa0f58a9c1eb15283d5ea35083d92a55583d32ad5483d301907f14ae49⟩, ⟨0x46721b901c76039b1b58cec6162c114f0a444dc25f11e08643ec1d50d286082aa14b093040c1a60bd04682080c203c0158070022000, 0x6d34006014c38008027b5ac3ea4d121bc8da580058bd8796fb3321752289dc3b12b52091ac380452d5bc4c3a139117bc3ddfa6570e001de0e260cc007de0627224800777d89ddb6eff17bb5ddee2e53e526d7b4c44880070fbbbdd962c00653c00ecf0312b322b6b5395bb7c580074fe00fc3eebf0db4300080370f0980064d6ce491489fad8f33e449c123869⟩, ⟨0x3ce1d48e106be33a1968c205e22cc15e8a9850226211e889842e1fc0ec070436e1a00c285ec2b414509804942140da05501e80ae000, 0x1922b56000cd7fb10012487d98003243eb58620064909b39aeb4b2418003ad84a33dae9400192035a007e0d4400191f7673d7e94c23806d50b00da4070a9abb4b034c81a5ac0060f0367e0b1daf7c55386ca9c122fb342c559b5116ae1f6a3b5f014e1c050953da861d309bc8c3a5c4009b4ed4b224f79787⟩ ] def tableLRRLL : Table Block := .branch 13 tableLRRLLL tableLRRLLR def tableLRRLRL : Table Block := .leaf #[ ⟨0x31c1868c045d42c515b0a8450c26f12c09144762260da86a433618d0bf85d42a012f08503941800af04f02440d806101e00bc014000, 0x6c4fc8d3ea6980059f4f52611c1855700212aa6dad2cdb5a5d050f034cdaaed1c1790bd000400400300200170fc8d543610da4340c000c931ad9f701eb8c92c000eb40019ef762009c927b39334941a5c53248000fabc133620015ab61380072466b606⟩, ⟨0x33a1958c686202ed16a0ac4530277136892044a20c0f3870833a1780a984d021e10206e831815e09e04882080ea06802d812804a000, 0x2b24c099e060def0a316030ee7042709b16ff08e77b7e8373c0d2608003ad0d37087220304e792f81a3d6c97a000eb40019f9362003c975b300064bad6803ff75192e0001d6b8c400192d767405e9680cd2d599fc52b125c53066714ad9a40049b93533718013a9⟩, ⟨0x2f81698af056428d139097c48822910707a83c01bb0d006582e21560a384f02420fe06d034016a0ab04301ac0a4041014006c018000, 0x64ead6e48cd181a4e700075bd236c466943f4bab09026c20e10ea41c180fe9c1e06937c1abd680b970781a4dc071f5a08e941f224e0900f3e121cdb27e340203e6c1e060172e130300032696b641c78880c9ba635cd1220e7f331849c46⟩, ⟨0x30816a8af856828f13f09b44c424911207c43b41c30d8069831a16b0ae853827c12f08f04342000db06802ac13c079037812804a000, 0x158089a0db55300b1e06014e82fd5d39a5a4d38257e29d6030505da7017e82d016b4e06bb1eddc65d028781a0d65d61a086443c10de29a031bd53499a4a0d2e2993cc007d5e099ca004ed5b09c00393bf5b030003276eac0019c8f6202449d5b3⟩, ⟨0x288138893046a22610d88303ea1d70e686d83581950c105bc2b814909904342040f107003441880b205402640e805d02980f002e000, 0xa1fb4a0394a53ade0218f9127049c49dfc19a0758363c0da4132606a1d34b79a265644c44890d11398832c00fa1075782760d73269bc8fe292e91e063092000d071aba0db4b035067a50006838d381aecb⟩, ⟨0x23911208243dc1e20e5070034a18e0bb856428012d09004442060f007183481860b905402641100790378160092032011806001a000, 0x2d6a7a9f114f4821a9e11b830a1e066a50555458696523639f92898f102ee794d0f429389314340a89f14949a4c24c0d8a69349254693093037df8cd3893ebdb3db13e26c4cc29⟩, ⟨0x20e0fb87803921b80d5867031e1820b985882a614809c848422410707d83b81ae0c6058829c12008603781780a203c019008402e000, 0x2895d2d12fa5a37b4b9a67f14ae49714d198c24bc9a7324e09389324ad10d89f1342338a68aad2e099e84ccf035157a581a8c2d2ea99fc523666781a48d303513da5⟩, ⟨0x20d0fe07bc3b41d00de869832217c0b785882ae14209384482080f5072035c18a0bb05602881160730348158088038016006801e000, 0x1ca67f148e199e06d8513457e959b14ecd6a7a14b0a71348aaa5498153a72aa6286fc932a67f149ec8f03544981a8a1d2ab6143c0c8ca1caa47c46c463511e13362a⟩, ⟨0x32618a8ba05a22ba1558a504e624611788883fa1e40ed07043541890b4050c2200eb06e032c17c0a904f824010c06f01e00bc04a000, 0x78d601b1cc0036aa4534a07231dc2581bcc70018e6b5800c728305aa90dd2b89c00196835bd206f181ba005d7555e962e6272ce0031836722fa599d68162050d189a7002a8c3d3fe49a533f8a460ccf03644981a8b8d2800345d0005a783340c003516fa9⟩, ⟨0x29b14309ac4c224010988203ea1d00d7865030c1710b1853827612a08e84301f60e006282e814208e04181c80d004701d006401a000, 0x4c1aa61e0183c0c2252136b8df00110cb3c260d10e000cb87ad10c8ffb8a5202a7d218185534432702a7f2448d9a74cd94699b34c081d0b8084e1782447fdd71522f04c79ae060fa8ecb5b09c0123aad708ce27⟩, ⟨0x30417b8b485622a714409dc4b024711c08b44381fb0f4877c39c1a90c505942b214c096840c1d80dd05c02640e806a025807801e000, 0x71380032f4eb4062002e30304affd4b1d3380fff94b8b33e449c1238699217f7b69788f030c1a65db00075a007f954491b97636708ce27003fc297fbff6801a555c9a5308e000cba5ad003faea201a4b9fb3818197e8a5c73018089d9cc24cea6⟩, ⟨0x2ae14989e04ba253119085c3f81e10e9071c35818f0b5858428c12108883c01aa0c5058028811a07f035017009603e0168088016000, 0x39383e3f210bb80060f037470c6daecd6084d7ecb098de320f9127048071309bb986968062d8783c0d15c2c24114a49f4f858d22427f6700cfa0f5d8d440a9d21819553d433922a7e861934d99aa0d3824bd065c26⟩, ⟨0x22c11008583fc1e70e806f43601a10c986002e61620a9852427012908c04241fe0e406a82e81560a004a82200e204c01d80b0042000, 0x84681b01122a958d2d2e3a594d0f429389314340a89f14949a4c24c0d8a693492546930930365b350d389398ca43db13e26c4cc29a5034a0c6cc1fad8534ce49c12323d276b⟩, ⟨0x282134894446022510607ec3cc1dc0e286ec3481910c205b02c414f0a284b82260f806e83381860b204b81cc0d204e01b00a8024000, 0x785d303a511b20204e7c4dba04e9c133d0999e06a5d74b035319a5b950fe290d468781a6244c0d4b46941fb583ed05107d98260f9127048e1a76bb1868075c0483c0dac04427c72a1f11b861a1e1447⟩ ] def tableLRRLRR : Table Block := .leaf #[ ⟨0x34518c0c0458827a134896049223a10f88103d21ce0e2067c3081600a3849821a0f406982c8122078035817009e0420198068016000, 0x33562056aa6cf4b8581a187383e387c2b8d086861cd0f861e58d2b06988927127c358858077307ab77e17c900c1e060772985d5b5f69076b6cd9f07efcd73e9776639fbf71cfd7f8e7eafbd973f673ecb9fabb361cfc818e7f14ae49714c998c2483723a6b24e09⟩, ⟨0x2f21668ab050e27d133095c4642230ff07d03ce1d00dc86a83361760b485682a014308703dc1ac0c705e028410005302480a001a000, 0x19a2b5a00339771002a687d9c0d4fd694c2380033426b4d288007340ece06615d38da5a7cf4bb126924d9540036ad84f1936066158001388000010eca4d2cd908359f224e0900c26133653636d0019ad101b3c0d35620b6900c120ec2b⟩, ⟨0x29b14509ec4ac24911e08a442c1f10f206fc36a1900c1857827212c08383d01d40d706202dc13e08803b81a00ba04c015806401e000, 0x159a4c24cd500056ae852c294c91618a2ee92009772c27000e6a1d6c0c000cd3fab618801534e6cc01e85b366e27000669ad6dcc9181b04458608761586ce4553b7a58b33e449c1232699d0010b69788f031a49⟩, ⟨0x2e11650a9452427512f091c46022510907d03ba1c60db86a83361900b9855829812b08903c41b00cb04f021c0f405501c00b8022000, 0x1080b4412dba3b67caa264a056571cab2e30465838acbc1218a2e10104caa8274b502e94e24c19bd24e090223d95c7200c9e0623a9f9b580c639c00e7ded6031ce7615800cfa0465aa9f6d2b89c0019abf5b1805f3181a2f0b6578669⟩, ⟨0x2f51758b1856e29213d895847e21a10187d83a21b40d5063430016d0af853024a0f4073035c18c0b5054020c0f006102a00bc04a000, 0x1030003374eae92880037566ced13d28003372eb40ef6880033716ceb26d2b89c0019b835b3083f3181a6007656c27d6d17b4357487008039624e00804764af27921bb53499a4a0d2e299b44007d5e090d4596c27000e6cdd6c0c000cd97ab⟩, ⟨0x2dc1668b0855a29a14809bc4c023f11908443c81da0e186d83221700b3051427611607a83401720a204882000e604e02180c804a000, 0xf4938248895700a1e0601f978b59c47003976b5b89c0065e2d72e72ee0056a81ad2cd2b89e6fc00075a00d2e57181804e5c2d7034dee000eb40065a6e2007cde9b303f18ff7f3364cd25069714cdde003eaf04b59ad84f3758007ad⟩, ⟨0x2e91680b1455829514289b84ae23a111884c3dc1d50d8067c31c17f0ad053428012708703a41b80b705682200f6056018807001a000, 0x12b26e9c132952eb0325932d8d2a43263c964d4c314af8e165c16300033906b406d9e202f4e3bb3c334959a4c24ce340056ae852c2909ae7580d6baeeda294b72c27000e713d6c0c000ce23ab618814d3876cca4b81cf6739aab3893066⟩, ⟨0x2fa1708b2056e2aa14c8a384ea26a12e88e042e20d0f6074436018f0b1051426412808783581900b804f82180da05402180a8022000, 0x537dd3bc26e91934d99aa0d38276a11d7099c4e000ce83ad022a81b8c0c0fd4ff6b00f3e0e1a54fb6ba5d1d3b386652e0e959eb918e4f80a1e0676cd75800d2700115ad9e8869cc6b203748158ba406a5cf3762ebaa7340b4ba40651d32ce6⟩, ⟨0x3661a78cb86323081678ab050e26a128890044e20e0fa877035e1980c585d02ca15a0a184882080fa07182f813a07803080f004a000, 0x2d4bd2cdd974d9c1c553f8e616c032a7b2e6b38006e11875c26764d690d71c9c0611d35ce6ad8374c1563a67ab5d73b38eba759ae2dcb3d6b0c993308b4c7c8938240d8648704e65b4083aac78180d464cea2000eb400671ee206d4e9db303218e02bce9bad03898e031ce97ad⟩, ⟨0x35619a8c845fc2ef1720b0453c26e13209044381f90f407783721940b7857829a12008b03c41a00ab04e02340d005b026010806a000, 0x2904006cf07a8c008df1e1f224e09000ef8713f53dfae34002003def61e06000ef7712000cf01addf7fd3b23046781a77c00075a000c9adb12eba779d98e19f78db5334ea0056781a77500075a0033d7710026772d9ec49a4936a8800dab613c64d8198560012c20000143⟩, ⟨0x4aa244917085e41f1fe0f5c76838f1b70d2c65030514389cc4be24b11708443c21c00c9859828a122079030813e07a02680b001a000, 0x29e0142cf4ef3d409f670019fa0c3b3da63000798587bdb5cd4d7000799d87bdadccfd74cf2b659feb2524c3fc5938b872ce76e70e5dbf479654002479cc70008006604c3d9aa35bca35cfa364d8fca71ec96539882398c870f56062f67aafa94316b3d5703098ad9c05e822cfc22503e1f843c0550361f818014e10e1f869be4c3c95200269e97273c00ecf3833a7678420068f666⟩, ⟨0x7f43ee9f4cf7879d3841a04cda5ca2d294e898243a1e78e0068631e16a0a144cc24110f07e438c1b10d386082be11e07d82b00ba000, 0xa3d34b0351f1a5ceb9ae8f044000518b907041b9112b494c81321cdf1a7821c0018c5883720da6f722216919ec74ffb68c48dbf524af477c41a906937a910c4b5ad1f3d7e9e35b8d775241991084194c7331f4c77379e9e63b20c888320c663898f663a9bcb4f31d4c3241891044184c6f31e4c73378e9e70f98e263698ee75a9d5e724d3c02500a402b31d12cba74abfe50f5c97ac38f7731ae9d2aa7b8fc91eb12f1878ed9f911edc95425df4e007d951c8c79edf5bfeeff6e2dfde8017572998f94001e9c1cd4f0300033d8eb5443e2bc8cf2cf9b00492cf69fffc8f2c5acf33154c4f052c005a7203a00198a662659e34eb25aca740eacc8b2a2ca5a7⟩, ⟨0x2d61608ac053028d13d095449022310607d43c41c10da068c32c1890bd056429013b09704341f00d704b01a40bc03d0158084014000, 0x18952f06ff8448784de0a240019f975ae3100067e2d9d227a5a45f4b8921e33403ecfe292834b8a70cc6924026322d30869a14b8a4006312d3158680018c2b4800c00400157dbea22fc00400acf09a2f8006d25d23c0d47a69606⟩, ⟨0x24411088483da1dc0db86b433c1870bb059c2b014b09c848821610107503541900b9055826811a07c036818c09c03f015006c022000, 0x3dd8726611c001a0235a3471000e805d9c0c792e935d28c19dc259a4771595095499696930d2c0d496e970494f42938930437a9a7c525269309303502aa4d248532a4c24c0d526d⟩ ] def tableLRRLR : Table Block := .branch 14 tableLRRLRL tableLRRLRR def tableLRRL : Table Block := .branch 27 tableLRRLL tableLRRLR def tableLRRRLL : Table Block := .leaf #[ ⟨0x2f51758b1856228c133890843a20e0ff876839a1b80d706642c81530a104cc2440fd07703741a00c3057022c0ec06902200e802a000, 0x1030003414eac1ad62000d04db39467018d9800327e69e4fd945f5bb126924d2ae0206ad84ff06ad8181f15600000e0000143f4349f1a57248c1a6817003357a126d0d74297148382aeed000ec98d72ad84e001d01dad818001a03357402b1⟩, ⟨0x2ce15b8a4850a26012b08c44481ff0ed07343501910c385c02b614c09b84b022e100078838019e0c004d823810206c02b80c804a000, 0xce65e07a0266cd84e001d08fad818001a11756c31011e842d9808b81b6cdc4e000d081ad730da3033a82cb07754f4a6e7654e09eb55581a4c7b94d86692b349849a0c800ad5d0a58524e4ab07155e03f2906cd84f4158007ad⟩, ⟨0x3bb1cc0dd46a432217f8b70572294138890443c1fb0f6078437c19b0b5858427c13408783141740ac04381d80ca056018809002e000, 0x6e2f6b78bdc56dbb17b0500b61f6a3b5c9cfe1e739b5ac4ed536b589000ed630f431b6c7adda480430fafed7e9fd30e00eda4e1c011b51c3e449c12001da7627699b7cc68004007b4cc3c0c002da562606466e856d6cecc0034d300101c30f09a686a149b3ad6e19a4acd2612684e002b57429614899ecb⟩, ⟨0x47c23391088023ce1e18e787183821b58d846943401948c105a223c10e87a83521790b2055027a10006e82e812e07402880b8046000, 0x8ac3400032046a4006002000ac1b751201000200169e134808000ea4ba4781a8e0d2c0d47069606a3934a45c47aba790048b322ef4f09e816f1e611230014cd4a7ccdeb37c2e8fa7e49c7a8e447b6a72fc69db242239b5297df4f3d5a7a824b0e0f0a9ecc6eadd933d1a78808011d87d7b6be31201f9d4e1f5d0004c4ed6c00b890026d6b12001dab6261300076ab89⟩, ⟨0x2a814f09e44a822f10c080c3ec1e70ed07343801ad0cf062c2cc14e0a184c02160f407082f015e09e04882100ea05001f80c804a000, 0x818001a2a756000d21bb100068a6d9d217a588b53f8a5624b8a60cce292f51311243b44800b8406bf01121e135c289c1f0001d6d1eda5a490f208001fa7f14941a5c538663492004c81da98434d0a5c52000c815a9⟩, ⟨0x2da1660aec55429b14509944ac24511c08ac42c1f30ef07443581a20be85c029612808183c819a0b6052825010e06202b80c804a000, 0x2886f4349f1a57248c1a68c5003357a12710d7429714834aafcb800cc98f3aad84e001d179ad818001a2eb56c3100868b7d98013ca99300068b6d68f9c4001a2cf6748ae964cd25069714d15e003eaf04d224003ead84e001d157ad⟩, ⟨0x2bb1570a6c51026312b08c444e2020fa87403561960b885802a214609a84401fc0f407283001680a504801d40bc04701a00a802a000, 0x30a539458708bc358041d9b09e8e5000f5b030003471ead862008d1c1b300eb0cfd983aa9e8de00db5b1267c8938246cd385e8013ad2e11e063c9385c800bada46308e0d8abac1095549a696932d2e0287819999560e6a7⟩, ⟨0x36b1af0d3467c32d1900c2c6022f21740b4457e2a814f09e44c423f10d0684234105070032c16c0ab04b01c40c605202080c801a000, 0x719b68cff92694cfe2918333c0d912606b55f4b0a23dab1a6818001b55b536a9e9400343fc3d1f4a25eb40024ee1bf779cd8281d39bf09fdb4e000a76e3a637ecf39304e3a6b7df3fae9fc6ecd227c8e7a9a6354c542a704c3faae06700074fb43619a4acd261268ec002b57429⟩, ⟨0x2050fb07943b01c60de06b434618c0ba05a82ae14809d84b824411108103d41d40d906102b414209004181c40ce05402280b802e000, 0x1f92654cfe293d91e06a893035afba5b3028781a8a43ee47a14b0a6918f8d2d89f0cd09a84d36cae96284cf88cb267f1497c8f03066896c556b2e96d67d2db5da5⟩, ⟨0x23911608504141f70e906ec3501950c405e42d815f0a804ec25812108603dc1c40d706102c014c08f04281b80c804d01c007401c000, 0x1e2908f287818384480038876badbfd2d5e87c310fe295c92e2993318491b154d649c120dca968a3468919e13540aa4ba4781ad8fd2c0d6c8e9606b6a34ad44a7841654f0a9be86⟩, ⟨0x2c51590a7c52028413889984a6240119088c3fc1f10e6066431e1780b3857029e12a09003ec1d20df05d02c011606602780a8026000, 0x15622574449c49e4635d13824f646442879a18e2380078946b1c4e000e24facc497126000b55035bafa58133c2661380138906ba06001f11ed61748f03000988d6ba06c460002d7000388beb2dc9d2e22a000ebadf1d297687⟩, ⟨0x25a126890046822110b07f83d61d40de069c3341890be05bc2c014b09e04c024a11208183ac1b00cb06082a8140089033010c026000, 0x2852c298460d91389a820a1e6144dc49a584928798e53f8a4a0d2e299331a490a0549849c46c121e226f24684143e4289713c0d6f769606b7b74bf8efc5e1fef3f89c3fde3f11f85c3eb887⟩, ⟨0x30716d0b3457e2ae14e8a404d626012689004362110f6076436818f0b5051425c11b08604041dc0c905a02a813207402780a8026000, 0xeee00159f8cd943499a4a0d2e29a690007d5e0935916c27a680003d6c0c000d33dab8052200262c3b3a66c001d68003071ec4001a66367808e951143e449c1218a2600e001f5a2786781874d2000d31fad0006009d880034c66cee2ed2e9087⟩ ] def tableLRRRLR : Table Block := .leaf #[ ⟨0x3441908c405da2de1688b1856a29013689204622040fd073436c19f0bd05ac2c014f09503dc1da0c805d82580c605902100bc04a000, 0x929002b1a3a6900449431ed89e8cd09a04d2000d387ad000c92b22000d381b3ae1b4a007d5e0036781800400bab6d55c0696b80d2c06200669f224e091934c06307feb400180b0007d3c0d015800ba9713800307d6ae0f583e4002d540d8146964143c0c009c1e9ab⟩, ⟨0x26712d08a84401fd0f4075c3901bd0d406142e61690aa051423010d07d03541840b5053026010a078033816009c03b0160064014000, 0x78a400202c8b6e1e0601545b31341aa7c833e449c120cea9010c9a71a7b23c0c2c6a9894c043d8e03d6784c1ba1e9d9005f5b29a1e852712628681513e292934984981a65449a4914512612606⟩, ⟨0x37f1b70d7c67432d1900c1c5dc2d515e0abc51428012d88e842a1f00e886b032616e0a484a820a0ee06b833016a0900358118046000, 0x161a4c24e3a0005eb2852e2901c07604dc3c806f9d9696cf861380078e46ba0600071c6d6008158bc80b795bf68056caddb4131fd2920554007a9a99874812f000ea6000025b53d544ad271bd025f592213260c764e09816196000d3dfad00b60d4d8d3dae80eb62e316fc380ba2df87⟩, ⟨0x2e11650acc54028d141097c47422d10f084440a1f80ee86e032616009d84b0236106077839419c0bf04d022c0cc05c01c8088022000, 0x1695696d37d2ea0897e51382401d4b9c5802173ee9fc52b125c5388ce298f82a1208f5a39a9b46c008d4800f73a0003a7001ae73d498471b358d19aad13d2c0d689e94c2380035096b4c28a949507ece06a51000717685e9719cda669⟩, ⟨0x264129892046a22a10e87e03ca1db0e406d434818c0bd85b02c215009e84ac242112076837016e0a004b01fc0e004b01e005c01a000, 0xa834e094f917099c4f5228003adbc5230361e8b0c10e3a6b659c8a8c33e449c12346989d1a5f23c0c7124001a8db5a38710006a33d9da6ba581ad32d29847a8bc001d69a51000ea2cd9c0cc2b⟩, ⟨0x2d71660aa4508275133090441c2040ef874c38c1af0c885e82d614609784282000dd06402f014e08c03f01a40a8041016007801a000, 0x609005f31717760800fa7b4930926d3e002352000dd7a001e9e06baec005d4c23389c0c965c8a2059569b694c23d4b6000eb40c468b96b52c6ce06e598107160d4a9e460a353b60c4a7e21a60d5214aa90f50e7caabf21864d3666⟩, ⟨0x2c21588a9852a28a13d895846620e10207843941b90cb05982aa14609d84a820e0f5075837016e0a4046820c0d806201e8098026000, 0x324d3826e0d7098c23d50a000eb4003ce0c880075416ce06000f377176ab6947cce001e6d62f9b200b006e2a2ccf9127048c9a400dcd4c69788f031a490006a74d6e8291b5334b035a8fa5818001a9bb5b761b46ad44b2889⟩, ⟨0x30b1730b645842b815089b048e22810187b03b61ca0de866031a1680ad84d825810707102f415409504001cc09c03b018807801a000, 0x5b70040ead84ffc1b360603f59600057800000c3aa90001d6801d9b510006aa1d9dae7a59334941a5c5354e800fabc136cc010bab613d532001eb6060006a97d580036c9ec407faa53674ba2c1894eac0ab713d520000eb59d48c0cdda2c68d3a66⟩, ⟨0x272129890846a22410c87e83de1e00dd86902fe1750ab052426811908603ec1d80e106802ec15209f04802180c204c01a807801e000, 0x37a01ca58d1a70cd7269c1202b77d2e131847ab08001d68182d11baaabfd9c0dba01f52dc4e0f8ab37b3955a668c33e449c123269d475697c8f032a4981aab000075b602b1b79b4b6c1697624d249⟩, ⟨0x2fe1798b905822a314c8a084d622a10e88383fa1ec0ef86e835e18a0be856029c129082037c17409904401e40c804f0210074014000, 0x3049a4905f55f31a07c0363c0ddc0b26ddfd2800200100eb79e69f8cdea9a4cd25069714d5ba003eaf04dbb20676ad84e001d5b3ad818001ab5f56000dba9b10322ad4d9800356a6b40c62bae306695c920c6a752155b89eacd00075acf24606⟩, ⟨0x3821b18d5069232a1858b845ae2b81570a244d423510b07b03841a30bc855026a12608083a01860b905002240f8063019809801e000, 0x46eea3e449c1200775d27e78d3a6801007ba68f03002dcf4981ab0100075bf2066d4775ee2dc9b7a8fc3f75d1f73f0edd547de7de38751fa1f0fa3eefe85c3a8e000d5f3adf8001ea2611c001abdb5a0396f1000eaf3d9c0c0390ebb7af4ae2701c575d60818800ac5499be8863e449⟩, ⟨0x273132096447422710e87f83e21dc0e086d03461940c485e82ca1500a304dc24010e08103e01a60c9052024410805f02000d802e000, 0x7a49c1201bf8d2e6143c0dfb81a52dc4e0e4ab5f12955266d833e449c126926b455a3066781b924dc23a53591f91a06ac5001cd6c0d5890003ade9922e27ac3c001d6fd60075181bea801a5dccfa5⟩, ⟨0x31817c8b505762a013d896845a2030f8077438c1a30cb05fc2de1580a684d823e115078038c17c09b04881b80b2044018807001a000, 0x3f0a8f5a49019ad01a173a8a3d0d0462b46d6c33393d9e195c99c92cfcbf94722a3c46891411206e31c0a35d3c5d1980ca64cd634c92c9c132e432c14563c0d59b0083ad713d668000eb407f5c7c8c0c040ae2e2e40d52146a90d90e5c4ab3893066⟩, ⟨0x2ad1510a544fc25912308cc45020f0ff07b03ae1cd0d4060c2e41650a8051826a12b08303dc1ac0a904902200e205a02800bc03e000, 0x189985371c6940c4ad9f5b992263844e0910c275e29a4a8478a4b340d993116bae22d3325d62e19fc5227467818a0d303663c456eb0c23800c97dac0064b800ed571be9606b8ef4bec0b1e060ac928b5d6637c4f8d49⟩ ] def tableLRRRL : Table Block := .branch 13 tableLRRRLL tableLRRRLR def tableLRRRRL : Table Block := .leaf #[ ⟨0x24d12108c44241f10f3873836c1aa0c785d02d414f09c049423010907d83a01b60ca05d82c414009104001c40ce04801c8068016000, 0x18246cd239fd9534078c11cf037083ba4dc221e9184c4253b3882a7819706f555c9fa594d0f429389314340a89f14949a4c24c0d8a693492546930930379919d4d3892333cbd3db13e26⟩, ⟨0x3881bd8d5869633a1968c205fc2d91650a9451c28412f88e842a1fe0ef870033612208904041c00bf05902140f605a02080a001e000, 0x714d752003eaf04b61ad84e001d74bad818001ae8f578944001cd9b679ab696060006b9ed68003076ec4001ae6f679a869769ed5a4801da3471b62b98d6917e3be007040980020015fe045e69e831a71cd1a119d670148ceb3f8a400404a332cf03008465da43ba9cfd24ce7e80973e449⟩, ⟨0x37f1ae0d1464430f17e0bc45b82a9134090c46822910c07cc3801b60c886142f015309004241f40f0065826c12206c0238088022000, 0x714400389ccff4b073e27e1eb044be889c12748ab1dfa1101dc34e3bea0d10878edfa7843c008d3e449c1232698436378d680030850007a781a10800175308ce27000636ed5c6db1b88003aacdb34b491e06004a369d58004027597c3c0c000d75fad0006365d8801b5d66ce4cd25069⟩, ⟨0x34a19e8c6061a2fc1778b2858029b146099c48421d0fc07843a41ad0c4058c2b213408e84401d60b805582200f206e02f80e8014000, 0x1c535f4800fabc12d46b613d7ca001eb6060006be3d5c251002f3a6d980035f06b4001a4e762000d7bbb3c6bf4a611ebdb00075a000c95db1000ebd8d9c0c000c957abcd2f4ae2700064a8d5c9912538015aa933708c01187c893824d24d24f250eb4003c1e001e1e06⟩, ⟨0x2ff1750b7c5942b514e8a304fa26612088d041e1ea0f006ec34817f0b4054428213608f83e818e0bd04c021c0c403d0178088022000, 0x6d9aa704eb92ad5bd4f3c450f06695c9206531c04c8ef756e27b000001d680a51dd6c60601763b8d581b0c7afec059d68596c7031993058d0980c363d7ea023eb40010052141d3c0c00c57e5ad1d33801d5f86b68817e098f343699a4cd25069⟩, ⟨0x4ca22f90407723961b30ccc6202e01650a9c4781e50e906fc3341790aa04fc23c10f08103c41cc0d905a023c10a060024809001e000, 0x8c01ea3a0003160ea6043d3d3bd94005ac1b1cf87a5a7f62d8300140780450f470e3d1f8a61c79a3d0f89e1e19f8a71f33d3800be7d87f978007e7b87f98618469f36c3a87f1812090883462318820a5a7000a3f8f99e0f47e000b0f18c9b239313410b4e9c0066d6ce4db5835adae453cf181359cf24c99a18d3099c4e000d825ad00e2506d8c0c01cca09ab03158e01d4a05ab07454eea6⟩, ⟨0x44d214101c70034d19e0cb46102d51590a3c500276128884040c1e10de066430616009804681ee0d2063029c126088034811004a000, 0x1a0914f7ac91793db4a8ce83d46726f7d6894cf924ef1c124ba7ad0e53fb2e74f0a699c9365b24cba7497ecb549934e00193261e4c3979c5d24781ab3e65db5729a8002928d673a781ac3b00075b59cb2e5b1000c99313242c3487a47f878e2487647d87800e180036fdc3d866b7f6b791800fbca4fb5a3426003ee68f6169221ad0038968f6158f29ad⟩, ⟨0x2d61638ae855a29e14689f84e626212088c844c21b10607ac3bc1b90c305bc2c413d09984381c80da05a82400de06201a80ac014000, 0x1724b8a68cc6125f4d39927048d1a691a62ad0d89f91a135249a3e980b3b89c001d08f59a116846000eaaf6cd2b09ca8cd07f5d031515a0eeb000cb800747818a83d06b5c5416833ac0058fdb3f8a400400e3eecf0300147cda606⟩, ⟨0x2dd1650ad4544261129091447422910b88343ec1ec0ea872c3681a70c1053c27012b08303f01ae0b604881f80d606001f807801a000, 0x192266f4d018224007002400bd1b350d89f4cd09ac4d25d23c0d7cd69606be6b4b035f39a57138003a216b3441d108001d55f23a5613e87c554eba062a9f43cd6000d5059caa1d0eb5dcb226bb44e09014aa3b64ca80859f34cfe29⟩, ⟨0x26e130093c48423111108604061f40ef874038c1a10c6059c29e14409884301ce0c2055826010a078033816809a03e015806801a000, 0x2086f534f8a4a4d2612606a05549a490a654984981a38500275a0c4a9001e383d7fc2243c26f0512000d933ad000637ed8800364b6cefb7d2e66877c10fe292834b8a74cc69255644ca1a6852e29⟩, ⟨0x2f616a8aac52827d12c08dc4402090ff07743701a70cb061c2ec1510a104c424811708103741940bd04c02380d2056018807001e000, 0x1e22c2d34b8b5d2da3feeec903498e57ce91daeaf906fb3d094c9933d93824122bd2d91d8804fa7f4349f1a57248c1a6cbb003357a126d0d74297148302adc0c903b666f22d84e001d965ad818001b2c35780a46407701767824a7a149c49⟩, ⟨0x3831bb0d9469a3401978c8062a3041798b785a82c515d8a5850a26012488c844a2000ef875436819d0c1022c0f006502200dc014000, 0x389c7cd7573d15c668d33e449c1234698f3689c19e0658930359ba000eb464e2000d9b5b3c0d34b819695c4f66b8003ad81b003b8c0d0400036bc2674bd9d641c0b402cd7900f6800139e23c2a8a14f0440c36100089b004f013b27e57a0d3dc326e0a4c0f716967f1480083cc5959e06⟩, ⟨0x289132896048e23811688704021ec0f1074c3921a40cb85c82b6144097846820e0f2072034c18c0b505502240fc07102600ac042000, 0x1ff0703e15c668d33e449c123469047e61a27067819624c0c000d9ffad61883e567e6cf05cd2e0ada598354852aa43f439f22afe861934d99aa0d38240260f6d7099c4f6770003ad832013b8c0d06e0236b⟩, ⟨0x2b014589d04aa23410387d83d41d90e686e033a1860b8855028e12208283ec1bc0cd06002bc14808f04201dc0a403d0198078022000, 0x74f2d760eda5dd1b928f05e42b6782f82e214b38e1a7919acd3c8d130a77a15d4f14ab2c18d4e09c252b713da36000eb43f83e630307d06cac64d3666a834e0927955c26713da20000eb744d6303668aadc4e3e6b⟩ ] def tableLRRRRR : Table Block := .leaf #[ ⟨0x29314009c44ca25a12488e844a21410387f43cc1dc0e286e03261600ab04fc26012608083d01d40c505d82580fe06002980a403e000, 0xa289309388d82474d37922c84cf4269713c0d84869606c23f4ae270007505d66a07a820005aa81b088d2f247818006d3ff58e2781b4fb000f5d030003a7d6bb07ed2805ddd47f14801007bb28f03001dd749⟩, ⟨0x3511a38c986022e015d8a9050626212088883f01d90d3066c30e1620a184781fe0f20728368176091039016808e03a014807001e000, 0x103000d48da4001b5a35a003685710006d65d9e0f9a5bb9789b3dd75d85a6e7aedecfdb3c6d1fc1f6bf1947009de28e000c9a800169e136d2a35ab63b9eb400e8ea3dab2347eb40c6d2a3d0a585389b66814a4813d9a0068e04b66526124a1eee43f8a4a0d2e299331a49⟩, ⟨0x36b1a40cf86322d81618a804fa25a12608ec45421d0fc07b43b41cd0d406782f21660a084d822a0f006782a811207a037813805a000, 0x680800387819c44aa47576ba0003286191fa7cc9b340f290d8781db53f0f03a000e1f4869334941a5c536bf000fabc126ba2d84f6bd0007ad818001b5e35710a44a30d4ef670980067f2cf6b993f3ad0019ddb3dae24edeb4022a4ecf912704800d4ada6d1c01eda00200751d67⟩, ⟨0x4ad2280fcc7a03ab1bc0d4c6402b51500a4450a276132896c46c2150f8072c3301650ad84d82220ec06d831414407f02e00e4046000, 0x8308032638da8600434d5a7b43c018b5080074181a69d380822078988d905ed3c43311aa0bba787ea1fcd4d978d28d9cda7304505a32bccab0006d3c94a74f83166309388d592644cf0319c92a0eac00756ece66dca7fab947cd5ad39a8b28f1ab3a79478011000b4f0300036caeb4cd994e7634633321a71934ef230dbc700462400fbc6c4f12b7938b000f0c713b86c3706778d8b⟩, ⟨0x4f726b133094e4862148f686fa32e1848bc85b62b614189184121fc0ec87303521860b1850023a112077832812e0800348118046000, 0x1666da6060006dc8d6e86664dc5c597162b44bd88c8d6a1b4f6e75a2c64656877b0e9ed154fdd293ad08c8bb7374e654a7ec9495682667e9c001a90b5351ee9aa3ed354b7528e9ea57a96aa50d3e4080096dac5ee1c003901001db8f0fe66000e3fb13066003e3f7138fc003627212006c5e3fadff8bb800013178240056fec580030696ae0d10004002d55c71a5b8db4a001b7761eded6f8c5dbdb2558b⟩, ⟨0x41e1f70ef873e3751b20d4c6903291830b8455c2a113e09c849a228101878836417f08a04241fc0d905a024c10807902c00dc014000, 0x80442cab7e1c8192d421661e06c2da3c088190b28f4a694934e0900708e96001966e1c001931f56967c98c9686a984f6ef07e1ad81841c930b56004d723a7ae4c65ed380366759e11f283e2ce1eaf19a61c58d380035e280a000144cd128801da784d09add3331b5b6e9570fad008cd4b3e449c120039a369ccfd15b6800801e67d9e06⟩, ⟨0x4242070ffc7e43e31ec0f2c74c39c1bb8d5065e30c17f8b3c58a2a213e896846e2070f206d030816109884041c00b30480180046000, 0x912618e24c19bd24c26613a4ebae6eba0649cf5cbd6000642587486f5c9d60016da987f1480040076d2c3c0c001b68e25269d70b5d6cfb65e1ea01581c3d59e9ff580c3dacaaf387b58d5e2aef87abc55f2aeb879a8a4c70e9309a824830e92f9a7a42b0f2132f1677f2908977b3caf2aeb879a4caeeae987ab855caae956dc390b6ae187⟩, ⟨0x37b1ab0d2464831a17a8b4055629814289e84aa23011088483da1ba0d8062c2fe1720a8849021a10006d82e015c08903200c4046000, 0x5fee5356ad84f7140007ad818001b89b56000dfe5b12992e23d9d1a8964d1382400ba03357875800fa7b4930926fc5002352000e1ce001e9e06c394005d4c23389c00695ad74ab4e20036abef74ae27b848001d6d19d4a39181a7fb293f57207ab01a7903800155ff4f243000645389⟩, ⟨0x33018e8c205fc2ef1728b0056628e13b89804a222c10e87e03dc1e10e506cc34817f0ad04d425610607782480be04e01e80c0016000, 0x4451a27067819624c0c000dc8bad61880157216cf075d2e0dfa5308f71f8003ad34a2001dc79b3819857833e97068d298470006e37d68003185ec4003b8d3670300031846af05dd2c8a387ea6385879620b77e9d71a257b0fcd3c99a4a0d2e29b8b0007d5e09⟩, ⟨0x25f12408e445e20e102077c37c1990c205bc2b814709c84a023610a07f83b01c20d4057827012407f039018409203c0158070022000, 0x6147a5848f03012cf75ae06b994001d6800cf5dc4021b98b67386a90a65487e873e655fd0c3269b33541a704a7e8b84ce27b958001d6e269181b3145b89c7cd7773d15c668d33e449c123469⟩, ⟨0x27c132093c47422710307dc3d41db0e806ec35019e0c485f02d213c097847821e10407983481800b605382740f005702000d8022000, 0xbea08788354850aa43943805d06dace24c19bd24e091bf55d028781bc5156e270c91740402201b6ac334599f224e091834805cfe5b4bc47819424c0c000dce1ad9ea005b8e145a581ae6c00075b0271⟩, ⟨0x2a2145897848e23011288383fe1da0d386403001680ae054827a12608783f81de0e406982f01540a004881b00aa04b01a007c026000, 0x30d2d28064e1005d9fa856484e8c9c120f9b2ce2380031bc6ac0018ddc008d561cba5d2c6884487846818788d58626970e0d2c519f224e091834e3b6cd2e91e0630937488003adb759a3036171a506554e236e287⟩, ⟨0x2050f6878c3a01b90d4066c31817f0b9058c2a414309c04a422210207b83ac1bc0c705b028412e08003b017c09803f0138074014000, 0x39850f0306287c3234b9a67f14ae49714d198c24bc9a7324e09389324ad10d89f1342338a70ded2e099e84ccf0361bfa581b0fad2d0a87f14864343c0d0122606⟩, ⟨0x1fe0f387503861b60d3866831a17e0b585702a213e094846821810107703701a40bb0588268120079035016409803a018008402e000, 0x310cd2da087cd33f8a5724b8a68cc6124fb44e649c121c225e6cd0d89ea8684d30a24ba4781b0d9d2c0d86de9606c3d34bf92654cfe293d91e06a893036197a5⟩ ] def tableLRRRR : Table Block := .branch 14 tableLRRRRL tableLRRRRR def tableLRRR : Table Block := .branch 27 tableLRRRL tableLRRRR def tableLRR : Table Block := .branch 55 tableLRRL tableLRRR def tableLR : Table Block := .branch 0x6e tableLRL tableLRR def tableL : Table Block := .branch 0xdb tableLL tableLR def tableRLLLLL : Table Block := .leaf #[ ⟨0x2b11520a5c50826f12e086c4181ff0fa078c3a21c70d8069831e1850b7058427810907903941800b604881e80ce05a02100e004a000, 0x1429714864899bd3406089001c009002f6ead43627d33426b1349748f0362a3a581b151d2c0d8a9e95c4e000ed81acdaff6c00007558a469584fb5e0007ae818001daeb598a1694bc43f8a423d21e060e512000ed67ae⟩, ⟨0x23d117088041e2020f887883b01c30da067c3201860ba858029e13409484581e20e405f82a012207e035817809a0400198090022000, 0x7126086f534f8a4a4d2612606a45549a490a754984981aa4da0c6a97837c0084a784df0a24001bc635ae310006f15d9e2dfa5c5d74b99a1df043f8a4a0d2e29d331a49559132869⟩, ⟨0x2e415f8a684ea264129891046620e0ff87b83c21d40df867030e17a0aa852c24c111077035c1900b904a021c0e806a02b808801a000, 0x6f4ad680036d06c4013bd1f67e8693e34ae491834de860066af424da1ae852e2906955fa50011931a755b09c003bceb5b03000379c6ae10562001f46e4f190d2ec49a4938c9803dab613f068d8183a458000188000050f1494f429⟩, ⟨0x2a114509cc4b825111d089c4282090fa079c3a41bb0d5066c32017f0ad052027c12f08503941b20cc05381d00ba04e022007c014000, 0x18c6e97bf164f0ecc9c13bfab331344cae89c128daabb33038a9d94b66c519f224e091b34808d6d86b4ba47818f2480037ab6b6c8501076308ce270006da9d5db516d38003aac6b34b491e060062da4d583a29e06⟩, ⟨0x25712208dc44c21910607f43d41db0e787103661a40c785f82e21670a8051825e12207e83281800a904d02400d605e02a00bc04a000, 0x5dc87f14941a5c53266349228a24c24e236091d34de48b2133d09a5c4f03633fa581b19ed2b89c001dcff59b9eee7c0016aa06c65f4b491e06001b739d6389e06000f736d740db998003ae⟩, ⟨0x2bd14c0a344f426d12408f84322080f187303721aa0cf86302ce1520a404dc2240ed06402c413c09104201e00ca05a02100bc030000, 0x17d5000fabc1269a2d84f7d30007ad818001be9357a2710007767d9e63fa54450f9127048628991c4007d689e19e061d3480037cc6b400191b362000df2bb3c78f4ba421e852c298460d91389a820a1e6144e3b3a5849287⟩, ⟨0x3291820bb45c62be14e89e04c225012088d844a2000f707903a61ae0c485902b014b09303cc1b80cd054020c0bc054017807801a000, 0xef1fb3d7bb4b0300037e3eb4006546e2000df89b3d01b4b1667c89382470d324a4d9dad2f11e061834df76000eb40019b27632475f71b3846713800336b6ae6d59b10001d56667a5308f7d90003ad00066d1d8801f7d7ece0600366ced5c99a4a0d2e29⟩, ⟨0x34819d8c605d02d11600ad852626011d88583cc1db0e4068c2fc1660ad8534250105070033c17c0b104602040e006301f00d001e000, 0x71380064078b90148000038ad8374b42678180371fec5c06a94d3c1ba79966069d3ccb335169c0031dc00c61f1306287bf74012d6dfb8002eb422a21e13790c000dfb1ad000c7c722006dfabb39334941a5c537e9000fabc12d86b61380077e76b6060006fccd5e251⟩, ⟨0x4af24611a48884211ff0f6c7703931b18d3467c3281828b885b02b313907042200eb06f033417c0b305101fc0da06302a00bc018000, 0x6fb77b789dd6ef6b1350fb7b5abddb6fb313be9df66277d1ba9c4eea37d589a86a052d5801f7d0001c3ef230c612776f86ddb000f12002ddae2606812aa12d5d543005421d89be9dab76adaa8b6ad5aac6acd2b06ae1d0371bdea06ad34ed5b356b5453568d5bb566957b564f4fb8dce813571a79514001d3c99a28cf9127048d9a52f9209c69748f031e490006fedd6c80d2ef91846⟩, ⟨0x3d61ce8dc06ca3521968c305e82e71630a9450826312108844001e10eb06dc32c1690a9052024e11a07a83501940a903b0118046000, 0x32a401f6c57d2ce003950be76784c1921c001c09b5abe39bf71854287b336610095a736404ad20239b169cc300ab4e698055a402734ad2bd39ab6bbd001297824015e6a5800e64dac007323312d598ce96065e1cceb5b89c001c04b5abbbbb571819773762d755ad2c0df7e9f7e7bed00661f78dbbbc4ef737dd89⟩, ⟨0x32518b0c2c5f42d51600ad854e29d13c094c45c217100076c36c1a50ca06142c01530a304841f80d70650294136076034811003e000, 0x19127048d1a6ad100235a27067819624c0c000e085ad0006acbd8800381fecf190d2e31da50006b3ed3d67f81e6b70cd25669309381c0015aba14b0a4009ad5b56000d6ababe08ab53dcb09c003c0c75b030003817ead8635a76059b3ad32afcd9ce5bff47⟩, ⟨0x3ed1e40e8c6fc3591930c705ee2d21568a204f624811888303fa1f20e686a02ea16b0a304f022e0f206682a01060760288078022000, 0x5d57dababeaa8ed5d5f3578eac013abb74e007802557669e06aae2af5d5800354269c003aa1f56000d50fa76158003542550baac6b34a00455d1a7c893824001ab9753571d5d5ad0004003ab8f4f030005570ea6060007054d6800356eec6ae3c14766000d57fa7aaf3050d6b89c001ab635600755ae007eab8cd1a67⟩, ⟨0x25f12708fc46a22210988003e21e70e106c431817d0b805942a812f090044420c0f3072033416c09f04a81c00be05202080c0016000, 0x149a4c24c0d42a24d248a48930930356275866b478d35855623af6c4f66684d2269c1ec028d69e4770978243945b62ac7134b8e36971c8d2c0d562d5f7ab1b34e99b28d33669ab0000dd5e09⟩ ] def tableRLLLLR : Table Block := .leaf #[ ⟨0x38c1b38bf050627613509784a424210e87e03a61be0cc85d029e13f095046c20c0f1066029c138085039017409403d017008001a000, 0x2aafcd38004001b70a0025466002800da700040026e10003a8c8004a878005d3c99a11a11a11a9b1b0a2acdb5b53e6143adabc30a0d6836a9c001c27b5b572d64fb170055c863cd630342a7953713aa66dd535900071abac7c048d5e098c7997de22fd594f29a1e852712628681513e29⟩, ⟨0x3b11c60d9c6843371890bb45742ad144098c4b223411288583e21e40ea872c3781870b104f42301010750314140094037812804a000, 0x15c06195ad002abe7d4d7cc004ea704d7cb5abeae609ad9f4f30dcc115b369dc4e000e185ad01bebe2d8c0d5a857c1abd8934927781002756c277c9b031a4b0017ed0000021e16c000eb4001a62762000e167b3dde34a066b1c001c2c75b57c5683b18460006abfd3d58157d6b4001ab8f4f57be157ad⟩, ⟨0x46b22310e482840a1f28f007363841af8ce865a3081788b6856e292136892042a1f00de86602e60fa076031c14407d02c00cc04a000, 0x6708003ead84e001e1d1ad818001c39b56000e6ffb100070e3d9e6fba5c389af0d6e1c2000eb5c62000e1bdb3d4074ba81694003b08c3b60d86deb4001accf4f59be1b3ad6e1aaf9aa034edca5501a76e05b93a9ff4f510d447a900caa1fd38002dd78060016d4ba01c00c801769f886a88405fd4d6aa02fea405ead535359156afababcab56d5ed0c000d6dfa7⟩, ⟨0x47822990b88123e61e08c404d625c127890846a22810d88343fe1f00e5869830215c09b84481da0c805282000be04e01e80c0016000, 0x645ad3c8b722e6b5b60c4235a001d9f61db41c41b5b55680c0001800800500040048010003000e002d64da7000800800605fdf000100bc005003001c010009c3d4a6833419a8cd866d336d0db4340a66de70fad6b61387ceb40018bef4f17e61efadc3d8001d68003a756c4017c3cf66000e1e7add89803f22000e1e3ad011a7bb8c99a4a0d2e29c3b0007d5e09⟩, ⟨0x5cd2e0166caec55128f14489da4e025d92208e246022b10c47ce3dc1e78ea870e3711a70cac5f62e51600a6c39c11d04b0060018000, 0xe2994a8009d4ca538e6ea71cc001f52000ca4e00169e918004c98752e27000632ed5c65b0fc0003aac7174ba2678196d88ca756001d94000b64fe87c3c2683337ef88ceb40036d1c4db2b0d6c9b68626d6b6c6c3dac6d696c5c3db2b0d8890003ad5ace31dd880200098008007801c009002355c002803580ea01f5535598e9c010003c013004400c0038012000c06aaadeb3000374f55b000600880d2006001a0010017597e9c00200b00601a37d2067008002800587846a46⟩, ⟨0x39a1c28dec6c835a1a18c806262e316c8ad8558295138092c4301f30e0066c2d013507a034415c09b04401f40b40350140064018000, 0x4e8cf036559a581b2aed2f34000b87f14800799c003c3c0dccc00162606cb034a000cd51a79ab7906d64add55ecac1a7957a545d3ca832aeca89a7950b276d3ca8393aca75a794e1ea2ce7f4eda0bd42da14a6fa7dbcedef1201bdbbe1ed144c2a89c1200fb75e2c00a94c34fe295892e29e46⟩, ⟨0x3af1be0d5c66430d17f0bcc59c2a913b09b048e23d10c07cc36418d0ad04d425011908603fc1e00cb05e02c411807402080d8022000, 0x575b5d8574da7002eb99d3d7855e5ea4008968b4f91270480032cfea6b40aedf5a00080072cee9e06000a59bd4c0d8af0003adace6bb1d8cb292cb4b3b2c7e9e74e96774f2ccce9b2ce69e57800334fe295c92e299331849001a574d4d649c12000cae3a93a608895b4001000b4f89a56d000b538267⟩, ⟨0x4502158fe07a63a01b68d2864a3021690ab4514267121083c3b81c70dc06a43281890be055c29a12808183b018e09403080f004a000, 0x805200dd3c0270064017a7a9264cad3ac65013bbe1a780c5e83814b4e001c3461f184714b5be22fb0e1fc3de21fb061e07081b74fc9fe50e278ffcc6c4d64b2dbe9dc1eac925b6d3cb68000cb63a79d6b31c49f14dd8aa984cc279d8b93ed740d3b07279ac00066e5d4cdc1a696965a7d3cb492d34b47a7969a5af96874e000d77fa9ae6f4d5d8d74fa7⟩, ⟨0x55e29e94689ea4c22088fb07ac3b11c60dfc6e43671a10c3c5d42c515109c846222710107743881ab09903541600a30380198082000, 0x3d73992e3b8a2c3e1d3cd93b74f273a79927669f40ea7eea06907aa67b0e1c615175c658135e1cad374e000d565a98e8e191d0aac753673d4d3a7a14b0a71354cb6726a6ce2a990001d3d9c55326a6ce1b37f4f2f999be1e5692f899b61ea594ba92bc000b4f03632c000eb40e1981b6203b6e7e0dc76db1b4b753bd4b553cf02f53e56c669e9e7a7c700ec02e05da79b4e8dec045a7f1480028ddc041a78191b9808753752bbe8fcfd499a7⟩, ⟨0x3fc1e48efc7343751a80cac60c2e11650a9c522247111082c39c1ad0c906142d414509d047c1f40d906502fc13c07d028011804a000, 0x4003c0db4f03000381aea71c700075b84d8009b1c714001d680038056c4001c70b67969694003039c4c0d30c41da3b421885de7fc380038aa6a714ed31899e954734b361c68f8decf970341f8cc01d1c1f1b7064b5b09803a583e3680d1eb40239a6cf912704800f35da79a7de2da002007cc96781800799ed2000e357ad⟩, ⟨0x3381908c306042dd1680aac4f026b12d092c48022f10507d43d61dc0e906b43101630a604d420a0f806982b811206402a812804a000, 0xcbf34b202a7818025c0b756e27000702bd5801d815001faae334699f224e091a34e0480046b44e0cf032c49818001c7675a000e03db100071d6d9e5d5a5cba34a400000c12b0fc6600070a8d3e14b8e8eb703dc0ef4e0046077a7c893824001c0e7538af0013ad⟩, ⟨0x3161840bec5ac2b114d0a3c4f026c12388503de1e20de866031c1690a2047c1f40eb05c02a413c09103d01ac0b2042015806801e000, 0x2286933001b822ea4045c1175710832f048e84cba464557042d3a2bc8aa6083a700f3200d6b89f1fe00075a01d6079b1818039c0eb56000e119a7000f08ad5800384969cd258009843e121aa7497827457981e94f25e2895982697306d29c9af04f24b⟩, ⟨0x2e416a8b2c54c29113608f045a20a0fa877837a1ae0cf86383041710b1052c26812708103ac1c20ca05a829812207c0328138066000, 0x30930360cf8376b41e55383660cbaf000c5e400587d94c0358bc6271d14e0ee31f904d094f429ad530c9a6118e0d3d1240c463b484cb713e42c000eb693f68c0d45eb2c1a953629aba553454a998a997206b1c39425380020016097a7⟩, ⟨0x3fd1ed0ed470436c1958c185a62ae13d896048421f0e1067c2d814709103f41e60ce055827811e081038018c0a404301c809002a000, 0x11b4dd161c002853f4e8d800030a769e36386854a149852e144d3c2ed0a969e14e85d6151d3c2870a2e9e1428512141d3d7bc00387af7e1bdf1efac488d223b08d54e1a9eb82469e30b17ec5df273c4c0cda7c11b048d4800782269c001a6ff4f03646f8206b402518ac3d0a4e24c10dea69f14949a4c24c0df8aa9349217aa9⟩ ] def tableRLLLL : Table Block := .branch 13 tableRLLLLL tableRLLLLR def tableRLLLRL : Table Block := .leaf #[ ⟨0x52e284935896246221e90b88463fe1ec8e987383771b68d206462c614b0a004ba23a105072434c1900b584e017e08c0348118046000, 0x162080674eb0e2c3f00c69e582579f4efe92c288f3ca88ea369c00885ab4f91270480030b3ea645c76d75a00080070b2e9e06000a163d4c0d92e8003ad914ddafd8bf8d0af2c108edca70e9d69c0031d18e261ebbd86fd9febf0f603fd8e1eb6f602fd861dfc047a1d348e874e001c97627257868d9a186d3c2cd1b2c30ba7471d5fd47215fb859e15385391d0d3c2cd26b4303a7dd3d73f13ba2ae7626bcbbdec66f76bc98c⟩, ⟨0x47d22d112c88041d1fd0f2878039d1bc0d546302f51628a104be23a11488103be1ba0ca85c029613408783a816e08703e8160066000, 0x8d6661f224e09000eb2b13ad5d71634002003d63e1e06000eb1b12000e505add6d6b4323c61b58f57fdff87b1758d713c5ff7e80470eff22d5c007c061a78114010d4801f0226a788d2000c085a99502814d5ca7f024eae53e80ef57016404fab000603cd4c06fa680da03bd4aabd019e9d55a5576032d3d56c002003c3c0d936aab7ada022534d5bfdcb4e406da7⟩, ⟨0x3cf1d50e1c6e234e1958c205ca2c214e89e84da23d11988403c01bd0d806342d414709b044c1c60cd05502500e205f0290120046000, 0x6554d816b4003728c4dbe70d6f8b93e26e4d6f7c4e862e298cb89e85f1800185161e8aae9ab5d6f2dc561fc52001b786e230f035bbb75389004803f5e387000ebbf13e660076bbb13aed006e275d8002c48d9a75e3b9ac5eb735d2001c3eb2b0c001d6ce275a386d686b63125423e19a06ca3000bd6eb9f5b58b⟩, ⟨0x52e29194009a04ad245119c88841f20910147f43d51d10df46b431d17d0b5454a28212908bc41419f093040c1da0ca05380b8046000, 0x3133fb2183898603fc00038785fbfbf1201cd9061eaf97cfc3ebdf5f3895b628e1d3d0a585389a8dd5b5752b69d1b8000e9d6d3a39b536d2b6861edf36fbb87e8530e001d09e1da25ea075c4acb8a5c330e00fde1e1c03000ede161c003ae7c3e568d72eb56f3a6916f16c200073e4e8d3d3ade4725d346b78360e0031f2546969c003802c4dff70d724b97e27441706c3addab75ae5ad81533c0009c8d466e9e136af757f89⟩, ⟨0x3561a48cf06603131840b845882ad14e0a2c500263123087c4041dd0e7071033e1920c385d029e12a083831814207e01e806801a000, 0x2852c298460076f94e26db4020064fb600329d4cb4b4e696934e09cab3e95e0b9549f20c1329938039249c326a7ab57891e060cde9e7d5b09e1367b26cb50001d686474f16c6f0f589c3d38540f2d7874669ce7aa7074ee78c2161d6b95bd96b4a8ab4f0c57fae1e852c29⟩, ⟨0x3171820be45a82b31530a5450c27b135091446622910d07d43a01c40db86482be14809184641e80cf06002d414807f026010803a000, 0x46c89c120084fd9ab001b87b3c99a28cf9127048d9a67d69fd75a5d23c0c7924001cbf75b3e0cfa3b18467138003688eaed109fb0001d56cf5a59dd8001d3c0d3ec5a19ab9ef800dd3e449c123a699f127d1d680033dc8011a781a7b7002753b981127⟩, ⟨0x3341878bc05c62b91578a4050c26112508d844a21410287803a61c60d386202d214a09e846021c0e905f82680ea05801d80c0026000, 0x23af2d600591f47f148010072368f030029174981baeb000759ab66961b51b4cd258693093d728017aca14b8a400c30a6009851520030ba98eb61356184e001f5bbae818001eb6f5800401421a9084f7426d03a6ba0f69cff3329e639e94e09e5fa2965e489⟩, ⟨0x28f13e09944a824711c08ac43c20f0ff07bc3c81d30db069c3361900c085902ae13207f83a01b60b6056021c0e005e02a00bc04a000, 0x5348ccc418f9a67f14ae49714d198c24be9a7324e091a34f642dca1b13f23426a493d50a7277138003d7feb3afeebfc001d56b03a56138007d7deba060007af9d66af7a52e91e06002faf5d740dd798013ae⟩, ⟨0x36419f8c685ea2c21558a504ea25011e88604061de0e686f035a1880bd85b82b213a09284181f20d406502940f60560188078016000, 0xb656defd4dbff6f96ac2c6b7ef4f65c8002160e9ed8ed34276c90031c68e2397657ae0c10fd948023ae06e53f64e017ebb4cd258693093d918017aca14b8a41d958026335481d1580963256184e001f637ae818001ec67580040145fa9005b7616d001ebb0769cb226bb44e09⟩, ⟨0x3b11d10df46d834719e8cb062a30817c8bb45bc2bb14589d04ba23810a879438418f0c2858027a11a0738308156086030812804a000, 0x611c001ce275a3671000f386d9c0c306bd2334ac27949748c611c0039acc5e6ac002002c56917a5d2174b1e6bfe7a7b187fcb0f62f2f47fc70fff0001e1c00158b6220d3c0cff766ebadb6217af136ce2f5e26cc40a82e05d380037006a6df8d35bef6ffea6dfeb7db536fd69acbcb65b536f85b2da9⟩, ⟨0x3811b68d3065230617b8bb459029814709a448823710907bc3ca1c20d7868431c1830b804141f20ed070835015e094037812804a000, 0x17268d374b9967000e2630e5c7c4b62e923c0c4f255fbabc6c800536987818001ce875a4efd5f3b171380039cf6b402d9cac8c0c017ce462c3444dd0d69a2704e248bc838001000b337000c2c300134f08d88d88d0660007390d68079b11004738dd983219c6eb4001ce335b930000fb1⟩, ⟨0x480238913086a42b20a0d5469632618089e84ca25512008c841a1ea0db861c2e81660a985002360f60630294130073027011003e000, 0x3093dd68003add0cb4b03685fa57a06e577a0de8289ba26c7a11e7f833e27e7ac00017a034f036786000eb518fc47762016805c177b12391d21384f366c6017e9c19153018dfc6a9fa182eaadd34f8664e661c018aaac9cbd3e19002a9cac3866898219f244c5c89ac358a3d5d619585eaf11385d4e1e1e7c5746d6e2700073afd693db5886c60627b2b0ed5801b9d49⟩, ⟨0x2cc1538a404fe26e13088f046220c0ff87683a01ab0c305842a412d08e03dc1da0de06382d815209403e81b00ba0520208070014000, 0x73e9d9f575a59334941a5c539f2800fabc13a270023ab61380079f0eb60600073dfd58003a24ec400bcf7366611c001cf6f5a3071000f3d8d9c0c692f43ed28f99d85637a6ad0f74b1467c89382460d3dd8800bad2e91e06⟩ ] def tableRLLLRR : Table Block := .leaf #[ ⟨0x2dd1628ad054a29a14489d84c825a12588984262090f9078c3a81af0d1064430e1760a084702160e606782a813a078030812804a000, 0x18eb1151467c89382460d389a34ba47818c248003a00eb5b348c0dc78697624d249e3e800ed5b09cf0db030d1ac004c9000001879fa8003ad1b3880039f96cf8e5d280039f8eb5c62000e7ddb3e37f4bc766973ec00075a000e28db1⟩, ⟨0x26f12508944361f60ef873037a1b10d1064430e1720af852826e11f088841c1c40d106202cc15009304401ec0ac04101b8090026000, 0x9a14ecc0538e0367037816000eb748dd2e3489309388d592644cf036392ac3f43a782ac5e43e03d43e50d0368300146b464d3666a834e0926555c26713e820000eb607563037f68b1e338728b⟩, ⟨0x2b51530a6451a28012f89304562060ec86e032c1860bb05982ac14509a04942280ef070033c1840b505201fc0dc06101e00c801a000, 0xb125c53c8ce2901ebc8b4f4489001bc6b4803be13ebef0c068006cf7860356908864ca1e531a6b1a8b1b0b1bd0d27c695c923069d0dc00cd5e849c435d0a5c52386b8e2005bd9bd1ad84e001e85dad818001d0b356c31⟩, ⟨0x2db1660ad453c29413e89c04b222610c88203f21ee0ef86e835019e0c785e02b414e0a2047c1f40ed064028c13207402780b801a000, 0x724be5974bcc0b1e06e9f596e2703ed9758800f40056aa4cd7067c893824d2480e95856b4e64781a924f2ada5020f1b1e91a060007455d6d5d6035ec5c4fa290003ad017aafed8c0c02ed5f9aba69c37cd3de7de4d9ef34092cfe29⟩, ⟨0x28913f896846a22210a87f43e61e00eb06c43341890bd85882aa14009584181e60e506902fc14c08d04101ac0b804a0198070016000, 0x10378a2004eb8008f143585d21fc5211e10f030ac8981bc49000759cc1697c4cf14300c439f0cd604a906153802d5936ac3144cd0d28225f144c108bae0411d782417f659e4b3912b962d2f2d7a53935e09⟩, ⟨0x261128090c46822710d082c3f01e90ef07343781ad0d006543081770b68558298135094040c1a00b9056021c0fa05802080bc04a000, 0x19a67f14ae49714d198c249e289cc9382478d2f2686c4f66684d2269713c0dccf69606e67b4ae270007c5dd678b9e2e8003aae65f4ac27000fc59d740c000f8aface6474a5d23c0c005f8a7ae⟩, ⟨0x33c18b8c285fa2e616a8af855229c13b89b449023910a07bc3b01c30d7068c31c1690a2047c1d80c705c02b413407502100e0026000, 0xf24800bd650a5c52063b3268e4062b3362170c27000fc8ad740c000f911ac6c6401f6063b400bf030da738ba5b2654cb5aa704c952b2b44ad5353501d7fba7afeeb55d3d66d5fd56a9a7ad84019d3e449c121ba26ea9ad835a000d6b800a69e06ad68013d4ca087⟩, ⟨0x29114209d44c425112208dc44820f0fe06ec35819f0ca060c2e21670a8051825e12508704041b80a904902140c0056018808001e000, 0x1a663492ab22650d3429714864899bd3406089001c009002fcc6d43627d33426b1349748f0373cba581b9e5d2c0dcf3e95c4e000f939acf26fc9c000755cee69584fe4c0029ae818012f25b59a6692c349849⟩, ⟨0x29a13a898847a22810d88303fc1ed0f0073c3801b60d086482fa16e0b2050425c10b07983a01aa0b004681a00a203e015807801a000, 0x1d42b5780a44f6caa9767624a7a149c49821bd4d3e292934984981a41552692428952612606c1d80271a1f22400f839c7ec2243c26d0512000e9e7ad000e0d322000e9e1b3e7f34b59a1df043f8a4a0d2e29⟩, ⟨0x2c515b0aa052e28c13f89684a022b10a08103f01d30de065c30015b0a304842140f3074034415c09d04601fc0b404f01e00bc014000, 0x7126086f534c2661380d3e776ba06019fcecd601a6c99ac6a46f39c091d701bac7f39405ed7019ac7017fce3d703da9c046f38b592a23261c964e098565999bf010e1e4cd25069714ea20003eaf049bc8b6138007a866b606⟩, ⟨0x3a21be8d606122ac14489e04ce25811988984321fe0f186f836218c0c105742a012b08303ac18c0ab04c81f80e605801f809801a000, 0x20868127530484093a9aa56094871a0a67a2b4f54a41270e2cf51052bd13a76787a2b0f86692b349849d50800ad5d0a585209bbc2c037685fa620b5ecd84fa9d8007ad818001d4e756c3105bf536d982c9e956cc035583ea680ab6b4035b84d7a0d5dad42704d72b30bada674874eb9c0685cf866⟩, ⟨0x37d1b60d6c69832718d0c345dc2cf1550a744f026e12488e04262020f987a03921a40c906202d214408f83e81cc0c7051014c060000, 0x186692b349849d59c00ad5d0a5852023dad2c00fb4a5faad429ee584e001eac1ad818001d57b578271a137235d9c599f224e09003eaa923d450f1ad2f11e06003e9a93aa98003ad0006873d88f45aa86cfd151bcf7a1a39b8741469c79482ae1cbaa6a03bd3fa67d2187f4c7a3fd1d87⟩, ⟨0x4a624a918887a40a1f28f007203811ae0d186422fc1768b8c57c29914789a846e22d104078c36018b0a703fc144094037812804a000, 0x178d372861750c269e18986174f0c443090c1e9c00186034f0c2fa9dacaf0d6fc00f87388fea5c337aeaef61b0f7c3eb52004e1eba7a48f03432bea2eb218100074f034325ea16ba17f00055d4d3c0de9fe1ddae0f4640ad387ce1e84813a7b3e28b5d3fd4ef3f83f001e1e8067d4979e60f8002d3d00afa8d038bceb07a000e9f886000688dd3eadb4456b4001a2674fab5d135ad⟩, ⟨0x54d28d13d498449d247120c8bc4392030ff07ae3cd1d40e0c68431d1750a6c46020b0d7050c24010a04f81e80c603e0158078022000, 0x18ed001990ce9f218c83b4f90a642f906e9c008d3b74f9127048003a756a7555c7cb5a0008007a7469e06000b4e6d4c0dacf0003add4f71ecd8e9d5a70e9c7a6e69f4ddd37f4fa6e69bda6de9f532d4d3535d4db53bd3e823215451974e348721fc535a7690a1ebd3c527145485174d681f14c69e292897a289909ee99d03a297d3800684f89a10e1a25c896e286909228f90f624ad380030ca6a618fd3432a006e9c3144c19a8cdec69⟩ ] def tableRLLLR : Table Block := .branch 13 tableRLLLRL tableRLLLRR def tableRLLL : Table Block := .branch 27 tableRLLLL tableRLLLR def tableRLLRLL : Table Block := .leaf #[ ⟨0x4a024991c089a42820d8fd87d83c71dd0e546e034b1940c145de2cc1548a1046a2100f586e030a16009d84201aa0b003e812804a000, 0x61480269738b000d2e317ec6681bb96138007ae2eb60600075c3d5b0c54b1d70367a035e4bb300075bfd6d2ca95d91000d30b134bcc352ee98389a6052eb13ad4a975abd3ff4d0d56b55553134fa84a987a7d4254c2d3ea10a60a933a7525f5bdd41b4fab1a97fa7d53750fd3ea17aa66a1da7d433516d40b4fa8069fda7d3eb4ffd3f74fa7de9e9a76e9f20dc83f52006e435a7⟩, ⟨0x3c71de0eb47103631ac0ccc6002db15b0a444d82010ef06ec3301870bc055427e11a07b83901b40b704381e40c605202080c801a000, 0x426c48e0036bd1ad0006adcd3e26aa6eadad3d59f54d55b3a7d78c001d6dff156b6c4001ab474f569d5a9ab59456505a8b5812166d64d5cf4f4a5a6c6269b54d8c4d35e9b3898534ce49000d33b134c6c30003a84e9e98b4c6c5d828781a9ab4c3c58006bd14c4c3c90d4c2c3619a4acd261275cc002b57429⟩, ⟨0x3161788b3057e2b01510a44508273132096846a22610087c83d01c30cf05e428c13b08b03c41980a704801ac0b804f01f00bc04a000, 0x28d29587675eb8025a7a149c49821bd4d3e292934984981abcf0017526924002af3752612606bcfc009d680035e4ea4007bcf75f5e3000200169e13578a000ea4001d7d75a000de71b100075f2d9ef09a5af02bbad39849f33719a6923c0d80155bfab⟩, ⟨0x2d81598aa4508275133095c4742130fe07c83b61be0da063c2c41510a004c42400fb076036c19c0c1056021c0e806702100e0026000, 0xd3fc008d8c0dadd800dab3c8ee12cc23803504ac01a7c03956e4da581b723d2d2600c9e06d6c0299d5f77bddf13c1fd0d27c695c923069d85c00cd5e849b435d0a5c520c0ab95a28d9d99bc8b6138007b076b606000760cd5e0291⟩, ⟨0x32c1838bc059629813989904a223911108604021f20e686e832a18b0bc059c2ac14909204641e80e706102e012606e02480c804a000, 0x7751d4f091a6dd3c008d4800fc230003a7001b845d498470dd161b0d15ba3e9606dd1f4a611c001d8fb5a1824401ad8ef670361a8b9334941a5c53b1b000fabc13b9d000fab6138007b196b6060007630d58003b9aec4001d8b767b99e95c4e000ec57ad⟩, ⟨0x25912608b440c1fa0f587783981c20d786142dc1610a704fc25c12108784141ec0ec06a830016c09103d01540900390160080022000, 0x1466013eca920470a00c9f11af23f8a4ba478183044801f34dfa95c2f6974cccaa1ff24ca99fc527b23c0d512606e14b4a78267818001e14b53c27e94011e1434fe295c92e29e4630925669⟩, ⟨0x2ff1790b8c5aa2c415b8a9852e28d137097c48023111388203d21ca0d006542ec15109904341ec0d705c02380de06202a8124054000, 0x50a4e24c10dea69f14949a4c24c0de1002d24d24802f05493093037690134d003dfa9201fb3d3fbd8010054784dde800d24001d9df5a007b1544001d9d367c64697baf73a380bf5747f54e2c0551c037b6a3d0a585308dec80652400fb100547⟩, ⟨0x31d17c0b145762a414a8a2c4cc236116081c3c41bd0d6066c31817b0ab051c26c12908e041c1c40cf061027412606e02d80d803e000, 0xe35fabc6c31ae000b550371ffa5a48f0300318d4eac003b4e01661e0600076a1d680038d2ec4013da7b67e8693e34ae491834ed340066af424da1ae852e2906155d8620046ccdf45b09c003da475b030003b47eaf214880036156cf8e3d2f8c02547⟩, ⟨0x2fa1708af055629c13f896047621610387f43b01b30d486102be14c09c84b823210607b83b01b60b6050825c10c07c02b80c801a000, 0x21ea1d63875c9da78534ce49f03cf93f8ddff9d27007c99387975dbeae923c0d5d25769abae24001d3c0db5e8003adae16bb0d8de28985913824fb1568821f224e091d348f3f8dc6b44eccf03149a606dab8001d680038d96c4798daaf66e27⟩, ⟨0x2fa16a8ad854629013e89a849222410c88203ee1e80ed872437e1b00c585d02d415309704341b40c305b02440d806201e8090016000, 0x2edbab5bd75d851f5344cb289889121ba262a8042d6007f1bdabc13b06b9934de47f149748f03184900078d5d5f1a7a581b8d0d28003c6ae9c00626ed644d0003c69eab8dad2b89f6d100075a449f197b1818894e327572712e9889274e09⟩, ⟨0x3691a50cfc6402fb16e0b2057a29e13c89b048e22610e07ec3d81cd0e0066c2d015e0a384d825810706a02bc0ec06b02f80e802a000, 0x61a51e13001eb3471d5b707d680185b498554684c0061551c42fdc0b5ae270007700d6c653af5c6068cb75cb59c47007d6a96e270006bddd58eaf5ee0005aa81b93bd2c099e062306bd7d5d74e0019177a7aee03fcd39f500080145cd9e134230003b76eb48b7af43620d4a7⟩, ⟨0x33f1900c145d42d115f8a98536276132891044a2110fe07a43b41c50d906442e014f09d04641f00d706602ac0fc07102900f803e000, 0x39da5d4786416130485c2407f9d300837ffeba7048201b5b6afddcce911d5670030ae9309a8d5caa90fd130a9a07953dfa2639c086d71cd0ed6b0018e3b4c39d980061eecf0e50e76b87201bb5e09019870b5b9b800c6cd9fccc007afd27abd1bab75ea4c3701347⟩, ⟨0x53628894109be4ba258122c8fc45922691008423ee1eb8ee87603911af0bcc4f420f0cb059828612007e8378172094037812804a000, 0x587ce6b62e270007748d687739cbec6060f23395d5b09c004ce4f5708ce270035fa962bee71e000eab84dd2f5a00c9e0677d5e696b478a05a4869f5d05a375b25e875b162635d3d3eb9eb462e6dad8af41ad8312fae969f5b0d7a17355e7d896d6bf4b3d3eb5faf3ae69ad8af3cc4aeb5da5969ed1252b29d61ca7368ac4da24a7189b44000b120069b527576d5bf57aba8adbabd5d356cd5eb7c29beaf55714c353ab40a61a9⟩ ] def tableRLLRLR : Table Block := .leaf #[ ⟨0x3c11b20d346502f5130092c47022910b07b03841b40cf86442f81710aa052426c111082037c1740a704c02340f405502000d804a000, 0xebf60d3af1ebca5976c37a7d9374db32ecb7a7d987664d96b4e1940652cc9ebfbaef4eed1128d29b842f47a7aa55487c89814dfea26abd8eac7470034a2aed1ee8606254f50ce42a9c120dfbb2b84c1e21f7570f235b6660007375d3e6ed9d26b51143e449c121922739f16375a2786781878d2000ee97ad⟩, ⟨0x47e22d91448584091f20f347503991c70df46b032518d8bd85d22c41488a1c4e025312488903fe1940a284481da0d605a824009e000, 0xba01c5c0dbc40003ad000e7eb22000ef0bb3f80b4b86a8019a7c89382464d38bd69b7ad00070d0001f4f0362e8002ea5c4e000e9adabd39f4d5000b55037c95a5e2c0193c0c1c669a1ab894f073d3acffb87ee19b8ac4a4b3dae67a7dc1a251dc5167eda934eb1c0341baf69c001db6353b6969a74a752d3b4fae59a7c1acb30760369cd3baff8356bc8597ec39a7⟩, ⟨0x3311860b9c584271133096c46c21110387883821ae0cd86302fe1700b2854827e135089040c1c00d305802000ec05f02900b4014000, 0x1721dc8ba9001ae35d3dc2372069c004008da8d4b7f801acf09a13003bbd26b6e2ede8f5b036f42000eb781c06ee356a2594449c498337a49c128a22e0143c0c011d04e2ce23800f40f8b71380074138bd0268200058a81be0dd2b89f78d00075a006d01e4606⟩, ⟨0x3c01cd8de06a62f61708b445782a714809e44d025a12388d041e1ea0e286a03161800b184f82320f606c833c154095045819808a000, 0xd1537cad68007b9787df21dc8d68056000dc5400c86e400169f856cd298d760a97ec53cd8ec98d31923e699a1a4e44b6289b9a4e24d5dcd172ceaef03382b57e80692bf3c3e95e090f3cd95ea20d0beada16d43f57a2601162f5d0064f035cba1e3eac74ccf03001bbd6eb785009ed600a6dc6adc0401567⟩, ⟨0x38a1be8d2868031b1660b0453827713609444582110f687483801b50cd05d42b414b0a0049420c0e206c02f416608e037812804a000, 0x3c52000ae45b2be9e065c83656d4ef09b2fe1d4000ef2da784c000ee99a7df8f7d1d6c2600ee20fbf0036dad086fa0e0c07ef60e01dfc27710684c01de41f7d9113b5a08dc41f224e0900ed613140d95340203d9c1e06016c613030003be7eb4c944aa88003a0569f407df335a000e8afa7⟩, ⟨0x4111f90f3475438b1b30d046382f71690ab4510277133096446822910c082c3cc1dc0db86a830a16e0a484c81c60a203e812804a000, 0x647524001e0275be09245e4400c81a3f00c23f6b780576235bc020003ad0006fbed88023c00ecc001e0075a0065d9fb19334941a5c53bfe000fabc130e6b613eff0001eb60600077f6d5b8c4001dfcf67f80694001fedf67f7fe95877dc2378ed9a57b7d3ee0fb9eb0c1b8fe9d881dcdb4ec3eb101b9ae9f65bd95f4eb926cb3a7⟩, ⟨0x3b11bf0d9c6ac34c1938af05602a014a0a204c623e10c87d03c81bf0aa051827012a08583f81e60d4057824010207602b80d0014000, 0xef1fc19eab910d2c099e06d1d5728d580020206faa0010007ad18009a7846b2c6a46c460007820d6e8dab90ec4001d12b4fa27f03bada0c6d1eb81bd6ed62bb729e40008004001ed69a7a21a886b21a48c94a4f99a130018ef47e048475d680892147c89382400c92a49243c758d00200e45d1e06⟩, ⟨0x4ca252923890045b21b10948284071f10f5c7643a51c00dd86a232c1838b8857a2980ec87383521840b082c013e07a037812804a000, 0x1d30353a4f69a0860007847d6e96e1026c64cd25069714f084003eaf04f28a0ff6ad84e001f07dad818001e0f356000f281b107e3839d98003a57e9f4ade0e35a00e692fa7007d78a00797fd5bf76afd6d3788df98015014713a834b4f098001d2d34fa597067ad016f6db0e00d2f0a00ced54bfc2df000c2a13ad780200076f07a7a534e8fc002eaf048007a3e6ac001de4b4e000ef21ab⟩, ⟨0x32618b8c105de2dd15c0a4c500256126089c4201eb0ec07143741a30bf05bc2c815309703ec1e20cc05f82680ce05d02300bc04a000, 0x2353457269d7b365a0c000c2f7a7e19617cd68f08700218bc8d1e06017b861d681d2c701ab85fd6cda89649138245ea65de3600669f224e091934de4b808eb4001bc58007d3c0d78f800ba971380038066af007c02c002d540dfaee9648163c0c02d600dab⟩, ⟨0x43c20b90347d03c51db0eac72436d19e8ccc62027b134095449422510007c43c41bd0c506002b614f0a104941fc0e70690320146000, 0x3bc6fcfd8c0c7785f9bab86b03df0f91270480faba6efe6beb5a00186883cb0f03433c1e389b3e6cfa2aaf716dbdc7addf1b821d7f7276d3c9a896451382400bd3cf57d3c800fa7b4930927956002352000f4ea001e9e06e9cc005d4c23389c018be571748600cab94ed2ce0a9e06d39022ad5ee05b718002b996bd23ccf01a0010006002727fa7⟩, ⟨0x48523010b48463fe1ec8e987063501998c505ea2cb15609e44de24a11588303da18208b84181ea0d4057828c10406102b80c804a000, 0x260ec2fabbcb8001114f4f030003c53eb44bcd84f622280fa78d269f5d7b5fc4ecb99a54909a7adec294c82909498970fa8f1122543da380389d470006dea12734f030895c4deb400ca2a3cac9474d94f1e28ec84b210cad162380e632dbe269d7cedcb770ee0e04411f136eed3e99a4b0d2003dcb673b8afd7d5e230657725a400bb8ecf031de7c46eb5c4e000f117ad⟩, ⟨0x3b51c80e046ec35119e0c245fc2d91638af454c29c14289ec4c823f106079c3681810ae04a42080d106002c411805901f0064014000, 0x35899a9ac93824001b12752d1468b108001000b4f09ac450007525d23c0dd95e9606ecb74b037689a5b0dac3dd3d87963bd86ba7b0e2c48d3d86f623d863a7b0e2c76b0cb4f61b5829a7b066c35b04f4f60d5373a7b0669b8b04b4f0a699c93953826fa704c72a604db4e019b41c133d86b57491e06⟩, ⟨0x28e13d89b04c423d11508143ec1e90ef07343501830af051c26412608984181dc0e4068830815609403e81a808a038014807001e000, 0x5644984981ab42002b5a19224008ad035ed89fccd09b44d2000f1c1ad0006b3ad88003c6eecfb4bd2c5099f118b943f8a423ba1e060d912d8abb40d2f681a5ed674b17a1ec4d00334fe295c92e299331849⟩, ⟨0x288131896446820f0f5074c37c1ad0cf064c2fc1590a204e824a11607d83b01c20ce054825811207a036016409803b016008801e000, 0xe428003d6c0c000f211ab0007ba0d88003c82ecfb9ed2d2729f60cf912704836aa4022ad6b5a306678186a553429a705f53cea684c1ba1f8f6005f5b29a1e852712628681513e292934984981b05449a49⟩ ] def tableRLLRL : Table Block := .branch 13 tableRLLRLL tableRLLRLR def tableRLLRRL : Table Block := .leaf #[ ⟨0x31f1840b8c57c2ab14c0a344d0251116087441c1e90db06b030e17b0b7056c25c11708503941800b604882000de06201e80c801a000, 0x7aafa50007929d680954df6c6ae44b6889c1200656adabf4734de8d800fa7b4930927b94002352000fa2e001e9e06f454005d4c23389c3445809c1a800dabb8cd2b89f91500075b596001fb181ab4400375726692834b8a790e001f57827ba5001f56c27⟩, ⟨0x26912b092c47c21910307f03d21d60e286b433818d0c105c42bc14c0a104cc21c0fd06c030416e0a0048821c0f006e02480f002e000, 0x9fa2e13389f94700075ba8a4606cbd161821c74d6cbb9151867c89382468d323a34be47818e248003c9c6b474e2000f26bb3f57b4b037ab7a5848f035c4b81b92e00075ae31000792bd9faa5a5⟩, ⟨0x2a21488a004e226412909204722140fe87cc3b81b70cb058c29813f08d04401d60d606502d413408c03b818809e03a0148070016000, 0x360d73269bc8fe292e91e063092000fab1abf55b4b037aa7a50007d58d3800c40dac8800007d56d57abba561390cbcad6b60621efd4dd58332a79182894ed030a9f68688354850aa43c439d2aac64d3666a834e09⟩, ⟨0x2d31630adc55828b13c09b849a24011488744201ff0f0872837a1980bb85b429813509584181ca0c004e82280ee06402880c0016000, 0x419bd24e090098aab5c428781a29c166d6c27095d9708ce27183587a60595ed1e95c4fcbd8003ad886003b8c0d1360036bf8034b0372ea000eb6200126e3cb98003ad4ce6e2b2399a265844c44890d9131200216b003fd61d5e09⟩, ⟨0x2b51510a284e626212c090446e21210187b03c41bd0d706242c814308f041c1e80e506d031c16009804701ec0e204c01a808801e000, 0x18a2e080a2bdd6d2c099e06f63197037346000eb6928fbb9a581b99f00075a6944073e67367cce0003ad0019d2b88003cccecfdc8d2a3687c8938243844e93acd08ec878185444c0dcc78003adc45da357225b4449c49⟩, ⟨0x26912908b43f41e50eb87103581990c505fc2d815709f84d4244118079838019a0ba055827811e08403581680a0037015006401a000, 0x15fc69abdfafc34f5edd7bd5f7e9c18553c432f2873ab08746d0f912704870897a656847643c0c2a2260600079bad6ff0919b912d9224e24c19bd24e09098875f099e06850e75b09d30d708ce27⟩, ⟨0x2a81498a1c4ec26912b893447422b10a07f43cc1d90e006c43401930c085dc2d015e0a384982380f7070024410407203080f004a000, 0x8a133e232c99fc525f23c0c19225b157bb5a5f7734bf11e974cc1976e7fc932a67f149ec8f03544981bdccd281d900b9e060007dccd4fb93a50004002000c0d9f72b4fa29ae31a95cc000d7fba9afd74d5fa57f9a9⟩, ⟨0x1f60f3876039a1b80d3067030a17b0b2056828613409184582080fa07583841940b2054025410c079036018009e04001980a002e000, 0x1b13d0a684d302a92e91e06f8034b037c05a581be19d2fe499533f8a4f64781aa24c0def9696cc0a1e06a290fb91e852c29a463e34b627c33426a134fc15a5⟩, ⟨0x29414509cc4d225212288783d01d10e2067432616c0aa850826a11d08984001b20c2057827812208203a81a00b204401a80a802a000, 0x81be72d2c0df3a695c4e00060f6f320f641ed0003caf9a74ac2783d2000f9d03000183cfccf98f4a5e21fc5211e90f0307289000307839df18e96d043e699fc52b925c5346630923dca9cc938241ad52f3668⟩, ⟨0x2b114609dc4a423a11788703ee1d20d686583061700b1854828a138094845820a0f807583601860b0035817009e044019808402e000, 0x15700013ad06254800f56f6bfe1121e13782890007a44d6800356cec4001e90767f47e973343be087f14941a5c53a663492ab22650d3429714864899bd3406089000e0024005c217e43627d33426b1349748f037ce5a5⟩, ⟨0x2e01698af853228413b894849022310707a43881a90c2057c27412307f03641880b7054026811207c03581700a403d0170064014000, 0x7148342ae9bfa9476634cab6138007d32eb6060007a63d5c00ac6a4aa6e367d300003adc081223d2f0003ad0006a53d88003d2decfce0d2800351fe9fa59a9035b824a7a149c49821bd4d3e292934984981a81552692429952612606⟩, ⟨0x31f18a8bc05c62be1548a7c51426512c089441c1e90db05d42d415f09d04b42100fe06c82c014409404181c80c6052016807801a000, 0x40d5395481ab7138003d43eb6a1963035222ac001b90b4ec2b0006a77b90355e83696a72b8f34f53754e371de9c001a9bc00200774f09b1374f40a96b584e00df4f1ad81801ba9b35602054e62e7a21aa86f4349f1a57248c1a7a6e003357a126d0d7429⟩, ⟨0x36b1aa0cbc63030b1730b2c5822a614789d04ca24a11287c83b61c60de065c2c81580a184c024a110075831814207c02b812804a000, 0x19ed1001faa8d9fa55a5713f54c000eb78e0388c0dc600c2fd25d28079f07709601d341c001acd356000d6660e5eabd1dd2c20a9e0606f2b2fd5d4aa0008039a7e468055493e89c12970ab0006e4fd38021543eac031ea435a000d485a7a912a45d5b89c001ea335b5335485b1⟩, ⟨0x25712108b44302090fc07ac3b41c90d7064c31016d0ac053427012108b83f01de0d805d02b413808d04101c40b404801f00bc04a000, 0x4e12a41854e94cab854c3869e336d9a6b0d3e50642fc82485e091178a17110abc12340abb6058f03770bd0b71381b8cb296c732b4cd1867c89382464d3547334be47819524c0c000f557ad⟩ ] def tableRLLRRR : Table Block := .leaf #[ ⟨0x2f416c8ad453c28e13b897849c23d11608743f01eb0ef071c3601890be055c29a12808d83d81a20ba05181f80ce05001d809801e000, 0xe09420e768da960e071b272b1b26264c280b9eeb1b0cd256693093d700015aba14b0a44dd6581b8cb8540ab13b2c27000fad9d6c0c000f5afab61880abd6a6ceabdd0e7672a2b26249648003545ea6a85d36f7ec7d7054dfa2a40ec63d6a6⟩, ⟨0x31f1870bf45dc2c715d0ab452827b1310924478215105879038619e0bc858829213009284301e60ce05482300fe05802700c404e000, 0x699a4b0d26126167800be650a5c5203daec09e57900f5bb0238df0c2700070b1f9d030001858bcc0102de7901c9b376d0001d9b769f8a697674dd3a5b0e9c13a3aeec967d73801157dea5da9aa174e02c3f27f1480201c3b278180286e530342b35db3cc⟩, ⟨0x262127890846222410b88203ea1e60ed073c37c1af0cd06242f81720ad854427412d083034018c0af05002580de06202c00c404e000, 0x2ee43f8a4a0d2e299331a4914512612711b048e9a6f2459099e84d2e2781bf37d2c0df9b695c4e000616ff3216ec2de0005ca81bf2fd2d24781800bc2d9e6389e0600290b5b9d0342d30025ce⟩, ⟨0x30016e0b0456029f14a09cc4a4225102078438c1bc0cc85e02ae14809e84b02120dc06902c413c09104201e00ca05a02100bc030000, 0x195a8030718da6134e696934e09b5db7cb5da75aed9ed52d36d72ce0036af675acf56717cd00c1e065baf55b176ea2dd67b7500db3e449c123a69a61add31a0036e00116781adb8026d3a421e852c298460d91389a820a1e6144fedba5849287⟩, ⟨0x2ed1718b5055e28c14009cc4a422210587c03cc1c50d9867030a17a0b1850023a10e08183a018a09504581a009a040019809c024000, 0x1031e490007b68d6ae4690391846713800dcddad73547d000e2bf9bd2f14030781871ae5ad746834d8ec98d31938262e166509bc0b87a3980370f912704806eb09a6fd1cb1a001a3700230f0351b02e3891c5c20f429614c2303a2a6d706⟩, ⟨0x2ce15b0a9453627813489784a424611087f83b21b40c886082ba14e094847c2240fa07103401860b904a01c40c005102300d4024000, 0x207f71684cf030043b3f8b6c4f89a91b918001ee0b5a001efa64400aedff67dbf8003ad002765b22611c001edf35a6944003ede7670330ae075716076f14a847c3340ddb90017ad5d4522f171467c8938246cd34865d1e34ba47⟩, ⟨0x3101768b785a62c214f89bc4ca24211b08a440c1d60df06ac34217e0b5856029a13808a84181f60ea063825c11a06a02e80e8014000, 0xf0f00230f9127048c9a7c63e1dc68007c32003c3c0de17002e26119c4e001f09e2fc25e16000e2a08b7176143c0c025f0762e6d44b2489c125c0abec880330f9127048c9a7c3bdaac68007b18007c3c0dd8b002e25c4e001ed2e2fb4dda400162a06⟩, ⟨0x2d71610ae054e29d13b097849e23e11608544161f40ee87483761a40ba057429a13608f83f81d20c605182380d6046019808002a000, 0x9d99e062934c0d0e38000f32001f14c238c1acf64affc74b037ff3a5076d97826c8165ffe7a5a0981203d7870301931d8d19fb25f456481f5f65afda157dcb5e5e2c0794ccc5f692afc474b0c5f20ca2ae9e6e44b6489c1266aab⟩, ⟨0x2a414b8a204f626e12f893847e23411188183ee1eb0f007443701ab0c2053826c12908103e01a20b905382740ec06c022807801a000, 0xf14ae49714d198c24be9a7324e091a3496b00ca1b13f23426a4935b22e771380018745cc87430e88000f2a00c71584e000e1cf73a0600030e7399004b8a5d23c0c002e1cc73a06872c00279c00221caf3174cfe29⟩, ⟨0x2e816d8b4057c2b11450a004b223e10b88183ea1e60df86c834a1900ba858028a138088841c1c00bc04b81c80be04c02080b8022000, 0x613e26f3c1984e07a21e7f3a0603cd0f379801e9c1c0ef43cbe6699a4b0d261261e3000be650a5c520ecac04f72240e8ac12f6a30c2700070efb9d0300018779cc0080bab1200b7765da003dbb26d39644d7689c134d2320c0424f9a67⟩, ⟨0x2dc15f8a8852e27a131893045e21d10907d439c1bb0d686682fe1700b1854828e13a08984241c40cd05f02c813e07803180f004e000, 0xa44c795d2033caf048cb474af0596494aac70060494ffa0d098018064e080a1f47383a44f10dbca27f64c839c49f33729a613309e1ef8043e740c01061eef301f953c29a1183b43c3d70039ce07953c3d50075ce06d53803287a9cc⟩, ⟨0x30d17f8bb05be2ce15f8ad454829514209d44d624a11d88684162000fa87a03a01ab0c30584278117079034416008b0250100032000, 0x114340a89f14949a4c24c0d8a69349254693093035b15b0db4e24dafdb05bdb13e26c4cc2980b3c52d5fc37d6e4693e16a72339f23533e3e465a9c893232d66463911eb3a80016cf177d4f67000ead3d38c734525d9e000e9e068842aba39b998ee9⟩, ⟨0x2af14d0a404f026e12b090c46c21e10a08043ee1df0df06742f816d0b1054426010307c83601800b404981c80d0047017807001e000, 0x50999e068119c581a051f16c543f8a4341a1e069091303407fe28075bed9edf009acf6f601367c8938246cd36f56f76d001b76004b3c0d6e800f69e18887a461a93027381c880b9e06170190754070e2ca687a149c49⟩, ⟨0x37019d0c4c60c2e515c0ab852e276136091c44c1c90df06742f015309704442080f5074036c1980af05002540f006001c80b8022000, 0xd020c000f1c002c082e4b89c006e92d67037460056a81bf1fd2dc8000d9e069ad0b9ed5802f3859e68b00058c7632268ad99b4f89800795ace72bf8f9ad39abc7bd697b3b20e9e8c0324fe295c92e29933184901a8894d649c1200d0b2981d288a040100a4f89a8100a538267⟩ ] def tableRLLRR : Table Block := .branch 14 tableRLLRRL tableRLLRRR def tableRLLR : Table Block := .branch 27 tableRLLRL tableRLLRR def tableRLL : Table Block := .branch 54 tableRLLL tableRLLR def tableRLRLLL : Table Block := .leaf #[ ⟨0x3731a70ca46082df15e0a9850625311708744182010f0071c3481740a9852424c11308003d41a00a904e0234100074033812804a000, 0x174538269cbb09ac74f3954e59a963be737d380062e9898b361a46d1b7c3c6f646b1b6c39751391e9e54d29069c120077816b01dd738006c4f8b07058981b98aba9001b3c0cbbab11e2ed044bea89c120074d8fab001f02338fe295892e29c46714ed404ca4369fc9f53f93000fa9⟩, ⟨0x2d91678aa852e28913b098c47c23310707a43881b80d486102f216809a847822210207b039c1b40cb05a027410c07902a00bc04a000, 0x1034e6d6596ac3c44c10cfda274e44ce62008eaf04801f397eaed47003f576a3000dabc46348e001da87abc12326bb502ca3000755fb0e9584f292f118d23b8ae7157eb3a5fd434bface95c4e000f95dad9c66d33d8c0d38c5a63ab⟩, ⟨0x26712108bc44421310287c83ca1d40e286ec3501990c305dc2da14809b84482060f6075836816a09004081c80ce05402280b802e000, 0x2fe756b65343d0a4e24c50d02a27c52526930930354a89349229a24c24c0d6b0d989ad1f34d9856afebdb13e19a13509a7cd400075b6985979b13c8ee12f0487c8b6c55fb6e97f6fd2fee3a5⟩, ⟨0x30817f0b645682a914a09bc49422510c88103e81dd0e306842f81570a604dc2080ed06b030415809d04901f40b003d0198078026000, 0x818001f4275b6b2b559b184c0f8a70007d05d6cee1676ec6c0175298fc8c0eea998c696d992d65326ce60133576728009ab000ece4d5e0906c5580036708005aafe674bfcbe9689d56476a7c8938241e15366cdaedad043d94f0307a2a61306e87⟩, ⟨0x3141808bb85b62b61538a6851628012d892047c21910607a436c1a90cc06242fc16d0a404d825811d08983b81920b104602080ba000, 0xf0d122ea24394380176d06ace24c19bd24e09001ada8d5e028781ada56b0f56e27000eb07176cab580006eab0cd1667c89382460d36d63575ad2f11e065093037a22000eb6cc26ad363056f8b6b48003a781ad92b6175766400a4004800392c4eeba7⟩, ⟨0x34e1a08ca86262ec16f8ae856028b13d095447c22f11208343d01ca0e006a433e17a0aa84c023610c07c83981660a904201b409e000, 0x185222932c0d165c5365b9bd96138007ea2eb6060007d43d5e89c6dc7e0476622531f224e09031d93692808bad020e2b1e06050d93030003e9beb4001b47f6201f7a69b3e4153faa69d51238a1c001b3b4044d3c0de97004dad87b98efa16d63d9d0039005393c4f2ba7⟩, ⟨0x39c1bb8d486823301908bf05de2e21608a804f226c12388f44301f70e906b43101630a104741f00d304902200c605202080c801a000, 0x7261d3fad3bbf6b70cd256693093eb28015aba14b0a402348ed6003a456b8a9edfc7b2c27000fd5ed6c0c000fab9abd1b001b8efd7c156cf6d5db5f52000eda7a7f55f6d0d6e301fed9cc739d2b4f3d7cf65a9000ed0dd38002d6ada0400de9e06f542d2ad6e19a4acd26127d4c002b57429⟩, ⟨0x5d62ca962cac853f28d14409d24c424f91f88ba43c20d8fd878639e1998bc857e24611087f039219609c84501c20ae0448158066000, 0x1e3a9dc9e4034f03455171f5cee399dc1d3f1ae000e9e0671ed15379d70568cba7cfe9b4cd3ee9ee5da76a366ecfb37b2d69d95d9ab4c068d85e9e033d405526d3abf74e7e9e9f0d8efa94ae32c21dacec25d3e8d512735f8c9a69dafb80bea38d3d055c04d503419405d60f53db8cc69f19ac65f4f8cd632da7c667195c6534f8c8ee018cbe9e9e7a9f2c19a7a2029f7934f97165bda7cb872ddcb734fc45ede196d69f816e2434fc41f02bc47e9f3eb9f7c4c044d7ca3aba7⟩, ⟨0x7913b61d50e6670e321175ca3043d20d10106fa2f6170099c4301f30e706a43081730b104f424c10106d02dc10805102000c404e000, 0xfb53b38979c5001d36b3fb4e6856b55888cff6e6034086808ca6193432906540ca76f8e32aa00771cd0033fcd01dcbccfea204d02d3ed3990fe469dc99fa0003003163844e71ebb8d7d913c01a7b1bf9030068005776b69bd7ea3d689cbb213f3f21ec8cfb9277ff4e001e746279c386f2e2c6cf418002e400017d7df69877f34e000802de5bed47c7ffa0b635ed2eefde9fb9b86f2d7913da878fdb1a7c17f06bccdd3f225b50782baf9f1f9a7763758dd4eb17ac6ea758cd62b53c8f3bada7c534a59a4001e38f53c6f698001e3534ee3762adf3000bdcec3f1de40cf20fa7e415dce000f4f4467a48f0338fd8aa9cc⟩, ⟨0x34a1a00c7462230416f8ab052828113b89484061f50f0075836218c0bd85a82ba138096847021e0ea07002ec15c089038812804a000, 0x206eca80171308ce27000726ed5e4db91b0003aa89b1c5b850f030031934eaee0700100010008d6cd3cd0d9f966818001f6f35a0066915b19334941a5c53edb800fabc130e6b6138007ed9eb6060007db1d5b8c4001f6bb6713038a00122b974c001f6b35a000e4a7b1⟩, ⟨0x3441918c585e22d01630a9451026512508e04361fe0f8873035219f0be056c29012308703a41ac0c305c028c1000710330154060000, 0xe21287b5b89c001f7a35ba11c3d7181b41f872d600cfd271405bf71601a4c268b060062193a89124adc4e000fbbbad67edbdb230333f2de98bd68d77b486c87f75c02cd683229fdd500975b37225b244e0932855f67001187c89382464d3a4de47bad000f65c00787⟩, ⟨0x44220e8fe07a63c81d68de86c434a1978c505e02cb13e09844a823910f07e43bc18f0ae05042380ec06c82d81260660298108042000, 0x2e9004fb577478009ab000ee8ed5e0900cea1774580020016aa054f16053f14032b83cce6b0b8a4a80307ba16de8d5db7607e5c9e09bd0d1a700cce1306603cca13310342686604ff57469f42edb403d413eb922861d3db66077d0c1a700cda0e09d5bbbab70cd931a0587c4d1370b11b62ee1428dc5800f0ae7f59e8a93471a7438546d7c444616b⟩, ⟨0x3661ad8d1864230f1828bc05962a614089cc4c023310787f43a01c20d386542f415f09d047c2220f606d82d81360800328100036000, 0x3048332a4024babb5a5e23c0c0c4a9f890001d68003754ec401ef88767e4363a87a5c74091a83806951983dbe0c01b8c6aa7079a18035084d220d47a7c269d4684dbfe0a4eac036984cd0c12b4426ce1184d0fc0a1eae934684d628d09a2d5e136fb02b7abb7d4152d5d6a7b0b⟩ ] def tableRLRLLR : Table Block := .leaf #[ ⟨0x33418c8bf85c62be14c89d049e23410c881c3d81b90d5867431817b0b6051c27412d08c040c1b80cf05502800f606a022808001e000, 0xc6e4e138cc4c27119184dd9a0ca6aeecca2cf577175d97abb804007d3c502d0700cd6131a8304e6707b7f0001000b4f143650d86692b349849f8e400ad5d0a5852464ab07155c6285c3bd96138007f196b6060007e30d5e89c6e17ec1f67f16dd13ad8b33e449⟩, ⟨0x5552a594989ca4d9266926890a45221690207f63d61d88e9c7042b514809744702050e906b42f415509a03cc19c0b30478170036000, 0x10349f7362eaf3b60010001000b4f48dc8d303cc62000e9eec2cdaa9e763a47e9c001f98b5b273cd7bb17138003f2feb676293c363034ec32776acd5b3578d4f3568d593574d5ce1f0d5f36d8db4df94db7e00f4fcd1731ba7e68798ce62f4fccf6e41a7e67771f32ef4fccdf33bccc69f9a1e6674fcd07331ccbe9fe5300075babc973715aab4c939c82ddd3eb8c09f69e7d3483cea7b3383dd3d060822da7b826e9d052a8b6d3e531d09⟩, ⟨0x3e61e28e9072236c1a38cd06022f71690a4450c27312708a44222040ef86e832a1740a784a820a0e006a82c011605802000d8022000, 0x2ffc086d37fc005690fd1336b4dc7ab9b56518d58f6870006f0b941f4f037d04010eb6505996f57200074f09832438003f3f6b65039b336309850f6669a78010d4cd6e0086a400f9adb537cc015699ad800ad4801335aea65069ad7572828009abc120014a07ab00066acd58003355cef7aa8037c581a4fe9aef572267⟩, ⟨0x47622890b080e3e21de8e2870035b19d0c646082e314a09bc4942250f907343501830af052c26c10907f836816a0900358118042000, 0x1119b39f5367059cfa9b39acdfd4dad16716ac003b38f4e000c2b9586e9e06fa8ed62d6d65d675a6e90006cf5af66a63a78b3d6275d45a8b0aafe21a78552b5dd3c2a766369d279bc8b4f43f24f1790e9e6ed00f3533768079a99bce529d5804d3bfe9e7a43873a9c04400701ecf037d2200a6b66b42fdb533669809a9300e6ccd4800d365ea66db9b37577e204369⟩, ⟨0x4021ee8ee07263821b88d9067e3341918c585e22e71610ad452027812888e43d41a90c205e02a614408f83e81aa0a203e812804a000, 0x11fb2766000fd93ad003379bd8c99a4a0d2e29fb10007d5e098735b09fec0000f5b030003f5f6adc62000fd77b38a49c5000319ffa7148f8b6afd76b6b1d65bbf8e9ecc9b32ecdfb4934e000da45a9e46001ad21d4d4490006d1fd4f775bca6afbb9b5c75766bda60000e9f791eedf5765fd9b200569c001b4634ff55da9bad⟩, ⟨0x57428493a098a44c21490187c23be1cc8dd86a231e17c8b1852626e11d88583c61a20be84f02120ff06d031c14406102b012804a000, 0x7a3401777b401cf3661a17d1b4fa8b2d169fa2259f0ef4500296c38033e6b3e870cf3bd5a7ef676d713db4ef5e27e4978b356001eade1fee275675b0df870e262f8d4034f17be9ff17169e2f4d41f4f179ea0c61069e2f18bce2eed3c5ef177e9e2f68bba2edd3a1a718be9fa0b7c4febfd3fd7dd053e25d0ce9df15df9353d0bbe45f5e7411a7002e37f00074f03000ff696b432438027f686b6cb00004002b5bf4f09a11becc00075a000ef81b1⟩, ⟨0x3d01d58e106be33a18a8bd85bc2b914b09c449422510687b83921a40bf85c02ca15409783f01e40cd06082d011e05c02200bc04a000, 0x7f0ad580018669d10013f07d98b27f83eb4001fc1b5b73c00d46197f14001fc0f5a003e68647f0100075a0006299f44001fbfb6713978a006dc51c5b6fbf35bb59eeb7a7df28008d3e449c123269df277cad68003be28007a781b7c300175308ce2700077e5d5efc9be18003aa8ab3c584153c0c0196fc1ab⟩, ⟨0x38a1bf0dc869a3281818b7857229413787883aa1c80dd86b433e1910c185d42a012b083039c1840b1050024c0dc06301e00bc014000, 0x391a118001fca35b8610999b100070c6d3e187f92eb4001c51f4f8a2fe47ad0033152d3a52b15f1080080100180200280300380459e0cd066833590d643610d943750c3027e31adc55ff17d6e28bf8b6b400e0ca38c1bf8a6b64cd25069714fe20003eaf04c3390015cb6138007f866b606⟩, ⟨0x34e19f8cb063a3131810bc45c02d11620ae455028313b094447222110788143ec1de0e306b831212c09083f01ae0b204d81d8016000, 0xd248a4893093035d1b478d3126f6c4f66684d22690007f3fd6b8c4001fcf3670eff8b0f038ae923c0cd8aa1dc7161dc7161e7f1401dc5d74e0045de025b8c7a00a0013a784c000e16ba7c31ff30d68003867ea70abd361558676a400118d84b0000aee9000c00dd3e26⟩, ⟨0x23210e88403ea1eb0eb073036819f0c705fc2e815f0a504d425611608383b01ba0d205f826810e07a035817409403d0160074026000, 0x32154fe290700d4f035c12a60687c9c5a8e53ec19f224e0906954c51ab460ccf030d2aa6453460c0a78d4d0983743feaa00beb65343d0a4e24c50d02a27c52526930930350a89⟩, ⟨0x3ad1bc0d4c65c3071688ab84fc25b11c08203b01a80c285e02d215c0a7850023a10e081838019009804681a80b204401d0088030000, 0x138800000c30007f89d68097b01ec4b3ec3e0e3967c87be5a238f671b44e1ece9670b4461eceb66dc3d9d6cd987b3a59aecd587b2ad952ce587b3359d2ce387b3300330fe295c92e299331849003598b135927048006cbf8981d288b2d800400587c4d65b00162704cf4266781a1f8f16068811c5⟩, ⟨0x3151790b3458029b14189ac4b424911d08544101fb0f507643641a50c005d82a214408f841c1c40bf04d022c0f805502400a403e000, 0x1b3ce27fa900075ae310007fa6d9c407e2c40ee2e19a4acd26127fa1002b57429614d49ac60d71d8440bf6584ffcd0007ad818001fe6356e310007f95d9c40ce2901fc7cecc0034fbc3a9f9fc96b7624d249879417bb96c27bd800e9b03001bd54b⟩, ⟨0x35e1aa0cf06323041670b04538275135891046622410087783a21ac0c485fc2b413709084581e60ce05582200f206e02580e8014000, 0x2068839c5000db270e0c2ab0116008220ff29c4e000ff89ad00391063a303001b882dcb8334ae49000d5770f55fad862dc4e000ff77adab0d6b723036428ad5eac00355fc4d55f0d09800355cc3aab3fd9eb6d0367dc38022cff87c89382400367dc4bc1b4002003b3d61e06⟩, ⟨0x270132896048e23b116087c4141f20ed072c34c1970b905a02a613b09404542040ef06d02cc15009704301dc0d405802700fc030000, 0x84cc274d35d2318476158c91aa228716227714c23ffc0000eb4c288073feeece06dc155c451e2e668996113112243644e082ac007c42ae5e09d835cc9a6f23f8a4ba47818c2480018843cb883fc5⟩ ] def tableRLRLL : Table Block := .branch 13 tableRLRLLL tableRLRLLR def tableRLRLRL : Table Block := .leaf #[ ⟨0x27312608dc42c1f90f607783961bd0d5065c3001690af051c27012608703d81ce0dc06782dc15009603f01980aa04a01c808402e000, 0x400a0003cdae658ba1d8129c22e7d0f4668a183844f90ddba26dc44db38cbb41197824158659e4bc512a236716238f15d25e09d15c45fe29e4bc512a230716231714f0d782684d711638b034610cb⟩, ⟨0x36d19e8c685ee2c71578a8052c27311b08ac43a1f60e986b033618a0bd855028e13a09284401d20dc05a82ac10807702800ac026000, 0x1699b415a9f0e001b51e1c00369cc58006d376a4c5449be2e24781802f697c58006cf206f00161e13590d007c000f34003692c880118039d3c334959a4c24c0190015cba14b0a49cd560e4ab90060023b2c278024000f9b0300018021cb618802b801bd30007addd9c480e287e87⟩, ⟨0x2b71548a58512278134897c490239111084c4121f20ed871036a1a50cd060c2b8145097046c2100fd074030c1480900368128046000, 0x450d02a27c525269309303530ac934920a8b24c24c0ccf23340cd64e262cf6c4f298d09a40164c0380003cd3571a30a2b1e4d44b2289c125ccabd5f96a2d3801f4f49f3b463ceda7f0e001b4761cb47c02ce6da0ed5187⟩, ⟨0x35c19a8ca863230c1728b6c5682a7140096446c22710207ac3761a30ca06282e212708e04401d20d005482400d2056017807001e000, 0x80d4001f97825f4d6c270007019b9b03000180c9cb618800780c3d311b9209ba6001b9a61dc258006ea78701c875831c003751c544ffe2e247819f70dd600101b5ab9162002c3c26e46000301539a037cf100ef0147a60370e7017301439a1ba1c00bc04ee6ca687a149c49⟩, ⟨0x30116d0b0456e29e14889e04ce24e11c88904322000f987983a21be0cb85d02ca15a09b84481c40d805a82380d2056017807801a000, 0x10228000f36adf5e303713dbad84f1516eb8b7343c539ea9553252a9c124748eb613e19a3becc1b21e03d0017e68022e9b87c89382400376bc4ede000d6b4002003ba461e06000dd9f120006038f3400edbaf621b21e037001be6c99a4a0d2e29⟩, ⟨0x2b81508a4850e27612e88fc46a21e109080c3d41df0e3069431a17c0b584b824211408283d819e0c205982a413406501f009401a000, 0xb8218f9127048d9a72e69da06b8363c0d543b27118d2381ca3af0480d23ae470805d5143f8a3467eb3680040f16f000161f8cd266d89349262978008e5b09de26c0c612c0036b000001860006047736bc05e3149f8ae27⟩, ⟨0x2fa1708b3856a29414189d04d225811f88b44462140f6875035a1950c585cc2cc13f094047820a0c8059829011e07a030812004e000, 0xf61d61821c06f1d776181cea8c33e449c12346907b67697c8f031c49817c00079a0362f1000302efa714af8b034528e2b89c000c0b7e6e4b6d181b6565d770a04904012478706a54d8a6ae954d152a68ad1d74220eb001921b3891f8157cd⟩, ⟨0x34a1988c405f22de1618aa04ea267127089c41c1e70e706fc36819b0c105842ae13e09a04341e80e306802a410c05601e8090016000, 0x25539ce8b289ae703198e4a8642e16f985c2a030bd8c4001003f4f24300df39c061c0e1e680e7b9c06840dfe6847e39f224e0901f974fffbbb4040fddcf03017aba606000303579b8df2f1f37307a8781a2006f9b91e4a0e1d09d91d4a061c064dcfb5b6ebda0575e09⟩, ⟨0x34b1920c5c6142f316e0ad455028113b89404722140fe87b83ae1c00d286282de15409c84782060e806682c810a06a02780d0032000, 0x410a0015cba14b0a444c658196cb91f204abb2c270007040f9b0300018203cb8805a20927bb1b303d993aa99a7564f466c9aa8ce16f48e426091c84c6e0709a8c0e16448c424df1884c5cdd098bbe217162a42cd3068a28a0ee989425e51284c45e30988bde17fdf0eb⟩, ⟨0x3491980c906162f21700b5855e29f14209a449c1ff0f987603681930b6055427c13108503bc1ca0ca05282380fa064018808001e000, 0x344e9e4606a174d002ba4b847818033c124e6e56319e2d0b93d1a172641c2c16c03f8001de5c0d1d3c231226d072211e6b07001892b3c11a1121cd037d8f46eb2dc4f0458000f366e5a88c0d6e2c42c15fd97f4e06e326c5cd60b6e9d96c15b01674f86692b349849⟩, ⟨0x3541968c485de2b21470a084e226211f889042e1f00ea872c36019f0c705fc2b014b09f048c2100e106a02b414607c0378120046000, 0x829401db9b66b742c32b7c5c3800af7019407ce1c03939341f11a0cd2b9240037bfc3c6a370b713c13f0003cd90c6223034c22d0bc334959a4c24c1380015cba14b0a4130f858061d0b92445e9fb2c278262000f9b030001825fcb61881078259d35e83bfcd985e2efb87⟩, ⟨0x36e1ab0c4457a2a814b0a044e025f12808fc4441fb0ef073c3501810ad054025211007b83981960b005182200da05202180a0014000, 0x22b6f159dcc5c20007158b8ecee00008002000717078f01b66eec1a142cd8c695b34c4491934c4acd4ac000c5b8e3b3111cacc23c15c0003cd000316c3a2087e0acf4e06043b16b79747f0e901fd74fc39b430683806cf09933022cd09b281e136401424d24dab510bec041b1e06⟩, ⟨0x27a138093c48023311208643f01e50ed86e835a19a0c105d42c81550a504e425011308483e81e00c905e02540fa06502d80d004e000, 0x20682d019b59c498337a49c1200d0516bb050f0341280bdadc4e1aa2dd47a2b8cd1a67c89382468d3d06d13833c0cb1260682e600079ac31000f05c3a717578b15c78b03416d0003cd618880f82d5d3⟩, ⟨0x30717b0b9c5b82cb1520a4851027912908ac4081fa0f1074c38819d0c806042ee16a09a84741ec0d105502480e205c02480f002a000, 0x4599f224e091934c7d90023cd2f11e06349200060d1734000c7d4e8800b833fd381a3e8717624d2498f9e001b96c278c9b0330ac00c35000001871f278a00060ca734001c8a76200060c8f4e211f160d004ad60c0a787916e27831800079b036b1⟩ ] def tableRLRLRR : Table Block := .leaf #[ ⟨0x3691af8d1c67431317e0bc85b62c314e0a244c424a11187f03d61da0e686983361740b3850026c10f074030415208202e80d8022000, 0x10345cde2b89e0e38001e6d506d181ad0165c5cae2c1c20003cd0c52200060dff4e2e2714000c1bee680528b65d19334941a5c5306e4003f2f04c5e1000fcb613c1b50007cd818000c1b3e580018bb9d1000306c3a7176b8b06bc000f36bcf22a76306b4000f3401aca7b63ba69⟩, ⟨0x242119889042a2050fb078c3a81c90db068431217f0b6051426411b08503f41d80e106502fc16408b03a01a80a6044019809802a000, 0x2c5374a6ed4d4d8d22991b43e449c121ca25e895a11d90f0306a89000307779bcca47890658c9a6ccd5069c122f632e13389e0e98001e6e126d181b311659c473f35b89c64d79046a⟩, ⟨0x30f1800bd85a22c214e8a38506278135894c4581f30f107443841b30c905c42a013b09884281f20ea06482700fa05c02380f4030000, 0x184981b2fa01df5a7124075cbe35ed89f13626614c491e280548401cd0190170188dcb3cb1a560d31124e24c4f44edac00635acf1371396be4153c0c22662f572e14d339255b633ecead919cad1670035b28ead31d56bfc153c0d60f91cfab29ca47⟩, ⟨0x2b213f89d44a0239111082c3f81f10f006ec33a1930be05902b012e08203e81a00b8052826011207b034016c09403b0188080022000, 0x1004b5bfd3c0c0086b7da91de98fe5331fc0963e449c1236690243313d681e6118f03710ec9370887a460095940151c0cd6a003478180b801ad14a8951c594d0f429389314340a89f14949a4c24c0d8a6934925469⟩, ⟨0x5c62dc9648ade5652a014bca3c50f27f136c97049524411848744302048cb85862ad14b899042a1d40c9851023e0c202b80c801a000, 0x1c4f0924000f37d2fe88c8c0d9df3d0dabb634ad1a62248c1a7cd7e6ac58007e8587f3479a716e27000308f79a5df2282746063cc9140b97141538723e07254fe41335aa580004e3e8ca11f142ad2b3e1a1171dde50005f177c54002e3e5873d3d1670d69ec31881a6b0c11a7d357f8bc5966dfb60b4f6bf6f5b36f5b03a7b5fa6ddb602d7dd3dafba494db96bfdaf9a7939da7ed3cdb5820e086547151374c69ece1f302f38b3a64e5c35764fd3eb87ae0e9c014d7074fe29⟩, ⟨0x2cf1620ad451c27b12a092846e21f10908043c01d30e106cc3501970bf05a42be1500a3047c2240eb06982ec15409903b0118046000, 0x426308f09a0000f343548800384cbd38183245c6c6e2b89c7cd7e01c1eeae334699f224e091a3484753b44e0cf032c49818000c255e6b0c4071c252e9c6b9e2c6b5e2d29a524d3e8ffa861fd1df4ff44e1c003e8ec3fa2bd178b⟩, ⟨0x29414389f44ac23911788203ea1e80e0869033417d0b28548286136092846821a0e6065830414c09103b018c09603a0168070022000, 0x83340d0a20000f36e0092630342850003cdf1922e27850400079b6d0073181ad9006571d1f8b9e224f24c99a18d3099c4f09dc000f34210688c0c118242c1894e128142f9243e371438d1a74cd9269c13706b⟩, ⟨0x26e12989244582140fc874837a1a80ca86002e21640aa852825a11a08803cc1cc0d105b02a413008903f01bc0b404501d80a8024000, 0x2a00388c0db68032b8f29c500d360e052a152f3650d52148a90d90e5c6ab3893066f49382406bda5730a1e06bcc3695b89c1d156c6652aa4cdd067c893824d24da92b464ccf03409a6377714e647⟩, ⟨0x271131894848a23411488304021f40e686c835018b0bf05b42aa14809b84a023a10c07d83981b80cd061827011606402600d004e000, 0x1f430c9a6ccd5069c1204f152b84ce27858400079b6709c4606e101195b89c7cd7573d15c668d33e449c1234698f3689c19e0658930342b10003cd19388001855dd38e6bc58e67c5713c2ab0003cd⟩, ⟨0x2b01530a4450827112208dc44c21710607ec3b41c80df06bc34a17e0b7852026012607f83a81a40c504f01f40e605201e80a002a000, 0x81bb5556e270cd172de02401d6ad334619f224e0919348064b4db4be47819524c0c000616df34e28896285b1d38ec1c581a16b0001e6cc0ac63b0f15c4f0b48000f3408a56ae303010cac5ae60d5214aa90fd0e7c8ab⟩, ⟨0x28b13f09b44bc25312108944262090fd07c03921ac0c285b42bc13709404041ee0e206502d414008d036017809e04201980a0026000, 0x699a30cf9127048c9a67903e5a5f23c0ca9260600030c039a00ce73100110bf7a71e2f8a611e17d8001e69851004b0be3a703460aae3c2f1660d5214aa90ed0e0192f76bfa18e24c19bd24e091be55d4287⟩, ⟨0x2e516d8af856829c14909ac49c22710607e83561950c285c02b6148099849422810707b03ac1a80c905e02540f006e028811004e000, 0x103536014a6068f1fc581a1928001e6803bfcc4068c322e98079309e1c1965000040026516022d3e3130de58d306a90a55487c873e455f90c3269b33541a7048980cb84ce27862200079a0bd09318183aa0a56e27006809582b3f81d2a⟩, ⟨0x2df14f0a3450227412b88c043e2100fe87803a61ac0c786142d01590a604f426411908303f01be0ce05882280da05e029811004e000, 0x4098cb7acf4015e9c70d3c8d066abc1f938375703d278334ae490e90e0856b2b713c33f0003cd06eb298c0c755612b3893066f4938241b95d710a1e0638b8f958e19c01e3657c654a054aaa20224f9127049c49a8387968034e80727⟩, ⟨0x29e14589f84da260129891046222010988183e61de0e586182ee16a0af853827813208d04401f00ee06b032414406c02a00c404e000, 0x1f043f8a4a0d2e29d331a49559132869a14b8a43244cde9a0304480070012002e5a1721b13e99a13589a4ba4781a3fef16068ffbc581a401f15c4e000658c73258bcb180003ca8fe9c5d0000070f0319ff9627cc⟩ ] def tableRLRLR : Table Block := .branch 14 tableRLRLRL tableRLRLRR def tableRLRL : Table Block := .branch 27 tableRLRLL tableRLRLR def tableRLRRLL : Table Block := .leaf #[ ⟨0x2bc1548a704ea26b12208c44181f70f5076c39a1bc0d7867831e1850b8058429813d09984381f20d405e02c413c07702900ac026000, 0x37916c2700070e239b030001870dcbc052301f65b7b3c1253d0a4e24c10dea69f14949a4c24c0d40aa9349214ca930930342a0004eb418952003c29daff8448784de0a24000c36fe680030a4ec4000c36ce9c81ee2e6687⟩, ⟨0x35f1aa8cc05c22c21570a2c4cc24110f08444081f90eb069830615e0a384c024a10206e83301760ac04d81d00ca05402380e804a000, 0x40c10c685faba14e65fc9d226fc8f74e0070dd270a519c49201c4c8031e8ea4326996b4fa33d4be1e852c29c4da72d17e2745da92000e1f45ba91c4cf9908fe9e7ca64c99cc9c12048d25e32015009f4fe8693e34ae491834c3910019cbd093686ba14b8a418157971408bb3⟩, ⟨0x3671a10c6c6102d51620ad8546290139890046a22810087703a41ad0cf06443041770ad04f426610e077832815608c02c813004a000, 0x3a2669e1e4b44de6ff289ce105cb08cf4e3469b21aa944a28898c41495845b9bf0003a784ce2700030efb9a115e74db181822ace935671260cde9270481112cae210064f030445a24eac00efca38007a23eac00f00a3801dfb4b1bf34441bfb54e2700030eb39a10ce863b1⟩, ⟨0x3021750b645942b91560a5c51a27e13a097049423211407c83b41c20cd86302fa15609004581de0e306b02e411e07702d0140066000, 0x24fcf17a8cff92694cfe2918333c0d9126069387c5a511e50871a060002000a50772a4dff164ea7165058007e3da4984931f74004724000ca070007c781a5028005e4c23389c018865688266001a547d5e2c1800c9e068361c95e711a0e846fa7⟩, ⟨0x23611608143da1da0e686d43561980b8856428c13509404642180ff078037419c0c3058026c11807e039818009c0440160088014000, 0x20697a200079d28678a5e21fc5211e90f030728900032f2b9d28478b6821f34cfe295c92e29a3318493f9139927048768979b343627c21a13582892e91e0693d1c581a4f571606⟩, ⟨0x26412608d044221410187d83d21da0e386e03581a10c806042d815b0a7051025812208503f41ac0a004b01f80de06501f00c404e000, 0x947dc5849287bb90fe292834b8a64cc692451449849c46c123a69bc9164267a134b89e069457c581a517715c4e00065eef325edcbdc0005ca81a511f16923c0c001a5ebf31c4f03000397a9ce⟩, ⟨0x2ea16f8b3057e298147099c4a822d10307843741a20c786002ea16209e84a023c10d073030413408203781880aa04901b00ac026000, 0x3049ac8b613c4470007cd818000c445e5c029100093023a71108000f34001f45762000621ff4e52af151143e449c1218a26208001f5a2786781874d2000621b734001880f620006219f4e5247174843d0a585308c1b22713504143cc289⟩, ⟨0x2f616f8b5056c29f14389d04c2256120887041a2020f8873033218f0b5057427010507d838c1a00c605081c40c805602280d004e000, 0xd464e26a4080b1e88164ca7fe2cda8964913824b8d571158019a7c89382464d3115fa63ad0006226001f4f03444a002ea5c4e000fa59abf533d2b000b55034a6ce2c8287818013f49b57464000800b0fc66ca1a4cd25069714c44b000fcb⟩, ⟨0x33c18a8b945b62b81560a7c4f0242115086c3e81cd0d306702ea15d0a504ec26011d07c038c1b20c805081f00aa03d0130064018000, 0x44b107979a001863000f0f03431000b89846713800183e3cb83e10778000f2a54f714c23c4800003cd000307b3a2000e23ef4e06000307a7972a5b8a88a1f224e090c513122000fad13c33c0c3a69000311cb9a000c47fb1000311bfa72a278b60431e852c29846⟩, ⟨0x2d71668a9852e27012488c44301ff0fa076c3981bb0d506742ec16b0ab0524244118078837016a0a204782100e204e0158070022000, 0x40c0006638f31b1900a68035d4013d0067a92b138b2d20e98f9574e098e99765ca69334941a5c531270003f2f048d5aad84f1260001f36060003125b97282b100333167a777a25d644e096d517d0f865e1e196008c3e449c123269⟩, ⟨0x2de14c8a284fa272130893c48a22d111882c4021e90ee06d42fe1670ad04cc25210207883801a20aa04e82400ee06602680d004e000, 0x38009001732bf90d89f4cd09ac4d25d23c0d2b938b034ae4e2c0d2bab8ae27000332179932126428001e54adbe2b09e6408014e740c004a63ff334cd25869309331ec005f32852e2901af764d1c806b5d94a10f8613800398e7ce⟩, ⟨0x27c13589704a423d11708644142000ee872034a18d0c105bc29012507f03981a60c0059828812a08803c81980aa04801d80a0026000, 0x2934984981a81552692429952612606f3680271a0c4a9003f9af1ff0890f09bc144800189b9cd000f99b22000626cf4e582f173343be087f14941a5c53a663492ab22650d3429714864899bd3406089⟩, ⟨0x29714609bc4ba246117889041a1ea0ec87203721a80c085c82c21540a384c821a0fa0768318178095041017409003b016007801a000, 0x6094e74a95c1a0d4253264cf64e09917d99d5c013e1fd0d27c695c92306989fc003397a126d0d74297148302af44f784b666f22d84e000e27af3606000313cf9780a45e0bd12367824a7a149c49821bd4d3e29⟩ ] def tableRLRRLR : Table Block := .leaf #[ ⟨0x33f19a8c405e22cc1568a784d625812688f04481f70f6077c3701970c685b02be13e09904942040d205d02b410c06302c80d8036000, 0x40c2f6f749ab0037428e001f745ab0037c68e692c004ee7c5efd50e08bc13c26b9371c5596d79001b3c2671380018a39cd5ded96b8c0cbbbb296b6138026c95ae119c4e001dbe62f6f6d8e000e2a4d5f15c4e0006288734ba5b77c8c0c5d1dbae2e813b84cea7f09⟩, ⟨0x3821aa8cf463c3141778b2854a28413a89a84aa23210287ec3b41a70b3050421c0f9073036018a0b204981d00ca05802480f803e000, 0x6abb1e2d51f0b8b88000d1e06dba0aebd5ef0fbc4ea67fb16ef4fb2a06367c8938241b952dbadd3e340076400b2cf036c78155a67f23638caad39b633f89b1a654e9fbb16e2b4edc27760dc4e9ea8d521e227c86eed13ae226fb01fa5df501b4b3893066f493824045f0a5da200347⟩, ⟨0x37e1b68d7066a3281808bdc5a02c314e09d449c22d10a88103ba1b80d0064c30816f0a704b42460fe06e82f01360760288118042000, 0x270d6366b9aaed7f7b2c270007159b9b0300018ac9cb61880048ac3d36bed00c7a600062b0736ad8006e31f8b8a3267000315739bb7b1573b1a1c287e331849a8fb3547001da400aa36d3036dea558eaea3402ed35340176900aa99b4ede254ceaf6f0001357824002dbbb5600355f6b⟩, ⟨0x3c61cc8de06c634e1938c485862b91490a044e0265122087c3f41c70d1063c2b814909f84781ba08e04001c80c2050020806801a000, 0x323724b2dece07d92167bc653839a9e2c3002be687f29c8332c44001a0ef71cd3c0d160832df3720d2f669c1200d5b96b213b60ed3ec1db11e9f60ad837622d38003b1169c3b458035b06ec41aab850f0356980bdaf70d000aa1f000f4fb8610d2000d43c00169e486aa1b0cd25669309315b400572e852c29⟩, ⟨0x47d22c10cc81c4011e70f1073e37a1a38c685ea2c2140897046e2040f187503921a80c1855829812b09083e81aa09c03d8138042000, 0x1bedefa7a9d6bb5b0d3eb5867669fc52000eb5467569e06d6a4ce8d4f24a670e9f9243380cdfd3e7067266ed9f7dd003f4fbee001dbdf69f7bddf6c00ddc9f4fb916e49a9dcd7725d3ee57b9a6e49a7008cdcb3e449c120039b369dfc7738d6800801e6bd9e06002cd5b4c0d1644000f377e8dccb6399d9a19a599767cb3cceb3e5b659666d9f24724f2decf92797167⟩, ⟨0x3201898bb056c29e14889a84c0239110883c40a1de0ea06b430c1750b4054c292138097041c1de0e005d82200e006602700bc04a000, 0x71380019b23cc9b213644000f2a5dff1584f3634001f3a060003362f992ee78a5d23c0c002e6c3f3a069b0a00279c00226c273174cfe2913b33c0c526981a6be8001e64baae298470006380d580031bf8007aa9745c581a5d171755001a3c0c356c6f3ab⟩, ⟨0x29313f098c49c23311307fc3ea1ce0d5060c2b814909b04ac2300fd076037c1a00c305b029c12c08703e01ac0a004101a80a8036000, 0x3b2b013448903a2b04b428c309e6d68003e740c00066d5f3002029ec48016c154ea001e82a7d4e59135da2704d348cba8420f9a67f14ae49714d198c24be9a7324e091a34e9ad5086c4fc8d09a924e7ac507⟩, ⟨0x33c1980c8c60c2df15c0a084b624e11788143f61e30e206e83321820b5858028212a08b83c01b60b404c81c80c2050020806801a000, 0xc46714c5204ca41144a33e4ca32000fc9000d30d8000f1c002cc35e4b89c00efea5c51dfa00a95034a2be2ef80034781b31dbe2d7424b2644f64e0908fbea9709db24324380139b7bce0705380319b77ce00cea0e05326dcf3b4cd25869309336d4005f32852e29⟩, ⟨0x2ef1700b3c5802b614789f84ae24811e08c44441fb0ee874c36a19d0c2859026e11a08383a81860a204781f00e2050014807001a000, 0x1a492e34984981a62c8728e68d1a43934c57e7b627e4684d492438fc61fe683e0058f030105b99530038b30038b92b92f696c14b2c89b3803a3ca724936759849f36ce72f93b8664759ed044bea89c1201d9b56b001f30ff8fe295892e29⟩, ⟨0x287137899449a238115884040c1f10f3873c3601910c105dc2c413b088841c1d00da05c826810e07a035817409403d0160074026000, 0x4c32e2c0d30f78b58aa7f1483486a781a70953034c25e2823e7f47e7c0228f9127048312a439ecc6ee6801e7200e8f0373703d49ea18721c65cfcd00b51e5343d0a4e24c50d02a27c52526930930340a89⟩, ⟨0x35b19d0c345cc2b014889a848621c0fc87483741990b904f025611e08784081ea0e606482e815e09203d01ac0b004d018007c014000, 0x640e4c59f21320325ece3226530f1c6444a601927c70031c28f19942547363321574e680018cc7cd000ffb722000633074e52ff15d1f532ce0a0a647f1c140cc8e04ffc7cd33f8a5724b8a68cc6124079ea539927048033bca6285221b13ce926c4d3900529c133d0999e06⟩, ⟨0x2c01588a8c520283139098c4b224611b889842e20d0f6076c3741ab0cf064c30815d09e04a824011107c83841920a8043816805a000, 0x389314340a89f14949a4c24c0d12a24d24979a4c24c0da4403d6d1b3480e6905bdb13c19a136249000319df9a02ba35717491e066c5529bf8b29bf8b2a238b91990967c8cc83b3e45e41640d9f18ec87226cf8fb91791167⟩, ⟨0x2c715c0a4450e27a131092841a1fe0f7873835a1a00b985a4290133091044c2100f306902f416609e04781d00ca05a023808001a000, 0x1a5100071aa3a70330ae55e71655e716b8600100156bb0ffa9bf5364ee4dd9c0b726ecfe2900102bc99b3c0c053931699ce53ec19f224e090665481b69d5b460ccf030d12a6153400baa7814d0983743c68d002fcd94d0f429⟩, ⟨0x2e316c8b0456828d13b09b04aa24411988903fa1f00f1874037a1960c485882b013109203f41ac0c505a02a413007703300d804e000, 0x40d2b738ae2700031b1f9b95034606c8799786692b3498498d80002b97429614a708b0dd173a00feaf6584e000e35cf360600031adf96c3100211ad3a67f3a00cf4f14d29669c12746b001ccfb38c9ac011fcb666e28c2380018d57cd⟩ ] def tableRLRRL : Table Block := .branch 13 tableRLRRLL tableRLRRLR def tableRLRRRL : Table Block := .leaf #[ ⟨0x2c515c8a484de24811b88403ee1e20ea871c36c1a50cd060c2e015f0aa050c27212208583f01ca0c004681d40cc05702400cc030000, 0x148c0006374f34003724c8801c8dcdd31e3380018dcbcd8319788e119f4cd2434d9a6a0d38245fd65ae28baf35e09d835c0ddc632c0e663b84b03118e000c0bdab000605d018b552b8f8a791dc2598470675583306aa95bfc5⟩, ⟨0x3981c60dac68831d1780b9857e29813b894044021110107b43a81ca0d286503061780b185002200ef06602701080750358120016000, 0xe46001c0bb3ced01819ce9da0303b9d7500020076781a7660cede70cec9d97cc001afdb3ceca19c7ceb9c007c13b8730935a9aa0d533202e781809a8217578e696b34e0916b55dcb5793875df5cb179187001bc4b38006e5d8b000dcb578b8a960bc5c48f03008ae538b000800ae48089c3c26⟩, ⟨0x3d21d88e706c634218a8ba058a29513a097c4582150fe078c3841ad0cd061c2e815b0a704b424610a0800364128073017008801a000, 0x235eb0ad31ad66ac8abfac1abbb3d6bd6459eb12b5ab1ecf5a56cb5ad67b142b5b0eacdb13ab570e003b9369dc3b353ae5e1017ba7b749937ca4ebbd4b75800e05da7016cd04226c8449ea8905a773f8a4040e95cf030151ba6069db233eb9800801a0195ff7ff67008bfeb3800801005e01da059f11acdacd466⟩, ⟨0x4372090e1c6f436d1b08d0864230016c8ae052226a12288903fa1d80db865831215c0a904c42200e305b025410c07b02d00dc014000, 0x1b630326ad99a82b41620a7f4482ab24b94c002002c3e19a0cd08c007dcd1deeb68eda003b27671b411d0b9a003b37671b451d039a000639ff34da4816362003c19671c1f1cf39b4f92c8ba70d6aa1b3db4569d9fc520036cd5a36781ad96b3ed3a9359567d48ac9ac7b3d69565d62d9c022b26cf912704800d635a6ca0d94c6800801d6259e06⟩, ⟨0x3b71d68e3070435b1958c686122ec16c8af052a27a12d893844e2060fe076c36c19f0b6052c25411f07f02f4138069024006c014000, 0x40c0055736981a797bb18e615fcafd670c3e39a5acd200f2d29e464cb0f0527583815724e01b041caedaea5b89e3ae0001e6f12ad5dc606e245a9b58003da66a7801d33b5df873b5ba786a865b4c32434da704c31c4cdaebfca82361dfb5b4e00d2db69afeaa062f9f4f7b57d967be3bd9bebb3e899e06⟩, ⟨0x4c624992248c843f2060c546002df15f09f445c223101076c37c1ab0ce06342d014109a04342060dc06502cc15208202d80e805a000, 0x1fd0a5dbd3c0dfa04bb5a997165d1d3cb87618cbd9a73b20e8cb0c391edd0b78f167c86b21a486a5eae5da0005fde2198868ec174f78366995c23b4e0f611da400297597a7371f4e000cba92eaaf4c6e369e13000e0f59c6f1477de6f93e5ca68d44f6495892000f04ba770453cff98c2776d73cf79d033b699e77cc2a11fb0fd340d3cddd90739d8fcf36e6002d5ed9fc5200200757767⟩, ⟨0x64d31317c0bb05cb2d21668ae655b29c1454a144e7261127492048323c114c8403fb1eb0e8c6fc32f17e0b6c11206402a812804a000, 0x67b97327b8cf720003ca9643c5613cf6e0007ce818000cf6ce64b1be2e9b34cd89d32e9af138274c9a6fc65581014e9da5f88d74f429614e2688ada5bd4b4b51180003a7696622fd4c3610d96a7db5b202475d3c8e9671e9ee5fc1f455cb189dbad3ecbd524d87ba78bf8a5b39e20358276d5235ac65526efa06273abc25f5e1565f289e993580d88dad140c98444d8dd9253622649ec90dc520ed31d2eb0edc94b74d6f3421d843a08752f6c00302d505a90c54fd238ffa3cbc1a7c893824001977b53fad7e8dad⟩, ⟨0x286139893044e2000f407543841b50d2065c31417b0b4055c29413d09504542040bd057028412c08503981a40a2047017809401a000, 0x3c14480018f93cd0007c9dd880018f8dd3968fc5ccd0ef821fc525069714e998d24aac899434d0a5c52192266f4d018224003800900173e7390d89f4cd09ac4d25d23c0d2cab8b034b2ae2c0d2cb38ae27⟩, ⟨0x27f138097c4a4245118082c3f01eb0e206e83261800ad851827212a08e042c1fc0ed06f035017e0b004d823010405d024008c016000, 0x6849b435d0a5c520c0abdcf3cc9d99bc8b61380038fc5cd818000c7e0e5e0291f30b735d9e0929e8527126086f534f8a4a4d2612606a05549a490a654984981bca400275a0c4a9001fca2d7fc2243c26⟩, ⟨0x3951990c345b42b71508a404fe27012488f045e20c0fa874835e1a20bd85c429412c082837818e0b005282380d205802380e004e000, 0x71b0e2d3f8037d91584fd9f1fe81997b4f32e7d0132ee9f9c5ce4c4eb730da6692c3498499f94002f9942971480075ad8c136da4001d6a633598059cc309c001cfc2e740c00067e0730082a8d2359b0da7a86b161b475284a64c99ec9c13227333ca5009f4fe8693e34ae491834c7eb0019cb⟩, ⟨0x3801b98d3068431b1860b945b62b414789a04a024110d07d439c1c40cf861c2c013b09604842200eb05c02b811207d038012c030000, 0x61380039053cd818000c827e5d25100193faba70300019047cd0006c56d880019041d39b15c5308e000640f734001fd8b62000e40df4e060007f5fd5cf36e2c6315893c7b124008d3e449c123269b11ff5cd680036220007a781ac4200175308ce270007f52d5fea3faa8003aa9e53c5⟩, ⟨0x40f1ee0f1470835f19d0c5451c27a13209044341f50e106b433c1790b2053c28812f08e03d41c80bd04001c80c20500218070022000, 0x32e8c8b3a7941b4d22cc9d9263c9eba793ea4f2d4ca0127beae4ff93fb56e57395f246c91600080044768dbd29769f73d1bc6186000f43f0e7436420735ca0fed74ee23b93ffda69c189537a9bfb1005f4f05aa9b1f54e09ade5587687906a00639a3867906600379a001e49f0ec01f879a1a4cd25069714c82d000fcbc12d66b⟩, ⟨0x3e71eb0f1c77a3aa1cd8e206f236f1a70cf463830d1800bd45c82bd14e09d44ba23011307e43c21c90d406041e20b0037812804a000, 0x149a4c24c0d32a24d248a28930930345e0055b474d20111756f6c4f46684d02690003216f9a0031697100032163a732df8a0070bc0036781800400a172d532c78b32c78a0031216790a2223b9a933d2eb9cbb001c23e529d000d0dd52c738f2674bad23049f9a7917e5d593ba4fbd3ca1b27c6a661593f75730a4a09ab⟩, ⟨0x2eb1620ae852627612c88c841e1ec0ef86bc34a1820b6857029a14209684301f40f006d8330144097042017409403d017008001a000, 0x50533e7dce818f9e5051e66bdb04a401d724f221447ef37ea3f4fc380bbe9f87f148004059f4dc3c0c02afa66268354f9067c89382419d520431a76d3d91e0616354c4a6043fc00f51e1306e8790e2005f9b29a1e852712628681513e29⟩ ] def tableRLRRRR : Table Block := .leaf #[ ⟨0x3361918c546042ef16f0b445802b514f0a4c50c25f11d08c04161ea0e286482e216409b84b421810206d82ac14207a02980d001a000, 0x3744ed0dab226b9448c9a6ccd5069c1226532e13389c000c89fe6808bf8cec6060113f17d5800c0bd9c001fc575644ffe284506a801627ecfe2900100389db3c0c0051376981a82d1f4de67a14002003c3c0d415cfa5738fa4d056e6001a65470a7b415798c27⟩, ⟨0x3681958c285ee2e31620a9450826d12608ac42c1e90ef074837a1960c4858828213708b04241c40c105b82580e605d02400cc028000, 0x43a7afbeb402bc380c414da43144fe0a37df0214901ff7a920d904f6bd6a996003193670288c7b58b0a9c0061a400acf89a11a046cd22ec00ef35c4e000645cf3417e376e30302f46ddadc4e000645a73416a29ee30302cc52dac003f5ac4fd470d344a986554801ac149ab746⟩, ⟨0x30b17c0b545882b71540a6c51c27f137097c4a8243110084440a1fa0f587203761940af051827211208403841920a803d813805a000, 0x5348cfef00430f9a67f14ae49714d198c24be9a7324e091a34fd6ffa7886c4fc8d09a924fd4ff5b877138001a13fcca13d427c000f2a6baf1584f426c001f3a06000342679935bf8b32d2d76796799596ab3cb9cbaccad9e5d665acf2df2e932b67⟩, ⟨0x3ab1bd8d5065a30e17d0b6c56229014089d84aa23410387f43b81d20d586302d2139080037c1a40a504d81e80e00490188078016000, 0x4005fbec9001b88f9d4007111efa800707d26f651b02dfba3e01c097ea8e01132d67c89382400664ed3388c136d001003991b3c0c00531f6981a47d0001e6f9fc0751ff126270ffe14c4261b0f3233113153096700598ab3f8a400400e622cf030014c35a606000342df9d36338bcb226bb44e09⟩, ⟨0x3601a68c9861e2e81668b0c53827512a091c4342100f7879437c18b0bd051c26c12508b03bc1c40d5060027411006502c00c404e000, 0xf90e007e878f380d6638057a1dfced810d4f0350ec006dce006b43af9800b3db67f14800801cf5d9e060029e9b4c0d4390017732010270c7bfd3e4b9a00e26d2005d3e99a4b0d2612686e800be650a5c520c8ac004ff17240c4ac01fff0f30c27a1aa000f9d030001a1a7cc⟩, ⟨0x50b274130493446422090447f63c81d18df06ae3241808b6854827f12488903fe1da0da8608298137082037414e08002c811804e000, 0x6409879292480b9b03353cd71c0df40cc4f33c7001572b0f13a000d7270f13bc360890ce44bda7b0421b7d3c00d581dc7b037e2dd3d6d96067c59a79adcd4b0f0b2162971e16313564379c7dea3770d4c1fc8ca6def78fbdd6edda7ddb776fd4eeddbb66a7760ddbb4fbadeebfbb6e9c000c0006b39c7a88b3531f4b66a6ba757fd1e038eaff55aec77fe3c2685703c757f719238f1522400de0a39fdfa1e7ce⟩, ⟨0x40b1fd0fa47b43c91d10e4c7043751b40d5c66432118a0bb45c62bc1578a204e024b10c07d439c1890b3050c1de08c03b014c060000, 0x7a1a4f8d2b92460d3259800672f424ea1ae852e291935ff82ec56ce1cd6c27000725779b03000192b7cb718800192b1d3a199c57607fb8d9cbabef2b7dda7000ef730e6f764aa7363f528a74f511fb78f1498a661e27978ac3c7e7514800093d2c7eae3c7e6514600053d227a38fd3c7bc3e1a41120ac4c7da41d878ff47d641b87⟩, ⟨0x3661aa8d1866a30e17f8bb85c22d41618a7851a28012c893c4502190fa07703a41ab0c3057c28e0fd075035c16008b02c013804e000, 0xf8d2b92460d3261c00672f424da1ae852e291e35fe3c0046cdb0d6c27000725fb9b03000192f9cbc4a2000fe2fb3954bc5818000c977e680030caec4000c974e9ca9de2e6643e8001ec2801b0f194983543c970002dcd9f10003d3cf853e18005a7818000c96ce680128d8bd1⟩, ⟨0x39a1c80dac68c3211770b244fe27412988b04321f20e586903261820b9853027e13209084401d20dc05a82ac10807702800a4022000, 0x2068720035d680030ee6a4033871b5f0ec805c000e9e1d900bb52264ce2bf5000202dc3c26ff3ff5b480019343cd0d122009a4cf74c000c46ce3c46d8925cdc334959a4c24c9990015cba14b0a668d6326ba3031227a6c279324000f9b0300019321cb7188001931bd3890545eba72aef8be869⟩, ⟨0x36f1a40c485de2ca15c8abc514257125890043a2070f006ec32c16f0a4048c1fc0d906602f416009f04902040e406802180d001e000, 0x18aa960fc731532c18c52f1c0038a3c3b14dd4f6ae04cf035effd4deac001000bad7d3f23626000e28b1389dc30001937dcdbd7fa94d880037bae9d7b9c9bbe6afa1857dc7b652f66d3c3d90f569e1ea00ff4f4293893e66e534f8a4a4d26126068788005d49a49000a1e0d49849⟩, ⟨0x4af24511507883ad1cc0e0c6b834f1a10cdc6202da1598a384ce2310ee871836a1a40be851c2280ef05e025c0e006502c00c404e000, 0x5b2cbd569dc3640b538cfc754fe00051342d366ff4f319c47c0b49235c7b35f4d13ea97a154bef78a0dc7a14b0a71344fc7de7c97de51404000f1df78c500e4c4c1f6569e1b3c35de3c36386cd0d738ef7f5f7600017f930d9f8ff8669b60d2f8697dd70d8f8efbaa1b13ed5e3fdcdf747dc7a7fbb3ee4d3fdd7f71fdc5a70007edfd3bee8a333cc84cc277df9465b9d033efaa329cc⟩, ⟨0x3c51d68e306ee3661a28ce064e31b1850bfc5e02c91540a0c4ec24f11508803f61ac0ca851825e11807a8378172094037812804a000, 0x1371b8a003cdb69e68b36419fa04006cf4661b34e232d1a6131e47000b27ff9a003cb967397ac74d5b89e4fd8001e69cf5638ec6063a0ac6fd5af60001db4c000dafba7b6774cbd72f3800080056d0e9f34bd35ab3a6000decb136cb69ad95b67f536ca5b4ba9b692d93d4db396c96a6da3ce23596d16709ac⟩, ⟨0x3801bb0d786723061728b005622a7141090446e2100f587283761b00cf85f82a214709304641f00cb06082a413407302900ac042000, 0x81a700716c243a774e74bd84674e69c007a72ce74cd87faba48f031d5761e6ac01c00066b63a974f030001943fcd3a92c38d8f4d00659f224e091934f51f515b4007a5401ecf0374d002da5c4e003d3d6be9ce9d002b540d379f8a611c000ca0fe6800f4c5c4001ca0ce9c0c003d2b6b⟩, ⟨0x2fe1778b7059c2bb1540a4c4fc27312f092447c2290f407703a01c60cf85e82a614608f83f81e80d305f027411c07f038012c030000, 0x3b5306a89ba1ad444cea89ef255f4c2af04adc2ad6b957826c5156000d8720010009a7a46c46818000ca3ae680596626c475d4a38e6b89c000ca36e681475f5c606029ebcb5830a9c07baead6791dc2598470006cb8d5800365b8007aa9c01c5⟩ ] def tableRLRRR : Table Block := .branch 14 tableRLRRRL tableRLRRRR def tableRLRR : Table Block := .branch 27 tableRLRRL tableRLRRR def tableRLR : Table Block := .branch 55 tableRLRL tableRLRR def tableRL : Table Block := .branch 0x6d tableRLL tableRLR def tableRRLLLL : Table Block := .leaf #[ ⟨0x34d1940c545dc2d71600a7c51426912909204421fc0f5876839a1a60cd86282fa1560a604942300f106c82c80c605401e80b802e000, 0x1fdc0065a70cd0f29a000a7362c264c188c9001eddb4f6bd980afb6ecf08131e06000329839a00659d5b19334941a5c53296c003f2f04c39ad84e000e52bf36060003295796e310003294ba738c78a3b6a90b74c013b12eca20004016d3c0a6030993ca99c4164c06ec9⟩, ⟨0x36119d0c546162e415f8ab853a290134897849a24010c883c3d01db0da06702ea1600a484e42360ee05681e80d605b02200bc04a000, 0x12a28007f340028c034f030001950fcd0032d11d8c99a4a0d2e299504001f978261cd6c27000729fb9b03000194f9cb718800194f3d39cb5c51e0548f7a7ef6a7034d93418ceaa3863f7701c814d9c06d9c1ecc400e34f636598601be9cc24c2634106c9cc153c0c030d9edab⟩, ⟨0x3c31da0e646ea35d1a28ca864030516f0adc520269121086c3ec1d10dd06542c413d08e04141dc0d505f025c10405b02880a8022000, 0x184700c76171c0080a152f578b2f4f8b0400c1e069545e16ac5e5547255c5caa8e4ab19954fc957192a9f98ae4a553732552ab91e65b1f65eea7d63e14b5750369aceb3bef4e77a59d477d69c092c6774fe220136755a193143b1c1a1dce06f31e548805ce683229e5478056e6c0d2a3403ff36523dd23c67⟩, ⟨0x30317a8b6856628e134896048e23810888103ee1e40e886a833a1760b6051426810d07e03b41c40d1056026812007f02c00cc018000, 0x710c019c41c09ccac8e68003154e9e2aa8b975b86692b3498499584002b97429614a308b0dd174ab0098f4d84f2aec001f360600032ae797827102574a9ba71667c89382474d31688017ad2f11e0619348001955dcd00062ccd880059557d3a46⟩, ⟨0x34018f8c485e22d01578a284ca24010d88283c61d20e086c831617e0b8858029e12808d83d01d40c305b023c0ee05001d8098036000, 0x2f79b4b8a4063dc6d6003eed69f6f016b5d9fed7eeac0148ffb56009da8babb510012d58e99c0074ae0e6e19a4acd2612656e000ae5d0a5853526b1835d2cb1ec3d9613cad50007cd818000cad3e5b8c4000cad0e9cea3e28f598f51d3ae554c952a70488ea50b⟩, ⟨0x3a41c08dd06ca3571a30ce46503191878bb05ba2ba1558a844f825911a08103f21d60d786282c614b094041c1380860328110042000, 0x86f004b0f42938930437a9a7c525269309303435800b89349200286a624c24c0ddc90013ad000c34312003f721af86680040058784d0cc000e24000caf6e68003dc5ec4000caf3e9cf3be2c31e18b87fc5f15b39efa075800203dc7ca7c886d9a7d8361be3c01ad200bf1d6900e454f17e61e536b⟩, ⟨0x4db25b12447c639e1a50c9c6042cf15509dc48821f10908143f41d50d105f427011308103c41c80bd059027c12406b03080e804e000, 0x47436fc69e377b8ff4e9075c6423a883e8e4e9f0339cf46ef2cc60a39da6e3c9d8922d228d9e1f1c986c8a24ffd24564ebf1fe9df51c4e93bf0169f49cf807487d3e93fa4be9f49ed25b495d3e92da4c6927a7d25be39d3d0a585389be2cd24b53a48fc68000e9f490f8cf528dc60f21b391f4dc7eda0021d3c99a4a0d2e299626001f97824de45b09c001cb0fe6c0c0006586f2f0148bb918151d3⟩, ⟨0x3981b98d3067232e18d8bd05c62d21638ad851e25912088c84502010fa07a83861b80d586102f415309d841418009b02380c404e000, 0x695dd4d3120015cc0d11309833448006a61dcc94349c1a704979b0000d308e65307a6100007953ac78b491e0600134c0f98e2781a9800006e74266138003a5fdce818000d2fce64ea4e2c4359bfacf378e4c5d40444349bf9c7001275bd38001500d10c898a8002e3f46f0d0327f29657cd⟩, ⟨0x4392120ffc7e03e11eb0f047383871998c386022dc15a8a404d224411a88a840a1e00d6868c2fc15709902c414607e02c80d001e000, 0xd8a9938e601d43627a54d09a7055326ecbeda78e553ae30845c004a45ccb6be3c6bb1b06a74cc000c633a796bc8c6b9a000c667a746692d739a00446c1a7c8938240018d7b531bb46b7ad00040038d6f4f0300031ad6a4000cb53e6c61f1b8ec5733ae1f488d0875cb1800196b4f8bf8f04352c00046a696c0027534b00011a9001e95fd4e449⟩, ⟨0x34e1938c7061e2e816f0adc53e26c12a88c0446216105879836618e0b4851023a0f606882a810a074033816009603e0178068016000, 0x29a90006e74266138003a6a1ce818000d34ee6529be280020c6de59a7bbb34dfa97851a7a14b0a7137849fa7ea7f4df08c001d3fe9be11ea7f4cfd2b4fd8647fba757ab224b8f0bb615ef1e95a7c674eb90e465f1e60c00434f9a67f14ae49714d198c248f7aa7324e09⟩, ⟨0x3a01be8d9c6a232e1838b8853a27812988b84121e40ea86c03121620a7851026210a07c83a01ba0cc05281bc0ae04801f005c014000, 0xfcd713f2fc37ccb0c001f9161cf96d36fe653574e0e9d441287f9ce0f6538f599e9f7a9bd28009d4de940056a6f450027520045e89a9e892000de85a9a6ca002f994d91a9bf303444c260cd12001a9b073250d27069c125e6c00034d6b994d669ad0001e552a8e2d247818004d355e6389e06⟩, ⟨0x3ef1f00f5876a3a61c28dd86d83471930c045a82c91540a044b823510e87f0322118087039c18409d04702040e006502c00c404e000, 0x184981a1c8016d2692400a1c2d2612606a678009d6800c365a4007a6735f0d20020056784d0d00036900032ef79a000d32fb100032eeba7418b8b0c70c367816489a226620f000a983a3cb4f02c113244c057910700034c151e3a781a5da8001e6916d10e6c69d081574e7126ccd4a6984cc27a6eca7839d0329dea6e9cc⟩, ⟨0x2b81548a7c4f026b13088e845e2220fd87c43941b20c685f02d615e09b84b023210c072836c1680a103d016409803d0178078022000, 0xa48f030009a761cc713c0d4eb400373a13309c001d3abe740c00069d4f3291571696500874f26692834b8a65ed0007e5e0937916c2700072f5b9b03000197a9cbc0522a66e0b7f4e1e804acf42938930437a9a7c525269⟩ ] def tableRRLLLR : Table Block := .leaf #[ ⟨0x26f130095448421b0f707903861b00cf86483061760b4856828e13809684702160fc07783901a60c605e029013408203a8138030000, 0x6449c121ba2626d0d4ce6800e9e80a59e06d3b013b4ca087cd33f8a5724b8a68cc6124f144e649c123c6979343627b334269134b89e06a4b3c581a92e715c4e00069daf329da53b50003caa46fc5⟩, ⟨0x39c1c78da06b234e19f8c605c42d81588a644b024911207fc3b41b50d205fc2b0133080037418e0b205382480d605602080d8042000, 0x93340b80011c7c893824d24c3f48171cd000302cc001f1e0681640007934e1b8b50a8003060492ba7c94d5178019a9a8ec00dd4d45e0066a400ba8bb5344690006a2cd4d3e10059cc923a8b0d3d153246d15fa7000fa4f0fea3c30392a613038aa401253d9e64f12a6199538260b559a8403367⟩, ⟨0x28f134097846e21f10907ac3c21ba0d106542dc13809584602160fc07783881a60c2058829812e084039018c0960390178088030000, 0x54120007ce818000d410e653a4e2b09c001d40ee740c0006a067329c2f15c4e0006a04f32a03d408001fcae3336087f14ae49714c198c24cb9a60cd3824c24a24885491cc24d374e2ba48f03389e06a717c5⟩, ⟨0x23a116888042a2000f2874037a1ac0cf86403061760b3855028a13a09484602120fc07883801a60c9058829c11e08202d809401a000, 0x2852c29c4ddaaa94fa054e9f4a99410f9a67f14ae49714d198c249e289cc9382478d2f2686c4f66684d2269713c0d4ec78b0353b4e2b89c000d416e65415a82c0007954eab8ac27⟩, ⟨0x2f51740b0451627313308fc46a20e0fe87b03ba1b60d4867031617a0b4855028e12008b03bc1ba0b604f01dc0be04a01a80a802a000, 0xe2700035147995142a288001e553f7e2b09ea268013e740c0046a25f334cd258693093511c005f32852e291a36559c860d9912b8613d43f0007ce818000d43de6170a400063f37529e771401547e4ea53dfe2cf0aa609953825f9558c7ea7⟩, ⟨0x28613d89a048221a0f9876c3901b50d4065c31417d0b7056c29413d09804742100f5058028412808903c01980b804401d0088030000, 0x21378289000332a39a0006500f44000cca5e9d41de2e66877c10fe292834b8a74cc69255644ca1a6852e290c91337a680c112001c004800ba8f7c86c4fa6684d62692e91e06a801c581aa0071606a805c5⟩, ⟨0x29014089c04c625612088704121fc0ea872c3481910b6055027e13209184542080f7073035c19a0b8054825010a07b02a00fc030000, 0xd093686ba14b8a418557e0e0011b337d16c270007330b9b0300019981cbc8522000f82bb3a86dc5c1253d0a4e24c10dea69f14949a4c24c0d40aa9349214ca93093034a080013cd062548007940dcff84487⟩, ⟨0x33018c0bc45bc2cb1600aac50827513509644641fc0f9072c37e1b20c5855427a12e09203f41d00de05b82400d205802380e004e000, 0xa859c5014f2173a937225b244e0932855ca3b0011c7c89382464d328ea51df34000ca360007c781a51a0005e4c23389c000ca47e5ca469468000795514b8b491e060031290b960d8a7818000ccd2e68001947dd10027333fa7e8693e34ae491834cccb0019cb⟩, ⟨0x3401998c305ca2cc1608aa051e27612e88d841e1e80e786a032e1700af853827e11808583f81da0d406182a813a076036011404e000, 0x614d4d10103cca9a0025b98ff2aecc12fb2aec94927648c9bb00631ce0236a64f3aa640016e70015a98fce01b57380b6a98bce1e33800fa987ced334961a4c24d4bf0017cca14b8a468d81506f2183657c0be184f52dc001f3a06000352d798041fc69000190bdd4⟩, ⟨0x3e31ec0edc7243711a80c8c6162e615989904822110fb07b038e1a20be856026610e07a83901960c005382580fa06402580c8032000, 0x609004a33b5c74a227e9c00773ece00300d6b001805df0b551b4e2dfb57f0e9efd6bf66fe0d3aaf778ec6f17ebaae7a7ab9a02b0e7e2ab920270f6900c1e06289a384d5c772084ea63cb042b531dc8213a904223b8d481ff1dbea40749d3aae6d4d174e09d3d0766639a361dd3180ee9068b7482c23a60c11d30404e9⟩, ⟨0x35a19a8c386082df15d0a544e026311808604161e40df86d43201810b9058c2a413d092846c2060f606782a814007b0318108042000, 0x1ac9362004e6a474e060046b21d58003593e9c003ac7f56000d651a7615800358e564daaa053c571380019a7fcd8a70008d8c0d14d800dab3c8ee12cc238d1ac64cd540778b03501ae2b89c000cd32e6c51e001ec6068a38001d5d017e2808c0cda68da066d746a00d6b⟩, ⟨0x2a514b0a044e6262128890843620e10087b03b21b20d285f82e814d0a004641e40e505f02ac14208e03e81c00be05402080d804e000, 0x13a9a65953243619a4acd261266b2000ae5d0a58524c0ab0fd17553959cf6584e000e6aef36060003356f96c3100313563a6acca41474dc4e00066ab7359448c0dd922c68d3866b934e0966117098c2380019a97cd⟩, ⟨0x3f91e90f1473c3941b68d8067232117d0b8c5982bc1528a384d224410f87e83aa1ca0d286002b614408f83b010207202680e0026000, 0x1553d52276584e000e6c4736060003361b96e310003360fa741b78aa8f2373f4e949648186c98ac6890993061b262db01175716d4451ab000622ad3c44d113eae22601075782403f88935710f0005a98858001d3c42da68872221d3c43110dc441a7294a2090006af729463c706eb4f829aafc008f4ed54a9abc0021d386e89⟩, ⟨0x2e11670aec55829f1480a144dc25d12988b84121e40df86b02f216c0a284c8250111083838017609404181c80c603c0178088022000, 0x136a2592449c498337a49c1223b32f84cf0300e701e6ac001ab0f4e001c075ab0006ac6d38748b0066037ab1354e270003366b9a6b24606d251970300019b2bcd000602fd880659b25d3c334959a4c24cd8f0015cba14b0a6a4d6306b⟩ ] def tableRRLLL : Table Block := .branch 13 tableRRLLLL tableRRLLLR def tableRRLLRL : Table Block := .leaf #[ ⟨0x3e11e70e9c7183711b20cf466630c17d8ba858628d139095c4662180f8879037a1b30c6059c2b014d099042c1b00ce0548088022000, 0x19a1c0c3d591e70167f099f01212c2702ab56379d030153ab17ccc834bd9a61280196e3819c849e06578f9dc8c1eff8f83dfb1d8b83807170702f7560b98c27ab0005db9d030174aafdccb02818ad3e449c1201c3c262c02c1ae68003602830ba781ac14060f52b0380020010303573c80876d1dc983de9eb1cd58e6⟩, ⟨0x51a27b934898a49e23c91bc8904231fe0f5c76036b1a30cbc5f221e10387d035e18a0b184f824e11d07b034415809503700e004e000, 0x3fd2c3bfa9522eadc4e00066f3f3743ca90b630347d05481cb000742ad3b4289bc5cd0007456d3b46a9bc1cd1ebf13421373463e38003b15ea75aed30f0e89503c3f8f114a2c980017c58f209bda37b2000409656a926401e250d5638a71e183d348f26889e88a18260005e3cc4a002e9d11bc51de380030ebea61d2d340d3748000f36224c27762000c463a7873f4d0c6d10cf1d109431a4431c71833d59302b7ce⟩, ⟨0x3131760b6458c2b51540a5c51826712e093c4502030fc875038e1a20cb06242f014509684781ee0e806082dc12407a0348160066000, 0x1b9c13d3cc5130c22464d3666a834e090032391d5c26713ce000003cd00363d6d8c0d1c5c7a9ab61380091e96ae119c4e326b00223ce00075543478a611e6fa0001e69851470137c7a70346fc000eae865f1694d29269abb9fd8d3bfa3576bfafa7⟩, ⟨0x3b11ce8dd869e2f21740b04500270132096446820d0ff075c36419b0bb057c274107078037419c0c3058022c0e606902b013004a000, 0x17aa8d1fe63fdf24001c7f7e3c522000d4e08d4c52516de9e068ffb38979a000800557ed64da786c6a4684c000e8f9a768f5387f9be299a704e1de680031c76a6389d347111c6ea6389d300051d469e3a100063a7d3c745a647d0f912704878898fa0022d6847a43c0c2c22606000338339a000c7c5b1⟩, ⟨0x41b1fa0f347503811b00d2067232a1818bd85c62d91640a4c504271131095c48c21f106880c3e81cd0d305fc2ce15d0a282d4120000, 0x59c93d39c9200079b21c4865b19c8e00079b7e600371a59fc5d8934926a650012e5b09e0346c0c3c6b00445c0000061f71a630cf9127048d1a6a5f0007e697c8f031c49000338cf9a0006a5cf44000ce30e9d4b8e2c0d52d38a3b582f58cc70bd48a6153b11af452f20538f19d467ba91da817a42f40cc59024a9d08d6a2960003c7⟩, ⟨0x3e71e40ed072236a1a28c7857628813b89a04862100f587183661a90c2050c25c12108a040c1e40e505f02cc11807f02c013804e000, 0x194b4994546000f52b0e755a733f34001fe0f4efe12732f340070cfe90968b3d1675130e3d556006cac9a78534ce49912e561d3c8952b0488ba7000644ad3c88d223eae6143c0dc774889ab0006aa10008003d3f4a59b8cde669334941a5c533948003f2f04d2da0017cb613ce4e0007cd818000ce4ce58001a5abd1⟩, ⟨0x3c91d30e547083771a80d1463c3111750b80572292135891843e20c0fd871433c1860af855425c10906b02c411807f02c00c404e000, 0x1e14f0b62e4cd25069714ce86000fcbc133fcdfc772d84e000e7417360600033a039600067f7745fc44e7de98003fb8e9e73e3fc7e6c1689af34c29c900d17bf8e0006226f2622471a401c3e3e3c0d58f213573bf78e1e74fc397eefc3c69c001e1cf4fc3afef5ab71380019cddcd91dafddfa30348ec7eebcb⟩, ⟨0x4ca25e12a48984362100eb86d23241738b6456c2a013e8968466210101077c3781950b9053c25810506f02dc15808902980ec046000, 0x3c86c750e000fdde00121d58df3ccda789f61a29f8621cefbb23fbb1370008782a475f1ceec3eeb21cd23ab8f1fd4efe313591d3c7000f8fbc0fe31c3c10c001f17627c4d86f12f8b713e2cf126264931e27e58007c6d89821801fe35c4f8d001d8991d6788797e27f12627c67e24c4f8dbc3d8b9248787f97248c00272c001c922e5e09000f86f17247c0008002e54fe1e2cfdfe28007c1b87⟩, ⟨0x33017d0bb05bc2bb14a0a0c4e426311e08bc44420d0fc074438819d0c985b02b613408683f01da0e2066829812808a03a813804e000, 0x9038000400171e686da18003e97c3cec63d31cdc334959a4c24cec20015cba14b0a48c9560e2abad63251fb2c2700073aef9b0300019d73cbd138c9419721d39d6c77d79b1667c8938241995200924a1734bc47818189533ab4000f34000c93de8801e9d55d3⟩, ⟨0x65f32418dcc205eb2d5164cb085772b31554a96526280937096e49223691208423eb1cb8d4860628212607682d015d09c044404e000, 0x715da6193380019dd1cde8e7a67d8f3cc000800fc06e9f82cd31849a33499a4a0d3037465d2feaf7fbe77753d2df3bba9e773a5ad4f45dd2d6ac001e9734fd2c74b3ab6f8522ff8edf064a048bee3a20689eac2b5e3134e3e3c4f4440ad2f2838f1f3a493e6baf88134bbd384ec86c4f3960d8b21a7af5167d90c71deaac59e6249c7778b3d0deb1c1af79c70d81ebc71d90ac808614ec85de2e04e90003c784c000e961a7695b3b379aff82321274c63c4000c8873f1362bc0160a7f321178b0c28cf13850ae3c903920bc9⟩, ⟨0x68632f98e8bba5d12e316ecb2856d2a314849f44d716f8b2056e29213689203e81ea0e186782f215209684201c20ab0430140016000, 0x44f0ae6f3ccef869f9e40004002000de6277b74fc8d09a133aa19e09cd9e0600079aea8e033f44001ff1f4f3c02024f34093e3fc3b9ba9320e6edcdc3da5737af021edbbda78336f8bdfa7c2bb46c08d3a62ac67488f072dc000bc52394a142de4f438e76f90de641b15300004e6f0f27b7bae3fdfba69573010dfd4e9f4b4d2b752001e3d7a776ed0e221b9800169a3c781a77b31e7e6e5340016a4001caab535aedc47f3388ecaa759c456551ac70cd08078ee19610003d6e3f0cbc31e9dcec418a7477c70003119a0f50002e3e26⟩, ⟨0x29113b09b04ae23f119880039a1c30c805e02ca1580a484ec25011b08503ec1e20e006883001620a704001c409403b0180094030000, 0xce229e06947549b8443d230009d778005a70067aef00074f03002e000f5dbaaa10fc594d0f429389314340a89f14949a4c24c0d8a6934925469309303407775a9cd3892eb4a03af3db13e26c4cc29a0e1c5⟩, ⟨0x5ba2c394909de4e425f926077a3a91cf0de46a432b13d08ac3b81d20d5861828211e07d83b817c0b404881f00ce05202180e004e000, 0x382fe0d3855d3841d083918e8864c88102cfc724b06e0e166a3c2600075d5d3b5d29e8bcd30980018eb80023fb4dde1c047028ebeb8d43801224b18126e0c34fafa8d89800191a74f3d0123573679fa52ee68df66ec1ffe37e475208e475086d2580090570fc1569c16bdb7c00243090bfd382d5b6f21aa000a17da781a79d3785e6806bd6869e45cc9590064e8578fdefef6e1c029dedc3f8a4002012ef5e1e0600877ab1275ca7b6653d84a9f224e091b34baed8121cd⟩, ⟨0x480238919c8843f31f48f0873a3761a88cb05f22c61508a284ca23210687f83e61ce0d485d82d814709e84581e20b0045816004a000, 0xa48f036c51562eaeaccab36aca000760cd3c0c00067b2f34001ab0762d88e7b174c145d83b4fc18f067a7e0c3832e0bf4fc1df069c16e9c001d7b753ae569b5e0d75b4faee6bbfaeae9c008e0bb4f9127048003c15ea785cd7a35a0008007c14e9e06000b827d4c0d3d44000f377dcd78b63c15f045c12703ba7e15b82bd3f04fc2af055a7e0cf835e1574fc1af0ada7⟩ ] def tableRRLLRR : Table Block := .leaf #[ ⟨0x3ea1cd8e186e234c17c0bac5b42c915f0a644e423c11488103ee1d00d586842f815509804842240eb05c02b810e07a02a8088030000, 0x1126e22aa93abc3644d3c2daa5a81520086c8ba72244e2195478001a565c7e33639a5acd3824014d907574ab000a71c00752ab0027c70cd0e00855f3ab71380019ef7cd005eaf6d8c0db1c55e9ab6c693ddf9b5670017a7b49309268c08008e48003565000fa781a94e0005e4b89c001ab2f57574d5940016aa06a2f3c5⟩, ⟨0x78d3ab9c0cdbc6b934a19bcc946092fa9784b625902b79528a344f9272130c94447f22e10b07b037518187b03aa1b004c81d0082000, 0x11a359e94706e3b4af8d1917519e8c709e3cc8c230ea6658118b5332308c3a91182645d488b73226a40018b506801b474f9de8d9fa8d7fa797c05f0f5254f569a79a91b494fb302eaefeca67809e1c006a06d34eb66a74a80b4d3fd39da7024a77c5e0455078b7925c12fd18747c910916f4c40f0383c747c7108d8e02de8881c07038e8f8a21131bf5bceb79a20681bfe3804f47f88b04639074f70cc31cc81d074e47f60139c3d0e2b91931a080df800170a1c7dba34c02aefb9a78b5ae18dc3ba2be18de443a463467f18e0012c02610371c501d2c3a623f947f0e1378fb1d6c79a944a388cd91b4e893f117578ec8ba7⟩, ⟨0x5f72e916acb0c52928213748f44552110ff47b03931b80d2464430c1738b0851e26a12288783ee1d00c585182200dd05c021406c000, 0x7c6ff2b6a64563e58e5fca1f27eaf27df9cbe80f9bbe71f9bf4fe1e6639a7910cb6438ecc61f35bc3979831a41f37f1c08496d34f604892b2e9e9f49c707353a543839a98d5f1ac2350a5d0e3f04b82f898e3ed2b3971c7a38a72f81986972eb43d3cbf72e569e5fa9725c0cd3b827a4fea748d7027531c30e04f24e04470be4a5f38e17cb8d4697d0e0334a2e3a5f38d44d231a50f1e3509c0e4bdbc797a749f97cb4f2f94bd7a797c65ea97a74f645e9f76455909644e9d9e9ab668d1dc7⟩, ⟨0x85f40f1fe4fac7b13bf1d38bba5c72d215fcab452728113749704851f30e0c6da2ec117882036818f0bc054c25810506f02dc0c6000, 0x7e32f67bda1ae8e9c217d27b4f16d8abe1dd59e0ab4eeb13ab1c14e9e2cb1538bce1e301a314198ab5ad631acc3679ed1c8000c5e53aa7247236a8cc6014202888468e7e0f421e889b3244e489eeacf8fd41c345da2e589e0c381dd5c3a9c5b69e1e3874f8b5d3e80da61ea74cad30f53a2e698fa7d16345bd31b4efa99ef6309d7cdacbc17beb04b609924adf42f1df4080017d08c6ca4953e83e3f9530cc126784b0486134fa01722be909ed7c7654934b615a4393090c9105c55b8bf008d119a3513e59e3cf269f0bc79ee2129c254385e9edfc70007844d4f077a6ce1f37ad480018527c79f9f0a539a000614d71e7e6c298e6c6987cecf93df39be77e3c6976502f9d5f273e727cedc7⟩, ⟨0x3fa1f68f787a23c01d98e887263891bc0da46b034919f8c606122e21590a3c4ee25211687e83941b30c805ac28c13c08a83c0066000, 0x28527127ccdca69f14949a4c24c0d4a69349250693093034599858bcd30930b0e2cbf3c005d8d000e1c003d8cc4d0a8e28003ed569f218c86756003e5d000169fb0c006000e1f214d375fc00789f6d4003d48005eda6a6066ba7162b9796d3b01a77182e35635c42ca00b90ea595d049c5996915e6a1c47ce3fe35ae93d97a7⟩, ⟨0x34d1930bfc5e82e11558a4c4f626612988f846021b10307843781b10c6059427c11708603ec18a0ad04a82180f206102480c4046000, 0x10bc800272c001c2f1e5e090e51600061770002e550d1e2d0cfe2835a9e74458392a60863f154e072a7602003b5791f801babc12005e47bab8b6a00339716d000272c001c5b3e5e091835c5b00002000b95430b8b43038a691dc56115d1542e38b42eb8b443004fb3d87⟩, ⟨0x3be1da0e346f83551a00cc464c3131760b505942b71568a184be238112885c36817e0b9857026a10e05f82c414a096038813004e000, 0x2060003412797a2718bc72c5fa6444a7c8938243f44c30a003bcd08fa878185b44c0c000681ef34000c304e88016a075d38850f54345b27bb0001c00428bb6c25c78b620005b08f1e13018cc7000340d39ad83e2e7f440010008003f748044d3e90dc8dca9b24f0033539276641a9cc7c00ad4c2f3003bcb⟩, ⟨0x30a1798b3057e298147099c4ac22f10f083c4081ed0e306d03541930b6051423c10e07b83981aa0c604f824810a07002d80d004e000, 0xd765d85d8663d96138003a0cfcd818000d065e5e09c6195cd3ce9c599f224e09033592012e2fd734bc478180c964d05a0003cd000317d7a2011682bf4e2b19fc463e19a4acd26126829000ae5d0a5852454ab06955d83c8bd3d96138003a097cd⟩, ⟨0x4bb257121c8fa45622490888143e31df0e646e835d19c0c845f82f11660a942fe16809903fc17c09704481e00ce058018809002e000, 0x309e8448003e6c0c0006843f2dc62000684274ec17f152744b53e9e5a8004e9e98500234f4a68003a7a60f4c000d309a9a5f34d4bdd307a984c000d301a752fd41e79a91599c8a8fb7d150d5a283bf1f8e88ecdd9dfc18b8312f89def0000164a2c02e0c633b6e3e487a6671eced26c7f1f3b3cd0b38ed3e7659a0e5439c6e9e39f8001e3e10d86692b349849a0dc002b9742961488b0cb⟩, ⟨0x36019d8cbc6403131700b2056024d12088d445221c0fa87383761940c2857828c11f07d034c1760aa04c82280c605602480e004e000, 0x1337bd5d23184761580039bb8005aab0a5c5b0c3c581e80004001000300084ee78f08d08d48d066a13c584f9b4274000f3478488001a137cd38a2000684c74ec21714000d097e680039b3ec4000d094e9d840e2e19a4acd26126848000ae5d0a5853526b1835d87a49e1d9⟩, ⟨0x2c014689fc4dc25d127089c43420d0fd079c3801b30c606082b614e09384001e60cc05b82b413008903e01b40c404f01e00c801a000, 0xcbdc00100cf4f243619a4acd26126862800ae5d0a58529ea2c3c45d8856719d96138003a17dcd818000d0bce5b0c400ad0b9e9b385943dd37138001a16fcd85158c0d01eab3893066f4938253b45dc287818018cdf756c27⟩, ⟨0x51d24e106c7f03d11cd8e106ba3481918c506122f41668a6852026b12b08bc4101e50d906342b413307e835814004c01c80a802a000, 0x1421d1a45083687d4215eafc1715eb1c788d503a8b8c8f84561c84287c14464e3e0b304d8781d860ab8e2d060759829e381bac700bd43939bbf2a9cebc03ed3e449c120f6a98c5ccebf9a000e75401ce9e06cea4037d4836a9e86c8043e6803ca1b1cd01cd9370f9f3d5f69f569f3a3cfab4f9d1662b9f4e9e041b3a0e3b2ff8104ce7f8f0192044f1e03f40638111c7824000b4017002f27cbc70e513329a56152168a7⟩, ⟨0x8c8451a23108e78a3b29cf8e106d230a9750b865b22c695a0a6a4f426792a893a476228911c8442b111086f825c0cb06002640e4000, 0x7bf0d4f74ba63fdcef11f39c246e3b4557f5cef125ccbbc57786eee9de0bbc67784acb1fccf1eb2b4fd34f19489fa71d0954889427bc70fa0f5ae0c571dddf3bc09728eefe0a9c1947782eef43e7bbbc7b42ef0b8f9e77e2bf827ad5a7c734b59a7f1afeff57fc67f15abfe9b3c9f5974ffd2e7919947ac9a70007f18d3fe2bf8b6adc4e000687bf37fb6fc4f63037f6bf88ead69e14755a767fccffb9fe73fea7fd1027a04c962929f5ef8505993d6d709b9323517ad0eec9dd72b18774d4d6f8eee95dd8bbad4ff6eeb9dd84b84775f3fbf8eeec1dd227fa77593fb9dd2f1e82b494793d0d6fdb91a34e82eef595ed871e848494693cedc89adf508de3c260003340b8f43b27d07368442349a1094219eb041725eb3c7⟩, ⟨0x5e02cf95e8aa654829d94509da4d623990047b83b51c10d6c66830d16b8a9048220b0db86042bc13908a03c41980a503f013804e000, 0x81e12bd983cf5d3f9bde76ea659fbcf7e5c267138001a24bcd798b2cefa3e6c69903f4b9f40f6c4e2750d38ae3a07d7658ecb503d31379d412e7b8f6dae863a787f2a65b8ef6b8e55d3be9e739b852e3c86e6c9fc7901b21d78f21aa4064874e3d9914c759a9a787eb0e7cfff3bd37797001f8f008e00e4015e3bbc984c4ef45854c25be3be8084a67fef8fff6005e25ff6eebf52ff8775da9ff7800b12000f759a986367fbb970c6a0f272c423ff3ff861c000c1e6e3c314a217cd⟩ ] def tableRRLLR : Table Block := .branch 14 tableRRLLRL tableRRLLRR def tableRRLL : Table Block := .branch 27 tableRRLLL tableRRLLR def tableRRLRLL : Table Block := .leaf #[ ⟨0x4302048fe07a239b1c70df46d835f19c0cb463830f1740b7856e2a8140896846620c0fa073c35417708a03781720a203e8160066000, 0x3abf452b9a3867001b45239b3a78e850001e3e99a4cd25069714d142000fcbc12d46b613d13e0007cd818000d13ce5c2513aa363ffa6000689cf34000cb32e88001a26dd3ac7dc5a8f2a34d4d3b551b69e9e0a766a35d3c2421f963f34116c2440459c782f0f444116f1c001f31f53e6269822af32b4fe867a1da7f42bd08d3fa09e84fa0fa7⟩, ⟨0x7693921bc4d4465d3049758b5e5882b09500a144c524f11dc88233918a0bbc5902a513908543a81be0cb849414807f02e0118046000, 0x8d7a3b5b96771b9c78d9f57ee59b4f7206d6e31d8c79678e9e222406c87dcf11b8ea6d1e5946e07944f2d38fe59d367e2869e7723475e380018a21c7b25514479c5db3db67797cf77a06671de5ea90b7bbb032f8f081a10271e104c1fde3c20883f908078e53756d22da383c505acb2041a253a53b6905ba0b440bb2df1a3814948358f0df8fdc97717a90007ba7d3bba5a2b1cda56526b123670ea3502e9e0afb67ad9d535fc310cbf4ea268003a34f77da7b63e1a7d0a9c9e39d142c6c55254e4022e8331095b8e744cb1a954884c1098a0cb822d538fc7005a9c6d3800714789c5061b148013c380073ab87⟩, ⟨0x6703309958c5e6082e91720b425972b8152ca544c7227111083a3fc1e78e7c6f034217e8b5854025b11b083c35814f07202fc0a8000, 0xc893824000c520e4c27977e9cd0002000e28f71e0600051473930351820003cdf007beed88026e659d039a07d1fa482040015578e3c0e503e000303fc10103f41047e8e9e06a2f83fa79bf27ec967f5bf92f63b3bd76986f61c38f5f8a1dc71e9c3d7a286f1e285c50d8a2b141b8f141e284f1e28345088a0bc7691052b20e23bdde3e90fffae9e43136a7e3d43c5c9ce5b63c8365b7419c7b936db61908643b92b9f9d3dc996da8c85724f3f0320dc9ba7e7dee46d3dc93723dc977220c8031fdc95a78f16e3be3b639687453c7⟩, ⟨0x55b2a0146ca18501278132492c48c233916c89c4332000fa079e3c51d50d586622ec16b05942a812d07b834817609603f816804e000, 0x32250b982c008d3e449c1232698dea982b9a000cc0c001e9e069810005d4c23389c031b8582353018003aab2a3c5c40173c0d028b42c179c1e027b66ecd0a2f1f4b9a8634e0bc4dd8800197b9c79f7e197e941a52cf50771a5341e601e91c3ea30bc535bba825d078a0ee976d43ee546a3f37c1428452f28001436caeeb8f78e6144514cf8f14b8510c532e38003defea7bdad3001bdeee9fbdad377efdf6e9fbf3efdbbecd380088a47c7⟩, ⟨0x284138897848c239114086441c1fd0f5076039c1bd0cb061c2c01540a284d023e10707783901aa0ae04f81e00dc0490188078016000, 0x94d1629a1d01921e4cd1667c89382474d2ba234bc4781864d200068df734e28800ea377d3a46308e366ba12355525e2d517e2c26308f46cc000f34c28a4b5a361d381a4b300075754438b37225b244e09⟩, ⟨0x36d1ad0d4065630617b8bb058e2a2137899448023610787a834a19a0b204f42300f307103541880b904a02240f805502100e0026000, 0x110a1e0600eb525d5801161fe9f224e090006c3cd4ea41623eb4001000ec3ad3c0c0015871a9818000d1dee6d81ba8d6c5a7e80019150b3938f09a399aa4f80bbc7a3b200079a00e6a2bb1936c01fd58c9a6ccd5069c1200d49adab84ce27a39e00079bdba46069340015d586087⟩, ⟨0x3971c68d986b83351870ba45b82a914f89e84e024911888303ee1ea0e286e032216c0b104f42300f306702a4124087038012c030000, 0x40c002ece8f3a06b39e00279c0022ce7730005b30b4fe290004003b3034f03000565f6a606b38e00079955bf8a008596da706353f198005b14352e27a3f000079a01dd8b7b1818047b1675761d0017a9b11800bd48015622ea4043b1235708232f048280cb0006c4bd580036255953aaaa9dc5⟩, ⟨0x3941c50d8c68431b1770b8c58429b13a093446a2140f987303761aa0cd85d02ce15a0a384982260f207282f816808d03000e4024000, 0x81a37f0009e6800d3c5a4003c6fce7d3a80080159e1353a000da4000d223e680018defd100034883a7566f8b4df4db67001a79b38a7ab3cbced334961a4c24d9e10017cca14b8a43846004d395c83646370d385e184f6764001f3a060003675f980020054d772001f3603a81b6a6bff50ba47⟩, ⟨0x2a714209cc4c4253121086c4181fb0f707843981a50c906142bc15409684681e60d206282d815009704501e40d406001f80c001e000, 0x6d0404f87f4349f1a57248c1a6922800ce5e849b435d0a5c520c0ab8fb88a7ba66f22d84e000e91e73606000348eb9780a4514bc7d5e9d4300959e8527126086f534f8a4a4d2612606a7e005b49a49002a7cb49849⟩, ⟨0x50a26a123c8d44452100fec7ac3b11b60ce46282ef16c0acc51c277120882c3e018d09c84501de0d80608288108078031813804e000, 0x2903c45aa40bc78a8f24d5ad3d022e3f02dc0c6a7bfe1c8353dff0e43a9f000720d48e3fdffea4724efff58ab9500db6118a79c7eee086ed8374f8e763a3a90007bdfd4f7b3a6d57f561d48003ac1ea7552d349266b30d5ef8eab3a4e7be3ae3eed7b07076271c41db1499853c86e78e71c0a4c429d076088538ea57436fa7000651dd4ca2fa6a7319201b8ad1c0c904c7846aa8b303ea9c01f5a14e70719b427ce⟩, ⟨0x56f2a513ec9ca4d826292d091e47823090f082a4091fe0f5476438b1b20d5c66032617f8b6856628313c89484561b908d01ec08a000, 0x1b18ce9c00100080198c79f5ed3fd570d46681912be690006391d4c717a68e3b4c000c6fda74713692799c8dc66b48c8c4f9c001fb461ed219f69e72389b487ce613da41470fce8191c2da3fe6000318169d17fda3ce67d48002003c3c0d68e51c3f391c35a38e623cf6e7c6814d0438a2340f3b7b8ebad575b2eb7a43cbd30d44af495e9a6934d1cf1d7a62eb45d6abd20d44521d5d6c6930d1c2eb7e3cf0734a150238edce9c4f1a4f9e0dc7⟩, ⟨0x3851af0cdc65a3061770b7c570282135097449c241117889443020e0f3873c30a1760b3854828e13a08984241c40bd053015c082000, 0x63bff44001d2a8e9c0c00063be72ea55f14c2380018ef3cb00031de000572aa5e7160cd791fc525d23c0d62981ad3123b0e654b9e28040051f6c006009f0e7126253422aa613309d1945a5ae740c8c9ad2c7300018c7b5318c6980050074001007231cd3fcb70c0018036fb04635a7⟩, ⟨0x4111f70f2c7703ae1c38dd86ca3561a38c906022de1668b0c53822a10f084840c1f90e906ac30815d09b043c1d80c904c80d804e000, 0x1d2be1f4b3c9cc5d428781a79f1c99e5cb1a560d31124e24efbb7db8b000f1df0fbebdf662e04cf031be9a96fcb0002e3b9bc500020006001279571e11b11b91b0cd4ad8000f34000d4b0e89be1a567d300034acf9b3c8ce42f469588001e6801f7bb91e3369030fa39e32e8ff0e6918d219a45481b3c72a24f1cc238001a557cd⟩ ] def tableRRLRLR : Table Block := .leaf #[ ⟨0x25512388a44282010fa07943ae1c40db869832e18d0bd05ac2b414b0a0847821a0ea06d833c1880b504701cc0d204e01b007801e000, 0x1d431c90658fbaca794d0f429389314340a89f14949a4c24c0d02a24d24971a4c24c0dc06019e3468d2031e0263db13f23426a492008a9697343e0153c0c085b2aaa68f16a68f17324aa49⟩, ⟨0x3711b10d6066632417f8bc05cc2c114e09dc4d025112308843f41c70b9853825211c074837c1740a304601f40e405d01d007c02a000, 0x61260691b4005d49a49000a46bd4984981a4c993475a000c8cfa9933e4c7d7b62791934d09a46200075291b297e736460918645ed3b92d6f933da40219a87e3c84521069c02990834fe290004027907b4f03004b20eea51c263c110c7c89382418952048e0de341f0353c0dd3ca9⟩, ⟨0x5b127290a078a3ac1c98de86c635319e0cc46342d514f89e84aa2220f786f03321690a10430170093037016c09c03f0188078022000, 0xce6e94855f649147ff8051009e6012bdc8d8350a86011496b8ebdc980430045ee0bdc58039b053689429e96c9b073611c7a9887ff0050009c49113e5f8f5318e9b68c74c5daba40fc64ff637ef6c9c13f7d32c034247f9f1d52ef8e019e7c6a467e3b97923369dcbc91974ee5dc8c8e5969e43e80d1cb9d3b95f01b3971a7e58f31b0fcb4e5873170e72dea8af1ce5b55143983c700ba016c02d005c9f07c791da482d3c90200b69e5343d0a4e24c50d02a27c525269⟩, ⟨0x30e17d8ba05a02bd1550a6c4e826111d08c043a2050f9078c3b01c70db068432e1860be055428c11f088040c1e20d906082dc13e000, 0x34b45d388784f6870ed0f6ba2cc23d3440003cd0d122000e9a0f4e060c51760a38a8921f224e091f34e59b44f4cf03159a606a66a00079a6944002d332e99a477159509562038b60678b035816e2c01f8c12d9e609ec12e8f75074a1be43bd8457c7⟩, ⟨0x24d11d08ac44020f0ff07a43be1ce0e2067431c1670ac052c27212108483fc1ce0d806482d014a09b04301cc0d20420168070016000, 0x8921f224e091f34e59b44f4cf03159a606a6c200079a6944002d35ee99a47715950955be78b5a438b03568de29849954d206a9a48f032722af8243c0d4d3c000f34c8163ae696c34e09⟩, ⟨0x2db15c0ab851628112d08dc44821510007ac3ac1c70dd06ac34017b0b5058027612808a84081d40e005c825010a07b02b013004a000, 0x15e1c7918180b50e1c5c0d4e18000f340a5f97c886a89994d0aca74e454c692a4e24c19bd24e09007eefad5c099e06bbdc01dd587e87d6d174e21e13da1e06a6e400079b76e802db1848f035dda00a6ae06a6d800079b76b8023b1⟩, ⟨0x2c61570a6c518281137092c46622910b08303ca1c20cd86202ea1660ac852827e12808a842c1d00db05c02b013e07c02600d004e000, 0x2b83f151c43e449c121ca27f6f0fec6847743c0c2aa260600034e839a001fd8e4487bd39de9d5c896d11271260cde9270489d2cb8050f03019bf4d8b6138013f498b84671380061d18b873fe800038ab0f3c5713d38b0003cd⟩, ⟨0x2c215b8aa850626c131092c47c22d0fd07b43b81cd0e106c431817a0b805842ae13008f841c1de0e006b02c414e08002d80d004e000, 0x213389e9e40001e6e824d181b59065b89c78d748a001a0076ab4cd1867c89382464d2003d21dad2f91e065493030001a76fcdb138d6efe2d6ebe2c247818057a40f570353af0003cd013e900d8d3ad0003cd618a8fda755d3⟩, ⟨0x3311910bf45ac2af144098447422910c082c3c81d90d906942fc1740a684981fe0ea06f032c16609e04481d80a2040019808802e000, 0x1ea98001bd7b4f4fa17aff357a953e7e6d3e65ec1cd00034f979a028ac4ef464cd25069714d3e0000fcbc135cec01a72d84f4f70001f360600034f6b960006b9b74401753d7e9832aa711bd443ebb343c41aa4285521ea1c00ea48b563269b33541a70489e2cb⟩, ⟨0x2fb1750b745902be1578a9451a27b131896446421a0f987903aa1ae0bc05b828e13b09604541ee0df06382c014c0810120060018000, 0x5299fc523066781b224c0d62fb8b0a23d8bfe340c0006c5ef26c5d716c5d8007e3da4984935cd0004f24000d8b70007c781ac5a8006e4d231847032d9728082655751e2d72be2c402c781a9410117572a700020010006002370da7c46c46c46⟩, ⟨0x23b11708704242030fc87843921bf0d606743201830bb85982ae14a09f84b822c0e606d03241780aa05002340ba045016808001e000, 0x78a4f64781aa24c0d638f8b66050f0351487dc8f429614d231f1a5b13e19a13509a6c7df14011f80000e1f11960cfe292f11e060c9120010017de715632f8b63378bc66da33fe49⟩, ⟨0x25812008d84461fc0f2074437c1b10d106543101790b20554294135090042c2000eb06c833c16e0ad04a822c0e605e0170080022000, 0x8f28781838448001b81fceb249c5abd0f7621fc52b925c532663092360a9ac938241b552d1468c1233c26a41549748f0358f4e2c0d63db8b03590de2b30a9c041f9600c61fe86fc932a67⟩, ⟨0x32e1838bf45ac2c314e09e44d825d12788f8462220108881c3c81d50d9068c3321740a884b01f80f1067029c10405b021808001a000, 0x1d46ae6c0c0006a3472f0148b7a3877bd3fc7004b0f42938930437a9a7c5252693093037e1800b893492002fc2624c24c0dbcc8013ad000fe0312003ef2faffbe80040058784df7c000e24000d451e68003bc96c4000d44ee9d960e2fddfee3872ed0fe29⟩, ⟨0x3121808bc05c22ba1568a8051626812988c04461fc0f9072c3361740a684d41fe0ee06e833817a09604381d80d205c023808001a000, 0x34cd258693093713c005f32852e2907e560027f8f9207c560023f8b986138003b88fce818000dc45e60004005fc0c900359fddd400033fb7a965638b3725bc88027e3fa1a4f8d2b92460d351cc00672f424da1ae852e2906055c3c46f55d337916c27⟩ ] def tableRRLRL : Table Block := .branch 13 tableRRLRLL tableRRLRLR def tableRRLRRL : Table Block := .leaf #[ ⟨0x276131895049023d115086c4061f00f187643821b70cf86383021700b2054c28413709203f418e0af05002580de06202c00c404e000, 0x57449849c46c1219a26f24444143c0289713c0d66078b035980e2c099e4cd6267a4694349c1a7048ba8c0003717b997172e2e8001e55973e2f24781800bdc59e6389e06b8aa00539d030012b8a9ce⟩, ⟨0x33017d0b885922bf14c09fc4cc25b11b08984021f20f387083361680af04e422810707d03bc194097039016808e03a014807001e000, 0x3160006cc3f2acc77178c05cf030187b2ffcbd6d074e7eaba704819d50a6afd31838780a34f91270480030136a675b0386e680021c14047a7818380808b5200d4043a7a14b0a713403800b6a40158070001d3802900dea6124a1fae43f8a4a0d2e299331a49⟩, ⟨0x3fa1ea8f207763b01c58d6066630e17487843941a50c905fc2d815909f045c2180fb075036c19c0bc059028c0f806402d0108036000, 0x4a81474f429614e268130046d4808b0260003a7011204bd481f9742e9c0fcc10b4ef95dbfd523800800004fdb264101e803d50da82554acd256e4ae4bad8ae71eff8f027e9b45629174f89a265744c44890d5139b0842c007d992e5e09d835cc9a6f23f8a4ba47818c248001b313cbb30fc581acc2714000d989e3807190b⟩, ⟨0x5812bb9550a8a53628793a09aa4cb25211408343f71ea0ec471c33a1968c285ce2c41508a2c4d024110d07cc28a12007d80f804e000, 0x1034e64d898bcc92a924000c5ade38f8d8b35cb9050f031a608b2fcb000f154a2a9c4be37b1c7347712f4debf1f48da5fc4ea8f4c58bd51691f17a6cd2161c7d200018a991534de971e0cda56d2ce274ada5cc5e9574838b000e97313a57c300074a187349d53cf9a0006a79734d244586e8ad70700c19f0d910b0992ff0c0a3e743979778f6b38f37af285a7def258dd3a7ae97bc09ac000b8069773259e4d1099d92d149117caf1e189d32f1086ddc7⟩, ⟨0x2e81680b1855c29d14709f44e025b128890847022010707d83d81b60cf06182be1500a084681c80da059829c13007902780dc03e000, 0xb6f9c581adc5f17a8cff92694cfe2918333c0d912606b6abc5a511edd171a060002000add072ada8f16db3716dce8007e3da49849365ec004f24000db990007c781adcb8006e4d231847003b2a97b2400802a55998e2d972e2ec400347⟩, ⟨0x24811d88504141e30e586e03561930c485d829e137092044c20c0f7075037419c0bb056028411c07903501700a203e0160088014000, 0x613dd110007ce818000dd0fe65bb9e297887f14847a43c0c1ca24000dd08e75ba3e2da087cd33f8a5724b8a68cc6124fe44e649c121da25e6cd0d89f08684d60a24ba4781adbd71606⟩, ⟨0x29c13a897449423711508644181ff0f807743981bf0d9067c314177099048c22c10b07d03a01bc0c605e029013408203a8138030000, 0x355a7a76f978b99a1df043f8a4a0d2e29d331a49559132869a14b8a43244cde9a0304480070012002ee9ff21b13e99a13589a4ba4781ade471606b791c581ade5715c4e0006e8af32e8a5d150003cab77fc5⟩, ⟨0x2e91610ab4540279137892046a20e0f3870035619e0c786042e01630a9050c27212408a84001e20e706002ac10806c030813804e000, 0x11384f02f4c68156c270007561f9b030001ab0bcbd052277fa26d74eac10001e6c35276cdd1c1253d0a4e24c10dea69f14949a4c24c0d40aa9349214ca93093034bed0013cd06254800797d7cff8448784de0a24000d56ce6800197cdd1⟩, ⟨0x2ff1780b245782af14c0a044d4253123087c42a1ee0e806a430416a0a984f026211a06302e014e09604381d809e040017808802a000, 0x1849bae2002f9942971481cecc137da4072b3045d6c309c001dd69e740c0006eb3f30082b0d200bd4443a80006887f52e007169cd64cca4c9c132e8b3034f8001842877c001571e686f4349f1a57248c1a6ac8000ce5e849b435d0a5c520c4ab⟩, ⟨0x276135097c49823d112884840a1fb0f187643821b00d1864830c1750b2056428c11f07483441840b804882100f40530248088022000, 0x311b0486689bc9111050f00a25c4f035c29e2c0d70b38b02679335899e91a50d27069c122ea30000dd80e65d7ebafe000795706f8bc91e06002f75ef98e2781aebb8014e740c004aebb73b4cd25869⟩, ⟨0x33e18b8bc05922b11480a044ec25511708043ee1d60d786202c2149094046c21c10307102d412807c034817009603e018808801e000, 0x2af50001e6800194b5d10003579fa7715b8a0113ed67c8938240067d2d33ad4003f3400400e7c6cf03000cf85a4000d5dee680019d61d10003576fa771278a0353d767a14b0a7134f300b5a4056798006ce0293cb69849287eb90fe292834b8a64cc692457449849⟩, ⟨0x34b1930c5c6182fb16a0a8452e27213288f84101fe0f3074c3921a20b784b824211308103c41c80bd059027c12406b03080e804e000, 0x713800669f224e091934ced994efcd0007897001f4f03715e002ea5c4e000653972e5544a710005ca81ae377166143c0c005253672c002e320003d38003c63f07400169f8cd943499a4a0d2e29abe6001f97824d645b09eaf78003e6c0c0006af6f2e01488004bb61d3⟩, ⟨0x36418f8c405f62f01678af456629b14889e44de25711b080037e1700aa84e825e10c07d836819a0c005a82500ce046019808002a000, 0xe0024005de0fe43627a98b3426a96001b49748f035d3ce2c0d74f38b035d42e2d4654759dcadcce991f7c7f6f97b5d1c7ca0d3e8dfedeaf69a38793fa788c2e130a8842704842694f8bd673029d1259e852c29c4d43e09f6904ea1f001b3826d0f5a66d44b2489c125c8ab⟩, ⟨0x2ac14d8a3050426d12f092447423010587d83a21b90d7066c2e814f09404401fa0ea06e833017e0b205182080e206402b80d8042000, 0x2934984981a81552692429952612606e9d8009d68312a4007e9d35ff0890f09bc1448001ac79cd0007a6fd88001ac73d3babbc5ccd0ef821fc525069714e998d24805550da650d3429714800d4eda66f4d000353769⟩ ] def tableRRLRRR : Table Block := .leaf #[ ⟨0x35a1a80ca46282ed16f0adc52026912f88e044020f0f406c831a17e0b9859027a10a080036c1a20b903a017409003b016007801a000, 0x206000359a797702b1000f16fba6611c000d665e68001a7a3d10007598ba7030001a79dcbbb0bc51c338001a797cba7954ee000572aee000234f9127049c4975194ecf9a000ddb6001e9e06bb64002d4c0d75e78addfc000d3a9ac71c7d8c34d824a7a149c49821bd4d3e29⟩, ⟨0x33f1980c985fe2ea1618ae452426b123071433c18b0be05a42bc14b09b04a022e10607b839817e0b004f824810a07002480d004e000, 0x624781801453e3e5839a9c014d3e1e5c0c0006b4273401053dee8ddb71be69e4afd6f389272c41ccbcfd29c1084038f0a8107ff1c3d44c0a6ff113827db4583f29e886f4349f1a57248c1a6b3a000ce5e849b435d0a5c520ecab8b8a003ba6368ab6138003acd7cd⟩, ⟨0x44721e90588123e21ec0ec473236319e0bdc5a02a9141096c46820d0f306fc3301730a604941fc0d7058022c0cc03f015006c01e000, 0x40d79c4002f3984e000ef3873a06000379bb9979af8b36526f54d95e3cd6e8641c78a4938a2a484b57e3af2a971bc7806c2c1b9300d8583f2601c0b06e48b05806fc9161500df9935997daf1e6b2c066e3cd6400b9c7df637dad4c02d4a3bc9805a95639300bd2abf252ab402ee4cc02805dcc32e251ad3f34a02a69e9f28053e3db82a4c24e235649⟩, ⟨0x4011fa8e8471236619f8c605c429d14989b048a2200fd87583621a20be855826211e08984001b20b204582000b204a0200064018000, 0x148d3c7c0009279ad6049eb8f3e4b8c001940e1c94156c6e69284ad8bcd98113c6ab55f1dbf84fbb0002e0578f0356c19e37cd9b62b3478f6ae8013a9b5bc00ad4daba004ea4008b57353d124001b56b537a0a7e5733aeab4434e18a2613060899f8b79f798001a7e1f267e10005e4e099f82003399891e06001379d798c27846⟩, ⟨0x5df2b693ec9a849e23b914087e4352070d446883381920c6061a2e615f8a604e224a11187f03aa1ae0bc04cc25010106d02540e4000, 0x26450fc81f9532225e7838d1fbf8e990932241c54c86e7f9322a646e3c7f3b2a1c78fe5653e3f6f1c000c7eae3c7ee8fdfcbe133c0d22be3f672c000c1a100041f68001a5e429f4d9d20ce14f9000920b78fa66846ba746e46c4d20c6b6df34000c885e3c88aadb3cd000322538f2246b6bf34000d6d6e6c8a18fbfd100031c138f1c0ab69f3638c80028df7c78e3000066d9c6fae3c2600030ad38f1c6eb677357a14c119d715ad38e00793ce1eb59000324f6bd01c1500019e11c7⟩, ⟨0x98c467a0fcf047783a89ac8d506813259818ba05a92c114f49d24c4247119c7543561798ba058629c13a862c2f4169074030c120000, 0x100a20106a488030006e942ac3cf5fab08ddb21bcba4fe3ba4e86f0e93e7af376b0005560eac33cbce3cf5d749b0ddc6a3d58210020006ac288026ed4200c6a371e0655995c1b9b5dde7ad558271413b8676ec0e6000200f5bb871e06ae061b439ae18519f4f4fe3b81c70c08cf67a771e7a64eeb9e7bc79ea33cbb9200f67a871d99fd69aad3162678eef2eb4bd6997a5eccfb8fe18da19a75a3ea8aa436f1c00f4850e3b755835669e99a0b3400032e834a88d76a83670dde7dd71e16ec3758e410dd937b71e16e210c86e91c7e1baa6f5e3c2600066f8d38001ade7cd8e814427a33fa64e741a434e6cce999ca64a4c9a1fadd030012002306b0a855763e3f59a6b4d3272e4bac1a1a30106a60d6d5eb961fc7e6ea0f8d3f233cdcc1efa74c88991dd0026460fca1f9a3f82645838fc7⟩, ⟨0x5b82c895a8a8653729414049964b324d911c7323741aa8cc05d62b51530a3c4d422910f08443d41e00dc86502c212b08202fc0d6000, 0xae5400079a0006ab4744002d727e9d2318470003559397558c0008002e5583ae2d838e2c26d7798bdbe12ec26fe3d6bbad7b074e1cfba352a73076dbbecf75af2562f38fc5ef177a7037cbe8e00bd5bda7a86a1ca6a9a3cf6e3d43479ea34d38e79276a6d36d4a0036a768e348fac200074f09984eeab6f6ef3a0675577b6f99d4a7521a7ea4fa8fea3b4f28824f63a8ce3cc889439c773b4f3d1ddc58a9e3b9d979e6e4e5ddbd8a8e3f76d9f377b76987271cec79e5a7⟩, ⟨0x35c19b8c105be2ba14a89b84761fa0f6076c3941bb0ca061c2f41670aa04b42400f9077832016e09003f81c00ca054016806c022000, 0x957369fd3cab7b4f4a4da70006524d3caaf2ac6ac00194cb4e94c2ba2f376e7e844002d3edcdd0872e0000e9f086c334959a4c24d73e0015cba14b0a5184586e8bbe5b55ffb2c2700075cdf9b030001ae6bcbc138d579a819d38b33e449c123a69001755b79a5e23c0c3269⟩, ⟨0x499231903c7763961b88d3064a2d11600abc540279136097c4742150f707843741b00c4859027a11806b832014607e02b80c004a000, 0x9586a60201fe38018aab0ddfd2b72569e38017aaaeddfaacca568e3cabb2bfea656d95ff532bf4ad9a9ab5557d79600492a23779aaa4958f8f86692b349849aebe002b9742961480112c36ac0019617577d26accf6584e000ebac7360600035d5b972bf0003b1ab274893a72a9cad7a70006533954b6a7d3d8a69554009d4cb1b2afeaeac6a55fe5d58c0053cbc12013cab9ab⟩, ⟨0x45322490a883a40e2010fcc7c03c81d80e6070e37d1af0c3c5642a714d8a384ce24811087f03aa1bd0cc05c429412307e02dc0c6000, 0x40d38c03d2d84f292e918c238628b80448ab341c5b339c58133c0d36005d2c002000f5d281d0004d380020016ba1ae8c0e6001e9f134234998000d778e6cce0095100035ddb9a000cfc1b100035dcfa7663f8a000cf9ba74f9d5dc79b5dc0263734000d603e3d76eac69cd7474808aa61d58fe3d4c26f04006eaada021e3d4c16f02006aaad47bd4041c7⟩, ⟨0x3861af8d406863321938c685e62ce1620a7c4f42550f906002e215209d04b423410c07c83981aa0c805b829810e06802480a803e000, 0x2bd51f6fe69e49933431a613389c000d7a4e6c2cf0b0ec60685fe15fd580030b069e15c857757589d567000248188f86c9d71eb1328fd3e680004f9b290040f7c7b94c0368151e3c0a1eccc1ca266869611378a2468d3866b934c51a67500da5ce99d94b9d73b2973ac0552f048089d34b⟩, ⟨0x3831b58d8467432d1830be85da2dc1530a384fe25812488884302070f7872832e1720a684f826610e07482d815808703000ec046000, 0x5a07e2c0c007265672d84e001265572e119c4e326b00113298000f2acfff14c23d7bf0003cd30a20046bde74e06f135d9f9e2c2f10b869e17785be172d3d20948169c008a40b4f91270480034806a6978001b5a000800747ee9e0600068fcd4d7ae0003cda5c0001d8d9e7e28007edd87⟩, ⟨0x2ba1538a484fa27212e89384362080fe87a83a41ad0c4058c2b014708a03f01c80da05a82a013208d03f01bc0ba0450168070022000, 0x29644facaafc11578242e956692c004a50e94ad50e68bc1310a2ed0e71683e00435741e8009ab000e83cd5e091c35d0720008005aab437c5b433c581802aa0d756c27949748c611cf25e2895683f8b68478a766bc13226b⟩, ⟨0x3531960c5c5e02cb1580a8c4fc25911a087c4101e30df06642e814f095040c1ea0e7069030c15c09904201d40c004b01a0084026000, 0x213ab015cd07253d8080003cd012a866d8fd802a7a3341d0016ea610800b752016420fa907854c20fa68418037d4806d082ea4051841756000d2bda7005e95ad5802b4b069c18f1f8253ed0d24303d2a725363caa78c1520d2a9ad4d550a99e954c258cb0d9138435ea89⟩ ] def tableRRLRR : Table Block := .branch 14 tableRRLRRL tableRRLRRR def tableRRLR : Table Block := .branch 27 tableRRLRL tableRRLRR def tableRRL : Table Block := .branch 55 tableRRLL tableRRLR def tableRRRLLL : Table Block := .leaf #[ ⟨0x3281808ba85b62d015c8a484e826a12989244441fb0ea071c36019f0c806142dc14909b84b42300f1066029412c07f02c00c404a000, 0x51134beba623431f224e090395933424035f34083c6c781816164c0c0006c10734000cd03e88064b03bd3f333f88c78b33e449c1206032403ea1db5a5e23c0c0f8a9b02600079a000d0e3b100716043a7c2980c663d80e0003cd00a133c7a308c000c279a7⟩, ⟨0x3b01c58e046b43331860b5850426912908b442c1ff0f7876038219a0b984f425811b08603941b00cb05a02740ec06902100e0022000, 0xa154d4c0c0006c2473544bcd2be8cd104ac7c74ab1343d2b171e687804c009a028144af1dce5dd78af32c072a28357c7332c0f664ed636ceac9e9ad93347c038f2e68f0078e5a1309a0800678f86692b349849b06a002b9742961488f0cb03dd97807d447f6584e000ec1773606000360b397a271⟩, ⟨0x4112030fdc7a03b11d30e646e43681a08c885de29213688e842a1f00f186c034c1810ae04dc2400fb064028c12808903200f4014000, 0x1098f24a532c063ccbb60068f09984e94d3016f3a064a6580af997c2f1d1c5cca3d05d0d3d1cc05d8bae2f7812f469e9e589a34b4f461cb11468e9e9aba69f4f2975353a7f148003296534fa781a52aa69b534b58bb1a794a8001d3ca55a694c29b5d3ca59297d369a7002215bd3e449c12000c2b1a99a62a2b39a00080070ab69e06⟩, ⟨0x39b1c10d6c6683011658aec554299145098c4ac249118085c3e01e30de06c83161740a684a02120ea06582b011a07e02f80e0022000, 0x6147ba66b6a9e8e5cd6c4321cb038e1c901ab4ea3ba69d8001e3f263619a4acd26126c40800ae5d0a5852114aeb01a475e0709ac1d96138003b0f5cd818000d878e5e602d19ab5553fa72a88043a9bc602a9378c05d26f15fea4dfd013490117f293d12400dfaa4e0364a6fccc06aa3df983069⟩, ⟨0x30f1740b7856e29f12808dc43c2050f6077838a1b80d4867031617e0b685782a813b096044c2080fa06982e812607202c80c8032000, 0x3c0e7ce818000e071e66058e2c3d008143712d04ba3a7adce74e3e73a727ddd7a7a4eba21b484dcf4293893e66e534f8a4a4d2612606c905749a4902c7749849819478cd76e680e1ba66ba28efe7e08100b9f0005d362340237361f0dd32186e9⟩, ⟨0x24611a88a043220c0ff87c03ba1ce0e186c83421920c285e82d215c0a904e8260118085839015c09604381f40ac04901f806001a000, 0x334cfe295c92e29a3318493c5139927048f1a5e4d0d89eccd09a44d2e2781b03671606c0e7c57138001c0fbccc0f981f4000f2b032f16923c0c002703c731c4f036075000dce84cc27⟩, ⟨0x4aa2148edc6c63511960c4c5d82c71580a2c46e1f60ef872036219a0ba853827211207e83a01ba0c8053826811a08203080d0026000, 0x319ac1ab50c95650c5814e54955dcf8e18c91502c19b50a862abb9014de3d796029818c50e3229fe3ca20c0a1529da701b873d8e40173cd0006222d4c43fa604f65fed3a967000404f26d5a954e3d2cc00082772f269e5a7d37368c9e8d193cc23265a4009b598284012f301c152008f0507326855304aa9c12fd8ac01a829b3d0a585389a09405ed202b04800367015828b4d2087⟩, ⟨0x3401988c285fa2f016e8b28546296137899447c231105078c3a41c10db066c2ec16509784801f20ea06182e413c086035811004a000, 0x3093642400572e852c294dd161b22f064cde8ecb09c001d902e6c0c0006c8072d862003ec7ef4e6f0d262e9e29a52cd3824077785800330ae9c60d6001e6ec2613e51847000363d39a61440b858f1e9c0d6e00c2ed877140364838001b1dbcdc865aaa3ecb44e9a7⟩, ⟨0x32918d0bcc5cc2d91630acc51827f12c093844e21a0f987303761aa0cf86102be15008e84401d20ce06202a41220500188088022000, 0x6126c94800ae5d0a58529b22c3545e113531fd96138003b245cd818000d920e5b0c4007591de9a988a7dbd3b534a51a70480f4d0b000698cd39e4b001a981a62b54e27000364539b9f01c4606cf006176cb78b1036ec7bb252efa733d98e8f029b0cd25669⟩, ⟨0x3761b08ce864a2fe16b8af052a28613c89a04ba25011488083f01d10d606142c012a08283d81d40db06002d812206c0238088022000, 0x1a54f65240157341d94f651c01a734000d946e6f4787119b7c001b8e79264cd0c6984ce27000364fb9a012e70ff46060373387796000cca9a70087386f97bbaef3da76ee93fe1bcef1fde107034e612711ab24ef003078181bda66f56000d341a70062999d5ccae0dbe9f0cd25669⟩, ⟨0x5a02c4954ca1c48d1fe8f1c74036a16d0a9c4cc24b11808543ec1db0e006c434c18b0b80530284127073035c1100710308070018000, 0xe8df4cf1fe314d881e3bc7ea57318a2bdbf1ec5c382eadcb2082c8037d5578b65c38f62ddc16d6e4903f63fdbea45dc578965bf8f5fbebfbd7fde3d268affbc7afd5499ebfe71dcdfa5d159256bf80e357eb4406f83688d71fe0c9a2c6b6d3801ff05839235ae9f8de084f43c109eff3e127a75d52fd1d885853a907c89382403d684f53c70d0083f9f078181bd2848003efe8d4e0ebe9fd53000b33d0086352ccb7a70379935d8c99de70100010005c7b0c6a46⟩, ⟨0x5f22d69618ac253c283134093445521810247c43ca1d18db46aa2e315e0a544dc238108876c34a17e0a4040c1b80a603080f004a000, 0x2325443d8c13450b8f18da22c71f14bc62753cfe7057a9b1712dda319f1ec91463290a3c78c89180de4d71de68c6307c5d17eb8e000f9b5a779b166079a000632272631ef1a315c63ae3c6278c5518e78f18fb8c8ea9d0758ccb1554b31e48d968e3cec89f4dc7b01d6023936296bf1f1ec5257e2afc1c7715d5f978e8635c56d7e4e3d7e9afc55f738e4096bf071d3d49024afbfc7afcd5f76befd7d9e3d807afcdc7afc5601abf2f1dc66b984790943d38e000f477a9e8d34dd19f475a9⟩, ⟨0x5902b49510a6e510274937c97048221e8e006b63281718af04b224811b88403d21b30c805a42b415009484181f80d5057016804e000, 0x366cf8f0bfc301ab7138001b34fcdabe8e3bba30355f371d9cb8cc71889d0071e331462173fe89738f64f2c9f39fe8c40f2da22e5a13a3ed63413082242a24dc7f1b754ad3f799e366a93a7a11cf1adde5b548e3d0806a8fc714190665908bd827dfd08e38f2c695834d2699dcdc7a3f06aab8e6a8e8fb9aa9e3800754987354d49a797491e0635b3499b96001d6261e06b31e00079a6b12931745aa43e737ddef5ce76d71feeeee1fe41d3d11038f5c7⟩ ] def tableRRRLLR : Table Block := .leaf #[ ⟨0x2ed16e0b345862b01508a384fe27512808fc43420b0ff07cc3c41bb0d6067432416d0af051825c11608283b81920a403e8160066000, 0x526930930350a89349229224c24c0dc857189ad1e34f185c846bdb13d99a13489a6cddabf4e69e477097824001863b56d8aad4ef16d4ff16d50f1474d30c369a185003352005c309a971ed644f97c7af15dabaf938aad3d7c15f1f153a7⟩, ⟨0x3931c48d8867a3161828bdc5a428313c89484222050f007443581870b104f423010d07c031415a095041017409403d017008001a000, 0x40c0006cf4f34001e3ab62004ecf374f84cf2430007623e9c001f2c2412e61ac1ad3c0d6785626f3403c00061bab0634fc8c000c36fa9d14c019c36da986d4032d4f1b90d8eaf8db001356001f1b5abc120c2ab00078d7000b556afb8b6af38bde22ec09005b4f29a1e852712628681513e29⟩, ⟨0x4df24d10647302db13c09b44902210fd07a43b01c90d106543101730af04dc25410307c834818209a04381e00da05a01a8074026000, 0x21e943dd22da15371e01c42f381aab19d0f6d9a243d122d78f00dd0f3c6b5b343035163342f243a7c7a5900009e8eba1d79a890d90f0a1e443cc879635a5829e3d2c700035fd5d0e3d1c003bc7c4c000c881a7b40691079b68092227370cd25669309367f800572e852c29227558332af0f43941ecb09c001d9f7e6c0c0006cfaf2f44e2e4eea61f4d1f43e449c121e2278f0006b5a11e90f030b089⟩, ⟨0x44e21390688083fa1e98ec070035d1950c145a429113d88b043e21410487f43ac1af0c5058c28411b06d022c10007302600ac042000, 0x8ad61f3e6309e2ab868188ab61efe744db5738789944d757187d5c6ad30f7d76cd5891e9f122bf134f7dee2437e1e9c0012f23667beaf4fa63c35ef20008004001df1fa7933626c4d08d68617a2f357ab5a17e680037c469d7c35a15e6800e0b59c60a5a13e6800594e6d2260369c001ca6cc7bda40c05d3c267138001b41dcdc03cdfb8c0d8399bb6b⟩, ⟨0x3c61da8e386fe36e1b08d5068631c1858bf85ae2cd1530a5c4e026611f88603e21d90ca057826e11007482d81260630200064014000, 0x60d3692400672f424da1ae852e291d35cfe0a9f7d36b35b09c001da40e6c0c0006d1f72e928d4f49fb3d3818000da3ae68001aaa9d1000368dfa773bb8ac1e2893d1bb7e4dc760e546e853d71df35d18be3d18a7e37c97e35462793855e20a8ab69e2b7157c3c56a2ad155c380062a58722af87db99891e06⟩, ⟨0x49d248116888442a20d90307fa3ec1ed0f087703a01c88e186f236119d0c105d82d41568a184a019308903ac12e064018808001e000, 0xc2b0003520000172adeff16deef14f23b84b308e306b3d92adeb71606b7b5c574978274576f4f8a0006a8972ea8880010005cab7a5c5b7a1c5000318878f187630f72c1afba1f94fbc7490545128ec3f2a75cd6692cc153a47ad32a6800cdbefe3d143a3aefca654c8018b3db67bedf771e8d8bf3be4b08d7ead450254b8016e3e0e5844e125a7c22ca93fd534fe8693e34ae49⟩, ⟨0x3d51d70e1c6a232a17a0abc4b624c10587f03dc1df0e886f83561a10bd055429012307f035c1600a503f01ac0c004f021006c01e000, 0x6507f2402955a4e7ca0c009a00078f2830026f2654b3c650099c70016aa28001466be3800a551200063350003e3d2a6aa1c0010020002d3d8a6da18c24d10d31a245244c0d2b2400972c001a9f753666002aa7cd4d4f6004ea6562000ce5c63d0025cbc12004231df2e0845e096e35b09c0025484e5d231847⟩, ⟨0x3231678b0c55a29e1488a004ea24e12088684201e90e106a830615c09a84382020f2072835018e0b605382740ec06702000c404e000, 0x100052aca742133be3e234ccf0c7926ccd4c69c4d89b2749f3984f89aa74973a069d2189a398000654ff26514718000ca1ce3ca27c4c9cc943f28778f287402f71e8527127ccdca69f14949a4c24c0d2854002f24d2480029427c930930355a600a9cd⟩, ⟨0x69c33a9940c3a5ea2e29648ad653527812ac8f04371f40ce84dc20b0fc079c3ac1af0bc850c2380e605f826011207f02c00c404e000, 0x5ce18a4f997385cd9a7b9bee6bb9ab4fc546fd573469f86de2ab4fc4d70d9c54e9dc23d394e3cb0a7bca2eff8f2c268c1bde4177dc79611460a3508bbde3d583ef11779a7ab03de1f6f4bbbd3d57fef07b7926a1775a78e58ec7c1db5937b274f8085dbd31da6242a1edfd71c5db90fb176a2edac9b472b076b64e5d8f5311150d4c71f00f1e71b4e8c00272b0c6234e7ae3dd687b834bd1a6745ce76e3ce8a9ceb39d38f3a1a7444e83e3ce8c9d09c79d173a0e74171c000ce7fe3ce88c4f5cca48f034e9ec4efcc954a00078f034e9bc4e9ce⟩, ⟨0x3551a10c6c5ec2e916d0b305762ae14e8a3850825f12808ac4382120f5871833e16c0b084f022a0ee06382bc11407d02b013004a000, 0x180a46925d086e9dcce00969e8527126086f534f8a4a4d2612606b97c005d49a49000ae5dd4984981a8e00009e6800372cea4003d1bee7dcac0008005a784d72a8003a900036b539a00068dcf44000dad1e9ddece2dca172769d84ee40f14bf3a0672038a5798000dcd7a7⟩, ⟨0x3df1dc0e446d43341778a6c4ec243117087c4141fb0eb06c42fc1570a304d424c115077037c19c0c105a027c0f006502c00c404e000, 0x5b0a0831cd9d912ebf8f3b6a5d871e76ccbaf1f19c789cf44cdee9a899e3c4e6a264f749e992898e3db05c1669ed99b60782bd383aaa77536da2a71536dc9b7069eeabdb8b4f718dd55b70e9c013d280e3fa1a4f8d2b92460d36bd800672f424da1ae852e2906055d08da4a5d337916c2700076bb79b030001b5d7cb⟩, ⟨0x3f51f40f0476e3901bf8d6067e3301928c305ca2c415d0a8452e27012488883ba1b80c985b828e12007c83a018209a039813004a000, 0xc2700076ca79b030001b64fcbd138d5ddabebd308bd73e449c120374e9aa6e02e39a020770e78180ad9d3030001b637cd000354c7a202c6d8c74c04ac6fe0140ac778e04bd637a902c6b1bd4d6340586a6a9580b3e5d52a0155cb00031bdf935ce6015b1bdb931bd40567265ae80ace5d5c50165cbab8802cf96000d61fa7⟩, ⟨0x69e3429978c986423149808bb65b42d19628a124791fc0a1c4a220c0eb072c36418b0b204041960ba05482680e606602c810004e000, 0x7cdd203c6b00f34bc4781807bdd36d14000f34000d5fce880ebb685d3eb7373f539d2b7d4917cad254a70f5bb29f9e96ff8f3876dd8c9519f9cf956a483fea4adc96fb8f2746d6949d0b51e95b6c96bfe97359c77c1514785a53e5f9c2e955dff447ac086d4e4acdd3b9fb36f22a277e00ba5b7695b29613bd0b4d96a3ae6cd08be3d22d5b7501bf8f48b2915adb980ddc796c72e04000f1e1300deb9c000db37e6cb84019dd101652df12a7ce0f7fc12e078f2ded2a70019e3e19a4acd26126d98000ae5d0a5852118aeb01c475e31aabc7d9⟩, ⟨0x4cb24f11e488c4051f00eb46582eb13508943fc1c80d0864c3041710b104ec25c12108403bc1900bb04a02280c60520158068016000, 0x440464c4dd9c899b24b4e4399131648e9ec8fb246c93b2334f64fd91ba7b27ac8cb22f4f6bf65082dc245fab31117e22fa4639c7126fc90cf8fcb5d3dbd479fb4cfa99d53b7b3bf4f0ad2af1ebaf533979f8f47f8f2c42c3cf1df3a8abd96a3c7b0ee00078f843619a4acd26126dac800ae5d0a585211fceb01fd75e348aad7d96138003b6a5cd818000db50e5e09c6ab2d827e9c599f224e09⟩ ] def tableRRRLL : Table Block := .branch 13 tableRRRLLL tableRRRLLR def tableRRRLRL : Table Block := .leaf #[ ⟨0x68632f98e0c225ee2e39680b2256a2a19470a244eb26992c09124441878ba856e29213688e842a1f00de856820c0e5060013805a000, 0xe015e8867cb711d300036e239b8ae33d644c62db86e6b101b70bcd308e0006dc1f34000d455e88003b701d3818000d452e5e1b9e2800715b8731576df39ad0162ae3fad521dc7a33349ae97fcbc1b62f6c56028b89d804b3ce5e8ad352b7d94d5863a53cfb3ef67d05a25d16e3d801449e9ebffa24a894d3d7ff5fde9ec02afd34f600d7e75fc69ec09238f4f4295941a7b216851b27f4e2341445ac9d59a32876bf1f1c467d7df5938a22964bf1e32232ed364cd92ba71198b25d64ca887afb822d845af1e2d227ecf0ff16713d67⟩, ⟨0x2991478a004ec25e12308e846021b10187ac3b41cb0e006bc3101760b6057426c10f08283b41b80cb05f025c11806502c00c404e000, 0x103644981b0eff1621121e11a061e23561dbe2e1e9e2c519f224e091834801ec447cd2e91e0630936e60000f3400b621ee8c0d873f8b26692834b8a6dc88007e5e09c0341a0b96c2700076e379b030001b717cb⟩, ⟨0x2cf1540a044ae24c11288343cc1b00cf86483061760b4856827612c09084081d40db06382f013a08c03b81b40aa04b019808802a000, 0x6adc0adc9c0aa00139200755802a3c260003892f9381478a1aab124f1c354e2480d4fc7cd33f8a5724b8a68cc612403ea2a4e649c120074fd26285221b13e9ca3626d3400a938267a1333c0d87b38b0361f7e2d299fc5230667⟩, ⟨0x2d91648ae454428b14009a44a822d0fb877c39e1be0d8868032a1700b2856026210e082037c19c0ad04001840a804501c00b003e000, 0x1918d918da42b2426864e09079d960fea7000352db960006a5a8041e56227e2dd630c9a6ccd5069c12004c4c9ab84ce27b7b000079b8fe6c9646068978d90d58f99c00763ad7b1ad8a01b6a015ad28fe295892e29e46714eae00d49⟩, ⟨0x44021b103c7d43c31cf0de46863361878ba05bc2b71550a0c4bc25411788283ca1c00d586842f4153096042c1c80cc0538080020000, 0x81800d5603e580033c569c001d601e580033cce9c0019e73569e6eaff2797e5389c000dc02e68011a55dd181800852ace5b89c000dbfde68019409ec606002e811d5d01a557e9e8fb2abb4f2194903a9aacb340c0006dfa734001d5ede8dbf20003cd0018b2b88001b7dfd3c1adc5075f12fd383a58a480020e9800400180089d50091a7c8c6dec6⟩, ⟨0x34819f0c9862a30417b8b4058a29e14889a84c023910907ac3941a30bf05a426611c0848388176096038817009a0400188098026000, 0x81b078f164cd25069714dc25000fcbc137e0441872d84e000ee10f36060003707f960006fbe7444155c1ce9800c20d9c4215c1be680413db6a65094e00069400024e3cf3da6bc5134b093d672e960a7b1e580293cd6a40239ebf5711aab3893066f4938251d45dc287⟩, ⟨0x2d01628ae052226e132090445c20b0fe07c83be1d50d7066c2e815c0a484e825e11e07d83981b80cb060826811606402a8120030000, 0x84ce27b89000079a00bce4e4606005671f161da1c02f9c5c5c247818b545c0d70f8000f3432488001b877d3c205c54450f9127048f1a40179b8c689e19e062a34c0c0006e18f34d2899b1b85dd3308ec2bcd700040078ac1edc5⟩, ⟨0x26812088dc43020b0fb076c39c1bd0d7068c32417d0b585842a414809084381ec0de06582f014e09203b818809a03c0178078026000, 0xf4371a7a70379f05b4b713835aacda8e55699a30cf9127048c9a641d5a5f23c0ca92606b8b400079bd0a470c2f1708ef143544d0a68d653c54a9de86853a322a6341523269b33541a704fe08b⟩, ⟨0x2e61608ab0544293144898847a2160ff07983b81b50c805a42b014909a047c2240eb06c033815e09e04882000ea05602580f002a000, 0x289d00235a27067819624c0c0006e42f34001a25f620006e4174f0a7f170a6f1606b8fe00079a000d123b100a571f3a706695c920c6a752155b89ee3b8001e6b3c9181bd581ca58d1a70cd7269c1202bd352e131847b8d800079a0e0b1⟩, ⟨0x2bb14d09ec4dc24711008583de1de0e786e834e19a0b985782a813d097048422410707803741a60ae05081f009203c0158070022000, 0xc5459feffe0a5b89c000dca7e6803cc2bfd18183ede15de5c19a572483029e1e45b89ee4f0001e6c0dac606e0659671260cde9270486d6cbb050f0300d14536adc4e000d149ab003a8a3003f55c668d33e449c123469⟩, ⟨0x47f2158f2070635e19b8c485d6279133085c4181fb0ea070c3681930b9059427c11d08983b81b60ca05c82a0112068029812004e000, 0x2e2a48c4237446f6187e3dae179be0b117a1bfdf05c1c755209bdecf0aeffe38003e06e9ee633c0ae68003deee9ee623bdee6dadb5e7a9bcacee2efb05c9643f8f8dc98001668d9a2000b211d3c26cd735cbe11b5cd8334ae490018c4b3c63463dadc4e0006e5c736432312e303640e4616ae0b44d79a648d23a69fcff9a9600317f698b9b34260018bcb388ffb957cd⟩, ⟨0x47b22d11248704131f00eec72c36319f0c5c5e42e81608a784ee25210f87b03921990bb04d425410707002e412808702a012804a000, 0x16411d9ee0d2f469bea3779d3df4fbbc2a9fa7be9efa3d3df557ce69efa9be6efa0d380037d4e9d7d364a9e65f5a000e9e065f5d929b991aa8cc626d7a3652e3deffb2ae9f64ebdfb654d3eca5bb5a2e7a78cd45d30f1998b9c5cb0f1918b7e1d19d2b2efa100074f8980034dac3e49a29b7cec932bea39c563eefba7f148002562eef7a7818ac3ddeb53bbceeeba7⟩, ⟨0x3641988c646022f41728b645942bd1570a584fc26612c88c841a2030ef06ec2c815a09983d81a60c405a82680f606002b00c404e000, 0xcdc8001000b55867f8b86778ac27949788c691dc5738ab0caf170c8f170cb715c4e0006e7ef359fe95df630334092baeac0079eac3d15c26210e000ba8b4a787818cf35cf6e6d20a8a800a09761c013a0ac3e6495492019541c8f7e3a5d9c030781a3761f8357031a16b9d7cd⟩, ⟨0x3c51d80e2c6cc34119b0c845dc2d615f0a6c51a26a12388903e81df0df06a030a16209f84701f20d805b82b01160660208070022000, 0x184ea99690029d5cb460026ac003968b5782419556000cb3e0016ab0db7170da714003004c4e90c019801e26004018c4e89c0378b011400000387ff5b3000ffeda700b86c023ff3137e200e626ffe01cc4806effd89000f77f0ffddfdf6bfee010b5e0900efecb5e6ee0076af376001356001e6ebabc12346b⟩ ] def tableRRRLRR : Table Block := .leaf #[ ⟨0x3691a90cac63c2f71768b1856a28e13e89b84c624e114885c41a1f80e886b030a1760b084ac1cc0db05c02440a804501c809002a000, 0x60b2f29ea5c4ecb09c001dd47e6c0c0006ea2f2f04e296fad0e74e2ccf91270483baa4035ce9b5a5e23c0c0e6a9ba7400079a000e743b1005f74dfa77a9a9b94e000aa5d1a35e3a4a6000352e4d1a71e13000602b8722fb74c79a00100100da02987894dc8c0e4a9a54d462a9⟩, ⟨0x34d1930c645e42e81608ac0512272131896048621e10187e43c81da0d986382ce1520a183bc19409704481e00ce058018809002e000, 0x195659e976584e000eeb4736060003759b97a271679960d3a6220b1f224e0907e54cbb401e6b410fc53c0c174a9818000dd5ae680032ea6c401add57e9e00a9f45354da004f69b92d79a55e3cb5c00169f3aa96b4001d3e10d86692b349849ba9c002b974296148884cb⟩, ⟨0x48223c11448583eb1e30e4c6c033b1840b8c57829713208fc4341e70e106742f015108d83e01a60a004781f80de04801d80b802e000, 0x206bb1200079b9641f33b1eb0bac4eb33abdd3e40dd6169f1f5c817ac1d3e403919e40ba7ca8b205d3e3f9950e409a70007ad4d3e54875abceeddbaa2d3f6ebd50d56fa7edd7b71d3f727db569fb92eda7b6ed3f72fdc5e9c361c8af4f95d6579a903658ff38e06c71fd81b0e3e99f4d389ebdc01ad3f5ed2728033a7c334959a4c24dd6f0015cba14b0a4449658190cb⟩, ⟨0x42420a90287ce3c41ca0e286ce35d19b0c4c5ac2b114609644682010e706a43081630a704e42300eb06302dc15808703100bc04a000, 0xc893824003074c4c1e60e38d000800e0e587818005070c4c0c0006ed17360b1073c88e13503a827c561c21acc774f91f75c9a7eb7f23deb8f4fd6a75ada7eb4fad5eb4b4fd6af5bfd6869f30ccc1f53992001fa7001fa6b4fcf59be86cdf11f3567f84f87f99b38011d6869f224e090007acdd4f3707cfeb4001000facbd3c0c0017593a9⟩, ⟨0x55029c1474a1c50327a134c95e4a524512008d044516a0afc53427912b08cc4242070f307043381690a884b82160b702a0128046000, 0xc597c5eb8220f9127049c491d6a86b6807a40383c0dd00142606c54dc511cebff0f59fdeea40d40772e1413f680eac4f61ff458380018118e8f5b242618b5ae54766355d5b75c203fc10c81d4aa8bc7874b3667799f6a7efbf02d23af841625f95082c5fe4802daf04801fe3dac001c9934e000e4c5ab0007261c98f55823f8b01080962400900ec38002208f01f58e1000de38001208d01f18e031c10019c781aed61018e680220ef87⟩, ⟨0x2cc14c8a0849e243118088c4162010f706ec3461900b785882a614609c84a82120fa077833817208c040818009c0440160088014000, 0xa59a969a5b34f48ce98028a5a8001d3e2316e87f14847543c0c1a2240010086974d562c5e2c5e879c400cb3f8a5724b8a64cc612401a702d3592704800cdeda5a28d13720020056784d372003692e91e06c565c581b15a71606⟩, ⟨0x4f5270135895e48a23491208363f81eb8ec86aa2dc1608a8051626a11e88a03961be0cc85d029e12a0818378172094036813004a000, 0x17ca981af040001e6958b50aec77e7bd14f3da06b679ec034033b3ed1368d89014971b3d2d54b369c00925cc920a355b4fa60b4e00412e448fd1a8d76369cd945303a7fafde120034e969a6db352dd3559e95e96a9a6cf4dd6600e000124628cd25ae97ad3c99a928a5d753490d2e9a9a480002d480034b96a72dd291fe6523d4b8eb2934a5c3594b7d267accb6e25d79c0032df67cb6825c39d4b552dba7⟩, ⟨0x65e32a18b4c2a4d11c68d206422fa16209fc4c823d10c082c3b01ce0d485d82be14109183f81ba0aa04a81f80de06402680a0014000, 0x206cbe200079991cb8a20bd4f541406d4ea6a609e828200d4ea98ac33e841c697712f4c84227c7aa1595a0ccd3a56d03d78f04fdb5329a8531f04f04328069754a56141408e33bb877a60210be3c81e8ad0266952b550aafa0f8f69c542a52b44c03c7b4a3694f936ac2d59f26958d5138c83c7a5614a52a894640e3806830761df979f9d4c900a9a7f1480034c800a5a781a98f01435202c533601c69d8ca63b461258f1e5c463d406006e9eb0ab8ed3500801656f69eb3acc222b1f224e090309925675437ad020e031e06⟩, ⟨0x36519f0c745ec2e516a0b1453c29114209c44a023d10d08343cc1dc0da86202c213a08984041ee0d0063027c0f005b027009c03a000, 0x19848008f38006406ce240b30873b4cd2586930939830005f32852e290e5180131f5720dd1925f47c66184e000f30273a060003980b980020051e772002166afa84962cd575092be5fee71748f03000bcbf7ce81b2fc8009e70008cbf1cc0168e93f8a40100e8c93c0c0151529⟩, ⟨0x4ab24411f88b643c213100c7bc3bf1d00df468e3221778b2852e27212688683ea1c20c0857026a11006d031414406c0178084026000, 0x41822699181a0f3132c58018b74989761a25a45ac4f3939da69e1cc36a4c3587149ae2d71f13706535d1defe3bbc5aaa69ddeb7787553d3e9dba98e9f4ecd4c1ac0d3e9d9a7469f4fed3874fa7ee9c1a72e9f508d3db4fa832b92d85e9f505d40d5c86c2b4e000e8ada7cc38d15f9c228d0ffa7a63b4c1db6af1e8855201a933e1d354c0e111c7c7934000403c906c3dd0dc4306087⟩, ⟨0x7f83e89e6ceca73e38b9bc0b3a5852b69518a3e4e926112307f835d19c0c4c5dc2c713984f824e11007682a010a06201f80d004e000, 0xabb8e8a78ecb6607e90b6e3c273abc90dc38f0dda1baf2d742ced2e3d4aea945c76a280005730bb03628b582eabac359186cd2a683a16413a3d250c0014d3d76bf24fa696cb8e865f5d1b8f5e4f8d1c4f8d58e5892f1eaa0b8a5e3b122ac6ec48f8f34aa8ac71e8abcd29bddfc77d2576aeee6bf0faf9a13620a4ac448325c77d2376aaee63f0eaf98135e0a440a8588706478f45f09aba9f5e44d5d489a9ebc6a6d633d78e5c143514ab0fa051b0ade3887d54710639b7aa9f783174c11d7a15d47da43a0af095ee708e0fa2d4522b8f9a4224b60a1f1d44a64c394c9941c9ff0f7b8e68ed14bc01bc7878801f13135003e2400d134c4c267138001bcd7cd⟩, ⟨0x6df35c1a80c7a52628d13d49a049d23c11448583f91e30e846dc32916a8af84fa23c11287bc3901a10c4836c18609c03a813804e000, 0x1bd53d3cd07c597389c09f81cd3a004b5f7b8e3eaac1454809f76d4dcd48002463b075052f525ae86a54102758ce643f18dc02ff271e91a23f88ef4f16a447ba75db62d388f34e000c51ba7459d99ab9d1644589a78b1e2c38b0b4f1b7c6a716069f76a92f74f1a56ed325e69e04b2d9f5d82000b8e95ae04aad9e5d8000078f058e9b6f189220b38b674f1238003b7845b1a782cf4d72b676e59ade3ce513a01c7000364df9364c78c003aa3500019a492542691c94baf9474ae6e15607e3ca18e334e7ac8fc7ac08c4cb8f0da1d167261ba3a33e4ba3286e7c9⟩, ⟨0x3661ac8cc86503011770b1c54027912908e84262060fb87a43b01cb0dd06ac34217a0b5851026a12b082037416c08003a813804e000, 0x184e000ef64f360600037b1f97c0a440024e1ce98001bd89cd000370c3a20006f60f4f34e716bf58012e3d0a4e24c10dea69f14949a4c24c0d5f8c002f24d248002afc3c9309303562a0013cd00035f7792001eb1473ebed00010005c784d5f64000f24000deace68001ac47d1⟩, ⟨0x31417f8b605922be1568a184a024610f884c40c1df0d486442fc1740a684e02040f407183481860b204581f00d605e02880f002a000, 0x32955c1ff0011c7c89382464d35976e20734000c1fa0007c781a0fc0005e4c23389c000dc4ce5dc4bb8720007959ae78b80a1e060033711f9615aa70003063801671e686f4349f1a57248c1a6f69000ce5e849b435d0a5c520c8ab9c46002fa6344ab⟩ ] def tableRRRLR : Table Block := .branch 14 tableRRRLRL tableRRRLRR def tableRRRL : Table Block := .branch 27 tableRRRLL tableRRRLR def tableRRRRLL : Table Block := .leaf #[ ⟨0x7393891a44c7a5e92c314c898044e22210746fc2fd12f08643e81dc0c4050c26812708b042c1fc0d705802980fe0580188078016000, 0x131d44c471c8090974970e85ae5945690bef6ee7b8e40444b9cb865598ab878f2fee6cccc049b652eff8f2f3e5fd4d98980736c65df71e5c1bea87cb551fe0f971c0012060997a3cb206ecdae99c5c71e5736b615e0001970303725d0f1e06be0332fb9b664a4df5301936726ea4dfc9bb9b5336e660571e4dd49be9b5126ca6dc4c09937340cf8f30224df5990937b26e66d3c9bc9b6f26e297ff1e7a2584fb14966438e000dc79a9b433c69e8284f2c2658a1b31bc742773d015c62e53e39e49933431a613389c000def3e6aea0b425d181acc0da10e58001b417c7b41b683b9737225b244e09⟩, ⟨0x6072d215f4aac52f2841384974493236111483c39d1778b2054227a12988b042a1d00d486082ba13808883a818609c03a813804e000, 0x433f1e8f0e1aa95b11eb901c7873d19f7930ea233e72633dc3a7e4c36f874dc98cf51a63991a4234bf3234b468fe6439686f5c790890b278f210ca9571ed4a4b3ea305723abf0d6a6973b70e38e54a966bb7a165f8860259ed6a5b87f72368c0df90e3ccbd000bc999bab2c392b2be66e726a5b4cdfe580018417c9b2b34d47c597abf2d7cedc77cc5082392f9ae104727e6ab2a353653fcd3a9a95d75479752b692572ee9a5d1ee5d1d7baabcba3ad471797758eeb172d65041ffe4d4a789e1cb⟩, ⟨0x6563179890c266062ef9754b5c5a12bd1588a7652a28c93d09ba4b824992188be43a218102c76e2fa14b88d038419b0ab02640a8000, 0x2fa50007e5e098735b09efa30003e6c0c0006fa272dc620006fa0f4efd1715b46d5a1e9d29a524d2000ece1a9d9ab4c000eccfa7d9a766ad5b89ef9c0001e6ed07b33ec606da0b665d5db2fbccd6cbaf68dad4e3886b922820bca9ecbb184016cb6049570bbb615e21fcf71ebc95b2c83ff5e1eed7d789e3bf23af0d5e22bc4c1feb657c77e455e16bc3c15daf1107f6d9571ebffb342e3b34e811b7212bbdf1c414902784e52e72ed3ddaa7f1e209abc10ef7afdd81ab8f07e6289c3d78ff9c783f1144a0ac43d68ff7c7⟩, ⟨0x6002ec9650afa54728893a89a43bb1d88e2868a2f11650a8c5162640e2863c2d014308f043c2080df05c02140f6056017807801a000, 0xa95c419b8e4196a5680019609c7ba7b4d2ca258e4b14e38e3f20c563c78e0006a2e726a2b71a5f0c3781f015592118000184f30242ba761cb10bf7776ef057b81e5b609082eb7d8e3c0d9d5af15f3444c408d892702cb8e225e046564f892502c78f0eed8ac71c000c3d5e4c3b2e3439f8d69c9bba822404491b0a8172df3eba2ddd7af5f389b8ea622b6f5f46e3bfb5b035c7db5f6d3d38011b6ae9f224e0900076d3d4e7360023cd0004003db434f030003b67ea7399000de6c99a4a0d2e29⟩, ⟨0x6c53311874a844d022790e48464181f88f2874637e1a58ca06022da15b8a404d224210f87e03a21aa0c1853425411403a813804e000, 0x11cb221ad67ba832843e30771e306c72b8868848b8e001684cc56f62e17816beecbf78a02ffa8440de028ca845948b371c8b2c56ea1300012329916962dfc722d00004001509722c91948001c56de3c67b0dd3bc36260003296b8f7e0652df36fc015c3e6b031164e9d814605e2c8d3800778387bef86eff9a6036783727019813c498129e09c99e066047933c0800172400380fc4e73d9e03cc9e014c97994d92992732991d363e6000f813d3b778f801000e1f0038620d0ff42ef58867af870ad25eec2b3bbd182af8f0005ffc71c005db7ae3c28d20cfc7⟩, ⟨0x61030097d8bca5c42d79694b2858a2b19508a3650c27592f894c49c24211747f438819a0c345ae2470ea85501e20e706001ec04e000, 0xc89382478d3be00176d13c33c0c5469818000dfa2e6800ef55c40025f9fe99847001de7b5800ef3001dab16c71606c5abc58c1f1847931dca132c73a8886847630e71e3b8c1c484c91ce6221211c8c37c78ee0845a131c1c38c35c78c74e8f78f18e5d7d3a3ce3c89b831c0011fd4c735887d185ea115684e3c89a0006fea2b41c18d8e69227b8f22663b180027f4f5a0a0c64733913bc78ec51da6b4080017f4d224b8f035f8ebba3cd911f1cbe3acc188e3c88e8e5d1d620c3c614e3c5d38babc9⟩, ⟨0x2d01578a9450824f11e08b44302030f7077c3a41c30dc065c30c17c0ad852026a12208504001b20c605b82b411808202d80e8026000, 0xe13003b6c0c003c236b0003d4000006186a899d4d12ca74e554c892a4e24c19bd24e09020c08b5c099e06c0501eb587e87df1175e21e34da1e06bf6800079a7ba46123c0d7f7bf36b81afd70001e6800efb5c45fbdfabe9a2287⟩, ⟨0x71c36b9a0cc226012ed16ccb2056b29c14449d44d32560cec6301c50d005ec2ac13108d03dc1c20cb054020c0f205202180d001a000, 0x94129bc930e63e3e3aeea3d08986d378ca08e3aee61e8c00069611de55db8bb778fad8c000652df1e52cdfe5e6e1f00eb89e1b4055d3908dc3600a9a7bc14014f8f7825fa171ff41d30050bc45c711b2435c7d3d89e87e4c7463bfc8e57fe6013aa362ba056bec714184c6a9bcae235a01fcc4cb0657969d37e11ae38172c2f8787e0c73e3bec486573cad7402c50ec8b84c70c183c6a7bcaa235201ec554989560c2f2c3a6dacc11f638f5af5711a70f0ab89d4d6bf5c4ea4001eb3f53d65e9800305cc4c15f0d058c3000e0af870007b29d3c0d7f3c82af37624d249c674385796c27⟩, ⟨0x58f2b81524a264ec25b124c8c643c20a8ec87503811620ac453c27912308843f813f099847420e0fb07302fc16408b0320168066000, 0x1b5749b4416b079e16a65f48001e385a897d1c921c12f4087271e2010e4c3c36e1ff0e3c3d020a045c90007407b8f444e888890c0002e22e8d371e06a0737fff9a92cc48fcb9821f60020004a0df00146571070000c4bebc789512482266d89b934f36ecdaf371e9c0019b7b4f3705e2bab12312e4487a0001000483640019955000865a106c0005e3d2345e70d98fc342348dd9a889dff1e6b89c000dfefe6d2065e17d181a90f2f09e5cc152504c05a7⟩, ⟨0x3da1d98df46e634c1858b9856628c13288f842e1f80e106e032216a09283f81e20e206a831016e0a604b82340dc05f02000c404e000, 0x28c7d079e68001a0ccbb8f8f0350655dc3c9bb76edfbb9aed9d3a20576ee9d0f14406edcd385a29811c90b9b302393301c2e6726d6c4be9e5dc4b7b4ba0ca0006d9b71e06c03800079ae2a2119f45e57aa3497f56b0b8e16ea5fd71e8527127ccdca69f14949a4c24c0d6c402d24d24802b5f493093035ac3b445cd⟩, ⟨0x62830917bcbb25852b11530a524d5259110086a42a2018f7074c30713b89483fc1d70d805e82a611d07b033c13206601f80c004a000, 0xc77618003e53c4f9430cf5a9ec6493169ec00278e001f05e27c0d8600378270ed31249680052a2cd3cb8e005efde1c000d153a2a2d57c0013560a369c784d09b01f1e02e69df5c07bcd6ab4d56e94671cd64c4e6238c164ea0653b6a7f43ba2a6551d4e391c50b25502e9dad1d31dcf5324d73d3f9e3cb6b2dbea52aa0ee5421b531e8e8f1c0235144e3d4575dd9c7a8acbbad774f1eaa35b50e3d545b69e59578f5516aa1f1e5ddaef2e3aeee9774bbc78f7735ddf77169e835aee8e3e449c12000ddcba9⟩, ⟨0x499246119487c42d20f0fe47ac3c91d10dfc6ea35217f0b6456828d11c88b042c1f30e806b43141670a884a820a0d205782640a8000, 0xc3132f381a3a6c292d9c74e0cd2b92400194e74f973cba62dc4e00070317372f5971c8c0d994cb7e2c002b8b79fe2661ccfdf1d56ec1e352000ca3ba74dd3816f9ae2cc000cfed000467df8f066cc5e1b2eb992c4e60732589cc8e603139aecc1e2f35b987c5e62f0c0007028f359a7e5bb63340ceaecf569c0038f4c4e3bf0c000933f2754c88bc7000299f5340a753c889c7⟩, ⟨0x4231f80f2c7683811ae0cdc6082e91670a9c53028913208fc4542200fd869c288133091044c1d80df06902bc11806502c00c404e000, 0x44991adc49ba700065ffd4cbf5a68d60f34892b4f1dd4771ab8eea3b1d3c7731d8475fa7c9e561201c8c1f040818fe6e6495492000ca67a7674399bd5d60a9e066753998d5802071a54032bff1a16e3801f71a3402ebfed5c5342bc7c334959a4c24e0740015cba14b0a4013981c580073018bd0bcc2afb2c27000781b79b030001c0d7cb⟩ ] def tableRRRRLR : Table Block := .leaf #[ ⟨0x6182fa9738b4e5842b094f0a0c4f025e91e08483d01d48e086b63161610a3c4d823c0fb868c28013208d03cc17a098038813004a000, 0xc93f0e4987054f362a9a11fe38e3b73389dc96e6712c104239a722c3153c000f1f727866db78f084674ed6fcf9dcb31c9f5c73e752cc1adf115dc9f3c730b86174f9ca160965fc796292c3f932c3a589f2684d05f0e3d45aa8614252a0b71ea2cd42fa863424ea0af1de958fa5e81d3fa5fd3187f4b7a5fd2b87000600121dc3041e3800200070ede1c9b040e3aaaa0002000a1db4392607fc7921acfef1a6124c5be3cc209847316b8e000e055a7c11cbf7b9b1f147b3a9a2248f6f971ae449da7⟩, ⟨0xaf75692ae952aa70525a8994029bc3da9dc0dc064130d172cb4c59c2ba92e081437a18b8ad052a281100076436418b0b204b822e000, 0x59b0000eaf2e0716c4cb1e35362bd8f1a9b1dec56d4800362c69ec55b15b575ed22cc584878fdc7a0ab5d1d62343e4b88eb219c7f5ff4590b08864c945358f955545eceb6e78adb84d2c4d0b01060acfcdbcb54817bcb5ecec23cb758b32f68220390cf954758438f4152ba3560f58d7c7b88aa091640b8fc5908b20eff9421fb8c1c7bfe37111411c21ebe6ee3ed641ac825901864f8f03f2ce5f24003b1fac80b206c96d3800565769e06595782eb9b51e27123ddc61995eaac1f4b6c8b2144031c2bd97a975c77bb6c32ebd4d83d8b1f2dac33f4b6ca1fef65b1c271ebd4583c8b1d43f833ecb6ba54d2dab129f1deecc5612a1d2681864b2a2e3c99f2b105625f21b0c85dffc7003a2693a1a8d263abd1d837219f5ace27944f09305c78a61202b9314c24057262804809e4c4ff9005c900024476403f1edf3d35dc413c7621e123611d879b65b194fc9b3585aca4e3bbd9001eb151aa9c2980aabf3c7⟩, ⟨0x26712108bc44421310287c83ca1d40e286ec3501990c305dc2da14609a84381fe0f2073835815e0a004882180c205201d0088014000, 0x592a00b69e5343d0a4e24c50d02a27c52526930930350a89349229224c24c0d5e2167973478d2b3c2bc373db13d99a13489a706a2c80e69e477097824001b18b56d8ab2e1f172e2f172e3f1606⟩, ⟨0x34819c8c4860a2f81718b3854e29a13989a448423310608083b61b60c785a024e11b08303dc1c40cd054024c0fc07302f00ac026000, 0x3093842400572e852c2923d5583e2af479d7b1ecb09c001e102e6c0c000708072e928d7abb79dd3818000e0fce680036896c4018e0f9e9e0f950a7cdb2a400100baca3d3f23035aa71536152a69bd52014d909aba0455873aaf048302ac024b410001d565e2e2f788b⟩, ⟨0x2eb1630a8451427312e094447423010587f83de1e30ea06b42ee15f0a384e822a10607883881ae0c204e82080f00630180088022000, 0x5a8202e6aed4000f356068b1ec5a65d914cbc1222bb2e06b4c0007d5b09e525d23184700035f2b975f240008002e56615e2e613e2b09c02bb4bf575a999a94f912704833aa6d2901275a0a92a9e064e3548024000d971a7a21b0cd25669⟩, ⟨0x48322e106c7ec3a71c80d3c65431b17b0b4457c2b014e8a284ca240118082c3cc1c10ce05dc2a412d084031c172094037812804a000, 0x4cd699bbc9009ece301fecfad3809f44ee9c025b38403a01f6cf8d3d6b4c7b37c023b3d8015d3800367a6a6653004b679ea6cf20093521ea27e86f7113bea26d4a008356000d9a9a9d0c6019ecd3d4d9a40336a6d4501a35765d599fa9b316ccfd4d99d6626a6d4ab32b576a4d99fabb388001b32ecdcd3e10c01d5991a901aacc8d4d98e034ea6d43b2fb5765e80b9ab⟩, ⟨0x3eb1e20e7c6d836119e0c545e02bd1578a7851a27e12b892847a22610887a83ba1b60d606142f015109504541dc0c905100fc030000, 0x1c2d5cdb5d80a0d88003cf5dacfa784c000d9ffa75ae385979b6b18005a7b58856d00074f243619a4acd261270af000ae5d0a585226032c1fd57a5356b876584e000f0abf36060003855796c310071854ba6b5a6f15f4c1b94e00070a8736d5c00d3633366b9f71edfa4d3399aeb43d6875f06e3800199bdc999afc6⟩, ⟨0x8023e61ed0f547923b69d18e426fc36b98e0c225ea2e29678aee55029494089984a5237906c53626511787a830e0bb0248090032000, 0xc9d90007cac673c581b19b716ede2b43531758568f27f812b4352567ff01a92b27f7fd4c5f49113641a528c62cb0e558409af9360af55c78ba2fdf792fdf22e8727f7b000b5200062e77274a25787e657868bd5ccaf0517a79917a2bc0f3253bca849503c7950329e78f2a0253c4a77e3b79a03e007c5a52c7c9e3c441155968d4378df2da89c2df2519d10759f1125ae7cb9b0c14cb4de169be4fc3cd65301dbb848aa6712e48c0d6c2e38b7b827e2df38f503e5a9ac03e3ccbda8971872675f1e65e461b951acedea06ccbee3cedaaebd18683762d30a8937ca2aa0552e5712c5ba09d5570e3c6190dd75122ac8ad2fbe4f46eb8e000dad9a784c0340e7⟩, ⟨0x35719f8be854c29514209d449c24111a088441c1e70ed06cc3521820b8852826e12808e84301ca0d006302d415608402e80d804e000, 0x6358e2c47724dd5bd800d71e23b126d87d35bd400cf1f0cd256693093869000572e852c29461161ba2f4c749fbecb09c001e19de6c0c00070cdf2f44e327d6e34f4d1143e449c123c6993c6002f9a27867818a8d3030001c31fcd00032777a200130c674cc23800193b5cb⟩, ⟨0x35a19a8bc053823910a081c3f01ea0ec87303761ac0d106443041710b1056026212007c831817409504301dc0ca04d01a808002a000, 0x1a8d7356bc76b2c58ba5e7bc75e39595ec5cd8b85e79c75e3758eab2b58b8b16ebcef8e0095e73a7a149c49821bd4d3e292934984981bd4d26924b4d26126069429281f9a3269940b284b9e000de5000169f118005bc9f52611cf25e28958d838b8d8b8a1c6abc13082ab⟩, ⟨0xc9d633afd577eb7a54fa9f14cc9b842b1db0e4e71c37e9b58d5e67931a1654aa04ed23d90247103340b4832814607c02a80c0016000, 0xe9b6b9bade9e3bf0c8d285906569b8bd6a34cf578edf5256964b4e396bb2d752b45be9f1c1b18b1eb54eb5aa2846118868a10a5c5d5effc4b15302ad2e382e3800703389c0a61a6d6ce5230424b762946060c0ba2b72122da38ac31c79e9b5f46346875fab675686fcdb1e15b4752f27288adb848968df02fda428a4e4b7302e11ef9786c4b238c71c1af45030ebd5682fcd2da2a9772a81f5e4f4cb2cd1a32b3819409961c708677cdeb968001e3c268780068f877421e73718cccabe3e3186a160d678ed429f5a8358c62fc795314f25f5a468406ad59a0282bc6bb2bd129f8ee05636f521f0f3dc786098153028c1edae49813f8f0c0e1676053c0a107b2b91e04ee3c09c580b813f029604d89d585a78f026d602604ec0a37e3b02644e9c2d1c7c0970b2f0284300c10dc717b4d142548d165b0aeb55a27a5d575b2ce83b0822d958662fab712259aaab2332165d9c51723bee29827f3503082b655e33e834facc312838f655a550c67c893f19101a748d9acc04ec09d7f1c000ca24e3e1cf9445cd00032b6b8f1af46bfab8d7801cd5e09⟩, ⟨0x42020b0fbc7ca3be1cb8e186f23641ad0d2467e3181800bc459429413e09c84b424b11207f43ac1cc0d286342cc141085813804e000, 0x818005e9d1e740da73c004f3800469cee62e99fc5227667818a4d30369c70003ccd35dc5308e0006ba672c000d74b0007cad345c581b4d3714c23e1f60003cd00035d17a2000f0f9f4e0600035d0b97a63b8b14193b271d1519d8f4e426e8f0b9aee3840484940da821838c18a1e426aad65a42c23ee66a25df1e15dc2b4e488818153c7⟩, ⟨0x36619f8c605ea2e01658b0055629614189704762140f987303761aa0cd85d02ce15a0a384982260f207282f816808d03000e4024000, 0x1ae22ae6e2290003cd01a465323ad6a9ab454e09a7355c8eaa432438013d3d3ce00196fb38978d3cfce001b70b38b79d3cbced334961a4c24e9e10017cca14b8a43846004db8dc836464b65b7de184fa764001f3a060003a75f980020056d572001f7603a82596ebff50ba47⟩, ⟨0x88c440a1ad08881f3fc1e90e826ed2dc13ec9a84ad1f08e706cc33f18c0bc459426712d88d041a1e60df84f812007b016008402c000, 0x84d995c3210ac491cd0006117d3a118c48dcd6ccab1d2156c3a4bbcbc7c3ccb1ce1d1e0bc8558d9938f82ee1d142ab6cc78c5f8ed5ce59603bfc2e90e84242b916beb62dea2b25b03686d2d296e219a1b52e43beb00d790aa39c79686116214f03be0908e4562b190eeac0185cdcf72f95e3c6935f31c98d271a4392be4a5a0045585360eec240b9128ac043aeafeb9ebc2e08eef8f7d5a337124a902fc78cda481a40b71d7c7dafde3acc484e9c75f1b276f8e001a4fe71e14a4b3993b31930000c272e3c232f8d8d11c90003278b8f88ce4f1f3711949f5e6c42c93a60a8a123c646966713fa59ef1c223c28d075a11cdc82455221bb57bf0b139ddaefbc717c5380020010007cedf493a7c4d89a2a586⟩ ] def tableRRRRL : Table Block := .branch 13 tableRRRRLL tableRRRRLR def tableRRRRRL : Table Block := .leaf #[ ⟨0x6ac3429978c6e6102f49708b545832ba1570a6a50e273933c950483236111c5ca2370bd055426410f076035414a08f0360154060000, 0xc4d400079a0006069744003e267e98001c4cfcd000368d7a2000713274f4d6f171318001e6c251d36fc5000389839a00074ef744000e25de9e9a8e2c5728573c70006dd9d4dba5a6b746dd8d4d1eb64d72d085aa135224456c671cab44c85752d8213702c95c36b76a49260d2b55af3aa4fd60d58cdb54cb8e11ba15a03d4093515e4882561674098625c95cb59e3846d8566e80e5ac03d3c3101265c95457822075856d9371c00d84634e00acdae1f3459b4c3e6cf32b87866b4d99accf80070f98ec300073398986b74d0d63337a9000800b35987⟩, ⟨0x53328f14509fe48d22b90d884a4141f68edc72435f19f0c745e02cf1540a6c4e826a12188083f01d104682040ea06802d813804e000, 0x4e0a9e06ae75598829e0aec2a0ffc63683fcecdb8eb8c48a6d90ce3efc00759fa8d33a69b210b7a78eb752c83ade8e39bbf6f369cddeb794d9bd3eef6ee59f787756cfbc1ba9bb367001de8b38de6d485cc6138dffd481ce8186feea3ee65bda6f380036f2e9e06d47638b79d0b8e19ac2e4a27d03180008002000600100029241afd8ebd6d9a4fdaa0434e0e2dcd385840b15038f48d88d066b33699b1360001e68006d3d5d1⟩, ⟨0x29e14489fc4ce25411e88c84362040f687583961b80ce86142da13d09984301ec0e506c030c17209604001c40c805201d0088030000, 0x3e09530369f0e2fee89925d97824ac765c22ccb8211960e032f048648bf410955a7d78ba7c78a001001d8630f031627d4c3ceb09e1970cfe2913a33c0d58b004626b1586348ee2b2a12b4ed7174f0f1606d3cbc5⟩, ⟨0x239117087c40e1f80f687843a81bc0d586583181740b5054828213409104602120ff07383301840a704781e00d205e02780a0014000, 0x1824e24c92b443627c4d08ce29d411c5c133d0999e06d413c581b50c71654cfe293d91e06a8930369fce29b482a781812e85569f9e2c510c7c893824e248049d459cd03001b1e06⟩, ⟨0x276131894448e22f11288344061eb0e206382f616c0ad853827212f09004581fc0e6067031011c076032816009203c017808001e000, 0x2e1449748f036a17e2c0da8678b036a24e2800fd4bfc7001da97800671faa43fe49a533f8a460ccf03644981b50371681121f529f1a0600020047528f2b50171734cfe295c92e29a3318497934e649⟩, ⟨0x6c33561a14cd865c32293506a81c50d786643121730a8050c226109073034c1840b5053026411807d035016c0a003d0140064016000, 0x1dcc900038c279b40d6f1d6c6cba98f09f213ed98b2a9a000c00246275d92001630dda8ca22f5e50ca20095012c026096a587fa82d5062de3e237c0b9c784f709f2cc5154c0004000e3132ec80009186ad45d116af26650c04a0095012e4b4ec3f5415a82f14c6de36236c0b7c784f509eecc4954b0002000a312aec700071866d455115af24650a0ab809301280258969587da829505a2985bc5c46b816b8f6b8c358130d7d8d547c357fc03587f148006bfa018c3c0d5fb00be26d043e699fc52b925c5346630927fa27324e090f112f36686c4f943426⟩, ⟨0x33018f8c386062ea1638a804d425211c88bc4101f70f3076c3881a10bd051025811d07b033c15009e03b81980ae04c01a8070014000, 0xa534a49a70481e33ac0036fac38001831dcb00030634b7cf2b53d716e005cf0300bf8313cbd534a61a70483fecb000dbc70e0006bd6f2c000d7ac2df1cad4e3c5308e000718b734000d7a8e88077c627d381803ad7a5e5c519f224e0903c992e158ed2e91e06⟩, ⟨0x2da1668af055a2a31490a0c4e426312c890046221810487f83e61e60e7069c2e212c08a84101e60e806782d811e05902000d801e000, 0x3c525269309303629a4d24951a4c24c0dc148ed389345bcef6c4f89b1330a7546f1719c8031e6ac2f831ace838e0006326cf8b60c5c7ce134d2a694834e0903ce7580d2b9c000daffe580a2b5fc0293958e02e78180645afbe5c4a6⟩, ⟨0x2e215d8a50514272131895045a220108881c3f41c50d686802f21600ab04f424810b07402e014a09804001a00a003d0180084026000, 0xeae9e8800bc6d1d381b572f17624d249d5c8001b96c278c9b0330ac02ee500000187ab7b8ae2700038d739bfb7cf181bf2f1d6039ae7c8c975d93819587060d934193870e90ee2b10708ad543c5d53bc594d0f429389314340a89⟩, ⟨0x2fe16b8acc55228e13a89804a223c11188283fe1e60e887183621980bb857c28e0e406a031816a0a404a82280f205202000d804e000, 0x3584812de680652c983c0d27644271f15ce0d6a9b54d654a9f4e575f997baf0496f8baee11578242b15603bceb01dd02756ac8e2eac6e2d7f2000319122d20002022fc7c0c6ca1b74d31667c89382464d3abb8008f34bc47818d248001c6d7cd⟩, ⟨0x3821ad8cd061a2f81748b785922ae1498a244e826a12188a04021ec0ee86e83481810b5855426410f04701fc0e204e0198090032000, 0xa4de7ae9e3a90129cd027f8ea39a45ea7c8938241b153061543410ea53c0c150a9818000e39ee6806011100478e6fa7002a7894c001b61e26d7d86000d74f1370dc3572b0d751baa624129682c3c65fb01b16fc00080022bb4024009971fe53550c0fdb85e265cce83e449c120398e9⟩, ⟨0x3f61e78ea07363741ac8d3c66831b1850bc459c2b512187083521550a384e425011708403841a80c705902740ec06902100e0022000, 0x53e3c9e9c232bd33d37138001c78fcdaf28e230358d430b01a274ceb986681ce001bcae1e6e71d65e49e1f000583f6057ad9a6177e39791787a00120fd45ea02bb6ccf0bb71c4ea5cf1b44000c1f8000400778f143450d86692b349849c76a002b9742961491caac1e157ae7c0a7f6584e000f1d77360600038eb397e271⟩, ⟨0x40a1f18ef072a36e1a38c805f22d215588e44241dc0da85fc2d815e0a584f425811b08603941b00cb05902640e406501f00d001a000, 0x23d04d3fe4cd3e8f3fc99af51e7f9935f8698f266bf0d32e4cd801a63c91a6135ff9373d26bff32a19d474e3db578dee6882a7a54f2c2714dd38f6a3ad2471ed46daa0b48fc7b72c00db8f6e561188035e386e89e21b7644c90d86692b349849c7aa002b9742961484d7bac06b9d7aefe11cf6584e000f1e77360600038f3396c31⟩, ⟨0x3741a68d0c6383091710aec540279136097449e23e11888804222070f0074435419b0c885a828611c073036c16808d03300fc04e000, 0x7902b9b030001c811cbd05238916cd1f4f2028001e6e7f471196a0004b8f42938930437a9a7c5252693093034b48000bc93492000a5a3724c24c0d8f98004f34000cb42e48007c7c9cf967e000400171e134b3e0003c900038fbf9a00071eff44000e3ece9e5d7e2cb39966fc7⟩ ] def tableRRRRRR : Table Block := .leaf #[ ⟨0x33818f8c386062ea1618aa051a27212f895447422d10307ac3c21c60b9043c2020f006f834017e09804481e00d605e024808801a000, 0x1fd74fcb9a1300fd39f21301c0e680735077ae5e1796c2c2fa143c0dbcdfc2dc4f9078000f37718088c0db7bf42c00101aa03578824015f1c00081a9035509b7104002ae3cd0de8693e34ae491834e4130019cbd093686ba14b8a41895766ab12674c68156c27⟩, ⟨0x44b1e50ed47283731b10d046402f91690a34500274132896c46820f0f4070c32015d09c04141bc0cb058025410e06c02880d8036000, 0x1aab6131d7321a632af71e44d47f1e4fecc017b256900bd93b4d61a402f646d3b2001569baa8bebf99b0297d7730002db325f4f31838ee29a468893032faed80bcc0006f9dd3afa6d807ccbe9af9ed3df4b7cedf39a7be76f9fbe6b4e9785f3fa73ded2efbe7b4f0a24017f1f02448065707c9e52172434bc1d09c683a120dc6427918e85f1df90b⟩, ⟨0x46c22f91308724122028f787a83ad1d00de46a434518f0be45de2ca15e8ab854429313608d843c2060b385002500e305e021808a000, 0x614a6a8b0d117b16e090f6584e000f232f36060003918f96c31001b9183a7046b09cf4dc4e000722f737a29002763037450003ead84f292e918c238001843fcb843c000400172b3aef173adf1527d9c0f45d89f51c5e9c107178de09099de39e3800180fbc980f1c6b78b1d972c661a6e3dbc411e3c75cc76f0c47871c9c954a745135fb4e54a04e40d7da02dc7⟩, ⟨0x2ef1650a8c4f825512508e44061eb0e9870836e1920b5851826e12808c84201ec0de06a02f015209e04581cc0ca05402180d001a000, 0x68ec006ea60a1b473e5c1420009cb000705079782478d6000609f0002e56789e2e787e2d49af04800fa34eac000c12be3e8cda33eacf23b84b308e306b3d92b3bdf1606ceffc51fd17827a145e778e2c90d86692b349849c8d8002b97429⟩, ⟨0x3801bb0d3c67c3171810bcc5d02d31560a50514277136891843e1f80f2875c30615e0a484e824a11007583180e406502b80c804a000, 0x818000e4a9e5e89c61385f77e991229f224e0906154c15c003fcd08fe878185d44c0c000724ef34000c156e88018c935d39850f7430009822f77a610fba62e3e910020ea41e953e29bbe553c74a9e97c03dd5e8f600ceae087c21700020009d2d71e0cd3430003a3c6a7ccc00768efa9⟩, ⟨0x31f1880bfc5b02c915c0aac53c28d133095449022110b87c03c21ba0c985b028a12d07b83981aa0c604f824810a07002d80d004e000, 0x2e491834e4c80019cbd093686ba14b8a470d76c8da90f4da8d6c27c97e000f9b030001c97bcb84a2d46ad8e74c000e4bae68001b31dd1000392dfa7a0d38b1e1211e8019e3e19a4acd26127259000ae5d0a5852458ab06b55ec9c84edd96138003c957cd⟩, ⟨0x47322610947de3aa1c38d8867a31817a8b4055628c12587f03e41cb0d3063c2d414709204542140e7060024010c0630180088022000, 0x1af99125c96553227b93717a3ff5297e38fedaa7152915df71cf97931c3da4cbe46a6d385f2352be3da6fa9be3000b12000da6ba9ed221ead5804fc94786fe1c0000a863d3c37d0df8002df150c5a781b26d87dfe68003b656a76c3d37c9ce9369fa53d25c38073a4f87c893824003d25c4d9a70037cd000805fa458781802bd21c4fc898fc0003a79a1bd0d27c69⟩, ⟨0x64531117f4bb45862a093b496e4a624912188ce44420a0fcc7983a91c30b9c5b82d1146099447c1f90e906702cc13f08c029802c000, 0x674edfe2672676ff53fc2fdee26a1c625eb5039912bc971ea1ada80affb990f8f50d2d3fd7fcb78d990b8f649ef48d849e38f19fa751a91805e97a39d76f95873ac9d72f9387001af1b3e4fc15dfcdbda5edb12006bd961eb06da73a05f029a0ec00010004e56dca4cfc8e3e26c4d582ab735a70afdbc7c9ea1a2f9b93d0bd57368f3d385a3e14e7b8f4e668d5f1e9cc51b9a355c7b2d766029b8f1e402dc65e3c47e9147c9687d3ea5a242b1f9f5758aeaf971da1e80019f50d11c27babf4563d3eaab1571ecfb86⟩, ⟨0x5db2e81714b3c5912b51514a7651628393889aa4b023e91cc8b644e21390087f03d315e0a98506276134897847620b0f40714210000, 0x426c4d94a1313735c4e0007293736626839b63034c4b0726ace2380070716adc4e000c149ab837e0a3000b55036b0fe2b89c000e51ae6cc3504f6c606986609cd5d7f0a4d4cb3e7ead62a00020607182953392576c5e4e0d627ac531bbe42ede4ea953c7ba861b1878eac3d0a585389b1cd8c0c4e2fb1ca001c3e2fb1db89c5ee2e70f2486d86c97f936f5876b0fc6e5a2f7214ed4315199a13c765895f95dcc86884f747669079383c588e8c8d1d2c706a99097c1eb23531b09fc7⟩, ⟨0x3b11ce0ddc6a431f1880bec5da2d81618a784f224611d88b040e1e00e586e03541970c2057c274117080837817609804681a808a000, 0x13b4a98429f99d5c2120156ac0090006644d3cea606d54d10c9d8a9ad254c18cfc8eae0c5008b56000800531e69f1346a600060bfd3a0bcca77cd8db5486a89ba1ad444cea8998dc017d5cc6cfc1eac003f87c4fe030c001fc1e1fefff80c5fdfc0238bc1200ffbee2c00498a74e00064eb0e610005c7⟩, ⟨0x6e634919acc6a60e2f39688a424eb22d8c985fe2d81588a284c623c0f4068c3241830af04dc25410306e034815608603780a802a000, 0x2c03b94c7374e731e89f1e1af434ae3c35d86930d2f8f0d761adf1f15ee6a3e3e2bca7ef49672ebf1ec72583e0dc2f6f68b545bfa86162a38ecf32cef59f3e3b31bb0781b7cef8ac9eb14c8de9edde37be3957e92ed6d89df786de4290e249ac3e2d0736328328efb31aa56b524b15c50208e757a6734f71e79fe362e4d7bfc6d9c9c6d75efb938daec4b72f1c05895e5b323c695c77354e6f2e044a05af75c786463a3e5022656e3c19a5724800306869d06962b0e5b89c000e553e6a0d4c55bd181906ae2abe580030696a60cad3000f1d070c5d32571c8a152dd0a9⟩, ⟨0x89a439a130ff07a43be9d58e5e7083709ae8d2666c322983cafe4c223710e07c83bd1cb0dbc5a027c12c890c41a18c067817406c000, 0x2a18d237e3e5fbba83c7a4f9235b2fd5866a835c7a88150c2948d864cbf3c7bd29837f937a4f081727080de92e4e1000005c900037a4393b52707ff3307f6107e660f7c20dccc20b83db99834a2dbe0d6e3bc85a0775a4236dc5e4bba31c93169399ce3d037c01b40e681c5424a07540d6942d434a0ccc6de81b71ea2346d2baad85d2ee7f1f0b9e3f1c953c7641018413dd5ac5c017c7c00f7e6b9219d699a71e4953335e4ce499cbb9446304cbf8c91857923ccdc65a087c72eaa9c3cba8ce7351f1c7000de3713788c35c61bd83363f8f7b00b1426ef2e9b7180ba7270b9cdfc7bd8140a6816596fa04340a2816d262a8011d1cacb5d26e3d261a7fe9a7d35015958e8d50638f8b0ec58f1ed72e2c2a173c7⟩, ⟨0x76439e9be0da26ac34a99b8c8e6202fc9748b565842ae94f0a4e50224090787d03c11cd0dcc6983251800b285461d707e02a008a000, 0x799196ab9af87a53f3cb982c9c7c34b0aab8e000dc39a9b8534d83e28d4727090d1a8e4e120a345c9a343847f93468708ff328dce118e66117c23bcccc2117ef8e0035dd69aebb36851a2f6a6ec2be0fcc19905320b96f46a5780ef8e18c53edafb3b5cc5bcdaa2f1e7bce2ee6657c79e5cc1bb933cb983ef26798307ce4b07b9e5fc961813cbf983d4e0d7a79ee5217981171f301586ee3b3219380ccda2831b9c8a0f523e83d2fa92dd24fe68255990e3b320937eccd62829b9b8a0cd1d283cafa82dd04fe1a39d049a91dc79743413282456cbb31dc7a0972e81a395048a08f5b2b8f5112a1a5295cbfbc7⟩, ⟨0x13288f84101e10dd064c2d814508783a816e07202f012804a000, 0x119f22bcf1e33dc5788aa9c78cf719e78ec0a7096725818612ce4b02fc25dc94e277cfb8f7ccc00266efe3f983e7169fcd9f303ce1d38001abec000b063f1f3051b3ad1b2a6c7a74e000f98fa7⟩ ] def tableRRRRR : Table Block := .branch 14 tableRRRRRL tableRRRRRR def tableRRRR : Table Block := .branch 27 tableRRRRL tableRRRRR def tableRRR : Table Block := .branch 55 tableRRRL tableRRRR def tableRR : Table Block := .branch 0x6e tableRRL tableRRR def tableR : Table Block := .branch 0xdb tableRL tableRR def table : Table Block := .branch 0x1b7 tableL tableR def program : Nat → ClosureSemantics.Node := ClosureFixedWidthProgram.raw table end ClosureFixedWidthData1 end PolicySubmissionPart30 /- Component PolicyFixedClauseData; SHA256 4d19e49c906a9c4b07ae987f5cab505e65280dc38230312979ca26ccb69c050f. -/ section PolicySubmissionPart31 /- Direct fixed-width signed-literal records, validated by the consuming checkers. -/ namespace Bounty def policyFixedLiterals (width : Nat) : Nat → Nat → List Int | 0, _ => [] | count + 1, packed => let code := packed &&& ((1 <<< width) - 1) let lit : Int := if code % 2 = 0 then (code / 2 : Nat) else -(code / 2 : Int) lit :: policyFixedLiterals width count (packed >>> width) def policyFixedClauseDatabase (width : Nat) (t : PackedNatTable.Table PackedNatTable.Block) (i : Nat) : List Int := let b := t.get PackedNatTable.emptyBlock (i / 32) let first := b.start (i % 32) let count := b.start (i % 32 + 1) - first policyFixedLiterals width count (b.data >>> (width * first)) end Bounty end PolicySubmissionPart31 /- Component PolicyCompactCore; SHA256 fa5c14e806285d04f3ebe136805a99c10d1ee8d6c84012bc168fa07d5e2208a9. -/ section PolicySubmissionPart32 /- Fixed16-bit compact clauses and positive maps to the dense semantic variables. -/ namespace Bounty def policyFixedCompact0ClauseTable : PackedNatTable.Table PackedNatTable.Block := (.branch 0x93 ( (.branch 73 ( (.branch 36 ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x3f01e80ec07203601a00c806002e01600a804e025011808403c01c00d006002c014009004001c00c005002000c0040018004000000, 0x6e006a0068006b006400670062004800610057006100600056005a005d0058004800540057004e0057005200510055004a004d0048004d0044004700400030004300390041003a003d0036003900320035002c002f0028002b0026002b001e0025001c0025002000230018001b00120015000e0011000c0008000b0007⟩, ⟨0x45021010007c03c01d00e006a03301880bc05a02b0148098048022010007403401800b005002401000700300140080030010004000, 0xc000bd00bf00be00b000af00bd00bc00ae00b800bb00b400bb0006006d00b700b000b300ae00b300aa00ad009d00a900a8009c00a000a5005e000d00a3009e0092009a009d0096009d0098005e00060006005f009900920095008e0091007f008d008c007e00860089008400890080008300770081007c007f007a007f007600790074007900700073⟩, ⟨0x4d025812408e045021810007a03b01c80dc06a03301880bc056028012808803e01d00d806002c01400880380160090038014004000, 0xeb00ff00fe00ea00f800fb00f600fb00f200fb00f4000d00a700a6000d00f500ee00f100ec00f100db00ef00ee00da00d900ed00e800eb00de00eb00ea00df00e500e900e600e000e900e800e000e700e200a60006000600a700e300da00dd00d800dd00dc00d900db00d400d700d200d7008a000d00d100ce008a00060006008b00cf00bb00cd00c600c900c200c9006c000d00c500bc00c1⟩, ⟨0x49023811408604001e80ec07203701a80c806002e01580a404e025011808403e01d00d806402e014009004001c00c0048018006000, 0x144014701420147013e0141013c0124013b013c01250137012f013b013a012e013401370130013700fc000d0133012c012f0128012f000600fd012b012401270115012301220114011c011f011a011f01160119010901170116010801120115010e0115000600cb0111010a010d0108010d010401070102010700fe00d80101010000d800ff00fa00d90101010000d900fb⟩]) ( (.branch 2 ( .leaf #[⟨0x49023810c08203f01e80ec07203601a00c806002e01600a404c024011007c03801a00c005802801100780340160090038014006000, 0x18d018f018801840180018b0187018901830185017c017f0170017f017b017d0178000d013901740177017201770167017501650173016f017100060139016d0006015f016b0166016901640169016001420163015c01430163014f01610160014e015a015d0156015d0120000d01590152015501500155014501530143015101500142014c014f0148014f00060121014b⟩, ⟨0x55029814009a04a023811408403f01e00e406e03401880b8058029013008c04001e00d806402c012008003801800a0040014006000, 0x211021301fa0209020f02080205020b02040203020701fe01fc020101fb01fd01e401f301f901f201ef01f501ee01ed01f101e801e601eb01e501e701e001d601e301d401dd01df01d801d601db01d501d701bc01cb01d101ca01c701cd01c601c501c901c001be01c301bd01bf01b801b101bb01a501b901b001ab01b501a601a4019c01a9019501a3019f01a1019e00d5019b019d019a00d301960194019900d601950190018e0193⟩]) ( .leaf #[⟨0x55029814009c04b024011808604001f00ec07203601a00c405c02b014009804402000f006c030016009804401c00b0048018006000, 0x2910293028c028a028f0289028b0284027c02870280027e0283027d027f02760279027b02740273027702720009026e026c0271000a026d02680266026b02650267024e025d0263025c0259025f02580257025b025202500255024f0251024a02460242024d0249024b024502470236023f0241023a0238023d02370239023202300235022f023102200229022b02240222022702210223021c0212021f02100219021b021402120217⟩, ⟨0x520270130092046021810407c03c01c80d406603101700b0054028012808803e01d00d806402e015009004001a00a0040018006000, 0x2d602d002b402d902d502d702d002b402d502d202d102d502d402d102d302d000e102cc02c502cf02b702cd02c402bf02c902ba02b802b602bd02b502bb02b302b902b602b402b202b400e700e602b502a702b1029c02ad02af02ac02a602ab02ac02a702a902aa00ff02a800fb00fa02a902a600d900d802a7029e02a302a500fd02a100fc029d029f029c00fd029f029c01010100029d029800fc029b029402920297⟩, ⟨0x520278130092047022010407e03d01d00e006a03201780b4054027012008804001e00e006802e014009004001a00a0040014004000, 0x34203410345031c0329033f0334032f0339032d0335032c032400fc03280326032b03250327012a03250320031e0323031d031f030a0315031b031403130317030e030c0311030b030d02f603010307030002ff030302fa02f802fd02f702f900ea02f300e402f102ee00df00de02ef02ea02d502ed02d402eb02ed02ea00e900e802eb02dc02b202e902de02e302e502df02e102d202dd02df02dc02d302df02d102db⟩]))))) ( (.branch 4 ( .leaf #[⟨0x5602a014409c04c024811808604001e80ec07003501900c005a02a013809404402000e806c030015009004001c00b0040014006000, 0x3cf03d103c003c903cb03c403c203c703c103c303ba03bd03bf02a603b903bb03b802a703bb03b403b303b703ae03ac03b103ab03ad03a4039a03a7039803a103a3039c039a039f0399039b0388039103970390036c0393038c038a038f0389038b0384037d038703770385037c0366037f037b037d0376036a0379037003730375036e036b0371036b036d036803660352035d0363035c035b035f03560354035903530355029002990351⟩, ⟨0x5602a014409c04c025011c08a04202000f407403701a00c806002d015009c04802200f807003401700a804801c00c0048018006000, 0x459045b045204570459045604530459045304550450044e044a0448044d04470449044204400445043f044104280437043d043604330439043204310435042c042a042f0429042b03dd0423040c041b0421041a0417041d0416041504190410040e0413040d040f04000409040b0404040204070401040303fc03f503ff03e703fd03f403ef03f903ea03e803e603ed03e503eb03de03e103e303dc03d703df03d803d603db03d203d003d5⟩, ⟨0x55029014009a04b024011408604001f00ec07003601980c405c02c014809804602000e8068030015009003c01a00b0040018006000, 0x4da046704dd046104db04d204a704d504a104d304a404a104cf04c604bf04c904b904c704be044e04c104bd04bf04b802da04bb04b402d004b704a904af04a804a604ab04a504a704a0049e04a30497049f0498049b049d0496047f04990480048f0495048e048b0491048a0489048d04840482048704810483047a0470047d046e04770479047204700475046f04710004046d04680466046b046504670460045204630458045d045f⟩, ⟨0x520280138098049023010c08003e01d80e406e03401880b805802a013809404401f00e806802e015009804001a00b0040014004000, 0x5430545054003cc053e0364043e0537053d053604fa0539053203540535052e050b05310505052f05260512052905230525052405220510051b0521051a0519051d051405120517051105130002050f050a03a8050d0509050b050404f8050704fc0501050304fd04ff04f804ad04fd04ac04f904fd04f904fb04f604ac044604ef04f504ee045404f1044b04ed04de04e704eb04e6049604e904e204e004e504df04e1⟩]) ( (.branch 2 ( .leaf #[⟨0x56029014009a04a024011408604001e00e806e03401880b8054028012808c04001e00d806402c014008803c01a00b0040014006000, 0x5bc05b8058205bf05bb05bd05b8058105bb05b4058605b705b305b505ae05ac05b105a105ad05a205a905ab05a405a002f405a705a305a505700565059f05780593059b0592056005950588058f0591058a05840560058d0589058b057c057a057f0579057b05740572057705710573056c056a056f0569056b05640562056705610563055a0555055f054f055b05490553015f0551054e0548015e054a0548054d016a0549054403080547⟩, ⟨0x520280134094047022810c08203f01e00e807003501900bc058028013008c04201f00e006402c014009003c01a0090038014006000, 0x6170619061406120617061006130617061606110613013a06150612012501360611060e01310606060b060d060a01350605060905fa0605060705fe0601060305fc05fb05ff05f005f705f905f205ee05e405f505f105f305e405ed05f105ed05ef05e305eb05ca05e705e905e605e305e505dc05d705e105d305dd017e05d505d205d005ce016e05d105cc05c805c605cf05cb05cd05b905c905c505c705ba05c105c3⟩]) ( .leaf #[⟨0x56029814009c04b024011808604001f00e807003501900bc05a02b014009804802100f006c030015009804001c00b0040014004000, 0x6a4065206a706a0069e06a3069d069f0698065e069b068e068906930683068f068406820687067e067c0681067b067d06740670066e067706730675065c0667066d066606630669066206610665065d065f0659065b06540650065706510653012606510648064b064d064606130649063406330637062e01380631062a0628062d06270629061e06230625013906210138061b061f061a0139061f061a0617061d0616061b061d061a013d⟩, ⟨0x55029814009a04b024811808804101f00ec07203601980c405c02b014009804602000e8068030015009004001a00a0040014006000, 0x71f0727071e07160138071a0718071d07170719016c0717071207100715070f071106fa0705070b07040703070706fe06fc070106fb06fd06ee06f706f906f206f006f506ef06f106dc06e706ed06e606e506e906e006de06e306dd06df06d606d906db06d4064f06d706ba066f06d306ce06c506d106c106cf06c606c406c906c006be06c306b906bf06b806bb06bd06b4067806b706a106b506ae065b06b1065506af0678065a06a9⟩, ⟨0x5802a814c0a004d025012008a04201f80f407403701a00c405c02c01500a004a02300f807403401700a004401c00b0040018006000, 0x79e079c07a1079b079d078807930799079207910795078c078a078f0789078b0776077f0787077e06080781077a0778077d07770779076007690775076c076f0771075e0610076d07680716076b07640762076707610763012e075f075c012d06720759075b075801290754074a06be075707530755074a06b90753074c074f0751070c074b074d074406f007470732073d0743073c073b073f07360734073907330735070e071b073107260721072b⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x56029814009c04b024011408403f01e80e806e03501980c405c02b014809c04802100f8070032016009804401a00b0048018006000, 0x81805ea081b081407480817081308150644057a08110752075d080f07ae07b3080d07d407df080b08020801080507ff080307fe07e2061207f807f307fd07ed07f907dd07f107eb07ef07ec07ea07dc07e807e407eb07e707e907e307e507de07dc07e107d807d607db07d507d707be07cd07d307cc07c907cf07c807c707cb07c207c007c507bf07c107ba07b607b207bd07b907bb07b507b7060407af07b1079a07a307ad07a2062007a5⟩, ⟨0x5b02c81580a8051027012c090045021810007a03a01b80d006202e01580a404c02200f807003201700a004401c00b0040014006000, 0x89d089f08980859089b08550899088a05ea088d037a0377088505b205af08830876087f0881087a0878087d087708790872038a08750862037c0871086c05b4086f08680572086b086403ac0867085e03d00861085a0858085d085408520857084d0853084e084c0851061806140612084b065806550849084407f008470840083c0843083f084107b8060f083b08320837083905e2083308350568082b0831082a05a0082d082605b5082905af0827081208190821⟩, ⟨0x5802a81480a004d025012008a04202000f407403701a00c405e02c014809c04802200f806c032016009804001a00b0040014006000, 0x92609180929091e09230925091f09210918091d091f091c0919091f0919091b0914056a0917089c084f091308c3090d090808a8090b08f209010907090008fd090308fc08fb08ff08f608f408f908f308f508e608ef08f108ea08e808ed08e708e908e208db08e508cd08e308da08d508df08d008ce08cc08d308cb08d108c408c708c908c208bd08c508be08bc08c108b808b608bb08b508b708b008af08b308aa08a808ad08a708a908a0089e08a3⟩, ⟨0x540288138098049023811008403f01e00e406e03401880bc05802a013809404401f00e806c030015009804001a00a0038014004000, 0x9ac09aa09af09a609a409a909a309a5099e099c09a1097b099d097e097a099b0998097e0994098a0997098809910993098c098a098f0989098b0958096309870976096f097909690977096e09540971096d096f09680966096b09610967096209600965095c095a095f0959095b09560954094809510953094c094a094f0949094b0932094109470940093d0943093c093b093f09360934093909330935092e092c0931092b092d⟩]) ( (.branch 2 ( .leaf #[⟨0x55029013809804a023811408403f01e80e806e03501900bc05802a013809004201e00d806002c013008803801800a0038014004000, 0xa1a091a0a1d0a16092009180a19091d0a170a16091c0a12092d0a1509270a130958097f0a0b0a0609a50a09099f0a0709a2099f0a0309f609fb09fd09f709f909aa09f509f709f409ab09f709f009cb09f309ad09f109d009ba09ed09e801be09eb09d209e109e709e009dd09e309dc09db09df09d609d409d909d309d509cc09ca09cf09c909cb09c409b909c709b309c509bb09bf09ba09b809bd09b709b909b209b009b509ab09b1⟩, ⟨0x5702a01480a004d025812008a04302000f407603801a00c806002d014809c04802100f006c030015009003c01800a0038014004000, 0xa460a770a7b0a770a790a76014d0a6e0a730a750a6f0a710a420a690a6f0a680a430a6f0a6c0a680a680a4c0a6b0a640a5d0a670a4f0a650a5c0a570a610a520a500a4e0a550a450a530a4d0a510a4e0a4c0a440a480a4409600a4b0a470a490a4409600a470a4609600a450a4209610a470a4609610a43092a09270a410a2a0a390a3f0a380a350a3b0a340a330a370a2e0a2c0a310a2b0a2d0a260a210a290a1b0a270a200a0c0a230a1f0a21⟩]) ( .leaf #[⟨0x51027012c092046021810007c03b01c00d406402f01680a804e025011007c03a01b00c805c02a01200800380160090038014006000, 0xad005520ad30acc0aca0acf0ac90acb0ab60ac10ac70ac00abf0ac30aba0ab80abd0ab70ab90ab2094a0ab50aac0aaf0ab1015e0aa90aad0aa8015f0aad0aa80a9f0aab01620aa90aa20aa50aa70a9a0a860aa30a990aa10a9e0a980a9d0a9e0a990a9b0a9c01610a9a015d015c0a9b0a98014301420a990a920a8d0a970a890a930a850a8b0a880a860a84014e0a870a810a830a7d0a7f0a7c01490a760a470a7b⟩, ⟨0x55029814409e04d025012008a04201f80f007403701a80c805e02d015009c04802100f806c032016009804401c00c0048018006000, 0xb550b570b560b540b54016501640b550b500b4e0b5301680b4f0b4a0b3c0b4d0b460b1e0b490b420b080b450b3e0b3c0b410b3b0b3d0b300b2b0b350b250b310b260b240b290b200b1e0b230b1d0b1f0b060b150b1b0b140b110b170b100b0f0b130b0a0b080b0d0b070b090b020af408360b050b010b03083e08450aff0af80af20afb08370af905c40af30af70af30af50ae40ae30ae70ade015e0ae10ada03640add0ac80ad10ad9⟩, ⟨0x500270130092046021810407c03b01c80d806803101700b0054028012808c04001e00d806002c01300880380180090030010004000, 0xb6b0bd50b910bd30ba00bad0bcf0bb40bb10bcd0bb80bb60bbb0bb50bb70bb00ba80bb30bac0baa0baf0ba90bab0ba40ba20ba70ba10ba30b6e0b790b9f0b980b850b9b0b7f0b990b8d0b8f0b8e0b8c0b860b840b890b830b850b7e0b7c0b810b770b7d0b780b760b7b0b720b700b750b6f0b710b6a0b680b6d0b670b690b5e0b630b650b5f0b610b580b5d0b5f0b5c0b590b5f0b590b5b0b58016701660b59⟩]))))) ( (.branch 4 ( .leaf #[⟨0x520280134094048022810807e03c01d00e006a03301800b8056028012808804001d00d006002a01200800340140080030010004000, 0xc3f0c450c400c3e0c430c3a0c380c3d0c370c390c180c250c330c280c2b0c2d01380c210c290c240c220c270c210c230c2001790c1c0c1a0c1f0c190c1b0c140c120c170c110c130bfa0c090c0f0c080c050c0b0c040c030c070bfe0bfc0c010bfb0bfd0bf608780bf90bee0bec0bf10beb0bed0be60b540be90bde0be30be50bdf0be10b540bd10bdf0bd00b550bdf0bdc0b5c0bbd0bdb0bd10bd90bd80bd00b8b0bd7⟩, ⟨0x54029014009c04c025012008a04201f80f407403701980c405c02b014009404602000f006c032016009004001a00a0040014006000, 0x62b0cab0caa062a0c3b0ca90ca80c3a0ca30ca70ca60ca20ca20ca00ca50c9c0c200c9f0c340b840c990c960c920c920b700c950c880c8f0c910c8a0bf40b760c8d0c890c8b0bf20b770c890c100c810c870c800c5c0c830c7c0c730c7f0c6d0c7d0c740c720c770c710c730c6c0c6a0c6f0c5d0c6b0c600c670c690c620c5e0c5c0c650c610c630c360c410c5b0c540c4d0c570c470c550c4c0b8a0c4f0c4b0c4d0c460c440c49⟩, ⟨0x5702a01480a004d025011c08a04201f80f007203701980c405e02c014809c04802200f006c03201600a004802000e0060028010000, 0xd000cfe0d0301760cff0ccb0cfd0cf80cee0cfb0cf40cd80cf70cf00cee0cf30ced0cef0cd60ce50ceb0ce40ce10ce70ce00cdf0ce30cda0cd80cdd0cd70cd90cd20cce0cca0cd50cd10cd30ccd0ccf0bc20cc70cc90cc20cc00cc50bc30cc10cbc0b900cbf0cbb0cbd07ee07e807e40cb90cb406290cb7062f0cb50cb00ca10cb30c9d0cb10cac07550cac0cab0cac0b8d0cac0ca90cac0ca70cac06bf0caa0ca80ca60bd20b8c075406be0cad⟩, ⟨0x5702a014809e04c025011c08a04202000f007403801b00cc06002d014809c04802100f006c02e014009003c01800a0038010004000, 0xd720c380d750d6e0d6c0d660d690d6b0d4a0d630d670d640d620d5c0d570d610d550d5d0d540d520d50017a0d530d4e0d4c0d480d510d430d4f0d4b0d4d0d470d490d420d410d450d400bc30d350d360d3d0d3f0d380d340b8e0d3b0d370d390d340b8d0d370cba0cc30d330cc60ccb0d2d0cec0d010d2b0bdc0b600b580d250d200d1f0d230d1d0d210d1c0d080b580d160d110d1b0d0f0d170d0e0d0c0cfe0d0a0d060d0d0d090d0b0d050d07⟩]) ( (.branch 2 ( .leaf #[⟨0x5b02c01540a404f026012808e04402100fc07803901b00cc06202e01600a404c023010007403401700a004801e00c0048014006000, 0xde603c20de90dd00ddf0de50dde0ddb0de10dda0dd90ddd0dd40dd20dd70dd10dd30dcc04820dcf0dc80dc70dcb0dc50dc90dc40d040b540dbe0dc10dc30db6015f0dbf015e0db70dbf0dba0db80dbd0db70db90db20db00db50daf0db10daa0c120dad0c720b920da90b660da10da70da00b560da30cc00bc40d9b0d8a0d910d990d900b5a0d930d8c0bbc0d8f0d8b0d8d0cfc0cd00d890d460cd10d870d7c0d830d850d7e0d7a0c3e0d810d7d0d7f0d6c0c4c0d77⟩, ⟨0x5702a014409e04c024811808804101f00ec07003501980c005c02b014009804802100f006c030016009804001a00b0040014004000, 0xe760e670e730e6a0e6f0e710e6b0e6d0e660e690e6b0e680e670e6b0e600e5e0e630e5d0e5f0e580db60e5b0e540e520e570e380e430e490e420e410e450e3c0e3a0e3f0e390e3b0e340e320e370e310e330e2c0e240e2f0e280e260e2b0e250e270e2204560e0c0e1b0e210e1a0e170e1d0e160e150e190e100e0e0e130e0d0e0f0dfc0e050e0b0e040b580e070e000dfe0e030dfd0dff0dea0df50dfb0df40df30df70dee0dec0df10deb0ded⟩]) ( .leaf #[⟨0x53028813c09804a023811408403e01e00e806e03501900b805802a014009404402000f006c030015009804001a00a0040018006000, 0xee0014501440ee10edc0eda0edf0ed90edb0ed40ecd0ed70ebf0ed50ecc0ec70ed10ec20ec00ebe0ec50e750ec30ebd0ec10eb60eb10ebb0eaf0eb70eae0eac0a9a0eaa0ea60ea00ead0ea90eab0ea50ea70ea401570e9e0e770ea30e760e9f0ea30e9f0ea10e9e015b0e8c0e930e9d0e9205500e950e8e0e640e910e8d0e8f0dae0dbb0e8b0e5c0e7d0e850e7c0e780e7f0e7a0e600e730e790e740e720e770e660e730e77⟩, ⟨0x55029814409c04b024811808804101f00f007203701a00c405c02b014009804602000e8068030015009004001a00a0040014004000, 0xf410f610f600f400f360f410f5f0f5a0f4b0f5d0f470f5b0f460f440f490f3f0f450f400f3e0f430f3a0f380f3d0f370f390ef20eef0f350f2e0ee40f2a09340f2d0f260f160f290f140f1f0f250f1e0f1d0f210f180f160f1b0f150f170efe0f0d0f130f0c0f090f0f0f080f070f0b0f020f000f050eff0f010efa0a200efd0ef60ef40ef90ef30ef50eee0ee00ef10ee60eeb0eed0ee70ee90ee00ee50ee70ee40ee10ee70ee10ee3⟩, ⟨0x5802b014c0a004e025812408c04302000f407603801b00cc06002c015009c04a02200f807003201700a004401c00b0048018006000, 0xfdb0fdd0ed80fcd0fd30fcc0ee20fcf0edd0fcb0fc60ef50fc90eef0fc70f500e720fc50fb20fbd0fc30fbc0fbb0fbf0fb60fb40fb90fb30fb50fae0fa70fb10fa30faf0fa80fa60fab0fa20aa00fa50f9e0f6a0a980fa10f9e0f660f9a0f750f9d0f710f9b0f800f8f0f950f8e0f8b0f910f8a0f890f8d0f840f820f870f810f830f7a09d40f7d0f760f740f790f700a980f730f680f6d0f6f0f690f6b0a980f670f690f660a990f690f620f4a0f65⟩]))))))))) ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x5602a014409e04c025011c08604101f00ec07003501980c005a02b014009804802100f8070034017009804401c00b0048018006000, 0x105a105610561054105910531055104e104c1051103d104d10421049104b10441040103c104710431045103c103f1043103e103d1043102c103510371030102e1033102d102f10260ff81029102210201025101f1021101a100f101d1009101b101410101010100e1013100d100f10081006100b0ff910070ffc100310050ffe0ffa0ff810010ffd0fff0ff40fdc0ff70ff00fee0ff30fed0fef0fda0fe50feb0fe40fe30fe70fde0fdc0fe1⟩, ⟨0x520278130094048023010c08203e01d80e406c03301880b8056028013008c03e01d00d006002c01300880380180090038010004000, 0x10d010c810d310cc10ca10cf10c910cb10c800cf00ce10c910c410c210c710c110c310b010b710bd10b610b510b910b110b310a210a910af10a810a710ab10a310a51090109910a11098107c109b109410921097109110931086108d108f10881084107c108b108710891080107e1083107d107f107a0ff01074106f107710691075106e10641071106d106f1068103c106b10661064106010551063104f10611057105b⟩, ⟨0x56029814009a04b024011808604001f00ec07203601980c005c02b014009404402000e806c030015009804001c00b0040014006000, 0x1154115111571150114f1153114a1148114d11471149114211401145113f1141113a1132113d11361134113911331135112e112c1131112b112d1126111c1129111a11231125111e111c1121111b111d1104111311191112110f1115110e110d111111081106110b11051107110010fe110310fd10ff10f810f010fb10f410f210f710f110f310ec10ea10ef10e910eb10e410a410e710c010cd10e310dc10d510df10d110dd10d410be10d7⟩, ⟨0x5802a81480a004d025011c08804201f80f007203601a00c405e02c014809c04802000f0070032016009804001c00b0040014006000, 0x11d211db11dd11d611d411d911d311d511ce11a811d111bc11c711cd11c611c311c911c211c111c511bd11bf11a611b511bb11b411b111b711b011af11b311aa11a811ad11a711a911a2119911a5119511a3119a1198119d119411921197118311931188118f1191118a11861182118d1189118b11861184116c117b1181117a1177117d1176117511791170116e1173116d116f1168115e116b115c116511671160115e1163115d115f11461155115b⟩]) ( (.branch 2 ( .leaf #[⟨0x5802b014c0a004d025812008a04202000f807603801a80c805e02c015009c04602100f807003201700a004401c00b0040014006000, 0x8b125f125c10c8008a1258008a125b125412101257125312551240124912511248123e124b12441242124712411243122d123f1238123b123d1236122f1239123212021235122c12121231122e122d123112281221122b121512291220121b122512161214120e121912131217120d120f12001209120b1204120212071201120311fc11be11ff11f811e611fb11f4116e11f711f0114811f311e411ed11ef11e811e611eb11e511e711de11d411e1⟩, ⟨0x56029814009a04a024011408403f01e00e406c03301880b8056028012808c04201f00e806c03201600a004401c00b0040014004000, 0x10f012bd12bf12bc10f112bf10e810f512bb12b410ff12b710f912b512aa12ad12af008a12a712ab12a6008b12ab12a6129d12a9129c12a712a912a012a312a51298129412a11297129f129a1296129d129c1296129b12981297129d129c12971299129a008d008c129b0088129912960075007e12951292007b1230128f1291128e007d112a1137128d113e113b128b1282122c128512521259127d126e126d127112661261126b125d1267⟩]) ( .leaf #[⟨0x53028813809804a023811408404001e80e807003501980c005c02c014809804802100f006c03201600a004401e00c0048018006000, 0x134113431338132d133b132713391332132e132e132c1331132b132d132613241329131f13251320131e1323131a1318131d13171319131213101315130f1311130a0e33130d0e2d130b0e4f130512f412fd12ff12f812f612fb12f512f712e212ed12f312ec12eb12ef12e612e412e912e312e512da12d512dd12cf12db12d4103812d712d312d512ce032412d1103a029212cd0fec108112cb12c410b212c712be12c112c3⟩, ⟨0x53028813c09a04a024011808604001e80ec07003501980c405c02c0148098048022010007403601800b004c01e00d005001c008000, 0x13a713a913a413a213a0139e139a0e53139d0e59139b0e55139913940e8e1397138813911393138c138a138f1389138b1360135d138713821379138513731383137e137a137a1378137d137713791372134a1375136e13631371135d136f136513691368136413641362136713611363135c135a135f134b135b1350135713591352134e134a135513511353134a134d1351134c134b13511340134713491342133e131e1345⟩, ⟨0x530280134096049023811008404001e80e807003501980c405c02b014809404602000e8068030015009804001c00b0040018006000, 0x140c13f8140f14061401140b13fb140713f913ff005f13fd13fa13f8005e13f80099009813f913f4005e13f713f00e4c13f313ef13f113ea131113ed0e2913eb131313e713d813e113e313dc13da13df13d913db13d413ae13a613d713d413aa13c613cd13d313cc13a813cf13c8139e13cb13c713c913c213bb13c513b513c313ba13a213bd13b913bb13b413a613b713ac13b113b313ad13af13a613ab13ad13aa13a713ad⟩]))))) ( (.branch 4 ( .leaf #[⟨0x5702a014809e04b024811c08804201f80f007203701a00c405c02b014809804802100f006802e014009004001a00b0040018006000, 0x148c148a148f147d148b1480148714891482147e147c148514811483147a147814741472147714711473146a146d146f14601469146b14641462146714611463145c145a145f145613fc1459145213fe1455144e13001451144d144f14481443144b14191449144214281445142c14351441143814221416143b1434141c14371430142e1433142d142f142a142814201425142714211423141e141714211417141d14181416141b141214101415⟩, ⟨0x56029814009c04b024011408604001e80e806e03501900bc058029013809404401f00e806802e014009003c01800a0038014004000, 0x1510150f1513150a1508150d15071509150214f8150514f614ff150114fa14f814fd14f714f914e014ef14f514ee14eb14f114ea14e914ed14e414e214e714e114e314ca14d914df14d814d514db14d414d314d714ce14cc14d114cb14cd14c814c614ba14c314c514be14bc14c114bb14bd14a814b314b914b214b114b514ac14aa14af14a914ab147014a114a714a0147c14a31475149f149a1493149d148d149b14921478149514911493⟩, ⟨0x5702a014409e04c024811408404001e80e807003501980c405c02b014009404602000e806c030015009804001c00b0048018006000, 0x159204481595158e158515911581158f1586158415891580157415831578156e0524157f1576157b157d15771579156e052315770522156f1577156f15751570156e1573156e00db00da156f156a1568156d15640dd21567156015561563155c1557155f153d155d153215431555154215401545153b1541153c153a153f15361534153915331535152e152c1531152b152d152602a6152915241522151c042a151f15061515151b151415111517⟩, ⟨0x5702a014409c04b024011408404001e80e806e03501980c005a02a013809404402000e806c030016009804401c00b0040014004000, 0x152a152716071602044016051592044a160115fc14cc15ff15f814bc15fb15f414e215f715f015eb15f315e715f115ea152015ed15e602b015e915e2152d15e5152715e3152f15dd15c615d515db15d415d115d715d015cf15d315ca15c815cd15c715c915c215bd15c515b715c315bc152215bf15bb15bd15b615b415b9154b15b5154c154a15b3156115b10464046115af159615a515ab15a415a115a715a0159f15a3159a1598159d15971599⟩]) ( (.branch 2 ( .leaf #[⟨0x56029814409e04c025011c08a04201f00f007203701a00c405c02b014809804602000f006c03201700a004801e00c0048018006000, 0x16841679168716731685167e167a167a1678167d16771679167216701675166316711666166d166f166816641662166b16671669165e165c1661165b165d164c164b164f164600a616491642164016451622162d163f00a71639163216351637162a00a7163300a6162b1633162b1631162c162a162f162a00f500f4162b16261624162916231625161c1310161f16180e32161b1612161516170e2416111613160c0e3a160f16081508160b⟩, ⟨0x54029013c09a04a024011408203f01e00e806e03501900bc05a02a013809404402000e8068030015008803c01a00a0040014004000, 0x16f3170116f816dc16fb16f716f916f216f016f516e116f116e616ed16ef16e816e416e016eb16e716e916e216e116e716de16dc16d816d616db16d516d716c816d116d316cc16ca16cf16c916cb169216c116c716c0169e16c3169716bf16ba16b316bd16af16bb16b2169a16b516ae16ac16b1169f16ad16a216a916ab16a416a0169e16a716a316a5169c169a16961694169916931695165a168b1691168a1662168d165f1689⟩]) ( .leaf #[⟨0x540288138098049023811408403f01e00e806e03501980c005a02b014009004401f00e8068030015009003c01a00a0038014006000, 0x144c1453177f1776145b17791457177717681767176b170f17651764170e1754175d1763175c1730175f17581756175b1755175717501745175317411751174a17461746174417491740173e17431731173f1734173b173d17361732173017391735173717101465172f1715172b1726171d172917191727171e171c172117181460171b1714171217171711171316d41707170d170616e0170916d91705170416d8170016f91703⟩, ⟨0x55029013c098049023811008203f01d80e406c03301800b805802a014009804601f00e8068030015009804001c00b0040018006000, 0xa617d717db17d600a717db17d617c717d917c617d717d917c317d517ce17d117d317cc17c017cf009c17cd17c817c417c217cb17c717c917c417c217c717c617c217c517c617c117c317c400a900a817c517c2009300a417c117be00a117b417bb17bd17b617b2179417b917b517b7178c179717b117a817a417a417a217a717a117a3179c179a179f1795179b1796179417991790178e1793178d178f13ee13f5178b178013f01783⟩, ⟨0x5702a81480a004d025012008a04302000f407203701a00c405e02c014809804602100f006c032016009004001c00b0040018006000, 0x1864184c1860185918631855186118581850185b1854182e185718521850184c184a184f1849184b184417e01847183a18411843183c1838182e183f183b183d1836182f183b183218301835182f1831182a13da182d182417fc18271820181e1823181a1811181d180d181b181218101815180c180a180f17fd180b180018071809180217fe17fc18051801180317f8161c17ec17f517f717f017ee17f317ed17ef17e2163817e517da17dd17df⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x530280138098049023811008203f01e00e806e03501900b805802a013809404402000e806802e015009804001800a0038014004000, 0x18da18d818dd18d800e300e218d918d418d218d718d118d3189c18c918cf18c818a818cb18a118c718be18a418c118bd18bf18b818b618bb18a918b718ac18b318b518ae18aa18a818b118ad18af18a618a418a0189e18a3189d189f1896187e1899189518971882188b1893188a186a188d188618841889188318851880187e1874187b187d18761872186a187918751877186e186c1871186b186d184818331869184d1865⟩, ⟨0x54028813c09804a023811408404001e80e406e03401900bc05a02a014009404401f00e006402e014009003c01a00a0038014006000, 0x194c1949194f1949194b19441942194719411943193c193a193f1939193b193419321937192319331928192f1931192a19261922192d1929192b19241923192919251927191e19151921190f191f19140fd6191719131915190e02a0191118f418fd190d19021905190718fa00fd190300fc18fb190318fb190118fc18fa18ff013218fb18f617fa18f918f518f718d018db18f318e818e318ed18df18e918d918e118de18d800a6⟩, ⟨0x56029814009c04b024811c08804101e80ec07003401900bc05802a014009404402000e8068030015009004001a00b0048018006000, 0x19cc19cb19cf19c619c119c9028119c719c019ba19c319bf19c119bc19ba19b2028a19b519a819af19b119aa19a6027c19ad19a919ab199c19a319a5199e199a197a19a1199d199f1972197d199919921987199519831993198c198819881986198b198219801985197b1981197c197a197f197619741979197319751940196b1971196a194a196d1945196919641959196719551965195e195a195a1958195d195419481957194e19511953⟩, ⟨0x530280134094048022810807e03d01d00dc06803201780b4056029013008c04201f00e006802e014009004001a00b0040018006000, 0x1a2c1a371a3d1a361a351a391a301a2e1a331a2d1a2f1a1c1a251a2b1a2416301a271a201a1e1a231a1d1a1f1a0c1a151a1b1a1419221a171a101a0e1a131a0d1a0f1a08193b1a0b19351a09193d1a031a02193c19da19d71a0119fc19f319ff19ed19fd19f819f419f419f219f719f119f319ec19ca19ef19e819dd19eb19d719e919e219de19de19dc19e119db19dd19d619d419d919cb19d519ce19d119d319ca19cd19cf⟩]) ( (.branch 2 ( .leaf #[⟨0x54029013c09804a023811008003e01e00e807003501900bc05a02a013809004401f00e0068030015009004001c00b0040018006000, 0x1ab91abb1ab41a821ab71aae1a701ab11a911aa91a941a541aa71a9c1aa31aa51a9e1a9a1a441aa11a9d1a9f1a9a1a981a951a971a961a941a901a681a931a801a891a8b1a841a821a871a811a831a6e1a791a7f1a781a771a7b1a721a701a751a6f1a711a6a1a681a6d1a641a551a671a491a651a571a5f1a5a102e1a5d1a561a541a591a531a551a4d1a511a4c1a441a4f1a481a461a4b1a451a471a4016f81a4316d60e4e1a3f⟩, ⟨0x5702a014409c04c024811c08804101f00f007203701a00c405c02b014809804602000e806c030015009004001a00b0040018006000, 0x1b341b3f1b451b3e1b3d1b411b381b361b3b1b351b371b301b001b331b1b1b2f1b1c1b271b2d1b261b251b291b201b1e1b231b1d1b1f1b161ad31b191abd1b171afe1b0d1b131b0c1b091b0f1b081b071b0b1b021b001b051aff1b011ae81af71afd1af61af31af91af21af11af51aec1aea1aef1ae91aeb1ae41ada1ae71ad81ae11ae31adc1ada1adf1ad91adb1ad41ad21ad71acc1ac81ac81ac61acb1ac51ac71ac01ab81ac31abc1aba1abf⟩]) ( .leaf #[⟨0x5902b014c0a204e025812008a04201f80f007203701a00c405e02c015009c04802200f806c03201600a004401c00b0048018006000, 0x1bd01bcf1bd31bca1bc81bcd1bc71bc916780e4a1bc11bbc11061bbf1bb61b9e1bb91bb21b921bb51b9c1bab1bb11baa1ba71bad1ba61ba51ba91ba01b9e1ba31b9d1b9f1b901b991b9b1b941b921b971b911b931b8c1b851b8f1b811b8d1b841b661b871b801b7e1b831b711b7f1b741b7b1b7d1b761b721b701b791b751b771b6c02221b6f1b6a1b681b541b5f1b651b5e1b5d1b611b581b561b5b1b551b571b5001fc1b531b4c01e61b4f1b4612f61b49⟩, ⟨0x520280134094047022010807e03d01d00dc06a03301880bc058029013809404401f00e8068030015009004001a00b0040014006000, 0x1c411c431c2a1c391c3f1c381c351c3b1c341c331c371c2e1c2c1c311c2b1c2d1c221c211c251c20003b1c1a1c1d1c1f1c181c0e1c1b00381c191c111c171c161c101c131c151c101c051c131c0e1c0d1c11003c1c0f1c0c00311c061c091c0b1c04003f1c0700421c051bfe1bf91c031bf71bff1bf61bee003e1bf21bf01bf51bef1bf11bea1bc41bed1be91beb1bda1be31be51bde1bdc1be11bdb1bdd1bc61bd11bd7⟩, ⟨0x55029814009c04b024011808604001e80e806e03501900bc05a02a013809404401f00e806c030016009804401c00c0048018006000, 0x1c271cc51cb61cc11cc31cc000371cba1cbd1cbf1be61cb51cbb1cb31cb91cb41cb31cb71ca41ca31ca71c9e003e1ca11c9a1bc21c9d1be81bf31c991c231c931c5e1c691c911c881c871c8b1c851c891c841c6c1c0c1c7e1c791c831c771c7f1c761c741c641c721c6e1c751c711c731c6d1c6f1c681c661c6b1c651c671c601c561c631c5f1c611c5a1c581c5d1c571c591c401c4f1c551c4e1c4b1c511c4a1c491c4d1c441c421c47⟩]))))) ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x5902b81500a204e025812408c04302000f407603801a80c806002d01500a004a02300f807403601900b004c02200d0050018006000, 0x1d3a1d381d221d311d371d301d2d1d331d2c1d2b1d2f1d261d241d291d231d251d0c1d1b1d211d1a1d171d1d1d161d151d191d101d0e1d131d0d1d0f1d081cfe1d0b1cfc1d051d071d001cfe1d031cfd1cff1cf80a2c1cfb1cf41cf21cf701461cf31cee1cec1cf11ceb1ced1ce61ce21cde1ce91ce51ce71ce11ce31ce21ce00e721cd91cdd1cd80e731cdd1cd91cdb1cd40e6c0e661cd71cd013ba1cd304fe04f804f61ccf1cc81ccb1ccd1cc61c0d1cc9⟩, ⟨0x56029814409e04c024811c08a04302000f807603901b00cc06002d01580a004a02200f807403401700a004401c00c0048018006000, 0x1dae1da91db31da51daf1d951da71da41da21d941da01d9c1da31d9f1da11d9b1d9d1d9a01511d961d941d9901541d951d901d8e1d931d8d1d8f1d761d851d8b1d841d811d871d801d7f1d831d7a1d781d7d1d771d791d601d6f1d751d6e1d6b1d711d6a1d691d6d1d641d621d671d611d630a7c1d5d1d5f1d5c0a7d1d5f1cea1cf51d5b0a1e0a1b1d551d500b3d1d530b511d511d481d241d4b1d441d0e1d471d400dec1d431d3c08b61d3f⟩]) ( .leaf #[⟨0x530288138096048022810c08003d01d00e006a03201780b4056028013008c04201f00e806c030015009004001a00a0040014006000, 0x1df51e2b1e101e1f1e251e1e1e1b1e211e1a1e191e1d1e141e121e171e111e131dfe1e091e0f1e081e051e0b1e041e031e071dff1e011dfa1df81dfd1df41dec1df71df01dee1df31ded1def00821ded1de81ddf1deb1de31de71de212931de51de000871dde00851dd91ddd1dcd1ddb1dd00fb41dd31dcc0fee1dcf1dc810931dcb10991dc91dc410921dc71dc01dbe1dc31dbd1dbf1db81db71dbb1db51db91db41d9a0a98⟩, ⟨0x4f026012408e045021810007c03b01c80d806803201780b0052027012008403c01c00d006002a013008803c01800a0040014006000, 0x1e8c129e1e8f1e881e7e1e8b1e871e891e7b1e851e821e801e7a1e781e7d1e771e791e721e701e751e6b1e711e6c1e6a1e6f1e4f1e691e681e4e1e561e611e671e601e5f1e631e5a1e581e5d1e571e591e501e531e5512961e4f1e511e4e12971e511e4b1e4d1e4a007700761e4b1e461e441e4900781e451e411e431de91e3f1e3a1e311e3d1df11e3b1e331e371e321e301e351e2f1e311e2a1df91e2d⟩, ⟨0x56029814009c04b024011808804101f80f007203701a00c405c02a014009404602100f006c030016009804001c00b0040018006000, 0x1e2e1df11f0b1f041eff1f091efd1f051efc1efa1dec1ef81ef61efb1eeb1ef91ef51ef71ef01eef1ef31eed1ef11eec1eea1e4a1ee61edd1ee91ed91ee71ede1edc1ee11ed81e4c1edb1ece1ed51ed71ed01ecc1e4a1ed31ecf1ed11eca1e4b1ecf1ecb1ecd1ecc1eca1e9e1e6d1ec91e761e731ec71ebe1eb71ec11eb31ebf1eb61e801eb91eb21eb01eb51eab1eb11eac1eaa1eaf1ea21ea01ea51e9f1ea11e9612961e991e921e901e95⟩]))) ( (.branch 2 ( .leaf #[⟨0x5902b014c0a004d025011c08804101f00ec07203601980c005a02b014009804602000f0068030014008803c01a00b0040014006000, 0x1f861f891f8b1f841f831f8710fc10f91f811e401e471f7f1e861e8d1f791f721e001f751f6e1e421f711f5c1f671f6d1f661f651f691f601f5e1f631f5d1f5f1f461f551f5b1f541f511f571f501f4f1f531f4a1f481f4d1f471f491f421f411f451f3f1f431f3e1ef412961f3a1f2f1f3d1f2b1f3b1f321f2e1eaa1f351f311f331f2a1f1e1e3e1f2d1f261f171f291f131f271f191f211f1d1f1f1f181f161f1b1f121f101f1500721f111f0c1e361f0f⟩, ⟨0x540288138098049023811008203e01e00e406e03401880bc05a02b014009404602000e806802e015009804001a00b0040010004000, 0x1ff41ff31ff71fee1fec1ff11feb1fed1fe601821fe901811fe702d01fe31fe51fe202d11fe51fde1fd51fe11fcf1fdf1fd61fd41fd91fd31fd51fce1fcc1fd11dd404a61fc71fc41fc209f51fc11fc009f41dbc1fb51fbf1fb4125e1fb71dc11fb31fac1de11fb11f8c1f841faf1f8e1eaa1fad1f821eab1fad1faa1f951faa1f931f941f921fab1fa61f9f1fa91f911fa71f9e1f991fa31f941f921f901f971f8f1f951f8d1f93⟩]) ( .leaf #[⟨0x520278130094047022810808003d01d80e006a03201800b8058029013008c04201f00e006002c014009004001a00a0040018006000, 0x205a2058205d20542049205720332055204e202c2051204b204f204a2048204d204720492042203b204520372043203a202c203d2036202e2039203220302035202f203100f0202f202a202820222025202702f202a82023201c201720212013201d201120152012201002a8200e200a20022011200d200f200c00f92009200b200800f720002005200720042001200720012003200000f31fea1ff91fff1ff81ff51ffb⟩, ⟨0x510270130092047022010407e03b01c80d806803101700b0052026012008403e01c00d006002c014009003c01800a0038010004000, 0x20c820c620cb20c520c720be20b020c120bc20ba20ae20b720b920b220b020b520af20b10e22045a045220ad20aa20a820a420a320a720a120a520a02084156e209c209b209f2099209d2098208002a62092208d2097208b2093208a2088202e208820832086208220892085208720862084208400ef00ee208520812083207c2059207f2072206d20772067207320682066206b2060205e20630b212061205b205f⟩, ⟨0x5902b014c0a004d025011808604101f00ec07003401900bc058029013809004401f00e806802e015009004001c00b0048018006000, 0x2f0212d2131212820c6212b211a2004212502ee01872123018602ef21232098208202b02121203a2028211f2119211b21141fec211720f6210121132104210b210d210620fc1fc421092105210720fc1fc321051fc220fd2105210020fe210320fd20ff20f81fc820fb20f720f920f21fe720f51fe320f31fe2018120f120da20e520ef20e320e920e420e220e720e200dd00dc20e320de20dc20e120db20dd20c420d320d920d220cf20d520ce20cd20d1⟩]))))))))))) ( (.branch 37 ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x5702a014809e04b024811c08804101f00ec07003501900c005a02a013809404602100f0070032016009804401c00b0048018004000, 0x21ac21a621af21ab21ad2046203321a921a221a0211821a5200521a3211d21a1212620dc219f21921b84219921941b562197217c218b2191218a2187218d2186218521892180217e2183217d217f21762179217b2174216d21772170216c21732151216b21672169216821662162215b216521532163215a2155215f215221502146214c214a214f2147214b214202d02145213e213a2141213d213f2130213721392132212e02f0213521312133⟩, ⟨0x5802b014c0a004d025012008a04202000f407403801a80c806002d015009c04a02200f007003201600a004401c00b0040014006000, 0x222e222c220e22192229221e22212223221600cb221f00ca2217221f2217221d22182216221b221222102215220f221121ee21f7220d21fe21fd220100cb21fb21f600ca21f921f221f021f521ef21f121dc21e721ed21e621e521e921e021de21e321dd21df21d221d921db21d421d021c621d721d321d521ce21c721d321ca21c821cd21c721c91dd8105421c5100c100921c31dd6100e21c121aa21b121bf21b8018f21bb019721b921b001a221b3⟩, ⟨0x53028813c09804a023810c08203e01e00e806e03501900c005a02a013809004401f00e006402e014009003c01a00a0038014004000, 0x22af22b122a822a622a222a022a5229f22a12294229b229d229622922274229922952297228e22832291227d228f2288228422842282228722812283227c227a227f2275227b2276227422792270226e227322602269226b2264226222672261226322502259225f22582232225b22542252225722512253224c2245224f223f224d2244222c224722432245223e223022412236223b223d2237223922342231223722312233⟩, ⟨0x55029814009c04b024011808604001f00f007203701a00c805e02b014809804802100f006c032016009804401c00c004801c008000, 0x232c232823282326232b23252327232021c62323231c231a231f2319231b22e423112317231022ec231322e9230f230823042304230223072301230322fc22fa22ff22ed22fb22f022f722f922f222ee22ec22f522f122f322e822e622eb22e522e722d222dd22e322dc22db22df22d622d422d922d322d5229e22cb22d122ca22aa22cd22a322c922c022a622c322bf22c122ba22b822bd22ab22b922ae22b522b722b022ac22aa22b3⟩]) ( (.branch 2 ( .leaf #[⟨0x520280134096048023010c08003d01d00dc06803201780b0054027012808c04001d00d806402e014008803c01800a0038014004000, 0x157123a1239c239a239f2399239b23941aac23972393239516f616f3239123862389238b236a238523872384236b23872362236f23832378235e237b237723792372236a2375236e236c2371236b236d236623642369236323652360235e235a15b4235d2354234f2359234923552343234d0121234b234823420120234423422347014a2343233e226c2341233d233f231821cb233b231d233723322327233523212333⟩, ⟨0x5a02b81500a404f025812008a04201f80f007203701a00c405c02c014809c04802200f807003401800a804801c00c0048018006000, 0x240819f2240b2404240224072401240323fc19c023ff0be00bd80b5423fb23f61b3623f923f21e5823f523c823d123f123de23e523ed23e423d423e723e023dc23e323df23e123d623d923db23ce008b23d7008a23cf23d723cf23d523d023ce23d300d023cf23ca23be23cd23c923cb1912190f23c723c0147223c5124523c323c2124423b823b523bd122c23b923bb23b423b21de623b723b123b314920e5023af2392154323ad2398153d23ab23a0156923a3⟩]) ( .leaf #[⟨0x530280134094047022010407e03c01c80dc06803101700ac052027012808c04201f00e8068030015009004001a00b0040014004000, 0x2454234c2457244e245124530120244b244f244a0121244f244a243f244d243e244b244d243f2449244224452447243a2436244324392441243c2438243f243e2438243d243a2439243f243e2439243b243c01230122243d011e243b2438010901082439011424372434010f24262431243324300113242a242d242f238e2425242b2423242924242423242724092421240c2417241d2416241524192410240e2413240d240f⟩, ⟨0x56029814409c04c024811c08804101f80f007203601980c405c02b014009804602100f0070032015009804401e00c0048018006000, 0x24da222a24dd24d924db24d424d224d7011024d324ce24cc24d124cb24cd233c234524c924c224af24c524ab24c324b424b324b724ae241e24b124aa012024ad24a4249d24a7249924a5249e249c24a124982476249b2494248d249724872495248c2472248f248b248d24862484248924772485247a24812483247c24782476247f247b247d2474247224632471246c138a246f2468193a246b24641a0e2467245e19dc246124002455245d⟩, ⟨0x540280138096048023011008203f01e00e806e03401900bc05802a014009404602000f006c02e015009004001a00b0048018006000, 0x255625522530255925552557252825332551254a253f254d2539254b254425402540253e2543253d253f25382536253b25312537253225302535252c252a252f2529252b24f225212527252024fe252324f7251f251e24f6251624fa2519251525172510250e251324ff250f2504250b250d2506250224fe250925052507250024ff250524fc24fa24f624f424f924f324f524f0236624ca24d524ef24d824df24e924de234a24e1⟩]))))) ( (.branch 4 ( .leaf #[⟨0x54029014009a04a023811008203f01e00e406e03401900bc056029013009004402000e806c030015009804001c00b0040014006000, 0x25c925cd25c525c725c2154a25c525c4154b25c125b025b925bf25b818e025bb25b425b225b725b125b30288028525af2584258125ab25a625a225a225a025a5259f25a1259a2574259d2596257a2572259925772597259225872595258125932589258d258c258825882586258b258525872580257225832578257d257f2579257b25762573257925732575255e25672571256621fa2569256225602565255f25612554255b255d⟩, ⟨0x5702a814809e04d025011c08804101f80f407603901b00cc06002e01580a004c023010007403601800a804401c00b0048018004000, 0x261c00c326162619261b2614260c261700ba2615260226112613261026032613260e260a26112610260b260d00cc260f00c8260d260a00af00ae260b26042607260900ca26032605260200cb26051537260125f225fb25fd25f625f425f925f325f5200c25c525f125c4200d25f125e825ed25ef25e925eb25c0170f25e9170e25c125e925c625c015b425e725c8170e25e525e025d925e325cb25e125d825d325dd25ce25cc25ca25d125c325cf⟩, ⟨0x50026812c090045021010007a03b01c00d806603101780b4054028013008c04001d00d006002a01200780340160080030010004000, 0x268c2674268f268b268d2676268126872680267f2683267a2678267d26772679266c26712673266d266f266a260b266d260b266926642662266726612663266000c100c02661265c2656265f265b265d26572659263e264d2653264c2649264f26482647264b264226402645263f2641261c263b263d263a261d263d2634262f2639262b26352629262d262a2628260c26252627262400c726212623261d261f⟩, ⟨0x5602a014409e04c024811808804101f00ec07003601980c005a02a014009404401f00e8068030015009804401c00b0040014004000, 0x270b270d270626da27092705270726fe26f4270126f226fb26fd26f626f426f926f326f526dc26eb26f126ea26e726ed26e626e526e926e026de26e326dd26df26c426d326d926d226cf26d526ce26cd26d126c826c626cb26c526c726b226bd26c326bc26bb26bf26b626b426b926b326b526aa26af26b126ab26ad26a826a526ab26a526a726a400b1268a269526a32698269b269d26901bbb26991bba2691269926942692269726912693⟩]) ( (.branch 2 ( .leaf #[⟨0x5802a814c0a004c025012008a04302000f407403701a00c405e02c015009804802200f8070032016009803c01a00a0038014006000, 0x27882781278b277527892780277b2785277627742772277927712773277000ab276c276a276f00ac276b2764274a276727602742276327482757275d275627532759275227512755274c274a274f2749274b27442742274727412743273c27382734273f273b273d27372739265a266527332704270f272d272426c62727272026de27232716271d271f27182714270a271b27172719270a271327172712270b27172713271527142712270e270c2711⟩, ⟨0x56029814009a04b024011808604001e80ec07203601980c005c02c014809804602100f0070032016009804001c00b0040014004000, 0x27e6097f280909a20963280127f8096627fb27ed27f727ee27f327f527ef27f1097a27ed27ef27ec097b27ef27e8246227eb27e727e9263b27e527c0276827e327be27c727e127d627d127db27cd27d727c527cf27cc27ca27c426a6266827cb27c627c427c900b227c527c0275e27c327bf27c12740276d27bd27b427aa27b727a827b127b327ac27aa27af27a927ab278c279f27a7279e279727a32796279527992790278e2793278d278f⟩]) ( .leaf #[⟨0x5702a014409c04b024811808604001e80e807003501900bc058029013009004401f00e8068030015009004001a00b0040018006000, 0x2872287b28810960287b287d287a0961287d28762874287928732875286e1cec28711d8c1d97286d285e21192865154a285f2863285e154b2863285f28612150047e285d28581aea285b285425f42857284e2851285311e21fcd284f284a283f284d2839284b282728472840283e2843283d283f283820fc283b2832282a282a2820282d28262824282928212825281c2815281f280f281d2814238c281728132815280e24282811280a1fd4280d⟩, ⟨0x5802a814c0a004d025812408c04302080f807603801a80cc06002d015009c04802000f006c030016009804401c00c0048018006000, 0x28f628f128f928ed28f728ec28e428ef28e828e628eb28e528e7015828e528d828e128e328dc28da28df28d928db28d422d428d728c028cb28d128ca28c928cd28c428c228c728c128c328b8137828bb28b4136228b70ea41ce528b31ce40ea528b328a828af28b128aa28a60ea828ad28a928ab1cd81cdf28a528a0289528a3288b28a1289a288e289d2897289b28962894289928932895288e1d8e2891288a1da6288d28861d78288928821d622885⟩, ⟨0x55029814009c04b024011408404001e80e806e03401900bc058029013008c04001e00e006402e014008803c01800a0040014006000, 0x29632967296229602965295f2961295a27ce295d0f7e0e5e295929542678295729502941295329472951294a2706294d2946270a2949294229402945293c2935293f2931293d293428bc29372930290e2933291c2925292f2928268c292b2924269029272920291e2923291d291f291a00b5290c29172919291600b929102913291528be290b29112909290f290a2909290d28d32907290628d2290228fb290528e9290328fc28fa28ff⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x55029013c09a04a023811408403f01e00e406e03501900bc05802a013809004201f00e8068030015008803c0180090038014004000, 0x29d829e129e329dc29da29df29d929db29ca29d329d529ce29cc29d129cb29cd29b429c329c929c229bf29c529be29bd29c129b829b629bb29b529b729b229ac29ae28da29b12990298d29ab29a6298b29a9298d29a72988298d29a32998299b299d2994282129992995299729912993298c2428298f2989298b297e298529872980297c29722983297f2981297a2973297f29762974297929732975296f2971296a2961296d295b296b⟩, ⟨0x5702a014409e04c024811c08804101f00ec07003601980c005c02b014009804602100f0068030015009804401c00b0040014006000, 0x2a5406fc2a572a5001d22a532a4f2a512a4a2a422a4d2a462a442a492a432a452a3e29b62a412a3a29cc2a3d2a3629ea2a392a2c099f2a352a302a2e2a332a2d2a2f2a282a262a2b2a222a212a252a1f2a232a1e07e6064e2a1a2a182a1d2a172a192a122a102a152a052a112a062a0d2a0f2a082a042a022a0b2a072a092a002a052a072a022a0029fe29d629e829f729fd29f629f329f929f229f129f529ec29ea29ef29e929eb29e429da29e7⟩, ⟨0x5c02c81580a6050026812408c04302080f407403601980c005a02b014009404402000e806402e014008803c01a00b0040014004000, 0x4bc04b92ac12aa004be2abf2aa62aad2abd1fe2285f2ab7285e1fe32ab52448243c24382ab12aac02da2aaf2aa82aa42aab2aa72aa902e602e002d22aa309b609b32a9f1fc009f809aa2a9d09d009b82a9b2a8c20f82a992a942a192a972a132a952a882a5a2a8b2a8410fe2a872a802a272a832a472a812a722a792a7b2a742a702a422a772a732a752a422a6f2a732a6e2a432a732a702a6e2a6b2a6d2a6c2a6a2a582a632a692a622a612a652a5c2a5a2a5f2a592a5b⟩, ⟨0x54028813c098049023010c08203e01d80e406e03401900bc05a02a013009004201f00e8068030015009004001c00b0040018006000, 0x2b3a2b392b3d2b352b370bea0be72b330c700c6d2b310b3a0b512b2f2b2a17ee2b2d2b282b262af22b1f2b252b1e2afa2b212af72b1d2b162b122b122b102b152b0f2b112b0a2b082b0d2afb2b092afe2b052b072b002afc2afa2b032aff2b012af62af42af92af32af52aee2aea2aea2ae82aed2ae72ae92ae22ac22ae52ade2ad32ae12acf2adf2ad52ad92ad42ad22ad72ace2acc2ad12ac32acd2ac62ac92acb2ac42ac32ac7⟩]) ( (.branch 2 ( .leaf #[⟨0x530278134096048023010c08203e01e00e806e03401880bc05a02b014009404402000f0070032016009804401c00b0040018006000, 0x2bac2baa2ba82baf2ba72ba92ba600192ba22ba02ba5001a2ba12b9c2b9a2b9f2b992b9b2b942b912b972b9200292b9000272b8a2b8d2b8f2b8800162b8b2b8600172b8b002a2b8900222b872b8400212b722b7d2b832b7c2b7b2b7f2b762b742b792b732b752b6f2b712b702b6e2b562b612b672b602b5f2b632b5a2b582b5d2b572b592b522b482b552b462b4f2b512b4a2b482b4d2b472b492b422b362b452b342b3b2b41⟩, ⟨0x5702a014409c04b024011408604101f00f007203601980c405c02b014009404201f00e0068030016009804001a00a0040014006000, 0x2b982ba32c3b2c1e2c272c352c2a2c2d2c2f25fe2c252c2b2c262c242c292c202bc22c232c1f2c212c192c1d2c182bea2c1b2c112c172bc608142c152c102bfc2c132be8084f2c0f2bed2c0d08982bfd2c0b2c0005e22c032bfc2bc42bff2bf22bf92bfb2bf42bf0084c2bf72bf32bf52bec2bea2bef2be92beb2be62bc62be42bc42bc82bdb2be32bda2bd32bdf2bd22bd12bd52bcc2bca2bcf2bc92bcb2bbe2bb72bc12bab2bbf2bb62bb12bbb⟩]) ( .leaf #[⟨0x5602a014409e04c024811808604001e80ec07003501900bc05a02a013809004401f00e006402c01400880380180090030010004000, 0x2cb42cb02cb02cae2cb32cad2caf2ca829722cab19be02812ca52a162a132ca32c9e2c4c2ca12c9a2c802c9d2c962c5a2c992c942c562c7e2c8d2c932c8c2c892c8f2c882c872c8b2c822c802c852c7f2c812c7a2c702c7d2c6e2c772c792c722c702c752c6f2c712c582c672c6d2c662c632c692c622c612c652c5c2c5a2c5f2c592c5b2c4a2c532c552c4e2c4c2c512c4b2c4d2c442c472c492c422c412c452c40001f2c3e001d00242c3d⟩, ⟨0x510278130094048022810c08203e01d80e406c03301800b8058029013009004402000e806c030016009804001a00a0040014006000, 0x2d2201172d1e2d1c2d212d1b2d1d01182d1b2d162d102d192d152d172d112d132cdc2ce72d0d2d002d052d072d012d0324382a6b2d012a6a24392d012cfa2cf52cff2cf12cfb2ce52cf32cf02cee2ce42cec24402cef2ceb2ced2cec2cea2cea010b2ce62ce42ce9010c2ce52ce02cde2ce32cdd2cdf2cc62cd52cdb2cd42cd12cd72cd02ccf2cd32cca2cc82ccd2cc72cc92cc024352cc52cc12cc32cba29702cbd⟩, ⟨0x54029013c09a04a024011408403f01e00e806e03401900bc05a02a013809004401f00e806802e014009003c01800a0038010004000, 0xa22d8f2b6e253e2d8d2d8a011d2d862d852d892d84011b2d6e2d7d2d832d7c2d792d7f2d782d772d7b2d722d702d752d6f2d712d142d1f2d6d2d642d632d672d612d652d602d2224382d5e2d422d4c2d572d5d2d562d552d592d502d4e2d532d4d2d4f2d442d492d4b2d452d472cea2d432d452d422ceb2d452d3e2d3d2d412d3b2d3f2d3a2d262cea2d342d2f2d392d2d2d352d2c2d2a2d1a2d282d242d2b2d272d292d232d25⟩]))))) ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x530280138096047022810c08003e01d80e406c03401900c005a02a014009404401f00e006402e015009804401c00b0040018006000, 0x2de22ddb2de52dcf2de32dda2dd52ddf2dd02dce2dcc2dd32dcb2dcd2dca00452dc62dc42dc900462dc52dc02dbe2dc32dbd2dbf2db82db52dbb2db600552db4004f2db2005b2daa2dad2daf2da82da02dab00562da92d962da52da72da42d972da72da22d9e2da52da42d9e2da32da42d9f2da12da2006100602da3005c2da12d9e00492d982d9b2d9d005e2d972d992d96005f2d992d9600632d902d932d95005e2d8f2d91⟩, ⟨0x5702a014409c04b024811808604101f00ec07003501900c005a02b014809804802200f8070032016009804001c00b0040014004000, 0x2e542e632e692e622e5f2e652e5e2e5d2e612e582e562e5b2e552e572e462e4d2e532e4c2e4b2e4f2e472e492e402e432e452e3e2e352e411ac41ac12e3d2e362e392e3b1b1a2d9f2e372e34004b2e302e2e2e332e2d2e2f004c2e2d2e282e222e2b2e272e292e232e252dbc2dc72e212e042e0d2e1b2e102e132e152b262e0b2e112e0c2e0a2e0f2e062de62e092e052e072de82dfb2e032dfa2df32dff2df22df12df52dec2dea2def2de92deb⟩]) ( .leaf #[⟨0x5802a814c0a004d025011c08804201f80f007403701a80c805c02c014809c04802100f006c032016009804001c00b0040014004000, 0x2eea2ee82eed2ee72ee92eca2ed52ee32ed82edb2edd1d382ed32ed92ed42ed22ed72ece2ecc2ed12ecb2ecd2e902e9b2ec92ec02ebb2ec32eb72ec12eb62eb42eb92ea92eb52eaa2eb12eb32eac2ea82ea62eaf2eab2ead2ea82ea52eab2ea62ea42e9e2ea12ea320a82e992e9f2e9a2e982e9d2e942e922e972e912e932e8c2e822e8f2e802e892e8b2e842e822e872e812e832e6a2e792e7f2e782e752e7b2e742e732e772e6e2e6c2e712e6b2e6d⟩, ⟨0x55029013c09a04b024011408604101f80f407403701a00c405e02c014809804602000e806c032016009804001c00b0040018006000, 0x2f682f522e342f622f5d2f672f592f632f4d2f5b2f582f562f4c2f542f502f572f532f552f4f2f512f4e00592db92f492f322f412f472f402f3d2f432f3c2f3b2f3f2f362f342f392f332f352e262e312f312f282f042f2b2f162e922f272f222e482f252f1e2e6c2f212f1a2e562f1d02752f152f1402742f022f0d2f132f0c2f0b2f0f2f062f042f092f032f052efe2ee82f012ee42ecc2efd2efa2ef82ee62ef12ef72ef02eef2ef3⟩, ⟨0x5902b01500a204e026012408c04302000f807603801a00c805e02c015009c04a02200f8070032016009804001a00a0038014004000, 0x2fe42fe22fe72fe12fe32fdc26a42fdf2fd82fd62fdb2fd52fd72fbe2fcd2fd32fcc2fc92fcf2fc82fc72fcb2fc22fc02fc52fbf2fc12fba26b42fbd2fae2fb52fb72fb02fac2fa22fb32faf2fb12fa22fab2faf2fa62fa42fa92fa32fa52f9e2f9c2fa12f9b2f9d2f9625162f992f9222622f952f8e248c2f912b6a249c2f8d2b6c25602f8b253c25392f892f722f812f872f802f7d2f832f7c2f7b2f7f2f762f742f792f732f752f6c2f6b2f6f2f692f6d⟩]))) ( (.branch 2 ( .leaf #[⟨0x5a02b81500a204f026012408c04402080f407603901b80cc06002d01500a004c0230100074034017009804001a00b0040014006000, 0x306a3069306d3068304030673068304130653066006f3052305d3063305c305b305f305630543059305330553048304f3051304a30463040304d3049304b30463044304130433030302a3024303f303a3038303d3034303230373028302d302f3029302b302530272514251130232f9a2fa730213006300b3019301426403017301027353013300c300a27e4300f2ffe300730093002300030052fff30012fd42fdd2ff92ff02fe22ff32fee2fec2fe02fe92feb⟩, ⟨0x5702a814809e04b024811808604001e80ec07003501900bc058029013809404602000e8068030015009804401c00b0040018006000, 0x30d530d730cc307530d5307430cd30d530d030cc300030d330cf30d130ce2fff30cd30bc30c330cb30c2300030c530be307630c130bd30bf2324232130bb230022fd30b930b214aa30b52908301130b1273a291b30af22be22bb30ad30aa30a630a8307400b630a3308a309130a130963099309b308e006d3097308f30953090308e309300c4308f308b308d307830833089308230813085307c307a307f3079307b306e30713073006c306b306f⟩]) ( .leaf #[⟨0x5802a814809e04d025011c08804101f80f007203601a00c405c02b014809c04802100f007003201600a004401c00b0048018006000, 0x31563159315b3154314f31573150314e3153314b314d31443147314931422c3f31453134313b3141313a3139313d31353137310e311731333122312b312d31263124312931233125311c311f31213112311b311d31163114311931133115310f311131003107310d31063094310931022b6831053101310330f430f930ff30f830a230fb30f530f730f0307a30f330e830e730eb30e2303930e5303530e3262430cf30dd30ce262530dd30d430d930db⟩, ⟨0x55029013c098049023811008203e01d80e406c03401880b805802a013809004402000f006c030015009004001a00a0040014006000, 0x31de2c2031e131da305431dd31d431d731d931d0303331d531d231d031b831c731cd31c631c331c931c231c131c531bc31ba31bf31b931bb31b231b131b531af31b331ae31942c3e31a831a331ad319f31a9319331a1319e319c3192319a3196319d3199319b319531972b95318f31783187318d318631833189318231813185317c317a317f3179317b3168316f3175316e316d31713169316b314a3151316731553161315c3124315f⟩, ⟨0x5a02b81500a404f026012408e04402000f807803901b80d006202e01580a004802100f0070030016009804401c00b0048018006000, 0x325632243259325232503255324f3251322e3224324d324a3225324d3246323f324932313247323e323932433234323232303237322f3235322d323332243229322b3225322732082d0e3223321e2d7032213206320f321d1fd21fcf321932142d4e32172d5e2d462cea3213320e2d1a3211320a3208320d32073209320231fe2cc232053202320031fa31f331fd31e731fb31f431f231f731ee2cdf31f12ce731ef31ea2cde31ed31e62cf231e931e22cc831e5⟩]))))))))) ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x5802b014c0a004d024811808604101f00f007203701a00c405c02b014809804802100e806c030016009804401a00b0040014004000, 0x2f9732e132dc24f432df2812280f32db296e297732d932d229961fca32d532cc31ff32d1242232cd32cf325b32cb325e325a32c9325f32c7327c328932c5326932bf32a832b732bd32b632b332b932b232b132b532ac32aa32af32a932ab32a0329a32a33299329b328e329532973290328c32843293328f329132883286328b328532873280327e3283327d327f327822382230327b327622543264326d3275326c2cec326f32683266326b32653267⟩, ⟨0x55029013c09a04b024011408604001f00ec07003501900c005a02b014009404402000e806802e015009004001a00b0038014004000, 0x33683366336b336233603365335f3361335c006933563359335b335430643357006a3355334c33513353334d334f3332334133473340333d3343333c333b333f33363334333933333335332e207d333132eb332f32ea3321332b32fa3305331d3312330d3317330b3313330a330833003042302633093304330233073301330332fc32f432ff32fb32fd32f632ee32f932f532f732f032ec32ea32f332ef32f132e632e432e932e332e5⟩, ⟨0x520280138096049023011008203d01d80e006c03301800b8058029012808c04001e00e006802e014008803c01800a0038014004000, 0x334b33e533e133e333dc33da33df006633db33ce33cb33d133b933cf33be33c533c733c033bc33b433c333bf33c133b833b633bb33b533b733a8339533b333aa33a433ad33a933ab33a533a7339a33a133a3339c33983390339f339b339d33943392339733913393338e3387338e336733863366338f3388338b338d33663385338933863384335e33693383337a337633763374337933733375336e336c33713367336d⟩, ⟨0x5a02b81500a4050026812c09004502100fc07803901b00cc05e02d015009c04a022010007403401700a804801e00c0048018008000, 0x344831cf3451344c344a344f3449344b34453447343e226f34412277343f162412de343b2cac2ca934393430299234373432298a3435259e259b342f342a340c342d340a34173429341a34213423341c341229b2341f341b341d341229ad341b34163414341934133415340e340c3411340b340d2f182eba340933d433d2340734023400340533d33401324c2d8b33ff33f6243833f933f232a633f532e233dd33f13350334933eb32e733e933e433e2334833e7⟩]) ( (.branch 2 ( .leaf #[⟨0x5902b014c0a004e025812008a04302000f807803901b00cc05e02d01500a004a02200f807003201600a004401c00b0048018006000, 0x34c234c534c734bc34c134c334c034bd34c334bd34bf34a034a934bb34b034b334b534ac34a534b134ae34ac34a834a634ab34a534a734a134a3349c2e06349f34983460349b348e349534973490348c17c23493348f3491348a17c3348f348c348a34721a8e3489347034793487347c347f348121663477347d34783476347b34721ab2347534713473345e3469346f34683467346b346234603465345f346134463442345d3444344d345b345034533455⟩, ⟨0x5c02c81580a6050026812808e04402080f807803901b00cc06002d01580a004a023010007403601700a004401c00b0040014004000, 0x353413183537352e3531353328e40121352f012028e5352f19f019ed352d2242223f352b352424ae3529352013c83523351606de35193512350b351535073513350c350a350f35062a0435093500350335050f3e34fd350134fc0f3f350134fd34ff34f80e7834fb34f434f234f734f134f3132a132734ef28d2132c34ed34ea2cba2d022a6c243834e91938193534e734e21bdc34e534de34ca34e134da34a234dd34c834d334d934d234d134d534cc34ca34cf34c934cb⟩]) ( .leaf #[⟨0x56029814009a04a024011408404001e80ec07003601980c005c02b014009804802100f006c030016009804001a00b0040014004000, 0x35aa358c35ad359835a335a935a235a135a5359c359a359f3599359b358a358f3597358e35803591358b358d3582358735893583358514c6357b3583357b3581357c357a357f3576356a357935753577356e35713573356c3569356f3568001335633565355c1f5e355f13b813b5355b352628f03559351a2a2635571d9135553544354d3553354c1900354f35483546354b35453547354018f6354313161321353f1cde1cd9353b1cdf3539⟩, ⟨0x5602a014409e04c025011c08804101f80f007203601980c005a02a013809404401f00e006802e015009804001c00b0040014006000, 0x35bd3637362e361736313613362f3620361e3623361d361f361235c03615360e360c361113761373360b34f9360934f00f47360735f80d8c360335fc35ff360135fa0ba935fd35ee35e235f135e035e735ed35e6266035e935e2265435e535e135e335d035d935df35d8266835db35d435d235d735d135d335c835cd35cf35c935cb35c335c735c234fc35c535bb35c135bc35ba35bf181013e435b935b4181f35b7182535b53574357d35b1⟩, ⟨0x54029013c098049023011008203f01e00e406c03301880bc05a02a014009404602000f006c03201600a004401c00b0040018006000, 0x36a536a73688369536a33698369b369d369032a5369936943692369736913693368c368a368f3689368b3660366b3687367e367436813672367b367d36763674367936733675366f3671366e002d366a3668366d002e366936643662366736613663365c1411365f140d365d36583651365b364b3659365236503655364f3651364a34a4364d1a521a4936471a501a693643363e27e83641363c1a1005080505363b3636360d3639⟩]))))) ( (.branch 4 ( .leaf #[⟨0x5702a014409c04c024811808804101f80f007403701a00c405c02b014009004402000e8068030015009004001c00b0048018006000, 0x371e371b3721371a3719371d37143712371737113713370c3702370f37083703370b36e9370936fe2aa9370136ef36ff36ee36ec36f136e736ed36e836e636eb36e2365036e5361635b236e136d22db736df36d836db36dd130236d136d936d436d036be36d736d336d536d00053164012e036cf36ca36c536cd36c136cb36c40fd836c736c036be36c336bb36bf005036bb1676167336b91cc736b736a436af36b536ae36ad36b136a836a636ab⟩, ⟨0x5a02c01540a204f026012408c04402080f807603801b00cc06202e01580a004c023010007403601800b004c02000d0048018006000, 0x3795379737901c2c3793378c37881cc4378f378b378d1cb23785378737801cb83783377c1bd8377f377b377d375e37693779376e377137733764376d376f37683766376b376537673760375c3763375f3761374a3755375b375437533757374e374c3751374b374d374437473749374237393745373e373d3741373b373f373a37381c7037380033364e364b37373732360c3735372e350a3731216a2152214a372d36f62146372b213c04e737293710371f3725⟩, ⟨0x53028813c09804a023811408604001e80e807003501900c005c02b014009404602100f006c03201700a004401c00b0040014006000, 0x380f3811380e009f380a3808380d38073809380237fc38053801380337fd37ff37ea37f537fb37f437f137f737f037ef37f337eb37ed37c837cf37e937de37d937e337d537df37cd37d737d437d237cc34be17d437d337ce37cc37d1009437cd37c937cb361c37c137c337bc2f9d37bf300337bd37b837b6377a378137b53784378937af37961c2837ad37a8366237ab3794379f37a7379e379c37a10034379d37983796379b⟩, ⟨0x55029013c09804a023811008404001f00ec07203601980c405c02b014009404402000e8068030015009004001a00a0040014004000, 0x388220de38853876387b3881387a20e8387d387738792118285f3875386a3869386f386b386d3868009738653867385e386138633860009b385c361d385f37c037c5385937c73857385217bf3855383c384b3851384a3847384d3846384538493840383e3843383d383f3800380b383b383238313835382f3833382e381234bc382a3829382d3827382b3826380e17c23820381b38253819382138183816380638143810381738133815⟩]) ( (.branch 2 ( .leaf #[⟨0x5802b014c09e04d025011c08a04202000f407603801a80c805e02d015009c04602000e806c030016009804001c00b0048018006000, 0x38f3390738fe38f9390338f438f235c638f738d738f538d838d638f138ec38e938ef38c938ed38e434f338e738cf38e538ce38cc38d138c738cd38c838c638cb38c20e7238c50f6038b738c138b838b638bb38b538b738ac38af38b1386438ab38ad1c161c141c0438a938a22d8e38a5389e389a38a1389d389f38961e9138991e973897204e202a389538901473389314a138912860211b388f3883388d38823878388b12d212cf388901801fe33887⟩, ⟨0x5802a814c0a004e025811c08a04302000f807603901a80cc06202e01580a004c023010007403401700a004401c00b0040018006000, 0x397a3978397d397739793972396b3975395f3973396a3965396f3960395e395c3963395b395d395a000f395639543959001039553950394e3953394d394f394839443940394b39473949394339453562393d393f39383564393b39343566393739333935389c38a33931106c1069392d38a6106e392b18bc18b939292376237339271894186f3925390e391d3923391c3919391f39183917391b391239103915390f3911390a38e8390d390638ff3909⟩]) ( .leaf #[⟨0x5c02c815c0a80520278130092046021810007a03a01b80d006202e01580a004802100f807003401700a004401c00c0048018006000, 0x39f6244039f939f339f5283c283939f139e939ef085803cc39ed39e8089e39eb0542054b39e739e0357639e32a4e2a4b39df018c019739dd3560119839db0ebc0e6839d93932393939d7393c394139d139cc39b039cf39c8399a39cb39c4394e39c739ae39b939c33584357a14c839bd39b839b639bb001439b739b239b039b539af39b1399839a739ad39a639a339a939a239a139a5399c399a399f3999399b394c3957399739763989399139883981398d3980397f3983⟩, ⟨0x5702a014409c04c025011c08804202000f407403701a00c805e02b014009804802100f8070032016009804401c00b0040014006000, 0x3a80252a3a833a7c35d23a7f3a52308c3a7b3a593a793a783a583a4a3a6f3a773a6e3a683a713a4f3a6d3a653a693a5a3a653a673a5e3a613a633a5c3a5b3a5f3a4e3a4c3a513a4b3a4d3a4633603a492688266e260a3a453a3a22443a3d01063a333a2d3a313a2c3a2a3a2f3a293a2b3a24327e3a273a2039f43a233a1c2cea3a1f3a1839fe3a1b3a173a193a003a0f3a153a0e3a0b3a113a0a3a093a0d3a043a023a073a013a0339f239f739fd⟩, ⟨0x5e02d81600aa0520280134094047022010407c03a01a80c805e02c01500a004a02200f807403601800a804c02000d0050018006000, 0x3b0c3b0f3b113afc324b3b0d3b003b053b0b3b0432263b073b013b0332c63ae73afb32983aed3af53aec32ca3aef3ae83ae63aeb3a163a1d3ae5284628333ae13ad835ca26203adb262c26262622261e3ad73ac23ac93ad53ac8334e3acb3ac43aba3ac73ac33ac53abd3ac13abc33aa3abf3ab633743ab93aae3aa93ab33aa53aaf3aa33aa73aa43aa200163a9e3a953aa13a913a9f3a943a543a973a90006c3a933a8c30f63a8f30d630cc30a83a8b3a5830be3a893a84389e3a87⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x5b02c01540a6051027012c090045021810007a03b01c00d406603001680ac050024010807803601800a804801e00c0048018006000, 0x3a5633ca3b773b723b673b753b633b733b693b6f2f4a2db33b6d3b683b663b6b3b622f5a3b653b5e0adb3b610adf3b5f3b560eda3b593b4e092e3b553b4f3b533b4e092c3b511cda35393b4d3b48343235381ce03b473b423b413b453b3f3b433b3e1d9e0ee00f2e0ee80ee03b3d31902b853b3b3b363b343b393b3031a03b333b2c314c3b2f3b28316a3b2b1236120c3b272b0e2b0b3b252ae62ae33b233a3e22823b213af032263b193a283a373b153afc322c3b13⟩, ⟨0x5802b014c0a004d025812008c04302000f407403701a00c405e02b014809804602000e8068030016009004001a00a0040014004000, 0x3be53be736ba3bdd3bdf2280227d3bdb3bd621f13bd921f73bd73bd23bd03bd53bcf3bd13372336f3bcd3ba63bab3bcb3bb23bbb3bc93bc231103bc53bbe31363bc13bba2c3c3bbd3bb63bb43bb93bb33bb53bae3baa318e3bb13bad3baf3a643ba73ba93b963b9f3ba53b9e3aa63ba13a662b933b9d3b983a6a3b9b3b973b993b942a303b903b8c27f63b933b8f3b91096c09693b8b3b86095b3b8909633b873b78095a3b813b7c096e3b7f3b7a3b78⟩, ⟨0x5802a814c0a004e025812008c04302000f407603801a80c805e02d015009c04802100f807003201700a804801e00c0048018008000, 0x3c6e3c423c713c3f3c6f3c6a3c693c6d3c673c6b3c6631982c403c623c5b3c653c533c633c5a3c553c5f3c523c083b8e3c4e27e93c513b8d3c4f3c263c353c3b3c343c313c373c303c2f3c333c2a3c283c2d3c273c293c203c233c253c1e3c173c213c183c163c1d3c123c103c153c093c113c0c3c083c0f3c003b353c033b313c013b373bfd3b16291e3bfb3bdc3be33bf93bea3bf13bf73bf02e2c3bf33bec3be03bef3beb3bed3be63be22f483be9⟩, ⟨0x5a02b81500a204e026012408c04302000f407603801a80cc06002d015809c04802100f807403401700a004401c00b0048018004000, 0x3c0409603cef38b434f93ced360838b73ceb3ce233f33ce533f73ce33cbe3aed3cdf3cc63afe3cdb3cd624da3cd90f5a34f33cd53cbe32573cd13cca3cc63cc63b023cc93cc23cc03cc53cbf3cc13cac2a2f3cbd27e63c133cb53c0d3cad3c523c103b903ca9334a335d3ca73ca232513ca532573ca3287b3c9d09c809ad3c9b3c4e09993c993c7e3c8d3c933c8c3c893c8f3c883c873c8b3c823c803c853c7f3c813c743c7b3c7d3c763c723c3e3c793c753c77⟩]) ( (.branch 2 ( .leaf #[⟨0x5e02d81600ac054028813c09a04a024011408403f01e00e406c03401880b8056027012808003801900b004c01e00d0040018006000, 0x3d523d4a3d553d4e3d4c3d513d4b3d4d01403d4b3d463b4a3d493d453d473d413d430c4a0c473d3f3b7d3d3d101e10273d3b3d323d353d373d30385d3d3304d22aa93d2f3d2610203d293d223d1b3d253d173d233d1c3d1a3d1f3d16361e3d193d0c3d133d153d0e364420083d113d0d3d0f2014200e200a20023d0b25ea25c017643d0915ba15b73d073d0215bc3d053cf83cff3d013cfa3c9e0a803cfd3cf93cfb0a8a0a820a7e0a783cf728773cf52892288b3cf33554289a3cf1⟩, ⟨0x5a02b81500a204f026012408c04402080f807603801a80cc06002c014809804802100f8070032016009804401c00c0050018006000, 0x264026f3ddf3dd63dce3dd93dd23dcf3dd53dcb3dd33dca38aa3dcd0e300e2d3dc93dc40b693dc70da13dc53dbe3d463dc13c9c3dad3dbd287a3d533db93db00cbc3db33dac3d403daf3dab3dad3da60b683da90a700a6c0a423da53d743d9b3da13d9a3d7e3d9d3d983d783d943d8d3d973d893d953d8c3d703d8f3d883d7c3d8b3d823d853d873d7c3d813d833d7d3d7f3d783d763d7b3d753d773d72143027f627f0097a3d6d3d6809a43d6b3d443d4f3d67⟩]) ( .leaf #[⟨0x5a02c01540a6050026812408c04302000f407403801a80c805e02d015009c04802200f807003201600a004401c00b0040014004000, 0x3e653e673e6038703e633e5f3e612a2c27f93e5d3e58233e3e5b270226ac26a43e573e3c3e473e553e4a3e4d3e4f2c563e453e4b3e463e443e493e403e3e3e433e3d3e3f3e2a3e353e3b3e343e333e373e2e3e2c3e313e2b3e2d3e2435623e273e20213e3e233e1c1c9b3e1f1c9f3e1d3e003e133e1b3e123e0b3e173e0a3e093e0d3e043e023e073e013e03022e023b3dff023e02433df93df43de23df73df002663df33dec02503def3de43de23de73de13de3⟩, ⟨0x5902a814c0a204e025812008a04201f80f007203701a00c405c02b014009804602100f0068030016009804401c00c0048018006000, 0x3ee43ee23ee03ee73edf3ee13ede0065332e32ee3edd332033003edb3ed622523ed93ec23ecb3ed53a363a323ed13a423a2a3ecf3eca221c3ecd3ec63ec43ec93ec33ec53e763e813ec13ea03eb33ebb3eb23eab3eb73eaa3ea93ead3ea43ea23ea73ea13ea33e9c3e953e9f3e893e9d3e943e8f3e993e8a3e883e863e8d3e853e873e84008f3e803e7e3e8300903e7f3e7a3e783e7d3e773e793e7237ec3e753e643e6b3e713e6a37d63e6d3e663e5e3e69⟩, ⟨0x5902b01500a204e026012408c04302000f807603901b00c806002e01580a004a02200f806c030016009804001a00a0040014006000, 0x3f843f713f873e253f853f703f683f733f6c39343f6f3f6a3f683f4c3f5f3f673f5e3f573f633f563f553f593f503f4e3f533f4d3f4f3f483f413f4b3f353f493f403f3b3f453f363f343f323f393f313f333f3000713f2c3e2c3f2f3f283e3e3f2b32c632513f273f20359a3f233f1c37ca3f1f386c385637c43f1b3f1613f13f1913f53f173efa3f0d3f153f0c3f053f113f043f033f073efe3efc3f013efb3efd3ef63eef3ef93ee33ef73eee3ee93ef3⟩]))))) ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x57029814409e04d025812008a04201f80f007403701a80c805c02c01500a004c023010007403401800a804c02000c0048018006000, 0x4012400e400a401540114013400d400f4009400b4008013f295e295b40073fe83ffb40033ffa3ff33fff3ff23ff13ff53fec3fea3fef3fe93feb3fe43fdd3fe73fd13fe53fdc3fd73fe13fd23fd03fce3fd53fcd3fcf3fcc01053fc93fcb3fc801033fac3fbf3fc73fbe3fb73fc33fb63fb53fb93fb03fae3fb33fad3faf3fa83fa13fab3f953fa93fa03f9b3fa53f963f9401a03f993daa3d533f933f8c3f8f3f913f8a3f753f8d3f783f743f89⟩, ⟨0x5802b014c0a004d025012008a04302000f407403701a80c805e02c015009c04602100f006c030015009804001c00b0040018006000, 0x17e340b5409840ab40b340aa40a340af40a240a140a5409c409a409f4099409b4092408d4097408b4093408a40884010407e407440814072407b407d407640744079407340754060406b4071406a4069406d406440624067406140634056405d405f40584054400c405b405740594038404b4053404a4043404f404240414045403c403a403f4039403b4032402d4037402b4033402a402840084022401b402740174023401a4019401d401640143d4a⟩]) ( .leaf #[⟨0x5a02b81500a204e025812008c04302000f407403801a80cc06002c015009c04802100f006c03201700a004801e00c0050018006000, 0x4144413e414741400612414341284137413d413641334139413241314135412c412a412f4129412b4110411f4125411e411b4121411a4119411d41144112411741114113410c4105410f40fb410d410440ff410940fa40f23fca40fd40f540f940f4293440f740d640e940f140e840e140ed40e040df40e340da40d840dd40d740d93e7b40d540d030bf40d330c340d140043f7040cf40ca0f6140cd40bf40cb40be35c634fe40c140b838b640bd40b417e140b7⟩, ⟨0x5802b014c0a004d025812408e04502180f407403701a00c405e02c015009c04602000f006c030015009004001a00a0040014004000, 0x41b41c0f1c161c0e41b541b0023041b317a0179d41af41ac2b7141ac307541ac32e141ac3a7941ac248d3a7832e030742b70248c41ad419041a341ab41a2419b41a7419a4199419d41944192419741914193418c4185418f4179418d4184417f4189417a41783670417d417416414177164741754164415441734162416941714168064e416b4164415c416741634165415e4144416141584112415b415641264150412a4153414c4145414f4141414d⟩, ⟨0x270130094048023010808003e01e00e807003601a00c806002c01500a004c024011007803801600a004001c00c005002000c004000, 0x20a02060202020001f801f701f601f401f001ec01ea01e201de01dc01da01d001cf01ce01cc01c801c401c201ba01b701b601b401af01b301b201ae01ad01ac01aa01a801980192018a41b41c17⟩]))) ( (.branch 2 ( .leaf #[⟨0x22010808003e01e00e807003601a00c806002e01600a804c024011008003c01c00d006002c014009004001c00c005002000c002000, 0x2bc02ae02a202a4029a0296028e02860282027a02780270026a026202610260025e025a02560254024c0240023c0234022a02280226021e021a02180216020e020d020c⟩, ⟨0x2b014809c04c023011008003e01e00e807003401900c005c02c0140098048022010007803801a00c00580240100050020008002000, 0x33e033d033c033b033a0338033303370336033203310330032e032a0322031a03190318031603120310030603050304030202fe02fc02ec02e802e402e202d802ce02cb02ca02c802c302c702c602c202c102c002be⟩]) ( .leaf #[⟨0x2e01680b005602a01480a004e023010807c03c01d00d806403001700b0054028012008804001e00e00600240100060018008002000, 0x3b603b203b003a603a203a0039e00060369036f038d03960395039403810392038e03860383038203810380037e037803740372036203610360035e035a03580350034f034e034b034d034c034a0349034803430347034603400344⟩, ⟨0x2d01500a004e022010007c03c01d00e006c03401900c005802a012008803c01c00d006002c014009004001c00c005002000c004000, 0x3ce03d90427042604250424042203af03e9040504110420041f041e041c041804140412040a0408040603fe03fb03fa03f803f303f703f603f203f103f003ee03e403ec03e203e003da03d403ca03c803c603be03bc03aa03b5⟩, ⟨0x26012809004402100e807003601a00c805c02c01500a004c024011008003c01c00d006002c014009004001c00a0040018008002000, 0x4ba04b604b204b104b004ae0443045104ad04aa04a2049c049a0494049304920490048c04880486047c047804760474046c046a0462045e045c044c0444043c043b043a043804340430042e⟩]))))))))))))) ( (.branch 73 ( (.branch 36 ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x3a01c80e005e02d01600ac054029014009c04c025012008804001f00d806403001700a804c02401000700300100060020008002000, 0x52a05280006000503c504690473047b0485051505250520051f051e051c05180516050e050c05060502050004f404f304f204d704f004ec0451045704e304ea04cd04e804e404dc04d904d804d704d604d404d104d004cf04ce04cd04cc04b304b504cb04ca04c304c804c504c404c304c204c0⟩, ⟨0x3201880c005e02e01600a804e025011808804202000f807803001700b0054028011008003801a00c00580280100060028010004000, 0x5b005aa05a805a6059e059d059c0597058602f5056d059a059905980597059605940590058e058c00060367057d058305850587057e0576056e0566055e0559055d055c0558055705560554054c0546053c053b053a052b053805340530052d052c052b⟩, ⟨0x28013809804a022010807c03801b00d006403001700b0054028013009004402000f0070034014009003801800a0040018008002000, 0x656064c064a0642063f06410640063e063b063a063506390638063206360630062c06220624061c060c0602060005f805f605f405e805e005db05df05de05da05d905d805d605d405c205c005be05b6⟩, ⟨0x3101780b805a02c01580a804e025011808404001f00f007403001700a004802200e006802c014009004001c00c0040018008002000, 0x6cc06cb06ca06c806c206bc06b6069c06a506b306b206ab06b006ad06ac06ab06aa06a806a606a2000606710679067f0699069a067a068506970696069506940692068d06910690068c068b068a0688068606800676066c066b066a066806640660⟩]) ( (.branch 2 ( .leaf #[⟨0x29013809804a024011808403e01e00d806803001700b0054028012008804001e00e0068030016009004001c00c005002000c004000, 0x74207410740073e073a07380730072f072e072d072c072a0725072907280724072307220720071c0714070a0709070807060702070006f806f606f406ec06eb06ea06e806e406e206da06d806d206d006cd⟩, ⟨0x3b01d00e407002e01600a40500260128090044021010007c03c01c00d006403001700a804c024011008003c01c00d006002c002000, 0x7c407bc07b0000605ef05fd0645074507490765077b078d079f07ac07ab07aa07a707a907a807a6063b07a407a007980797079607940790078e078607850784078307820780077c077407730772072d076e0770076a0766075a07560750074e000605ef062b064506c7070d07130737074507490746⟩]) ( .leaf #[⟨0x2f01680ac0540280130094046021010007c03c01d00e006c02e01500980480220100068030014009004001c00c0040018008002000, 0x830082f082e0823082c082808250824082308220820081f081e081d081c081a08160810080e080c07b4067f07c307d9080a08090808080708060804080007fc07f707fb07fa07f607f507f407f207e007da07d207d107d007ce07ca07c6⟩, ⟨0x3f01e80e406e03601a80cc064030017009c04c025012008c04402100b804c024011008003c01c00d00600280120080018008002000, 0x894089308920889088b08910890088f088e088c0888088708860884038308820825000605ef07490869086d0873087b0880087e087c08740870086e0006000305ef0749085b085f086308650869086d0580036705750587086a08660860085c08560850084a084806ad084608420006067f07b907c3083d083a08380834⟩, ⟨0x2d014009c04a024011808804202000f807803a01b00d005c02c0140098048022010007803801a00c00500240100070028010004000, 0x90c08cf08eb08f70909090a090609050904090208fe08fa08f808f008ee08ec08e408e108e008de08d908dd08dc08d808d708d608d408ca08d208c808c608c008ba08a608b108b208ae08ac08a4081d08a2089a089708960895⟩]))))) ( (.branch 4 ( .leaf #[⟨0x3501a00c405e02c01500a404e025012008c044021010007c03c01d00d806803201800b805802a014009804802200f003000c002000, 0x98e098609830985098409730982097d09810980097f097c097809750974097309720970096a0964095e09520950094e0946094509440942093e093a0938093009280924092209160912089305ec0005074908630869086d08a108ab08b908b408bf09110910090f090e⟩, ⟨0x3501980c405e02d014809c04c025011808404001f00e807003601a00c806002e0150098048022010007803801a00c0018008002000, 0xa0a0a010a080a050a040a030a020a010a000963098509ff09fe097d09fc09fa09f209ef09ee09c109ec09ea09e609e509e409e209de09da09d809ce09c609c309c209c109c009bc09b409ae09a809a0099a00060005092f0937094d0957095d098d0995099609920990⟩, ⟨0x3201880c005e02e01680b00540290130094046022010808003e01a00c005802a014009804802200f006803001600a002800c002000, 0xa8e0a8c0a7a0a740a720a6a0a660a630a620a600a5b0a5f0a5e0a5a0a590a580a560a540a4a0006095709a709bb09f50a400a110a3e0a3d0a3c0a3a0a360a320a300a280a250a240a0f0a220a1c0a180006091d0957095d0a0d0a140a110a100a0f0a0e⟩, ⟨0x3601a00cc064027012008c04201e00e807003601a00c805c02a014009804802000f007003401800b0050024010007003000c004000, 0xafc08070afa0af60006036505ef07490869091509550a690ab30abb0acd0af00aed0aef0aee0aec0aeb0aea0ae50ae90ae80ae20ae60ae00adc0ad80ad70ad60ad50ad40ad20ace0ac60ac50ac40ac20abe0abc0ab40aae0ab00aaa0aa40aa60a960a910a950a940a900a8f⟩]) ( (.branch 2 ( .leaf #[⟨0x2e01680b005602a01480a004e026011008404001f00d806802e01500a004402000e006803001600a004001c00c005002000c004000, 0xb880b800b7a0b740b6c0b640b620b520af20b430b470b4b0b4c0b480b440b000b0b0b210b3f0b400b1c0b270b390b380b370b360b340b2f0b330b320b2e0b2d0b2c0b2a0b280b220b1a0b190b180b160b120b0e0b0c0b040afe0afd⟩, ⟨0x2c01580a80520280138094048023011008404001f00f007403801b00c805c026011008003801a00c0058028012007002800c002000, 0xc2c0c2a0c260c1e0c160c0e0c0d0c0c0c0a0c060c020c000bf80bf00be80be40be20bce0bcb0bcc0bcb0bca0bc10bc50bc90bc80bc70bc60bc00bbf0bbe0bba0bb20bae0ba60b9e0b9d0b9c0b950b9a0b970b960b950b94⟩]) ( .leaf #[⟨0x3001780ac0500260128090046022010807c03a01c00d006002e01600a8050026012008003801800a004802000e006002800c002000, 0xc9e00060bf30c350c970b820b7f0c9b0c9a0b950c980c940c900c8e0c8c0c860c850c840c790c820c7e0c7b0c7a0c790c780c760c6e0c680c660c640c5a0c590c580c510c560c530c520c510c500c4e0c480c420c3c0c320c310c300c2f0c2e⟩, ⟨0x43021010407c03d01d80e807203801a00cc06402e01680ac054029014009c04c025012008c04402100e806c02200f006802c002000, 0xd220d1e0d1a0d150d190d180d140d130d120d100d020cd00b470cf50cf90cfa0cf60ccc0b210cdb0cf10cf20cea0ce90ce80ce60ce20cde0cdc0cd40cc80cc40cbe0cb8062606350639063d063c062f000605fd07370745077b079f0b8f0b910c1d0c3b0cb606430cb20caf0cae0c2f0006062b06c7070d0745078d0b8f0b910c3b0ca30ca4⟩, ⟨0x3901c00d006603201880b805802b015009004201f00d006403001500a0048022010007803801a00c005002000e0060020008002000, 0xd8600060d6f0d730d7b0d840d820d800c360c410d790d780c510d760d7400060c150c5f0c930d650d6d0c100c810d710d700c7900060c750c930d650d6d0d6a0d680d600d5b0d5f0d5e0d5a0d590d580d560d440d3e0d3c0d3a0d320d310d300d2f0d2e0d2c0d2a0d290d280d270d260d24⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x260128090046022010807c03c01d00e006c03401900c005c02c01500a004c024011007803401800a004802000c0040018008002000, 0xdf80df60df20df00de80de40de30de20de00ddc0dd80dd60dce0dca0dc60dc20dc00dbc0db40dac0da80da60da50da40d9d0da20d9e0d9d0d9c0d9a0d980d970d960d950d940d920d8e0d88⟩, ⟨0x290140098048023010807c03c01d00e006c03401900c005802a0140098048022010007803401800b0050024010006002000c004000, 0xe900e8a0e890e880e870e860e840e830e820e810e800e7e0e700e6e0e620e5a0e560e480e470e460e440e400e3e0e360e2e0e2a0e200e1f0e1e0e1c0e180e140e120e0a0e090e080d950e060e020dfa0df9⟩, ⟨0x2c01580a40500270130094048023011008404001f00f007003601800b8054028013009003c01c00c0058028012007002000c002000, 0xf1a0f120f110f100f0e0f0a0f060f040efc0ef80ef00eec0eea0ede0ed60ed30ed20ed00ecb0ecf0ece0eca0ec90ec80ec60ec40eba0eb50eb90eb80eb40eb30eb20eb00ea20e9c0e9b0e9a0e970e990e980e960aeb0e94⟩, ⟨0x3601a80d006603201880c005e02e01680b0056029013809404601f00e806c03401900c005c02a013009001c00c0050018008002000, 0xf920f900f8c0f880f860f7c0f780f720f6e0f6c0f640f5e0f550f5c0f590f580f570f560f550f540f4f0f510f530f520e810f4e0f4d0f4c0f480f420f3c0f340f330f320f310f30000608cf08eb098d09950a2f0ab30ee50efb0f270f2b0f2c0f280f240f230f220f200f1c⟩]) ( (.branch 2 ( .leaf #[⟨0x3201880c005e02e01680ac054029014009c04a023010808003801a00c8050024011008003c01c00c0050024010007002800c004000, 0x1004100210000ff60ff20fea0fe90fe80fe60fe20fe00fd40e870fd20fd10fd00f310fce0fca0e7b0ee50f3b0fc80f330fc400060e7b0f630f670fa90fc20fc10fc00fbe0fba0fb80fb00fad0fac0f970faa0fa40fa00f9c0f990f980f970f960f940f93⟩, ⟨0x3401980c806202e015009c04a023010808003e01d00d806803201800b805802a014009804801c00b004802000e0050018008002000, 0x108c108a1082103e105b10650006103f105710671052104f10791078105d107610731072105d1070106a1062105f105e105d105c10581050104a1048104610361034103200060ffb10151023101e1027102b102a101710281024101c10191018101710161012100a⟩]) ( .leaf #[⟨0x28013809804a024011808804202000f807403601900b805802a014009804802000f007003401600a004802000c0040018008002000, 0x11141110110c110a110210fa10f610ee10e610e210e110e010d910de10db10da10d910d810d610d210ce10c610bc10bb10ba10b810b410ae10ad10ac10aa10a610a0109f109e109d109c109a1096108e⟩, ⟨0x23011008404001f00f007403601a00c806002e01600a8050026012008003c01c00d006002c014009004001c00c005002000c002000, 0x119e119c11961190118e118c1180117f117e117c117811741172116a116611641162115a1159115811561152114e114c1144113c113811301128112411221120111811171116⟩, ⟨0x25011808804202000f807803a01c00d806803201800b805802a014009804802200f007003401800b004802000e0060028010004000, 0x121e121d121c121a1218120a1208120611fe11fa11f611f211ee11ec11ea11e011dc11da11d811d011cc11cb11ca11c811c411c011ba11b911b811b611b211ae11ac11a411a111a0119f⟩]))))) ( (.branch 4 ( .leaf #[⟨0x3901b80d806803301880b805a02b014009c04c025011008403e01e00e8070036011007803401800b00500240100070028010002000, 0x1286124d12841280127f127e127c127b127a127712791278127612751274126f12731272126c1270126a1265126912681264126312621260125a1256105a10111031108510c510e512111233123712451250124f124e124d124c124a1246123c123a1234122a122712261224121f12231222⟩, ⟨0x2e01680b0056029014009c04c025011808404001f00f007003401900c005c02a013008803c01c00d006002c0140090040018008000, 0x12fe12fc12fa12f212f112f012ee12ea12e812dc12d912d8033b12d612d012cc12ca12c912c8109d12c612c212c012ba12b912b812b112b612b312b212b112b012ac12ae12a812a212a41290128c1289128a12891288128112831287⟩, ⟨0x49023811008404001f80f807803a01c80e006e03601a80d006002f01700b40540280130090046022010808003e01e00e0068032000, 0x1386136d1368134d137f138413811380136b137c13741370136d136c136b136a1366135e1358135613540006131b1333133f13481346134413161321133d133c1335133a1337133613351334133013281322131c1314130c13091308130713060006028d02fb03650b8b0b8f0b910dab0e350e3d0e4b0e4d0e4f0e510e550fd70fd90fdf103912df12e112e712f913011303⟩, ⟨0x43021010007e03e01e80f0074038012008c04402100e807003001600a004c024010007003401800b005002400e0060028010006000, 0x1408140414031402140013f613f213ec13e913e8130713e6028d02fb03650b8b0b8f0b910dab0e3d0e4b0e4f0e510e550fd70fdf103912df12e113dd13e513e213e013de000613a113a313d513d60006139f13a513ab13d213d113d013bf13ce13ca13c413c113c013bf13be13bc13b613b213b0139c0fd5139613921390138e134c1369137b⟩]) ( (.branch 2 ( .leaf #[⟨0x2b014809c04c025012008c044021010007c03c01d00e006c03401900b8054028010007003001600a004802000e0060028010006000, 0x149c14991498149714961494148e1488148614841476146e146c1466145e145814541450144a14471446143d14440006141f142b14311440143f143e143d143c143a1436143214261424141a1414140e140a14051409⟩, ⟨0x270130094048023011008404001f00e807003601a00c806002c01500a004c024011008003c01c00c00580280120080030010006000, 0x15161512150e150c1504150014fe14fc14f414f314f214f014ec14e814e614de14dd14dc14da14d614d214d014c414c214c014b814b714b614b414b014ae14a614a514a4149714a2149e147b147f⟩]) ( .leaf #[⟨0x3801b80d806803201880c005e02e01680b005602a01480a004c024011008003801a00c805c02c01500a004c024011002000c002000, 0x159c15941590158d158c158b158a15881582157e157c157a1572156c15661562155e155b155a1559155815531554155315521549154d15511550154f154e1548154715461544153e1538153015280006039d03a504ad0de714bf14c914cf14e514fb1503150b151d151e151a15191518⟩, ⟨0x46022811008604101f80f807a03801b00d0066029013809804a024011808804001e00e807003600e005002000c0040018008002000, 0x15fe15fa15f615f215ef15ee15df15ec15e8000603b915211525153715e415e115e015df15de15dc0003039d03a503a903c5042d1525153715cb15da15d915d815d615d215ce15cc15c415c115c0154f15be15b815b20006000503c5044b0473047b04850515152515611565156b159b052415251561158715ae04d915ac158b15aa15a915a815a615a2159e⟩, ⟨0x3501a00cc06403101700b4056028013809804a024011808403e01e00e807003601a00b8054028013009004402000f0068030002000, 0x166e166c166a16601658165516571656165416531652164d16511650164a164e16481644163e163d163c163b163a16361634162e1628130e0e29162116201307161e161a16161614160e160a160615e116040006039d03a503b903e9040505330de7150b151d16031600⟩]))))))))) ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x2c01580a8052028013809804a024011808804001e00e806803001600a8050026012008804001e00d005802800e0050018008002000, 0x16fc16fa16f416ee16ec16ea16da16d216d016ce16c616c516c416b716c216be169d16a116bc16b916b816b716b616b416b016aa16a816a616981690168f168e1681168c16881665167f16861683168216811680167c1674⟩, ⟨0x5502a014c08403001600a80500270130090044021010007c03c01d00e006803001600a004c02401100800300140080038010004000, 0x1766176a172a0de71413145d147914ad1523160d161916271643167b169b16cd16d9170f174714680de71413145d147914ad1523160d161916271643167b169b16cd16d9170f171f174700061733174b1759176217611760174d175e175a1752174f174e174d174c17481742173c173a1738172e172d172c1723172817251724172317221720171a1716000616dd16e31705170c170b170a16fd1708170416df16e5170216ff16fe16fd⟩, ⟨0x3201880c005e02e01680b0050027013009404602100f807803a01c00d806803001500a004802200f00680300140070030010002000, 0x17dc17de17d817d017d217ca0006179117a917b317bc17ba17b817b017af17ae17ab17ac17ab17aa17a6179e17981792178a178917881785178717861784176f1782177e177d177c177b177a1778177517741771177317721770176f176e1769176d176c⟩, ⟨0x2d01580a4050027013009404802000f807803a01c00d806403001700a804c024011008003c01c00d0050024010007002000c002000, 0x1862185f185e185d185c185a1856184e18460006107b1085109518421840183e1834182c1828181718261822181c18191818181718161814180e1808180618041610161917f917f617f417f217ea17e717e917e817e6165317e4⟩]) ( (.branch 2 ( .leaf #[⟨0x3001700b405802b01500a004c025011008003e01e00e807003601a00c805c02c012008003801a00c00580280120080038014006000, 0x18e618e518e418e218dc18d618ce18cd18cc18c318ca18c618a718ab18c418c318c218c018ba18b418b218b018a2189a188f18980006187318811887189218911890188f188e188c1888187c187a18781870186818671866185d186418371853⟩, ⟨0x2e01580a404e0260128090046022010808003e01e00e807003401700b0050026012008003801a00c00580280120070028010002000, 0x1968194d195f19661963196219611960195c1956195219501946193e19361930192e192c1920191d191c1919191b191a1918034919161910190c190b190a190919081906190418fe18f818f218f118f018ef18ee18ec18e718eb18ea⟩]) ( .leaf #[⟨0x3101800bc05c02d01600a8050027011808003c01d00e006c03401900a8050026012008003801800a004802000e006002800c002000, 0x19e419e019d819d219d019c819c519c419b719c2000619a719b319bd0288028519b919b819b719b619b419b019ae19ac00061977198d199b19a419a219a0199819971996198f199419911990198f198e198a1984197e19781970196f196e1961196c⟩, ⟨0x3a01c80e006e03601a80d006403101800bc05c02c01500a4050026012008c04402000f007402601000600280100060028010004000, 0x1a5c1a581a4e1a4a1a421a3e1a3c1a3b1a3a1a381a341a321a2a1a291a28163b1a261a221a1a1a191a181a051a161a121a0a1a071a061a051a041a02028d06c7070d0745138d195b198919bb19df19cc19e319f5000619cd19df19f91a0019e719fe19fb19fa19e519f619ee19ea19e719e619e5⟩, ⟨0x270130094048023011008403e01e00e807003601a00c805c028013009004402000f007003401800a004802000e006002800c002000, 0x1aee1ae61ae21ae01ade1ad61ad01acf1ace1aca1ac21abe1ab61ab01aaa1a611aa81a971a9b1aa61aa41aa21aa01a921a8a1a881a861a7e1a7d1a7c1a7a1a761a741a6c1a661a631a621a611a60⟩]))))) ( (.branch 4 ( .leaf #[⟨0x2e01680b005602a01480a004e025012008c044021010007803a01c00d8068030016006802c014009004001c00c0040018008002000, 0x1b621b601b5c1b5a1b521b4e1b481b441b431b421b401b3c1b3a1b321b2c1b2b1b2a1b281b241b221b181b151b141acf000603e904051acd1ad51add1ae51aed1b031b121b111b101b0e1b0a1b061b041afc1afb1afa1af81af41af0⟩, ⟨0x2f012008c04402100f807803a01c00d806803201800b8054028013009004402000f0070034016009004001c00c005002000c004000, 0x6161d16651813182b1bc31bc51bcb1bd91bdf1be71be41be21be01bd61bd51bd41bd21bce1bcc1bc01bbe1bb81bb41bb01baf1bae1bac1ba81ba41ba21b9a1b981b961b8e1b8b1b8a1b891b881b861b821b7c1b7a1b781b6e1b641b63⟩, ⟨0x26012808c044021010007c03c01c00d806803201800b8054028013009004402000f007003401800b005001c00c0040018008002000, 0x1c801c7c1c7b1c7a1c781c6a1c621c5c1c541c531c521c501c4c1c481c461c3e1c3d1c3c1c3a1c361c321c301c241c1c1c1e1c121c081c0a1c021bfd1c011c001bfc1bfb1bfa1bf81bf41bec⟩, ⟨0x2b01500a40500270130094048023011008404001f00f007403401900b8050026012008804001e00d00580280100060028010006000, 0x1d021cfa1cf61cf01ce81cdc1cd61cd21cce1ccc1cca1cc21cbe1cbc1cb01cad1caf1cae1cac1cab1caa1ca51ca91ca81ca21ca61ca01c9c1c981c971c961c951c941c901c8f1c8e1c8d1c8c1c8a1c861c821c7d1c81⟩]) ( (.branch 2 ( .leaf #[⟨0x3d01e00ec07403901b80d406803201800b805a022010808003e01e008803c01c00d006002c014008003801800a0040018008002000, 0x1d6c1d681d661d5e1d5a1d591d581d571d561d540a251d521d4f1d4e1d4d1d4c000609090b5d1ab51d011d091d3b1d3d1d411d451d491d4a1d461d421d3e00060937094d098d09950a171a851cf91d011d091d111d271d391d361d351d341d321d2e1d2a1d281d201d1f1d1e1d1c1d181d141d121d0a1d061d04⟩, ⟨0x3801b80d806a03401980c806203000e807003601900c005c02c015009004401e00e0068030016009004001c00c0050020008002000, 0x1e0a1e061e021dfc1df61df21dea1de41dda01c101d901e102b3039d03a5094d09bb0f7b0f9f150b151d16031a5b1dd11dd51dd71dd91dd21dce1dca109f1dc61dc21dba1db61db21dad1db11db01dac1dab1daa1da81d981d921d8a1d891d881d861d821d7e1d7c1d741d731d721d70⟩]) ( .leaf #[⟨0x2c01500a4050027013009404001f00f007403601a00c806002e01600a8050024010007803401600a004001c00c005002000c002000, 0x1e9c1e9b1e9a1e981e941e8e1e8a00061e4f1e7b1e7f1e831e7c1e741e6e1e661e651e641e621e5e1e5c1e541e521e481e3c1e391e381e271e341e2c1e291e281e271e261e241e231e221e201e1c1e181e161e0e1e0d1e0c⟩, ⟨0x2f01700b405802a0138098048023011008404001e00e006c03401900c005c02c014009003801800a004001c00c0050020008002000, 0x1f1a1f141f0e1f0a1e391f081f031f071f061f021f011f001efe1ef21eee1ee81ee51ee41ee31ee21ee01eda1ed61ed41ed21ec81ec51ec61ec51ec41ea91ead1ec31ec21ebb1ec01ebd1ebc1ebb1eba1eb81eb41eae1ea81ea71ea61ea4⟩, ⟨0x3501980b00540280138094046022010807c03c01d00e006c03201800b805802a014009804801a00b004802000e006002800c002000, 0x1f8012b31e8410ed120512bd1e831e931f4b1f7e1f7d1f7c1f7b1f7a1f781f771f761e9b1f741f701f6c1f6b1f6a1f681f641f621f5a1f591f581f561f521f4e1f4c1f441f4000061e831ea31ecb1edf1f3c1f391f381f371f361f301f341f2c1f281f251f241f231f22⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x4b0250124090047023011408804202000fc07c03d01e00bc05a02a014809c04c010007803801800b004001c00a0040018008002000, 0x1ffc1ffa1ff61ff21ff01fe81fe41fe01fdd1fdc1fdb1fda1fd81fd01fc6000601c101d901e1039d03a5094d0f7b11f9150b151d1fc11fc31fbe1fbd1fbc1fb91fbb1fba1fb812751fb61fb201c101d901e102b3039d03a5094d09bb0f7b0f9f10bf123312c5150b151d16031dc51dd11dd51e811f851fb01fae1fa81fa51fa41fa21f9d1fa11fa01f9c1f9b1f9a1f981f961f8a1f88⟩, ⟨0x3101800b80580280128090044021010007c03a01c00d806402e01600a804c022010007803801a00c005802000e005002000c004000, 0x208c207e207b207a207920780b372065206920762071207520742070206f206e206c206a20640b272062205c205620532052203f2050204c204420412040203f203e203c20382034202420262020201b201f201e201a20192018201620061ffe1ffd⟩, ⟨0x3601a80d006603101800a80500260128090046021010007c03c01d00e006c02000f007003401800b0050024010007002000c002000, 0x2108210220fa20f420f120f001841fef2005202b20c920df20ee20ed20ec20eb20ea20e620e020d820d720d620d420d020cc20ca20c200060473047b048509090b5d15651d3d1d4120bd20bf20c020b820b620b420ac20a620a2209e209a20962091209520942090208f208e⟩, ⟨0x3c01d80e807203801b80d803e01d00e006403001600a8050026012008804001e00e006803001600a004802000e0050018008002000, 0x21842182217a21782172216e0006039d03a5044b0473047b048514cf14e514fb1503150b151d156516031ab51d011d091d111d271d3921512169216421612160215e2159215d215c2158215721562154214e214821442140213821362134212a212421222120211e2116211221112110210f210e210c210a⟩]) ( (.branch 2 ( .leaf #[⟨0x52028814009e04e026813009604a024010408003e01e00e807003701b00d406602f01700b405602a01480480220050018008002000, 0x21e821e421e221da21d821d621cc21c421c210190006044b0ffb103120b320bb213b21c021be21bd21bc21b521ba21b721b621b521b421b221ae21a82053211c1fef204b21a721a4219e219c219b219a2198000601e901ff0215021d0225039d03a5042d04430473047b08cf08eb0dcd0dd5159316091b692175218121932195219604ac039d03a503c5042d111f1127123312bd16091ba11bbd2190218f218e218c2188⟩, ⟨0x3001780ac0520270130094046021010007c03c01d00e006803001700b0054028013008803801a00b004001c00c005002000c002000, 0x22660006222f22352255225e225d225c2249225a2256224e224b224a2249224822462240223c223a2228222722262225222422222220221a2214220c220b220a22072209220822062205220421ff2203220221fc220021f821f421ec21eb21ea⟩]) ( .leaf #[⟨0x2b01500a404e026012809004602100f807803601900c005c02c01500a004c02400e0068030016009003801800a0040018008002000, 0x22f422ea22e222e122e022de22da22d822d022cf22ce22c522cc22c822a922ad22c622c522c422c222bc22b622b422b222a40006227122892293229c229a22982290228d228c228b228a2286227e22782272226a2268⟩, ⟨0x3e01e80f007603a01c80d806a03301900c406002f00f007003401700a804c024011008003c01a00b005001c00a0040018008002000, 0x237a237423702368235c2358235323572356235223512350234e23462340233609550a690ab319bb19f521e121f32213222b222d2265226d228522a722d72305233a23392338232f233621cf232d233423312330232f232e232a2322231e231623152314230b2312230e22ef2309230c230b230a230622fe22f822f6⟩, ⟨0x6c03581a80d205e02e81700b605a02c015c0ac05502a014c06803201800b0054029013809804a0230068024010007002800c002000, 0x23e823e623e20006103110e51233147f16dd1a951dc11e811f8523dd23da23d823d223cc23c6191d23c423bc23ba23b623ae000601e901ff0215021d0225028d02fb0365039d03a5042d04430b8b0b8f0b910dab0e510e550fd70fdf1039152f15cb16091a411a6b1aad1b692193219523ac23a923aa23a923a81549235b23a723a623a523a423a215ad239e2396239016ff0006028d02fb03650b8b0b8f0b910dab0e4f0e510e550fd70fdf103911f9160d18d51a211a31235f238d238f0006236123672385238a2388238223812380237d237e237d237c⟩]))))) ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x5d02d81640b005702b01540a805302901440a004f02000f807a03c01d80e807203801b80a003a01c00a00280120080030010004000, 0x245c245b245a24592458245624502452244c244424462432242e242c242002fb03650b8b0b8f0b910dab0e5511f9238d238f23fd24052411241f241c241b241a241824142412240a240623fe00060215021d14c714fb150315f515f915fd1b4d1b511b591b671b6b1b6d0006085f08650bd914c714fb150315f515f915fd23f723fa0bda0b5d0b730b8b0b8f0b910b930bb90006000508ab08b90bb90bf50bf70def0e010e1123f823f423f023ef23ee23e923ec23eb23ea23e9⟩, ⟨0x500270130092048023010c08404102000fc07c03a01b80d406603101800bc05a02b01500a405002701300940200040018008002000, 0x24c6245924c424c124c024bd24bf24be24bc24bb24ba24b524b924b824b224b624b024ac000624752479249f248a248724a924a8249124a624a324a2249124a0249a24962493249224912490248e248824822480247e000602fb036509090937098d09950a0d0b5d0b8b0b8f0b910dab0e551cf91d3d1d4123fd245f24632465000602fb03650b8b0b8f0b910dab0e5523fd245f2469246d246e246a24662460⟩]) ( .leaf #[⟨0x3001700b005602a01480a004e025011808803e01d00e006c03401900c005c02c013008803c01c00c004802000c005002000c004000, 0x254c25492548254725462542253a2534252e252625252524251b2522251e24fd2503251c251b251a25182512250c250a250824f82384235f24f124ee24ed24ec24eb24ea24e824e724e624e324e524e424e224bb24e024dc24d624d024c824c7⟩, ⟨0x3501980c406002f01680ac050026011808404001f00f007003401900c005c02c015009804001e00d006002c00e0060028010004000, 0x25be25bd25bc18ef25ba25b625ae25ad25ac19b72596258d25a325aa2591258c259725a725a8258f25a4259c2598259425912590258f258e258a2582257e257c2570256f256e256b256d256c256a2205256825640006252d25452553255c255a25582550254f254e2547⟩, ⟨0x5602a81500a6050027813409804b025012409004702300d004202000f807803a01c00d806803201700b004c024010007803801a000, 0x26462644263c2638263326372636263226312630262e2618261a26122606260815b0044b0473047b0485051509090b5d103114791565156b159b16dd170f1a951d3d1d412600039d03a5042d044310311479152f15cb160916dd170f1a951add1ae51aed1b0325f725ff25fc25fa25f825f025ee25ec25e625e425e225df25de25dc25d725db25da25d625d525d425d225d000060de710111031104114791523160d162716d9170f1a3125b5⟩]))) ( (.branch 2 ( .leaf #[⟨0x25012008c044021010007803a01c00d806803201800b0050026012008804001e00d006002c014009004001c00c0050018008002000, 0x26d626d426d026cc26ca26c226c126c026be26ba26b826b026ae26a226a126a0269f269e269c269a2696268e2686268526842682267e267c267226702666265e265226512650264e264a⟩, ⟨0x3c01d80e807203801b80d806803201880bc05a02c00f807803a01c00d8068032018006803001600a004801c00c005002000c004000, 0x275827542750274e2746273e273227312730272f272e272c272b272a272927280006091d098d09950a2f0ab30f2b1bb326f726ff27152721272527262722271e271c271a27102708000608cf08eb1b9526a926b726c926db26e126f726ff270026fc26fa26f826f026ef26ee26ec26e826e426e226d826d7⟩]) ( .leaf #[⟨0x3101800b805802b01500a4050027012809004202000f007403801b00d006002e014009804402000f0070034012008003800c002000, 0x27c227bc27bb27ba27b927b827b627b227b027ae27a627a527a427a2279d27a127a0279c279b279a279827942792278a278727862784277f27832782277e277d277c277a2778276e273627612765276927662762273a2745274d275f275c275b275a⟩, ⟨0x5802b81580a8052028814009e04e026012008c04501980b803601800a804c024011008003c01c00c005002400c0050018008002000, 0x28282822281e281b281a2819281828162810280c28082807280609ff27f92805280428032802139802fb036509090937095d098d09950a0d0a690b5d0b8b0b8f0b910dab1cf91d3d1d4109580963097f098509ff000601c101d901e102fb036503af03d309a709bb0a510b8b0b8f0b910bd10dab0e550f7b1b392800098527ff27fe097d27fd27fc099f27fa27f427f227ea27e227e027df27de27dd27dc27da27d527d927d827d427d327d227d027c8⟩, ⟨0x45022010c08404001f80f807a03c01b00d006403101780b805a02700c005c02c01500a004c02200f0068030016008003000c002000, 0x288c288828842880287f287e287c287828701ce41cef1d5d1d651d7b1d91286c286b286a28692868286621492864286201861fef2005202d20c920df212c044b0473047b048509090b5d0ff110111031105715651d3d1d41213b285c285a285628522850284c28492848210f284428232842283a2836282328352834282728302823282f282e282b282c⟩]))))))))))) ( (.branch 37 ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x2b01500a404e025012008804001f00f007403801b00d006402e01600a8050026012008804001600a004802000e0050018008002000, 0x2914291229042901290028f328fe28f828f528f428f328f228ee28ea28e228e028de28d628d028cf28ce28cc28c828c628ba28b628b20006132f136513a328a728b028ae28ac28a428a2289f289e2869289c28982890⟩, ⟨0x3101780b805a02c01580a80520280138094046022010808002e01600a0048022010007803401600a004802000c0040018008002000, 0x29a0299f299e299c299a298e2986298429822978296c2969296827dd2964295c2958000600031109111f11271bb326892921295529562952294f294e2729294c29482944293e293b293a2939293829362932292e292d292c269f292a292629222918⟩, ⟨0x3e01e80c806203001780b805a02000f007403801b00d006403001700b0054028013009004001e00e006803001600a0038014006000, 0x2a20000606d506e1074508cf08eb098d09950a2f0f2b2a1b2a1c2a142a0e2a0c2a0a0006022506f30937098d09951cf91d011d091d111d2720a92a0329fc29fb29fa29f829f429f029ee29e629e229e029de29d429d229d029c829c729c629c429c029bc29ba29b029aa283729a129a829a529a429a329a2283129a1⟩, ⟨0x6703281900c4061028011c07203801b00d006603201880c005c02d01600ac054029014009c04c01700b00540280050018008002000, 0x2a922a912a902a8e2a7d2a8a000601d901e1039d03a5042d064706ff074509d709e911e916091fc92a292a5d2a6d00060003039d03a5042d11e928412a5d2a6d000601c101d901e106f30f7b111f112712331bbd1e4f1e5b2a712a852a862a822a7f2a7e2a7d2a7c2a7a2a782a762a682a672a662a642a602a5e2a562a522a4c2a48000601d901e109d109d709e90ab30f670fb729dd29e529ff2a372a3b2a3f2a402a3c2a38000601c101d901e1094d09bb0f7b0f9f14fb150315f515fd1a851dd121672a3428072a322a2a2a24⟩]) ( (.branch 2 ( .leaf #[⟨0x9d04e026813009704b025412809304701c40c406002f81700b205702a814c09404901700b405801a00c803800e005002000c004000, 0x2ae42ae02add2adc2adb2ada2ad62ad02aca2ac8000610ed112f12bd23c30006028d02fb0365044b0473047b048505150b8b0b8f0b910dab0e510e550fd70fdf103911ab11d711df11e311f911fd156515871a411a6b239d0006039d03a5042d04430ffb103114fb150315f515fd16091a8521672aa52ac004c52abe2abc219d2abb2aba04b12ab92ab804a12ab62ab52ab42ab32ab21fef2029202d20c920df2115212721292ab00006028d02fb0365044b0473047b048505150b8b0b8f0b910dab0e550fd70fdf103911ab11d711df11e311f911fd15611565158725cd2aae2aaa0006039d03a5042d04430ff110111031105714fb150315f515fd16091a85212f21672aa52aa2000602b303c510bf123312c51dc11dc51e811f852aa11ddc02e703c51a5b1dcd1dd72aa12a9e09c32a9c2a9a2a982a962a93⟩, ⟨0x4a024812008e046022811008404102000fc06803201800b805a02000b8054026012007803401800b0050024010007003000c002000, 0x2b5c2b542b502b4e2b4c2b442b402b3f2b3e2b3c2b38000608ab08b90bdd0def11ab11d711df11e311f911fd2b320d9f2b300c7b2b2e1d4f2b2c0006039d03a503c5042d04f7111f1127160917f11ba11bbd2b270006000311011109111f1127112f120523c32b242b232b222b192b202b1c2afd2b172b1a2b192b182b142b0c2b062b042b022af82ad82ac52aef2af02adb2aec⟩]) ( .leaf #[⟨0x37014809c04c023011008003e01e00e807003401900b0054026012008804001e00e0068030016009004001c00c0050018008002000, 0x603af03d31add1ae51b3127ad27b528552bad2bc32bc52bc72bcd2be22be12be02bde2bd92bdd2bdc2bd82bd72bd62bd42bd02bce2bc02bbd2bbc2bba2bb52bb92bb82bb42bb32bb22bb02bae2ba42b9e2b962b8c2b8e2b822b812b802b7e2b7a2b782b662b652b642b622b5e⟩, ⟨0x3801b80d806a03401900c005e02d01580a8052028013809804402100e807003601900b0050024010006001800a0040018008002000, 0x2c522c502c482c462c3a2c392c382c372c362c342c332c322c312c302c2e2c2c2c282c222c1c0b5d1d412be72c1a2c160bd11b392be72c142c122c0e2c052c0c2be52bf12c0a2c092c082c072c062c052c04088908a52c01000600030749085f08652be52c022bfe2bfa2bf82bf62bee⟩, ⟨0x3a01b00c805e02d01600a8052028013809404601600a8050026011008003c01c00d006002c014009004001800a0040018008002000, 0x2ca6236725a32cb10006297b2cb52cbb296e29772cbf2cbe2cb72cbc2cb82cb72cb62cb22caa2ca419c52ca22a9300060745098d09950a2f0f2b2a012c732c7b2c952c972c9b2c9f2ca02c9c2c982c922c912c902c8e2c8a2c862c842c7c2c782c762c742c6c2c6b2c6a2c682c642c602c5e2c54⟩]))))) ( (.branch 4 ( .leaf #[⟨0x3501a00cc06403101800b405802a01480a004e0260120088042014009804801e00e006002c014009004001800a0040018008002000, 0x2d522d4a2d482d402d3c2d382d332d372d362d322d312d302d2e2d202d182d0c2d0b2d0a2d092d08000601d901e1039d03a5042d074509d709e911e916091fc52a6f2d062d042cfe2cf92cfd2cfc2cf82cf72cf62cf42ce82ce22cda2cd92cd82cd62cd22cce2ccc2cc4⟩, ⟨0x25011808804202000f807803a01c00d806803201800b805802a014009804402000f007003401800a004001c00c0050018008002000, 0x2dd82dd72dd62dd42dd22dc82dc22dba2db02dac2dae2da62d9a2d9c2d942d922d8c2d882d822d812d802d7e2d7a2d762d742d6c2d6b2d6a2d692d682d662d622d5c2d5b2d5a2d582d54⟩, ⟨0x3901c00dc06c03401980c806203001700b0056029013809804a0240118088028012008803801a00b00500240100070028010002000, 0x2e4a2e442e422e3c1ad12e3a2e382e322e2a2e202e1f2e1e2e1d2e1c2e1a2e192e182e172e162e142e122e0e2e08000603af03d31109111f112727ad27b52b2b2bc52bc72dd12de72ded2e022e012e002dfe2df92dfd2dfc2df82df72df62df42df02dee2de42de12de02dde2dd92ddd2ddc⟩, ⟨0x26012008c04201f00f007403801b00d006403001700b0054028013009004001e00e0068030016009004001c00c0050020008002000, 0x2ec62ec52ec42ec22ebf2ebe2ebd2ebc2eb82eb22eb02eae2ea22ea02e9c2e962e8e2e8a2e882e862e7e2e7d2e7c2e7a2e762e722e702e682e672e662e642e602e5c2e5a2e522e512e502e4e⟩]) ( (.branch 2 ( .leaf #[⟨0x3401980c806202f01680b005602a01480a004e025012008c044021010007c02200f007003401800b004801c00c005002000c004000, 0x2f3e2f3a2f382f302f2f2f2e2f2d2f2c2f2a2f262f242f202f1c2f122f112f102f0e2f0a2f082f002efc00061a851b471d011d091d272e592e6f2e852e8d2ea72ee52eeb2ef92ef62ef52ef42ef22eee2eec2ee22ee12ee02edf2ede2edc2eda2ed62ed02ec82ec7⟩, ⟨0x260128090046022010808003e01e00e807003601a00c806002c0140098048022010007803801a00c004802000c0050020008002000, 0x2fc62fc42fbc2fb82fb62fb42fb22fa82fa02f982f942f902f8c2f8a2f8825492f862f852f842f822f7e2f7a2f782f702f6e2f6a2f662f612f652f642f602f5f2f5e2f5c2f462f452f442f42⟩]) ( .leaf #[⟨0x3701480a004e026012809004402000e006803201800b805802a014009804402000e006002c014009004001c00c0050018008002000, 0x6114b116111691a851d011d091d111d271d3928552b433031303b303e303c3036302e302c3022251d3020301f301e2ffd3003301d301c301b301a301830163012300e300830042ffc2ffb2ffa2ff82ff72ff62ff52ff42ff22fea2fe82fe62fde2fda2fd22fd12fd02fce2fca⟩, ⟨0x3a01c00d806a03401800bc0560290140098048023011008404001e00e807003601a00c806002e009003801800a0040018008002000, 0x30b8230d30b6177b30b430b02658263b2643276130ae000621d12329233730ac22c730a430a0309f309e309d309c309a3098309230883087308630843080307e30703072306c000601d901e109d709e909f50ab31add1ae51b3128552bc330473057306230613060305e305a30583050304e304c⟩, ⟨0x2b01500a40500270130094048022010007c03c01c00d006403001500a004c024010007003401800b005002400e005002000c004000, 0x312e312c312a31283120311e3118310c310b310a309d3108310430fe30fd30fc30a530fa30f230ee30e930ed30ec30e630ea30e430e130e030df30de30dc30da30d830d230ca30c930c830c730c630c430c030ba2331⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x2a014809804a023011008403e01e00e807003601a00c805c02c01500a004802000f007003401800b005002400e0060028010004000, 0x31b031ac31a731ab31aa31a631a531a431a2318c318b318a318831843180317e31763174317331723170316c31663165316431633162315e315a31583152314831463140313f313e313c3138313231313130312f⟩, ⟨0x3b01d00e407003601a00c804c025012008c04402100f807403801a00c806002e00d006002c014009003801800a0040018008002000, 0x322a32223220321c321b321a2d6932181fdd000609090b5d11cf11d711df11e91d3d1d41280b2d5f3215321632123210320c320431fc31f931f82d0931f631f02d0b31ec31e831e431ce03af03d30bd11b3929dd29e52a372a3f2ff131e031dc31d831d631cc31cb31ca31c831c431c031be31b631b4⟩, ⟨0x2b01500a40500270130090046022010808003e01e00d006402e01500a004c024010007803801a00c005002400c0050018008002000, 0x32b832b432b032ae32a2329e329d329c329632943292328a32820006222d32773279327a32743273327232713270326e326a326232613260325c325832543248324532443242323d32413240323c323b323a32383236⟩, ⟨0x3301880bc05a02a0138094046021010007403801a00c806002e01600a8050026012008003801800b0050024010006002000c002000, 0x332a33293328331933263325332420c3332333222069331f331e3305331c331b331a3319331833163311331533143310330f330e330c330632fe32f832f232e832de32da281b32d832d732d62cb732d432d032ce32c832c432c332c232c132c032bc32bb32ba⟩]) ( (.branch 2 ( .leaf #[⟨0x2c01580a80500260128090046022010808003801b00d006002c0140098048022010007803801a00c00500240100070030014006000, 0x33c233ba33b233b133b033af33ae33ac33a233a0339e339600063363337b3387338c338a338233813380337d337e337d337c33783370336a33643358335a33523346334533443342333e333a33383330332d332c3327332b⟩, ⟨0x2c01500a404e025012008c044021010007c03c01a00c806002e01500a004c024010007003401800b005002000e0050018008002000, 0x342e25a9342c3428342734263425342434223420341e34183410340833e832ed3337334b3406340433fe33fc33fb33fa33f833f433f033ef33ee33ed33ec33ea33e633de33d833d733d633d033cd33cc33c933c833c633c4⟩]) ( .leaf #[⟨0x28013809804a024011808804201f00e807003601a00c806002c01500a004c024011007803401800b005002400e0050020008002000, 0x34aa349e349a3496349434923488348634853484348334823480347e347a3474346e346d346c346a34663464345c345a345934583457345634543452344e3440343d343c228b343a34382cb934363434⟩, ⟨0x3a01c80e006c03401980c806203001780b805802b0138098030016009004402000f006803001600a004802000e0050018008002000, 0x351c35183514351135102a91350e35083504350234fa34f634ee133734ec0006297d2cb134eb34e8052203c5044b0473047b0485051511ab11d711df11e311f911fd156534e61a07000619271a031a1134e434e034dc34d834d734d634d434d034ce34c634c434ba34b934b834b734b634b434b2⟩, ⟨0xaf057027c13c08f0468230104074032018c0a4047022810c08404102000f807803501500a004e01a00c806002c006002000c004000, 0x357000061161116911f111f512331ecb2c732c7b2c952c972c9b2c9f355d3561355e0006114b116111691171119b11ab11d711df11e311f911fd12051ecd1f61355a13c135581bba03af03d30bd11109111f11271b391bb31bb71b4a111f11271add1ae51b311b471b951ba11bbd266b2675267b2859064601c101d901e106f30f7b111f11271b951ba11bbd266b2675267b2a55351b3556000601c101d901e109bb0f7b0fa912f9138d13d51add1ae51aed1b031b4b1dd134f50006029502dd044f094d0de70f7f0fdf1cd5353535413552355135501909354e354a3542353e353d353c13352906094d0f7f1cd5246d28b5352100060ab30abb0b8b0b8f0b910dab0db30e610e650e69353a28a53536000609550a690ab3134f138d139f19bb19f5226d22d7241128fd35323530352c19fb00060de70fd70fdf10391523170f19a719f5222b2255226d228522d729af3281352a224b35283522351e351d⟩]))))) ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x3e01e00ec07403801b00d4068033019009804a024011808403e01d00e004401e00e0068030016009003801800a0040018008002000, 0x35ea272f35e835e435de35dd35dc2fb935da35d635ce35cc25fe111f112717f11add1ae51b311ba11bbd285528592b2735c435be35b835b6182935b035af35ae359335ac000603e9040514fb150315f515f915fd356d359d35ab35a835a735a635a435a0359e35963595359435933592359035883586357e35783572⟩, ⟨0x7c03581a00cc05a021010007c03c01d00e006c03201800bc05c02c01580a805202100f805002400e0068030016008002800c004000, 0x60357039d03a503a903af03d3042d0bd1103114791521153716dd1a951b3925cd1926193d363d363a052d2168039d03a503c5042d04f714fb150315f515fd16091a8500060de714791523160d161d16271643167b16d9170f18211b6d1d011d091d451d4920ab26c926e126f726ff34db360f3638363536343633363236293630362d362c362b362a36293628361b362136273626362536243622361a361936183614361000061a851b6d1d111d392f072f152f17360a13811764030f0de70fd71365138d139f15232907353535493606360536040f4f34f9351f3602360035fe35f6301d35f535f42ffb35f335f22fa735f035ec35eb⟩]) ( .leaf #[⟨0x3901c00dc06c03501980c406002f01700b405802a014009c04c025012008c04402100f807403601a00c803c014007002800c002000, 0x36b236b036ac36aa36a236a136a0369f369e369c369a3696368e368636853684368336823680367c367a3678366c3666365e30b7365a3657365634b73654364c0006044b045705150de71031156b159b1a9b239d1a96147916dd1a9936451490148d36493648149736461a6336421aab3640⟩, ⟨0x48023811808a044021010007c03c01d00e006403001780b805a02c011808804202000f807803a01b00c806002e01600a0040004000, 0x371c37183716370e370a370737063705370436f9370036fd36fc36fb36fa36f936f82143219d286736f536f736f436f336f236f036ea36e4000600031109111f112717ff182b2de735b336e036de36dc36da36d636ce36cc36c936c836bd36c636c236bc36b816831c921c451c5b366536b6039d03a503c5042d04f716091bdf29b929dd29e529ed368d36a936b436b3⟩, ⟨0x5c02d81640ae05602a81500a60520238114088043021010408003f01f00f4076032018808c04401500a004c02200d0020008002000, 0x377e3778377737763775377437723770376a3762000608cf08eb1bdf2e852e8d2f1b2f1f3743374f375d375a37593758375637523750374837463740373c373636570006000517ff182b26f726ff27253653373337342a6c039d03a51109111f112711f9150b151d1bb72a892a8d2b292b2b3730000626f726ff272127252b2b2e852e8d2f1b2f1f2fe52fed34af372c372a37283727372604b3219d2aad00060003039d03a503a9042d0ffb10312aa53724372337223720⟩]))) ( (.branch 2 ( .leaf #[⟨0x5602a014c0a004f026813009604a024811c08a038015008003601900b805802a011008003c016009003801800a0040018008002000, 0x37e637e537e437e237dd37e137e037dc37db37da37d837d037c237be37bb37ba35f7000603c50473047b0485091d098d09950a2f0ab30e230f2b156500061bb326f726ff27032725294329cf2c5d2c732c7b2c832fbb37b72a6e01c101d901e103af03d306f30bd10f7b1b39000626432761300d35ef37b437b337b237b137b037ae378a1c291c2f37a937ac37aa1c2636653791379937a637a537a437a337a237a0379a3792378e37863782⟩, ⟨0x34019809804a024011808804001f00f007403801b00c805c02c01500a004c02400f007003001600a004802000c005002000c004000, 0x386e000614bf14c914cf14e514fb150329b929cf29d729dd29e529ed3862385a385838543850384f384e384c384838443842383a383938383837383638343830382c38283824381f38233822381e381d381c381a380c380437fa37f937f837f637f237ee37e837e7⟩]) ( .leaf #[⟨0x3401900c00540280138094048023011008403e01d00d806803201800b805802a014009004401e00d0060028010007002800c004000, 0x38e238e138e038df38de351f38c338d538d938dd38dc38db38da38d438d338d238d038ca38c438c038bf38be38bd38bc360538ba38b238b038ae38a838a438a038981e9d3894389214a5388e2865388a388812d9388620f138843880387f387e20eb387c38742865⟩, ⟨0x52028814009e04d0258124090046022010807002a014009c04c025012008c04401a008803c01c00b005002000e0060028010004000, 0x393e393a39363930392f392e2db1392c1073392a392818c53926237f3924189b376c09090b5d1d3d1d412e592e6f2e852e8d34e3216601d901e1064706ff074509d709e914cf14e514fb15031ab52a29392239213920391e391a39163914390c09be09f50ab30f770f85138d13d534f50006000301c101d901e1094d09cd0f9f1dd1390839053904390238fd3901390038fc38fb38fa38f838f638f038ee38eb38e638e3⟩, ⟨0x3301900c405e02e01680b005602a014009804a01c00d006402c01500980480220100078034018009004001800a0040018008002000, 0x39ba39b439ac39ab39aa39a839a439a0399e39963995399439933992000627ad27b529cf29d72ff134433961397b3990398f398e398c3987398b398a3986398539843982397e397c397439713970396e3969396d396c3968396739663964396239583952394a⟩]))))))))) ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x6203001780ba05b024011408804302080fc07c03c01900b005002600c806002e015009804802200d006002c0140060020008002000, 0x39fc39fb39fa33fb39f839f028490006028d03650de70fd70fdf1039132f137b13951523170f22d7236725a329af2cbb3525352739ee05412bf139ec39ea39e639e539e40ad539e239de2a8f0b5c08ab08b90def2c4f2c572c5d2c732c7b2c830bd6087b0b870b8f0b910b93388c01870191212939dc21b70006114b1161116911711187120529cf2c5d2c732c7b2c8337b739da39d839d639d539d439d339d239d0394239c539c939cd39ce39ca39c639463951399d39b339c239c139c039bf39be39bc⟩, ⟨0x5f02c0124090047022810c08404101900c406002f01700b403601600a004c022010006002c014009004001c00a0040018008002000, 0x32e01bb32b6f2f8f2f9330a93a59000600031109111f11271bb3292129552b6f2f8f2f9f30a932dd3a593a7d3a7e3a7a3a763a753a743a733a723a703a6c1bb32b6b2b6f2b7730a930f1315d3a473a533a553a573a593a5d3a6b3a623a603a503a483a4400060ab30e610e69132f137b21e1226522d72367247324cf24fb25412563258935253527324e3257325f32633a413a40325d3a3c3a383a353a343a302cc131e331f53a2e3a263a223a1e3a1a3a143a133a123a103a0c3a083a06⟩, ⟨0x520268130096048023011407003501980c8062025012008c04401f00f007003601a00c0054028012008804001e00e0068008002000, 0x6247324f725413ad93ada3ad63ad43acf3ad33ad23ad13ad000061b95226523052329247924fb28bd28bf2b5b2b69307d3a8d3ace33d73acd3acc34033aca3ac63ac01bb32b532b6b2b6f30a930f13a533a553a573a593ab73abe3ab83ab43ab23aad3ab13ab03aac3aab3aaa3aa83aa03a9d3a9c3a993a9b3a9a3a9830ef3a963a923a8e3a8a3a8800060e4d0fd912f913031bb330a930b33a593a813a853a863a82⟩, ⟨0x5d02a014c0a204402100e006e03401900c004e026012008c04402100f807403801a00c0058028010007803801800a0040018008000, 0x23c212331237161d16651813182b2aeb2b133b263b242b1b000604570473047b0dcd0dd50de72a3b2c732c7b2c972c9b37b93b222af100060de71479152316d9170f2255229329af32813b2032283b1d3b1f3b1e2cdd3b1c3b1b3b1a2cc12ccb2d0f2d7331e33201320b321f3b183b143a393b123b103b0e3b0a3b093b0832613b063afa3af93af83af73af63af33af43af33af2329f3a413af13aee3aea3ae43ae33ae232713ae03adf3ade3add3adc32d3000624fb2501251f⟩]) ( (.branch 2 ( .leaf #[⟨0xd0067833819a0c1054827013408b03d019c0c806203081800be04b02380cc06203001780b805a02c00f807803a01c00d8038008000, 0x3b6c3b6a3b640006028d029502dd030f0321044f0de7138d193d19bb19df0006028d0ab30e4f0e510e610e690fd70fdf1039132f137b138d160d18d5193d19bb19df1a211a3122d7235f352535270006028d0e510fd70fdf1039138d193d19bb19df1a411a571a5b3b600af123c2028d0fd70fdf103912111233123712c5138d193d19bb19df23bf23c100060357039d03a503a9042d103114fb1503152115fd1a731a851a8d1a8f1a9b1aad0006092f0937098d09950ec10edd0f190f3b132f1365138d139f1b9526c926e126f726ff27133b5c0f4d3b5b3b5a0f413b583b543b500006092f0937098d09950e610e690f190f2f11ab11d711df132f137b1fd722d72ca734333525352735541ce11d7b3b4b0006092f0937098d09950ec10edd0f190f3b11ab11d711df132f137b1fd722d72ca73433352535273b4c28a53b463b443b403b3c3b3a00061161116911f111f51b6d1d011d091d451d4920ab25f731d13b383b323b2e3b2a00060003085f086508cf08eb09090bef0bff1d3d1d4135f935fb0b5c08ab08b90def17f126c926e126f726ff34ad1f201de91e151f0d⟩, ⟨0x6e03681ac0d406603201880c2052028814009e04e026812c092048023811805802b014809c048021010007c03c0110078034012000, 0x3bd43bcc337f3bca3bac2b9d317d3bb73bc83bc73bc631773bc400061b6d1d011d091d451d4920ab2c432c5d2c732c7b2c83315d3bbf3bc33bc03bbc3bb83bb03ba83ba43ba33ba23ab53ba03b9c3b9a000601c101d901e1098d099509bb0a2f0efb0f2b0f7b29dd29e529ed2a312c732c7b2c952c972c9b2c9f3143315d363f3b293b2d3b923b8a09753b883b853b8409733b833b82097f09ff3b803b7e3b76000614bf14c914cf14e514fb15031add1ae51aed1b0325f725ff3b743b713b702f713b6e2dc12f4b2f7733a60fd912f91303142917a52b4b337733bd⟩]) ( .leaf #[⟨0x6f02f81740b805b02d01640b005702b01540a8053029014409e04d025811c05602a0148094046021010007c03c01d0088010004000, 0x6000301c101d901e108cf08eb098d099509bb0a2f0efb0f2b0f7b3c1f3c2b3c3a3c393c383c363c323c2e3c2c3c243c223c1c3c1a3c143c0e3c0a3c063c053c023bff3bfe31b73bfc2b9d319131bd2faa02250275039d03a5042d111f112711e916091bbd1d011d091d271fc5267b26f726ff27212725294b2e952f292fbb2fc32fd935d53b173bfa3bf83be42dc12f373be13bf63bf53bf42f2d3bf23bee3be83bde0b5c08ab08b90def12f92e3f2e852e8d2f192f1b2f1f2f23091c022502750937094d098d09951cf91d011d091d272e952f293bda228d3bd8220b⟩, ⟨0x8103f81f80fa07c03d81e80f207803b81d80d205b02700d804202000f807403801900c005802a014009003c01c00c002800c004000, 0x3c923c913c903c8e3c8a3c863c843c7c3c7a3c783c70000614bf1d011d091d451d4929b32c5d2c732c7b2c83311b315d0006039d03a51109111f112711f9150b151d1fc32b2b2de73463348d1a8c039d03a511f914cf14fb1503150b151d1aaf1ab31ab51fc3000601c101d901e1039d03a5098d099509bb0a2f0efb0f2b0f7b11f9150b151d1fc327ed2c732c7b2c952c972c9b2c9f2d42028d098d09950a2f0a4d0de70efb0f2b0fd70fdf103911cf11d711df11e91523170f280b32153b793c6c3c683c643c613c603c5e3c593c5d3c5c3c583c573c563c543c503c4d3c4c3c493c4b3c4a3c483c473c4628033c073c0b3c3d3c413c453c443c433c403c3c3c0d⟩, ⟨0xb905b02cc1620b0057828413e09d04d025c128090046822c11008604282100ec067032818009a04101f80d405802a0138094030000, 0x3cd032633ccf3cce325d3ccd3ccc3aed3cc83cc4000611ab11d711df11f91ab51d011d091d3b1d451d491fd72d432d513cbc3cbb3cba3cb93cb83cb33cb73cb63c413c453cb43cb13cb33cb228053c053cab3cb03c1b3caf3cae3c1924703b913b953caa3c0b3ca83ca6000601c101d901e1094d0f7b111f112717f11bbd1fc1348b3499349d00061b95267b2713294b2b2b2de72fad2fbb2fc32fd93463348d35d53b173ca43ca1000619bb19df1a113c9f000601c101d901e102f502fb0309036703af03cd03d303e9040509cd0e650ec10f630fa91dd1136809550ab30ec10ef70f030f190f3b132f138d139f3b793c9a09ef3b52000301c101d901e1094d09cd0a171cf93b910ee4000301c101d901e1094d09cd0f1927ed3c983c973c963c4b3c953c9427fd00061b471b9526c926e126f726ff27132e592e6f2e852e8d2ea7000601d901e10937098d099509d109d709e90a0d1cf929dd29e529ff2a372a3b2a3f2c5d2c732c7b2c8337b73c733c83⟩]))))) ( (.branch 4 ( .leaf #[⟨0xa4051827c11807d03e01ec0f407903981c40e006f03181800b605902b014c0a204d025812408a04401c00b005601b0078010004000, 0x3d04000618391851186500060ff1103b1065121112331237124512c5160d182b1845184d187f18a518d523bf23c1387313040e510ff1103b1065160d182b1845184d187f18a518d51a211a3138733d003cfe3cfc3cf63cf41ce5286f2883288735553cf2289f3cf03cee19cc0ab30e610e69132f137b138d193d22d72405241135273cec351f3b5d0f360f410f4f0f510f533cea3ce93ce8351d3ce73ce60f410f4f3ce433fd32be2d4332533ccb3ce03cdd3cde3cdd3cdc325732633a413cda00060003039d03a5042d11e916091fc932a732ad3aff3cc30006000511cf11d711df11e9280b3215325339ff3a053ccb3cd8000602fb030905ef0749086909150e6511f9241128b928d328fd3afd3cc73cd7000602fb030905ef0749086909150e65246d28b528d335210006000301c101d901e109cd0fa9138d13d51dd134f53cd43cd33cd23607⟩, ⟨0x8003f81f40f807b03d01e00d2062027010807a03701a80cc04202000f80500240100070034016009004001c00c005002000c004000, 0x3d5a3d583d573d543d503d483d3e0c530b5c08ab08b9098d09950a2f0a4d0def0efb0f2b23fd245f2469246d3b793d3c094d0a4d23fd245f2469246d0006029502fb030905ef0749086909150e650fdf12e117f11a311dcd25b53535354138a73d1d3d31000602950fdf133f1365138d139f1a5b1dcd1dd71dd93541213c04b304e7219d2aad3872029502dd044f17653d033d3a3d393d3810171fb2029502fb030905ef0749086909150e650fdf10bf123312c51dc51e811f85353535413d363d3400060005044b0473047b04850ffb10311565370d37153d2e3d2d3d2c3d2b3d2a37273d283d243d213d20385b3d1e3d183d143d123d103d0a3d083d0615c1⟩, ⟨0x7c03701b40d406702d813c08003e01e00ec07203701b00d406803301900c4054028010807403801b00a80340160090030014006000, 0x1a8c14cf14fb15031aaf1ab31ab529dd29e529ed3143315d3b293b2d3da43ca032613da33da2325f3a411fc001d901e10215021d09d709e90ab31b4d1b511b6d1b7332a401d901e109d709e909f50ab329dd29e52a372a3f34e3000601c101d901e109bb0f7b138d192729b929dd29e529ed2a312fe531cf3da03d9f3d9e3d913d9c3d963d933d923d913d903d8e3d8a3d863d843d7a27e628053c053c133c193cab3d6f3d6e3c1b27ec0a4d23fd245f24652a313b7900063b7b3b913d693d6c3d6a1d5c1ce5286f28832887288f0bd40b730b8b0b8f0b910b930ba50bd13d663d653d643d5b3d623d5f3d613d603d5e3d5d3d5c3d593d5b⟩, ⟨0x7703981c00dc06d03601a80d006702f81780b805a02c814808203f01980c4058029013809804802100f8074018008003801800a000, 0x248025302693de53de020693deb3dea3de93de83de63dde3ddd3ddc3ddb3dda0006110112051b951ba11bbb1e6923f33dd83dd43dd13dd038b33dcc1a5e03c50e5117651a411a5b3d03000603c50e350e3d0e4b0e4d0e4f0e510fd912df12e112e712f91301130317653d033dc8130913e603c50e3d0e4b0e4f0e5112df12e113dd13e517653d033dc60da500061ce3288735553dbf3d443d4f3dc33dc23d5b3dc03dbc3dbb3dba3db73db93db83d633db63d5b0006039d03a503af03d3042d11e916091b391fc92777279127ad27b53da73db13db53db40b6b0b910bd13db23dae3da83bce33d533d93ac93ad3⟩]) ( (.branch 2 ( .leaf #[⟨0x51028013c09c04d0260128092048023811808a04401700b003401800b8050026011008003c01c00d00580240100070018008002000, 0x3e503e4e3e4c3e483e423e3a3e393e383e363e323e303e263e2200060473047b092f0937098d09950dcd0dd50ec10edd0f190f3b0ff10ff51023103b1057131b159317fb3e213e1e1cb1000601a701c101d301d901e101e901ff0215021d0225022d023306f3219327ad27b53e053e1a3e193e183e163e113e153e143e103e0f3e0e3e0c3e083e063dfe3dfd3dfc3dfb3dfa3df802443ded3df13df53df63df23dee⟩, ⟨0x8f047023411808a044821810a083041020410007f03f01f40f607903901c40e006f032812c08803c01b00c80620300100010004000, 0x3eac3ea83ea63e9e3e9b3e9a3e983e933e973e963e923e913e903e8e3e8c3e823e7c3e743e703e6f3e6e37e534c01b9526e127132b2b34df36533e6c3e683e620006091d0a0d0ab30ef70f030f19138d13d538b9000601c101d901e1098d099509bb0a2f0efb0f2b0f7b111f112717f11b6d1bbd1d011d091d4927ed2f072f152f17348b3499349d0006053f0a6d0e610e650e693b7d000615f91ab51d1129ad2ecf2efb2eff00060ee50f270f9f1dd127f7263a2655274530153e5a3e560006092f0937098d09950edd0f19138d13d51b9526c926e126f726ff271338b90006029502fb0309044b0473047b048505ef0749086909150e650fdf15651dcd1dd9213b2c4f2c732c7b2c83353535413d273e293e2f3e413e543e533e523e51⟩]) ( .leaf #[⟨0xc7061830016e0b2050024c0f8070032014c08c04201b00a8052027012808404001f00f007403601900c0028010007002000c002000, 0x33e032e732ef33373e5c27ff28053d561cef1d651d7b1d91286f28832887288f2988282b2845298d29a100060003039d03a5042d11ab11d711df1b6d1d011d091d491fd7284129952f072f152f171b2e039d03a5042d11e912f916091ac91add1ae51b031b211fc50006000301c101d901e1098d099509bb0f270f2b0f770f7b0f851b6d1d011d091d492f072f152f1735c73b4f3b5700060005092f0937098d09950edd0f19138d13d5390b3913311a1b9526c926e126f726ff27132c732c7b2c972c9b31270006094d0a6d1b9523fd240928c528d52b6d307530773a3b3a3f3b7d3cd73e593ec70006094d0a6d23fd240928d528dd3a253a3f3b7d3cd73e593ed73a3031e331eb32030006000511cf11d711df280b29af3215328d39ff3a053ae9316014cf14e514fb15031ab5216929b929dd29e529ed315d3ed83ed43ed33ed222252cc02ccb2ce13a433ed03ece3ecc3ec83ec03ebf3ebe3ebd3ebc0006039d03a503a903af03c503d3042d27ad27b52bc52bc73e8b3ea53eba3eb93eb83eb63eb13eb53eb43eb03eaf3eae⟩, ⟨0x5d02e016c0ae05502981480a205001d00c405002600d806403001500a0048022010007803801800b004001c00a0040018008002000, 0x3f2e3f2a37c63e733e7b3f1d3f263f253f243ce13f223f1e3f1a0006000301c101d901e1098d099509cd0f270f2b0fa91b6d1d011d091d491dd12f072f152f1734fd3b4f3b57000609bb09f50a6d23fd245f24652a313b7d000600031add1ae51b312b4b2bc333993abb3f181789000600031109111f11271bb327ad27b529213ee53eff3f143f133f123f103f0b3f0f3f0e3f0a3f093f083f063f023f003ef83ef53ef43ef23eed3ef13ef03eec3eeb3eea3ee83ee63edc3eda⟩, ⟨0x6a032818c0c205e02e01640ae05602a815008c044021810007e03d01e00ec07403901680ac0540270130090046022010807401a000, 0x629ad340f3f6b3f6d3f863f833f823f813f803f7d3f7f3f7e39d33f7c3f773f7b3f7a3f793f763f723f6e0006039d03a503af03d3042d20bf27ad27b52bc52bc73dd73f373f513f663f653f643f623f5d3f613f603f5c3f5b3f5a3f583f543f523866039d03a514cf14e514fb1503150b151d1ab520b321693f4a3f473f463f443f3f3f433f423f3e3f3d3f3c3f3a3f382966273b2761276500060003039d03a5042d134f138d139f2411284128fd2a5d32333a213cc33cd73e281b9526c926e126f726ff27132c732c7b2c9b2c9f3f293f2d⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x8003f81f40f807b03d01d80c806203081780ba05b02d01640b005702a81500a2050027013409804b01e008c0420150018008002000, 0x3fde3fda3fd93fd83fd63fd40182019121272129000606f30937098d099515f91d011d091d111d27342b35673677367f372f3f693f973fb13fc63fc53fc43fc23fbd3fc13fc03fbc3fbb3fba3fb83fb43fb23faa3fa73fa63fa43f9f3fa33fa23f9e3f9d3f9c3f9a3f9800060473047b052305270dcd0dd50de7114b1161116911711593285531d300060357039d03a503a9042d1521160d161d16271643167b16d91813182b1a411a6b1aad1add1ae51b0325f7304531db31df3f923db700060005092f0937098d09950ef70f030f19138d13d538b90006000314cf14fb15031d011d091d111d272e592e6f2e852e8d2fef2ff1342b356b3f8b3f903f8e3f88⟩, ⟨0x3401880c005c02d01600ac054027013009004602200f807803801b00d006402e013008804001a00c00500240100070030010006000, 0x404e4049404d404c40484047404640444040403e40364031403540344030402f402e402c40264021402540244020401f401e401c401840062969356629ad340f40054002400140003ffe3ff93ffd3ffc3ff83ff73ff63ff43ff03fee3fe63fe33fe23fe03fdb3fdf⟩, ⟨0x3c01d80e006e03501a00cc06403101700b405602a014809c04201f00e807003601a00c805c02c01500a004c024011008000c002000, 0x40b040ae40a940ad40ac40a840a740a640a440a0409e40964091409540944090408f408e408c38ea40874086351d38d338db40834085408438d9408238c34080407c407a40784070406f406e406c40684066405e405c405a000601c101d901e103af03d3094d0f7b1fc127ad27b54029403d405240514050⟩, ⟨0xdf06f03741b80cf065831c1720ab04f827413809a04c0254128092048823411807403681ac0c404a02400e805202400a0040004000, 0x40e240de40dc0ee4092f0937094d098d09950f1912f92e852e8d2ea52f1b2f1f2e242db92dc12f3740d4386b38713e73000614bf17f11d011d091d451d4926c926f726ff29b334c134cd36e30006098d09950ab30ee50f270f2b2a3b2c732c7b2c972c9b37b93b4f0006000302b9039d03a503a9042d04a90ff110111031105740d230c940ce40cc40c940c840c740c640c340c540c440c20f4740c03d421ce32887288f40bc00060295044b0473047b0485098d09950f270f2b0fdf136513a315651dcd1dd9213b2907353535413b4f3b573d2740b9213c2143214d2171219d286740bb40ba216f0006000504690473047b04850ffb1031213b000602fb030905ef0749086909090915092f0937098d09950e650edd0f191cd11d3d28b528d33677367f38b94089409d40b617eb0006039d03a503af03d3042d11e92777279127ad27b528412bc52bc70006039d03a5042d14fb150315f915fd284129af2a5d328d32a1356d359d39e13a21000611431185119b23c30006121112331237124512c5147f160d161d16271643167b16d91813182b23bf2d122d732d873a2d000604570473047b0dcd0dd50de71ab51d011d091d492ecf2efb2eff40b240b1⟩]) ( (.branch 2 ( .leaf #[⟨0x3f01f00f407803a01c80e006e03601a80cc06403101800bc05c02c01580a004e025012008c04401e00e8028010007002000c002000, 0x414841464142413c413b413a413841344130412e4124412341224120411c41184116410e410b410a410841034107410641024101410040fe40fc40f81bbb292930ab40f6000601c101d901e1094d09bb0f7b111f11271b951ba11bbd267527ad27b528bd30a740db40f340f040ef40ee40ec40e740eb40ea40e640e540e4⟩, ⟨0x8e046823011608a044021c10808304082000fe07e03881bc0ba05a02b014808804302080fc07c03d01e00ec04001f0028010004000, 0x419e419c41984196418e418b418a4188418341874186418241814180417e417c09f401c101d901e1094d0f7b14fb150315fd1a731a851a8d1a8f41761659000602dd044f0de70ff11065143114ad160d16cd178117a518451851187f18d5389b3d793d803d713d990006142914393d731f1c1dfb1e151f19000606d506e10745098d09950f2b1bb326f726ff271527212725350d41724170416f416e416d416c416a41664160000601c101d901e1039d03a506e1098d09950f2b0f7b11cf11d711df150b151d280b2a8d3431350d351b3b49412d41574159415d415f415a000601d901e1039d03a5042d0937098d099509d709e911ab11d711df16091fc91fcb1fd72a293517372f41154127413f415141554152414e414b414a4149⟩]) ( .leaf #[⟨0xbf05d82d41580a504f827813a09c04d826812a091045822411007a03781880aa04801d00d806401c00d8064012007003000c004000, 0x39b339cd3940394e29ad342b372f340f3f97393400d835350f7f0457044304ad04ec1cd500eb02d5354135351cd50f7f029502d1124512371011105a1085008a139e13641faa41ac0c9206c70b91070d0b8f0c3b0b8f0b910c3b01390c3b0c1d0b910b8f079f01370b910cac41b4000608ab08b9098d09950ab30ee50f270f2b3b4f405540654077407f00060005092f0937094d098d09953677367f3fd33fed2ea6114b1161116912f92b4b2e852e8d2f1b2f1f303b33993bd3356c14bf14cf14fb15031bdf29b929dd29e529ed32a5356b3f2103b80357039d03a503a903c5042d1bdf29b929dd29e529ed32a5022c0215021d1b4d1b511b671b6d1bdf29b929dd29e529ed32a541b137fe384138533e7b23b01f191f6f1f73000601c101d901e1039d03a506f30ab30e610e690f7b132f137b150b151d22d72a712a8d2ca734313525352741b241ae17ad000611011109111f112712051bdf27ad27b529b929dd29e529ed32a5417b419541aa41a941a841a641a141a541a441a0419f⟩, ⟨0x8103e81f00e806c03301800b605a02c01580a004a0238114086042020810007c03001780a004e01b00d006402e0100068018004000, 0x6130b910b8f0c3b0678013c0ca60caa0b8c0cad0bd20ca801240f670fa90f630ec10e65030902f50b540f672bc72bc53191319a14c90b8b0b8f0b930b910bd40b560b8f0b930b910b8b0b5d132e1ce3289a0e770e66091508690955074905ef0aa8091508690955074905ef015c091d09870954015c01630a470a6805860366161c17c6009c238f238d0b8b0fd7028d10390e4f0e5503650dab0b8f0b910e5100a7235e067019df19bb028d195b1a02012f198824692405241f0e5503650dab238d0b8f238f0b910b8b23fd1a9416dc027509180f7709be09f5360738c10ef713d50e740e660e7705ef0a690955091507490869015e2cc132013b1a320802420266⟩, ⟨0x5e02e814c0a004e025011408403c01b80d806a03401980c806002f01700b405802b01500a404801f00a80500260120058008002000, 0x23370a470dab0e550b8f0bd10b910b8b0365095809601cef1d911ce408360b3c05231ecd2d5f04531fad23dd1dc1147f1eab089c08590893286f1cef1d5d1cde3c9c1d8e20891555155f1525156e23662cba2cb0258825a2129d1298338e32ee10560ff01a101a0314782005212720df285e0184290735490fd725c615b429ad342b340f393415932082212720df20052a04195a19de19ba0a0909f509bb0ef70ec10f3b097e0a990b5d0dab0b8f0bd10b910b8b0e670db613a205b8⟩]))))) ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x8003c81b80d806b03201780ba05c02d81680a004f027012c09404702000ec06c03501900bc056027010806803001700b0008002000, 0x9f509bb09630ec109550ef70f3b3e5d05ef245f074901420a7e09bb09f523fd091509610cca0cee1ac82f542dc13be63a813a5930a92d9e352724fb0e610e69352500cb137a247224f62540387323c123bf1211184d103b12451237106500a718a4187e2ab501842004101003a9153715250a0d091d0fa909cd38c1360713d505ef0749086908a1086d0d4c06c70c3b070d0cee0d6c09550aa80b3c074905ef0645074905ef06450137074905ef064501380749071305ef0645062b012f09550aa805ef074905ec08a10869243e0114230419f428fd0f7f1cd529060ef70a0d091d38c13cd50fa909bb267527610955222b226d222d0a69230519f5228422a6⟩, ⟨0xb805b02d015e0a404d025012408f042821010608103e01e80e207003781ac0bc053027812409004401d80dc05801b00a0048006000, 0x92f0a162d431d3b32283a433a3032082ce728410e65030928e5074905ef09153cd13a2128d3134a243928b928d303090e65074905ef0915322528e525c535490fd703a9052428d229ff09ba092f0ee4095435273525092f34330e6105ef091507491fd70ee0337617a4179117a428bd247928bf2329006d222d22543a2139e128413af5280b39ff3afb356d328d16d824fa3a2d2d28243f24380e650db30955092f352735251fd734330f4109f509bb0e77096035273525092f1fd734330e6909d10e650db3287a0e733d56288f1d911cec0e610e650db30e690dab0cee0d650893074905ef086d0e77092f352735250edd1fd734330f410e7209f509bb096309541fc33525386b1fc92a8d0e610e6923fd35272bc5017701420a7e245f3e5d09bb09f523fd3db935540f41352735250edd1fd73433092f0163245f3e5d09bb09f523fd0a46096135c60f61298d352735250e610e6921661fd7372f41551fc9415d350d2a8d280b343235c60f5f0f39⟩]) ( .leaf #[⟨0xce063830c1780b905982c015a0a9054027812c092048021810407c03581a80d206803381840b605702981180700340118044006000, 0xe690e650e610db306c7070d0b550e690e6119cc01200e7709552f173b4f2f151ce50e600f630e7b0a990e7b0ec109551ce51cde0f3b0e7b0f3b0ee109bb09f509540187285e2005019110641ef81f1923b200a71765103b3d0338731a5e10651ef81f1923b2103b387300a71065147c1ef81f19147f12990d350cee156b0457044b152123ad1a8f03a923ab1a8d1a9b2dc12f542da52d9e106518d502dd044f1845005e133f03a93d2f3e413e293541029537290e6503090915074905ef044b35351dcd1dd9184c185014303d782002290702a715b4200a25c529ad342b372f340f3f873f970b8f0b910b8c0c3b275f276940f30bd83db93b8935540e770fa90f6702f503090e6509550ef70b5409603ce128e53a21030928d30e653afd074905ef0915280b39ff2841134a091d0ee409bb09540a0d091d3cd128e5074905ef09153a2128d32a6c0e6529ff0ee402f503090e6109550a0d091d29ff0ef73cd1030928e5074905ef09153a2128d32a6c0e610e650db30e6936053cd128e53a210a0d38c10749091d030928d30e6505ef0915360709aa3228243f092f⟩, ⟨0xf807783a81ae0cc065832418c0c405a02cc15209904a02180f007303381940c6055029013809203b01800ac050024011808002e000, 0x34331fd7092f0e61074905ef09150ee028e409cd0e650b5403090b5d2a6c2655300c271335d5262c3a7d2d9e14c92bc72bc50f673bae006c3ac92b6f3a5930a90b5c0fd913033a6c3a6b3a5d006c30a92b6f3a592b6b33aa14283068006a3bce3ac23ac903a904f92a6c2bc72bc50f673be12655300c27132fd935d5294b262c2f8f3a7d2f5404f823283a6c3a6b3a5d30a93a573a473a592b6f2b6b006c09cd3ceb400a38d90edd092f400e243932250e6503090915074905ef28e528d32fef372f356b3f9729b209cd3ceb400a38d903090e6505ef09150edd092f0749400e28d328b53ceb3554400a28d303090e6505ef09150edd092f0749400e28b50e73044f389b178102dd00a738560e6535351dd7133f0915074905ef03091dcd00fc17c6010100fa31d3044a40b93d273b4f3541353502951dd91dcd29073b5702d503a90ffb044b2aa6213c2aad02d503a936f802d002a7208903a928d200fd12e13d1d0e6535353d3125b50915074905ef03091dcd133f1dd700fc091528fd03093cc70e653afd3cd7074905ef352128d3044b03a9370b37010ffb3940394e39b00e690e6100cb012009ba091d0ee409542fef2bc52bc717c736e3372f3f970f6714c641b101a7023307e82d28298d372f4155350d280b415d3b4f2f152f170e650db30915092f1fd705ef074909550a98⟩, ⟨0x16b0a684c826212c094049824611908a844c20c10307f03c01c80d205f02b413a09904081a00a805001f80ec072037015807001c000, 0x2b292ce72a852bc71101280b39ff0f9f29433b4f2f152f1715230fd7170f10393a3b38d901420f771fd71d9c091503090e6528d3074905ef092f2a6c0f9f29433b4f2f152f172761260b30002439328115230fd7170f10393a3b0f7738d928d303090e65092f014205ef0749091532250ee5225425c625b51627104115b438d938e934f338c3092f09cd092f09cd0ee42ee50b5c2d5f0f6714c62ecf2efb03090e6528d2129623b21085129c010000ea2efb2ecf2ee50b5c2d5f0e65133f00fc0f67030914c635351ecd092f09cd2ea60e690db30e610e650b552a6c1ef81f6f0edd3b570e770f411ecd0f670e650309092f28d204f82fef2bc52bc736e3372f14c60f67018702d5389b178117c72ecf17c22ee50b5c2d9e2dc12d5f1ecd03a90e65133f00fc353503091dcd0f6714c600fb02d5389b178120df200538560e65133f00fc35350915074905ef03091dcd2d5f03a91ecd208202d12ecf36e33e7b17c20e65133f00fc35350915074905ef03091dcd044b03a902d52efb2ecf17c228d22ee50b5c2d9e2dc13b4f3b5703a90e6503091dcd0f6714c640b928d2044b03a900fd40b93b4f29073b57044b03a938560e65133f178135350915074905ef03091dcd2fef2bc736e3372f14c60f67389b00fc40b93b4f29073b57044b03a938560e65133f178135350915074905ef03091dcd2fef2bc736e3372f14c60f67389b00fc00eb40b93b4f29073b57044b03a90309389b178138560e65029535351dcd35410915074905ef02d50ff8044b03a90ffb36f92ecf36e33e7b17c228d20e650915074905ef030903a93b4f1dcd3b57044b40b92efb03a928d2052400fd09cd095409540ee42e952f17284127031fd735270e690e6135252cc231eb27152a6c2bc72bc50f673be12655300c2fd935d52f8f0b5c3a7d04f8262c271405ef400a09aa2a6c29ff02f5280b091503090e6528d307490e730121243f243928e50e7309cd400a28d303090e6505ef091507493cd7092c⟩]))) ( (.branch 2 ( .leaf #[⟨0x1980c6061c3061780b4853c27e11c08203e01ee0f607883b01b40c805e829c14609e04582100f407503101600a20380110048018000, 0x28bd28bf0fd913033a6c3a6b3a592b6f30a93a5d33aa24762bc32ea6303b3ac933993cbd3c053c192a3028d339ff030928410e65074905ef0915280b134a01210a98095501872011091515233b4f02d500fc03090e6505ef07492f15092f0e770f410f7709f538d93cd73cc73afd28fd0e65156b1dcd0915074905ef030917c6044b25c52aad17fb103b0edd092f15930e720e610e69355401420a7e0f413e5d09f50edd3db9343323fd1fd70163092f012002952a852f542dc1044f02dd3be63e7b36532de731df30451ab3156b0457044b152123ad1a8f03a923ab2b292d283a2d1ef81f1923b2103b3d0301770e610e692bc523fd17652a852f542dc11ef8044f02dd3be61f2023b23e7b36532de723ad3d03156b044b045731df3045152103a923ab17651fc5130313010fd90e4d3d0317650e5112df12e10e4b13e50e4f2b122aea18131bd916651be7003e36532de73639363117ff389b3b4f3b57044b03a9178102d540b938560e651dcd00fc0915074905ef030917c628d203a92ce739ff0f9f2d2801421d9c3b4f092f2f1503090915074905ef0f770e6515b4010103a92029202d07490f6603090e65091505ef0191285e2fef356b41b102332d28298d372f0a98350d280b0db33b4f2f152f170e650955091507491fd705ef092f00d70e7709551ce50e6005ef07490e6509150bd8271404f8261e29092fff33e22a6c2655300c35d53a7d2d9e14c92bc72bc50f673bae0b5c260c05ef074909150f670e650e6109ab07491523170f0309285e0e65091505ef03a90f66285e01872029202d019103a92ce739ff0f9f1523170f01421d9c3b4f0f772d2803090915074905ef0e65092f2f1500fd2d28092f28d30e6503090915074905ef28b928e50f7709f5092f0edd38d938c313d521662d282b292ce72a85110139ff0f9f3b4f2f1515230fd7170f092f10390f771d9c03090e650915014205ef074928d31ce2280b092f2f172f15298d1fd7372f2166350d0f9f1039014205ef074909150e610e651523170f0fd71ce128e4280b074905ef0915092f2f172f15298d0e610e691fd7372f2166350d28e40ee01d9c1ce60e690e650db30b5d31d31d9c2029202d1ce60e690e650db32fef285e372f0a16⟩, ⟨0x1d40e6871435a1a20cc06242fc1630ab054428c13a09b04b024211408504001ea0ed071035418209f04802080ca05a02900b000e000, 0x3b4f05ef091507490e65030909553b4f05ef0749091503090e65095509ab156b0457152123ad23ab34be0915030928d30e653521074905ef2d4309630b5c0efb2a310a4d0e690e610fd710391fc31a57352735251a2110390fd718d50e690e61028d0e510915030928d30e653521074905ef2d4320f8012132ed05ef0a0d0ee4091d09552d430915030928d30e653521074937bf1fc2261e29092fff006d2dc13be62d9e2f542f9f2921260c0915030928d30e653521074905ef0e610e690b5c09630a4d170f152310390fd7275f27693cb53c453c072a31294b27132fd90efb2d421fc52e95294b2de73b1735d527132fd9349d0efb2f1727ed2fa23cb53c453c0727f627e93bae28bd28bf0fd9130333aa3a592b6f30a9247600160b5c2a31245f09630efb0a4d170f152310390fd72d42097a3cc32b293aff20f80915030928d30e653521074905ef280b39ff0121324d09153cd7030928d30e6505ef3521074928fd32250f9f01421d9c3b4f15b4010103090915074905ef0e650f77091825c5156e2089074905ef03090e6509150f66154a0db31ce60e69030905ef074909150e650e610b5d0523202905ef03093b4f0e65095509150749202d0b5c3b4f05ef0749091503090e65095500fa095502d501870e65354103090915074905ef02950a9901873b4f00fc02d505ef20110955091503090e65074915230a982f542dc11ab3156b0457044b15211a8f03a920112002154b02dd044f02951ef81f19103b23b200a73be636533045154b20112002156b15212f54044f02dd280b05ef15231ef823b23d2f35413e41044b02953e2937290a0d0ee4091d0955091503090e6535210749012100a63d2f35411dcd3e41044b02953e2903090e650915074905ef37291dd9131e05ef095501873b4f00fc02d52011152303090e65091507490a982f15154b20112002156b045715212f541ef8044f02dd152323b23521280b39ff01213d2f35413e41044b029503090e650915074905ef37293e2917643521280b39ff030901210e65074905ef0915284128d309630b5c0efb2a310a4d23fd245f097a0e610e69044f02dd1f2023b231df30452a85154b11012bc72bc520112002156b045715211a8f03a93b2d1ab3275f2769294b2de727132fd92bc3349d2f1509630b5c0efb2a310a4d23fd01201ef8044f02dd1f2023b2365331df30452a85154b11012bc72bc520112002156b0457044b15211a8f03a93b2d1ab3303b275f2769319a294b2de727132fd93be62f543bae2bc32610348d30743a592f9f30a929212b6f248c⟩]) ( .leaf #[⟨0x7c03c81d80e606d03281880c206002e01680a604a02300f407803a01900b8054028012008403a019007802c0140060018008002000, 0x12451085008a122e1212123110ed12bd12442aa11e8102b31dc51f85008b1edf1ecb1e9310ed12bd1ec91ec71e8321672aad02f0167a2bc4028d0fd72cec21681ce5015f0a99226d28fd2906222b03650e5525c520df2005044325ff152f0fd7354929071ce503650e55015d0a990e55036528fd2906222b226d0a69015c2bc611011244123123bf103923c10fd7028d1211122d25c5156b03a9154a20df2127156b044e044e04f9044304ad04a1044e028d0100044f20df204b285e200500e0028d044f0100241f238f238d24052a3503650e552809245f23fd22130a6921f30121222c0a9e0e550365015d0e650e610aa90b3c3b4e0954⟩, ⟨0xc806102f01680b3053028813c09d04a024811007f03e01e80dc06c03281600ae04f025010406802e01580a00460210068024006000, 0x1dd516030f9f1f1902b3107c028d03650e550fd710392168386b17fc16431523170f162720ab04f817462dc10e4b12e112df10390fd70e550e510e4f03650e35028d13f900622dc12da43be200622dc13be20048169a1619170f145d16431627152314131747169b16be169a2de7363134db16431523170f162720ab363917fc21690101208620df21711dda0f9f1dd916030e550365015d31fe2cc11b690e511039152f0fd703650e550443028d23ab23ad1a41129c007e044303650e550fd7028d103911e321681b69044323ad23ab00a70fd71039028d03650e55238f0e511244028d238d1b69238f0e55036511e3008b028d0e55036511e3154a241f238f238d28092a3503650e55240523fd044f21681b69152f04431a410e510e55036523ab23ad0fd7028d0a99015c03650e55290601211edf1ecb1e801e7b1e831e681edf1ecb1e801e9312bd1fad1f84008b02b3028d2aa11dd702e725c615b4238f238d1b69152f044311e310390e5503650fd71e811f8525c615b4104100a61edf1ecb10ed12bd1e931e8021672aad0ffb⟩, ⟨0x6503281940ca06503281940ca06503281900c405e02e81700b0051027812808404001e80e006802e01380880380160070024008000, 0x115242323fd238d238f044f028d13f8015f1413145d0e55036503650e55044300d804ad00eb012102d5044e1413145d0e5503650fd703650e5500d804ad0443152f0fd701212611260a0a69012100ca03650e5523fd2423012003650e5523fd04f71413145d03650e550fd7028d1413145d0fd70e550365028d10392a0400a62169010104f90e55028d0fd7036510391a4125c5156b1a8f1a8d1a9b03a91039028d0fd703650e551a41044304f91039028d0fd71f19147c1039028d0fd723c1008a1e81147f1f85008b⟩])))))))))))))) def policyFixedCompact0Db : Nat → List Int := policyFixedClauseDatabase 16 policyFixedCompact0ClauseTable def policyFixedCompact0VariableTable : PackedNatTable.Table Nat := (.branch 0x83 ((.branch 65 ((.branch 32 ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x338033603180312031102f102f002ee02eb02e402130212020101fe01fd01e701e201dd01d601cb01c5010600e500de00d30079005d00410010000a00050000, 0x4a304a2048504820481047f047c047503fd03fc03d603b803af03a8039e039d039c039a037c0377037603750373035b0358035503540352034f0344033a0339, 0x569056805670566055a054905460545054305400535052a05290527051c050905040503050204f604e504e204df04dc04d504ca04c904c704c604a904a604a5, 0x65a0659065706560652064c0639063606350634063306320631062e06260618061506120611060f060c060b060205e705bd058e058d058b058a0580056d056a]) (.leaf #[0x72d072307220721071f071e071206ff06f906f806e806d706d406d106b906b806b606b5069806950693069206910685067406710670066e066b066a0664065b, 0x7eb07ea07e907e007c607c507c407c307c207b707b1079e079d079b07850784078307810780077607630760075f075e075d075c0750073f073c073b07390736, 0x8370836082e082d082c082a08290828082608240821081f081e081d08050801080007fd07fc07fb07fa07f807f707f607f507f407f207f107f007ef07ee07ed, 0x86908680867086208610860085f085d085c085b08590858085708560850084f084d084c084b084a084908480846084208410840083f083d083c083b08390838]))) ((.branch 4 (.leaf #[0x899089708960893089208910890088e088d088c088508840883088208810880087d087c087a087908780877087608750873087208710870086e086d086c086a, 0x8e408e308e108df08db08da08c408c108c008be08bd08bc08bb08ba08b908b808b708b608b408b308b108af08ae08ad08ac08a508a408a308a208a108a0089b, 0x92309210920091f091e091d091c091709110910090f090e090d09050903090108ff08fe08fd08fc08f908f808f508f408f208f108ee08ed08eb08ea08e908e8, 0x97209710970096f096e096a09550951094f094a09480946094509430941093e093d093c0938093709360935093409330930092f092e092c092b092a09280926]) (.leaf #[0x9a309a209a0099b099a0999099809960995099309920991098e098d098c098b09880987098609850984098309810980097f097e097d09790977097609750974, 0x9df09de09dd09dc09db09d809d609d209d109cd09cc09cb09ca09c609c409c309c209c109bf09be09bd09bc09bb09b509b409b309b209b009ae09a809a709a4, 0xa120a100a0c0a0a0a060a050a040a030a0209ff09fe09fc09f809f709f509f409f309f209f109f009ed09ec09eb09ea09e909e809e609e509e409e309e209e0, 0xa4c0a4b0a4a0a480a470a460a440a420a3f0a3c0a3b0a3a0a390a380a320a300a2c0a2b0a290a280a250a240a230a200a1f0a1e0a1a0a190a180a170a160a15]))))) ((.branch 8 ((.branch 4 (.leaf #[0xa7b0a790a780a770a760a740a730a720a700a6f0a6e0a6d0a690a670a660a650a640a630a620a600a5f0a5e0a5c0a5b0a5a0a590a540a530a520a510a500a4f, 0xab50ab30ab20ab00aaf0aae0aad0aac0aab0aa10aa00a9f0a9d0a9c0a9b0a9a0a960a940a910a900a8f0a8c0a8b0a8a0a890a870a860a830a820a7f0a7e0a7c, 0xae80ae70ae60ae50ae40ae30ae10adf0add0adc0ada0ad90ad70ad60ad50ad40ad20ad00ace0aca0ac90ac60ac50ac40ac30ac10ac00abf0abd0abc0abb0aba, 0xb0d0b0c0b0b0b0a0b080b060b050b040b030b020b010b000aff0afe0afd0afb0afa0af90af80af70af50af40af30af20af10af00aef0aee0aed0aec0aea0ae9]) (.leaf #[0xb4a0b470b460b450b440b430b420b410b400b3f0b3d0b370b360b340b330b310b300b2f0b2e0b2c0b2b0b2a0b290b280b1a0b190b180b170b160b150b120b10, 0xb810b800b7e0b7d0b7c0b7b0b780b770b750b740b710b700b6f0b6e0b6a0b690b660b650b640b630b610b600b5e0b5d0b5c0b5b0b5a0b570b560b550b540b4b, 0xbb40bb30bb20bb10bb00baf0bae0bad0bac0baa0ba80ba60ba40ba30ba20ba10b9e0b9d0b9b0b9a0b980b970b960b940b920b900b8f0b8e0b8a0b880b840b83, 0xc0d0c0c0c060c040c020c000bff0bfe0bfd0bfc0bf60bf10bef0bed0bec0bea0be90be80be70be50be30bce0bc30bc20bbf0bbe0bbd0bbc0bbb0bba0bb80bb6]))) ((.branch 4 (.leaf #[0xc6a0c690c680c660c600c5f0c5c0c5b0c5a0c580c570c540c530c4b0c490c470c450c400c3e0c3b0c3a0c390c380c280c220c1d0c1b0c190c170c150c130c11, 0xcb30cb20cb10cb00caf0cae0cad0cac0caa0ca90ca80ca70ca60ca40ca30ca10c9d0c9c0c940c930c910c900c820c7f0c7b0c790c770c730c720c6e0c6c0c6b, 0xce40cdf0cdd0cdc0cda0cd90cd80cd70cd60cd50cd30cd20cd10cd00ccf0cce0ccd0ccc0cc90cc80cc70cc50cc30cc20cc10cc00cbe0cbd0cb80cb70cb50cb4, 0xd410d400d3f0d2e0d2d0d2c0d2b0d2a0d290d270d260d250d240d220d210d200d1f0d1e0d190d170d130d120cf60cf50cf40cf30cf10cef0cee0ceb0ce80ce7]) (.leaf #[0xd6f0d6e0d6c0d6b0d6a0d690d680d650d640d620d5f0d5e0d5d0d5c0d5a0d590d570d560d550d520d510d500d4f0d4d0d4c0d4a0d480d470d460d450d430d42, 0xdd00dcd0dcc0dca0dc90dc80dc70db90db70db40daa0da90da80da70da50da40d940d900d890d870d860d850d840d810d7f0d7b0d790d740d730d720d710d70, 0xe020dfd0dfc0dfb0dfa0df90df80df30df10dee0ded0dec0deb0de90de80de70de60de30de20de10de00ddf0dde0ddc0ddb0dda0dd90dd80dd50dd40dd20dd1, 0xe2d0e290e280e270e260e240e220e1f0e1e0e1d0e1c0e1b0e1a0e190e180e170e160e140e130e120e110e100e0f0e0e0e0d0e0c0e0a0e090e070e050e040e03]))))))) ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0xe6d0e6a0e650e630e620e5d0e5b0e580e570e560e550e540e530e520e500e4f0e4e0e4c0e4b0e4a0e470e460e450e440e3d0e3c0e370e360e340e310e300e2f, 0xe9c0e9b0e9a0e990e980e960e950e940e920e8c0e8b0e8a0e890e880e870e860e850e840e830e820e800e7f0e7e0e7d0e7c0e790e750e740e710e700e6f0e6e, 0xeda0ed70ed60ed50ed20ed10ecf0ece0ecd0ecc0ecb0ec80ec70ec50ec40ec30ec10ec00ebf0ebe0ebd0ebc0ebb0eba0eb80eb70eb60eb30eb10eb00ea60e9d, 0xf120f110f100f0e0f0d0f0c0f0b0f060f050f040f030f020f010efe0efd0efc0efa0ef90ef80ef60ef40ef10eee0eed0eec0eeb0eea0ee40ee20ede0edd0edb]) (.leaf #[0xf4d0f4c0f4b0f490f480f470f460f410f400f3d0f3c0f3a0f390f350f330f300f2f0f2e0f290f280f270f260f210f1d0f1b0f1a0f190f180f170f160f150f14, 0xf7a0f780f750f740f730f720f700f6f0f6e0f6d0f6c0f6b0f6a0f690f680f650f640f630f610f600f5f0f5e0f590f580f570f560f550f540f520f510f500f4f, 0xfa30fa20fa10f9e0f9d0f9c0f9b0f9a0f990f980f950f940f930f910f900f8f0f8e0f8d0f8c0f8a0f880f870f850f840f830f820f810f800f7e0f7d0f7c0f7b, 0xfd40fd00fce0fcb0fca0fc90fc70fc60fc50fc40fc00fbf0fbe0fbd0fbc0fbb0fb90fb80fb70fb50fb40fb30fb20fae0fad0fac0faa0fa90fa80fa70fa60fa4]))) ((.branch 4 (.leaf #[0xffe0ffd0ffc0ffb0ff90ff80ff70ff50ff40ff30ff20fee0fed0fec0feb0fea0fe90fe80fe70fe50fe40fe10fe00fdf0fdd0fdc0fda0fd90fd80fd70fd60fd5, 0x10341033102e102d102c10291027102410231020101f101e101b101a101910171016101510131011100e100c100b100a10091008100610051004100310020fff, 0x108210811080107f107e107b107a10731071106d106810671060105e105b104f104c104b104a104910461045104410431041103f103b103a1039103710361035, 0x10bf10be10b910b810b310b210b110ac10ab10aa10a810a610a0109f109c109b109a10971096109410931091108e108d108c108b108910881087108610851084]) (.leaf #[0x10f210f110f010ef10ed10eb10ea10e910e810e610e510e010df10dd10dc10db10da10d910d810d710d610d510d310d210d010ce10cd10cc10cb10c510c410c3, 0x1133113211311130112e112d112c112911281125112411211120111c111a11171116111511021101110010ff10fe10fd10fb10f910f810f710f610f510f410f3, 0x1168116511621161115f115e115d115c115b115a115711561155115411511150114f114e114d114c114b11491147114411431142113e11391138113611351134, 0x119e119d119c119711961195119411921191118f118e118d118c11881186118311821180117f117d117c117b117a11781177117311721171116f116e116b116a]))))) ((.branch 8 ((.branch 4 (.leaf #[0x11cf11ce11cd11cb11ca11c911c811c711c511c211c111be11bd11bc11ba11b911b811b711b411b311b111b011ae11ad11a811a711a611a511a311a211a1119f, 0x11fa11f911f811f611f411f311f211f111f011ef11ed11eb11e911e711e611e511e411e011df11de11dd11dc11db11d911d811d711d611d511d411d311d211d1, 0x1240123f123e1235122a12291223122212211220121f121e121d121c121b12191217121612121211120e120d120c1208120612041203120211ff11fe11fd11fc, 0x126f126d126c126b126a126912681267126612651264126312621261125f125e125c125a125912581257125212511250124f124e124d12481246124412431241]) (.leaf #[0x12a1129f129d129c129b129a1299129812961295129412931291128f128c128b128a12881284128312821281127f127d12781277127612751274127312721271, 0x12e312e212e112de12dd12dc12db12d912d712d612d412d212ce12cd12cc12c912c812c712c612c412c212b712b612b312b212b112b012af12ae12a912a712a4, 0x1314131313121310130f130e130d130b130a130913081307130513041303130212ff12fd12fc12fb12fa12f812f712f612f312f212f112f012eb12e812e612e4, 0x136d136c136b136a1369136813661365136413631362135e135d135c135b135a13591357135613551353135213511350134c134b1320131f131e131c13181317]))) ((.branch 4 (.leaf #[0x13a213a113a0139f139b139a139713961394139313921391138d138c13891384138313821381137f137e137d137b137a1379137813741373137213711370136f, 0x13e213e113de13dc13da13d913d813d613d413d113d013cf13cc13cb13c813c713c413c313bf13be13bd13bc13ba13b813b513b013ac13a813a713a613a513a3, 0x141f141e141214111410140f140d140b14071405140414031402140113fc13fb13fa13f813f713f613f513f313f213f113f013ef13ee13ed13eb13e613e513e3, 0x145914551454145314521450144f144e144d14491447144414431442143f143e143d143c1439143814311430142f142d142c142b142914271424142214211420]) ((.branch 2 (.leaf #[0x148214811480147e147d147c147b14791476147514741473147214711470146f146e146c146b146a1469146814651464146314621460145f145e145c145b145a, 0x14b714b614b514b414b314b014ae14ad14a914a714a414a314a2149e149d14981496149514941493149214911490148f148e148c148b14891488148714861485]) (.leaf #[0x14e914e814e614e514e414e314e214df14de14dd14db14da14d814d614d514d314d214d114d014cf14cd14c714c614c514c414c214c114c014be14bd14bc14bb, 0x15211520151f15191518151715161515151315121510150f150e150d150b150a150915081507150414ff14fc14fa14f914f814f714f614f514f414ee14eb14ea, 0x1551154d154c154a1547154615451544154315421540153f153e153d153c153a15391538153715361534153315321531152e152d152b152a1528152615241522]))))))))))) ((.branch 33 ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x157b157a15791576157515741573157215711570156f156e156d156c156a1569156815661565156415631560155f155e155d155b155915571555155415531552, 0x15b415b115b015af15ae15ac15a915a815a415a315a215a1159f159c159b15971596159415911590158f158e158c158b158915871585158415831582157f157e, 0x15e015df15de15dd15dc15db15d815d715d615d515d215d115cd15cc15cb15ca15c915c815c715c515c415c315c115c015bf15be15bc15bb15ba15b915b715b6, 0x160e160d160c160b160a16071606160516041601160015fe15fd15fb15fa15f915f815f715f615f415f315f215f115ef15ee15ed15eb15ea15e915e815e315e2]) (.leaf #[0x163e163d163c163a163916381636163516341633162e162d162b162a16291628162716261624162316221621161f161e161d161b161a1619161816121611160f, 0x167c167b166f166e166d166c166a166916681666166516641663165d165c165b165916571656165316511650164e164c164a164816471646164516441640163f, 0x16ac16ab16aa16a916a316a216a116a0169e169d169c169b169a16991696169316921690168f168e168d168c168b168916881687168616851684168216811680, 0x16e616e416e216de16dd16db16da16d716d616d516d216d116d016ce16cd16cc16ca16c816c516c316c216c116c016bb16b816b716b316b216b116b016af16ae]))) ((.branch 4 (.leaf #[0x171e171d171c171b171a171817161710170f170c17061705170417031701170016fe16fd16fc16fb16f816f716f616f416f316f116f016ef16ec16eb16e916e8, 0x17831782177f177e177d177c177b177917721770176c17671766175717551752174f174c174b174a174917391733172e172c1729172517241723172217211720, 0x17b717b617b517b417b317b217b017af17ae17ad17ab17aa17a917a817a717a317a1179e179d179c179b179a179917981797179417921791178d178c17891787, 0x17f117ed17ec17eb17ea17e817e717e617e517e317e217e117e017df17de17dd17da17d917d817d617d517d317d217d017cf17ce17cd17cc17ca17c017bd17bb]) (.leaf #[0x18211820181f181d181c181b181a1817181618151813181218111810180e180d180c180b180918071805180318021801180017ff17fa17f817f617f417f317f2, 0x18511850184f184e184d184c18491847184418431842183f183e183d183c183918381833183218311830182f182d182c182b182a182918281825182418231822, 0x187e187d187c187b187a187918761875187418711870186f186e186d186918681867186618651864185e185d185c185b185a1859185818571856185518541853, 0x18b518b318b118b018af18ae18ad18ac18aa18a918a818a718a218a0189d189c189b189818971896189218911890188e188c188b188618851884188318811880]))))) ((.branch 8 ((.branch 4 (.leaf #[0x190218ff18fe18fd18fc18fb18f918f818f518f318ef18ed18ea18e918e518e418e318e218df18dd18dc18d918d818d718d618d518bd18bc18bb18ba18b918b6, 0x192c192b192a1927192619251924192219211920191f191e191b191a191919181917191619151914191219111910190f190e190d190b19091907190519041903, 0x195d195c195b195a19591957195619551954195219511950194e194d194c194b1947194619451944194219411940193e193d193c193b19351934192f192e192d, 0x19921991198e198d198c198a1989198819871985198419831982197d197c19781973197219711970196f196e196c196b196a196819671966196519611960195e]) (.leaf #[0x19c619c419c219bf19be19bd19bc19bb19b919b819b719b419b119b019af19ae19aa19a919a819a719a619a119a0199f199d199c199a19991997199519941993, 0x19f619f519f419f319f219f119f019ee19ed19e719e619e519e419e319e119e019df19dd19dc19db19da19d619d519d419d319d219d019ce19cd19cb19c919c8, 0x1a241a231a221a211a201a1f1a1b1a1a1a191a181a171a151a141a0f1a0e1a0d1a0b1a0a1a091a081a071a061a041a031a021a0019ff19fe19fd19f919f819f7, 0x1a571a561a541a531a501a4f1a4c1a4b1a4a1a491a461a451a441a431a421a411a401a3f1a3d1a3c1a3a1a381a341a331a311a301a2e1a2d1a2c1a2b1a281a26]))) ((.branch 4 (.leaf #[0x1a8c1a8b1a8a1a891a881a871a861a841a821a801a7e1a7d1a7c1a7b1a781a771a761a741a731a701a6f1a6e1a6c1a6a1a641a631a601a5f1a5e1a5b1a5a1a59, 0x1aba1ab91ab81ab71ab51ab41ab31ab11ab01aae1aac1aaa1aa81aa71aa61aa51aa11aa01a9f1a9c1a9b1a991a981a961a951a941a931a921a911a901a8f1a8d, 0x1ae51ae31ae21ae11ae01adf1ade1adc1ada1ad81ad61ad51ad41ad31ad21ad01acf1ace1acb1aca1ac91ac81ac61ac51ac41ac31ac21ac11abe1abd1abc1abb, 0x1b181b161b141b121b111b101b0f1b0a1b091b081b071b061b051b041b021b001aff1afd1afb1afa1af71af61af41af31af21aec1aeb1aea1ae91ae81ae71ae6]) ((.branch 2 (.leaf #[0x1b4d1b4c1b4a1b491b481b471b461b451b431b411b3b1b3a1b371b351b301b2f1b2e1b2d1b2c1b2b1b291b281b271b261b251b231b221b211b201b1d1b1b1b1a, 0x1be51bad1bab1ba91ba81ba71ba61ba31ba21b9f1b9d1b9c1b9b1b9a1b981b971b961b951b941b931b921b901b8f1b8e1b8c1b8b1b611b601b5f1b5e1b5c1b5b]) (.leaf #[0x1cac1ca71ca61c771c3f1c3e1c3d1c3c1c3b1c3a1c361c351c341c321c311c2c1c241c221c1f1c1a1c181c151c0f1c0d1c0a1c001bff1bfe1bfd1bfc1bfb1beb, 0x1ce11ce01cdf1cde1cdd1cda1cd91cd51cd41ccd1ccc1cca1cc91cc81cc71cc61cc41cc21cc11cc01cbe1cbc1cbb1cba1cb81cb71cb51cb31cb11caf1cae1cad, 0x1d161d131d111d0f1d0e1d0d1d0c1d091d081d051d041d031d021d011d001cff1cfe1cfc1cfb1cfa1cf81cf71cf41cf31cf11cf01ced1cec1cea1ce91ce51ce3]))))))))) ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x1d481d471d461d451d431d411d3f1d3d1d3c1d3b1d3a1d361d351d341d321d311d2e1d2d1d291d281d271d261d241d231d211d1e1d1d1d1c1d1b1d191d181d17, 0x1d761d751d731d721d711d701d6c1d6b1d691d661d651d641d631d611d601d5e1d5d1d5c1d5b1d591d581d571d551d541d531d521d511d501d4f1d4c1d4a1d49, 0x1da81da71da41da31da11da01d9e1d9c1d9a1d981d971d961d951d941d901d8e1d8d1d8c1d8b1d8a1d881d871d861d851d841d821d811d7f1d7c1d7b1d781d77, 0x1dd91dd81dd61dd51dd41dd21dd11dcf1dce1dcd1dcc1dcb1dca1dc91dc81dc61dc51dc41dc31dc11dbf1dbe1dbb1db91db51db41db21db11db01daf1dac1dab]) (.leaf #[0x1e0d1e0b1e0a1e081e061e031e021e001dfe1dfc1dfb1dfa1df91df41df21df01def1dee1ded1de91de81de71de61de51de31de21de11de01dde1ddc1ddb1dda, 0x1e3a1e391e381e371e361e351e331e321e311e301e2f1e2e1e2d1e2b1e2a1e291e281e261e251e241e231e211e1f1e1d1e191e171e131e121e111e101e0f1e0e, 0x1e691e661e651e641e631e611e601e5f1e5e1e5d1e5a1e591e561e551e541e531e511e501e4c1e4b1e4a1e491e481e471e451e441e431e421e411e3f1e3e1e3b, 0x1e9a1e991e981e971e951e941e931e921e911e8b1e8a1e881e821e811e801e7e1e7d1e7c1e7b1e7a1e791e761e751e741e731e721e711e701e6d1e6c1e6b1e6a]))) ((.branch 4 (.leaf #[0x1ede1edd1ed91ed81ed41ed31ed21ed11ed01ebe1ebb1eba1eb91eb71eb51eb31eb21eb11eb01eaf1eac1eab1eaa1ea91ea81ea51ea21ea11ea01e9f1e9e1e9d, 0x1f111f0d1f0c1f0b1f0a1f081f071f061f041f031f021f011efd1efc1efa1ef91ef81ef71ef61ef51ef21ef11eef1eeb1ee91ee81ee71ee61ee31ee21ee01edf, 0x1f421f401f3f1f3e1f3d1f3c1f381f371f351f341f331f321f311f2f1f2e1f2d1f2c1f2b1f281f221f211f201f1d1f1c1f1b1f1a1f181f171f161f141f131f12, 0x1f811f7f1f7d1f7b1f7a1f791f781f751f711f701f6f1f6e1f6c1f691f681f671f661f641f631f621f611f601f5b1f5a1f591f581f4f1f471f461f451f441f43]) (.leaf #[0x1fba1fb91fb21faf1fae1fad1fac1fa41fa31fa21fa11f9f1f9e1f9d1f9b1f9a1f991f981f941f931f921f911f901f8f1f8c1f8b1f8a1f881f871f861f841f83, 0x1ff51ff41ff21ff01fee1fed1fec1fe91fe81fe71fe61fe51fdf1fdc1fdb1fda1fd91fd81fd71fd51fd01fcf1fce1fcd1fcb1fca1fc91fc81fc71fc41fc01fbc, 0x205b205a2059205820562055205320512050204f204e2049204720412040202820222020201d20132011200d200c200b2009200820001ffe1ffb1ffa1ff71ff6, 0x20892088208620832080207f207e207d207c207b207a20792077207620752074207320722071206f206e206d206c206b206a2068206720652063206220612060]))))) ((.branch 8 ((.branch 4 (.leaf #[0x20df20dd20d920d520d220d120d020b720b620b520b320b120ab20aa20a720a620a520a220a1209f209e209c209b209a20992097209420932092208f208b208a, 0x21422141213e213d212b212a21282127212621252124212221212120211f211e211d211821172116211221112110210f210d210b21092105210420fe20e520e3, 0x21722171216f216e216b216a21692168216621652164216221612160215f215b215a21592158215621552154215221512150214f214921482146214521442143, 0x21a721a521a421a321a2219d219c219b219a219821972195219321922191219021862185218321822180217f217e217d217c217a217821772176217521742173]) (.leaf #[0x21d521d421d121d021cf21cd21c921c821c721c621c421c221bf21bd21bc21bb21ba21b921b821b721b621b421b321b221b121b021af21ae21ad21ac21aa21a9, 0x2222221c221b221a221722162215221422122211220c220b22082203220221ef21eb21e921e621e521e421e321e221e121e021df21de21dd21db21da21d921d8, 0x2251224f224e224d224c224b224a22492248224722462245224322412240223f223e223c223b22392237223622352234222f222e222d222c222a222922272223, 0x229d229a2299229622952293229222912290228f228b228822852284228322822280227f227e227d227c2278227622722271225c225b225a2259225722552254]))) ((.branch 4 (.leaf #[0x22cc22cb22c922c822c722c522c422c322c222c122bf22be22bc22ba22b922b722b622b422b222b122b022af22ae22ac22aa22a922a622a522a422a222a0229f, 0x231f231c2319231823172316231323122311230f230e22f622f522f422f222f022ef22ed22eb22ea22e722e522e322e222e122e022df22d422d022cf22ce22cd, 0x235823562355235423532350234f234e234d234b234a2340233f233e233c233b233a233923382337233623342333232e232d232c232923262325232423232321, 0x23a523a4239d23972396238b238a23872386237b237a2379237823762375237423732372236e236d236c236b2369236823672365236423632362235c235b235a]) ((.branch 2 (.leaf #[0x23f923f823f723f623f423f323f223df23da23d623d523d323d223d123cf23ce23cd23cb23c923c623c423c323c223c123c023bf23bd23bb23b723b623b323b1, 0x2444244324422441243f243e243c243a24392438243724312430242b242a24262425242424222420241f241d241c241b241a2415240f240a2404240023ff23fb]) (.leaf #[0x247f247e247d247c247b247a247924772476247324722471246724652462245f245e245d245c245a24582454245324512450244f244e244d2448244724462445, 0x24aa24a924a824a624a424a324a224a1249f249e249924982496249524942493249224912490248f248c248b248a248924882487248624852484248324822481, 0x24e124df24de24da24d924d824d724d624d524d124cf24ce24ca24c924c824c624c324c224c124bf24bb24ba24b924b824b624b324b024af24ae24ad24ac24ab]))))))))))))) ((.branch 66 ((.branch 33 ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x2523252225212520251f251e251d251c251b251a2518250a25062505250325022501250024ff24fe24fd24fc24fb24f924f824f624f424f324f224f124e724e2, 0x256525642561255e255c255a25592558255725562550254f254e254c25472542253e253c253b253a2539253825322531252f252d252b25292528252725262525, 0x25a425a3259f259d25992598259425932591258e258b258a258925852584258325812580257f257d257b257825752574257325722571256f256b256a25692566, 0x25e025df25de25dd25dc25da25d925d825d725d625d525d125ce25cd25cc25cb25c725c025be25b925b525b425b325af25ae25ad25ac25aa25a925a825a625a5]) (.leaf #[0x261426112610260f260e260b260a26072606260426032602260125ff25fe25fd25fc25fb25f625f425f225f125f025ef25ee25eb25ea25e625e525e425e325e1, 0x2652264f264d264a264926482645264426432642263e263a26392637263426332630262f262e262d262a2629262826252624262226212620261f261d261b2615, 0x267c267b267a2679267826762675267426722670266c266b266a26692668266726642663266226612660265f265d265c265b265a265926572656265526542653, 0x26af26ae26ad26ab26a926a726a526a426a326a2269e269d269c269a26992696269526922690268e268d268c268b2687268626852683268226812680267e267d]))) ((.branch 4 (.leaf #[0x26de26dd26db26d926d726d526d426d326d226cd26cc26cb26c926c826c726c626c526c426c226c126c026bf26be26bb26ba26b926b826b726b426b226b126b0, 0x270d270c27052704270327022701270026fe26fd26fc26fb26f926f826f726f626f326f226f026ef26ee26ed26ec26eb26ea26e726e526e426e326e226e026df, 0x273c273a273927382737273627352734273327312730272f272e272c272b2729272827242723271e271d271c271b2719271827162715271427132712270f270e, 0x27982790278b2789278827872783278227752772276f276e276d276b2765276427622761275f275e275d275c275b275a2751274f274a2748274427432740273f]) (.leaf #[0x27e427e327dc27d127d027cb27ca27c727c627c327c227c027bd27bc27bb27ba27b927b627b227b127ae27ad27ac27ab27a927a827a727a627a527a0279c279b, 0x284928482847284628362830282b282928252823281f281b28182817281627fa27f927f727f627f527f427f227f127f027ef27ee27eb27ea27e927e827e627e5, 0x289e289d289c289b289628952894288c28882887288628852884288328822880287f287d287c287a28772876286f286d286928642863285a28542852284f284c, 0x28d328d228d028ce28c828c728c428c328c228c028bf28bd28bc28bb28ba28b828b728b528b328b228af28ae28ad28ab28aa28a928a828a728a628a428a228a0]))))) ((.branch 8 ((.branch 4 (.leaf #[0x290e290d290c290a290929062905290128fd28fc28fa28f928f828f728f628f428f328f228f128f028e328e228e028df28de28db28da28d828d728d628d528d4, 0x293a293929382937293629352934293229312930292d292c292b292a2929292829272924292229212920291f291e291d291b2919291729152914291329122911, 0x29682966296329622961295e295d295c295b295a2959295729562955295429522951294f294d294b294a2949294829452944294329422941293f293e293d293c, 0x29942993299229912990298f298d298c298a298929862983298229812980297e297d297c297b297929782977297629752973297229712970296e296d296c296b]) (.leaf #[0x29cf29cb29ca29c929c829c729c629be29bb29b929b629b529b329b229af29ae29ad29ab29aa29a929a729a529a229a0299f299e299d299c299a299929982997, 0x2a242a1a2a192a142a132a122a112a0f2a0d2a092a082a072a062a052a042a032a022a0129fb29f929f629ec29e529e429e329e229e129d929d729d429d329d0, 0x2a712a702a6f2a6e2a6d2a6a2a652a632a602a5f2a5e2a552a3e2a3d2a3b2a3a2a392a382a372a352a342a322a312a302a2f2a2e2a2c2a2b2a292a272a262a25, 0x2aad2aac2aaa2aa92aa82aa72aa62aa12a9f2a9c2a9b2a9a2a912a8e2a8d2a8c2a8a2a882a862a822a812a802a7e2a7d2a7c2a7b2a7a2a772a762a752a742a73]))) ((.branch 4 (.leaf #[0x2ade2adc2adb2ada2ad92ad82ad72ad52ad42ad32ad22ad02acf2ace2acc2acb2aca2ac92ac52ac12ac02abf2abe2abc2abb2aba2ab82ab72ab62ab52aaf2aae, 0x2b0b2b0a2b092b082b062b042b022b012aff2afe2afd2afb2af92af82af72af62af42af22af02aef2aee2aed2aec2aea2ae92ae72ae62ae52ae42ae32ae02adf, 0x2b562b542b512b4f2b4e2b4d2b302b2f2b2e2b2d2b2b2b272b262b252b242b232b222b212b202b1f2b1e2b1c2b1b2b192b172b162b152b142b0f2b0e2b0d2b0c, 0x2b832b822b812b7f2b7d2b7c2b7a2b792b782b772b762b752b732b722b712b702b6f2b6e2b6d2b6b2b6a2b682b672b662b652b642b5e2b5d2b5c2b5a2b592b58]) ((.branch 2 (.leaf #[0x2bb62bb52bb42bb32baf2bad2bab2ba82ba72ba62ba42ba32ba22ba02b9f2b9e2b9d2b9b2b972b962b952b942b922b902b8d2b8b2b8a2b892b882b862b852b84, 0x2bff2bfe2bfd2bfc2bf72bf62bf32bed2bec2beb2bea2be92be82be72be52be32be22be12be02bde2bdd2bdc2bdb2bda2bd92bcf2bce2bc32bc22bc12bbf2bb7]) (.leaf #[0x2c452c402c3f2c3e2c3d2c3c2c3b2c3a2c392c382c372c352c312c2e2c292c282c272c212c202c1f2c1e2c1d2c192c172c132c0f2c0e2c0d2c082c042c022c01, 0x2c7e2c7c2c752c742c732c722c6b2c682c662c642c632c622c612c5b2c5a2c592c582c572c562c552c542c532c522c4e2c4d2c4c2c4b2c4a2c492c482c472c46, 0x2cb52cb42cb22cb02caf2cae2cac2ca72ca52ca42ca32ca22ca02c9f2c9a2c992c982c972c962c952c922c912c902c8b2c8a2c892c882c862c852c842c832c82]))))))))) ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x2d482d472d462d442d432d422d402d3f2d372d362d322d2e2d2b2d2a2d292d282d262d252cff2cfa2cf82cf52cf32cef2cec2cd22cd02ccf2cba2cb92cb82cb7, 0x2da12da02d9f2d9c2d9b2d982d972d952d942d922d912d902d8e2d8d2d8c2d8b2d8a2d872d862d852d812d802d612d602d5f2d5a2d592d562d552d542d532d51, 0x2e242e232e212e202e1f2e1e2e132e122e112e102dfd2dd92dd82dd72dd62dd52dd32dcf2dcd2dc92dc82dc72dc62dc52dc42dc32db32db22da72da52da32da2, 0x2e532e512e502e4f2e4e2e4c2e4b2e4a2e482e472e462e452e412e402e3e2e3d2e3c2e3b2e3a2e392e362e322e312e302e2f2e2e2e2d2e2a2e292e282e272e25]) (.leaf #[0x2e8c2e8b2e8a2e892e882e852e822e812e7f2e7e2e7b2e7a2e782e742e732e722e702e6c2e6b2e682e672e662e652e632e612e5f2e5d2e5c2e5b2e5a2e582e57, 0x2ebe2ebc2eb92eb72eb52eb42eb32eb22eb12eae2ead2eab2eaa2ea92ea82ea62ea52ea42ea32ea22e9a2e992e982e972e962e952e942e932e922e902e8f2e8d, 0x2f462f452f442f432f422f412f402f3b2f2c2f2b2f2a2f292f282f252f212f1c2edf2edd2edc2edb2ed62ed52ed42ed22ece2ecd2ecc2ecb2ec22ec12ec02ebf, 0x2fbc2fbb2fb82fb72fb62fb42fb32f7e2f7d2f7c2f7b2f792f782f772f762f732f722f712f6f2f6e2f6d2f6c2f692f662f652f632f612f5f2f5b2f592f562f47]))) ((.branch 4 (.leaf #[0x310c310b310a3108310531043071306f306e306c306b306930682fd72fd62fd52fd42fd32fd02fce2fcd2fcc2fcb2fc92fc82fc72fc62fc42fc22fc02fbe2fbd, 0x319331923190318f318e318d318c3175316731663165315f315d315c315b315a31583157315631553154314c314b31313130312f312e312d312c31233122310d, 0x322c322b322932283227322532233220321e321d321c31ff31fe31fd31fc31fa31f931f831f731f631f031ef31db31d731ce31cc31c831c731b731b131953194, 0x325f325e325b3259325732563255325432513250324e324d324b324a32483247324632453244324332423240323f323d323c323b323a3239323632353233322d]) (.leaf #[0x329f329a3290328f328d328c328b328932853283327f327d327c327a3279327832773273327232713270326d326c326b326a3269326832673266326532613260, 0x32f032ec32eb32e932e832e732e632e532e432e132e032df32de32dc32db32da32d832d732d632d532d032cb32ca32c932c832c732c632bf32bd32b932b732a1, 0x3330332f332e332b332933283327332633243323332233213315330933063304330333023301330032ff32fd32fc32fb32fa32f932f732f632f532f332f232f1, 0x3364336333623361335f335d335a33583357335633553354335333513350334f334e334d334c334b334a3349334733463344334233413340333f333533343333]))))) ((.branch 8 ((.branch 4 (.leaf #[0x339c339b339933953394339333923390338d338a338933883387338633853384338333813380337f337e337d337b337a3378337633753373336e336c33693368, 0x33d333d233d033cf33cd33cb33ca33c933c833c333c233c033bd33bc33bb33b933b833b733b633b533b433b233b133b033af33ae33aa33a833a533a433a3339d, 0x34b034af34a934a834953491347c3445343e343c34393430342534233422342134203419341734133412340f340e340b340633f433e033d933d833d633d533d4, 0x34fc34fb34fa34f934f834f634f534f334f234f134f034ef34ec34e634e534e434e234e134e034de34dc34d934d734d634d534b834b734b634b534b334b234b1]) (.leaf #[0x354735433541353f353b35293528352735253524352335223521351d351c351a351935173516351535133510350e350a35083507350535043503350234fe34fd, 0x3583358235813580357e357d357c357a357935783577357235713570356f356d356c356b3569356835673566355d355c355b355a355835553554354f354d3549, 0x35bc35ba35b835b635b535b335b135af35ad35ac35ab35aa35a835a735a235a0359c359a359935973596359535923591358d358c358a35893588358735863585, 0x35f035ef35ec35eb35e935e835e735e635e435e335e235e135e035db35da35d935d735d535d335cf35cd35cc35ca35c935c835c535c435c235c135bf35be35bd]))) ((.branch 4 (.leaf #[0x3629362836263624362336223621361d361c361a361836173615360636053604360336023601360035ff35fe35fd35fc35fb35fa35f835f735f635f535f435f1, 0x3679367836763674367336723671366a3667366636653663365f365e365d365c365a365836553653365236513650364f364e364a3642362f362e362d362c362b, 0x36d036bb36ba36b636a936a736a536a436a336a236a1369e369d369a36993698369736953694369236913690368f368e368d368c368b368a367e367d367c367b, 0x36fd36fc36fa36f836f736f536f336f236f036ef36ec36eb36ea36e936e836e736e436e336e136e036de36dd36dc36db36da36d936d736d636d536d336d236d1]) ((.branch 2 (.leaf #[0x376a375d375c375a375837573752374d374b3749374637453742373e373637313730372f372d372c3713371237113710370d370c370a370537033702370136fe, 0x38673866386538643860385e38543852384e3849384738443843383337953794379337923790378f378e378d378c378837863784378337823781378037783777]) (.leaf #[0x39543953395238f738f338ed38ec38dd38d138b538a2389f389d3898388838823881387f387c387b38783877387638753873386f386e386d386c386b386a3868, 0x39b939b839b539b439b039af39ae39ad39a739a5399f399e399b398e398d398c398a39843981397f397c397b39793960395f395d395c395b3959395839573955, 0x39f839f739f639f439f139f039ed39ec39ea39e739e639e539e439e339e239df39dd39d939d739d439d339d139d039cb39ca39c839c739c439c339c239c139c0]))))))))))) ((.branch 33 ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x3a3a3a393a383a373a303a2f3a2e3a2d3a2c3a2a3a273a263a233a223a203a1f3a1e3a1d3a1b3a193a153a143a113a103a0e3a093a083a053a0339ff39fd39f9, 0x3a833a823a813a803a793a763a753a743a723a6e3a6d3a6c3a6b3a693a673a643a623a613a603a5f3a5e3a5d3a593a513a453a443a433a423a413a3f3a3e3a3c, 0x3afe3afd3afc3afb3af83af73af63af43af33af13af03aef3aee3aed3aec3ad43ad33ad23ad13ac63ac43ac03abf3abe3aba3a8d3a8c3a8b3a8a3a883a873a85, 0x3b333b313b2f3b2c3b2a3b293b283b273b263b253b1d3b1c3b1b3b1a3b183b173b163b143b133b123b103b0f3b0d3b073b063b053b043b033b023b013b003aff]) (.leaf #[0x3b6b3b6a3b663b653b643b633b623b603b5f3b5e3b5b3b5a3b573b563b543b523b4f3b4d3b4a3b493b483b453b443b423b413b3d3b3c3b393b383b373b353b34, 0x3bdc3bc73bc63bc53bc43bc23bc13bc03bbe3bbd3bbc3bbb3bb73bb33bb03baf3ba13b9f3b903b8f3b803b7e3b7c3b7b3b7a3b793b753b743b713b703b6f3b6e, 0x3c763c753c743c733c723c713c703c6f3c6e3c6d3c6b3c693c683c673c663c443c433c423c333c2f3c2e3c253c243c1a3c143c123be63be53be33be23be13bdf, 0x3ca63ca53ca33ca13ca03c9f3c9e3c993c983c973c963c953c943c933c923c913c903c8f3c8e3c8c3c883c873c863c853c833c803c7d3c7c3c7b3c7a3c783c77]))) ((.branch 4 (.leaf #[0x3d353d333d323d313d303d2e3d2d3d2c3d2b3d2a3d293d283d253d243d233d203d1f3cd43cc53cc33cc03cbf3cb33cb23cb13cb03cae3cac3cab3caa3ca93ca8, 0x3d7b3d7a3d773d763d743d733d6f3d6e3d693d5e3d5d3d5c3d5b3d5a3d563d543d523d513d503d4f3d4b3d4a3d473d463d453d443d423d3e3d3d3d3c3d393d38, 0x3e093e073e053e043e033e013e003df33df23ded3dea3dde3dd83dd73dd63dd53dd13dd03dce3da93da73da53da33d9d3d9c3d9b3d973d913d813d7f3d7d3d7c, 0x3f663f653f5a3f3d3f3a3f2b3f2a3f283f273f073f063f023f013eff3efd3efb3ef93ef83ef73ef63ef53ef33ef23ef13ef03eed3eec3e803e3a3e393e383e37]) (.leaf #[0x3ff63ff23ff03fef3fed3fec3feb3fea3fe33fe23fe13fe03fde3fdd3fdc3fdb3fda3fb63f9e3f9d3f9b3f993f973f933f923f913f8f3f8e3f8c3f8b3f7a3f67, 0x4061405d404340424040403d403b403740364035403340324030402f402a40294027402640254024400f400d400b400a4009400840073ffe3ffd3ffc3ffa3ff8, 0x40e740e640e440e340e040df40dd40dc40db40d940d740b2408e4086408540834082407d407940784077407640754073407240714070406f406b406940654064, 0x414c414b41484144413f413e4137413641334132412d41194113411241114110410d410b410341024101410040ff40fe40fc40fb40f940f740f640ee40ec40e8]))))) ((.branch 8 ((.branch 4 (.leaf #[0x4414441344114410440f440e4404440243fe43fd43ab438742fc41ce41a7417441734172416f416b41664163415a415941564155415341524150414f414e414d, 0x4460445f445d445844574456444f443e443d443944354434443344324431442f442e442d442c442b44284427442544244423441f441e441c441a441744164415, 0x44d344cf44ce44c444bd44bc44bb44a244a144a0449f4499449844974496449544914490448f448e448d448c448a4489448544834480447f44714470446f4461, 0x456845654562453545344533453245314530452f452e452d4517451544fe44fd44fa44f944f844f644f444f244f144f044ef44ed44e444de44dc44db44da44d5]) (.leaf #[0x466a46684667466646654664466346184617461646154613461246114610460f460e460d46094608460745ef45ee45ec45eb45ea45e9458e458c458b456d456c, 0x46bf46b046ad469646954694469346924691468f468e468d468c468b46884687468546834681467d467c467b4679467846774676467346724670466f466d466b, 0x47414740473f473e473d473c473a473947384737473647354732471e471a46fc46f646f346f146ed46eb46d246d146cf46ce46c746c646c546c446c346c146c0, 0x479b479a47974796479447924791478f478e476e476d47624761475e475d475c475b4759475847574755475447534752474e474d474847474746474547444742]))) ((.branch 4 (.leaf #[0x47d747d647d547d447d347d147cf47cd47c947c747c547c447c247c147c047bf47be47ba47b747b647b547b447b247b147b047af47ae47a947a747a347a2479c, 0x48b348b248b148ab48aa480d480c480a480948084807480648054804480247f047ef47ed47ec47eb47ea47e947e847e747e647e547e447e347de47dc47db47da, 0x49314930492e492d492c492b49294928492649224921491c491b491949154914491349124910490e490b490949084907490649044901490048fd48fb48f648f5, 0x496c496b4966496549634960495f495e495c4955495449534951494d494c494b494a49484945494249414940493f493e493d493c493b49394938493749364935]) ((.branch 2 (.leaf #[0x49fe49fd49fc49f949f849f649ed49dd49b449b349b249b149ac49ab49a349a1499e499d498449814980497a49794978497749764975497349724970496e496d, 0x4bcf4bce4bcb4bca4bc84bc74bba4bb84bb64bb24bad4b664a3f4a344a334a324a314a304a2d4a294a284a1b4a184a174a0f4a0b4a0a4a084a054a014a0049ff]) (.leaf #[0x4c034c014bff4bfc4bfa4bf94bf84bf74bf34bf24bf14bef4bed4bec4beb4bea4be94be84be64be54be24be14bdf4bdd4bdc4bdb4bda4bd94bd64bd54bd44bd0, 0x4eb54eb34eb14eb04ead4eac4eab4ea84ea74e794e6d4e6c4e654e274c644c634c624c614c5f4c5e4c5d4c5b4c5a4c594c584c544c534c094c084c074c054c04, 0x4f014f004eff4efe4efd4ef84ef74ef64ef44ef34ef24ef04eee4eeb4ee94ee84ee74eca4ec94ec84ec74ec54ec44ec34ec24ec14ebf4ebe4ebd4ebc4ebb4eba]))))))))) ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x4f3f4f3d4f2b4f2a4f284f274f264f254f244f234f224f214f204f1e4f1d4f1b4f194f184f174f164f114f104f0e4f0c4f0b4f0a4f094f084f074f064f044f03, 0x51a851a651a551a451a3519f519e519d518c518b518a51895188518750c050bf50ba50b250854fc04f4d4f4c4f4a4f494f484f474f464f454f444f434f424f41, 0x520051fd51fc51ed51ec51ea51e851e751e551e451e351e251cd51cc51c751c651bf51be51bd51bc51bb51b851b751b651b551b351b251b151af51ae51ad51ac, 0x525f525e525852555250524f524d524c524b52485247524452425240523e523c523852375234523352325231522f522e522d522a5229522752265224521e5207]) (.leaf #[0x52e652e552e252e052df52da52c252c152c052bf52bd52bc52ba52b952b552a952a852a752a652a552a352a252a0529f529e529d527d527c5278527752765275, 0x53465343533e533d533c53385337533653355334533353325330532e532d532a5329532853155314531353075306530452fd52fc52f352f252ef52ee52ed52e7, 0x566f566d5665563956385637563556345620561f561c561b55e655e553d253c853c653c353c253c1538653705366535b5359535553545353534e534d534b534a, 0x56d556d456d356d256cf56cb56ca56c956c856c056bf56be56bd56bb56ba56a0569f56975696569556945693569256915690567b567a56785677567356725671]))) ((.branch 4 (.leaf #[0x5712570c570b570a570957085707570657055704570356fe56fc56f956f856f556f456ee56ed56ec56eb56e356e256e156e056df56db56da56d956d856d756d6, 0x579c579b578b577e577c577b57775776577557745773577257715770576f576057585757573a573757365724572357215720571f571e571a5719571757145713, 0x57fc57fb57f857f757f657f557f357f257f157ef57ee57ed57ec57e857e657e257e157dd57d457d257cf57ce57cd57cc57cb57ca57c857c457c357c2579e579d, 0x58ad58a958a758a558a458a358a2589e589d585258515850584e581a5819581858165815581458125810580d580a5809580858075806580558035802580157ff]) (.leaf #[0x59445940593f593e593d593b593a5939593859315926592158ee58e258e158e058d058c658c558c358c258c158b958b858b758b658b458b358b258b058af58ae, 0x59b259b059af59ae59ad59a859a4599b5999598e598b598a59895980597f597d597a59795978595c595759545953594e594d594c594b594a5949594859475945, 0x5a7e5a7d5a465a455a365a345a305a1e5a1a5a195a185a055a0459f359f259f159ef59ee59ec59ea59e959da59d859d659d559d459d359ce59cd59c659c359b4, 0x5ae55ae45ae35ae25ae05adf5ada5ad95abd5ab05aaf5aae5a995a985a955a945a935a915a8f5a8e5a8d5a8c5a8b5a8a5a895a875a865a855a845a835a815a80]))))) ((.branch 8 ((.branch 4 (.leaf #[0x5d0f5d0e5d0d5d0c5d095d065d055d045d035d025d015cf85cf75c5e5c535b005aff5afe5afd5afc5afb5afa5af95af75af65af55af35af25aef5aed5ae95ae8, 0x5fc95fc85fc65fc55fc45fc35fc25fc15fc05fbf5fbe5fbc5fbb5fba5fb95fb85fb75fb65fb45f435f405f3a5f395f385f335f315f305d175d155d145d115d10, 0x6093609260916090608f608e608c608b608a608960886084607d607c60716068600960085fdb5fda5fd95fd85fd75fd65fd55fd35fd25fd05fcf5fce5fcd5fcc, 0x61276126612561246123612261216120611f611a611961186117611661156114611360c060ba60b960b760a860a760a560a360a1609d609b609a609860976096]) (.leaf #[0x6171616f616e616d616c616b616a61696168616661656163616261616160615f615a6159615861566155615461526150614d614b614a6149612c612b612a6129, 0x639f639e639d6398639763966394639363926390638e638b638963886387636b636a6368636461ab61aa6193619261816180617d617c617b617a617861776172, 0x64aa64a864a564a364a264a1648564846473647264716470644b644a64456444643e643d643c63e263e163ac63ab63aa63a963a863a763a663a463a363a163a0, 0x650a650965086507650565036502650164ff64fe64fc64fb64c664c564c464c364c264c164c064be64bd64bb64ba64b964b864b764b264b164b064ae64ad64ac]))) ((.branch 4 (.leaf #[0x65a965a865a765a565a465a265a165a0659f659e6599659865976595659465936591658f658c658a658965886529651b6519651565146511650e650d650c650b, 0x660f660e660d660c660b660966086606660566046603660265fd65fc65fb65f965f865f765f565f365f065ee65ed65ec65d465d365d065cf65ad65ac65ab65aa, 0x6646664566446643663d663c663b663a6638663666336632662d662c662b662a6628662566246622661f661e661d661c661b661a661966186614661366116610, 0x66756673667266716670666f666e666c666b666a666966676666666566646663665d665b6659665866576656665266516650664f664e664d664c664a66496647]) ((.branch 2 (.leaf #[0x697f695d6951694f693b693a66c166c066bf66be66bd66bc66bb66b966b866b666b566b466b366b266ac66ab66aa66a966a766a566a266a166916690668f6676, 0x6b7f6b7d6b7c6b7a6b796b786b736b706b6f6b6e6b6d6b6c6b6b6b6a6b686b676b656b646b636b626b616b5469b369b269ac6986698569846983698269816980]) (.leaf #[0x6bbf6bbc6bbb6bba6bb96bb76bb66bb56bb36bb26bb16bb06ba96ba46ba36ba26ba16b9f6b9e6b9d6b9b6b9a6b996b986b8c6b8b6b8a6b886b876b866b846b82, 0x6eb86eb66eb56eb46e9a6e996bf26bf16bf06bee6bed6bec6bea6be96be86be66be26be16be06bdf6bdc6bdb6bd96bd86bd56bd46bd36bd16bd06bcf6bcd6bcc, 0x749d6fd66fd56f3c6f316ed96ed86ed76ed66ed56ed46ed36ed16ed06ece6ecd6ecc6ecb6eca6ec56ec46ec36ec16ec06ebf6ebd6ebb])))))))))))))) def policyFixedCompact0Rename (i : Nat) : Nat := (((policyFixedCompact0VariableTable.get 0 (i / 32)) >>> (16 * (i % 32))) &&& 0xffff).succ def policyFixedCompact1ClauseTable : PackedNatTable.Table PackedNatTable.Block := (.branch 0x8e ( (.branch 71 ( (.branch 35 ( (.branch 17 ( (.branch 8 ( (.branch 4 ( .leaf #[⟨0x3e01e00e406e03501980c405e02d01580a404e025011008003c01c00d006002c014009004001c00d005802400e0050018004000000, 0x620067005a004b00610053005f005e00520058005b0056005b0054004a00500053004e0053004a004d004600490044003e000800070041003c003f0038003b002d00370036002c00300033002e0024002a002d0028002d0024002700200023001f001a001d00120019000e001900140017000f0011000a000d0006⟩, ⟨0x46022010808003e01e00e406c03401900c005a02a0140098048022010007803801a00b805402601100780340140080030010004000, 0xa900b700a700b500b400a600b000b300ac00b300ae007a001e001e007b00af00a800ab00a600ab00a200a5001e005d00a1009c0082009f008f009d0096009900940099009000930083009100900082008c008f0088008f001e0043008b00840087007e00810071007d007c00700074007900340007007700720068006e0071006c00710068006b00640067⟩, ⟨0x47022810808003e01e00e806e03501980c405e02d01580a404e025011808403e01c00d006002a013008803c01a00a0038010004000, 0xfa00ff00fe00fb00fd00fc00f000ef00fb00fa00ee00f600f9001e00c700f500f000f300ee00f300ea00ed00db00e900e800da00e200e500e000e500dc00df00d300dd00dc00d200d800db00d400db001e009b00d700ce00d100cc00d100c400a700cb00b300c900c800b200c200c500ba00c500c000bd00c300be0007007b007a000700bf00b600b900b400b9⟩, ⟨0x4d025812408c04302000f807803a01c00d406603101780b4056029013008c04001e00e006802e014008803c01a00b0048018006000, 0x1400145013e0145013a0116013d013c0116013b01360117013d0127013b013a012601340137012e0137013201310135012a012d0128012d0119012b0117012901240127011c01270122011f0125012000e6001e001e00e701210118011b0116011b01120115010e00ee0111011000ee010f010a00ef011100f9010f010e00f80108010b0100010b0106010301090104000700c700c600070105⟩]) ( .leaf #[⟨0x4f026812808e045021010007a03b01c00d006402f01600a404c024010807c03a01b00c805802801200800380180090030010004000, 0x1a701a901a2017c01a5019e019501a1018f019f01960194019901930195018e018c0191017d018d01820189018b01840180017c018701830185017e017d0183016801730179017201710175016c016a016f0169016b01620165016701020163015e016101520161015d015f010c0007015b0156015901540159014901570147015501510153001e010d014f001e0139014d0148014b0146014b01420145⟩, ⟨0x520278134094048022810807e03d01d00dc06803101700b0054027012808804001e00e006802e014009003c01800a0038014006000, 0x21e021c02210163021d0218017a021b021702190206020d0215020c01ec020f020801c4020b0207020901de01e7020501f601f501f901ee01f101f301ea010d01ef010c01eb01ef01eb01ed015a01eb01e601e401e9010d01e501e001d801e301df01e101dc01d4017b01db01da017a01c801d101d301cc01ca01cf01c901cb01b801c101c301bc01ba01bf01b901bb01b201a901b501a301b301ae01aa01aa01a801ad⟩, ⟨0x540288134096048022810807e03c01c80dc06a03301800b4056028012808804001e00e0068030015009804401c00b0040014006000, 0x25e026502670260025c02580263025f02610258025b025f025202550257010c024f0253024e010d0253024e024302510242024f0251024e01110110024f023f024d02460249024b0244023c024700f802450242023e0241023c023f02430242023d023f0240010f023e00ef00ee023f010a023d023a01010232023702390236010902330235023001620233022801630233022a022d022f01c60229022b022801070216021f0227⟩, ⟨0x56029814409c04c024011808604001e80ec07003401900c005a02a013809404401f00e006802e014008803c01800a0038014004000, 0x2ea02e802ed02d902e902e402a202e702e302e502de02d802bc02e102dd02df02d802bc02dd02da02d902dd02d402cd02d702bf02d502cc02c702d102c202c002be02c502bd02c302bb02c102a602b102b702b002af02b302aa02a802ad02a702a9028c0295029f0294010c02970290028e0293028d028f027c0285028b0284025802870280027e0283027d027f02780271027b026b0279027001d40273026f0271026a0268026d02590269⟩]))) ( (.branch 4 ( .leaf #[⟨0x54028813c09804a023810c08203e01d80e406c03301880b8058029013809004201f00e006802e014009003c01a00a0040018006000, 0x36a0368036d03670369036203600365035103610356035d035f035803540350035b03570359035203510357034c034a034f0349034b0344033a03470340033b03430321034103360319033903270337032603240329031f03250320031e0323031a0318031d03180316030e03130315030f03110304030d030f030c0305030f0305030b030603040309030202a202dc02ff030102fe00f702fc02fa02f402f702f902f202db02f5⟩, ⟨0x55029013c09a04a024011808804101f00ec07003601980c405c02b014009404602100f0070032016009804001a00a0038014004000, 0x3da03e303e503de03dc03e103db03dd03d603d403d903d303d5030d03d103d0030c03ba03c903cf03c803c503cb03c403c303c703be03bc03c103bb03bd03b602e503b902eb03b7032e02d803b303ae03a403b103a203ab03ad03a603a403a903a303a5000403a1039c039a039f0399039b034803910397039003500393038c01ca038f03760385038b0384038103870380037f0383037a0378037d0377037903720369037503630373⟩, ⟨0x55029014009a04a023811008404001e80e806e03401900bc058029013809004402000f006c030015009804401c00b0040014006000, 0x46204600465045f046104480457045d045604530459045204510455044c044a044f0449044b04460444042e043d0443043c0439043f04380437043b043204300435042f043103980427042d0426030a0429042203d5042503070423041a0404041d0345041904150417041604140402040d0413040c040b040f040604040409040304050002040103ea03f903ff03f803f503fb03f403f303f703ee03ec03f103eb03ed03e603dc03e9⟩, ⟨0x5902b81500a204f026012808e04302080f807603801a80cc06002d01580a004a02200f8070032016009804401c00b0040014006000, 0x4f104f304e404ed04ef04e804e604eb04e504e704e004d904e304cb04e104d804d304dd04ce04cc04ca04d104c904cf04c204c504c704c004bb04c304bc04ba04bf04b604b404b904b304b504ae04ad04b104a804a604ab04a504a704a0044a04a3049c0430049f04960460049903d203070495047e048d0493048c0489048f04880487048b048204800485047f0481047a03ec047d0476046c0479046a04730475046e046c0471046b046d045e04670469⟩]) ( (.branch 2 ( .leaf #[⟨0x5a02b814c0a204e026012408c04302080fc07803a01b80d406402e01600a404a02200f8070032016009804401e00c0048018006000, 0x570057705790572056e056c05750571057305680566056b056505670554055d0563055c0530055f05580556055b05550557054e054a054a0548054d05470549054205400545053105410536053d053f053805340530053b0537053905320531053703d003100304052f052a0480052d052604b405290522051205250510051b0521051a0519051d0514051205170511051304c1050b050604a6050904f004ff050504fe04fb050104fa04f904fd04f404f204f7⟩, ⟨0x55028813c098049023811008403f01e00e406c03401880b8058029013009004201f00e006802e014008803801800a0038014004000, 0x5ec05e802fc05ef05eb05ed05e802fb05eb05e402a005e705e305e505de05d905e105d505df05d802b805db05d401ea05d705c805d105d305cc05ca05cf05c905cb05a805a505c705c205bd05c505b905c305bc05b605bf05b8059805bb05b005ac05ac05aa05af05a905ab05a405a205a7059905a3059c059f05a10598059b059d0564059105970590056c05930569058f0588058405840582058705810583057c057a057f056d057b⟩]) ( .leaf #[⟨0x550290138098049023811008403f01e80e806e03501980c005802a013809404602000f006803001600a004401c00b0048018006000, 0x65e066506670660064201d60663065f066106580651065b064b0659065006340653064f0651064a0648064d06430649064406420647063e063c0641063b063d06360634062a06310633062c0628060e062f062b062d0622061d0627061906230160061b061806160614015c061706120610060c061506070613060f0611060b060d060605f9060905e205fd060505fc05fa05ff05f505fb05f805f405f705f805e905f505ea05f105f3⟩, ⟨0x530280134094047022810c08203e01e00e406e03401900c005a02b014009804802100f006c030016009804001c00b0048014006000, 0x6ce06cc06d106c606c906cb06c2049b06c7049a06c306c706c306c506c20147014606c306be06bc06c1015806bd06b8069a06bb06b706b906b206a906b5067506b306ab06af06aa06a806ad06a706a906a2067f06a5067b06a30681069d0684069306990692068f0695068e068d069106880686068b068506870680067e0683067a0678067d0673067906740672067701440673066e066a060a0671066d066f060a0669066d⟩, ⟨0x5802a81480a004d025011c08804201f80f007403701a00c405e02c015009c04602100f006c030015009804001a00b0040014004000, 0x7580757075b075207500755074f075107360745074b0744074107470740073f0743073a0738073d07370739072a07330735072e072c0731072b072d0726071c0729071a07230725071e071c0721071b071d0716070f071907010717070e07090713070407020700070706ff070506e806f706fd06f606f306f906f206f106f506ec06ea06ef06e906eb06dc06e506e706e006de06e306dd06df06d606d906db06cc06d506d706d406cd06d706cd06d3⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x540280138096049023011008403f01e00e806e03501900c005a029013809004201f00e006402e015009004001a00a0040014006000, 0x7d407d007ce07d707d307d507c807c307cb07b707c907c207bc07c507c107c307be07bc07a807a507bb07b6079207b907b007ac07ac07aa07af07a907ab07a407a207a7079307a30798079f07a1079a07960792079d0799079b079407930799078e078c07910787078d07880786078b078207800785077f0781077c077a07760774077907730775076e07660771076a0768076d076707690762074c076507610763074e0759075f⟩, ⟨0x56029814409c04c024811808804101e80ec07003601980c005c02b014009404402000e8068030016009804001a00b0040014006000, 0x864084c086708630865085e085708610853085f085608500859085208380855084e084c08420849084b084408400838084708430845083c083a083f0839083b082c083508370830082e0833082d082f0814082308290822081f0825081e081d082108180816081b08150817080808110813080c080a080f0809080b07f507fb07f607f407f907f007ee07f307ea07e307ed07df07eb07e207cc07e507de07dc07e107cf07dd07d207d907db⟩, ⟨0x55029814009a04b024011008403f01e00e807003601980c005a02b014009404402000e8068030016009804001c00b0038014006000, 0x8c508d308ca08c808cd08c408c208c708b308c308b808bf08c108ba08b608b208bd08b908bb08b208b508b908b408b308b908b608b408b200d300d208b308a008ab08b108aa08a908ad08a408a208a708a108a3089c0892089f08900899089b08940892089708910893086e07f4088f088c07f5088f088a0875088a087308740872088b0886087f088908710887087e087908830874087208700877086f0875086d08730862083d086b⟩, ⟨0x54029013c09a04a023811008203f01e00e406c03301880b8056029013809404401f00e806802e015009004001a00b0048018006000, 0x9330935092e01a809310923092d092801ba092b092201940925091e06500921091a063d091d0645091b063c02a4091705f409130915091205f50915090a090f0911090b090d09060903090b09020907090b09070909090309050904090208f608ff090108fa08f808fd08f708f908f2082e08f508ee08e908f108e308ef08e8077a08eb08e708e908e207fa08e5078f08e108de082a08da08a208dd08d606de08d908d208c908d5⟩]) ( (.branch 2 ( .leaf #[⟨0x5702a014409c04b024811808604001f00ec07003601980bc05a02a013809404402000f007003201700a004401c00c0048018006000, 0x9a409a709a909a2099d09a5099e099c09a109980996099b099509970990098609930984098d098f09880986098b09850987097809810983097c097a097f0979097b096e097509770970096c09620973096f09710962096b096f096a0963096f096c096a096609640969096309650962014901480963095e095c0961095b095d094809530959095209510955094c094a094f0949094b0932094109470940093d0943093c093b093f093609340939⟩, ⟨0x5802a814c0a004c025011c08804101f00ec07203501980c005c02c014809804602000e806c030016009804001c00b0040014004000, 0xa460a3f0a490a330a470a3e0a390a430a340a320a000a370a2d0a350a2e0a2c0a3109f80a130a230a120a080a150a0c0a0f0a110a020a090a0d0a090a0b0a040a0009fe0a070a030a0509fa09f409fd09f909fb091f09f7095a096709f309d809e709ed09e609e309e909e209e109e509dc09da09df09d909db09d409c209d709a309cf09ca09c909cd09c409c209c709c109c309aa09b909bf09b809b509bb09b409b309b709ae09ac09b109ab09ad⟩]) ( .leaf #[⟨0x5902b014c0a004e025812008a04202000f407403701a80c805e02c014809c04802100f007003201600a004401c00b0048018006000, 0xad2094a0ad50ace0ab00ad10aca0a6a0acd0ac80a840aae0abd0ac30abc0ab90abf0ab80ab70abb0ab20ab00ab50aaf0ab10a9c0aa70aad0aa60aa50aa90aa00a9e0aa30a9d0a9f0a860a950a9b0a940a910a970a900a8f0a930a8a0a880a8d0a870a890a800a760a830a740a7d0a7f0a780a760a7b0a750a770a680a710a730a6c0a6a0a6f0a690a6b0a6409340a670a6009da0a630a5c03bc0a5f0a270a5b0a560a0a0a590a1a05fa0a530a4e05f40a51⟩, ⟨0x5802a814809e04d025011c08804101f80f007203601980c405c02b014009404602100f006c032016009804401c00b0040018006000, 0xb600b5d0b630b5c0b5b0b5f0b560b540b590b530b550b3a0b490b4f0b480b450b4b0b440b430b470b3e0b3c0b410b3b0b3d0b220b310b370b300b2d0b330b2c0b2b0b2f0b260b240b290b230b250b0c0b1b0b210b1a0b170b1d0b160b150b190b100b0e0b130b0d0b0f0b050b0b0b060b040b090b000afe0b030afd0aff0af00af90afb0af40af20af70af10af30aec0ae20aef0ae00ae90aeb0ae40ae20ae70ae10ae30ada09960add0ad60a880ad9⟩, ⟨0x5702a814809e04c025012008a04201f80ec07203701a00c405e02c014809804602100f006c030015009804001c00b0040014006000, 0xbdd0bdf0bd80bce0bdb0bcc0bd50bd70bd00bce0bd30bcd0bcf0bca0bc80bc40b0e0bc70bc00b240bc30bb60bbd0bbf0bb80bb40bb20bbb0bb70bb90bb00b9e0ba40bad0baf0ba80ba60bab0ba50ba70ba00b540ba30b9a0b3c0b9d0b8e0b970b990b920b900b950b8f0b910b880b8b0b8d0b7e0b870b890b860b7f0b890b820b800b850b7f0b810b7a0b500b7d0b790b7b0b740b6a0b770b680b710b730b6c0b6a0b6f0b690b6b0b520b610b67⟩]))))) ( (.branch 4 ( .leaf #[⟨0x530288138098049023811008404001f00f007203501980c005c02c015009c04802100f807003401700a004401c00b0048018006000, 0xc390c490c420c3d0c470c3b0c430c3a0c380c3600aa0c390c340c320c370c250c350c310c330c3000a700a60c310c260c2d0c2f0c280c240c220c2b0c270c290c200c250c270c2400a900a80c250c220c200c0e0c190c1f0c180c170c1b0c120c100c150c0f0c110c0a0c080c0d0c070c090c020b7e0c050bfe0b900c010bec0bf70bfd0bf60bf50bf90bf00bee0bf30bed0bef0be80bde0beb0bdc0be50be70be00bde0be3⟩, ⟨0x530280134094048022810c08003c01d00e006c03401880bc05802a013809004201e00e006802c014009003c01800a0040014006000, 0xcca0cc30ccf0cc20cc10cc50cbc0cba0cbf0cb90cbb0cb40cad0cb70ca10cb50cac0ca70cb10ca20ca00c9e0ca50c9d0c9f0c9c00cf0c990c9b0c9800cd0c940c920c9700d00c930c8e0c8a0c910c8d0c8f0c720c810c870c800c7d0c830c7c0c7b0c7f0c760c740c790c730c750c6f0c710c6a0c660c620c6d0c690c6b0c650c6707f40c5f0c610c5a0c560c5d0c590c5b0c530c570c520c500c550c4f0c510c4a0c480c4d⟩, ⟨0x5802b014c0a004d025012008a04201f80f007203601a00c805e02c014809804802200f807003201600a004401c00b0040018006000, 0xd550d570d3e0d4d0d530d4c0d490d4f0d480d470d4b0d420d400d450d3f0d410cf00cf90d3d0772076f0d370d2e03780d310d2a0d200d2d0d1e0d270d290d220d200d250d1f0d210d1c0d1a0d140d170d190d1207670d150d0e07740d110d080d030d0d0cff0d090cf70d010cfe0cfc0cf608c206d20cfd0cf80cf60cfb0cf20c880cf50cf10cf30c8c0c950cef0ce40cda0ce70cd80ce10ce30cdc0cda0cdf0cd90cdb0cd408f80cd70cb80ccb0cd3⟩, ⟨0x520278134096048022810c08003d01d00e006a03301800b4056028012808c04001e00d806002c014008803801800a0040014006000, 0xdc40dc20dc70dc10dc30dbc0dba0dae0db70db90db20db00db50daf0db10d9c0da70dad0da60da50da90da00d9e0da30d9d0d9f0d940d990d9b0d950d970d8a0d930d950d920d8b0d950d8b0d910d8c0d8a0d8f0d8608060d890d850d870d800d7f0d830d7d0d810d7c0d6208b20d760d710d7b0d6d0d770d5d0d6f0d6c0d6a0d5c0d680d640d6b0d670d690d630d650d6200dd0d5e0d5c0d6100de0d5d0d580d560d5b⟩]) ( (.branch 2 ( .leaf #[⟨0x5802b014c0a004d025011c08804201f80f007203601980c005a02a014009804602000e8068030015009003c01a00b0048018006000, 0xe470e530e4a0e2c0e4d0e460e440e490e2e0e3d0e430e3c0e390e3f0e380e370e3b0e320e300e350e2f0e310e280e060e2b0e240dec0e270e2008160e230e1c0db00e1f0e160d9e0e190e040e0f0e150e0e0e0d0e110e080e060e0b0e050e070e020e000dea0df90dff0df80df50dfb0df40df30df70dee0dec0df10deb0ded0de40dda0de70dd80de10de30ddc0dda0ddf0dd90ddb0d930dd70dd60d920dc00dcf0dd50dce0dcb0dd10dca0dc90dcd⟩, ⟨0x55029814009c04b024011408404001e80ec07003601980c005a02a013809004401f00e006402c014009004001c00b0048018006000, 0x920eab0ea60ea40ea90ea30ea50e8a0e990e9f0e980e950e9b0e940e930e970e8e0e8c0e910e8b0e8d0e860e840e890e830e850e7a0e7f0e8100e70e7d00e60e770e7b0e7600e70e7b0e760e6d0e790e6c0e770e790e700e730e750e6e0e680e7100da0e6f0e6a08b20e6d0e6c08b20e6b0e6808b30e6d0e6c08b30e690e6a00e900e80e6b00e40e690e6600e30c680e630e650e6200e10d540d5f0e610d840d8d0e5b0e520e4b0e55⟩]) ( .leaf #[⟨0x510278130092046021810407c03b01c00d806803201780b4054027012008403e01c00d006002c013008803c0180090038014006000, 0xf090f0b0f020f050f07009a0eff0f030efe009b0f030efe0ef70f01009e0eff0ef80efb0efd0ef40ef20ef90ef60ecb0ef500980ef5008e0ef30ef0008d0eec0eeb0eef0eea00890ed40ee30ee90ee20edf0ee50ede0edd0ee10ed80ed60edb0ed50ed70ea20ead0ed30ecb0ecd0eca008300820ecb0ec40ebf0ec90ebb0ec50eab0ebd0eba0eb80eaa0eb60eb20eb90eb50eb70eb10eb30eb000910eac0eaa0eaf⟩, ⟨0x520278130094048023010c08203e01e00e406e03401900c005a02b014009404401f00e8068030015009004001a00b0040018006000, 0xf580f750f7d0f740f600f770f5d0f730f6d0f6f0f6e0f6c0f640f690f6b0f650f670f620f530f650f530f610f5c0f5a0f5f0f590f5b0f540f520f570f52011901180f530f4e0f4c0f510f4b0f4d0f340f430f490f420f3f0f450f3e0f3d0f410f380f360f3b0f350f370f300ce80f330f2f0f310f2a0f1c0f2d0f220f270f290f230f250f200f1d0f230f1d0f1f0f180f160f1b0f150f170f080f110f130f0c0f0a0f0f⟩, ⟨0x530280138096049023011008203e01d80e006a03201800b4056028012808c04001d00d806402e014009003c01a00a0040014004000, 0xfec0fea0fef0fe90feb0fe40fdb0fe70fd50fe50fdc0fda0fdf0fd90fdb0fd409080fd70fd009060fd30fba0fc90fcf0fc80fc50fcb0fc40fc30fc70fbe0fbc0fc10fbb0fbd0fb60fb40fb90fb30fb50fae0fa00fb10fa60fab0fad0fa70fa90fa00fa50fa70fa40fa10fa70fa10fa30fa0011701160fa10f9c0f9a0f9f0f990f9b0f940f920f970f910f930f8c0f8a0f8f0f850f8b0f860f840f890f800f700f830f7f0f81⟩]))))))))) ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x520280134096048022810c08003e01d80e006a03301800b4054028012808c04001e00d806402c01400880380180090038014004000, 0x106b106d106210601065105f10610f141057105d10560f1e10590f19105510500f3110530f2b1051103a1045104b104410431047103e103c1041103b103d0f4a0f5510390f7e0f87103510300f9310330f8d10311024101d102710171025101c0f6c101f101b101d101610141019100f10151010100e10130130100f0f981003100910020fa210050f9d10010ffc0fb50fff0faf0ffd0fb70ff70ff20feb0ff50fd10ff3⟩, ⟨0x55029814009c04b024011408604001e00e806e03401900c005a02a014009404402000e8068030015009804401c00c004801c008000, 0x10ea10e810e210e010e510df10e110cc10d710dd10d610d510d910d010ce10d310cd10cf10c010c710c910c210be109e10c510c110c310bc109f10c110b610ab10b910a710b710b010ac10ac10aa10af10a610a410a9109f10a510a0109e10a3109a1098109d10971099105e108f1095108e106610911063108d1088107d108b107710891082107e107e107c1081107b107d10761074107910671075106a10711073106c10681066106f⟩, ⟨0x55028813c09804a023811408203f01e00e406e03401900bc05a02b014009804602000f006c032016009804001c00b0048018004000, 0x115e115a11541161115d115f1152115b115d11581156114e114c1151114b114d1146111811101149111511471122111f1145113e11341141113d113f11381112113b11361134113011251133111f1131112a112611261124112911231125111e111011211116111b111d111711191114111111171111111310de1109110f110810ec110b110010e8110310ff110110fa10f810fd10ed10f910ee10f510f710f010ec10e610f310ef10f1⟩, ⟨0x530288138098049023011008203e01e00e406e03501900c005a02b014809804802100f0068030015009004001a00a0040014006000, 0x11da11d611d611d411d911d311d511ce11c011d111c611cb11cd11c711c911c011c511c711c411c111c711c111c311bc11ba11bf11b911bb11b011ac11ac11aa11af11a911ab11a4119911a7119311a5119e119a119a1198119d119711991192117c11951188118f1191118a1186117c118d1189118b1184117d11891180117e1183117d117f1176115a1179116e11561171116d116f11681166116b115b1167115c11631165⟩]) ( (.branch 2 ( .leaf #[⟨0x55029013c09a04a023811008203f01e00e406e03401880b8056029013009004201f00e006802e014008803c0180090038014004000, 0x125400e61257125011b61253124f12511234123d124d124212451247123a00e7124300e6123b1243123b1241123c123a123f123610ca1239123512371218121f1233122412231227121e12101221121a11b4121d1219121b1204120d1217009b1211120c120a120f00d6120b120611ee12091205120711f011fb120111fa11f911fd11f411f211f711f111f311b811e711ed11e611c211e911bd11e511e411bc11e011d511e311cf11e1⟩, ⟨0x56029814009c04b024011408604001e80e806e03501900bc05802a013808c04201e00d806402c013008803c01800a0040018006000, 0x12d212db12dd12d612d412d912d312d512cc12c212cf12c012c912cb12c412c212c712c112c312aa12b912bf12b812b512bb12b412b312b712ae12ac12b112ab12ad129812a312a912a212a112a5129c129a129f1299129b128c12931295128e128a12741291128d128f12881275128d1282127d1287127b1283127a1278126c12760ecc127912751277127400851270126e1273126d126f0086126d0e87126b124e12551269125a1259125d⟩]) ( .leaf #[⟨0x56029813c09a04a024011408403f01e80e406e03501900bc05802a013809404401f00e006802e015009004001a00b0040014004000, 0x134e135513571350134c0eca1353134f1351134a0ecb134f134c134a1346133a134913420e8c1345133c133a133f1339133b13341330132e1337133313350ea1132f0e821271132d12fc132113271320130613231301131f131612f4131913151317131013041313130a130d130f13081305130b13051307130012fe130312fd12ff113c113912fb12f612f41196119312f312f012ee0760076b12ed12e6075012e912e2073812e512de1296⟩, ⟨0x5602a014409e04c025011c08804101f00ec07003601980c405c02c014809804802100f006c032016009804001a00b0040014004000, 0x13d6007f13d213d013d5008013d11392139b13cf13c813a013c412d413c713c0136e13c313aa13b913bf13b813b513bb13b413b313b713ae13ac13b113ab13ad13a213a713a913a313a513a0139913a31399139f139a1398139d1394136a139713931395138e138413911382138b138d13861384138913831385136c137b1381137a1377137d1376137513791370136e1373136d136f135813631369136213611365135c135a135f1359135b⟩, ⟨0x5902b01500a204e025812408c04202000f807403801a80c805e02d015009c04802100f006c032016009804001c00b0048018004000, 0x144e14531455144f145111b21427144f143011b2144d14481441144b143314491440143b144514361434143214391429143714311435142c1428100e142f142b142d1428100e142b1426100f142b142a100f14271426013313400ea41425133813d3142314021415141d1414140d1419140c140b140f1406140414091403140513fe13f4140113f213fb13fd13f613f413f913f313f513ee13e713f113db13ef13e613e113eb13dc13da13d813df13d713d9⟩]))))) ( (.branch 4 ( .leaf #[⟨0x4e026012408c04402100fc07a03a01b80d006403001680a8050025011008003a01b00c805802801200800380180090030010004000, 0x14a914ab14a6149314a914a0149614a3149f14a1149414921488148d148f0139148b0138148514891484013914891484147b14871484013d013c1485147e14811483147c1466147f0126147d147a0fa01479147a0fa114671478013b1472146d1477146914731465146b146814661464146601370136146714611463145d145f145c012f1456142b145b142a1457145b145714591456013501341457⟩, ⟨0x55029814009a04b024811808804101f00f007203701a00c805e02d015009c04a02200f807003201600a004401c00c005001c008000, 0x1525152b1526152415291520151c1523151f1521151a151815141512151715111513150c1504150f15081506150b15051507150014fe150314fd14ff14f814f114fb14eb14f914f0149814f314ef14f114ea14e214ed14e614e414e914e314e5149e14d914e114d814b614db14c2149014d714ce14c414d114ca14c814cd14c514c914be14b614c114ba14a414bd14b914bb14b314b714b414a714b314a814af14b114aa14a6149414ad⟩, ⟨0x5702a014009a04a024011408203f01e80e807003501900c005a02a013809404401f00e006802e015009004001a00b0040014006000, 0x15a2153f1573159e1578157215a1157e1574159d15981591159b158315991590158b1595158615841582158915811587157f15851576157b157d15771579157215751577157415731577157201231560156b1571156a1569156d15641562156715611563151e1527155f1530152d155d1554154d155715471555154c1518154f154b154d154615441549153f15451540153e1543011e153f0fe80fd1153915341532153715311533152c152a152f⟩, ⟨0x530288138098049023811008203e01d80e406c03301880b8056029013809004401f00e806802c014009004001a00a0040018006000, 0x15091615160e149a1611160d160f16081513160b150d160915e615ef160315f415f315f715ee013815f115ea15e815ed15e715e915c215cf15e515da15d515df15d315db15d215ca013815ce15cc15d115cb15cd014c15cb15c615c415c915c315c515bc15b715c115b515bd15b415b2147c15b015ac15a615b315af15b115ab15ad15aa011d15a415a315a915a215a515a915a515a715a401251580153e15a31572153f15a3⟩]) ( (.branch 2 ( .leaf #[⟨0x55028813c098049022810c08003d01d80e006c03301880b8056029013809404602000e006802e015009004001800a0040018006000, 0x168816841504168b168716891680151216831676167d167f167816741656167b16771679164e16591673166c1665166f165f166d16641646166716631665165e165c16611657165d16581656165b165216501655164f16511645164d164c1644164a1648163a16411643163c16381620163f163b163d1632162d1637162b1633162a162816260150162916241622161e16271619162516211623161d161f161814b5161b1614160f1617⟩, ⟨0x5a02c01540a6051027012c09004502180fc07a03a01b80d006402f01600a004c0230100074032016009804001a00b0040018006000, 0x14a16fb16f616f016f916f516f716f116f316da16e916ef16e816e516eb16e416e316e716de16dc16e116db16dd16d616d2161c16d916d516d7161c16d116d50fd80fd516cf160c150916cd16ca16c616c614fe16c916bc16c316c516be16ba14e216c116bd16bf16b814e316bd164414f016b714ee14eb16b5090c0906090416b116aa0fda16af169816a316a916a216a116a5169c169a169f1699169b1510150d1695168116931648160e16911686168d168f⟩]) ( .leaf #[⟨0x5902b014c0a004c025011c08804201f80f007203601a00c405c02c014809804602000f0068030015009804001a00b0048018006000, 0xc5e0c63178b1770177517891778177d17851780177c0c701783177f1781173c1779177b1774173e177717711773176c1748176f1752171b17691756172c1759175217491755173517531744173c17471740173e1743173d173f1734172a1737172e17311733172a1725172f1724172b172f172b172d17261722171e172917251727171a12e0171d1719171b16f416fd1717170c170717111703170d16fb17051702170016fa096406c4170116fc16fa16ff⟩, ⟨0x530288138096048023010c08203e01e00e406c03401900b8058029013809004401f00e806c030015009804001a00a0038014004000, 0x180d180f17b817ef180d17e617f1180b180417fd180717f7180517fc17e217ff17fb17fd17f617f417f917ef17f517f017ee17f317ea17e817ed17e717e917e417e217de11c811c017e10f8717dd17d80f8117db101117d917d017c317d317bf17d117be101417c117bc17b617ba17b817aa17b317b517ae17ac17b117ab17ad179417a317a917a2179f17a5179e179d17a117981796179b179517971790178e1793178d178f⟩, ⟨0x5902b01500a404f026012808e04402080fc07803901b00d006202e01600a404c023010807c03801900b005002200e005001c008000, 0x11d211cf188f1843188d1883188b188617ac1889188211ba18851880186a186e1879187f18781877187b187218701875186f1871185818631869186218611865185c185a185f1859185b184e11d41851184a1848184d18471849184217fc1845183e18261841183a17e9183d17f1183b183817ea17c217b6183717dc17c3183510301827182f182518270f90101118230fb20faf181d16ac0fa80fa0181b1816169a1819180c18131815180e17ee17ba1811⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x5702a814809e04c024811808804201f80f407403801a80c405e02c014809c04a022010007403601800a004801e00c0048018006000, 0x1903191119061854190919020e7c190518f218fb190118fa18d018fd18f618f418f918f318f518ec18e818e818e618eb18e518e718e018de18e318d118df18d418db18dd18d618d218d018d918d518d718cc18a218cf18c818c618cb18c518c718be18ba18ba18b818bd18b718b918b218b018b518a318b118a618ad18af18a818a418a218ab18a718a91846189b18a1189a1240189d088e0e6718991856086c18971890189318951856088d1891⟩, ⟨0x5602a014809e04c024811808604001f00ec07003501900c005a02a014009004201f00e006402e015009003c01800a0038014006000, 0x19871989198601131982103c1985197e0f161981197a0f30197d1968196f1979196e009a1971196a194c196d1969196b194e19571967195c195f19611954009b195d009a1955195d1955195b1956195419591950194a1953194f195119461940191e1949193e19431945193f1941193c191f193f1936192b1939192719371930192c192c192a192f1926191e1929192219201925191f1921191a1914191d1919191b19161914191019071913⟩, ⟨0x55029014009c04b024811808804101f00ec07003601980c005c02b014809804602100f006c030015009804001a00b0040010004000, 0x1a0c1a081a0f1a0b1a0d1a071a091a021a001a05012c1a0119fc19fa19ff19f919fb19e219f119f719f019ed19f319ec19eb19ef19e619e419e919e319e519de19dc19e119d819d619db19c319d719d019c919d519c519d119c819c719cb19c419c21990011419c319a619b919c119b819b119bd19b019af19b319aa19a819ad19a719a919a217e819a5199c199719a11995199d19941992198c198e198a19881991198d198f0bb3198b⟩, ⟨0x55029014009c04b024011408604001f00f007203601980c405c02a014009804602000e806802e015009003c01a00a0038014006000, 0x1a861a851a8b1a8600c100bc1a851a721a7d1a831a7c1a7b1a7f1a761a741a791a731a751a6e19dd1a7119d91a6f19df1a691a2e1a371a671a361a2f1a651a5e1a571a611a491a5f1a561a511a5b1a4c1a4a1a481a4f1a3f1a4d1a471a4b1a421a3e1a451a3a100e1a3d100e1a371a391a36100f1a391a321a301a351a2f1a3119f81a031a2d1a241a231a271a211a251a201a060fa01a1a1a151a1f1a111a1b1a011a131a101a0e1a00⟩]) ( (.branch 2 ( .leaf #[⟨0x55029014009a04a023811008403f01e00e806c03401880b8056029013809404602000f006c030016009804001c00b0038014006000, 0x1ad01ad51ad700c71ad300c61acd1ad11acc00c71ad11acc1abf1acf1abe1acd1acf00ca1acd1ac61ac91acb1ac41aba1ac700b21ac51ac01abc0c301ac31abf1ac11abc0c301abf1abe0c301abd1abe0c311abb1abc00c900c81abd00c41abb1ab800bb1a8a1ab51ab71ab400c31aae1ab11ab31aa81a871aaf1a851aad1aa81a8c1aab1aa41a9d1aa71a8f1aa51a9c1a971aa11a921a901a8e1a951a891a931a8d1a911a881a841a8b⟩, ⟨0x55029814009c04c024811c08804101f00ec07203601a00c405e02c014809804602000e806803001600a004401e00c0048018006000, 0x1b391b631b561b4b1b591b451b571b501b4c1b4c1b4a1b4f1b491b4b1b441aac1b471b401a841b431b381b301b3b1b341b321b371b311b331b2c1b2a1b2f1b291b2b1b241b221b271b211b231b1c1b1a1b1f1b161b141b191af81b051b131b081b0b1b0d1b0000c71b0900c61b011b091b041b021b071b011b031b00010501041b011afc1afa1aff1af91afb1aea1ae91aed1ae41ad21ae71ae01ade1ae3186a11001add1ad810e01adb⟩]) ( .leaf #[⟨0x5702a814809e04c025011c08a04202000f407403701a80c806002d01580a004a023010007403401700a804801e00c0048018006000, 0x1bd71bd91bd20b7a1bd51b201bcb1bd11bca0c321bcd1b251bc91bc41b751bc71b711bc51bb81bbd1bbf1bb91bbb1bb61b971bb91b901b991bb51bae1ba51bb11b9f1baf1ba61ba41ba91ba31ba51b9e1b9c1ba11b971b9d1b981b961b9b1b920b381b951b911b931b7a1b891b8f1b881b851b8b1b841b831b871b7e1b7c1b811b7b1b7d1b761b741b791b700c301b731b6a1b6d1b6f0c301b691b6b1b680c311b6b1b281b351b671b621b1b1b65⟩, ⟨0x540288138096049023010c08003e01e00e406e03501980c405e02c014809c04802100f8070032016009804401c00b0048018006000, 0x1c4c1c491c4f1c481c471c4b1c421c401c451c3f1c411c1c1c3b1c3d1c3a1c1d1c3d1c341c2f1c391c2b1c351c291c2d1c2a1c281ac41c251c271c2400b11c211c231c1d1c1f1c1c00ad0c060c031c1b1c140b7b1c170b831c151bd61bdf1c0f1c0a1bd91c0d1bdf1c0b1bf21c011c071c001bfd1c031bfc1bfb1bff1bf61bf41bf91bf31bf51bee0c101bf11bea1b151bed1be31beb1be20c341be51bde0c241be11bda1bd81bdd⟩, ⟨0x55029013c09804a023811008203e01e00e406e03501900c005a02a013809004201f00e006802e013008803c01a00a0040014006000, 0x1cd21cd91cdf1cd815ca1cdb1cd4186c1cd71cd31cd51cb61cc91cd11cc81cc11ccd1cc01cbf1cc31cba1cb81cbd1cb71cb91cb01ca91cb51ca71cb11caa1ca41ca61ca419861c3b1ca31c541c5f1ca11c801c931c9b1c921c8b1c971c8a1c891c8d1c841c821c871c811c831c7c1c751c7f1c691c7d1c741c6f1c791c6a1c681c641c6d1c5d1c671c631c651c6200a31c5e1c5c1c6100a41c5d1c581c561c5b1c551c571c3e1c4d1c53⟩]))))) ( (.branch 4 ( .leaf #[⟨0x55029814009804a024011408604001e80ec07003401900bc05a02a014009404602000f006c030015009804401c00b0048018006000, 0x1d4d1d5b1d501d571d591d521d4e1d4c1d551d511d531d4a1d481d441d421d471d411d431d341d3d1d3f1d381d361d3b1d351d371d2a1d311d331d2c1d281d081d2f1d2b1d2d1d081d271d2b1d281d261d221d1d1d251d171d231d1c1cfc1d1f1d1b1d1d1d161d141d191d091d151d0a1d081d131d001d0b1d111d041d021d071d011d031cfe1cfc1cf81cf61cfb1cf21adf1cf51ae51cf31cee1b001cf11ce4148a1ce71ce018521ce3⟩, ⟨0x54028813c09804a023010c08003e01d80e406e03401900bc05802a013809404402000e806802e015009003c01a00a0040014006000, 0x1dce1dcc1dd11dcb1dcd1dc61cf71dc91cef1dc71dc01d9a1d921dc31d8a1db91dbf1db81d941dbb1d8f1db71db21da71db51da11db31dac1da81da81da61dab1da51da71da01d921da31d981d9d1d9f1d991d9b1d961d931d991d931d951d8e1d8c1d911d8b1d8d1d781d831d891d821d811d851d7c1d7a1d7f1d791d7b1d401d711d771d701d4c1d731d451d6f1d6a1d631d6d1d5d1d6b1d621d481d651d611d631d5c1d5a1d5f⟩, ⟨0x54029013c096049023010c08203e01e00e806e03401900bc05802a014009404602000f006c030015009804001a00a0038014004000, 0x1e311e411e361e3d1e3f1e381e341e301e3b1e371e391e301e331e371e321e311e371e331e351e2c1e2a1e2f1e291e2b1e261e241e001e0d1e231e181e131e1d1e111e191e101e0800c61e0c1e0a1e0f1e091e0b00f41e091e041e021e071e011e031dca1df51dff1df31df91df41df21df71dd21ddf1df11de815e91deb15ef1de91de21de51de71dda01391de301381ddb1de31dde1ddc1de11ddb1ddd1dd61dd41dd91dd31dd5⟩, ⟨0x56029814009a04b024011408203f01e00e406a03301800b4056029013009004201f00e006402e014008803c01800a0040014006000, 0x1ea61eaf1eb51eae1e081eb11eaa1ea81ead1ea71ea91ea21d7a1ea51e981e9f1ea11e9a1e261df21e9d1e991e9b1df21e251e991e8e1e951e971e901e8c1e6a1e931e8f1e911e8a1e6b1e8f1e841e791e871e731e851e7e1e7a1e7a1e781e7d1e771e791e721e701e751e6b1e711e6c1e6a1e6f1e661e641e691e631e651e281e5b1e611e5a1e301e5d1e2d1e591e541e491e571e431e551e4e1e4a1e4a1e481e4d1e471e491e421e401e45⟩]) ( (.branch 2 ( .leaf #[⟨0x55029014009a04b024811808604101f00f007203601a00c405c02c015009c04802100f8070030016009804001a00b0040018006000, 0x1ef61f291f2d1f2a1f281f240af21f270adf1f231f220ade0b780b831f211ba21b9f1f1f1f1a1eca1f160aff1f190b071f170afc0b071f131f021eff1f111f031f051efe0b0a1f011efa1ef81efd1ef71ef91edf1ef51ee21eed1ef31eec1eeb1eef1ee61ee41ee91ee31ee51ede0afe1ee11eda1bba1b961edd1eda1bb61ec61ecf1ed91ece00c61ed11eca1ec81ecd1ec71ec91ebe1ec31ec51ebf1ec11eba1ba41ebd1eb60dc21eb9⟩, ⟨0x55029814009c04b024811808604001e80ec07203601980c005a02b014009804802100f8070032016009804401a00b0040018004000, 0x1fa600b51fa21fa01fa500b81fa11f9c1f721f9f1f9b1f9d0c4e0c4b1f991f901f861f931f841f8d1f8f1f881f861f8b1f851f871f821f801f7c1ee41f7f1f321f671f7b1f741f441f771f6e1f6b1f711f6b1f6d1f661c661f691f371f651f3b1f631f5e1c401f611f5b1f5d1f421f511f571f501f4d1f531f4c1f4b1f4f1f461f441f491f431f451f3e1f3a1ca21f411f3d1f3f1f361f341f391f331f351f2e1f2a1ef61f311f2d1f2f⟩]) ( .leaf #[⟨0x5a02b814c0a004d025811c08a04201f80f007203601980c005802a013809404401f00e006402c014008803801800a0038010004000, 0x201c1cb8201f1caa1ca61988201b201619c22019201220102015200f2011200a20062004200d2009200b153e200120031ffc154c1fff1fd61fd31ffb1e461e431ff71ff21dcc1ff51fee1fd81ff11fe41feb1fed1fe61fe215ae1fe91fe51fe71fda1fd81fdd1fd71fd91fd21df81fd51f281f3b1fd11f9c1f581fcf1f9a1fa31fcd1fc41fc31fc71fc11fc51fc01fa60c301fba1fb51fbf1fb11fbb1fa11fb31fb01fae1fa01fac1fa81faf1fab1fad1fa71fa9⟩, ⟨0x5802a814c0a204e025812408c04302000f807603901b00cc06002d015009c04802100f006c030016009804401c00b0040014006000, 0x209220802095206b208f208b208d207e20872089208220802085207f2081206c2077207d2076207520792070206e2073206d206f1fde1e4820691fe1206714fc14e7206520600ba6206315aa2009205f200815ab205f154a1547205d20002005205b2056203c2059205220262055204e20102051203a2045204d204420422047011a2043203e203c2041203b203d2024203320392032202f2035202e202d203120282026202b20252027200e20172023⟩, ⟨0x5702a014009c04b024811808604001f00f007203601980c005c02b013809404402000e806802e015009004001a00a0038014006000, 0x2110211721192112210e2106211521112113210a2108210d2107210920f420ff210520fe20fd210120f820f620fb20f520f720f220f020da20e920ef20e820e520eb20e420e320e720de20dc20e120db20dd20d020d720d920d220ce152420d520d120d320ca20c820cd20c720c9208a20bf20c520be20a220c120ba20b120bd20ab20bb20b220b020b520af20b120aa20a020ad20a420a720a9209e20a120a520a120a3209c209a2096206e2099⟩]))))))))))) ( (.branch 35 ( (.branch 17 ( (.branch 8 ( (.branch 4 ( .leaf #[⟨0x5802a81480a004d025011c08804201f80f007203601a00c405c02b014809804602100f006c032016009804001a00b0040014004000, 0x219c214e219f21982182219b219621682180218f2195218e218b2191218a2189218d21842182218721812183216a2179217f21782175217b217421732177216e216c2171216b216d2164215a2167215821612163215c215a215f2159215b214c215521572150214e2153214d214f2148097a214b21440e3021472142211a212c213b2141213a2137213d2136213521392130212e2133212d212f2128211e212b211c212521272120211e2123211d211f⟩, ⟨0x5902b01500a204e025812008a04201f80f007403801a80c805e02d015009c04802100f807003201600a004401c00b0040018006000, 0x22262224222922232225221c0a54221f10fe10fb221b221421d22217221021fc221321fa2209220f22082205220b22042203220721fe21fc220121fb21fd21f821f621f221e821f521e621ef21f121ea21e821ed21e721e921d021df21e521de21db21e121da21d921dd21d421d221d721d121d320c6152d21cf21c4154421c70f2e0f2b21c321c00f2021bc20f621bf21b820dc21bb21b4212e21b721ae21a521b1210b21af21a621a421a921a0216c21a3⟩, ⟨0x5802a814c0a004d025011c08804101f00f007203601980c005c02b014009804602100f006c032016009804001a00b0048018006000, 0x22b222ab22b522a322b322aa22a522af22a222a005f62298226c229d22662220229b226422912297229006c22293228c226d228f2269228d2272228122872280227d2283227c227b227f22762274227922732275226e226c2271226806c4226b2265226722600a2622630a252261225a223c225d2256095c225922512253224c0962224f223a2245224b2244224122472240223f2243223b223d221d22392222223122372230222d2233222c222b222f⟩, ⟨0x53028813c098049023011008203d01d80e006a03201780b4054028013009004201f00e006402c01300880380160090038010004000, 0x22d1233322c92331232a22fe232d232422d42327232022cd232322cf231f2316023b231d231823142312231b2317231922fc230b2311230a2307230d230623052309230022fe230322fd22ff22f422f222f722f122f322f000ff00fe22f122ec22ea22ef22e922eb22d222e122e722e022dd22e322dc22db22df22d622d422d922d322d522c822c022cb22c422c222c722c122c300ec22c122bc22ba22bf22b922bb22b6229e⟩]) ( .leaf #[⟨0x5c02c815c0a8051027012c092046021810007a03a01b80d006202e01580a004c024010807803801900b004801e00c0048018006000, 0x23a623a223a923a123a3239a05f4239d02f202ba23992394039a2397238c23912393238d238f023e0415238d0414023f238d01a601a3238b238606b82389238206862385237e23472381237a16f6237d237616dc23790912236723752250224d2371225e2252236f236b236d23672369236223582365235e23592361234d235f0a5a0a552357234c0a24234f2348234616d2234b026e026b234506b606bf234322a002fa233d2338027e233b092602702337016423132335⟩, ⟨0x54029013c098049023011008203e01d80e006c03301800b4054027012008403c01b00c805802801200800340160080030010004000, 0x2401240d2402240524072400031f240323fc033a23ff1664149c23fb23f723f9145c23f523f723f4145d23f723f023ea23f323e823e523ef23e923eb23e41a1223e723dc19fa23e323de19e423e12218101c23db0192018f23d923b4232823d723b223bb23d523cc0a9e23cf23c423c923cb23c523c70ac423bf23c523b923c323bf23c123be00f123ba23b823bd00f223b923b422d023b723b323b523b023ae0a5723ad23aa23a6⟩, ⟨0x5602a014409e04c025011c08804202000f807603801a80c806002d01500a004a02200f807003401600a004401c00b0048018008000, 0x24832485247e247c2481247b247d247624742479246f24752470246e2473246a2464246d2469246b2465246724612463244a2459245f24582455245b245424532457244e244c2451244b244d241c242524492440243924432429244102d82321243d232002d9243d24382432243b24342332243724332435242e231e22cc2431242d242f242823c2242b242423be24272420241e2423241d241f2418033b241b24092419240c240a2408240f⟩, ⟨0x5a02b81540a404f026012408c04402080f807803a01b80d406402f01600a404c024010807403401800a804401e00d0050018006000, 0x251c251a251f2519251b250e24e82511250a2508250d25041650250724e224ed250324f824f324fd24f124f924f024e8010c24ec24ea24ef24e924eb014e24e924e424e024e724e324e522b822c524df24c624be24d324c424cb24d124ca22f024cd24c624bc24c924c524c724b2016224b502340230016224b124ac24a524af249924ad24a4249f24a9249a24982462249d0231249b247f24972482248b2495238e0416023e248f248a024c248d248624842489⟩]))) ( (.branch 4 ( .leaf #[⟨0x520278134096048022810c08003e01d80e406e03501900bc05a02a014009804602000f006c030015009804001c00b0040018006000, 0x25982597259b259325992591259525922590257c258a2585258f2583258b2582258025542580257f257e257a2581257d257f2579257b25780073256c25732577256e0c582571256d256f2568255f256b25592569256125652560255e256325582556255b255525572540254b2551254a2547254d25462545254925412543253a2533253d252f253b253225162535252e252c2531252a2514251825232529252225212525⟩, ⟨0x55029014009a04a024011408604101f00ec07003501900bc05a02a014009404402000e8068030015009003c01800a0040014006000, 0x261a25cc261d2619261b261426082617260c26112613260d260f26042609260d2609260b26062604260025ac260325fa25d025fd25e425f325f925f225ef25f525ee25ed25f125e825e625eb25e525e725e025de25e325dd25df25ce25d725d925d225d025d525cf25d125c025c925cb25c425c225c725c125c325bc12ac25bf25aa25b525bb25b425b325b725ae25ac25b125ab25ad25a825a6259e25a325a5259f25a1259c2591259f⟩, ⟨0x55029814009a04b024011408403f01e00e406e03501900bc05802a014009804802100f8070032016009804401c00b0040014004000, 0x267126772672267026752668266d266f007b266b007a266526692664007b2669266426592667265826652667265e26612663265c2652265f0070265d2655265b2656265426592658265426572658265326552656007d007c26572654006900782653264e264d2651264c007526362645264b2644264126472640263f2643263a2638263d26372639263225c22635262e251a263125dc2627262d2626260a26292622261b262526152623⟩, ⟨0x540288138098049023811008403f01e00e806e03401880b8058029013809404602000f006c030016009804401c00b0040014006000, 0x26f426f926ff26f826c426fb26f526f726f026d526f326d126f126e826e326eb26df26e926e226a826e526de26dc26e126bb26dd261a25fe26db26d626d426d926d026c226d326c826cd26cf26c926cb26c626c326c926c326c526ad26c126b326bf26b226b026b526ab26b126ac26aa26af26a226a026a5269f26a1269a267f269d2679269b268c1cf6269526901ade269326841d3626872680267e2683267d267f26782676267b⟩]) ( (.branch 2 ( .leaf #[⟨0x5602a014409e04c025012008a04302000f407203701a00c405c02b014009804602000f007003401700a804801e00c004801c008000, 0x2777277927722688277527712773276c26a1276f2673276d2768006d2758276527672764006f275e2761276327042757275f275a275626dc275d2759275b27482747274b2742007a2745273e26a62741271c2727273d2732272d2737272b2733272a2722007a27262724272927232725272200af00ae2723271e27182721271d271f268e1ec8271b2706271127172710270f2713270a2708270d27072709261826152703260e260826062701⟩, ⟨0x54028813c09804a023811408403f01e80ec07203601980c405c02c015009c04802100f807003401700a804801e00c0040018006000, 0x27fa27f527fd27ef27fb27f427ea27f727f327f527ee277627f127ec27ea27e6277227e927da27d527df27cf27db27c927d3005d27d127ce27c8005c27ca27c827cd00a027c927c427a827c727c327c527c027a427aa27b527bb27b427b327b727ae27ac27b127ab27ad27a0279e27a3279d279f2798268a279b279727992770277b2795278c1f04278f27822789278b278427802776278727832785277e27772783277a2778277d⟩]) ( .leaf #[⟨0x55028813c09a04a023811008203e01d80e006a03301880bc058029013009004401f00e006802e015009804001800a0038010004000, 0x2870286e286c2873286b28712869286f28622865286727e028612863285228512855284c005c284f284827e4284b2838283f2847283e27d22841283a2820283d2839283b27e52837283427e22822282d2833282c282b282f28262824282928232825281d281f267c2679281b281426a0281928162814280e267e2813280f28112810280e2804280b280d28062802267028092805280726702801280528002671280527e727ff27fe27e6⟩, ⟨0x530280134094047022010407c03c01d00dc06803201780b0052026012008804001e00e0068030015009804401c00b0040014006000, 0x20b0209028b728b2208c28b528ac28af28b1005c28a928ad28a8005d28ad28a8289d28ab289c28a928ab006028a9289d28a728a028a328a52898289428a12897289f289a2896289d289c2896289b28982897289d289c28972899289a005f005e289b005a28992896004b004a2897005228952892004f288a288f2891288e00512889288d2888286a288b28602889288b286827e028872882287b2885286d2883287a2875287f⟩, ⟨0x55029014009a04a023011008203f01e80e807003501980c005a02b014009804602100f006c030016009804401c00c0048018006000, 0x293227be29352931293327c227cb292f29222929292b2924281e279c292729232925281c279d292328b32921291e2900291a2911291d290b291b291229102915290f2911290a28fe290d2902290729092903290528fc2901290328fd28ff28f828f328fb28bf28f928f227e228f528ee28d228f128ea28b928ed28c928eb28e228d328e528cf28e328ce28cc28d128c728cd28c828c628cb28c2288828c528be288c28c128ba28b828bd⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x5802b014c0a204e025812408c04302000f407403701a00c805c02c014809c04802100f0070032016009804401c00a0040018006000, 0x29a729a929a229a029a5299f29a12992299b299d29962994299929932995298c298f29912896206b298d206a2897298d29882896298b2976297d2987297c27d0297f297827bc297b2977297928a6289a28962975297200572962296f2971296e0059294027a6296d29662969296b27a629612967295f2965295e294229632960295f2963295a2953295d2945295b2952294d2957294829462944294b294329492941294729302937293f2936279c2939⟩, ⟨0x5802a81480a004d025812008a04202000f407603801a80c805e02d01500a004a02200f807003401700a004401c00c0048018006000, 0x2a362a352a392a302a2e2a332a2d2a2f2a282a232a2b2a1f2a292a1e2a1c2a212a1829942a1b2a142a122a172a112a132a0c2a0a2a0f29ef2a0b29f229ee2a0929f62a012a072a0029ff2a0329fa29f829fd29f729f929ea29e329ed29df29eb29e227a429e529de296429e129da295e29dd29d629d429d929d329d529bc29cb29d129ca29c729cd29c629c529c929c029be29c329bd29bf29b829b629bb29b229a629b529ac29af29b129aa29a729ad⟩, ⟨0x5802a814809e04d025812008a04202000f407403801a80cc06002d015009c04802200f8070032016009804401c00b0048018006000, 0x279627a12ab10e4a0de82aad21b221a42aab2aa82a9e2aa626c62aa02aa32aa52a9e0e452aa12a9a2a8c2a9d2a982a962a8a2a932a952a8e2a8c2a912a8b2a8d2a862a5f2a8929892a872a8213ac2a852a7c2a7f2a812a7a2a1d2a7d2a762a222a792a702a672a732a632a712a682a662a6b2a62289e2a652a5e2a422a61299e2a572a5d2a5629a82a5929a32a5529d229f32a532a4e29b72a5129b32a4f2a102a0d2a492a2c2a3b2a412a3a2a372a3d⟩, ⟨0x5602a014409c04b024011408604001e80e807003501900bc05802a013809404401f00e8068030015008803c01a00a0038014004000, 0x2b3b2b3d2b362b342b392b1a2b292b2f2b282b252b2b2b242b232b272b1e2b1c2b212b1b2b1d2b1604e62b192b0a2b132b152b0e2b0c2b112b0b2b0d2aee2b012b092b002af92b052af82af72afb2af22af02af52aef2af12aea2ae82aed2ae72ae92ae22ada2ae52ade2adc2ae12adb2add2ad62acf2ad92ac32ad72ace2ac92ad32ac42ac22ac02ac72abf2ac12abe00eb24da24d42abd064e064b2abb2ab82ab625720c382ab525532ab3⟩]) ( (.branch 2 ( .leaf #[⟨0x5802a814c0a004d025011c08a04201f80f007403701a80c405e02d01580a404e024010007403401800a804801e00c0048018006000, 0x2bb42b942bb72bb32bb52b962ba92bb12ba82ba12bad2ba02b9f2ba32b9a2b982b9d2b972b992b822b8d2b932b8c2b8b2b8f2b862b842b892b832b852b7c2b772b812b712b7d2b722b702b6e2b752b6d2b6f2b6c01432b6a01412b672b692b66013f236a06a82b6523722366066a2b6324da24d62b612b5c2b352b5f2adf2b5d101a10172b592b522b552b570f842b512b532b500f852b532b3a2b492b4f2b482b452b4b2b442b432b472b3e2b3c2b41⟩, ⟨0x55029014009c04b024811808804101f00f007203601980c405e02d01580a004a02200f8070032016009804001c00b0040014006000, 0x2c1e2c1c2c212c1b2c1d2c152c192c142c122c172c112c132c0a2c092c0d2c0800312c022c052c072c002bf82c03002c2c012bfc2bef2bff2bfa2bf62bfd2bfc2bf62bfb2bfa003700362bfb00322bf92bf600252bf02bf32bf52bee00352bf12bea17c22bed06a606752be92bb22bbb2be72bcc2bdb2be12bda2bd72bdd2bd62bd52bd92bd02bce2bd32bcd2bcf2bc82b842bcb2bc22bc52bc72bc02bb92bc32bb92bbf2bba2bb82bbd⟩]) ( .leaf #[⟨0x5702a014009c04c024011808604001e80e406e03401900bc05a02a013809004401f00e006402e014008803c0180090038014006000, 0x2c982c932c9d2c8e2c8c2c8a2c912c812c8f2c892c8d2c842c801ef62c872c832c852c801ef62c832c821ef72c7f2c742c7b2c7d2c762c6c0bca2c792c752c772c702c6e2c732c6d2c6f2c682c522c6b2c672c692c542c5f2c652c5e2c5d2c612c582c562c5b2c552c572c4c2c4f2c512c4a2c412c4d2c462c452c492c432c472c422c402c2c2c3a2c352c3f2c332c3b2c322c302c1a2c2e2c2a2c312c2d2c2f2c292c2b2c28002f2c102c1f2c27⟩, ⟨0x5702a814809e04c025011c08a04202000f407403801a80c806002d01580a004a02200f807403401700a004401e00c0040014004000, 0x2d1a2d162d162d142d192d102d022d132d082d0d2d0f2d092d0b2d062d032d092d032d052cfe2cfc2d012cfb2cfd2cd62ce32cf92cee2ce92cf32ce72cef2ce62cde00342ce22ce02ce52cdf2ce12cda2cd82cdd2cd72cd92cc02ccf2cd52cce2ccb2cd12cca2cc92ccd2cc42cc22cc72cc12cc32c662c712cbf1c242c832cb52c821c252cb52cac2cb12cb32cad2caf2ca42c7f2cad2c842c7e1ef82cab2ca42c882ca72ca02c992ca32c8b2ca1⟩, ⟨0x57029814409c04b024811808604001f00ec07003601980c405c02b014009804602000e8068030015009803c0180090038014004000, 0x2d9a2d962d942d9d2d992d9b2d882d912d932d8c2d8a2d8f2d892d8b2d762d812d872d802d7f2d832d7a2d782d7d2d772d792d722d502d752d6e2d6c2d712d662d622d622d602d652d5f2d612d5a2d4e2d5d2d542d572d592d522d4f2d552d4f2d512d322d3d2d4b2d402d432d4500342d3b2d412d3c2d3a2d3f00762d3b2d362d342d392d332d352d2e2d0a2d022d312cfa2d272d2d2d262d042d292cff2d252d242cfe2d202d152d232d112d21⟩]))))) ( (.branch 4 ( .leaf #[⟨0x54029013c09a04a024011408203f01e80e807003501980c005c02b013809404401f00e006802e014008803c01a00a0040014006000, 0x2e132e212e182e002e1b2e172e192e122e102e152e052e112e062e0d2e0f2e082e042dfe2e0b2e072e092e022e002dfa2df82dfd2df72df92dee2dec2df12deb2ded2de62de42de92dd92de52dda2de12de32ddc2dd82d4c2ddf2ddb2ddd2dc62dd12dd72dd02dcf2dd32dca2dc82dcd2dc72dc92db62dbf2dc52dbe2d942dc12dba2db82dbd2db72db92db02dac2dac2daa2daf2da92dab2da42da22da72d952da32d982d9f2da1⟩, ⟨0x5902a814c0a204e025812008c04302000f407403701a80c805e02d015009804802100f006c030015009804001c00b0048018006000, 0x2e960f660f522e990f632e972e960f622cb60f5a2e952e9025e62e932e8c2e672e8f2e632e8d2e842e662e872e802e6e2e832e6c2e772e7d2e762e752e792e702e6e2e732e6d2e6f2e682e662e6b2e622e602e652e552e612e562e5d2e5f2e582e5412de2e5b2e572e5927f227ef2e532e4e27f42e512e4a2d8a2e4d2e2c2e412e472e402dd82e432e312e3f2e342dec2e392e362e342e302e2e2e332e2d2e2f2df62e252e2b2e242e042e272e202e192e23⟩, ⟨0x530278134096049023811008403f01e80e806e03401900c005a02a013809404402000e006802e014008803801800a0040018006000, 0x2f042f022efc2f072eff2f012efe00652efb2efd2efa00632ef62ef42ef900662ef52ef02eee2ef32eed2eef2ee825422eeb2ec22ecd2ee72edc2ed72ee12ed32edd2ecb2ed52ed22ed02eca265a25942ed12ecc2eca2ecf006a2ecb2ec62ec42ec92ec32ec52ebe2eba2ab22ec12ebd2ebf26ba2eb72eb9269e26732eb52ea82ead2eb32eac1dda2eaf2ea92eab2ea61fee2e9b2ea52ea22e9e2e9e27982ea12e9a29322e9d⟩, ⟨0x5702a014409e04c024811808604101f00f007403701a00c805e02b014809804802100f8070032016009804001a00a0040014006000, 0x2f8c2f8a2f8f2f862f842f892f7b2f852f7e2f812f832f7c2f7b2f7f2f442f732f792f722f4c2f752f492f712f6c2f612f6f2f5d2f6d2f662f622f622f602f652f5c2f5a2f5f2f4d2f5b2f502f572f592f522f4e2f4c2f552f512f532f482f462f4b2f452f472e182df22f432f402cb82ebc27692f3f2eb62ebb2f3d2eec2ef72f3b2f1a2f2d2f352f2c2f252f312f242f232f272f1e2f1c2f212f1b2f1d2f162f0f2f192f032f172f0e2f092f13⟩]) ( (.branch 2 ( .leaf #[⟨0x54028813c098049023011008203d01d00dc06803201780b0054027012008804001e00d806402c014009003c01a00a0038014004000, 0x2ffe2ffc30012ffb2ffd2ff626d42ff92ff226f62ff52fea2fef2ff12feb2fed2fe826552feb291e290428fc2fe72fe229102fe52fde29f82fe12fda2fd92fdd2fd72fdb2fd62fc229a62fd02fcb2fd52fc92fd12fc82fc62fb62fc42fc02fc72fc32fc52fbf2fc12fbe00552fba2fb82fbd2fb72fb92fb22fac2fb52fb12fb32fad2faf2fa829732fab2fa62f9c2fa02f7a2fa32f9c2f9a2f9f2f992f9b2f942f8b2f972f872f95⟩, ⟨0x5902b014c0a204e026012808e045021810007c03c01c80dc06803101680a004802100f007003201700a004401a00b0040018006000, 0x306c306f3071007a3065306d3065306b306630643069306400bf00be30653060305e3063305d305f3043305b3056304d305930473057304f3053304e304c3051304b304d30461fb2304930421ab930451f1c1ec01c2030411c2c1c261c221c1e303f2cae2ca82c7e303d30341ef830373030302e3033302c05583024301f3027301b3025301e30163021301a23c0301d23c623be0ac6301914cb3015301014a1301314d930112ffa3005300b300430033007⟩]) ( .leaf #[⟨0x5702a014409c04c024811c08804201f80f007203601980c005c02b014009404401f00e806c032016009804001c00b0040014006000, 0x310630e431093102080a310530fe07e2310130db30fd30f430f230f730f130f330e230df30ef30e330e530de07fa30e130da07aa30dd30c430d330d930d230cf30d530ce30cd30d130c830c630cb30c530c72e482cfc30c330be30a830c126c030a330bd26be30a930b730a430a230a7174130a130a01740309e30963098309b309d309630913099309230903095308d308f307830833089308230813085307c307a307f3079307b305c30673077⟩, ⟨0x540288138096049023011008203f01e00e806e03401880b805802a013809004402000e806c03001600a004401c00b0040014004000, 0x14b2237f317717fa17f73175182417bf3173316b316f316a3168316d3167316907c007b73165316200d9177e315f3161315e00d5315a0d00315d3134190631593136313f3157314c314731513143314d313d31453142313c00e6313e313c3141313c01210120313d3138312a313b3137313931301e6531331e6d3131312c1e6631260f0a3129312007c2312308e608e3311f31180762311b310a06cf3117310e310c3111310b310d⟩, ⟨0x5c02c81580a60510270130092045021810007c03a01b80cc06202f015009c04802100f007003201700a004801e00d005001c008000, 0x1f6e1f2931cb31c4256e31c71a841f6f31c31b3531c131bc152131bf152731bd31b031b731b931b231ae146031b531b131b331aa1ce131ad1ce531ab14501426120231a923f41a3031a731a223f8145c31a523f531a331a223f4146a1462145e145831a11662165f319f03660363319d31980368319b319425093197250f3195319001e1319301e7319130aa26dc318f317b318d318830a8318b31863182318230a23185317c317f3181317a26ab317d21c00f240f1c3179⟩]))))))))) ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x5802a81480a004d025812008c04302000f807603801a80c805e02c014809c04802200f807003201700a004001a00b0040014004000, 0x32381ef6323b32343230323732333235322a3225322d3221322b3220321e32233219321f321a3218321d3214078132170789321508e007ef320f30fa077a320731ec31f5320531fa31fd31ff31f831f331fb31f431f231f731ee0e1a31f131ed31ef31e831e731eb31e531e931e4265425781b481b4531e331de31dd31e131db31df31da1faa0c24305a1f6a1f5c31d931d41ec931d71ecf31d51f3a1f2931d31f621c3a31d131cc1f2b31cf1f6f31cd⟩, ⟨0x5802a814809e04c025011c08804201f80f407203601980c005a02b014009404402000e806c030015009003c01a00a0040014006000, 0x32b632c532cb32c432c132c732c032bf32c332ba32b832bd32b732b932b2326c32b532ae326532b1325f32af32a4329f32a9329b32a5329a327c2b68329d327e3291329932903289329532883287328b328232803285327f3281326a3275327b327432733277326e326c3271326b326d32663264326932633265325e325432613258325b325d325632553259324e322f3251321b324f32463244324932433245323e302f32413035323f302e2cb8323d⟩, ⟨0x5b02b81500a404f026812408c04302000f407403801a80c805e02c015009c04802100f006c030015009804001a00b0040018006000, 0x333e333c0c9a334133383333333b332733393332332e3335333133330dd60d960d8a332d33260d903329247a247733253316331d3323331c023e331f331832fe331b331733193300330f3315330e330b3311330a3309330d330433023307330133032468247132f9246001c632f50580057d32f332e416f232f132da32e932ef32e8170432eb32e432dc32e7234732e332d2067e32e132dc32d432df32db32dd32d616f232d932d532d717d0182732d12b501a4632cd⟩, ⟨0x5702a01480a004d025011c08804101f80f007203601980c405c02b014009404602000e8068030016009804001a00a0040014006000, 0x2ab6339333cb33b733c933c633c233c2322e33c533bc33bf33c133ba321933bd33b6322433b933b2338033b533b033ac33ac337233af33a633a933ab337433a533a733a0339933a3339533a133983390339b33943392339733703379338f33883381338b337d338931ee0dbe3383337c3374337f33783376337b337533773371337333543367336f3366335f336b335e335d336133583356335b33553357335033493353333d335133483343334d⟩]) ( (.branch 2 ( .leaf #[⟨0x530288138098049023010c08003e01d80e006a03301800b8056027012808c04001d00d005c02a013008003801800a0040018006000, 0x343c343a341c3427343700433431342a342d342f00423425342b3426342434293420341e3423341d341f340a3415341b341434133417340e340c3411340b340d3402340734093403340533fa33f3340333fe33f833f2340133f133ff33f533f933da33f533f733f433db33f733f433f133f333ea33e533ef33e133eb33df33e333e033de0ef433db33dd33da009733d733d933d333d533d200953330332733d133ca33cd33cf⟩, ⟨0x56029814409c04b024811c08804001f00ec07203601a00c405e02c014809804602100e806802e014009003c0180090038014004000, 0x34c434c234c734bd34c334be34bc34c134b834b034bb34b734b934b434b234a634ad34af34a834a4348e34ab34a734a934a0349934a3349334a13498348c349b34973499349234903495348f3491346e3477348b347c347b347f347600423479347234703475346f3471346a344a3444346d343e34633469346234463465345e345534613451345f3456345434593450344434533448344d344f3449344b344534473440343a3443343f3441⟩]) ( .leaf #[⟨0x56029814009c04b024011808603f01e80ec07003601980c405c02b014809804602000f006c030015009804401c00a0040014004000, 0x3540353f3543353a3538353d35373539352e135a3531352a3523352d3517352b3522351d3527351835163514351b3513351535120039350e350c3511003a350d35083506350b3505350734fe3501350334fc34f434ff003e34fd34ea34f934fb34f834f234f734f834f334f534f6004534ec34ef34f1004234eb34ed34e6109934e910a134e734e2109a34d834df34e134da34d634bc34dd34d934db34b634bf34d534ca34b234cd34c934cb⟩, ⟨0x5602a014409c04a024011408604101f80f007403701a00c405c02b014009404602000f006c030015009003c01a00a0040018006000, 0x35cf35d135b235bb35cd35be35c535c735c035b621f835c335bf35c135ba35b835bd35b735b935b335b535a935af35aa35a835ad35a535a73504350f35a135563532359b35941331359933f035953597357034383593355e3563359135883578358b357d3587357c357a357f3579357b357433fe35773570355c357335543567356f35660ecc35693562139e3565355f356135583556355b355535573552353435363549355135483541354d⟩, ⟨0x55029814409c04c024811808604101f00ec07003601980c405c02b014009404602000f006c030016009004001a00a0040014006000, 0x36533655364d364f18b618b3364b008a3647363e305e36453640307a364330f80864363d363a003d35a435ab363935e835ed3631362c3629362f3625362d36243604362735093623360c361b3621361a3617361d3616361536193610360e3613360d360f35f63601360b35ff3605360035fe360335fa35f835fd35f735f935f235ee35ec35f535f135f335e035e935eb35e435e235e735e135e335d235d735d935d335d535ce216935d3⟩]))))) ( (.branch 4 ( .leaf #[⟨0x5b02c01540a404f026012408e04402080f807603801a80c805e02c014809804602000e8068030015009804001c00b0040014006000, 0x301414c336cf3262325f36c736aa1aac36c536be36a836c11b6236a336bd31c036a936b736a736a936a236a036a5369c35ae369f30f030df369b23ac0a553699236806683693236c069c3691308e308a368f308c3093368d34703124368918e418e13687366a366736853680366c368336523679367f36783658367b3674366d367736673675366c3650366f366b366d36663664366936593665365e366136633658365b365f365a3659365f365b365d365412d03657⟩, ⟨0x5802a814c0a004d025011c08804202000f407603801a80c405e02d01500a004a022010007403401700a004401c00b0048018006000, 0x3756375537593751375337483747374b37422d343745373e2d7837413732373b373d37363734373937333735372e0029371a372b372d372a002b372437273729371e371937253720371c3718372337173721371b371d36f8107c3715370f3713370e116e3711370a114d370d1177370b3702114c370536fe10aa370136f6109836fd36f2340c36f536e036eb36f136ea36e936ed36e436e236e736e136e336d4345436d7304a304736d32366091336d1⟩, ⟨0x5702a814809e04c025011c08804101f00f007203601a00c405e02c014809c04802000f0070032016009804001c00c0048018006000, 0x37ed37ef37d637e137e737e037df37e337da37d837dd37d737d937cc37cf37d137ca37c937cd37bc37c537c737c037be37c337bd37bf37b4378c37b737b037ae37b337ad37af37a837a137ab379d37a937a0378837a3379c379a379f378d379b3790379737993792378e378c379537913793378a3788377e00343781377a3778377d3774376e3777376c37713773376d376f375f376b376637523769376037633765375e2bf7376137503757375d⟩, ⟨0x5a02b814c0a204e026012408c04302000f807603801a80c805e02c014809804602000e806c030015009004001c00b0040014006000, 0x38723879387b38743870386e387738733875386a3868386d386738693862377838653852385b3861385a2722385d385638543859385338553848266a384b38443842384738380ef13841383a383d383f37d23837383b3836364d3839382c3430382f382837e8382b381a38213827382036463823381c37d4381f381b381d381438173819381237f53815380c3801380f37fd380d3806380238023800380537fc37f437ff37f837f637fb37f537f737f037ee37f3⟩]) ( (.branch 2 ( .leaf #[⟨0x530288138098049022810c08003e01d80e006c03401880bc058029013809004001e00d806402c014008803801800a0038014004000, 0x38ef38f138ea38e838ed38db38e938de38e538e738e038dc38da38e338df38e138d638d438d938d338d5389a38cb38d138ca38a638cd389f38c938c8389e38c438bd38c738b938c538bc38a238bf38b838b638bb38a738b738ac38b338b538ae38aa38a638b138ad38af38a838a738ad38a438a2389e389c38a1389b389d3866389338993892386e3895386b3891388a388638863884388938833885387e387c3881386f387d⟩, ⟨0x55029014009a04b024011408604001e80e806e03401880b8058029013809004001e00e006402e014009003c01a00a0038014006000, 0x3970396e39730040396f396a37ea396d3969396b3964129a396739603959396339553961395837ba395b3954364e3957390a3913395339323945394d3944393d3949393c393b393f39363934393939333935392e39273931391b392f39263921392b391c391a3918391f391739193916002139123910391500223911390c2c0e390f390b390d390637793909377f390738d238ff390538fe38da390138d738fd38f638f238f238f038f5⟩]) ( .leaf #[⟨0x520278130094047022010407e03c01d00dc06a03201780b4056029013809004401f00e8068030015009804001a00a0040018006000, 0x39d639d539d939d039ce39d339cd39cf39c439c739c939c239b939c539be39bd39c139bb39bf39ba39b839a439b8001339b239ad39b739ab39b339aa39a8399839a639a239a939a539a739a139a339a239a0001039a1399c399a399f3999399b3994398c399739933995398e398a3991398d398f39863985398939840015397e39813983397c0008397f397a0009397f001c397d0016397b3974397739790008396f3975⟩, ⟨0x5802a814c0a004d025011c08a04202000f407403701a80c805e02c014809804802100f006c032016009804001a00a0040014006000, 0x3a583a563a5b3a553a573a3e3a4d3a533a4c3a493a4f3a483a473a4b3a423a403a453a3f3a413992399d3a3d3a033a373a243a2f3a353a2e3a2d3a313a283a263a2b3a253a273a0a3a153a233a183a1b3a1d32523a133a193a143a123a173a0e3a0c3a113a0b3a0d3a043a073a093a0239f93a0539fe39fd3a0139fb39ff39fa39f839a039de39e939f739ec39ef39f139e425a739ed39e839e639eb39e539e739e039ca39e339df39e139cc39d739dd⟩, ⟨0x5702a814809e04c024811c08804101f80f007203601980c405c02b014009804602000e806802e015009004001a0090038014004000, 0x3af33af53adc3aeb3af13aea3ae73aed3ae63ae53ae93ae03ade3ae33add3adf3ad63acc3ad93ad23acd3ad535893ad335863abb3acb3aba37063abd107a10773ab93ab43aad3ab73aa93ab53aac37303aaf3aa837203aab396839713aa739873aa13a543a5f3a9f3a7e3a913a993a903a893a953a883a873a8b3a823a803a853a7f3a813a7a3a733a7d3a673a7b3a723a6d3a773a683a663a643a6b3a633a653a62000b3a5e3a5c3a61000c3a5d⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x5c02c81580a60500268128090045021010007a03b01b80d406603001680ac050026011808003a01a00b805402000c0048018006000, 0x3b623b363b653b5e3a563b613b483b573b5d3b563b533b593b523b513b553b4c3b4a3b4f3b493b4b3b343b3f3b473b3e3b3c3b4100183b3d3b383b363b3b3b353b373b303b2c3b283b333b2f3b313b2b3b2d3b1c3b253b273b203b1e3b233b1d3b1f3b1836da3b1b3b173b1933d213333b15133233d33b15116c11693b133b0c3b0f3b1133d63b093b0d3b0a3b0833e233dc33d833d43b07340433fc33f23b053abe33fe3b033af23af93b013af812743afb3af43ada3af7⟩, ⟨0x5b02c01540a404f026012408e04402080f407403701a80c805c02c015009804802100f006c030016009804001c00b0048018006000, 0x3bda34ca3bdd3bd634b83bd93bd034403bd335f0363b3bcf36fa341e3bcd3b9c3bc93bcb3bc8001b3bc23bc53bc736d83b993bc33b9e3b983b1e3bc13ba236d83bbf3bba3bb33bbd3ba53bbb3bb23bad3bb73ba83ba63ba43bab3b9b3ba93ba33ba73b9e3b9a3b1c3ba13b9d3b9f349634933b9736de34983b953b723b7d3b933b883b833b8d3b813b893b803b7800083b7c3b7a3b7f3b793b7b3b7436dc3b773b733b753b163b213b713b243b293b6b3b663b4a3b69⟩, ⟨0x5802b014c09e04d025812008c04302080f807603901b00cc06002d015009c04802100f006c030016009004001a00a0038014006000, 0x3c3b3c4f3c463c413c4b3c3c3c3a3c383c3f3c373c393c3600473c323c303c3500483c313c2c3c2a3c2f3c293c2b2fb02fbb3c273c1e3c1d3c213c1b3c1f3c1a2fbe2896290e290b3c19268e1eca3c173c103c133c150a84252d3c11253e25323c0f3c0a35a63c0d3bec3bf13c093bf83c013c073c00126c3c033bfc3bfa3bff3bf93bfb3bf43bf23bf03bf70eed3bf5364c3bed3bef3be4369d3beb3be63bd43be93be53be73bdb3be33bde37343be1⟩, ⟨0x5a02b81500a204e025811c08a04201f80f007203701a00c805e02c01500a004a02200f807003201600a004401c00b0040014006000, 0x3332332a3cd114b814cf3ccf3cb83cbd3ccd3cc83ca83ccb3cc43c923cc73cc03cbc3ca23cc33cbf3cc137163cb93cbb3ca63cb13cb73cb03cad3cb33cac3cab3caf3ca73ca93ca0372f3ca53ca13ca33c903c973c9f3c963c943c9900263c953c913c933c8c2e2e3c8f2e162e133c8b3c743c833c893c823c7f3c853c7e3c7d3c813c783c763c7b3c753c773c283c333c733c523c653c6d3c643c5d3c693c5c3c5b3c5f3c563c543c593c533c553c4e3c473c51⟩]) ( (.branch 2 ( .leaf #[⟨0x56029814409c04a024011408604001f00ec07203601980c005c02c014809804802100f006c03201600a004401c00c0048018006000, 0x3d3e3d3c3d413d3b3d3d3d303d373d393d323d2835b03d353d313d333d2c3d2a3d2f3d293d2b3d243d223d273d213d233d1c3d0d3d1f3d133d1d3d163d0c3d193d1235d03d153d0e3d0c3d1120133d0b1a333d093ce03ce73d073d003cff3d033cfd3d013cfc0d6606cc3cea3cf53cfb3cf40d6e3cf73cef3cf33cee3cec3cf13ceb3ced3ce631443ce93ce23cde3ce53ce13ce33cda1e643cdd1fe01e783cd934c834c53cd73cd22ffc3cd5⟩, ⟨0x5802b014c0a004c024811c08804101f00ec07203701a00c405e02c015009804602000e8068030015009804001a00b0040018006000, 0x3db33db53dae1da63db13daa1d623dad2aa626ca26c23da93da43da33da73da13da53da012740eb43d943d923d9f2ae62ae33d9d3d8e3d953d9b004c3d933d8f3d913d8a273e3d8d3d863d853d893d833d873d821a0a0f5223f13d8135d435ce21963d7f3d663d3f3d7d3d6e3d223d7b3d763d4c3d793d723d683d753d703d6e3d683d543d6b3d673d693d5235b43d653d4a3d473d633d563d543d4e3d4c3d513d4b3d4d3d463d283d493d423d3a3d45⟩]) ( .leaf #[⟨0x5902b01480a004e026012408e04402080f807803901b00cc06002d01580a004a02200f807403401700a004401c00b0048018006000, 0x3e3a3e353e3f3e303e2e3e2c3e333e2b3e313e293e2f3e263e243e1e12503e21133d3e1d1e621e6d3e1b3e163e0c3e193e123e0d3e153e073e133e06178c3e093e021e2a3e053df03dfb3e013dfa3df93dfd3df43df23df73df13df33dec121a3def3ddc3de53deb3de4195a3de73de03dde3de33ddd3ddf3dd831383ddb3dd411f23dd72dea2de73dd33dce08563dd13dca1d8c3dcd3dc42d6d3dc72d733dc53db23dbb3dc13dba306a3dbd3db63db43db9⟩, ⟨0x5d02d815c0a8050026812808e04402080f807603801a80c806002d015009c04802200f807403401700a004401c00b0040014004000, 0x175d3ea73d0831a21a2e3ea53e9e35603ea313c813a413983ea13e9a3e923e9d31bc3e933e9936a636ab3e9132321eff3e8d1d1a1d173e893e5a3e653e873e6e1d023e833e703e793e813e783e603e7b3e743e723e773e713e733e683e6b3e6d3e60005d3e69005c3e613e693e643e623e673e613e633e5c3e583e5f3e5b3e5d3dc81d1c3e573e2417723e553e4831633e533e283e223e513e4a3e4d3e4f3e223e473e4b3e2a173c3e493e46173d3e493e423e3b3e453e2d3e43⟩, ⟨0x5802a81480a004e025812008c04302080fc07803901b00cc06202e01580a004c023010007403401700a004401e00b0048018006000, 0x3f080ebc3f0b3f043efe3f073f033f053eff3f01233024db3efd3ef816513efb16593ef93ef422eb3ef722f53ef522ed3ef13eec02e43eef3ee82eaa3eeb32e216d03ee73ee235713ee535753ee330421f6c3ee11e761e733edf3eda19fb3edd1a033edb20ae20ab3ed93eae3eb33ed73ece3d903ed53ed03ebe3ed33ebc3ec73ecd3ec63ec33ec93ec23ec13ec53ebd3ebf3eb83eb43eb23ebb3eb73eb928883eaf3eb1172417203ead3ea83ea63eab⟩]))))) ( (.branch 4 ( .leaf #[⟨0x5a02c01540a4050026812c092046022010407c03b01c00d406402e01580a404e024010807803601900b005002200d005001c006000, 0x3f713f7d3f763f743f793f7006d23f733f6b3f6f3f6a36283f6d3f6830a13f6812e130a012e03f691ad93f67054605433f653882387f3f632d5e2d5b3f612da82da53f5f38ee38eb3f5d3eb628933f5b300c2fec26543f593f543f173f573f133f553f193f513f343f473f4f3f463f3f3f4b3f3e3f3d3f413f383f363f3b3f353f373f303f293f333f1d3f313f283f233f2d3f1e3f1c2f003f213f183f163f1b3f122ed43f1525da25a025903f113f023f093f0f⟩, ⟨0x5a02b014c0a204e025812008a04202000f407603801a80c806002d01580a004a02200f8070032016009804401c00b0040018006000, 0x25942592257e3fdf3fda273f3fdd27433fdb1f6c31cd3fd931cc1f6d3fd5177e0c6e3fd318c418cd3fd13fca38293fcd382d3fcb3fc638433fc938493fc7131413113fc53fb03ce23fc33fbe28493fc1284d3fbf1d601d5d3fbd3fba3fb81da41da13fb73fb2185a3fb53fac05e43faf3fa63fa93fab3fa42b6b3fa73f923f9d3fa33f9c3f9b3f9f3f963f943f993f933f953f823f8b3f913f8a2bbe3f8d3f863f843f893f833f853d0a1a683f813f7c3f753f7f⟩, ⟨0x2f01700b405802b01500a4050027013008803e01d00d806403001700a804c024011008003c01c00d00580280120080038018006000, 0x1f001e801e201d201d001ce01c201c001be001e017f019701af0192018f01b701b6019b01b401b101b0019b01ac01a401a0019d019c019b019a01980190018a0188018601780177017601740170016e01663fe22bce3fe53166315b3fe1⟩, ⟨0x2a01480a004e0260128090046022010808003e01e00e806c03201800b8058028012008804001e00d005002400e0040018008002000, 0x272026c0266026402620254025602500248024a0238022e022c022602250224022302220220021a02140213021202110210020e020a02040203020201ff0201020001fe01fd01fc01f701fb01fa01f401f801f2⟩]) ( (.branch 2 ( .leaf #[⟨0x3101780b805a02c01580a4050025012008804202000f807403801b00d006402e014009804402000f005802400e006002800c002000, 0x2f002ef02ee02ec02e602e002d602d302d202d002cb02cf02ce02ca02c902c802c602c402b602b502b402b202ae02ac029e029d029c0299029b029a029801fd02960292001e01dd025d0281028a02890288027502860282027a0277027602750274⟩, ⟨0x3701b00d406603101800bc05c02d01600ac054029013809404602100f807403201700b0054028013009004402000f0028010006000, 0x37e037c037403710370036f036e036c0364035e035c035a034e03460342033f033e033d033c0331033803350334033303320331033002f1032d032f032c032b032a03280322031c0314031203080300001e01cd029102a102a302a502ab02b902f302fd02f802f602e202eb02f1⟩]) ( .leaf #[⟨0x2e01680b005602a01480a004e02600e806c03401900c005c02c014009004402000f007003401800b004801c00c0050018008002000, 0x3f603f203f003e803e403e203e003d8001e000503030345034d038d03a703af03bf03ce03cd03cc03ca03c603c203c003b803b503b402ef03b203b003ac03aa03a803a0039e039603950394036f0392038e038a0389038803860382⟩, ⟨0x3701b00d006603201880c005e02d01600ac054029014009004402000f807403601a00a8050016009004001c00c0050020008002000, 0x464045c045b045a045804540450044e044204410440043e043a04360434041803030353036b042c042b042a041f0428042404210420041f041e04160303031b038d041b041c001e0003038d03d703df03e703ef04070417041204110410040e040a0408040003fe03fd03fc03fa⟩, ⟨0x26011808804001f00f007403801b00d006403001600a8050026012008804001c00c0058028012008003801800a0040018008002000, 0x4dc04d704db04da04d604d504d404d204c804d004c604c404be04b804a404af04b004ac04aa04a2049e049804940421049204910490048e048a04860484047c047804740472047004680466⟩]))))))))))))) ( (.branch 71 ( (.branch 35 ( (.branch 17 ( (.branch 8 ( (.branch 4 ( .leaf #[⟨0x3701b00d406803301900b8046022010808003e01d00e006c03401900b005002600e006802c014009004001c00c005002000c002000, 0x54c0544053e053c053a03d00303031b039d001e038d03d103df03e703ef049b050705230527052b052e052c052805240520051f051e051c0518051604b204bd050f050e050d050c050a04cd04e904f505070508050405030502050004fc04f804f604ee04ec04ea04e204df04de⟩, ⟨0x3101800b4056029013809804a023011008404001f00f007003401900b0050026012008804001e00e006802400e005002000c002000, 0x5ce059a05b105b705c605b505c405c105c005b305be05ba05b405b305b205ae05a605a0059e059605950594058b0592058e056f0589058c058b058a0586057e057805760574056a001e0535054f05590562056105600551055e055a055205510550⟩, ⟨0x2e01680b005602a014809804801f00f007403801900c005802a014009804802000e006803001600a004802000c0040018008002000, 0x6540652064c06460640027c0285063906380275001e01ab01d50629063506320630062e06260621062506240620061f061e061c061a06080604060306020601060005fe05f205f005ee05e605e005dd05dc021105da05d605d205d0⟩, ⟨0x3301900c406002f01700b0054026012808c04202000e006803201800b805802a0140098048022010006002c0140090030010004000, 0x6d006ca06c806c006ba06b406b106b0069f06ae066b0689069b06ac06a406a106a0069f069e069c066b0689069b06980697069606940690068c068a0682067c0676066c0670001e01d70637063f066606640662063a0645065d065c0655065a065706560655⟩]) ( .leaf #[⟨0x25012008c044021010007c03c01d00e006c03401900b8058026012008003c01c00d0060028012008003801800a0040018008002000, 0x74807460742073e073c07340732073007280724072207200718071507140712070d07110710070c070b070a070806fe070606fc06fb06fa06f806f406f006ee06e606e406e206da06d8⟩, ⟨0x2c01580a8052028013808c04201f00f006803001700a8050026012008804001e00e006803001600a004802000c005002000c004000, 0x7e407e007da07d807d6001e079707b107bd07ca07c707c607b307c4001e079507ad07bf07ba07b507b807b407b307b207ae07a607a0079e079c0790078a078407780770076c0764075e075d075c075a07560754074a0749⟩, ⟨0x2c01500a004e026012808404001f00f007403801b00d006002e01600a8050026012008804001c00d005002000e006002800c002000, 0x860085d085c085b085a08580854001e0841084f0851084a08480846083e08360834083208280827082608240820081c081a08120810080e080408030802080007fd07ff07fe078f07fc07f807f207ec07e907e807e707e6⟩, ⟨0x29014009c04c025011808404001f00f007403801b00c806002e01600a8050026012008803c01c00b005002000e006002800c002000, 0x8ea08e408dc08d808d408d108d008cf08ce08cc08c608c008be08bc08b008af08ae08ac08a808a6089e089a089808960888088508840882087d08810880087c087b087a08780876086a08690868085b0866⟩]))) ( (.branch 4 ( .leaf #[⟨0x3201880c005e02e01600ac054029014009804a024011808804202000f807803a01b00c806002e01600a802000e0060028010004000, 0x97409720968096009580957095609540950094e0946094509440942093e093a09380930092a09240920091c091909180655091609140910090e001e03df03e70433044d046f0477047b048308df08f308fb0903090008fe08fc08f408f008ed08ec0803⟩, ⟨0x29014009c04c025012008c04001e00e806002c01500a004c022010007803801a00c0058028012008003801800a0040018008002000, 0x9ea09e809e409e009de09d60994099f09d309d209d109d009ce0703072f09af09c509c009cb09cc09c809c609be09bd09bc09ba09b609b209b009a809a609a0099a0992098e098c098a09820980097e0976⟩, ⟨0x2f01700b405802b01480a004c025011008403e01e00e807003601900c0058024010007803401800b0050024010007002800c004000, 0xa5e0a580a520a500a4c0a4b0a4a0a480a450a440a420a3d0a410a400a3c0a3b0a3a0a380a360a300a2a0a290a280a220a210a200a190a1b0a1f0a1e0a1d0a1c0a180a170a160a140a100a0e0a0609fc09f209f109f009ef09ee09ec09eb⟩, ⟨0x2d011008404001f00f007403601a00c806002e01600a004c024011008003801a00c0058028012008003801800a0040018008002000, 0x1e096b09c50a790a810ac90acb0acf0ad30ad70adb0adc0ad80ad40ad00acc0ac20ac10ac00abe0aba0ab60ab40aac0aab0aaa0aa80aa40aa20a9a0a990a980a960a920a8e0a8c0a820a7e0a7c0a7a0a720a700a6e0a660a62⟩]) ( (.branch 2 ( .leaf #[⟨0x23011008404001f00f007003601a00c806002e01500a004c024011008003801a00c0058028012008003801800a0040018008002000, 0xb640b620b5e0b5a0b580b4e0b4d0b4c0b4a0b460b420b400b360b350b340b320b2e0b2a0b280b200b1f0b1e0b1c0b180b140b120b080b020afa0af80af60aee0aea0ae80ae6⟩, ⟨0x21010007c03c01d00e006c03401900c005c02c01500a004c024011008003c01c00d006002c014009004001c00c005002000c004000, 0xbf40bf20bea0be60be40be20bda0bd60bd40bd20bc60bc20bbe0bbc0bba0bae0bac0baa0ba20b9c0b980b960b940b8c0b8a0b840b7c0b760b720b700b6e0b660b65⟩]) ( .leaf #[⟨0x3a01c00dc06c03501a00cc06403101800bc05c02b01500a004e026012809004601a00c005c02c01500a004c0240050020008002000, 0xc860c850c840c820c7e0c7a0c780c6c0c600c5c0c540c4c0c460c410c450c440c400c3f0c3e0c3c0c2e0c2c0c2a001e00050ae50aed0b930b9b0c0b0c130c230c1e0c1d0c1c0c1a0c160c140c0c0c04001e0ae50aed0b110b270b3f0b570b6d0b750b870bcb0bd10bff0c000bfc0bfb0bfa0bf8⟩, ⟨0x3801b80d806a03301880c004a024011808804202000f007403401900b805802a014009804402000d0060028012008003801800a000, 0xd020cfa0cf40cee0ced0cec0ceb0cea001e000503a703af03bf0ca30cbd0cd50cdd0ce50ce90ce60ce20ce00cde0cd60cd20cd10cd00cce0cc90ccd0ccc0cc80cc70cc60cc40cc00cbe0cb60cb30cb20cb00cab0caf0cae0caa0ca90ca80ca60ca40c960c90001e0c710c770c890c8b⟩, ⟨0x4e026012c094049024011808a044021810808203f01e80f005c02c01500a403801b00d003401800b0050024010007002000c002000, 0xd740d730d720d700d600d5a0d520d510d500d4e0d4a0d460d440d3c0d3b0d3a0d390d38001e06d506e1071f0727073b07530a790a810ac90acb0acf0ad70d0f0d360d350d340d330d32001e0355038d03a703af03bf0a790a810a8b0ab30d1b0d2b0d2f0d300d2c001e06e106ed071f0727073b0a790a810acf0ad70d130d1d0d230d280d260d240d180d160d100d0c0d070d0b0d0a0d060d050d04⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x3301900c406002f01700b405802b011808404001f00f007403801b00d006402e01600a8050026012008804001e0060028010002000, 0xdfa0df60df20df00de60de20de00dde001e06e10d930da10db30dbd0dbf0dc50dd40dd30dd20dd00dcc0dc80dc60db80db60db40dac0dab0daa0da80da40da20d9a0d980d8e0d88001e0003080708190895089d08b708d708db0d820d7e0d7a0d750d790d78⟩, ⟨0x3701b00d406603101800b805802b014809c04c025012008804202000f807803a01c00d803001600a004801c00c005002000c002000, 0xe740e640e600e5f0e5e0e5d0e5c0e5a0e590e580e570e560e540e510e500e4f0e4e0e4c0e480e420e410e400e3e0e3a0e360e340e2a0e26001e0895089d0acb0dbb0ddd0de50de90def0e030e090e170e1b0e1d0e210e220e1e0e180e140e130e120e100e0c0e0a0dfe0dfd0dfc⟩, ⟨0x270130094048023011008003e01e00e807003601900b8058026012008003c01c00d0060028012008003801800a0040018008002000, 0xf060f000efa0efc0eee0ee80ee70ee60ee40ee00edc0eda0ed20ed10ed00ecf0ece0ec80ec30ec70ec60ec20ec10ec00ebe0eae0ea80e9e0e9d0e9c0e9a0e960e920e900e880e7e0e800e780e72⟩, ⟨0x260128090046022010808003e01d00d806803201500a004c024011008003801a00c0058028012008003801800a0040018008002000, 0xfac0faa0f9e0f960f8e0f880f820f7c0f7b0f7a0f790f780f760f720f630f6f0f710f6a0f680f5e0f560f500f480f470f460f440f400f3c0f3a0f320f2c0f280f260f1a0f120f100f0e0f04⟩]) ( (.branch 2 ( .leaf #[⟨0x2f01680ac054029014009c04a024011008003e01b00c805c02c014009004401e00d006002c014009003801800a0040018008002000, 0x10261023102210211020101e10181012100c100b100a1008100710060ff9100410000f6f0f950fa50ffe0ffb0ffa0ff90ff80ff40ff10ff00fe10fee0fe60fe30fe20fe10fe00fde0fd60fd20fce0fcd0fcc0fca0fc60fc20fc00fb80fb0⟩, ⟨0x45022010407e03d01e00ec07403901c00dc06c03401900c4052027012809003001600a8050026012008003801800a0040018004000, 0x1090108c10691083108a10871086108510841080107810721070106e1064105c105b105a104d105810540cd50f210f390f4f0f6f0f71103f1052104f104e104d104c001e000503a703af03bf0cd50ce90f390f4f0f6f0f71103f104a104910481046104210401038103710360f791034102b1032102f102e102d102c102b102a100d1011102910281021⟩]) ( .leaf #[⟨0x3101780b405802a01480a004e026012809004001f00e807003601a00c8054028013009003c01a00b004802000e0060028010004000, 0x110e110d110c1105110a110611051104110210fc10f610f410f2001e10e310e710eb10e410dc10db10da10d810d410d2001e109b10b110bf10c810c610c4109610a110bb10ba10b310b810b510b410b310b210ae10a810a2109c1094109310921085⟩, ⟨0x3001780b805a02c01580a804e025012008804202000f807803a01c00c005c028010007803401600a004801c00a0040018008002000, 0x119c11941190118e118c1182114a1177117b117a117311781174117311721170116a116411621160001e114f1155115911501146112b1135001e11271137114711481144112f1142112d1140113a1132112f112e112d112c11281120111c111a⟩, ⟨0x42020810007e03d01d80e80720380130090046022010808003c01c00d806002c01400980480220100078038014006002800c002000, 0x12261220121c12161215121412131212120e1208001e08fb0f0d0f6d107f10ad10cb10d110e91127115711ad11b311b511b711d711ef11f5120011ff11fe11fc11f811f611ec11eb11ea11dd11e811e411c511db11e211df11de11dd11dc11d811d011cc11ca11be001e1187119b11b1001e1185119f11ad11ae11a611a311a211a111a0⟩]))))) ( (.branch 4 ( .leaf #[⟨0x3101800bc05802b01480a004e026012008404001e00d806803201800b8058028012008804001e00e006802c0100070028008002000, 0x1292129012861281128512841280127f127e127c1272126812671266126312651264126212611260125b125f125e1258125c12561252124c124b124a1249124812461244123e1238123212311230122d122f122e122c122b122a1225122912281222⟩, ⟨0x3a01c80e006e03201800b4056029013809404802300a8050026012008804001e00e006002c014009004001c00a0040018008002000, 0x130e130c1302001e113511ad12f112f512fa114311a8118112f912f811a112f211a312ec12eb12ea0d3312e812e4001e049709370989099109dd128b1297129d12af12c512cd12d112d712dc12da12d812ce12ca12c812c612be12bd12bc12ba12b612b212b012a812a712a612a412a0129e1294⟩, ⟨0x43020810007e03e01e80f007403901c00dc06c03501a00cc05e02e01500a4050027012808c04400d00580240100050018008002000, 0x1380137f137e137c13781374137213681367136613641360135e13561354135213320e8f0ea7134713480ea0133d134113431344133e1336132c132b132a13291328001e0463071f0727073b08fb098909910a610a650d0f0f6d10cb10e911b311b711d711f512df12e112ef132613251324131b1322131e12f71309131c131b131a13181312⟩, ⟨0x2f01700b405802a014809804a023011008404001f00e806c03401900c005802a0140098048022010007803801a0040018008002000, 0x13fc13fa13f813f013ed13ec13ea13e513e913e813e413e313e213e013de13d413ce13cd13cc13cb13ca13c613c213be13bd13bc13ba13b613b213b013a813a6139c1396001e000312d7134d135d136b13711387138f1390138c138a1388⟩]) ( (.branch 2 ( .leaf #[⟨0x3501a00c806203001780b805a02c01500a404c025011808804202000f807803801a00c803801800b004001c00a0040018008002000, 0x14741470146f146e146c145a14541452144c144a144714461444143f14431442143e143d143c143a1438142e1424142214211420141f141e001e0003080708190895089d08d713dd13f713ff1407141c141b141a1418141314171416141214111410140e140a14081400⟩, ⟨0x3001780b805a02b01480a004e026012808c04202000f807803801b00d006403001700b0054028013004802000e0060028010006000, 0x150e150a150214fa14f714f614f514f414f214ec14e814e014df14de14dd14dc14da14d614d414d314d214d014cc14c614c014bc14b014ae14ac001e0005099909d5149514971499149b149d14a514a2148c148e148614801482147614711475⟩]) ( .leaf #[⟨0x42020810007e03e01e80ec07403901c00dc06403001700a8050026012008c044021010007803a014009003801a00c0058028002000, 0x158c158a1588157c157a1570156f156e156c15681566001e0f190f21151b151d155e155b155c155b155a153d154115591558155115561553155215511550154e15481542153c153b153a001e000303df03e703ef0cd50fed151b153515380ff109040fdd151b15351536152e15281522001e000503a703af03bf0cd50ce9151b151d1516⟩, ⟨0x3101700b4056028013809804a024011808403e01e00d806803001700b0054028011008003801a00c0058028012007003000c004000, 0x160015fd15ff15fe15fc15fb15fa15f515f915f815f215f615f015ec15e415e315e215e115e015de15d915dd15dc15d815d715d615d415d015c815c015bb15bf15be15ba15b915b815b615a815a0159c159a159715961594158f15931592158e158d⟩, ⟨0x3a01c80e006e03601a80cc06202f01680b005602a01480a0046022010808003a01c00d006403001700a804c0240100070034004000, 0x168a1682167e167c167a1672167116701669166e166b166a1669166816661660165a1654001e163916451647164916421640163e16361631163516341630162f162e162c161a16161613161216051610160a1607160616051604001e08fb14951497149d151515191565157515c715eb16021601⟩]))))))))) ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x4001f80f807a03c01d80e807203701a80c405c02d01600ac054029013808404001f008003801a00c00580280100060018008002000, 0x16ec16ea16e616e216e016d416d816ce0fe316cc1613001e164d16b916c7164c16bb16cb16c816c416c216c016b616b414f7001e000304a904b7149716b316b016ae001e03df03e704330447044d0463046f0477047b048308fb0fa5169d16ab16a816a716a616a416a0169e169614f5169416071692164b16851690168e168c⟩, ⟨0x3901a80cc06402d01580a8050026011008003e01e00e806c03401900c005c02c015009804402000d00600280120080038018004000, 0x1762173b174117611760175f175e175c173b17451757175b175a174b1758175417511750174f174e1739174b174d174c1745174a17461742173a173917381736173217301728171c171617151714171317121710170b170f170e170a17091708170616fe16f806ae16d316df16f116ee16ed⟩, ⟨0x4e026012408e046021810408003401980c806202f01700b405802b01500a4050026012008c044021010007c01c0080030010004000, 0x17ce17cd17cc17c717cb17ca17c917c817c6100b17c517c40f8717c0001e000503a703af03bf0ce90f390f4f103f17af17b717bb17b417b217b017a817a717a617a417a0179c179a1792178a178817871786174b17841782177a1776176e001e0003071f0727073b080708190895089d0a790a810ac90acb0acf0ad70d0f17231718173b174117571761176b176a171f176817671766176517641763⟩, ⟨0x52028013809804a023010c08003e0198094046022010807403801b00d006002c014009004402000f00700340140090038014004000, 0x18301829182e182d182c182b182a18291828100d17bf17cb1822102918211820100b181f181e0f8d0ff608fb09030f950fbf0fdd10e911bd143517af17e3001e000303df03e703ef0f950f9d0fed10e911bd143517af17e31817181c0ffb181a1818001e17bb17e517eb181418121810180a1809180818011806180318021801180017fe17f817f217ec11c411d711e517e017da17d717d617d517d4102917c717d217cf⟩]) ( (.branch 2 ( .leaf #[⟨0x50027013409804b025012408e04602280d406603201880c005e02d01600ac054029014009c04c01b00980480160070028010004000, 0x189e1249189c1898189618941892188e11df18881884001e06e1077b14951497149d1515184b184f185318551857185d186b186d1873187e187d187c187a1876187418681867186618641860185e1850184c1844001e000303df03e703ef0f9d0fed17af17bb1817183f0fa4000303df03e703ef0cd50fed18171840001e0f7110e911bd143517bd17eb001e17b917e31839183c180918361834183318321831⟩, ⟨0x2f01700b405802a0138098048023011007803801a00c806002c01500a004c024011008003001600a004001c00c005002000c004000, 0x19281924191c1912190f190e190b190d190c190a126119081904001e18d318ed18f7190018ff18fe18ef18fc18f818f018ef18ee18ea18e218dc18da18d8001e18a518bf18c918ce18ca18c218c118c018bc18b418ae18ac18aa18a0189f⟩]) ( .leaf #[⟨0x3c01d80e407003701b00d40680290138090046021010007c03a01b00d006403001700b004802200d006002c0100060020008002000, 0x199e199a19991998199619841980197c188c14951497149d15151853186b186d1873188318871978197719761973197519741972122b1970196c196619651964196319621960195e19581952001e1917192d19471948001e19151931193d1944194219181923193b193a193319381935193419331932192e⟩, ⟨0x4202080fc07c03d01e00ec07203801b80d806a03401980c805e02e01600ac054029008803c01c00b005002000e0060028010006000, 0x1a1c1a181a171a161a141a0419fe19f619f519f419f219ee19ea19e819e019da19d419cf19d319d219ce19cd19cc19ca19c6001e03a703af03bf09c50adb0cdd0ce50ce90f5d103f14951497149d151517b71853186b186d18731883199319a319ab19c019bf19be19bc19b719bb19ba19b619b519b419b219ae19ac19a419a0199b199f⟩, ⟨0x3c01d00e407003701b00a004c024011807c03a01c00d806403001500a0048022010007803801a00c00580280100060028010006000, 0x1a821a811a801a7e1a7a1a78001e03a703af08fb099909d50a5d0bb50be10be90bf10f63197b19831a701a6d1a6c1a6b1a6a1a6819e719fd1a331a661a651a641a621a601a5d1a5c1a5a1a551a591a581a541a531a521a501a4e1a441a401a3c1a381a341a2c1a2b1a2a1a291a281a261a221a1e1a191a1d⟩]))))) ( (.branch 4 ( .leaf #[⟨0x29014009c04c023011008003a01c00d806803201800b805802a0140098048022010007803801a00c005002400c0050018008002000, 0x1b0a1b061afe1af61af31af51af41af21af11af01aeb1aef1aee1ae81aec1ae61ae21adc1ada1ad41ad61ace1ac81aca1ac21ab61ab21ab01aaa1aa61aa31aa21aa01a9b1a9f1a9e1a9a1a991a981a961a94⟩, ⟨0x2d01600ac054029014009c04c025011808403e01d00c805c02a013009004402000f006803001600a004802000e0060020008002000, 0x1b8a1b861b821b801b781b721b6e1b6c1b661b5d1b641b611b601b5f1b5e1b5d1b5c1b3f1b411b5b1b5a1b531b581b551b541b531b521b4e1b461b421b3e1b3d1b3c1b3a1b361b2e1b261b1e1b181b121b111b101b0f1b0e1b0c⟩, ⟨0x3201880c005e02e01600a8052028013809804a02000f007003601700a804c024011008003801800a004001c00c005002000c002000, 0x1bfe1bfa1bf81bf01bec1be91be81be71be61be41be01bdc1bd4001e0c211b171b1d1b511bd01bcf1bce1bc11bcc1bc81b2d1b511b691bc61bc31bc21bc11bc01bbe1bbc1bb41bb31bb21bab1bb01bad1bac1bab1baa1ba81ba01b9a1b941b8e1b8d1b8c⟩, ⟨0x44021810408003f01f00f407803a01c80e006e03601a80d006203001700b405802000f007003401800b80280100060020008002000, 0x1c761c721c711c701c6e1c6c1c601c5a1c521c511c501c4e1c4a1c461c441c3c1c381c331c371c361c321c311c301c2e001e0bff11bd17af17e318811a771aa91ad91ae11afd1b4d1c1a1c191c181c111c161c131c121c111c10001e00050ae50aed0b930b9b0ba10c131b1d1b511bd31bdb1bf71c0e1c091c0c1c091c081be71c061c051c041c02⟩]) ( (.branch 2 ( .leaf #[⟨0x4602280e006c03501900c405e02e01680b00560280138094048023010807c03c013008804001a00c00500240100070030010006000, 0x1cd6001e03df03e703ef05070527052b09050cd513f713ff1ca51cbb1cd01ccf1cce1ccc1cc71ccb1cca1cc61cc51cc41cc21cbe1cbc1cb41caf1cb31cb21cae1cad1cac1ca81ca01c9f1c9e1c9d1c9c001e0003038d03d703df03e703ef13f713ff1c6b1c851c9a1c991c981c961c911c951c941c901c8f1c8e1c8c1c881c861c7e1c7b1c7a1c781c731c77⟩, ⟨0x2d01600ac054029014009c04c025010808003e01e00e006803201800b8054026012008804001c00d005002400e006002800c002000, 0x1d5e1d581d561d541d461d3e1d3c1d3a001e1cff1d051d291d321d301d2e1d241d211d201d0d1d1e1d181d121d101d0f1d0e1d0d1d0c1d061cfa1cf41af71cf01cec1ce91ceb1cea1ce815fb1ce61ce21cde1cdd1cdc15e11cda⟩]) ( .leaf #[⟨0x3201880c005e02d015809c04c024011008403c01c00d006403001700b0054028012008804001e00e00600280120060020008002000, 0x1de01dd81dd01dc81dc51dc41b0f001e1da91db71dc11dc21dbe1dbd1dbc1daf1dba1db61d971dad1db41db11db01daf1dae1daa1da21d9e1d9c1d901d881d871d861d841d801d7e1d761d751d741d671d721d6e1d4b1d4f1d6c1d691d681d671d661d64⟩, ⟨0x2f01680b00520270128090046022010808003e01e00e006803201600a804c024011008003c01a00b005002400e0050020008002000, 0x1e5e1e511e5c1e581e351e4f1e561e531e521e511e501e4c1e441e3e1e3c1e3a1e2e1e221e211e201e1f1e1e1e1c1e171e1b1e1a1e161e151e141e121e0e1e061dfe1dfd1dfc1dfb1dfa1df61df01def1dee1ded1dec1dea16011de61de4⟩, ⟨0x2f01680a80520270130094048023011008403e01d00e006c03401900c005c026012008804001a00b004801c00c005002000c004000, 0x1ed81ed71ed61ed31ed51ed41ed21af11ed01ecc1ec41ec21ebc1eb81eb41eb31eb21e1f1eb01eac1ea41ea01e9e1e9c001e1e671e7f1e8d1e961e941e921e621e6d1e891e881e811e861e831e821e811e801e7c1e741e6e1e681e601e5f⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x3701a80d006603201880c005e02e01680b0056029013809404602100f806c03201800b0054028013004001800a0040018008002000, 0x1f561f551f541f521f4e1f4a1f481f401f381f2c1f301f261f201c131f1e1bad1f181f151f141f131f121f0f1f101f0f1f0e1efb1f091f0d1f0c1f0b1f0a1f081f071f061f001efc001e04cd04e90895089d0bff0dc50e211b691ebb1ee71ef21ef11ef01eee1eea1ee81ee01edc⟩, ⟨0x29014009c04c025012008c04201f00f007403801900c005802a014009804802000e006803001600a004802000c0040018008002000, 0x1fea1fe81fdc1fd41fd01fce1fcc1fcb1fca1fc91fc81fc61fc21fbe1fb91fbd1fbc1fb81fb71fb61fb41fa41f9e1f981f971f961f951f941f921f8e1f8c1f8a1f7e1f7a1f791f781c9d1f761f701f681f60⟩, ⟨0x3d01e00ec07403801b00d406803301880c005e02e01680b005402800d006403001700b0054028013007002400e0050018008002000, 0x205820542050204c204b204a204920482046204020382037203620342030202c202a2022202120201a6b001e04a904b70a6d0ddd0de50e010e250e290e2d13f713ff1cab201d201e201a20182014200c20021ffe001e1e2d1e7b1fe31fef1e341e4b1e7b1fe31fef1ffa1ff91ff81dfb1ff61e531ff41ff01fec⟩, ⟨0x4001f80f807803a01c80dc06a03401980c8062030011807803a01c00d806803201700b0054028013009004001e00e0038014008000, 0x20d420cc20c420c320c220b720c020bc20b920b820b720b620b420ac20a820a6001e0433044d046f04771387138f13af13c11f252083209d209f001e044704630af5209b20982094208820862084207c207b207a2078207420722068206416972062205e15740cd518871fdb1fdf1fe11ffd205c1553205a2008204f20532057⟩]) ( (.branch 2 ( .leaf #[⟨0x3b01d00b405802b00f007003601a00c806002e01600a8050026012008804001e00d006002c014009003801800a0040018008002000, 0x2152001e046f0477049d04a1082b08310ddd0de50def214321452149214a2146001e097d0d230ddd0de50e250e3320df210f211b2121212921312140213f213e213c213821342132212a212621242122211821162114210c210421032102210020fc20fa20ee20ed20ec20ea20e620e220e020d820d6⟩, ⟨0x4202080fc05602a01480a004c024011808802e01600a8050024011008003c01c00d0058028012008003801800a0040018008002000, 0x21c621c2104f001e000503a703af03bf03df03e7047b04830ce90d2316ab20cf20df20f320f921212129213121a721be21ba21b621b021ad21ac21ab21aa21a8001e049b050705230527215d216521972199219d21a121a2219e219a2194219321922190218c21882186217e217d217c217a217621722170216621622160215e21562154⟩]) ( .leaf #[⟨0x3301900c005e02e01680b005602a00f807403801b00c806002e01600a8050026012008804001c00d006002c014009003800c002000, 0x223e2236223522342232222e222a2228221e001e0bff0cd5159f1aa91ae11b4d1dcf1ea31eab1ffd221a110722162212220e220d220c220a22062202220021f421f021ee21ec21e421e321e221e021dc21d821d621ce21cd21cc153d21c521cb21ca21c921c8⟩, ⟨0x2b01480a004a024011008404001f00f007003401900b8054028012008804001e00e006803001600a004802000c0050018008002000, 0x22b422b122b022ae22a922ad22ac22a822a722a622a4229c229a22962295229422892292228e228b228a228922882286228522842282227e227a22782270226a2262225c2258225409ef224e224a2249224822462242⟩, ⟨0x29014009c04c025012007c03c01d00e006c03401900b805802a014009804801e00d006002c014008003801800a0040018008002000, 0x233e233c233a23362334001e22bd22ed23012315232e232c23262322231c231a2310230f230e230c23082304230222e822f522fb22fa22f922f822f622ee22e622e522e422e222de22da22d822ca22c622be⟩]))))) ( (.branch 4 ( .leaf #[⟨0x4302100f007403801b80d806a03401980c406002f01700b405801f00f007003601a00c005802801200800380100070030010004000, 0x23a823a00a190a57239b239f23a523a409ff239e0601239c2398239623922390238a01b1238823842380237c2378001e0445046f04770497049d04a108190895089d0b931eb71edb237423702255236e23642360235d235c235b235a235123562355235423532352235123500a1f0a2b0a2f0a4d0a4f234e234a23440277234223412340233f⟩, ⟨0x5602a01440a004e026813009604a024812008e045021810808204001f80f407803a01c00dc06c03501a00cc06402300b003400a000, 0x24162415241424112413241224100317240e2406240423fe23fa23f623f223ee23ed23ec1a2923e623e223e023da23d8019d23d623d423d323d223d123d023ce23ca23c823bc23b6001e0ba90d230ddd0de50e250e3320df20f320f921212129213121a723af001e0895089d0bff0dc50ddd0de50def0e211bb72061214523b1001e000502a1094d099909d5225b225f23ab001e000302a104a904b72221222722b7001e02a1049b229922b7⟩, ⟨0x3401980c806002e01680b005602a01480a004e02600c805c02c01500a004c0240100070034016009004001c00c005002000c004000, 0x249e249c24942493249224912490248e248c2488248024782472246c001e01cd02a3054b058505ad05cd0aa123fd2421244f24632465245e245d245c245a245624522450244824472446244524442442243f243e23d1243c243a24362430242a24262422241a2417⟩, ⟨0x4c025812008e045022010c08404101b00b00540280130094046021010007c03801a008803c01a00c0058028010007002000c002000, 0x24fe24fc24f724fb24fa24f624f524f424f224ee24e6001e016d01bd01cd029102a302f31649167516c724e1001e0003038d03d703df03e703ef0aa10ac7240b24de24dd24dc232f24d8232f24d224d024cf24ce22f924cc24c80164232124c324c224c124c022d122d7230123252329232b24bd24bf24ba24b724b8022324b624b424b024ae24ab24aa24a824a324a724a624a224a124a0⟩]) ( (.branch 2 ( .leaf #[⟨0x3401980c806002e01680ac0520280138098048023011008404001e00e006c03401900b805802a014009802400e0060028010004000, 0x258625842576257525741f952570256a25672566255d2562255c255a2550254f254e254c25482544253c25392538253725362534253025282527252625242520251e001e017b01c701cd01d902ab149514972505250b251224ff2510250c250625022501250024ff⟩, ⟨0x4902400e807203801680ac054029014009c04c02500b805802a0140098048022010007003401800b0050024010007003000c004000, 0x2610001e09370989099109dd0adf0af512af12c512cd25db25fb25ff2601260225fc001e0703072f12c512cd259d25af25bd25d325e125e925f825f725f625f425f025ec25ea25e2001e098909910a610a6512c512cd259d25a925af25bd25c525cd25d325d825d625d425ca25c825c625be25ba25b925b825b625b225b025a425a2259a2596258e2589258d258c25882587⟩]) ( .leaf #[⟨0x3101780b805a02c010007c03c01d00e006c03401900c005c02c0140098048022010007803801a00b004802000c0040018008002000, 0x26982697269626942692001e10e711bd17af17e31ea3268126852689268b268d268f26862682267a2674266c266e2666266026622650264a2649264826462642263e263c26342630262c262b262a261f2628262426212620261f261e261c26162612⟩, ⟨0x3901c00a004e025012008c04402100f807803801a00c805c02a014009004001e00e006803001600a004802000c005002000c004000, 0x2720001e10e711bd17af17e31ea325d3268b268d268f26a326a726a92705270b2719271a2716271527142712270e270c27022621270026fe26fd26fc26ed26fa26f226ef26ee26ed26ec26ea26e726e626bd26e426e026da26d826d226ce26cc26bc26b826b726b626b426ae26a4269c2699⟩, ⟨0x3c01980a8052028013809804a024011008003e01e00e807003201800b004c024011008003c01c00c005002400c0050018008002000, 0x1e00050ae50aed0b010b9b0c0b1d392781001e000308190895089d0b391d392781278d278e278a27882786277c2774276e276b276a2697276627622760275c27542751275327522750274f274e2749274d274c2746274a27442740273c273b273a2739273827362731273527342730272f272e272c2728⟩]))))))))))) ( (.branch 35 ( (.branch 17 ( (.branch 8 ( (.branch 4 ( .leaf #[⟨0x3e01e00e407003701b00d406803001680ac0520280138098046022010007c03c01d00e003401600a004802000e006002800c002000, 0x281a269928102801281728182812280c280a2808001e278127eb27ff27fe277f27ed27fc27f927f8279127f627f027e827de27d927dd27dc27d827d727d627d427cc27c6001e10e711bd17af17e31ea32083268d268f27a527a727a927af27bd27bf27ba27b927b827b627b227b027a2279a27942793279227912790⟩, ⟨0x3901c00d806a03201880bc05c02d01600ac054027013009004202000f807803a01c00d006002e01600a80280100070030014008000, 0x2886288428812880287e2879287d287c2878287728762874287228662864285e285b285d285c285a2859285828532857285628502854284e284a284628452844284328422840283c001e1d39208327e127e327e527e7280f281f28212827283228312830282e282a2828001e280328112815⟩, ⟨0x3501a00cc06403001700b4048023010807c03a01b00c805c026011008003801a00c0058028012008003801800a0040018008002000, 0x290c2908290628fa28f728f628d928f4001e000313711387138f20912093283528ef28f028ec28e928e828e728e628dd28e428e128e028df28de28dd28dc28c328d728db28da28d928d828d628d528d428d028ca28c428c028bc28b628b428ae28b028aa28a228a42890⟩, ⟨0x3101780b805a02c01580a8052028013009404402100f807803a01c00d006002e01600a804c02201000780380140060020008002000, 0x29802859297e297a29742970296c296a2968295c2959295829562951295529542950294f294e294c294a293e293d293c293b293a29382934292e292d292c2843292a292829262920209f283528ef291e283528bb2913291c29192918291729162914⟩]) ( .leaf #[⟨0x270130094048022010807c03a01c00d806803201800b0054028013009004402000f007003401800b00500240100070030010002000, 0x2a0229fe29fc29f429e729f029ec29e929e829e729e629e429e029dc29d829d029cf29ce29cc29c829c429c229ba29b429b029ae29a4299c299a29982990298e298a298629852984298129832982⟩, ⟨0x3d01e00ec07403901b80d406803001700b0054029013808c04201f00f007403801b00d006002c01500a004c024011008000c002000, 0x2a6c2a6a2a642a602a5c2a5b2a5a2a4b2a582a5427c129ab29d72a522a472a502a4d2a4c2a4b2a4a2a482a472a4629db29f52a452a4429f12a402a3f2a3e2a3c2a382a342a322a2a2a272a262a252a242a202a1a2a162a0e2a08001e0005209321d521eb21f321ff27c1291329b929c129d729fb2a062a052a04⟩, ⟨0xb2056827812208403c81b80c2054029814409e044021810806a03401980c8048023011008403e00e006803001600a0030010004000, 0x1e02a1095f096b23ab001e01cd03df03e70415041b047b04830bd1215d2165219921a123952ab9001e0acb0bd90ddd0de50def2145215d2165216f21852aa92ab72238018101bd04a904b705150a6d0ddd0de50e250e3322992a9f096c034d038d03a703af03bf09c50aa10ac70ad30adb001e02a102fd08fb091f0f6d11b3156518531dd72339001e09370989099109dd219d21d521eb21f321f921ff25a72633001e037b03a703af08fb098909910a5d0a610a650f211f231f252ab42ab02aaf2aae293b001e000313711387138f2091209327c12a152a312a432aac2aaa001e0a6d0ddd0de50e250e3313711387138f25fb2a832a9f2aa72aa42aa22a9c001e1387138f13c1206b2071208320b3215d2165219921a12a8f2a992a942a922a902a882a75001e046f0477049d04a10af513711387138f2093209b27c128b32a152a312a432a832a842a802a7e2a78208e27c12a152a692a742a6d2a722a6f2a6e2a6d⟩, ⟨0x3c01d80e807203801b80d806a03301900bc05c02c01580a8052028013809804a023011007c03c01c00d806803201800b003000a000, 0x2b262b222b202b182b142b122b102b082b072b062b042aff2b032b022afe2afd2afc2afa2af62af42aec2ae42ae02ad82ad52ad42ad22acd2ad12ad02acc2acb2aca2ac82ac62abc2aba0657001e016d017b01c501c701cd01d902a102a502fd001e02fd091f0927092f221d229f23a00a130a19239b239f⟩]))) ( (.branch 4 ( .leaf #[⟨0x3901c00dc06c03301900c005e02e01680b0056027013008804001e00e006c03401800b805802a014009804802000f0020008002000, 0x2b8e2b8a2b882b802b7b2b7f2b7e2b7a2b792b782b762b742b642b62242c22d122d724d72b6022ce2325232924d52b5e2b5b2b5a2b312b5810232b562b542b4e2b4d2b4c2b4a2b462b422b402b382b322b312b30001e000304e913f713ff2ac52aeb2af32b0f2b172b1f2b2e2b2d2b2c2b2a⟩, ⟨0x3001780b805a02c01580a404e025012008804202000f807803a01c00d8068032018008003801a00a004801c00c005002000c002000, 0x2c062bfe2bf22bf42bec2be806b12be62be52be42be32be22be02bdf2bde2bdc2bd82bd42bd22bca2bc62bc42bbc2bb6001e00050cdd0ce52b732b872b952b9b2bb02baf2bae2bac2ba72bab2baa2ba62ba52ba42ba22b9e2b9c2b922b912b90⟩, ⟨0x2d01580a8052028013809804a024011808803601900c005c02c01500a004c024011007003401600a004801c00a0040018008002000, 0x2c962c952c942c922c902c862c7c2c7a2c782c722c6a001e0bd91f831f892c4b2c532c592c642c632c622c602c5c2c5a2c502c4e2c482c442c3e2c392c3d2c3c2c382c372c362c342c262c252c242c232c222c202c162c0c2c04⟩, ⟨0x2b01500a4050027012808c04401f00f007003601a00c806002c01500a004c024011007803401800b00500240100070028010002000, 0x2d122d0e2d0c2d002cf82cf72cf62cf52cf42cf22ced2cf12cf02cec2ceb2cea2ce82ce42cdc2cd42cd32cd22cd02ccc2cc82cc62cbe2cbd2cbc2cbb2cba2cb42cb22cb02caa2ca62ca22c9f2c9e2c9c2c972c9b2c9a⟩]) ( (.branch 2 ( .leaf #[⟨0x3001780b405802b01500a404a024011808404001f00f007403801a00c005c02c01500a004c01e00e00600280120060020008002000, 0x2d8e2d862d852d842d822d7e2d7c001e2d532d672d6f2d742d702d6a2d692d682d642d5c2d582d562d4a2d492d482d472d462d442d422d3e2d38001e2d172d252d2f2d302d2c2d2b2d2a2d1d2d282d242d072d1b2d222d1f2d1e2d1d2d1c2d18⟩, ⟨0x2a01480a004e026012809004001f00f007403801b00d006002e01600a805002000e006002c014008003801800a0040018008002000, 0x2e1c2e1a2e142e0e2e0c2e0a001e2dfb2dff2e032dfc2df02de82de22de02dde2dd62dd52dd42dd22dce2dcc001e2d972db12dbb2dc42dc32dc22db32dc02dbc2db42db32db22dae2da62da02d9e2d9c2d922d90⟩]) ( .leaf #[⟨0x3001700b005602a014809c04c025012008c044021010007c03c01c00d806802c014009004401c00c00580280120070028010004000, 0x2e8e2e8b2e8a2e892e882e862e822e7c2e7b2e7a2e782e742e722e6a2e642e5e2e5c2e5a2e5227f92e502e4c2df42d172e012e352e462e452e442e3b2e422e3e2d4d2e372e3c2e3b2e3a2e382e322e2a2e292e282e1d2e262e222e1f2e1e2e1d⟩, ⟨0x91048023c11c08c045022410c085041820810208003f81f80fa07b03701b00d406903281880c206002500d404e0260128038002000, 0x2ef82ef22eea2ee62ee52ee42ee32ee22ee02edb2edf2ede2eda2ed92ed82ed62ece2ec82ec02eb82eb4276b025a019701bd0bff156518531ad91dd71ea3268d268f2ca52cb92eb22eb12eb01ded2eae001e1e271ff32ea72ea4281f2ea32ea02e9c1f2209370989099109dd0ae50aed0af50b010b9b0ba110e711bd17af17e31bd31ea32681268b268d268f2e4f001e000303a703af03df03e703ef098909910a5d0a610a650f9d0fed1817197b19831f231f252b512cb7001e03a703af03bf0b6d0b750bc10bc50bc90bd90cd50ce9103f2e972e982e94001e03a703af0a5d0ae50aed0b010b9b0ba110e711bd17eb197b19831bd31ea32681268b268d268f2beb2cb72e4f001e0a790a810a8b0ab30d1b0d2b12af12c512cd25fb26072e912e92⟩, ⟨0x3701b00d406803301900c406002f01700b4052027012809003201700b004c024010007803801a00c005002400c0050018008002000, 0x2f682f642f5e2f582f562f542f4a2f422f3e2f3c25522ec72ee92ef12f3a2f392f382f372f36001e000308190895089d0b390b9313f713ff2f052f1f2f342f332f322f302f2b2f2f2f2e2f2a2f292f282f262f222f202f182f152f142f122f0d2f112f102f0c2f0b2f0a2f082f06⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x3a01c80e006e03601a80c806202f01700b405802b015008003801900b805802a013008804001e00e00680300140080038010004000, 0x2fe62fe42fe02fdc2fd82fd42fcf2fd32fd22fce2fcd2fcc2fca2fbc2fb42faa001e208327e127e32cff2d8d2dff2e352f632f9d001e2f7d2f8d2fa72f982fa12fa52fa42f912fa22f9e2f962f932f922f912f902f8e2f882f822f802f782f772f762f692f742f702f4f2f672f6e2f6b2f6a2f69⟩, ⟨0x52028814009604a024812008c045022010c07e03801b00d006403001780b805a02b014805c014008003801800a0040018008002000, 0x30483044001e1f1d27eb280f2e9f3040303e303c303a3039303830363032001e0533054b302d1824179117cb1a3b1a433029302b302a1a4130281a6330263023302224453020301c3018301214df300e14c7001e01db036b038d03a703af03bf0a6d0a790a810a850a8b0aa10ab30d2f2421244f2465001e0ba90d230ddd0de50e250e3320df210f21212129213123af300a300930083006300230002ff82ff42ff02fee⟩, ⟨0x540258128090046022010808003e01d00e006e036012005c02c01500a0048022010007803801800a004802000e006002800c002000, 0x1e000313711387138f26d72d2f2d8d30bf30c030bc30bb30ba30b930b830b130b630b530b430b330b230b130b026b930ab30af30ae30ad30ac30a6001e06ed0703071f0727072f073b074d08fb0f6d10cb10e911b311b711d711f512e112ef001e0a790a810acf0ad70d1d0d2321eb21f3221122152a193097309c309a309430883087308630843080307e307630753074307330723070306e306830623058305530541fc93050⟩, ⟨0x4901b80cc06202f01700b40560290140098048023011008404001f00f006c03201800a804c024011007803801a00c0058028012000, 0x1e07bd084d08fb0f0d10d111f51519157518bb18e91915194b194d1e671fef312b3135001e1e7b1e8b312d3132312f312e1e8131283122311e08ed311c07fd311a31163115311431133112311031083104310030f630ee30e930ed30ec30eb30ea30e807fd30e730e6078930e030dc30d830d730d630d430d030cc30ca30c2001e000512af12c512cd25ff2d2f2d8d30a5⟩]) ( (.branch 2 ( .leaf #[⟨0x43020810006a03301880c005a02c01580a805201e00e807003401700a8050024011008003c01a00b005001c00c0040018008002000, 0x319c0371319a001e01cd037b03a703af0703072f0a5d0ac523cd31993196251331920203318e318c31873189318a31843180317e001e037b03a703af0703072f08fb0a5d0f63197f19833178317631741803317217cb182131700d39316c316407c73160315c3158315631553154315331523150314b314f314e314a3149314831463140313a⟩, ⟨0x3d01e00ec07403901c00dc06c03401980c805c02d01580a405002600e807003601900b8048022010007802000c005002000c004000, 0x320031fe31fc31f631f031ea31e631e21b5531e031dc1f5a1c591f471f5931d831d61ed731d21fd131d031ce31cb31c80c591c431f471f591f5f1f731f7531c531c631c231be31bb31ba155f001e10e911bd17eb31af31b831b631b4001e19e719fd20092029203f31a331ac1ced31a831a631a431a0319e166b⟩]) ( .leaf #[⟨0x5f02f01740b805b02d010407e03d01a00bc05a02c01500a4050027012808c044021010007803801a00c00580280100078010004000, 0x327032683260325c325a001e03df03e703ef046f0477049d04a1052b0f9d0fdd14951497149d15151817183f1853186b186d1873188319a3263332533250324d324c3227001e000308190895089d0b390b932f41323132420b071f093239324b324a303932483240303b323c323a3236322c32293228322732263222321c321632133212321132103209320e320d320c320b320a3209320807f70805311d3206001e000307f1080708190895089d08cb08d708db30fb3204320332023201⟩, ⟨0x3601a80b0054029014009c04c025012008804001f00d806002e01500a004c0240100078030016009004001c00c0050018008002000, 0x32cc32520433044d046f047725c5325732b332bb32ca32c932c832c632c232be32bc32b432b032ad32ac32ab32aa236c23732383238732a832a332a732a632a232a132a0329e329c3298329732963294328f32933292328e328d328c328a32863284327a3279327832763272⟩, ⟨0x4d024811c08a044021810408003f01f00f407803a01c00d806403101780b004a024011008003e01a00c806002e0160088010004000, 0x249601db041524873322332133202491331e331a3314331333123310330c3308330632fc32fb32fa32f932f832f732f624b324b924bb32f432f2058d164616531675001e092914951497149b149d150132f032ee32ed32ec171332ea001e16d316df236d32e532e632e032de32d8001e16f32349237732d3001e03a703af03bf0a6d0a790a810a850a8b0ab30cd50d2f21c132d032cf32ce3173⟩]))))) ( (.branch 4 ( .leaf #[⟨0x3b01c80dc06a03401980c806202d01580a804e026012008c044021010007803a01a00c805c02c01500a002400e005002000c004000, 0x338c3385338a33873386338533843382337e337a0c640c8b0d430d59336e336d336c336a3365336933683364336333623360335c335a3352334f334e334c3347334b334a3346334533443342334008b408190895089d08d708db1eb7325732b332bb332f333a333733360e573334332c3328332432f7⟩, ⟨0x5402981480a20500278130096049024011c066031012809004602000f807803a01c00c806002e01600a804c0220100078038004000, 0x341034083406340033f633ee33e933ed33ec33e833e733e633e4001e01cd030d03df03e7047b048306ed0703071f0727072f073b074d08190895089d17231eb7332f33d033370d9201cd030d03df03e7047b048308190895089d08d71eb733ce33cc33c833bb33c733c433c033be33b833a433b133b333b433ae33aa33a833a2339f339e339d339c339a3396001e000301db038d039d03df03e703ef052b247f32ff3305338e338d⟩, ⟨0x2d01600a804e026012809004602200f007403601900c0058028013009004402000f0070030014009004001c00c0050018008002000, 0x3486348434833482347d34813480347a347e34783474001e343d3457346b346c346834673466345b34643460345d345c345b345a34583452344e344c344234363435343434333432342e342c34283422341a3419341834163412⟩, ⟨0x3001780b805a02c01580a8052025011808403a01c00d806803001600a004c024011008003c01c00d00600280100070030014006000, 0x3510350a3500350234fa34ee34f0001e10ad10bd34e334e834e534e410b3001e34b134b534d734e034de34dc34d434d334d234cf34d034cf34ce34cc34c634c034ba34ae34ac34aa34a2349f349e349d349c349a3494348a3489348834853487⟩]) ( (.branch 2 ( .leaf #[⟨0x3801b80d406803301900c405e02d01600ac054025012006803001700a004c022010007803801a00c005002400c0050018008002000, 0x3584358235813580357e35763572356e356d356c356b356a35683564001e134b35533559355d355a001e12d713f713ff34393519352f35333535353b3550354f354e354c3547354b354a3546354535443542353e353c3530352c3529352835263521352535243520351f351e351c351a⟩, ⟨0x3401980c806203001780b805802b00f007403801b00c805c02c01500a004c024011008003801800b0050024010007002800c002000, 0x3606360235fc35f435ea35e635de35dd35dc001e04330447044d0463046f0477215d2165216f21852a192a7b35da35d835d635cc35cb35ca35c935c835c635c435c235bc35ac35a235a0359f359e359d359c359a3598359635923590358f358e13cb358c3585358a⟩]) ( .leaf #[⟨0x2f01680ac0540280130094048023011008404001e00e807003601a00c0050024011008003801800b004802000e0060028010004000, 0x367e367d367c3671367a36763673367236713670366e3668366236603656364a18c3364836443642363c36383637363635df35e536353634363336323630362e362b362a360736263620361f361e361c361836143612360a360936083607⟩, ⟨0x6d03601a80d006603201880c005c02d01640b004901e00ec07003601a00c806202b015007403801a00c0050014006002800c002000, 0x36c036bc36bb36ba36b936b836b136b636b536b436b336b236b136b01b3f36ab36af36ae36ad36ac36a4001e0a790a810acf0ad70ae50aed0b3f0b510b570bff0c210d1d0d231bef001e098909910a610a6512c512cd13c51f231f2525bd25e9365b369e369a080130ed369836973696369536940a21369209f602a102fd0923092709293690001e0463098909910a610a650ae50aed0b3f0b570b870bff12df368e368c368b368a35a3316e0c770c8b177f096a094d099909d512c512cd25bd25d325e926051f3c1c431c5931c53688368618f1368436733682⟩, ⟨0x69034019c0cc06503201740b805a02c012409004702300d806a03301900c406002f01700b0054023010807c03a01900b803c002000, 0x372c3728372637223714371212d7312733fd355d36f936ff3710370c370937081173001e000312d7135d136b13711387138f33fd3559355d36f936ff370337073704370036fc001e12d72633312533fd355d36d536d936db36dd36df36e536f336f736f936fb36f436f036ef36ee36ec36e836e636d636d2305536d02375001e018101bd095f096b2277236336ce36cd36cc36cb36ca36c936c814bf14d5300f36c632ad001e000313f713ff3267326f327d3283001e03a703af046308fb098909910a5d0a610a650f6312df197b198336c4⟩]))))))))) ( (.branch 18 ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0x3601a00cc06403101800bc05c01e00d806803001700b0054028013009004402000e0068030016008003801800a0040018008002000, 0x37a637a537a437a2379e379837963794001e0bd91069109b340f3421343b3473348d34b3371f37313737373f3743377b37863783378537843782374f3780377c377637723770376837643762375c375b375a37583754374e3749374d374c3746374a37443740373c373a3738⟩, ⟨0x3e01e80f005a029014009c048022010007803a01c00d806803201700b0054028013009004402000f0070034012006002000c004000, 0x3822381e001e13c518bb192d340f378937bb37c137cb37d337d537db37e937eb3803001e37f1380738133818381637ec37f9381138103809380e380b380a38093808380437fe37fa37f237e637e537e437e237de37dc37c837d037ce37c637c437c2001e378b378f37b137ac37b537b937b837a537b637b237aa37a7⟩, ⟨0x4d026012408e0460228110086042020810007e03d01d80e807203601a80cc064031010803c01c00d00600240100060028010004000, 0x389438903871388b388e388d388c38883880387a38783876386c38643860385f385e2739385c38583850384d384f384e384c274f384a3846001e03a703af03bf09370989099109dd0adf0af50ce90f5d103f17af17b717bb001e03a703af03bf09370989099109dd0adf0af50d2f0f190f390f4f103f17af17b717bb3840383e383c383438313833383238303483382e382a3826382538243649⟩, ⟨0x3f01f00f407803a0140098048023010007803a01c00d806803201800b8054026012007803401600a004802000e0060028010004000, 0x391e3914390e39083787001e0bff28152ca52cb92d372d632d7b2dad2e9f307d3775384538573863388738a338f339043903390238f9390038fc38dd38f738fa38f938f838f438ec38e638e438e238d838d038cf38ce38c138cc38c838a538ab38c638c338c238c138c038be38ba38b438b238b038a0389838973896388d⟩]) ( (.branch 2 ( .leaf #[⟨0x4c02581280920480238114086042020810006a028013009004601800b0054024011007803801a00c00580240100050020008002000, 0x397839763972396c39663962395f395e395d395c395a395606d4071f0727077708d7096b09c50ad30adb12e312e7001e0b6d0b750bc10bc512af12c512cd1f811f9125fb26072e91395239513950394f394e001e000313711387138f13f713ff25fb26d7391d3937394c394b394a3948394339473946394239413940393e393a39383930392d392c392a3925392939283924392339223920⟩, ⟨0x3401980c806203001700b005602a01480a004e01800b0054028013009004402000f007002c014008003801800a0040018008002000, 0x3a083a063a0039fc39f639f539f439f339f239f039ee39ea39e2001e09370989099109dd21d521eb21f321ff26332997309f39c339cb39d139dc39db39da39d839d439d239c839c639c039bc39b639b139b539b439b039af39ae39ac399e39963990398839803982⟩]) ( .leaf #[⟨0x3601a00cc06002f01680b005602a01480a004c025012008c04402100f807403801a00c806002e01600a00480220040018008002000, 0x3a7c3a793a783a763a713a753a743a703a6f3a6e3a6c3a6a3a603a5a3a523a513a503a4e3a4a3a463a443a3c3a3b3a3a3a393a383a343a333a323a303a2c3a2a3a223a213a203a1f3a1e001e046f0477049d04a10acb0ddd0de50def214526332aa932533a1c3a1a3a163a10⟩, ⟨0x4101f80f407603901b80cc06203001780b4056029014009c04c024011008403a01b00c806001a00b005001c00c0040018008002000, 0x3ad03acf3ace3ac53aca3ac93ac83ac73ac63ac53ac435833abf3ac33ac23ac13ac03abc3ab810873ab63ab33ab23ab13ab03aae3aaa3aa63aa53aa43aa33aa23aa0398b3a433a593a9e3a9d3a9c3a9b3a9a001e000313f713ff215d2165219929972a773a693a833a983a973a963a943a8f3a933a923a8e3a8d3a8c3a8a3a863a84⟩, ⟨0x5402981480a2050027813809a04c023810407e03e01e80f007603a01c00d806a02900f007403800a004001c00c005002000c004000, 0x3b423b403b3a3b323b263b223b1a3b14001e107f10ad114f3b0b001e107f10ad115311573b0b3b1211753b103b0e3b063b043b023b003aff3afe3afd3afc365a0a6d0a790a810a850a8b0ab312af12c512cd12d72e91001e0703072f128912c512cd13c525bd25e9368139653afa3af6001e09370989099109dd0adf0af50f0d1155129d12af12c512cd2e9136513ad73adb3ae13af03aef3aee3aec3ae83ae43ae23ad83ad43ad1⟩]))))) ( (.branch 4 ( .leaf #[⟨0x3d01e00e806002c01580a404e026011808804001f00f007403801a00c005c02c012008804001800b004802000e0060028010004000, 0x3ba03b96349f001e0bd9343b34a534b3371f373137373887389f001e38a338a938c93b943b923b913b903b8f3b8e3b8c3b873b8b3b8a3b863b853b843b823b7e3b763b703b6f3b6e3b6d3b6c3b6a3b2a3a593b633b673b683b643b2e3b393b4d3b5f3b603b5c3b5b3b5a3b583b543b503b4e3b463b453b443b43⟩, ⟨0x46022811008404001f80f807a03c01d00e404e01b00d006403001700b0048022010007803801a00c005002400c0050018008002000, 0x3c0c3c083c063c053c0413293c023bfe3bf63bee3bea36373be8001e000312d7215d216521992a77312533fd355d36df36f336f736f936fb3bd13bd53bd73be212d7312533fd355d36df36f336f736f936fb3bd13bdf3be03bdc3bd83bd23bce362235ef35fb36113bcc3bca3bc63bc43bc03bbe3bbc3bb93bb83bb63bb13bb53bb43bb03baf3bae3bac3baa⟩, ⟨0x4901f00f007603801b80d406803301900c405e02e01580a80500270130094048023010807c03c01d00e0068032012008804001e000, 0x1e000308190895089d0db30dbf13f713ff3c3d3c573c6c3c6b3c6a3c683c633c673c663c623c613c603c5e3c5a3c583c503c4d3c4c3c4a3c453c493c483c443c433c423c403c3e3c343c2e3c263c253c243c233c223c203c1c3c1829193c16001e1aa91ae11b4d1ecb2ca930313c143c123c0e001e0a6d0a790a810a8b21eb21f321ff25152517251d308b34d737373c0b⟩, ⟨0x4902400e406e032012809004001f00f007403801a00c806002e01600a804c022010007803801800a004802000e006002800c002000, 0x3cd0001e06e10895089d08a508b50acb0dc50ddd0de50def0e2121452aa9332b3cce36c9001e2349236b2377237b001e03df03e703ef052b09050cd52151215d21652169216f21853ccc3cbe2c0f3cc53cc93cca3cc63cc23cba3cb63cb53cb43cb23cae3caa3ca43c9e3c9d3c9c3c9b3c9a3c983c8e3c8a2e1f3c883c873c863c843c803c7c3c7a3c723c713c703c6f3c6e⟩]) ( (.branch 2 ( .leaf #[⟨0x5402981480a2050027813809a04c025012008e046022810007c03c01d80e807003601a80d0066032012008c0320130090040002000, 0x3d483d443d403d383d363d343d2e3d263d1e3d1b3d1a35db3d183d143d10001e200720132029203f3d063d053d0431533d023cfe3cfa3cf93cf80e5d3cf63cf03ce83ce4001e08fb0f6d10cb10e911b311d711f517af185d1e4b1e7b3cdb3cdf3cdc001e01cd02a302f317af1e271e4b1e7b33ad33c31e3201cd030d0fdd17af20cb3cd83cd634d1001e0a6d0ddd0de50e010e250e290e2d13711387138f25fb26d7300d3cd33cd4⟩, ⟨0x7603a01cc0e406503081800be053027812c07c03d01700a404e023011008404001b00b005002601200800300140090038018002000, 0x3d983d973d963d8c1b6803df03e7047b048308190895089d08fb09030b390b931f7d0c561c3b1c431c593d883d84365c0a790a810acf0ad70bb112c512cd13c5206125bd25e91a32201323dd23df3d80201323df23f521681387138f13c1215d21652199219d21a125d32fe92ff72fff3d7e001e04a904b713f713ff1cab201d2151215d2165216f21853d0f3d553d6f001e21693d173d713d733d7c3d6d001e35b13d713d773d7a3d783d74001e21693d173d253d573d203d2d3d433d5b3d5f3d6c3d5d3d6a3d643d623d613d603d433d5b3d5f3d5e3d5d3d5c3d5a3d593d58001e21f73d4f3d533d573d50⟩]) ( .leaf #[⟨0x7203881c00de06e03601a80d206803381980c8054029811808a04302080fc07a03c01d80e8072028009804800e0060028010004000, 0x3dfc3df83df63dee3dea3de93de819633de63de23dda3dd63dd22e3d001e07ad07cd080d08410bd926a72cdb2dcb2df3363f3641371f3731377b3c8d3dd0001e07ad07cd080d084d26a72def2df32e492e4b363f36413dcf3dcc3dc63dc33dc22d693dc03dbf3dbe30733dbc3db83db03dac001e08190895089d0a6d0b390ddd0de50e010e250e290e2d1b251d391d4f1f7d36bf1ef403a703af03bf0ae50aed0b3f0b510b570ce90f5d0f71103f10e314351cf91d7d1ecb27eb280f2e9f3da8001e04cd04e91387138f13af13c125d32fe92ff32fff3da63da23d9e3d9c2b333d9a3d99⟩, ⟨0x86042821010608204001fc0f807b03c81e00ee07603a81cc0e206502c015c0aa053028812c09404001a80b005601f009800c002000, 0x3e523e503e4e3e4c3e443e413e403e3e3e393e3d3e3c3e383e373e363e343e323e203e1a312f1a2e1a37001e000303df03e703ef052b0fb70fbf0fdd17af17bb183f001e000503a703af03bf0ce90f5d103f179917af17e319a33e173e183e143e113e103e0f3e0e3e0b3e0a17cb1a3b1a433029302b3e08001e07ad07cd080d08410bff1aa91b4d1cfd1da9001e0bff17af1a771e051e271e4b1e7b268f2ca52cb9001e09030fdd159f1fdb1fe11ffd20cb3e033e0430fc0cd5159f18551fdb1ffd30f930ff31033cdb3dd53dd9001e0005071f0727077707d1080d12e312e730c93107310f001e07d10807080d08190895089d08cb08db097d0ddd0de50e250e33211b30f53e003dff3dfe⟩, ⟨0x6703301840be05d02d81600aa0530288100074035014809004401e00e006803001700a804c024011008003c01c00d0060008002000, 0x3e9c20c6152d153d21c521cb3e983e973e963e953e9421cd3e9036af3e8f3e8e1b3d36c336c21b3531ca31c9001e0cd513c5159f18551fdb1ffd30f9312133fb34393cdb3dd53dd93de13ded3df516b2149114951499149b149d001e0b871bd32f41324728000bff1aa91b4d1cfd1d391da9270b271927e73061307d0c220b931bef2f4132473e8c3e8b3e8a1f093239324b3e881d213e863e853e843e7d3e823e803e7f3e7e3e7d3e7c3e7a3e763e6c3e6a3e663e5e1db61d291d391d49208327a527a727bd28273e593e563e54⟩]))))))) ( (.branch 9 ( (.branch 4 ( .leaf #[⟨0xb805b82b41560a9053828c1440a104e026c13209804b825812a094049820c0e0063029011808a04402180c804601c0078008002000, 0x3ee0001e017b01c701cd0559058510e711bd17af17e33ede1e833edc1a2b3ed820b92fae2fa93c2d3c793ed63ed4001e3c2d3eb53ecf3ed13ed23ecc3ecb3eca3ec83ec43ec03eba3eb0001e1cfd1da9268126852689268b268f26912cff2d8d2e012e353061307d3d8b001e1cfd1da91f1b2083269127a527a727a927af27bd27bf2cff2d8d2e012e353061307d3d8b2e9603a703af08fb0a5d197b1983209321d521eb21f321ff291f001e03df03e703ef052b0bd90f9d0fdd17af17bb1817183f215d2165216f21852ab72a7a1387138f13af13c1215d2165219921a125d326c729973eac3eaa3ea4001e038d039d03df03e703ef0445046f04770497049d04a1052b13f713ff1c6b1c85001e08190895089d0a6d0ddd0de50e250e331ba71d391eb72781278d2a9f188a0cd512031843186b18872219001e08fb11f51519157517af17df17e3184b185d1e671fef312b001e12c512cd13c5209321d521eb21f321ff25bd25e9291f365b3ea23ea0⟩, ⟨0xb105802bc15c0ad05602ac1520a7053029414209d0488234116089042820c10207d03a81a40d0067028011406a023008000c004000, 0x3f243f223f203f1a3f143f103f0e3f0d3f0c0ecf3f0a3f063e1c0ed93bf33bfd30521c591f4730430b860ae50aed0b930b9b0ba1215121eb21f321f722112215126a0ed90eed133d3efc24d93efa1671246601db0ac530173ef63ef33ef222f93ef02301231724d5001e0ab30acb0b9f0ba9252b253f262f04440433044d0463046f04770895089d0dc50e1d0e2131f93eee3eea001e08190895089d0d2b17af1a771ba71e051e271e4b1e7b1eb720f12121212921b321b521b921bd268f2ca53231206602a102fd091f15eb187318871fdb1fdf23393ee9001e02a102fd06e1091f15eb185d18731fdb23393cdb3cdf3e1f3e233e253ee9001e046f0477049d04a104a904b705150703072f09c50a010ad30adb2257229926333253001e03df03e703ef052b0cd50d2b0fdd13f713ff20f12121212921b321b521b921bd333f3359030c038d03df03e703ef052b1387138f13c1206b2071208320b33ee63ee4358d⟩, ⟨0x7b03b81d80e4063030817c0ba05b02c816009a03e01e80ec0720350138058028013008003c01a00c0058028012007003000c004000, 0x3f6e350935f136113f6c25a60adf0af525c5001e0a790a810ac90acb0acf0ad7208321eb21f32211221529ab2fdf2fe33f6405533f62388f3f602d6b3f5e2db53f5c38fb3f5a001e049b05070523052712d713711387138f13c92a83001e0433044d046f0477134b1387138f13af13c113c51f25209d352f3e9f3f583f563f533f522ee33f502ebd2ee92ef1209c03df03e703ef046f0477049d04a1052b0af50cd50fdd16ad1817001e0a6d0a790a810a850a8b0ab30ae50aed0b930b9b0ba10cdd0ce51bd33f1f3f393f4e3f4d3f4c3f4a3f453f493f483f443f433f423f403f3c3f3a3f323f2f3f2e3f2c3f273f2b3f2a3f263f25⟩, ⟨0xb104f823c0fe07e03681b00ce06302f814c0a4051027813809a04c025812408e04602280f806401d00e005c016009003801800a000, 0x1e09370989099109dd0adf0ae50aed0af50b9b0ba10c131bd31bdb1bf71d391d4f36a1001e02a102fd091f15eb18731ae11dcf1ea31eab233926853dab3dc93dcb3ee9001e119b11b71ae11e271e671ea31eab270b307d38573daf3db73dc93fb13fb33fb4001e05070523052708190895089d08d713dd13f713ff14071eb7226f229f332f3fad3fae001e0d13176d31193e270dd6332f3e273ea91f641f471f5d304f001e094d096d099909d50be10be92bc92bd13f873f973fa53faa3fa83fa23fa13fa03f9e3f9a3f983f903f8f3f8e2be33f8c3f88001e02fd091f0927092f09f523a7049a04a904b705150d2b20f12121212921b321b521b921bd001e02a102fd03a703af03bf091f096b09c50ad30adb0d2f0f1915eb18731fdb1fe123393e033e9b3ee93f80001e06d5077d07833f77001e0005071f07270777078308d712e312e730c930fb310f3f7e3f7b3f7a31133f783f72077e078907f70805311d⟩]) ( (.branch 2 ( .leaf #[⟨0x11808704281f00f7074836c19c0cc06282bc15a0ab054826012809303e81ec0f207703a81940c6054029814407e03d0150058028000, 0x3f660bff0cd512031ea32219268d268f2ca52cb92564263b264f2ef1092c0463091f092709290989099109c50a610a650ad30adb225722a123a72e7f2e812e853fde001e037b03a703af08fb0a5d0f2121eb21f321ff308b34d737373c0b3a36046f0477049d0acb0ddd0de50de90def0e030e0926333a0f3a29376a08190895089d08d70bd90dd71eb7215d21652185339137673fdc2755206a13a113af13c5209120932097001e01cd029102a302a502ab02b902f304630989099109c50a610a650ad30adb225722a123a72e7f2e812e853fd83fd73fd61f713fd41f71001e04e905070523052713f713ff226f229f2ac52af32b0f2b172b1f2b372b3f3fad3cf20c690c8b0d433fd2001e0bff12c512cd1aa91b4d1cfd1da921d521eb21f321ff25bd25e125e929972df53061307d309f31833d8b3fd03fcf3fce18c13fcc38353fc83851001e06d506e107530895089d0dc50e2113711387138f172125fb2a832aa7332b3fc4131d001e038d039d03df03e703ef052b215d2165216f21852a972a9b3eed3fbb3fc23fc0285f283602a102fd091f15eb18731ae11dcf1ea31eab2083233927af27e127e33e6f3e753ee93fbc1d69001e08190895089d0d2b1b771b7f1ba71d391d4f1eb720f12121212921b321b521b921bd36bf1db601cd02a303df03e7047b048308190895089d0b391a911b251b2d1cfd1d391d491f7d23953fb93fb61db11db60ae50aed0b9b0ba10c131a911b1d1bd31bdb1bf71cfd1d391d49215121eb21f321f722112215⟩, ⟨0x90047822411008403f01e80ee07503701a80d206703301940be057028011808a04102000fc07c03d01a00cc04e01900a8018004000, 0x16c600ee250514971495017b24e816482c0f2c2e2bfd2bf62a6929132a492a53208e27c1232922cc22d124da36a636a336ab333f23af1a8836a31d4f039d0d931fac00c50d931d4f36bf0c311d48296327a633c233ac03d0039d03430339034d030303d0039d02dd02fd029102a102b902a502dd02fd029102b902a102a502d902dd02fd029102b902a502a10340036b035302d817e22c7f1abf039d044527ea280e2e9e1e4a2bc00a6d0a790a810a850a8b0ab32b873fe33fe4001e0ae50aed0b010b9b0ba11bd31d3927812bc12bc92bd12e7e049709370989099109dd12af12c512cd25fb26072e692e712e912c182c0b2c0f2cc5001e0bd1134b1387138f13af13c113c5215d2165219921a12ab9352f3e9f3f001333133d13433fe03171⟩]) ( .leaf #[⟨0x8903f01e80e806e035819c0bc05c02c014809804a023010c08203e01c80e006e02f017009804802300f806c0300160070020002000, 0x23393e253cdb1fdb091f02fd3ee902a115eb3e2300e600ee167503d024e9023f149514972505017b023d2487041524da24bd24bf017a246601db23bf24bd24bf24c022d115eb1519157515c714973ccf36cf1495149d096d0145237b16f1234606a8155d0fdd0904155f0ce9151b149714953ccf36cf149d149b15a315720c301e271ef800b30f950f6f0fa10f6f0f710f6f0f710f4f0fdd0f6f143509030f9510e811bc02a1091f1dd71853233902fd142b100f1db702a1229f23a7091f0a23369902fd09271fef1fe31e7a229f226f3fad2ac531cb1f5c1f3e1f6e0d931cab044429ab0f63011f0116149515151497149d15190127039d029102dd24e103d0167502dd039d24e1029103d0167502d81644⟩, ⟨0x89043821410808003f81c40d406203001640ac052027813009203f01d00e006602f016009c04801f00d80680320170080038006000, 0x2a122b702a123ab1fee061005e906a806b801aa03d0039d02b9029102dd229f0a23369923a70fdd090302a1013902fd149d3ccf149536cf149715190136149d1519149536cf14973ccf15750138090415180fdd0903091f233902a102fd01390132142801350fdd0903013d0f6f054b017a0111017a24da023f01db039d247f011100fd23122395332532fd0ac701db242122c1011100fd231222bd00ee049a23af0ac7242101db2465096c069b2387236606a82ac5049b05e4054b016201db011103d73e273ea90d9324652463054b2421033a03430339240a033b058405ac17223f681aa927e71da91b4d1cfd2800007a1d291cfc08b30c70233915eb1fdb091f02fd3ee902a13cdb0e6830e230f030df⟩, ⟨0x6f034818c0ba05702b01540a404c025812408e046022811008604202080e807202d014809403a01600a804802200f0060018006000, 0x3d002a502a102fd00ee010c24da03d002a502a102fd023f02fd02a502a1017b00ef010d03d002a502a102fd02dd010c063401d408b513a104470ef61347133d33d833f30ecb10ac3b9e36d821693d6e088a2e342f6211ac12f411340777310f08cb211b30df080707d107ac30ff3ded3de11fdb3cdb34393dd91855159f1ffd33fb30f90e6d0d680c8b08b23cdb0f6d11b300e6157420cb159f1ffd0fdd1fdb09031fe124e90d0f161e14b3049a02dd00ee11d606a82ac506c3054a023301c60241023d024202fd02a502a1017b01c7010d03d01e2702dd1e2702dd02d9⟩]))))) ( (.branch 4 ( .leaf #[⟨0xda06a83481a00cf06302f01740b2052828013009204482080f806c03381800aa04c02000e0062028011807c0320130060020008000, 0x2a4328b32913209b27a41c591f6a304310e70111055800ee2e8523a703d02e7f225702a522a1010c02dd2e85029123a722a102a52e7f225702b902d9289d289813a10c30291e27a5186a1c5927e7281f0b512ef12a9f1ba72bc11bd313a1291e0c30186a1c5927a51f6f13a1281f291e27e727c9282127e5281f27e7291e2920209f288b13a127e7291e281f005c2091271926a9270526a7268f268d10e72689268b2a9f1ba72bc11bd31f111f1327810c301b4d1ad9188100bd00c70f190adf0f4f18353253182f1515186d1853149d149514970f9d0fdd1883186b3d5321f73d1721693d54149d15193ccf36cf14971495013808b30c660e691515186b14951497188c149d1853186d08c20c8b096b030d0f6d10cb11b311b7177f08b30c6614951853149d186d184f186b1515149718570e6927a527a927bd27bf1c590c3027a7186a27a527a927bd27bf27a710e700c62ab70f9d0fdd0f190adf0f4f182f183517bb2091291e28e528ed28352a692913208e27a42897291e27e72091281f005c288b282127e7281f27e5288922992a9f095f096b23612357018103d002a502a102fd02a102a502fd010d06c302a503d006a8⟩, ⟨0x9a04a825012208604102000fc07903981c00de06e03681b00d606a03481780b6050027012c09404802300fc06002600c8030002000, 0x2c84268f1e271e051ef81e66234606a816f63e9f147a203f20130fdd0f190adf0f4f188a186b134b133d0eb6009f0eca0e6c00da16d3067302a1092702fd091f0a21194b194d151915751e6700e716d306c4067307bc084c18e8191418ba2f9c2cfe147a203f20130fdd0f190adf0f4f2ab7186b188a0fa1167503d0024e173d23393ee91fdb091f3cdb15eb02a102fd08b20e6c14a7234714a706ae096a1646147a01260c8b0c7106a81622149d15191575013816f63d1721693d0f203f200a030d3ee91fdb091f02fd15eb02a123391fe1096b0c7002fd23393ee91fdb091f15eb02a10e683cdb0fdd030d21cf3ee91fdb091f3e9915eb02a1233902fd096b1fe106c416223d1721693d0f23dd0f4f0f9d030d186b0c8b149d067308b30c6614951853149d184f1515186d186b14970e691da8⟩, ⟨0xc9063030417c0b305702a414409e04d026410207c037017c0a604a01f80e4062029014009404601f00e006002c014009004400c000, 0x1e27041602dd023f149714952505023d02da02bc02dd36cf3ccf02a1149514970fed091f02fd23391519149d2a4320912a5429ab27a40b391f111f190c212781007a268f26911aa91b4d268b27720c301e271f3e00b3206b300d26d704442e00004b27a527e33fb13dab11b71e273ee9309f15eb233902fd1eab091f02a11ae126552ef10adf26d71aa91b4d1dcf27e10b390b870c311e2700c6004b27a53ee927e31dcf15eb1eab02fd1ae102a12339091f27e11d083fb1007b11b71e273ee91dcf15eb233902fd1eab091f02a11ae13dab3dc90c310adf0b390d93039d1fac1bdb23953fb902a300c51d4f26552ef10adf26d71aa91b4d309f2e01007a26d730b72e013d8b25e130611b4d309f1aa930bd2d020b392bc11bd31f111f1327813fb13dc911b71eab1ae11e273daf007b1bdb0adf1a880d93039d1fac00c51d4f119a2091291e27e2288b27e0004b27a51d29005d1b690d1d1b4c0d1d1b1d1b510b7a1a8b1aa82395090513a109051cfc21f71bdb3fb923951a911b2502a30b391b651b671cfd0c310b871e270b39268f00c6⟩, ⟨0x8303f01b40d606703081780a80530280128092048023811808a044021810007203401680a804201c009004402000f0050014008000, 0x142b0fed0f4f17ee0ce90c6a0fed0f4f142b149518531857185508071515186d149d186b14970777184b07f4088f185608070777310f077a0f190fed0f4f142b0adf17ee182417c317bf26a926a726892705271928963c2d209100c610e727e606a80139049b385738a32cb92ca53845003428142dac2d6238f2389e343a388630a330a930b10c340d1d1c591ad91aa918810c3128963eb427e7281f289c20910ac92fc03c2d27e7281f291e1abb1abd1abe0c703f690d0f11b3133d0ecb0f6d12d10e6c1ae11aa91b4d1afd186a0c703f690d0f12d1133d0ecb0f6d11b311b70e6c1126107e115614350ce90f710f4f17ee149702a3023f1495165615180416033903430303⟩]) ( (.branch 2 ( .leaf #[⟨0xed068031c1540a804f827812809104502080fe06b03401800b80570270134084032015009c04402100c004802200c0050018008000, 0x23f5013d142b049a197b152d0903203f205715b31ae11aa91eab1a330ac917bf12d111b315151853186d1495186b14970fdd0fb70ce90ecb133a203f205715b31ae11b4d1aa91eab1dcf201023f5013d142b049a0ac911b315151853186d1495186b14970fb717bf1aa90ce9197b12d11a33133d203f205715b3152d0ecb0fdd090333fe1fdb013511b22657258125cd1f832ca52bf62c0f2cb9265438a2023f2e8522a102a502d823a72e7f02a32257024e06a8236606b823f5013d142b1fdb0139134b13dd23f5013d142b1fdb0139134b13dd1caa13dd226f05e405f80a2f00ee010c03d022992a9f095f096b268d268f2ca518532cb91ad91dd722572e7f23a705f40a00239b23a026542ab2268f2689268d268b10e7007113a1209b291327a413a12913209b27a4289623f5013d0f6d142b0dd61fdb16ab1a0f049a3b0b0ecb33fe30ff159f1fdb18551ffd3dd93cdb30f90ef50c3212971c59133d1b4d07cd0ecb33fe30ff1fdb18551ffd3dd93cdb159f0b8623f5013d049a142b0d0f1fdb0f6d0dd61497149516561675149714952505023e34b2377b37433731371f106934733421109b34b337bb37eb380337d3192d0043378811b311b70f6d10cb009b1cab01451575149d0138096a0fa10f6c0fed142b0f4f17ee⟩, ⟨0x1820b40568298138094847421c0ff077036c1a00c305f82c413c09d04e026c12e09304702280f8078034816408c0400190070030000, 0x25ff39a23a59136b188c14970d1d142b149518530fed08071515186d25cd1f832bf62c0f26540b3928963c2d20911c5936ff0adf0d1d1c59186a1f3e25cd1f832bf625812c0f26540b391bd31f22268b1bd3186a1f3e25cd1f832bf625812c0f26541b4d0b391f22268b00b21f02186a1f3e25cd1f832bf625812c0f26541b4d0b392719270526a926a71bd31f22268b2e4f00b3268b1bd3186a1f3e25cd1f832bf625812c0f26541b4d0b391f221abc00c72719270526a926a72e4f1f220b01268b1bd310e7268f268d0d1d1c591f3e25cd1f832bf625812c0f26540b391f221bd310e7268b1b4c1bd3186a1f3e25cd1f832bf625812c0f26541aa90b391f22268b1ae11b4d1f3e25cd1f832bf625812c0f26541b4d1aa90b39268f1f22268b1bd310e7268d00b3136b188c37eb3731371f377b3743149736ff142b149518530fed08071515186d07770adf186b1347133d37eb3731371f377b374336ff136b0adf0ef6184f142b149518530f4f0fed08071515186d07771497186b00e711b30f6d009b00e61347133d3bf237eb3731371f377b374336510adf136b36ff3adb0ef60807136b15151853186d1495188c149711b30f6d37eb3731371f377b37430adf36ff186b0ce9109a192c3802142b0fed1823100e0adf142b0fed17ee023f02a502d802a3236706a802a502d806b80d0f1f230ecb11b30807142b186b1497186d15151853149519880fed18241a433e0d1a3b1f591f7326a926a70c212705271928963c2d20910b390d1d0c341c59186a1c591f591f7318811ad926a926a70c212705271928963c2d20910b3910e70c300ac90ecb12d111b308070e69142b0fed17bf197b149719880ce9151518531495186d1991186b06a8023f02a502d802a306b80ac90c8b0ecb12d10f6d11b3188c15151853186d14951497186b08070c56049a197b152d09030ac9030412d111b31515149515b314970fdd0fb7205723f5142b0139203f0ce91a332ca52cb91e271e090c56049a197b152d09031a330ac917bf12d111b31515149515b314970fdd0fb70ce923f5142b0139203f2057186b0304⟩]) ( .leaf #[⟨0xf907b03d01d60e607003601a80c8057829412407f03e81e40f006e03101740b4051025810807e03c01d00b40520260118080024000, 0x186a0139096b024200f80a2136cf149714953ccf02a1013902fd091f1bd3186a2e692e85049b1bd3186a2e692e85049b0445146a20133f662cb92ca5268f268d23f5147a20131a0c013706c4069b1bd313a1186a2e6903d00fdd09032e850445067303d001390fdd090305f80a2f22992a9f095f096b2cb9268f268d2ca51ad902dd2e85029102b92e7f225723dd04450f9d23a705f803d002dd01390fdd029102b9090323a705f501102e7f22992a9f095f096b268d2cb92ca5268f1ad922570a0005f803d00fdd0903013900ee05f82e7f010c03d022992a9f095f096b268d2cb92ca51853268f1ad91dd722570a0000ee05f40b510b86183f17bb04470fda17ea142b17db0b511ecb0f5d10e31cf91ef40ce9100e25cd26541f590b39186a28963c2d20910d1d1c591f730c251abc18811ad91b4d1abf1c59186a00b21f3e25cd1f83258126542bf62c0f265700b323dd0f9d02d802a523a7044505f80a002e8502a502d8024e2e7f2257041613a1291327a40fa50d93044434f8003e142b0fed14951853184f1515186d186b1497077708070d0f00e7133d37eb0043008f34f734f534f8350935ec35f135a43be4363725cd1f832bf625812c0f26540b391f2228963c2d20911c590d1d186a198815150ecb142b0807149714952b510fed25cd265428963c2d20910b390d1d1c591f23⟩, ⟨0x1660a5850c24e11208083f01e20e707203881c20df06e833017c0bc04d02400e406602c813c09604501b00d006002400f8044014000, 0xc30304f1bdb21b31ba720f127e31b4d309f26d72ef127a50adf26553fb111b73ee915eb1dcf02fd1e27233902a1091f28971aa900c71bdb0adf1b7721b31ba720f136ab1d4f09030d93039d1fac3fb902a31bdb239527e327a5309f26d72ef10adf26553fb111b73ee915eb1dcf02fd1e27233902a1091f28971b4d0b393e49178013a124da3d1721693d0f200a096b3cdf3e1f03d03fb111b73ee915eb02fd233902a1091f173c3d1721693d0f200a096b030d3cdf3e1f3e2502a1091f15eb02fd23393ee93e231fdb0d931745096b2aa73e272013203f0f190fdd0adf0f4f3e9f147a133d0eb600e703d013a124d50b511bd32bc12ef1291e04451e27234606c40673049b2347186a0138049a186a0139080715150ecb14971495044425ff1f832bf6142b25cd0b39186a28961c590d1d09060444186a25ff0d1d1c592896090525cd1f830b392bf6142b0f870b51013d0f6c23f511b30d682c2e3cc0310f013d049a2e49363f26a72df30f5d0b511ecb10e31cf91ef419fd33fe1fdb0ef515150ecb142b1497149525cd0d1d2b5128961c591f230f6d17c3142b0f5d0b511ecb0ce910e31cf91ef40f87310f0777080730df013d049a377b3731371f2cdb2e49363f26a72df3142b0f5d0b511ecb0ce910e31cf91ef419fd0ecb33fe3dd91fdb0ef518550904142b0f5d0b511ecb0ce910e31cf91ef409030ff60fdd100e203f205715b30ecb33fe3dd930ff1fdb18550ef530f93cdb2013377b3731371f2cdb2e49363f26a72df307cd083825ff26d730b12d2f28963c2d00c610e72091279c186a25ff0d1d1c590bc91f8325cd23f5013d142b1fdb049a28962c2e2689265800702ca52cb90034007b0444186a25ff0b390d1d1c5928960bc91f8325cd268909051abc18811ad90d1d1abf25cd1f832bf6186a2c0f25ff0b390d1d1c593c2d2091289626541f2202dd041602b902fd029102a102a536cf149714953ccf0139029102b902dd023f2367⟩, ⟨0x820410208104082041020410007e03e81f00f407703981b40d006302e01680a004c025011c08403601700b4056025011808800e000, 0xc7080708070adf090200f902dd041503041fdb09030ce917ee09030f4f09030ce919a318241a681a00152d1fdb09031fe120101c592896136b1fdb0adf08072bf61c592896136b0adf39a21a32201313470adf136b133d3731371f377b37430ef6000808b3077b184f00e70807077a0adf090317ee0adf17bb090319a30ce913470adf136b37eb133d3731371f377b374336d936dd0ef60807136b0adf2bf61c59289639a2090223671abf0c300c21080719880ecb0fed0d1d010d06b8049b09030d93039d3fb902a323951fac1bdb27e3309f26d72ef127a50adf26553fb111b73ee915eb1dcf02fd1e27233902a1091f28971b4d0c3021b31ba71e270b8720f100c6⟩])))))))))))))) def policyFixedCompact1Db : Nat → List Int := policyFixedClauseDatabase 16 policyFixedCompact1ClauseTable def policyFixedCompact1VariableTable : PackedNatTable.Table Nat := (.branch 0x80 ((.branch 64 ((.branch 32 ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x3d603b803af03a8039d039c039a037c037703760375035803550352034f034402390212021101fd01fc01e601e101dd01dc01d501ca01c40010000a00050000, 0x535052a05290527051c050905040503050204e504e204df04dc04db04d504cb04ca04c904c704c604a904a404a304a204850482047f047c047503fd03fc03ef, 0x64c063a0639063606350634063306320626061506120611060f060c060205bd058f058e058d058b058a056d056a056805670566055a05490546054505430540, 0x6fc06fb06fa06f906f806e806d406d306d106ce06c506b906b806b606b50698069506930692069106850674066e066b066a0664065b065a0659065706560654]) (.leaf #[0x78f07850784078307810780077e076407630760075f075e075d075c075a07500742073f073c073b07390736072d072307220721071f071e071c0712070006ff, 0x80e08090808080308020801080007fe07fd07fc07fb07fa07f007ee07ec07eb07ea07e907e007c607c507c407c307c207b707b1079e079d079b079807970795, 0x83b083a083908380836083508340833083208310830082e082d082c082b082808270826082408220821081e081d081b081a081808160814081208110810080f, 0x87d087b087908730872086f086c086b0868086708660865086408610860085f085e085b0858085708540851084c084b084a08490848084708450842083d083c]))) ((.branch 4 (.leaf #[0x8c308b308ad08a808a608a408a308a208a0089e089a089808970896089408930892088f088e088d088c088b088a0888088708860883088208810880087f087e, 0x90f090e090d090c090b0909090809070906090509040902090008fe08fc08fb08fa08f908f808f408ec08ea08e708e208e008dd08d708d508d208c808c508c4, 0x9460945094409420940093f093e093d093b093a09390938093709340930092c092a0929092809270925092409230922091f091e091609150914091309120911, 0x97f0979097809730971096d096c096a0968096709660963096209610960095f095e095d095c095b0958095709560954095309520950094e094b094909480947]) (.leaf #[0x9c909c809c709c509c409c309c209c109c009bf09bd09bc09bb09ba09b909b809b509b409b309b109b009ad09ab09a809a709a609a309a209a1099d099b0981, 0x9fc09fa09f909f809f709f409f309f209f009ee09ed09eb09ea09e909e809e609e409e209e009df09de09dd09dc09d809d709d609d309d209d009cf09cb09ca, 0xa300a2f0a2e0a2a0a290a280a270a250a240a220a210a200a1f0a1e0a1d0a130a120a110a0e0a0d0a0a0a090a080a070a050a040a030a020a010a0009fe09fd, 0xa5d0a5c0a5b0a5a0a580a570a560a540a530a520a510a4d0a4c0a4a0a490a480a470a460a450a420a410a3f0a3e0a3c0a3a0a390a380a370a350a340a330a31]))))) ((.branch 8 ((.branch 4 (.leaf #[0xa970a960a940a930a920a900a8f0a8e0a8d0a840a830a820a810a800a7f0a7e0a7c0a7b0a7a0a790a760a750a730a720a710a700a6e0a6d0a6c0a6b0a6a0a5e, 0xac70ac30ac20ac10ac00abe0abd0abc0abb0aba0ab90ab60ab50ab40ab30ab20ab10aaf0aae0aad0aac0aaa0aa90aa80aa60aa50aa40aa30a9f0a9e0a990a98, 0xaf70af60af30af20af10aee0aed0aea0ae90ae80ae70ae60ae30ae20ae00adf0ade0add0adb0ad90ad80ad60ad30ad20ad10ad00ace0acd0acc0aca0ac90ac8, 0xb300b2e0b2d0b2c0b2a0b290b280b270b220b210b200b1f0b1e0b1d0b1a0b190b180b160b150b140b120b100b0d0b0a0b090b080b070b060b000afe0afa0af9]) (.leaf #[0xb610b5f0b5d0b5c0b5b0b5a0b590b540b4f0b4d0b4c0b4b0b4a0b490b480b460b450b440b430b410b400b3f0b3e0b3d0b390b370b360b350b340b330b320b31, 0xb930b920b900b8e0b8c0b8a0b890b880b870b830b820b810b7f0b7e0b7c0b7b0b7a0b790b780b770b750b740b710b6f0b6e0b6d0b6c0b690b680b660b650b63, 0xbca0bc90bc70bc60bc40bc00bbe0bbd0bbc0bbb0bb80bb70bb60bb50bb30bb10baf0bab0ba90ba40ba30ba20ba10ba00b9f0b9c0b9a0b990b980b970b950b94, 0xc020c010bfb0bfa0bf90bf80bf60bf40bf20bf10bf00bef0be80be70be60be40be30be20be10be00bde0bdd0bd90bd80bd70bd60bd50bd40bce0bcd0bcc0bcb]))) ((.branch 4 (.leaf #[0xc530c520c510c4f0c4d0c4c0c490c470c450c440c430c420c3e0c3d0c3c0c3b0c390c370c220c170c160c130c120c110c100c0f0c0e0c090c080c060c050c03, 0xc7f0c7c0c7b0c7a0c790c780c760c730c720c710c700c6f0c6b0c690c670c660c650c640c630c620c610c5f0c5e0c5d0c5c0c5b0c5a0c590c580c570c550c54, 0xcab0ca90ca80ca70ca60ca30ca20ca10ca00c9f0c9e0c9d0c9c0c9b0c9a0c990c970c960c950c940c930c920c910c8f0c8e0c8c0c8a0c890c880c870c810c80, 0xd040cff0cfe0cfd0cfc0cfa0cf90cf80cf60cf50cf40cf30cec0ceb0cea0ce90ce80ce70ce40ce20cde0cdd0cd90cd80cd70cd30cd10ccf0ccb0cc40cc20cac]) (.leaf #[0xd350d330d320d310d300d2b0d2a0d290d280d270d260d240d230d210d200d1f0d1e0d1d0d1c0d180d170d160d140d130d120d100d0e0d0b0d080d070d060d05, 0xd650d630d620d5e0d5d0d5b0d5a0d590d580d570d560d540d530d520d510d500d4c0d4b0d4a0d490d470d460d450d440d430d400d3c0d3b0d3a0d390d370d36, 0xd990d980d960d930d920d8f0d8d0d8c0d8b0d8a0d870d860d840d830d810d7f0d7d0d7b0d7a0d790d780d770d720d710d700d6f0d6e0d6d0d6a0d690d680d66, 0xdd70dd50dd40dd30dd20dcf0dce0dcd0dcb0dc40dc30dc20dc00dbf0dbe0dbc0dbb0db90db70db50db30db20db10db00dac0daa0da00d9f0d9e0d9d0d9c0d9b]))))))) ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0xe0c0e0b0e080e070e050e040e030e020e010e000dfe0dfa0df90df80df70df50df40df30df10df00def0dee0de80de70de60de50de40de30de10ddb0dd90dd8, 0xe430e410e3f0e3c0e3a0e390e380e370e360e350e310e300e2f0e2e0e2d0e2c0e2b0e2a0e280e270e260e240e230e1e0e1c0e1b0e160e140e120e110e100e0f, 0xe700e6e0e6d0e6c0e6b0e6a0e680e670e660e650e640e620e610e600e5f0e5e0e590e580e560e550e540e530e520e510e4d0e4c0e4b0e490e480e470e450e44, 0xeb70eb60eb50eb40eb30eb00eaf0eae0ead0eac0eab0eaa0ea90ea80ea70ea50ea40ea20ea10e860e850e840e830e820e800e7e0e7d0e7a0e780e770e740e72]) (.leaf #[0xf0c0f0b0f0a0f080f070f060f050eff0efe0efd0efc0efb0efa0ef90ef80ef70ef60ef50ef40ef30eee0ee90ee70ec70ec50ec20ec10ec00ebf0ebd0ebc0eb8, 0xf410f400f3f0f3e0f3b0f390f370f360f350f340f330f320f310f2e0f2d0f2c0f2b0f280f270f200f1f0f1e0f1d0f1b0f1a0f190f180f170f110f100f0f0f0e, 0xf740f730f720f710f6f0f6e0f6d0f6b0f6a0f690f680f630f610f5d0f5c0f5a0f590f560f550f540f510f500f4e0f4d0f4b0f4a0f490f480f470f460f430f42, 0xfa60fa40fa30fa20fa00f9c0f9a0f990f970f940f930f920f910f8f0f8e0f8d0f8b0f8a0f890f880f840f830f820f800f7f0f7d0f7c0f7b0f7a0f790f760f75]))) ((.branch 4 (.leaf #[0xfe00fde0fdc0fd90fd70fd60fd50fd40fd30fd00fcf0fcd0fcb0fc80fc40fc30fc20fc00fbf0fbc0fba0fb90fb80fb50fb30faf0fae0fad0fac0fab0faa0fa9, 0x103610351034103310321031102d102c102b102a10291028102510241023102210211020101d100510041003100110000fff0ffe0ffc0fe60fe50fe40fe20fe1, 0x106a10691067106610651063106210611060105c105b105a105910571056105510541053104e104d104c104b1049104810471045104410431042103d10391038, 0x1096109510911090108f108e108d108c108a1089108710861085108410831082107f107b107a107910781077107610751074107310721070106f106e106c106b]) (.leaf #[0x10db10da10d910d410d110d010cf10ce10cc10cb10ca10c810c710c610c510c010bf10be10bd10bb10ba10b910b710b610b510b410a0109f109e109b109a1099, 0x110a1109110811071102110110ff10fe10fd10fc10fb10fa10f810f710f610f510f310f210f110ef10ee10ed10ec10e810e510e410e310e210e010df10de10dc, 0x1140113e113c113b113a113911361134113211311130112f112e112d112b112a112911251124112211211120111f111e111d111a111811141112110e110d110b, 0x11ad11ab11aa11a911a811a611a511a411a311a2119e119d119b119a1199119811971196118b118a118511841183118211811180117e117d116e116d11431142]))))) ((.branch 8 ((.branch 4 (.leaf #[0x11e111df11dc11db11d811d711d611d511d311d111cf11ce11cd11cc11c911c811c611c511c411c311c111c011bf11be11bd11b811b711b511b411b311b211ae, 0x121412131211120f120e120d120c12061205120312021201120011ff11fe11f911f711f511f411f311f211f111f011ef11ee11ec11eb11e911e611e511e411e3, 0x125f125e125d125c12551254125312511250124f124d124b1248124612451244122b122a1227122612251224122212211220121f121b121a1219121812171216, 0x128912881287128612841283128212811280127f127d127a1277127612741273127212711270126f126d126c126b126a12691268126712661265126312621260]) (.leaf #[0x12ca12c112c012be12bc12bb12b912b612b512b412b312af12ae12ad12ac12ab12aa12a812a712a312a1129d129c129a129912951294129312921290128e128b, 0x12f712f512f112f012ef12ee12ec12ea12e712e512e412e312e212e112e012df12de12dc12db12da12d912d812d712d612d512d412d212d112cf12cd12cc12cb, 0x132e132b132a132713261325132413231322131f131e131d131c131a1319131813171316130f130d130a13091308130513041303130012ff12fe12fd12f912f8, 0x13611360135f135e135c135b135a13581357135613551351134c134b134913481347134613451344133f133e133d133c133b1339133813371335133413331332]))) ((.branch 4 (.leaf #[0x13911390138e138d138c138a13891388138713811380137f137e137d1379137813771376137513741373137213711370136f136d136c136b136a136913661365, 0x13f613f413f213ed13eb13e313e113de13d413d113d013c013bc13b513b313b213b113af13ae13ad13ab13a713a613a513a313a213a1139f139e139913931392, 0x142b14281426142514241423142214211420141f141d141c141b141a14191418141714161415141414121411140f140d140c140b140a140314021401140013f8, 0x148f148814861483147514731463145f1458145714551454145314521451144f144e144c144a14491448144714421441143f14381436143214311430142f142d]) (.leaf #[0x14cd14cc14ca14c914c814c714c114c014bf14be14bd14ba14b814b514b414b314b114b014af14ae14ac14ab14a914a814a714a614a514a4149b149914951490, 0x150014fd14fc14fa14f914f814f714f614f414f314ee14ec14e914e814e714e414e314e214e014df14de14dd14db14da14d914d614d514d314d214d114d014ce, 0x153315321531152c152b152915281527152615221520151d151c151b151815171516151515121511150f150e150c150b150a1509150815071506150315021501, 0x155f155e155d155b1558155715561555155315521550154f154e154d154c154a1548154715441543154215411540153f153d153c153b153a1538153715361534]))))))))) ((.branch 32 ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x15861585158415811580157f157e157d157c157b157a157915781577157615741573157215711570156f156e156d156c156a1569156715641563156215611560, 0x15b615b415b315b215b115af15ad15ab15a915a815a715a615a115a0159f159c159b15981597159615951594159315921591158f158d158c158b158a15881587, 0x15e015df15dc15db15da15d915d715d615d515d415d215d015cf15ce15cd15cc15c915c815c715c515c415c215c115c015bf15be15bd15bc15bb15b915b815b7, 0x161916181617161516131611160f160e160d160c1609160816061601160015fd15fc15fa15f915f815f715f515f415f315f215f115ed15e715e515e315e215e1]) (.leaf #[0x164a16491648164716461645164316421641163f163e163d163c163916381636163516321630162d162c162b162616251624162316221621161e161c161b161a, 0x167c167b167a1679167816751673167216711670166f166e166c166a166816661665166416631660165f165d165c165916581655165416511650164f164c164b, 0x16b316b216b016af16ad16ab16a916a416a116a0169e169d169c169b169a169816971696169516921691168f168e168a1688168616851684168316821680167f, 0x16df16de16dd16db16da16d916d816d716d416d216d116d016cf16ce16cd16cc16cb16c916c816c716c616c416c316c216c116be16bc16b916b816b716b516b4]))) ((.branch 4 (.leaf #[0x17211720171d171c171b171a171817171716171517131711170b170a17071706170517021701170016ff16fe16fc16f016ee16ed16ea16e916e816e716e116e0, 0x175617531750174f174e174d174c174b17491748174717451744174317421740173e173817371734173317321730172f172e172d172c172a1727172617231722, 0x178d178c178b178a1788178717861784178317821781177b177a1779177817761775177417731772176e176b176917671766176517641763175b175a17591758, 0x17c517c417c217c017bd17bc17b917b817b717b517b417ad17ac17ab17aa17a917a317a117a0179f179e179d179c179a1797179617941793179217911790178f]) (.leaf #[0x17f617f517f417f317f217f117f017ed17eb17ea17e917e717e417e317e217e117e017dd17db17da17d917d817d717d617d317d117cd17cc17ca17c917c817c7, 0x182c182b182a1828182718261824182318221821181c18181817181618151813181218111810180f180a18081806180518041803180217fb17fa17f917f817f7, 0x185d185c185b185a1858185718561854185318521851184c184a184718461845184218411840183d183c183b183a1837183618341833183218311830182f182d, 0x18a718a518a418a318a218a118a0189b189a189918971896189518931891188e188c188b188a186d186c186b186a1868186718661864186218611860185f185e]))))) ((.branch 8 ((.branch 4 (.leaf #[0x18d118cf18cc18ca18c918c818c718c618c518c418c318c218c118c018bf18be18bc18ba18b918b818b718b618b518b418b218b118af18ae18ad18ac18ab18a8, 0x191319091906190519021901190018ff18fd18fb18f718f618f518f318f218f118f018ef18ea18e918e818e518e318e018df18dc18d918d818d718d518d418d3, 0x19b5198a19891988196319621960195e195c195a1959195819571954195219511950194919461942193e193d193c1937192d192b192919271922192019181916, 0x1a121a111a101a0f1a0e1a0c1a0b1a0a1a091a081a071a061a051a031a021a0019ff19fd19fc19fb19f519c619c419c119c019bf19be19bd19bb19b919b819b6]) (.leaf #[0x1a421a411a3f1a3b1a3a1a391a371a361a351a341a331a321a311a2f1a2e1a2d1a2c1a291a271a261a221a211a1f1a1e1a1d1a1c1a1b1a1a1a171a161a151a14, 0x1a721a701a6e1a6b1a6a1a691a651a641a631a621a611a5f1a5e1a5d1a5c1a5b1a571a531a521a511a501a4f1a4e1a4c1a4b1a4a1a491a481a471a461a451a44, 0x1aaa1aa91aa81aa61aa41aa01a9e1a9d1a9c1a9b1a9a1a951a941a931a8d1a8b1a8a1a891a861a851a841a821a811a801a7e1a7c1a791a771a761a751a741a73, 0x1ae81ae71ae51ae31add1adc1ad91ad81ad71ad51ad41ad11ad01acf1ace1acc1ac91ac81ac71ac61ac41ac31ac11ac01abf1abc1abb1aba1ab91ab61ab51aab]))) ((.branch 4 (.leaf #[0x1b221b211b201b1f1b1b1b1a1b191b181b161b141b091b081b051b041b031b021b011b001afb1afa1af71af61af51af41af31af21af11af01aef1aed1aea1ae9, 0x1b501b4e1b4c1b4b1b4a1b491b451b441b431b421b411b3f1b3e1b3d1b3c1b3b1b3a1b391b381b371b351b341b331b311b301b2c1b2b1b2a1b291b281b261b24, 0x1b8f1b8e1b8d1b8c1b8a1b831b7f1b7a1b791b761b751b741b731b721b711b6f1b6e1b6d1b6c1b6b1b651b621b611b601b5e1b5c1b5a1b591b581b571b541b53, 0x1bf71bf61bf41bf31bf21bf11bef1bee1bed1bec1beb1bea1be81be71be51be31be21be11be01bd91bd81bd71bd61bd51bd21b9c1b981b971b961b941b921b90]) (.leaf #[0x1c2b1c2a1c291c271c251c241c211c1f1c1b1c1a1c191c181c171c161c151c141c121c111c101c0f1c0e1c0d1c0b1c051c041c031c021c001bfe1bfb1bf91bf8, 0x1c6a1c691c641c621c611c601c5e1c5d1c571c561c511c501c4f1c4e1c4d1c4c1c4a1c401c3f1c3e1c3d1c3c1c3b1c3a1c391c381c361c351c321c311c2f1c2e, 0x1cae1caa1ca81ca71ca51ca01c9f1c9e1c9d1c9c1c9b1c951c941c931c921c901c8f1c8e1c8c1c8b1c8a1c891c781c771c741c731c721c711c701c6f1c6c1c6b, 0x1cd81cd71cd61cd51cd41cd31cd21cd11ccf1cce1ccd1ccb1cca1cc91cc81cc21cc11cbf1cbe1cbd1cbc1cbb1cba1cb91cb81cb71cb61cb41cb31cb21cb11caf]))))))) ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x1d071d041d031d001cff1cfd1cfc1cfb1cfa1cf91cf81cf71cf61cf51cf31cf21cf11cee1cea1ce91ce81ce61ce41ce21ce11ce01cdf1cde1cdd1cdc1cdb1cd9, 0x1d341d331d321d311d2f1d2e1d2d1d2c1d2b1d281d261d251d241d231d221d201d1f1d1e1d1d1d1c1d191d181d161d141d131d121d111d0f1d0e1d0d1d0c1d08, 0x1d791d781d771d741d731d721d711d6f1d6d1d6b1d691d681d671d661d601d5e1d5d1d5a1d591d531d511d4f1d4d1d491d441d421d411d401d3f1d3e1d3d1d3a, 0x1dad1dac1dab1daa1da91da71da61da31da11da01d9f1d9e1d9b1d9a1d981d971d951d931d911d8f1d8e1d8d1d8c1d871d851d841d831d821d801d7f1d7c1d7a]) (.leaf #[0x1dd71dd61dd31dd21dd11dd01dce1dcd1dcc1dcb1dc91dc71dc61dc51dc41dc11dc01dbf1dbe1dbd1dbc1dbb1db91db81db71db61db51db31db21db01daf1dae, 0x1e121e101e0f1e081e071e061e051e031e021e011e001dff1dfe1dfd1dfb1df81df71df41df31df21df11def1dee1ded1dec1de81de61de01ddf1ddd1ddb1dd8, 0x1e441e431e421e411e401e3f1e3d1e3c1e3a1e391e381e371e361e321e311e2e1e2d1e2c1e2b1e291e271e241e231e1f1e1e1e1d1e1c1e1b1e1a1e191e181e13, 0x1e771e761e751e741e731e721e711e701e6e1e6d1e6b1e691e681e671e661e601e5f1e5e1e5b1e5a1e581e551e541e531e521e501e4e1e4d1e4b1e481e471e45]))) ((.branch 4 (.leaf #[0x1ea81ea71ea61ea11ea01e9f1e9e1e9d1e9c1e9b1e9a1e981e951e941e931e911e8d1e8c1e8b1e8a1e881e861e831e811e801e7f1e7e1e7d1e7c1e7b1e7a1e78, 0x1ee61ee51ee31ee21ee11ee01edf1ed71ed61ed51ed31ed21ed11ed01ec81ec41ec31ec21ec01ebf1ebe1ebc1eba1eb71eb51eb41eb31eb21eb11eaf1eae1eac, 0x1f361f351f251f1f1f1a1f181f151f131f0f1f0c1f0a1f091f061f051f041f021f011f001efe1efc1ef91ef71ef61ef51ef41ef31eec1eeb1eea1ee91ee81ee7, 0x1f871f861f841f831f811f801f7f1f7d1f7b1f751f741f711f701f6f1f6c1f6b1f681f661f651f641f5d1f5b1f591f571f521f501f481f461f431f391f381f37]) (.leaf #[0x1fbc1fba1fb81fb71fb61fb51fb31fb21fb11fb01fae1fad1fac1fab1fa81fa71fa41fa31fa11f9f1f9e1f9b1f981f971f951f921f911f8e1f8d1f8c1f891f88, 0x1fed1fec1feb1fe71fe61fe41fe21fe11fdd1fdb1fd71fd61fd31fd21fd11fd01fcf1fce1fcd1fcc1fcb1fca1fc81fc71fc61fc51fc31fc21fc11fc01fbf1fbe, 0x20172015201220112010200e200d200c200b200a20082006200520032002200120001fff1ffe1ffd1ffb1ffa1ff91ff81ff71ff61ff51ff41ff21ff11ff01fee, 0x204d204c204b2049204820472046204220412040203f203e203c203b203a203720362034203320312030202e202d20272026202520242023202220212020201e]))))) ((.branch 8 ((.branch 4 (.leaf #[0x208d20842083207e207d207c207b2079207720742073207220712070206f206e206d206c2060205f205e205d205c205a2058205620552054205220512050204f, 0x20d220d120d020ce20cd20cc20ca20c820c520c320c220c120ac20a420a320a220a1209f209e209d209c209b209a2099209820972095209420922090208f208e, 0x2104210321022101210020fa20f920f820f720f520f420f320f020ef20ed20ec20eb20e920e620e520e420e320e220e120e020de20dd20db20da20d920d820d7, 0x213421332130212f212d212b212a21262125212221212120211e211d211c211b2119211821152114211321122111210f210e210d210c210b210a210921072106]) (.leaf #[0x21612160215f215e215d215c2158215621542153215221512150214d214c214b214a21492148214721462145214421412140213e213d213b213a213921372136, 0x21912190218f218e218b218a218921882187218621852184218221812180217f217e217d217b217921772175217421732172216e216d216c216a216921662165, 0x21bc21bb21ba21b921b821b721b621b521b321b221b121b021ae21ad21ac21ab21a821a621a321a221a1219e219d219c219b2199219821972196219521942192, 0x21f121f021ee21ed21ec21eb21e821e721e621e421e321e221dc21db21d821d721d621d421d321d221d121cf21ce21cd21cc21ca21c921c521c421c321be21bd]))) ((.branch 4 (.leaf #[0x22232221221f221e221d221c221b22182217221622132212220f220e220b220a22082205220422032202220021ff21fd21fc21fb21f921f821f721f621f321f2, 0x224c224b224a22482247224622452244224322422240223f223e223c223b22382237223622352234223322322231222f222e222d222c222a2229222822272225, 0x229822922291228d228c227a2279227622752274227322712270226f226e226c226a226822672266225d225b22592258225722562255225222512250224f224d, 0x230d230c230b230a230522ef22ea22e922e822e722e522e422e322e222e122de22dd22c022bf22ae22ad22ac22ab22a922a822a722a622a422a3229e229c2299]) (.leaf #[0x238223812380237f237e237d237c23792378237723762375234d234c234a2331233023272326231f231e231d231c2318231723162314231323112310230f230e, 0x23bd23bc23b423b323a823a723a623a523a423a223a123a0239f239e239d239b239a239923982397239623952394239323912390238e238c238b238a23892383, 0x23ee23ed23ec23eb23e923e723e423e223e123e023df23de23dd23dc23db23d923d823d723d623d523d423d223d023cf23cb23ca23c923c823c723c623c423c3, 0x243d243c243724362434242c242b242a2429242724252423242224212420241a241924182417241524142413241223ff23fe23fc23fb23f923f623f523f423f2]))))))))))) ((.branch 64 ((.branch 32 ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x2470246f246e246d246c246b246a2468246724652463246224612460245b245a24582457245524512450244f244e244d244c244b244a2449244824462441243f, 0x24c624c424c324c224c124bf24be24bd24bc24bb24b724b224ae24ad249924982493249224912490248f248e248d248c248b248a248924872475247424722471, 0x24fe24fc24fb24fa24f824f624f524f424f324f224f124ee24ec24e824e724e624e324e024df24db24da24d924d824d724d324ce24cd24cb24ca24c924c824c7, 0x25322530252f252e252d252c252825272523252225212520251e251d251c251a2519251825172510250e250c250b250a250925062505250325022501250024ff]) (.leaf #[0x25612560255f255d255c255b2559255825572556255325522550254f254e254d254c254b254925462544254225412540253f253b253a25372536253525342533, 0x259225912590258f258d258c258b25892588258725862581257d257c257a2579257825772576257525712570256f256e256d256c256825672566256525632562, 0x25c725c625c525c425c325c225c125b925b825b725b525b325b225af25aa25a925a825a725a625a525a325a225a125a0259f259d259c259b2599259825972596, 0x260025ff25fe25fa25f925f725f625f425f325f225f125f025ef25ec25eb25ea25e925e725e625e525e325e225e125e025da25d925d825d625d525d425d125d0]))) ((.branch 4 (.leaf #[0x2680267c267b264d264c264b264a26492647264626452643264226412640263c2638263726242613260f260e260d260c260a2609260826072605260426032601, 0x26c226c126c026be26bd26bc26bb26b826b726b526b326b226ae26ad26a0269f269c2695269426932692268f268d268c268b268a268726862685268426822681, 0x270527042703270226fd26f826f726f626f426f326f226f026ee26eb26e826e726e626dd26dc26d926d526d426d326d226ce26cd26cc26ca26c726c626c526c4, 0x27512750274c274a272e272d272b272a27292728272727262724272327222721271f271e271c271a27192718271727132710270e270c270b270a270927072706]) (.leaf #[0x278f278c278b278a2789278627832780277927742773277227712770276d276c276b27642763276227612760275e275d275c275b275a27582757275527532752, 0x27c827c727c627c527c427bf27be27bd27bc27bb27ba27b727b627ac27ab27a727a627a527a427a327a127a0279f279e279d279c279b279a2798279727922791, 0x2834283328322830282f282e282d282a2829280327f727f627f527f127ef27ed27eb27ea27e927e527e227de27dc27da27d727d627d127cd27cc27cb27ca27c9, 0x289428932892288d288c288b288a28892886288528842883288228812880286c286b286a2864286128602858285728552850284f284d284b2848284728392835]))))) ((.branch 8 ((.branch 4 (.leaf #[0x28d228cb28c428c328c128c028bf28be28bd28bc28bb28ba28b628b528b328b228af28ae28aa28a928a828a728a628a528a328a228a1289f289d289b28972896, 0x28fd28fb28fa28f928f828f728f628f528f228f128f028ef28ed28ec28ea28e928e828e728e628e528e328e228e128df28de28dd28dc28d828d728d528d428d3, 0x293429332930292c2928292729262925292229212920291e291d291c291a29182915291329122911290f290e290d290b29092908290729042903290028ff28fe, 0x297429712970296f296e296c296b29692968296729652964296329622961295b295429532951294e294b2947294629452944293e293d293c293b293a29362935]) (.leaf #[0x29b729b129b029af29ad29ac29ab29a929a829a329a0299f299e299d299c299a29992998299729962993298f2985298229812980297f297d297b297a29772976, 0x2a0029ff29fe29fd29fa29f929f829f729f629f529f329f229f129ef29ee29ed29ec29e629e129e029de29dd29d529d429d329d229d129cf29ce29cc29c829c7, 0x2a3a2a392a382a372a362a352a332a322a312a302a2f2a2b2a2a2a252a232a202a1f2a1e2a172a162a152a142a122a112a0d2a0c2a0b2a0a2a082a052a022a01, 0x2a6b2a6a2a692a662a652a642a632a612a602a5f2a5d2a5c2a5b2a5a2a562a552a532a522a4e2a4c2a4b2a4a2a492a482a472a452a412a402a3f2a3e2a3d2a3c]))) ((.branch 4 (.leaf #[0x2aa62aa42aa32aa22aa12a922a912a902a8f2a8d2a8c2a8b2a8a2a882a872a862a842a832a822a812a802a7f2a7c2a7a2a772a762a752a742a722a712a6d2a6c, 0x2b082b072b052b042b032b022b012afe2af72af52af32af12aec2aea2ae32ae12ade2ad42ad22acf2ace2acd2abd2ab22ab12aaf2aae2aad2aac2aab2aa92aa8, 0x2b512b4b2b482b472b452b412b402b3f2b3e2b3d2b3a2b332b2f2b2b2b2a2b282b272b262b252b242b222b202b1f2b1c2b152b142b132b112b0e2b0d2b0c2b0b, 0x2b912b902b8f2b8e2b8a2b892b882b872b862b842b812b802b7f2b7e2b7d2b7b2b7a2b792b742b712b702b6d2b6b2b6a2b672b652b622b612b602b5d2b5c2b55]) (.leaf #[0x2bc92bc72bc62bc42bc12bc02bbf2bbe2bbc2bbb2bb92bb82bb72bb42bb32bb22bb12bb02baa2ba82ba52ba42ba32ba22ba02b9f2b9e2b9d2b9c2b982b962b92, 0x2c3a2c382c372c352c342c332c322c312c2f2c2e2c2d2c0f2c0a2c082c052c032bff2bfd2be42be32be12bdf2bde2bdd2bdb2bd92bd32bd22bcf2bce2bcd2bca, 0x2c8d2c8b2c882c872c862c852c832c822c812c802c7f2c7c2c782c752c712c702c6d2c6c2c6b2c6a2c692c682c672c652c452c442c422c402c3e2c3d2c3c2c3b, 0x2cc22cc12cc02cbf2cbe2cbd2cbc2cbb2cba2cb72cb62cb42cb32cb22caf2cad2ca62ca52ca42ca32ca12ca02c9e2c9d2c9c2c9b2c9a2c972c962c952c942c8f]))))))) ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x2cf42cf32cf22cf12cee2cec2ceb2cea2ce92ce82ce62ce52ce42ce32ce22cdf2cdd2cdc2cd92cd82cd52cd42cd32cd22cd12ccf2ccd2ccb2cca2cc92cc82cc7, 0x2d2e2d2d2d2c2d2a2d282d252d232d222d212d202d1f2d1e2d1c2d1a2d162d142d122d112d102d0e2d0c2d062d052d022d012d002cfe2cfd2cfb2cfa2cf82cf5, 0x2d992d962d952d932d902d8f2d8e2d862d842d802d7b2d7a2d712d6b2d692d662d632d602d5f2d5e2d5d2d4d2d472d422d402d3c2d392d382d352d322d312d30, 0x2dcd2dc92dc12dc02dbf2dbe2dbd2db92db82db42db32db22db12db02daf2dae2dad2dac2dab2da92da82da62da52da32da22da12da02d9f2d9d2d9c2d9b2d9a]) (.leaf #[0x2e032e022e002dff2dfe2dfd2dfc2dfb2dfa2df92df72df52df32df22df12def2dea2de52de42de32de12ddf2dde2ddc2ddb2dda2dd92dd72dd52dd22dd12dd0, 0x2e562e552e542e532e522e492e352e302e2e2e2c2e2a2e282e242e1f2e1d2e1c2e1b2e182e172e162e142e132e122e102e0e2e0b2e092e082e072e062e052e04, 0x2e952e942e902e8f2e8d2e8b2e8a2e862e842e802e7f2e7c2e7b2e7a2e792e762e752e712e702e6f2e6e2e6d2e6c2e682e662e622e612e602e5b2e5a2e592e58, 0x2ec42ec32ec22ec12ec02ebc2eb92eb72eb42eb32eb22eb12eaf2eae2ead2eab2eaa2ea92ea82ea52ea42ea22ea12ea02e9f2e9e2e9d2e9b2e9a2e992e972e96]))) ((.branch 4 (.leaf #[0x2f112f102f0f2f0d2f0c2f0b2f092f082f072f062f012f002eff2efd2efb2ef92ef82ef32ee92ee82ed62ed52ed32ed22ed12ed02ecf2ece2ec92ec82ec72ec6, 0x2f4b2f472f462f432f422f3e2f3d2f3c2f3b2f392f372f362f342f322f312f2d2f2c2f272f262f252f242f232f222f212f202f1f2f1d2f192f182f172f152f12, 0x2fbd2fbc2fb72fa72fa62f942f912f8f2f8e2f852f822f802f7e2f7c2f7a2f762f752f6e2f6d2f6b2f6a2f662f652f642f632f622f612f5d2f5c2f5a2f592f4d, 0x300b300a30083007300530043003300230012ffe2ffd2ffa2ff92ff72ff62ff52ff42ff02fef2fec2feb2fea2fe82fe72fe62fe42fe22fdf2fdd2fdc2fdb2fbe]) (.leaf #[0x303c303b303a303630353033302f302d302a30293028302730253024302330213020301f301e301a30193017301630153014301330123010300f300e300d300c, 0x309730963095309330923090308f308e3078307730753074307330723071306f306b306a3069306730533051304d304b304630453044304330413040303f303d, 0x30c930c830c730c430c330c230c130be30bd30bc30bb30ba30b930b830b630b530b330b230b130b030af30ab30a730a630a530a430a230a130a0309f309e3098, 0x3104310331023101310030f830f630f230f130f030ef30eb30ea30e930e730e430e330e230e130df30de30dd30db30da30d930d830d430d330d130cf30cb30ca]))))) ((.branch 8 ((.branch 4 (.leaf #[0x3174317331723171316f316c316931683167316631653164315f315e31593154315331513150314e314d314c314b314a3142313c313b3124311a31183115310b, 0x31b031ae31ac31aa31a931a831a731a631a431a331a231a131a0319c319b319a3199319731963195319431933190318b318931853184317e317d317c31793178, 0x31e831e731e531e431e231dc31d931d731d431d331d131d031cf31ce31cb31ca31c931c731c631c531c331c131be31bc31bb31ba31b931b831b431b331b231b1, 0x322432213220321d321c321a321732163215321432123211320f320e320d320a32093208320732043203320031ff31fe31fd31fb31fa31f831f631f531f431f3]) (.leaf #[0x32553254325232513250324d324c324832473246324532443243324232413240323f323d323c323b323a32383236323532323230322d322c322b322732263225, 0x3290328f328e328d328c32883287328632853283327f327d327c327b327a32773276327432733270326e326a326932663265326432613260325e325b325a3257, 0x32c432c332c232c032bf32bc32ba32b932b832b732b432b332b232b132af32ad32ab32a932a832a732a632a232a0329f329e329d329c329b3295329432933292, 0x3308330533043302330132f632ee32ec32eb32e832e732e532e432e232e032de32dc32db32da32d932d532d432d332d232d032cf32ce32cd32cc32c732c632c5]))) ((.branch 4 (.leaf #[0x33333330332e332d332c332b332a332933273326332533243323332233213320331f331d331c331b331a331933183316331433123310330f330e330d330a3309, 0x33e233e133e033df33de33dc33db33da33d933d833d133d033cd33ca33c933c733c533c333c133c033bf33be338f338e338d333d333c333b3337333633353334, 0x3448344734463441343f343e343b343a3437343634343433342a3427342434233422342134203418341734163410340f3401340033ff33fd33fc33e733e633e5, 0x3475347234713470346f346d346c346b346a346934683467346634653463345f345e345d345c345a345834553453345234513450344e344d344c344b344a3449]) (.leaf #[0x34bf34bd34b934b834b634b434b334b234b134b034af34ae34ac34ab34a934a834a734a634a534a0349f349e349c349b349a34983496349334913490348f3476, 0x34f634f434f034ef34ee34ed34ec34eb34ea34e934e834e634e534e434e334e134df34de34dc34da34d834d634d534d434d334ce34cd34cc34ca34c934c734c5, 0x353335323531352f352e352d352c352b352735263520351f351735143513351235113510350e350d350c350b350a35083506350535033501350034fe34fc34fa, 0x356f356e356d356935683567356635643562355f355e355d355535543550354f354e354b354a354935473543354235413540353e353b35383537353635353534]))))))))) ((.branch 32 ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x35e135dc35da35d835d735d635d435d335d235b535aa35a0359635953594359335923590358f358d358a35863582358135803577357635753574357335713570, 0x361e361d361c361b36183617361536123611360e360d360c360b36093608360736053604360135fe35fd35fc35fb35fa35f935f835f735f635f535f035ef35e2, 0x381b38173816381538143813381238113810380e380d380a38083807380537f637eb37e937e737e337e237df37de37dc37da37d937cd3624362336223621361f, 0x38a0389838973896389438933867386638623861385f385e385d385a385938583857384638453830382f382e382d382b382a382938273826382538243820381c]) (.leaf #[0x39173915391439133912390e390d390c390b3908390738ff38fe38eb38cf38ce38ca38c238c038bf38be38bd38bb38b838b738b538b438a738a638a338a238a1, 0x39a539a139a0399c398139753974396d396c396b396a39693968395d393d39363934393339323929392839273925392239213920391f391d391c391a39193918, 0x3a693a683a673a5a3a583a563a553a543a533a493a483a463a3f3a3d3a3c3a3b3a343a303a2f3a2c39b639b539b339b239b039ae39ad39ac39ab39aa39a939a7, 0x3af93af73af33af23aef3aee3aec3aeb3aea3ae93ac03abf3abe3abc3ab93ab63ab53ab43ab23aad3aa63aa53aa43aa33a9e3a9d3a9c3a993a983a973a923a86]))) ((.branch 4 (.leaf #[0x3b9f3b9e3b9d3b9c3b9b3b9a3b993b963b913b8f3b8e3b8d3b8b3b7b3b783b773b763b753b743b713b663b653b643b633b613b603b5f3b5e3b5d3b003aff3afd, 0x3c213c1d3bdd3bdc3bdb3bda3bd83bd73bd63bd53bd43bd13bd03bcd3bcc3bca3bc93bc53bc33bbf3bbe3bbb3bb83bb53bb43bb33ba63ba53ba43ba23ba13ba0, 0x3d333d313d303d2f3d2e3d2a3d293d283d273d263d243c3f3c3e3c3d3c3c3c3a3c393c373c363c303c2f3c2e3c2d3c2c3c2b3c2a3c283c273c253c243c233c22, 0x3db43db23db03daf3dae3da83da13d843d803d7f3d7b3d7a3d783d773d763d743d733d723d713d703d6f3d6e3d6b3d3f3d3e3d3b3d3a3d393d383d373d353d34]) (.leaf #[0x3dec3deb3de53de43de33de23de13de03ddd3dd93dd83dd63dd53dd13dd03dcf3dcc3dcb3dca3dc93dc83dc43dc33dc23dc13dbf3dbe3dbd3dbb3dba3db93db8, 0x3e1c3e1b3e1a3e193e163e153e133e123e103e0f3e0e3e0d3e0c3e0b3e0a3e083e073e053e043e033e023e013dfc3dfb3dfa3df83df73df63df43df23def3ded, 0x40033fff3ffe3ffc3ffb3fd63fd53fd03fcf3fce3fcc3fca3fc63fc43f923f913f903f8e3f8d3f8c3f8a3f893f843f7d3f1e3f1d3f1c3f1b3f1a3f183ee63e1e, 0x40ee40ed40eb40d040cb40ca40c840c740c340c240c140c040be40bc40b940b840b740b640b540b440b340b240b14097407b40794075400a4009400840074005]))))) ((.branch 8 ((.branch 4 (.leaf #[0x412541244123411e411c411b41194118411541144111410f410e410c410b410a4108410741064105410441034101410040ff40fe40fd40f740f540f240f140ef, 0x415941584155415441534150414f414e414d414941484147414641454144414341424141413f413d413c413a4138413741344132412f412e4129412841274126, 0x419f419d419c419b419a419941984194418c418a41884187418641854180417f417e417c417b417a41794178417741764172416a41664165416441634161415f, 0x41ea41e041d941d841d741d641d541cd41cb41c841c741c241c141c041bf41b741b541b341b241b141b041ad41ac41a941a741a641a541a441a341a241a141a0]) (.leaf #[0x425c425b425a4259425842554253424f424e424b424a424942474246424542434241423e423c423b423a421d421c421b421a4218421742164215421441ef41ed, 0x42ad42ac42aa429d429442934290428f428b428a42884287428642844283427f427e426f426e426d426c426b42694267426642654264426342624261425f425e, 0x4384438343824380437f437d437c4378435b435a4359435743554354433a42ed42ec42ea42e942e842e242e042df42c842c742c242be42bd42ba42b442b342b1, 0x43cd43cc43cb43ca43c943c743c643c543c443c243bd43bb43b943b843b543b443b343b143a0439e439c4399439843974393438f438e438c438a438843864385]))) ((.branch 4 (.leaf #[0x4470446f445b4420441f441e441c441b4410440f440e440a4401440043fd43f643f543f443f343f143f043ee43ec43eb43ea43e943e543e443e243d443d043cf, 0x451f451e451d451c451b451a45194517451645154514451345124510450e450c450845074506450445034502450144fe44ab44a5449d44894479447544724471, 0x4673466f466e466d466c466b466a4669466846664665466246614660465f465745d945d845ce4590458f458e458d457c457545744573454b4549452745264523, 0x47184717470d470c470b470a47094708470747064705470347024701470046ff46fc46fb46f846f646f246f146d646cb469f469e469d469c4697468b46814674]) (.leaf #[0x4787478547844783478247814780477e4760475b4759475647544750474e474d474a472e472d472b472a4729472747264725472447234722471d471b471a4719, 0x495349524951494e4890488f488a48894886488548724870486f486d486b48674866486248614860485f485d485a485947ca47c847c247c147be47a947a84788, 0x498d498c498949854984498349824981497f497e497d497c497b4979497849774975497449724970496e496c496b496a49694964496349624958495749564954, 0x49c449c349c249c149bf49be49bd49bc49ba49b949b749b349b149b049af49ae49ac49ab49aa49a949a849a449a2499e499c49984997499349914990498f498e]))))))) ((.branch 16 ((.branch 8 ((.branch 4 (.leaf #[0x4a194a174a134a0d4a0c49f249f149f049ee49ed49ec49eb49e949e849e549e449e349e249e149d949d749d349d249d049cf49ce49cd49cb49ca49c949c849c6, 0x4ab24ab04aae4aac4aaa4aa94aa84aa74aa24aa14aa04a9e4a9d4a9b4a9a4a454a444a414a404a3f4a3e4a3c4a3b4a394a384a374a354a344a334a324a304a1d, 0x4ae04adf4add4adc4ada4ad84ad64ad44ad34ad24ad14ad04acd4acc4acb4ac84ac74ac54ac44ac34ac24ac14ac04abf4abc4aba4ab94ab84ab74ab54ab44ab3, 0x4b0f4b0e4b0b4b094b084b074b064b044b034b024b014aff4afd4afb4af94af84af74af64af24af14af04aed4aec4aea4ae94ae84ae74ae64ae54ae44ae34ae1]) (.leaf #[0x4b824b814b7f4b7e4b7d4b7c4b7b4b764b754b744b724b714b704b6e4b6c4b694b674b664b654b484b474b464b454b434b424b414b404b174b164b124b114b10, 0x4bd24bd14bd04bcd4bcc4bc94bc74bc64bc44bc34bc24bc14bbf4bbe4baf4bae4bad4bab4baa4ba94ba74ba64b8f4b8e4b8c4b8a4b894b884b874b864b854b84, 0x4c244c234c204c1f4c1b4c1a4c194c184c164c134c104c0f4c0e4c0d4c0c4c0b4c0a4c094c074c064c054c044c034c024c014c004bff4bf84bf74bdf4bd84bd6, 0x4c604c5f4c5c4c5b4c5a4c594c574c554c534c4f4c4e4c4d4c4b4c4a4c494c484c474c434c424c414c404c3e4c3d4c3c4c3b4c3a4c374c324c304c2c4c2b4c25]))) ((.branch 4 (.leaf #[0x4c9e4c994c984c964c954c944c934c924c914c8f4c8e4c8d4c8c4c8b4c884c874c854c824c804c7c4c7a4c794c774c764c754c724c714c6e4c6c4c684c674c61, 0x4ce84ce34ce24ce14cdf4cde4cdd4cdb4cd94cd64cd44cd34cd24cb54cb44cb34cb24cb04caf4cae4cad4cac4cab4caa4ca94ca84ca64ca54ca34ca14ca04c9f, 0x4d404d3d4d3c4d3a4d254d244d234d214d204d1f4d1d4d1c4d014d004cfe4cfd4cfc4cfb4cf94cf74cf64cf54cf44cf34cf24cf14cef4cee4cec4ceb4cea4ce9, 0x4d754d734d6f4d6e4d6c4d6b4d6a4d654d644d634d624d604d5f4d5e4d5c4d5b4d5a4d594d554d524d514d4d4d4c4d4b4d4a4d494d474d464d454d444d434d41]) (.leaf #[0x4dbe4dbc4dbb4dba4db94db84db64db54db44db34db24db14dac4daa4da84da74da44da34da24da14da04d994d924d8e4d8c4d884d874d864d844d7f4d7e4d76, 0x4df84df74df54df44df34df24df14df04def4ded4dec4deb4dea4de94de84de74de64de54de44de34de24de04ddf4ddd4ddb4dda4dd94dd84dd44dd34dd14dbf, 0x4e2a4e274e264e254e234e224e214e1f4e1d4e1a4e184e174e164e154e144e134e124e114e104e0f4e0e4e084e074e064e044e014e004dff4dfe4dfc4dfb4df9, 0x4f6b4f6a4f694f684f674f664f654f634f5e4f5c4f454f414f404f3f4f3b4f3a4f394f384f374f364f354f344f324f314f2a4e544e384e364e334e314e2d4e2b]))))) ((.branch 8 ((.branch 4 (.leaf #[0x4fc14fc04fbf4fa24fa14fa04f9f4f9d4f9c4f9b4f9a4f994f974f964f944f904f8f4f8e4f8c4f8b4f894f834f814f7d4f7c4f734f724f704f6f4f6e4f6d4f6c, 0x4ff44ff24ff04fef4fee4fed4fe94fe84fe64fe44fe34fe24fe14fe04fdf4fde4fdc4fdb4fd94fd84fd74fd64fd54fd04fcf4fce4fcc4fcb4fca4fc84fc64fc3, 0x5119511851135111510d510c510b510a5108510751055101510050e650e550e450e250e150df50cd50cc50ca50c750c6503650354ffc4ffa4ff94ff84ff74ff5, 0x51d551d351cd51cc51c651c551c451c351c251c151c051bd51bc51bb51ba51b951b351b151b051ae5197514a5149513351305122511f511e511d511c511b511a]) (.leaf #[0x5222521f521e5211520f520d520c520b520a520952075206520552045201520051f951f851f751f551f451f351f251f151f051ee51eb51e951db51da51d751d6, 0x528d528a528852875286528552845283528252635262526152605258523b523a52395237523652345230522f522d522c522b5229522852275226522552245223, 0x55e255df55de55dd55dc55da55d955d855d755d655d5540b537453735372537053585356533953385336533553335331533053245320531253115310530e528f, 0x567d567c567b56795678567756765675567256715670566f566656655664566356615660565d565c565b565a5621561d561a56155614561256115610560f55e3]))) ((.branch 4 (.leaf #[0x570f570e570d570b570957065704570357025701570056ff56fb56f956f856f656f556f256ef56de56dd56d956d856d756d656d556d056cf56ce56c356c2567e, 0x577857765773577257715770576e576d576c5769576857655764576357615760575f575e575d575a5757572e5727572557235721571d57175716571357125711, 0x5a055a045a0059ff59fe59fd59fb59f659f45922591b591a5918591358cc58c55893582a582957e757e657e557e457d757d657ac57a85782577e577d577c5779, 0x62a0617c61756174616261616160615f5f645f635f125efb5e755ceb5cea5ce45a5d5a545a535a525a475a465a425a415a405a115a105a0f5a0e5a0c5a0b5a09]) (.leaf #[0x62e662e462e362e262e162e062db62da62d962d762d662d562d362d162ce62cc62cb62ca62c462c362c262c062bf62ba62ae62ad62a762a662a562a462a362a1, 0x66ed66ec66eb66e966e866e666e466e3669b66976696667b6677661865f865b1656d656a64c162f862f762f662f562f462ef62ee62ed62ec62eb62ea62e962e7, 0x67cb678e67846783678067776776677567616756674a674867446743674267416740673f673d673c673b673a6739673467336730672f672e672d672b672a6715, 0x6da06d9f6d906d5d6c466c456a356a346a2a694368936892683e683d683b683a67f867d167cc])))))))))))) def policyFixedCompact1Rename (i : Nat) : Nat := (((policyFixedCompact1VariableTable.get 0 (i / 32)) >>> (16 * (i % 32))) &&& 0xffff).succ end Bounty end PolicySubmissionPart32 /- Component PolicyBitsetRUP; SHA256 3e36aef493889c462d0915c2e758fcfdfddf9fc7592dff332c6d1634f658292e. -/ section PolicySubmissionPart33 /- Signed-clause unit propagation with ordinary natural-number bit masks. -/ namespace Bounty abbrev PolicyBitState := Nat × Nat def policyBitValid (P : Nat → Prop) (s : PolicyBitState) : Prop := (∀ i, s.1.testBit i = true → P i) ∧ (∀ i, s.2.testBit i = true → ¬P i) def policyBitFalse (s : PolicyBitState) (z : Int) : Bool := if 0 < z then s.2.testBit z.natAbs else s.1.testBit z.natAbs def policyBitAddTrue (s : PolicyBitState) (z : Int) : PolicyBitState := if 0 < z then (s.1 ||| 2 ^ z.natAbs, s.2) else (s.1, s.2 ||| 2 ^ z.natAbs) def policyBitAddFalse (s : PolicyBitState) (z : Int) : PolicyBitState := if 0 < z then (s.1, s.2 ||| 2 ^ z.natAbs) else (s.1 ||| 2 ^ z.natAbs, s.2) def policyBitFalse_sound P s z (hv : policyBitValid P s) (h : policyBitFalse s z = true) : ¬policySignedHolds P z := by by_cases hz : 0 < z · simp only [policyBitFalse, policySignedHolds, if_pos hz] at h ⊢ exact hv.2 _ h · simp only [policyBitFalse, policySignedHolds, if_neg hz] at h ⊢ exact not_not_intro (hv.1 _ h) def policyBitAddTrue_valid P s z (hv : policyBitValid P s) (hz : policySignedHolds P z) : policyBitValid P (policyBitAddTrue s z) := by by_cases hp : 0 < z · simp only [policySignedHolds, if_pos hp] at hz unfold policyBitValid policyBitAddTrue rw [if_pos hp] refine ⟨?_, hv.2⟩ intro i hi simp only [Nat.testBit_or, Nat.testBit_two_pow, Bool.or_eq_true, decide_eq_true_eq] at hi rcases hi with hi | hi · exact hv.1 _ hi · simpa only [← hi] using hz · simp only [policySignedHolds, if_neg hp] at hz unfold policyBitValid policyBitAddTrue rw [if_neg hp] refine ⟨hv.1, ?_⟩ intro i hi simp only [Nat.testBit_or, Nat.testBit_two_pow, Bool.or_eq_true, decide_eq_true_eq] at hi rcases hi with hi | hi · exact hv.2 _ hi · simpa only [← hi] using hz def policyBitAddFalse_valid P s z (hv : policyBitValid P s) (hz : ¬policySignedHolds P z) : policyBitValid P (policyBitAddFalse s z) := by classical by_cases hp : 0 < z · simp only [policySignedHolds, if_pos hp] at hz unfold policyBitValid policyBitAddFalse rw [if_pos hp] refine ⟨hv.1, ?_⟩ intro i hi simp only [Nat.testBit_or, Nat.testBit_two_pow, Bool.or_eq_true, decide_eq_true_eq] at hi rcases hi with hi | hi · exact hv.2 _ hi · simpa only [← hi] using hz · simp only [policySignedHolds, if_neg hp, not_not] at hz unfold policyBitValid policyBitAddFalse rw [if_neg hp] refine ⟨?_, hv.2⟩ intro i hi simp only [Nat.testBit_or, Nat.testBit_two_pow, Bool.or_eq_true, decide_eq_true_eq] at hi rcases hi with hi | hi · exact hv.1 _ hi · simpa only [← hi] using hz def policyBitStart : List Int → PolicyBitState | [] => (0, 0) | z :: zs => policyBitAddFalse (policyBitStart zs) z def policyBitStart_valid P c (h : ¬policySignedClauseHolds P c) : policyBitValid P (policyBitStart c) := by induction c with | nil => simp [policyBitStart, policyBitValid] | cons z zs ih => apply policyBitAddFalse_valid · apply ih rintro ⟨w, hw, hp⟩ exact h ⟨w, List.mem_cons_of_mem _ hw, hp⟩ · intro hz exact h ⟨z, List.mem_cons_self, hz⟩ def policyBitAdvance (db : Nat → List Int) : List Nat → PolicyBitState → Bool | [], _ => false | h :: hs, s => match (db h).filter (fun z => !policyBitFalse s z) with | [] => true | [z] => policyBitAdvance db hs (policyBitAddTrue s z) | _ => policyBitAdvance db hs s def policyBitAdvance_sound db hs P s (hv : policyBitValid P s) (hc : ∀ i ∈ hs, policySignedClauseHolds P (db i)) (h : policyBitAdvance db hs s = true) : False := by induction hs generalizing s with | nil => simp [policyBitAdvance] at h | cons i hs ih => have hh : ∀ j ∈ hs, policySignedClauseHolds P (db j) := fun j hj => hc j (List.mem_cons_of_mem _ hj) have hex : ∃ z ∈ (db i).filter (fun z => !policyBitFalse s z), policySignedHolds P z := by obtain ⟨z, hz, hp⟩ := hc i List.mem_cons_self refine ⟨z, List.mem_filter.mpr ⟨hz, ?_⟩, hp⟩ cases hb : policyBitFalse s z with | false => rfl | true => exact False.elim (policyBitFalse_sound P s z hv hb hp) cases he : (db i).filter (fun z => !policyBitFalse s z) with | nil => simp only [he, List.not_mem_nil, false_and, exists_false] at hex | cons z zs => cases zs with | nil => have hz : policySignedHolds P z := by simpa only [he, List.mem_singleton, exists_eq_left] using hex exact ih (policyBitAddTrue s z) (policyBitAddTrue_valid P s z hv hz) hh (by simpa only [policyBitAdvance, he] using h) | cons w ws => exact ih s hv hh (by simpa only [policyBitAdvance, he] using h) def policyBitRUP (db : Nat → List Int) (c : List Int) (hints : List Nat) : Bool := policyBitAdvance db hints (policyBitStart c) def policyBitRUP_sound db c hints P (hc : ∀ i ∈ hints, policySignedClauseHolds P (db i)) (h : policyBitRUP db c hints = true) : policySignedClauseHolds P c := by classical by_contra hn exact policyBitAdvance_sound db hints P (policyBitStart c) (policyBitStart_valid P c hn) hc h end Bounty end PolicySubmissionPart33 /- Component PolicyBitsetComposition; SHA256 8c0f44e6588620fe556ebc89f7b3eba71195198e58de51caca92fbc5672e6554. -/ section PolicySubmissionPart34 /- Well-founded composition of directly checked bitset RUP clauses. -/ namespace Bounty def policyBitActionGood (db : Nat → List Int) (i : Nat) (hints : List Nat) : Bool := hints.all (fun j => decide (0 < j ∧ j < i)) && policyBitRUP db (db i) hints def policyBitActionGood_sound db i hints P (h : policyBitActionGood db i hints = true) (hi : ∀ j, 0 < j → j < i → policySignedClauseHolds P (db j)) : policySignedClauseHolds P (db i) := by simp only [policyBitActionGood, Bool.and_eq_true, List.all_eq_true, decide_eq_true_eq] at h exact policyBitRUP_sound db (db i) hints P (fun j hj => hi j (h.1 j hj).1 (h.1 j hj).2) h.2 def policyBitGraph_sound (db : Nat → List Int) (initialBound limit : Nat) (hints : Nat → List Nat) (P : Nat → Prop) (hc : ∀ i, initialBound ≤ i → i < limit → policyBitActionGood db i (hints i) = true) (hi : ∀ i, 0 < i → i < initialBound → policySignedClauseHolds P (db i)) : ∀ i, 0 < i → i < limit → policySignedClauseHolds P (db i) := by intro i induction i using Nat.strong_induction_on with | h i ih => intro hip hil by_cases hlt : i < initialBound · exact hi i hip hlt apply policyBitActionGood_sound db i (hints i) P (hc i (Nat.le_of_not_gt hlt) hil) intro j hj hji exact ih j hji hj (lt_trans hji hil) def policyBitGraph_false (db : Nat → List Int) (initialBound limit root : Nat) (hints : Nat → List Nat) (P : Nat → Prop) (hc : ∀ i, initialBound ≤ i → i < limit → policyBitActionGood db i (hints i) = true) (hi : ∀ i, 0 < i → i < initialBound → policySignedClauseHolds P (db i)) (hr : 0 < root) (hrl : root < limit) (he : db root = []) : False := by have hh := policyBitGraph_sound db initialBound limit hints P hc hi root hr hrl rw [he] at hh simpa [policySignedClauseHolds] using hh def policyIntervalJoin (P : Nat → Prop) (a b c : Nat) (hl : ∀ i, a ≤ i → i < b → P i) (hr : ∀ i, b ≤ i → i < c → P i) : ∀ i, a ≤ i → i < c → P i := by intro i hia hic by_cases hib : i < b · exact hl i hia hib · exact hr i (Nat.le_of_not_gt hib) hic end Bounty end PolicySubmissionPart34 /- Component PolicyRUPBlocks; SHA256 4b281604ceee69ad8abed4e56bc15041643593573b343cc91c3a6e7fce3c3eaf. -/ section PolicySubmissionPart35 /- Finite RUP blocks with an explicit model-preservation theorem. -/ namespace Bounty open Std.Sat Std.Tactic.BVDecide.LRAT Std.Tactic.BVDecide.LRAT.Internal end Bounty end PolicySubmissionPart35 /- Component PolicyRUPBoundary; SHA256 0624fd4b0479c269aaa70229e81f9bb0f7f0a2ce369788d9f2c967cf5b21a234. -/ section PolicySubmissionPart36 /- Signed boundary clauses of a sparse RUP block and explicit variable renaming. -/ namespace Bounty open Std.Sat Std.Tactic.BVDecide.LRAT Std.Tactic.BVDecide.LRAT.Internal def policyRenameLiteral (σ : Nat → Nat) (z : Int) : Int := if 0 < z then (σ z.natAbs : Int) else -(σ z.natAbs : Int) def policySignedHolds_rename (P : Nat → Prop) (σ : Nat → Nat) (hσ : ∀ i, 0 < σ i) (z : Int) : policySignedHolds P (policyRenameLiteral σ z) ↔ policySignedHolds (fun i => P (σ i)) z := by have hpos : (0 : Int) < (σ z.natAbs : Int) := by exact_mod_cast hσ z.natAbs have hn : σ z.natAbs ≠ 0 := Nat.ne_of_gt (hσ z.natAbs) by_cases hz : 0 < z · simp [policyRenameLiteral, policySignedHolds, hz, hn] · simp [policyRenameLiteral, policySignedHolds, hz, hn, not_lt_of_ge (le_of_lt hpos)] def policySignedClauseHolds_rename (P : Nat → Prop) (σ : Nat → Nat) (hσ : ∀ i, 0 < σ i) (cs : List Int) : policySignedClauseHolds P (cs.map (policyRenameLiteral σ)) ↔ policySignedClauseHolds (fun i => P (σ i)) cs := by simp only [policySignedClauseHolds, List.mem_map, exists_exists_and_eq_and, policySignedHolds_rename P σ hσ] end Bounty end PolicySubmissionPart36 /- Component PolicyClauseReindex; SHA256 118589b8c2cd35ae9e899e411a3804d2ba500459d2266275a5473af6154944b5. -/ section PolicySubmissionPart37 /- One shared positive variable renaming for an entire Boolean refutation. -/ namespace Bounty def policyClauseRename_model (small dense : Nat → List Int) (σ : Nat → Nat) (P : Nat → Prop) (hσ : ∀ i, 0 < σ i) (i : Nat) (hm : (small i).map (policyRenameLiteral σ) = dense i) (hi : policySignedClauseHolds P (dense i)) : policySignedClauseHolds (fun j => P (σ j)) (small i) := by apply (policySignedClauseHolds_rename P σ hσ (small i)).mp rwa [hm] end Bounty end PolicySubmissionPart37 /- Component PolicyMappedDatabases; SHA256 c8cf262e1f40fd4f208feb1ab02668d8c8b26db280365f6606208b41a1ad1f41. -/ section PolicySubmissionPart38 /- Dense semantic clauses defined directly by the positive compact-variable map. -/ namespace Bounty def policyMappedDatabase0 (i : Nat) : List Int := (policyFixedCompact0Db i).map (policyRenameLiteral policyFixedCompact0Rename) def policyMappedDatabase1 (i : Nat) : List Int := (policyFixedCompact1Db i).map (policyRenameLiteral policyFixedCompact1Rename) def policyMappedDatabase0_model (P : Nat → Prop) (i : Nat) (h : policySignedClauseHolds P (policyMappedDatabase0 i)) : policySignedClauseHolds (fun v => P (policyFixedCompact0Rename v)) (policyFixedCompact0Db i) := policyClauseRename_model policyFixedCompact0Db policyMappedDatabase0 policyFixedCompact0Rename P (fun _ => Nat.succ_pos _) i rfl h def policyMappedDatabase1_model (P : Nat → Prop) (i : Nat) (h : policySignedClauseHolds P (policyMappedDatabase1 i)) : policySignedClauseHolds (fun v => P (policyFixedCompact1Rename v)) (policyFixedCompact1Db i) := policyClauseRename_model policyFixedCompact1Db policyMappedDatabase1 policyFixedCompact1Rename P (fun _ => Nat.succ_pos _) i rfl h end Bounty end PolicySubmissionPart38 /- Component PolicyMappedCircuitChecked0; SHA256 4a6490050d398169f56d49c65a1b8046d0f5cb47a45d53b7e34e28c4d4afb188. -/ section PolicySubmissionPart39 namespace PolicyMappedCircuitChecked0 open ClosureCircuit ClosureSemantics Bounty def test (start count : Nat) : Bool := checkCircuitBlock (boundedProgram ClosureFixedWidthData0.program) policyMappedDatabase0 PolicyCircuitPacked0.records start count def checked0 : test 0 32 = true := by decide +kernel def checked1 : test 32 32 = true := by decide +kernel def checked2 : test 64 32 = true := by decide +kernel def checked3 : test 96 32 = true := by decide +kernel def checked4 : test 0x80 32 = true := by decide +kernel def checked5 : test 0xa0 32 = true := by decide +kernel def checked6 : test 0xc0 32 = true := by decide +kernel def checked7 : test 0xe0 32 = true := by decide +kernel def checked8 : test 0x100 32 = true := by decide +kernel def checked9 : test 0x120 32 = true := by decide +kernel def checked10 : test 0x140 32 = true := by decide +kernel def checked11 : test 0x160 32 = true := by decide +kernel def checked12 : test 0x180 32 = true := by decide +kernel def checked13 : test 0x1a0 32 = true := by decide +kernel def checked14 : test 0x1c0 32 = true := by decide +kernel def checked15 : test 0x1e0 32 = true := by decide +kernel def checked16 : test 0x200 32 = true := by decide +kernel def checked17 : test 0x220 32 = true := by decide +kernel def checked18 : test 0x240 32 = true := by decide +kernel def checked19 : test 0x260 32 = true := by decide +kernel def checked20 : test 0x280 32 = true := by decide +kernel def checked21 : test 0x2a0 32 = true := by decide +kernel def checked22 : test 0x2c0 32 = true := by decide +kernel def checked23 : test 0x2e0 32 = true := by decide +kernel def checked24 : test 0x300 32 = true := by decide +kernel def checked25 : test 0x320 32 = true := by decide +kernel def checked26 : test 0x340 32 = true := by decide +kernel def checked27 : test 0x360 32 = true := by decide +kernel def checked28 : test 0x380 32 = true := by decide +kernel def checked29 : test 0x3a0 32 = true := by decide +kernel def checked30 : test 0x3c0 32 = true := by decide +kernel def checked31 : test 0x3e0 32 = true := by decide +kernel def checked32 : test 0x400 32 = true := by decide +kernel def checked33 : test 0x420 32 = true := by decide +kernel def checked34 : test 0x440 32 = true := by decide +kernel def checked35 : test 0x460 32 = true := by decide +kernel def checked36 : test 0x480 32 = true := by decide +kernel def checked37 : test 0x4a0 32 = true := by decide +kernel def checked38 : test 0x4c0 32 = true := by decide +kernel def checked39 : test 0x4e0 32 = true := by decide +kernel def checked40 : test 0x500 32 = true := by decide +kernel def checked41 : test 0x520 32 = true := by decide +kernel def checked42 : test 0x540 32 = true := by decide +kernel def checked43 : test 0x560 32 = true := by decide +kernel def checked44 : test 0x580 32 = true := by decide +kernel def checked45 : test 0x5a0 32 = true := by decide +kernel def checked46 : test 0x5c0 32 = true := by decide +kernel def checked47 : test 0x5e0 32 = true := by decide +kernel def checked48 : test 0x600 32 = true := by decide +kernel def checked49 : test 0x620 32 = true := by decide +kernel def checked50 : test 0x640 32 = true := by decide +kernel def checked51 : test 0x660 32 = true := by decide +kernel def checked52 : test 0x680 32 = true := by decide +kernel def checked53 : test 0x6a0 32 = true := by decide +kernel def checked54 : test 0x6c0 32 = true := by decide +kernel def checked55 : test 0x6e0 32 = true := by decide +kernel def checked56 : test 0x700 32 = true := by decide +kernel def checked57 : test 0x720 32 = true := by decide +kernel def checked58 : test 0x740 32 = true := by decide +kernel def checked59 : test 0x760 32 = true := by decide +kernel def checked60 : test 0x780 32 = true := by decide +kernel def checked61 : test 0x7a0 32 = true := by decide +kernel def checked62 : test 0x7c0 32 = true := by decide +kernel def checked63 : test 0x7e0 32 = true := by decide +kernel def checked64 : test 0x800 32 = true := by decide +kernel def checked65 : test 0x820 32 = true := by decide +kernel def checked66 : test 0x840 32 = true := by decide +kernel def checked67 : test 0x860 32 = true := by decide +kernel def checked68 : test 0x880 32 = true := by decide +kernel def checked69 : test 0x8a0 32 = true := by decide +kernel def checked70 : test 0x8c0 32 = true := by decide +kernel def checked71 : test 0x8e0 32 = true := by decide +kernel def checked72 : test 0x900 32 = true := by decide +kernel def checked73 : test 0x920 32 = true := by decide +kernel def checked74 : test 0x940 32 = true := by decide +kernel def checked75 : test 0x960 32 = true := by decide +kernel def checked76 : test 0x980 32 = true := by decide +kernel def checked77 : test 0x9a0 32 = true := by decide +kernel def checked78 : test 0x9c0 32 = true := by decide +kernel def checked79 : test 0x9e0 32 = true := by decide +kernel def checked80 : test 0xa00 32 = true := by decide +kernel def checked81 : test 0xa20 32 = true := by decide +kernel def checked82 : test 0xa40 32 = true := by decide +kernel def checked83 : test 0xa60 32 = true := by decide +kernel def checked84 : test 0xa80 32 = true := by decide +kernel def checked85 : test 0xaa0 32 = true := by decide +kernel def checked86 : test 0xac0 32 = true := by decide +kernel def checked87 : test 0xae0 32 = true := by decide +kernel def checked88 : test 0xb00 32 = true := by decide +kernel def checked89 : test 0xb20 32 = true := by decide +kernel def checked90 : test 0xb40 32 = true := by decide +kernel def checked91 : test 0xb60 32 = true := by decide +kernel def checked92 : test 0xb80 32 = true := by decide +kernel def checked93 : test 0xba0 32 = true := by decide +kernel def checked94 : test 0xbc0 32 = true := by decide +kernel def checked95 : test 0xbe0 32 = true := by decide +kernel def checked96 : test 0xc00 32 = true := by decide +kernel def checked97 : test 0xc20 32 = true := by decide +kernel def checked98 : test 0xc40 32 = true := by decide +kernel def checked99 : test 0xc60 32 = true := by decide +kernel def checked100 : test 0xc80 32 = true := by decide +kernel def checked101 : test 0xca0 32 = true := by decide +kernel def checked102 : test 0xcc0 32 = true := by decide +kernel def checked103 : test 0xce0 32 = true := by decide +kernel def checked104 : test 0xd00 32 = true := by decide +kernel def checked105 : test 0xd20 32 = true := by decide +kernel def checked106 : test 0xd40 32 = true := by decide +kernel def checked107 : test 0xd60 32 = true := by decide +kernel def checked108 : test 0xd80 32 = true := by decide +kernel def checked109 : test 0xda0 32 = true := by decide +kernel def checked110 : test 0xdc0 32 = true := by decide +kernel def checked111 : test 0xde0 32 = true := by decide +kernel def checked112 : test 0xe00 32 = true := by decide +kernel def checked113 : test 0xe20 32 = true := by decide +kernel def checked114 : test 0xe40 32 = true := by decide +kernel def checked115 : test 0xe60 32 = true := by decide +kernel def checked116 : test 0xe80 32 = true := by decide +kernel def checked117 : test 0xea0 32 = true := by decide +kernel def checked118 : test 0xec0 32 = true := by decide +kernel def checked119 : test 0xee0 32 = true := by decide +kernel def checked120 : test 0xf00 32 = true := by decide +kernel def checked121 : test 0xf20 32 = true := by decide +kernel def checked122 : test 0xf40 32 = true := by decide +kernel def checked123 : test 0xf60 32 = true := by decide +kernel def checked124 : test 0xf80 32 = true := by decide +kernel def checked125 : test 0xfa0 32 = true := by decide +kernel def checked126 : test 0xfc0 32 = true := by decide +kernel def checked127 : test 0xfe0 32 = true := by decide +kernel def checked128 : test 0x1000 32 = true := by decide +kernel def checked129 : test 0x1020 32 = true := by decide +kernel def checked130 : test 0x1040 32 = true := by decide +kernel def checked131 : test 0x1060 32 = true := by decide +kernel def checked132 : test 0x1080 32 = true := by decide +kernel def checked133 : test 0x10a0 32 = true := by decide +kernel def checked134 : test 0x10c0 32 = true := by decide +kernel def checked135 : test 0x10e0 32 = true := by decide +kernel def checked136 : test 0x1100 32 = true := by decide +kernel def checked137 : test 0x1120 32 = true := by decide +kernel def checked138 : test 0x1140 32 = true := by decide +kernel def checked139 : test 0x1160 32 = true := by decide +kernel def checked140 : test 0x1180 32 = true := by decide +kernel def checkedRange0 : ∀ i : Nat, 0 ≤ i → i < 32 → test (32 * i) (min 32 (0x11a0 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked0 · exact checked1 · exact checked2 · exact checked3 · exact checked4 · exact checked5 · exact checked6 · exact checked7 · exact checked8 · exact checked9 · exact checked10 · exact checked11 · exact checked12 · exact checked13 · exact checked14 · exact checked15 · exact checked16 · exact checked17 · exact checked18 · exact checked19 · exact checked20 · exact checked21 · exact checked22 · exact checked23 · exact checked24 · exact checked25 · exact checked26 · exact checked27 · exact checked28 · exact checked29 · exact checked30 · exact checked31 def checkedRange32 : ∀ i : Nat, 32 ≤ i → i < 64 → test (32 * i) (min 32 (0x11a0 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked32 · exact checked33 · exact checked34 · exact checked35 · exact checked36 · exact checked37 · exact checked38 · exact checked39 · exact checked40 · exact checked41 · exact checked42 · exact checked43 · exact checked44 · exact checked45 · exact checked46 · exact checked47 · exact checked48 · exact checked49 · exact checked50 · exact checked51 · exact checked52 · exact checked53 · exact checked54 · exact checked55 · exact checked56 · exact checked57 · exact checked58 · exact checked59 · exact checked60 · exact checked61 · exact checked62 · exact checked63 def checkedRange64 : ∀ i : Nat, 64 ≤ i → i < 96 → test (32 * i) (min 32 (0x11a0 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked64 · exact checked65 · exact checked66 · exact checked67 · exact checked68 · exact checked69 · exact checked70 · exact checked71 · exact checked72 · exact checked73 · exact checked74 · exact checked75 · exact checked76 · exact checked77 · exact checked78 · exact checked79 · exact checked80 · exact checked81 · exact checked82 · exact checked83 · exact checked84 · exact checked85 · exact checked86 · exact checked87 · exact checked88 · exact checked89 · exact checked90 · exact checked91 · exact checked92 · exact checked93 · exact checked94 · exact checked95 def checkedRange96 : ∀ i : Nat, 96 ≤ i → i < 0x80 → test (32 * i) (min 32 (0x11a0 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked96 · exact checked97 · exact checked98 · exact checked99 · exact checked100 · exact checked101 · exact checked102 · exact checked103 · exact checked104 · exact checked105 · exact checked106 · exact checked107 · exact checked108 · exact checked109 · exact checked110 · exact checked111 · exact checked112 · exact checked113 · exact checked114 · exact checked115 · exact checked116 · exact checked117 · exact checked118 · exact checked119 · exact checked120 · exact checked121 · exact checked122 · exact checked123 · exact checked124 · exact checked125 · exact checked126 · exact checked127 def checkedRange128 : ∀ i : Nat, 0x80 ≤ i → i < 0x8d → test (32 * i) (min 32 (0x11a0 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked128 · exact checked129 · exact checked130 · exact checked131 · exact checked132 · exact checked133 · exact checked134 · exact checked135 · exact checked136 · exact checked137 · exact checked138 · exact checked139 · exact checked140 def checkedAll : ∀ i : Nat, 0 ≤ i → i < 0x8d → test (32 * i) (min 32 (0x11a0 - 32 * i)) = true := (Bounty.policyIntervalJoin _ 0 64 0x8d (Bounty.policyIntervalJoin _ 0 32 64 checkedRange0 checkedRange32) (Bounty.policyIntervalJoin _ 64 96 0x8d checkedRange64 (Bounty.policyIntervalJoin _ 96 0x80 0x8d checkedRange96 checkedRange128))) def checked (i : Fin 0x8d) : test (32 * i.val) (min 32 (0x11a0 - 32 * i.val)) = true := by exact checkedAll i.val (Nat.zero_le _) i.isLt def sound (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData0.program) input values) (i : Nat) (hi : i < 0x11a0) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase0 ((PolicyCircuitPacked0.records i).headD 0)) := by have hb : i / 32 < 0x8d := by omega have hw : i % 32 < min 32 (0x11a0 - 32 * (i / 32)) := by omega have h := checkCircuitBlock_sound (boundedProgram ClosureFixedWidthData0.program) input values he policyMappedDatabase0 PolicyCircuitPacked0.records (32 * (i / 32)) (min 32 (0x11a0 - 32 * (i / 32))) (checked ⟨i / 32, hb⟩) (i % 32) hw have hid : 32 * (i / 32) + i % 32 = i := by omega simpa only [hid] using h end PolicyMappedCircuitChecked0 end PolicySubmissionPart39 /- Component PolicyMappedRewriteParametricChecked0; SHA256 939851e280be1a1867c2575bacf05df34ecaccd0b77f2104e2e5637f1a51bdfc. -/ section PolicySubmissionPart40 namespace PolicyMappedRewriteParametricChecked0 open ClosurePattern ClosureSemantics Bounty def test (start count : Nat) : Bool := checkSchemaBlock (boundedProgram ClosureFixedWidthData0.program) policyMappedDatabase0 PolicyRewriteParametricPacked0.records start count def checked0 : test 0 32 = true := by decide +kernel def checked1 : test 32 32 = true := by decide +kernel def checked2 : test 64 32 = true := by decide +kernel def checked3 : test 96 32 = true := by decide +kernel def checked4 : test 0x80 32 = true := by decide +kernel def checked5 : test 0xa0 32 = true := by decide +kernel def checked6 : test 0xc0 32 = true := by decide +kernel def checked7 : test 0xe0 32 = true := by decide +kernel def checked8 : test 0x100 32 = true := by decide +kernel def checked9 : test 0x120 32 = true := by decide +kernel def checked10 : test 0x140 32 = true := by decide +kernel def checked11 : test 0x160 32 = true := by decide +kernel def checked12 : test 0x180 32 = true := by decide +kernel def checked13 : test 0x1a0 32 = true := by decide +kernel def checked14 : test 0x1c0 32 = true := by decide +kernel def checked15 : test 0x1e0 32 = true := by decide +kernel def checked16 : test 0x200 32 = true := by decide +kernel def checked17 : test 0x220 32 = true := by decide +kernel def checked18 : test 0x240 32 = true := by decide +kernel def checked19 : test 0x260 32 = true := by decide +kernel def checked20 : test 0x280 32 = true := by decide +kernel def checked21 : test 0x2a0 32 = true := by decide +kernel def checked22 : test 0x2c0 32 = true := by decide +kernel def checked23 : test 0x2e0 32 = true := by decide +kernel def checked24 : test 0x300 32 = true := by decide +kernel def checked25 : test 0x320 32 = true := by decide +kernel def checked26 : test 0x340 32 = true := by decide +kernel def checked27 : test 0x360 32 = true := by decide +kernel def checked28 : test 0x380 32 = true := by decide +kernel def checked29 : test 0x3a0 32 = true := by decide +kernel def checked30 : test 0x3c0 32 = true := by decide +kernel def checked31 : test 0x3e0 32 = true := by decide +kernel def checked32 : test 0x400 32 = true := by decide +kernel def checked33 : test 0x420 32 = true := by decide +kernel def checked34 : test 0x440 32 = true := by decide +kernel def checked35 : test 0x460 32 = true := by decide +kernel def checked36 : test 0x480 32 = true := by decide +kernel def checked37 : test 0x4a0 32 = true := by decide +kernel def checked38 : test 0x4c0 32 = true := by decide +kernel def checked39 : test 0x4e0 32 = true := by decide +kernel def checked40 : test 0x500 32 = true := by decide +kernel def checked41 : test 0x520 32 = true := by decide +kernel def checked42 : test 0x540 32 = true := by decide +kernel def checked43 : test 0x560 32 = true := by decide +kernel def checked44 : test 0x580 32 = true := by decide +kernel def checked45 : test 0x5a0 32 = true := by decide +kernel def checked46 : test 0x5c0 32 = true := by decide +kernel def checked47 : test 0x5e0 32 = true := by decide +kernel def checked48 : test 0x600 32 = true := by decide +kernel def checked49 : test 0x620 32 = true := by decide +kernel def checked50 : test 0x640 32 = true := by decide +kernel def checked51 : test 0x660 32 = true := by decide +kernel def checked52 : test 0x680 32 = true := by decide +kernel def checked53 : test 0x6a0 32 = true := by decide +kernel def checked54 : test 0x6c0 32 = true := by decide +kernel def checked55 : test 0x6e0 32 = true := by decide +kernel def checked56 : test 0x700 32 = true := by decide +kernel def checked57 : test 0x720 32 = true := by decide +kernel def checked58 : test 0x740 32 = true := by decide +kernel def checked59 : test 0x760 32 = true := by decide +kernel def checked60 : test 0x780 32 = true := by decide +kernel def checked61 : test 0x7a0 32 = true := by decide +kernel def checked62 : test 0x7c0 32 = true := by decide +kernel def checked63 : test 0x7e0 32 = true := by decide +kernel def checked64 : test 0x800 32 = true := by decide +kernel def checked65 : test 0x820 32 = true := by decide +kernel def checked66 : test 0x840 32 = true := by decide +kernel def checked67 : test 0x860 32 = true := by decide +kernel def checked68 : test 0x880 32 = true := by decide +kernel def checked69 : test 0x8a0 32 = true := by decide +kernel def checked70 : test 0x8c0 32 = true := by decide +kernel def checked71 : test 0x8e0 32 = true := by decide +kernel def checked72 : test 0x900 32 = true := by decide +kernel def checked73 : test 0x920 32 = true := by decide +kernel def checked74 : test 0x940 32 = true := by decide +kernel def checked75 : test 0x960 32 = true := by decide +kernel def checked76 : test 0x980 32 = true := by decide +kernel def checked77 : test 0x9a0 32 = true := by decide +kernel def checked78 : test 0x9c0 32 = true := by decide +kernel def checked79 : test 0x9e0 32 = true := by decide +kernel def checked80 : test 0xa00 32 = true := by decide +kernel def checked81 : test 0xa20 32 = true := by decide +kernel def checked82 : test 0xa40 32 = true := by decide +kernel def checked83 : test 0xa60 32 = true := by decide +kernel def checked84 : test 0xa80 32 = true := by decide +kernel def checked85 : test 0xaa0 32 = true := by decide +kernel def checked86 : test 0xac0 32 = true := by decide +kernel def checked87 : test 0xae0 32 = true := by decide +kernel def checked88 : test 0xb00 32 = true := by decide +kernel def checked89 : test 0xb20 32 = true := by decide +kernel def checked90 : test 0xb40 32 = true := by decide +kernel def checked91 : test 0xb60 32 = true := by decide +kernel def checked92 : test 0xb80 32 = true := by decide +kernel def checked93 : test 0xba0 32 = true := by decide +kernel def checked94 : test 0xbc0 32 = true := by decide +kernel def checked95 : test 0xbe0 32 = true := by decide +kernel def checked96 : test 0xc00 32 = true := by decide +kernel def checked97 : test 0xc20 32 = true := by decide +kernel def checked98 : test 0xc40 32 = true := by decide +kernel def checked99 : test 0xc60 32 = true := by decide +kernel def checked100 : test 0xc80 32 = true := by decide +kernel def checked101 : test 0xca0 12 = true := by decide +kernel def checkedRange0 : ∀ i : Nat, 0 ≤ i → i < 32 → test (32 * i) (min 32 (0xcac - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked0 · exact checked1 · exact checked2 · exact checked3 · exact checked4 · exact checked5 · exact checked6 · exact checked7 · exact checked8 · exact checked9 · exact checked10 · exact checked11 · exact checked12 · exact checked13 · exact checked14 · exact checked15 · exact checked16 · exact checked17 · exact checked18 · exact checked19 · exact checked20 · exact checked21 · exact checked22 · exact checked23 · exact checked24 · exact checked25 · exact checked26 · exact checked27 · exact checked28 · exact checked29 · exact checked30 · exact checked31 def checkedRange32 : ∀ i : Nat, 32 ≤ i → i < 64 → test (32 * i) (min 32 (0xcac - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked32 · exact checked33 · exact checked34 · exact checked35 · exact checked36 · exact checked37 · exact checked38 · exact checked39 · exact checked40 · exact checked41 · exact checked42 · exact checked43 · exact checked44 · exact checked45 · exact checked46 · exact checked47 · exact checked48 · exact checked49 · exact checked50 · exact checked51 · exact checked52 · exact checked53 · exact checked54 · exact checked55 · exact checked56 · exact checked57 · exact checked58 · exact checked59 · exact checked60 · exact checked61 · exact checked62 · exact checked63 def checkedRange64 : ∀ i : Nat, 64 ≤ i → i < 96 → test (32 * i) (min 32 (0xcac - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked64 · exact checked65 · exact checked66 · exact checked67 · exact checked68 · exact checked69 · exact checked70 · exact checked71 · exact checked72 · exact checked73 · exact checked74 · exact checked75 · exact checked76 · exact checked77 · exact checked78 · exact checked79 · exact checked80 · exact checked81 · exact checked82 · exact checked83 · exact checked84 · exact checked85 · exact checked86 · exact checked87 · exact checked88 · exact checked89 · exact checked90 · exact checked91 · exact checked92 · exact checked93 · exact checked94 · exact checked95 def checkedRange96 : ∀ i : Nat, 96 ≤ i → i < 0x66 → test (32 * i) (min 32 (0xcac - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked96 · exact checked97 · exact checked98 · exact checked99 · exact checked100 · exact checked101 def checkedAll : ∀ i : Nat, 0 ≤ i → i < 0x66 → test (32 * i) (min 32 (0xcac - 32 * i)) = true := (Bounty.policyIntervalJoin _ 0 64 0x66 (Bounty.policyIntervalJoin _ 0 32 64 checkedRange0 checkedRange32) (Bounty.policyIntervalJoin _ 64 96 0x66 checkedRange64 checkedRange96)) def checked (i : Fin 0x66) : test (32 * i.val) (min 32 (0xcac - 32 * i.val)) = true := by exact checkedAll i.val (Nat.zero_le _) i.isLt def sound (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData0.program) input values) (i : Nat) (hi : i < 0xcac) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase0 ((PolicyRewriteParametricPacked0.records i).headD 0)) := by have hb : i / 32 < 0x66 := by omega have hw : i % 32 < min 32 (0xcac - 32 * (i / 32)) := by omega have h := checkSchemaBlock_sound (boundedProgram ClosureFixedWidthData0.program) input values he policyMappedDatabase0 PolicyRewriteParametricPacked0.records (32 * (i / 32)) (min 32 (0xcac - 32 * (i / 32))) (checked ⟨i / 32, hb⟩) (i % 32) hw have hid : 32 * (i / 32) + i % 32 = i := by omega simpa only [hid] using h end PolicyMappedRewriteParametricChecked0 end PolicySubmissionPart40 /- Component PolicyArithmeticPacked0; SHA256 6a4ce32fc3c2b916dd90f54f2635b2d0b1922464a0bbbf429a1b2a49fd710849. -/ section PolicySubmissionPart41 /- Untrusted packed arithmetic leaves for the shortened Boolean certificate. -/ namespace PolicyArithmeticPacked0 open PackedNatTable def tableLLL : Table Block := .leaf #[ ⟨0x13208e04181e60da06102bc14209304281bc0b604d01f80ac030000, 0x420410810029f3072f420a7e46004bba0420400810029ec0a79820a7c86004bb904204008100296804297d14112ecc10810020400a4e029680a59830a5bc7044bad0410400810810020800a4e010a5945044bac0420400810029280429311c012ea410810400029231c012e9810810400028fd1c012e9410810400028f81c012e8810810020400a39028b10828ea1c012df010810420400c28b10828b928012dd810810400028b01c012dd410810400028ab1c012dc810810020400c287108287928012db0108100204007fcc107fdc5044b6204104008108100208007fb0107fc85044b61⟩, ⟨0x15509704602140f407303481880b604b82100dc05802100b002c000, 0x11040c1084004042c220b2ec2cb10b1e840b1982bfd0c30b3988004c7c042040081002c660aff420b2f07004c760420410000b2c87004c73042041081002c3c0aff420b1906004c660420410000b0e07004c63042041081002bfd0c20b08c6004c3d0420410000afe07004c3c0420410000afcc7004c390420410400c10afa02bb10aeac30ab942ba7090180130e010810420400ab9410afa47004c34042041081002ae50ae9c20aefc6004c30042041081002b780add820adf87004c280420400810029e60abe820acb06004bf6042041081002afa072f420ac807004bf1042041081002aeb07c9c20abc47004bec041040081002a390a7cc20aa986004bea⟩, ⟨0x18b0ba84f424e111075835418409c04301c80c805602000a8028000, 0x10810020400b9942d21082e771c0133f82c471621858850b1102005042e740b5f02d3f0b9a82d720b5b42c372880b4e02e650b4848110200133f410810420400b9942d21082e6b1c0133e010810020400add82bf9082e39180133d810c1081041004042dfd0b4bc2d2a0c2d210b4802a390c2e221c0133bc10810020400a8e42d21082dfe180133b010810020400a8e410b7a47004ce00430420410401010b6f02cfe0b4a830add82cfa0a8e430b6f47004cbb042040081002a390add820b6e86004cba0420400810080b4e020b5f4a004cb10420410000b5cc7004cb00420410000b5b87004cad042040081002d210b4e020b5806004cab042040081002d210b48020b49c6004ca7042040081002b760b3e820b3fc6004ca60420400810030afe420b3c0a004ca0⟩, ⟨0x1910bf05ac2b013108c04141da0d706082800dc05802100b002c000, 0x10410020400e4c810e6e85044dba0420410810039320439b2141136d010810420400e4c810e6bc5044db20430420410401010e6a039730e5b039701039370e4e439320d0141136c410810420400e4e439320e4dc30e6a47044db004204008100393704397414113698104100204204008200393904396f1411369410810420400e2c81e650838b8180135d010810420400bbac2ae5082f70180135801081041003042ef40aba820bbac2ae60ab9430bca86004d390440430420410401410aea82f200bca82f280bc9050ab942eec0bbac2ef60ae9c5406004d31042041081002ef60bbb020bc846004d30042041081002ef60bbac20bbf06004d2f042041081002eeb0ab9820bbd46004d2e042040081002ae60abac20bad86004d26042040081002b780add820ba8c7004d22⟩, ⟨0x1b40d086202e012608803e81ce0d104381e40c604d01b80a4026000, 0x42041081003bfe043c331411399410810420400efc03bfe0e4dc30f0947044e3f0410400810810020800efc010eff45044e3e1880470460451841820410402010ef983af40eee82ffd0eeb03af20e0b038ee0ed9c9079942ff90e0a438280bbd82eec0eacc7406004e3c0420410810038280799420ef9c6004e36042041081003ab30799420eeec7004e31042040081003829043bad1c0138b010810020400bbb03ab3083b681801389812011811441040c1081044008043af40ebc83aea0eabc3aaa0e7b82ffd0e3b838b7243aab0e7a42ff90bbd82eec0e2c81e651d0180138841081040003af31c01388010810420400eaac1e65083aeb1c0137ec10810020400bbb03aab083ab0180137c410810020400e3bc28a3083aa21c0137b01081040003a6c1c0137a410810020400e8bc3a24083a611c01379010810020400e7a410e7bc7004dbd⟩, ⟨0x1d20d006482fe1690a984201be0c905a827c11207602780f004c000, 0x440430420410401410f4e83af40bff43d2c0f4d43d2a182ff90ab942ef60bbac4406004eb60420410000f4ec7004eb3042040081002ae5043d361c013ac810810020400ab942ba7083d3418013ac410810020400bbac2ae5083d3218013ac012011c11811411010c1081041009043d2c0bff43d2a0f4a03d230f49c3af4143d25242ef60bbac2ae50ae9c2ff90c2c3c0aff48406004eaf0430420410401010bca82efb0aea830bbd82eeb0ab942ba7102f2314013ab810810020400bbd82eeb083d2b18013ab410810020400aff43083d2918013ab010810020400b0f02bfd083d2618013aac10810020400ae9c2c3c083d2418013aa810810420400eff810f3bc5044ea40430420410401010f09039730f3a83bfb1039370eff83bf00d014113a8c10810420400bfe410f29c5004e75042040081002ef60bbb020f2906004e740430420410401010e5cc3c320f09030efc03bfe0e4dc30efe45044e71⟩, ⟨0x17c0b7058029a13709484541fe0e904f81e00c804e02000a802c000, 0x420410000fca07004f620420410000fc8c7004f3f042040081003ebb043eef1c013cd810810020400faec3e7b083ee418013ccc1081040003eb71c013cc01081002040203e77083ea928013ca810810020400f9ec3e77083ea118013ca410810020400bbac2ae6083e6718013c9412011c11811411010c1081041009043d2c0f4a83da30f49c3db5283dab0ebd080bbd82eeb0ab942ba70f3e83da6202ff9202ffc14013c8c11030c1083004043e380f8b43e230f7b040f6e03da62030f8e88004eff042041081003da62020f8e46004efe042040081003db80f69820f8b87004ef80420410000f8907004ef5042040081003cfa0f69820f6d86004ee8042040081003da62020f6b06004ee4042040081002ba70f3e820f6906004ee2⟩, ⟨0x1960c005a82a814609804241e60dd05b02801180760300128068000, 0x420410810029ec07c9c2124dc6004ff3042040081002ae60bae02124b06004fee042041081002eb807c9c2124847004fe9042041000123ec7004fe8041040081003ebb0a7b02120fc6004fba0430420410401010fccc3fa90fafc3f61103ebb0fbd83f360d01c013ec010810020400f9a83e77083ff51c013ea410810020400f9ec3e6a083feb18013e9810c1081041004043ebf0f9b83fbc0fb8c40f9a83ebb0f9ec3407004fa3041040081003ef60fcd820fe906004f750420410810030a1c420fe80a004f74042040081003f360a1c420fdd47004f6e042040081003ef60a1c420fdb46004f6d042040081003ef60fcd820fd886004f69042040081003ebb0fbd820fcd06004f662452442420412401410fc9c3f220fb8c3ebf0fad83ea0283ea8203ebb0f9ec80f9dc4408004f63⟩, ⟨0x1b20ce06182e615d0a3848421c0fb07102f015209603e81940a4000, 0x42040081004a6612ae0212b886005868042040081004a66128fc212ad46005865042040081004a67044a791c0160fc10810020401299c4a66084a6d180160f01081002040128fc4a3e084a65180160ec10c10810410040449f8127d849f40c3cba1269c49a60c4971141160dc10810020401269c1127e450458360420410810049a60449f7141160d410810020400f2e849a7126983127d47045834043042041040101127c849bb126b430f2e849a71269831268c50458330420410810049a70449f3141160c81081002040126981126f05045828042041081003cba1269c49a60c49ae1c1160881041002042040082003cba0449a51411608410810420400f2e81125e45044ffe0491080470460450441021010402410ebd02ba6124ac49200f4a83e66123e8483e0faf82ffd282eb807c9c2eeb0ab9829ec0faec2ff90bbd88406004ffc⟩ ] def tableLLR : Table Block := .leaf #[ ⟨0x1c50d686682a0106078034417c0a804901f00cc05001d009002c000, 0x1041002042040082004ca5044cb2141163b01081042040129fc11328050058e90480470461041031020410402010eba84b7712a8c3af20eeb0382c0ef984aa412eb490eaac38290e0a01e65129fc4a7b12dc874060058e51881871860450440430420412010e7b83aaa0e2dc4aa412a8c4bad0eee84c3b0ebc890e7a438b2129fc4a7b079944b720eacc74060058e1042040081004b720eacc2130f060058e00420410400c1130b84ba912cd031299c4a66090180162f810810420401299c1130c470058bb042041081004a67129982130b460058ba042041081004a7a1299c212fd060058b0042040081004a7b129e8212ee060058a6042040081004a7b12dc8212eb860058a3042040081004b720eaac212de0600587c042041081004a7a12db0212dc4600587b042041081004b2a0b0f0212cfc700587504204100012cdc7005874042040081004a3f12ca8212cc86005873⟩, ⟨0x1b90d186342ee1610a704b022c10006702900fc06b02900b0032000, 0x108100204012db02eb8084e2e180165b81081002040129e84b6c084e29180165b41081002040129e84a67084e27180165b0108100204012ae04a34084df3180165841081042040132941137c050459600420410400c1136dc4de1136ec3129e84a7b12dc8340600593e042041081004a7b129e82136f46005938042041081004a7b12dc82136f0600593704404304204104014112f904db6130b04dad12dc051299c4a7b129984a7a12db0540600593604304204104010112fcc4c2c136b44db6104a67129984a7b129e84406005933043042041040101133ac49f6133a43132944cb3126983132c050458f7042040081004cb3044cec141163d81081002040132944cb3126983133a870458f50430420410401011339c49bb132e43132944cb3126983132b850458f4042041081004cb3044ce8141163cc1081042040132944cb3126983132e870458ed⟩, ⟨0x15309e849c2220fb072833c1780a604801e80c804e01c00a8028000, 0x1081042040161d83e7b0858eb1c0167fc1081042040162ac58760858bc1c0167e410810420400f9ec3e6a0858b5180167e01081002040161dc58ab0858b3180167dc1081002040161dc587608587d180167cc1081042040124e01f27084ff1180166fc108100204013e88113ea070059b5042040081004b6c0abac213df460059b3042041081004f3c069b4213d8870059ae042040081004f3513cbc213cec60059ad042041081004df4128d0213bec70059a5042040081004ab8137d0213bc060059a1042041081004a340f3e8213b94700597c04204100013af8700597b042040081002d200b4e0213acc70059750420410810080b4e0213ab0a005974⟩, ⟨0x1a70ca05f82d015209604141de0d906182b412e08103580a802c000, 0x1081042040169b01169c87005aa1042040081002b2f072f42168e07005a7c0420410810029f3168c42168d86005a7b042041081002b2f072f42168a87005a76043042041040101164804fbe162883161dc4fa2161d83167d87005a71043042041040101166e85962164f44fbe10593f1648c4fa20d01c0169b81081002040164fc3ef60859e51c0169a410810020401648c593f0859bb180169981081042040165ac3ef608597e1c0168ec10810420400fcd828710859761c0168e810810020401648c596b085974180168e4108100204013e88592308593e180168d4108100204013e885877085921180168a922462061821431030c60458f40ffd048fa162d03dec163c858a20fc9c3f220f88ca0f9dc3e6a203e7b161d85408005a260420410810080f9dc2163d4a005a250420400810058760f9ec2163cc7005a24⟩, ⟨0x1660ac052826c12008503d01bc0c805902440de05902180d402c000, 0x4204100016ff87005b2504204100016fe47005b2204204008100316ee4216faca005afc042040081005bb016ee4216f8c6005afb042040081005bb016ebc216ed86005af8042041081005b38066b4216eb47005af7042040081005afc16d94216e906005af1042040081005afc16ce0216de86005aee0420410810029f316bf0216cbc6005ae10420410400c116b945aec085a6c168c45aae0c5ab118016af01081041003045ab116b8c5aed0c5a6c168c45aae0d018016aec1081042040168c45aae085af218016ad81081042040168c45a6c085ae418016ac41081040005aa51c016aa81081041003045a7c169cc5a3f0c5a6c168ec2407005aa9042041081005a6c168ec2169f46005aa5⟩, ⟨0x12808904101dc0da06602f816009c04401c80b804e02000b002c000, 0x42040081005cf8172f82175b07005b78042041000175a87005b77042040081005c70170cc21758c7005b76042041081008170cc217584a005b75042041000174f07005b72042041000174cc7005b71042041000174b87005b6e042040081008172f82174a4a005b6d042041081008172f8217398a005b62042040081005c28171c02172dc6005b3e042041081005c70170cc2171d87005b34042041000171b87005b33042041000171a47005b30042040081008170cc2170eca005b2a042040081005bff170a02170c86005b29042040081005bff16ec02170946005b26⟩, ⟨0x23e11408183e01da0e203d81d00d305e829c12207b017807001c000, 0x42041081005fbb17fec21a0c46005c360420410400c117fc45fe717ee0317eec493817ed03406005c3104204108100493817eec217f986005c2804204108100493817ed0217ee46005c25042040081004f3513cb8217ecc6005c246e05c6e161b8506e130644864464013c6386e0d6e030190b04a1890480470460450641019036e0086e01064017045f7d17dec5f7417da45f6317d8429f116aa84e28168a44f3a1689059ff12a902ba613df04aa30abc04a7e13de04f7513dc04f6c13d85817d9029e60acbc4f2f168841cbd0a7b04b6c129fc2aeb07c9c4a7b129e829fa13dc84f7113db5d804f6913cd44f3c069b56406005c2004204100017dd47005bfd042041081005f64760085f6a1c016fe010810020400a7982b2f085f3b18016fd410810020400a7cc1cbd085f3418016fcc108104204016d9419ad085f2d1c016fc01081042040175d419ad085df818016eb412412011c4181141104084048045b22169c45d7b16eb05b7916a905deb176f45dba245a31169b019ad16bf05b3816ffc5d751c5ae518016eb0108100204016ffc1177b07005ba7042041000176ec7005ba4042041000175c47005b79⟩, ⟨0x2140ff077038c1b00cd83c41c60c405282480f806602c00dc02c000, 0x420410810069641a4cc21a5e86005cad0420410400c11a4ec696c1a5a031a4d069641a4cc3406005cac0420410810069641a4d021a5b46005ca6042041081004f2f1a4a421a4c46005ca2042041081004f6d7600868f6180171e86e130520510501b83c13463012c190a0642462061c6181905064106e03064086e010404c10abc04aa412a8c68ed1a3984f7c0ae984a7e17d844f7816aa85a290a7c44f75167fc4f6c13d845f63138a13129fc4f2e0abac1f27129ec2b2f0a7b029e613dc84f710a7e81cbd13cd44f3c13da41a6d129e84b6c4868ee180171dc10810400068e71c0171d010810410030468bd1a1f068790c687a17fec2407005c730420410400c11a1e068a21a1f4317fec687a090180171c4108104204017fec11a2e07005c6d042041081005ffb1a1e821a2c06005c6904204008100493807c9c21a1c06005c640420410001a1ac7005c610420410400c11a0fc6832085ffc17eec5ffb0c5fff18017180108104100304686117ffc217eec5ffc17fec31a0c86005c3e042041081005fbb17ff021a1806005c3b⟩, ⟨0x1820b605582160f7070834c18a0af04d82340f005702080ac02c000, 0x42040081006af91abd421acb46005d26042040081006af51ac8021aca06005d2510b04a0482201418201088031811abc86ae713af42dbc1ab806abb1aab46a7d1a9d46a6c0afdc2bf2302bf90b3e831a9d86a711502001748c10810420400c2bf9086af32801748810810020400b3e82bf9086ae81c0173f01081040006ae11c0173ec1081040006abc1c0173e010810420401a9c46a76086aae1c0173c810810020400c6a76086a7e280173b01081040006a6d1c0173a410810020401a4a5d8021a9847005ce40420410400c11a88869fe0869f70a7e84f720c6a371801738010810420400a7e84f72086a31180172f010810420400a7e869f70869fc180172dc10810020401a3ddd8021a78c6005cb3042040081004f2f17d9021a6dc6005cb0⟩, ⟨0x1ec0ec072836819e0bb84b823010505502100dc05802100b002c000, 0x420410810031a9d821b190a005d7f0420410001b1887005d7e042040081006a711a9d821b1807005d7d042040081006af50ade021b0e06005d7a0430420410401011acb02c2a1abf46af8106af91abd42b780d01c0175e048090a01c2806120141084801120007042c370aff02cef1affc2bf70afc851abf46b2c242bf91ac802b760c6af91abd461b0a88005d74042041081006b200add821b0807005d6e042040081006af9046bf61c0175ac2c4b0b1282c490b1201d876c60761058830822411aef06b771adb86afd0b4982e6a0b0dc6b700b5f0a0b5c82d6d306b721acbc6af90b9942d210b4802d38208408005d680430420410401011aeb46afd1adb830b9946af91acbc30b9d07005d67042041081006b720b99421aef47005d3f042041081002d210b48021aed86005d3e042040081006b2f0b99421aeb86005d3a042040081006b2f1adc821ade06005d34042041081002d200b4e021adc47005d33042040081006af91acbc21adbc6005d32⟩ ] def tableLL : Table Block := .branch 9 tableLLL tableLLR def tableLRL : Table Block := .leaf #[ ⟨0x19a0c605ac2aa13f08f04201e40dc06302c0134084037016002c000, 0x420410001b6907005df60420410400c11b5946d60086d371a3dc6d3d0c6d7a180177c810810420401a3dc6d3d086d74180177b810810420401a3dc6d37086d3c180177a41081041003046d2c1b3ec213da44f351b3c831b4c86005de5042041081004f6913cd421b4ac6005de1042041081004f691b3c821b3dc6005dbc042040081004f69069b421b2ec6005db3042041081004f7113cf021b2946005dac042041081004f3513cb821b2806005da9042041081004f3513cbc21b1f46005da8042040081004f3c069b421b1c47005da5042041081002cfa0afe421b1b87005da4042041081002b760b3e821b1ac6005da22092084070a01900c1046042c2a0ba886c681abc82bf70afc86ae713af42c7a0b2c4a0ade02b760b3e82bf90c5408005da1041040081002d210b48021b1986005da0⟩, ⟨0x26b12e88ec44a20f0fd05cc1c60c4057026c10a06f02680b002c000, 0x108104000787d1c017a901081041003046f661bcf06f2e0c696413db46f2a0d0180179e4108104204013db46964086f3b180179c4108104204013db46f2a086f2f180179b8108100204013db5d8021baf06005e690644013c190e04d0642c62862412061c19060450441820411803c11b7c86e601b6a86da31b4fc6d2a1b2e86ca41b1f069e21b1c06afc13af46a601a7f469304069e61b4f44f6913dc44f351a3dc4f3c069b46af97600a7e84f7213cbc6929386e27180178f4191106440190f04e04d0642c62862412061c19060450441820411804011b9806dff1b7c86daa1b68c6d3f1b4a86cba1b2906c7c1a7886c701abf04ebd1a98069fd1a4c111a79869e71b4f44f6913dc44f351a3dc4f3c069b46af97600a7e84f7213cbc69293c69ed180178f01081041003046e621b9ac6e2f0c69e61b8ac2407005e3b0420410810069e61b8ac21b9b06005e370420410810069e6046e611c0178cc10810420401b4f469e7086e20180178a410810420401b4f469e6086df71801789c1081041003046db21b7a06dae0c4f7113dc86dac0d0180178981081041003046db31b6bc213dc44f721b6b031b7a06005e22042041081004f721b6b021b7886005dfe042041081004f7213dc421b6ac6005df9⟩, ⟨0x1880b9055028212b08a83cc1ba0bc05302400f405802500d0042000, 0x42041081005aae13cf021eae06005efb0420410400c11e9e87a75087a6c1e6d821eabc7005ef70420410810079b6047aa91c017bd010810420401e6d87a6c087a7218017bbc10810420401b2f079eb087a6818017bb41081041003047a3b1e8b07a370c7a261b2f079eb0d018017bb010810420401b2f07a26087a3c18017b9c10810410030479bd1e7d021e6d879eb1e6dc31e8846005ee00420410810079eb1e6dc21e7ec6005ebc0420410810079eb1e6d821e7c46005eba042040081006cbc069b421e7a86005eb90420410400c116c885af916cb83168c429f316bf03406005eb80420410001e6b47005eb3042041081004f2e1e5a021e69c6005eb0042041081004f2e04797c1c017ab010810410030478f71b1f0213cb84f3513cbc31b1cc6005ea7⟩, ⟨0x1970bb055027c12808903c01b40b805102300d605501f80b002c000, 0x1081041003047c751f1a821f0d029e51ed8831f0dc6005fa80420410400c11f1dc7c371f1a031f0d029e51ed883406005fa70420410810029e51f0d021f1d86005fa30420410810029e51ed8821f1a46005f7e0420410810029ec0a79421f0bc6005f780420410400c11efe47c2b1f08830a79429ec0a7983406005f770420410810029ec0a79821f08c6005f730420410400c11efb47be21eed031eda838b21eec03406005f6f0420410810038b21eda821ef846005f660420410810038b21eec021eed46005f630420410400c11ee947b74087b6a0a7987b690c7bab18017cfc10810420401eda829e6087ba418017cec10810420401eda87b69087b7018017cdc10810420401ed8811eda07005f360420410810029fa072f421eca06005f2d042041081005fb40acbc21ebc86005f25⟩, ⟨0x1800b9057027c12b08a841c1e20db06682e814808e03c0188098000, 0x420410001f6d07005ff4042041081007d2e1f4b021f6c47005ff30420410400c11f5c07d6c087cee1b6b021f5e87005ff1042041081006dac047d791c017fc010810420401b6b07cee087d6a18017fb01081040007d601c017fa410810020401f4b87d2c087d341c017f9010810020401b6b07cee087d2b18017f8c1081040007cfc1c017efc10810020401b6b011f3e87005fbe042040081004f721b6b021f3ac6005fbb042040081004f7213dc421f3a46005fba042041081006ca7069b421f3807005fb5042040081004f711b29c21f2d06005fb1042041081007b621ecc421f2a06005fad0490480470460440420410402011f1a07c2a1ef80686a0eaa83af20e7b87ba30a7c491ed8829e50e2c839e91eda829ec0a79871f1f87005fa9⟩, ⟨0x1620a604f825011207f03c01b40c605801c80bc04801d00b002c000, 0x420400810029270a39021fc9c60068660420410001fbc47006861042041081007ebd0a49c21fb8c700683c0420410810028e40a2c421faec700683b0420400810030a2c421fae4a00683a0420410001fa9c7006839042040081004a3e0b0f021f9fc70068340420400810031f6ec21f9e0a006833042040081007e651f78421f9b8700682e0e08070608060608050608040c01411f8cc7e231f7a07df11f7f07df70b2c42c7a207dbb1f7847dba0c440800682b0420410810031f6ec21f8d0a006825042040081007dba1f6ec21f8907005fff0420410001f7f47005ffe0420410001f7e07005ffb042041081007de11f6e821f7c86005ffa042041081007de11f6ec21f79c6005ff7⟩, ⟨0x17a0b2053c27812908803dc1c209504381c80b8048019009001c000, 0x42040081005ffb1a1e82228c060068f8042041081007f7d67c0889621801a3a41081042040222f01223d450468ba0410400810088bc0488f21411a2e41081042040221fc88bc222a832238c70468b30420400810088a6222a088aa0c88b11c11a2b410810020401b3c87fa1087fe71801a28042441c11411010c1084041008047fbf1fee47fb51e6b0797b1b3ec7fa91fe907fa01b1fca1fec86cf21fe847f7d67c13cd44f2e1d01801a1fc1081040007fba1c01a1f010810420401fe859f021fea87006877042040081004f6913cd421fdf0600687604204108100316ee421fde8a006875042041081005baf16ee421fdbc70068740420410001fdb47006873042040081005baf16ee421fcec700686d0420410001fcc8700686a⟩, ⟨0x1bc0d486402ee12a08b04001d40d404381cc0ba04f02080ac030000, 0x42040081008b3e048b731411a5a41081002040228d48b3e22cb0322d947046963042041081008b242298c8b2c0c8b331c11a4f419ae98933a88504408308204133a8801c122bdc7db322aa08aa322bd48af30f8e08af1128d48aef288aaa203cfa0f6984a3422ab0640800693404204008100822aa8222be0a006933042041081008aac22aa8222bd87006932042040081004a340f3e8222bd07006931042041081003cfa0f698222bc8600693004b0c90a4ac61ad8450a4ac40401810ff903eb60faa03f270fc888aee22b848ab11f4fc8aa822a8c8a7d30822ab08aaa0f9a83e771502001a4bc1081042040208aaa088ae22801a4a4108100204022ab08aaa088ab21c01a48c1081040008aa91c01a4881081040008aa41c01a3fc10810420400f9a83e77088a7e1c01a3f810810420402298c12299c50468fc041040081081002080228d412298850468fb⟩, ⟨0x1d40df06ac32a17f0b4850825811608183a81ae05802100b002c000, 0x42040081008d2c236f02237c060069f1042040081008d34048da81c01a7941081002040234d08d2c088d7a1801a7801081002040234b48d67088d6f1801a6f01081002040234b48cee088d661801a6e810c1081041004048d39235808cf1234f44234d08d2d233b834070069b9042040081008d34234b42234e860069b8042040081008cee16ec02233fc70069b1042041081008c38048cab1411a6ac1081042040230a88c38230f43231dc70469a2042041081008c38048c3c1411a5f084884424083082c18082060452042032020410803411b1a03f610afdc2bf21f3ec8be522f9028af0a2a86af20fad82a3c166c86ae722f8c287822f845975485a31169b029f30b3e82bf90a8e42b760c593f0fbd83f360a1c4c22f98800697704204108100593f0fbd8222f8870069760420400810029f3168c4222f8060069750420400810029f316bf0222eec6006973042041081005df9066b4222ee46006972⟩ ] def tableLRR : Table Block := .leaf #[ ⟨0x24511608644061ed0d304301ec0bd05202440f606501f0098026000, 0x1081042040261d0987207fcc3261e87046a7b042040081001fec0498711411a9e81081042040260ac5cbe0898601801a9d410810420400a8e42b760898241801a9cc11c41811501040440060428af0a2a82bf70afc859751ab9c8ffb1abc83eb6175a48fff0a1e0c0fcd82bf90b3e830a1c45408006a720705485084c8481441c1020f20e20d04c08b08a207060101c0120040117cb05b740a8f059b223dd86ae722f8c287822f8459750fd842bf70afc86c680a2bc28aa1abc83eb6176e88d3f22ee95066b45b65177e42a39164fc28710fbd83f360add82cfa0c2bf9234d029f316bf0f23fc88006a6c041040081008d34177e4223ee86006a6a08608504404308108018123b905f2216ed45d70235b88d60185bb016ebc8d2d2359c8d34148d621c01a8f81081042040230848c3e230f4323cac7046a38042041081008c3e048f271411a8dc1081042040236f05c28088ef51c01a8c810810420402359c5bb0088ee51c01a8b010c1081041004048dbf237bc8d60235e44236f08d34234b03407006a29041040081081002080230a8123aac5046a23042040081008c3d048e781411a7fc1041002040230e01239b450469fd⟩, ⟨0x1940bd85a02aa13c09303c01ba0c403d81b40be04c01c8098026000, 0x42041081001fec267b41ff30c9ab01c11aca81081042040261d0126ab05046b29042040081009872049a7e1411ac981081002040261d0987207fcc3269e47046b250420400810098270b3e82269846006afd0450440430420410401812688499f3263c898a7261e4507fb099ed261d0987207fcc507fbc5046afa0420400810099ed049a221411abd4108100204007fb099ed07fcc3267d07046aef0870761811411020c5882076047042d720b5b48af11adc04a3522bcc3e380b5f099bf26784a128d03cfa0f69880b4e02d201902001abb410810400099e21c01abb010810400099b81c01aba41041002040126981264d05046ab40420410810049a60499311411aacc1041002040261c81264a45046ab00420410810098720499271411aabc1081042040261c81263f85046aab⟩, ⟨0x2ad14b8a044d623e11588603e41da0e386c422a0ff05c828c02c000, 0x1081002040270941b31089c2b1801ae88108100204026fe01b31089bfe1c01adf41081002040168c45a6c089be41801ade011410c10810440499be266dc5a3f26b842d2616a906168ec2d210b4803407006b76042040081005a6c049be11c01add4108100204007fcc126edc5046b6e04304204104010126498987926eb83261d0987207fcc3269f05046b6c041040081081002080261d0126eb45046b6b0420410810099ed049ba71411ada810810420400a49c28e4089b791801ad9cdc2054dc2051b8204c3b208116e080e0ec343b0a0ec25b21b1ca9040ec0c3b021013811fbb89b7426dcc29220a2e028fc0a3dc28e926ce02bf70afc82cef1aed46c6d0b3f82d720b5b44eab13ac89b650f7b03e23587ebd0a49c28e40a2c430b4842bf90b3e82d200b4e09b2f0add883502001ad9810810020401faf42927089b751c01ad9412d02011840c4044006042bf70afc87f790b0dc6c6d16ff45bf80b3bc5dba1fce85f222c2cfa0c2bf916ee45baf142dbc2001ad90108104204026cbc2b76089b661c01acf814c14813c13843413032d6e480608052201088021f3047cc03410afdc2bf21ab9c2d260b5c82d6d1adc06c681abc89af40b5f06ae01aaec8ae122aa08aa31a9f49b2a1f6cc6aad22bb88ab1582d200b3e82bf90b4842b760b4e080c6a711a9d88aac22aa8c408006b39042040081005a3b0b484226b986006b2e⟩, ⟨0x1800b5052426611d08383a41ac0c004f02200e406402100b002c000, 0x42041081009dae26f9c2277cc6006c2a0420410400c1277909db2089c25276b84f2f0c9dea1801b0981081042040270949dae089de31801b08c1081042040270944f2f089dac1801aff81081002040273b81d7c089da11c01afe41081041003049d62274f42274d09be7089d771c01afd4108104204026f9c1275c47006bf2042041081009be7274d02274e86006bed0420410400c1274889d2b273d03271fc9c7b13dc43406006bec042041081009c7b271fc2274846006be5042041081009c7b13dc42273d46006be2042041000273a87006bbf0420410400c1272fc9ca82728c3272989c7f2718c3406006bbe042041081009c7f272982273806006bba042041081009c7f2718c2272d86006bb6042041081009c6326fe02271a46006bac⟩, ⟨0x3941a38cc463630317687f83d01d209184041d60d505f80dc02c000, 0x109048107046045044103042201234fc9f7623dd86a221f5ac5bac22ee06dae176e85aa4288d341a7dc5b38177e419ad13dc86dac1d01801b1f010810020401a7dc5b65089f681801b1e010810020400a7e869f7089f601801b1d81041002042040082008c21049f281411b1cc10810020400a7e84f72089ef51801b1c867417016c191a0646419180645c1916495064502a1349018f04e18d0643012c62812528201c2a208060452608024a0801260800641168a44aa313df06b271f5f87cea1f4a84f780b3f86bff0b3bc2bf70afc86c6d16aa84aa40a7c459ff0abc02ba6129f829220a3a428b8138a028fc0a3dc9b7426dcc7eee786af51b6b07cee13dc86b200add82cfa0afe42b2f129fc29e60a7e81cbd0abac29ec07c9c4a7b0c28b1129e84b6c0a49c28e41faf58408006c71042040081007cee1acbc227b886006c6a042040081007cee1abd4227af46006c690645019130644984584183d83813012c1281909188187186605044183064081041014044f751f2fc7cb31eadc9eb11b1c09eaf175a44aa30abc04aa4167fc5a290a7c42ba6279a04f7c16aa84f78129f84e28544f711b29c4f3c069b49eac129fc1cbd0a7b01f27279945aae0abac29e60acbc29fa13dc84a7b129e84b6c4d01801b19c1081041003049ea3279b89e690c9e6a279945aae0d01801b1981081042040279945aae089e791801b0fc1081042040279949e6a089e6f1801b0f010810420401f0d09cee089e2e1801b0d0191006438134130190b18a0491871861850641060c108104100f0448fa277887c75276809d3c274809cf0273a49ca2271f89c68270a89bfd0faf8483e1f0a90276b89be71f0d09cee271fc9c7b075f09c63270949bf806cc43ebb0a7b029e5389e231801b0cc1081041003049dfd26fb82276b89be826f9c32788c6006c30042041081009dae26fa02277f06006c2c⟩, ⟨0x29014109bc4b22430e506d033c1880b9046c19c08802100b002c000, 0x420410002a4a07006ce3042040081007b6204a9261c01b38810810020401ed887b3108a9241801b38410810020400a7947b6208a9201801b38063983463062c62412181c11981461010c108104100e049eaf27fa09fe3175a42ba60abc09ff912a8c9eb127fc04a7e138a04aa413df0e1f0d029e50a7b01f2727ab09e65278c01d7c129ec4a7a129fc4b6c0abacd27fe86006cb3042041081009e30075f0227fc47006cae0420400810029e51f0d0227fac6006cad042040081007c34278c0227fa46006cac0420400810029ec0a794227f906006cab10b40a0891070461050420802010a3f028f71fae87eb81fb887ef01fbb06c3f1b18c6ae01aaec6a741b1847eef3828b10a49c28e40c6a761a9c47ebd1d02001b2a822412018208070462208050832208021c10f4944afd1b18c9fb01a9d06c610f4a06c3f1ab806abb284a3e0b0f02bfd0c6a711a9d86408006ca904704604504404304204104020112a904aa3128d44a6c129f84ae112a9c7129fc4a34129ec4a6612ae04a7a1299c712bfc6006ca70480c60c50c40c308208108020113b904b3612cd44ae113bbc4efa0f6ac3db5289129984ab8137d04a340f3e83da6207407006ca6042041081004a3e0b0f0227ec47006ca5042041081008cee16ec0227eac7006ca40420400810069f716ce0227dec6006c7d⟩, ⟨0x25111d88644061ed0e786f034c1850b7856428612108583d40b4000, 0x1081002040270b01b3108aab51801b598108104100304aaa82a9f8aa700ca931270b079b70d01801b5941081042040270b0a93108aa7d1801b4f01081042040270b079b708aa711801b4e4108104100304aa322a8b422a890a93008aa671c01b4d410810420402a4c012a9847006d3204204108100a9302a89022a8a86006d2d0420410400c12a8849e68089e6a279945aae0c9ea31801b4b01081002040271ec1d7c08a9f21801b48c10810420402a6e49bf808a9bf1801b4841081042040279941d7c08a9a31801b3d8108104100304a9772a4eca9350ca9372a4c4a9300d01801b3d010810420402a4c4a93708a9781801b3bc10810420402a4c4a93008a96a1801b3a814c64864414013c13863413062d22862461861411020c1081042012044f7c27f8ca8ff12a904aa30abc0a923138a02ba60faa0a9220fc9c3f22229f43fbc129f88af1128d48af30f8e140a7944a7f0abac7b6212db029ec07c9c7b310f9dc3e7b0f9a84a7b129e84a340f3e83da6211408006ce518a1890481870461850430420410402812a3fca9250abc09fe3129f82ba62a49c4aa312a904e2813df0b1ed8829e50a7b01f27129ec4a7f129e84b6c0abac9406006ce4⟩, ⟨0x29514089ac4aa23f116084c30810507b838410806e02680b002c000, 0x108104204020ad7008ad782801b7ec10810020402b4dcad6308ad691c01b7d810810420402b39c5baf08acfc1801b7b410810020402b2ecace708acf01c01b7a010810420402b18012b1e45046de404204108100ac382b180ac3f0cac671c11b6f82c51162402c4f6ce076342c4c04b08a0761c1182142c440b10c2c410b100f042d7c1aef02e6a0b4986b77128d48af10b5c82d6d1adc08af30f8e06df21b6b85aa41a7f47d6b442e650b4846b2f1adc82d200b4e04a340f3e83da6206af90a7e84f721b6b0e1afb88006db209208f08d08c08b04a4090884070460850a00c400d047dfc1f7dc6dae16a9069fd1f5ac6df21b1b4abaf1affc7e230b3f86b272aea07e330afdc2bf20b3bd213dc86dac1abe429fa1f6e82b760b3e86af51ac807dbb0c2bf930abb02001b6c4108104000aba91c01b6b810410020401abe429fa08ab721801b6a432c22822421c21821431030c204300a047cbf1b6a869fd13af46df21b2906afc16ac8ab2f16a906c70169c4c13dc829fa13dc46af916ab86ca713cf01a6d169b09406006da0042040081005aae1b29c22acc06006d7c0420410400c12ac80aaf208aabf279a8a9b90caaf81801b5e4108104100304ab222abe02279a8a9b92aafc32abc86006d77042041081009e6a2aafc22ac846006d75042041081009e6a2a6e422abc46006d6f⟩, ⟨0x1d20de06582fa16a0a204ac23010005c029011c078019009002c000, 0x4204108100aea92609c22bb9c9006e6f0430420410401012b99cae652b98c32b88cae302b0fc32b8985046e6504204108100ae232b8c0ac3f0cae661c11b99010810020402b0fc12b9905046e630430420410401012b988ae362b8b832b88cae302b0fc32b8a45046e6204204008100ae232b8c0ac3f0cae371c11b8f010810420402b0fc12b8bc5046e3b0410400810810020802b88c12b8ac5046e3a0b12db28118314109b00604adf82b7d8adbe2b6e448fa0f9b858f40fc9c3f220ffd07f6c2b7b4c2b5c080f9a83e772b6885408006e330420400810082b5c022b7e4a006e3204204108100ada22b5c022b7dc7006e3104204108100ad632b68822b7946006e2c1621c58863e6142c420810b100604adbe2b6e4adab2b694ad770f88c7f312b4e83dec2b5a0a2b688ad7020ad372b58c5408006e2b0420410002b6fc7006e2a0420410002b6e87006e2704204008100ada22b5c022b6b07006e21⟩, ⟨0x2c814909703ce1d10dd86b432e1840b703900b0042017807001c000, 0x4504404304204104018122dc88b6422cc88b25229985228d48b3e22cb08b242298c5229805046ef7045044043042041040181263cc98a7261e499f3268845261d0987207fb01ff3267b4507fc05046ef0076381d8d076301d8b08a0761c1d860450761020c108588030126b845a35169c43e380b5c82d6d1adc02d26128d45ae322bc48af316a902d7c385a3b0a7cc2d210b4805a31169b03da6128d03cfa202d382c9ab62001bbbc10410020400b4842b7608b8611801bbb810810420401f6e87dbb08b8601c01bbb4108104000b83e1c01bbb010810020402609c2bf908b8221801bb98108100204027ab012bef47006eba04204008100982b172f822bebc6006eb805105004f18e18d04c04b04a049088087186185482041180401138a04aa40fef03ee30abc08af3129f84aa322bc43e38120f82ba60fc9c3f220faa04a35229f5112db03e7b0abac4a7a129fc4a7b0f3e83da60faec29ec07c9c8128d03e6a0f9dcf1a1c48006eb360f18e0cd0cc18b60a6091086076061051041031020e00440100428af0a2a859750b0887e7e12be02c630fccc3f610abc02ba6120a84aa4138a04a7e13df0287812a8d2128f82c3c0aff43ef60fcd81f270faec29ec129e84b6c0abac30a1c44a7f129ecf408006eb1042040081007b310f9ec22bd906006eaa04204108100ae3004af3f1411baa410810020402b8c012bc945046e7f0420410002bbf47006e7b0420410002bbe07006e78⟩ ] def tableLR : Table Block := .branch 9 tableLRL tableLRR def tableL : Table Block := .branch 19 tableLL tableLR def tableRLL : Table Block := .leaf #[ ⟨0x1630a684dc24211307e839c1a20bb04881f80d605801f8098026000, 0x10810020402b39c5baf08ba721801bd8c10810020402b39c5bb908ba691801bd84108100204017ff09e3008b9751801bcec108104000b9381c01bccc1081042040273b81d7c08b9321c01bcc81081042040271ac1b3108b9251c01bcb4108100204017eec5ffc08b8f51801bcb0108100204017eec5ffb08b8f31801bcac10c108104100404683017f94687c2e384417eec5ffb124e0687a1101801bca4104100204022cf812e2dc5046f22042041081008b3e04b8b51411bc84108104204022cf812e2b85046f20042041081008a3522cf88b2c0cb8aa1c11bbf8108100204022c908a6322cb032e2a07046efd042040081008b2404b87e1411bbe410810020402298c12e1e85046ef8⟩, ⟨0x1b90bc058822a10107983941ae0c1059828011a05501f80a4026000, 0x32061461120c3082046043af20e8c83f270fc883ff42f3ac58f40e9803dec0f88ca0f9a83e770e8bc3a24205408006fbe042041081003a240f9a822f3b06006fbd1ad84b0a4aca0a4ac70450c304218122b8499ae22aa08aa322ac43a6b2f2e029220faa08a7d0fc9c3f22308aac22aa880f9a83e771502001bee010810420400cbc3908bca82801bec8108104000bca11c01bec4108104000bc7c1c01beb8108104000bc701c01beac10810020402f0ecbc3908bc611c01be94108104000bc321c01be9010810420402b8c012ecb45046f74042041081004fa204bb251c01bdc8480722018114880412000504acf72e9a0516fa87f6c16ff45bf82ec8080c5bb92b2ecace71102001bdc410810420402b2ecace708bb211c01bdc010810020402b58cada208baba1801bdb410810020402b58cad7008bab41801bdac10810020402e3e412ea8c7006f67⟩, ⟨0x29313e899c3fe1c70ba057829013208e030415609d04480b002c000, 0x10810420402609c2cfa08bdbb1801e08410810020402f4fc982708bdac1c01bff083c238834180a0490880472051041022811b1b43f740fdfc28af0a2a82cef0ea84bcfa0e3c83af2260a8bd6e174ecbd640afdc2bf24028710c2bf90a28c3f360e3bc2cfa2f4fc98272502001bfec18070430a00818010a000504bd64174ec2bf70afc850b3bcbd6e2e08480cbd3f2609c2bf91102001bfe813042c180a0a01c18060440a00470459750a1e08cfe0a2bc28aa2f6848cf1176e8bd7216ff45bf81fde43a6b34287116ec08cee0fcd8316ee46408006ff9042041081005bb016ee422f6886006ff804204108100bd3f2609c22f5947006fed0420410810038ef0a28c22f4e87006fec0420400810028a30a1c422f4e06006feb04d08c04b20a4201421108010a0800201165883f6e167903f7f2f280bc7b0a2bc28aa2f4b03f74123e8bd2a2f2ccbd2838593f0fbd83f360a1c4bc3b0cbc391d02001bfa010810420402f0ecbc3908bd2d1c01bf9c108104000bd2b1c01bf9810810020400cbc3908bd292801bf9413423082c88202028201828200c10820480459b2165d428780a2bc28aa1b18c7d3f26ca46ae01aaec6c3f22f843f610fad8e0a1c431a9c46a76164fc3ef60fcd87408006fe4042040081007b310fbd822f4886006fe20420410810028a30fcd822f3ec6006fe1⟩, ⟨0x4121fe0f9878a3af1cc8dc8536240116879424010a04b812802c000, 0x42041081005d752fb9c22feb06007868042041081005d752fdc822fddc60078630420410400c12fbf4beb908bee71b3c8beb70cbeee1801e18810810420402fb9c6cf208befc1801e18010810420402fb9cbeb708beed1801e0ec10c1081041004049f3c16ed45c2417c88416ffc5bb016ebc34070078371b86c2a1a0645c191606454191405319205105018f04e18d18c0642c190a0490480641d80c2a020a8058017042d7c0b4982d720b5b46bad27b842e6a1f4a84aa40ae984a7e0abc029f112a8c5a2916aa84f78167fc4f7c138a07cea174c85d2d175a45d6b1adc05ce5174d9c1acbc2e650b4847cee07c9c29ec129fc4a7b0a7982b2f0a7e81cbd0abac4a7a12db04f721b6b02d200b4e08172f85cf85902001e0d813042c12811c1188803060801220008045aa40b3f82cef2f9942bf70afc85a3f1b1b46ae01aaec9b291f4fc6c631b0fce0add85a3b0b3e82bf90c6a711a9d87408007835042041081002a3904bea61c01e0cc12011c1141081045048046044043040142263cc98f1268849aaf26ab89879267cc9a78201fec267b49874261c81ff314bea01411e0b42a196170a85819150645184c19121b83c2a0e04d18c04b18a0491880470460640c1086041900541173945d69174d86b701adb82e6a175ac6bad0b5c82d6d0b5f02d26129f82ba612a8c29f112a905aaa138a04f7c174c85d2d167fc2af0168a4ab3e685cf8172f86b2f0b99480b4e02d210b4804a7b0a7b04a7f0a7984a7a12db02aeb07c9c2b2f072f46af90a7e9440800782b042040081005a3b0add822f9a8600782905004e04d04c04b0481070608062201088010402c12f9945aa4168d45a7126adc5ae30afdc2bf21b1b42cef1b18c7d3f1b0fc6ae01aaec9b290b3f910a7cc5a3b168c45a6c0afe431a9d86a710add82cfa2902001e0a062461c11811010c1086041008048f76176e88d3f2f8f02c370a8f05f2c16dd08bb822ee8a234d02a3916d945df9066b429f316bf074060078260460450440430421410aa948be422efcbe3c1f3ec2c37185a6c0a7cc5a310a8e4422fa46007825042041081003ef60fcd822f6f06007822⟩, ⟨0x22e10187b43ae17b0b2854827a12708c842c1ea0ae0500164042000, 0x44043042041040141332a83d280f49450ebd050b0f02bfd0c2ff91101801e39810810420400bfe42c3c08ccbf1801e39010810420400bfe43cfa08ccb11801e38048202848202051c518514510582004582000804aefc2bbdccc7b2e0f4cc3d0b18ccc76331d42c221f7f07df7331cc7e7734cc380bfe42c3c0aff4cc700c7dbb1d02001e2fc1081042040330e0cc7008cc7c2401e2d8108100204032fd4132fe450478ac04204108100cb293a308cb2f1c01e290108104204032ac4182008cab71c01e1fc108104000caac1c01e1f8108104000ca6f1c01e1ec108104204032884c92b08ca631c01e1e81d894864850430420810801c1173945d32174b45d6b174d85d6913b904b200f6ac3db5285cbe173e04a34203cfa0f6986408007875042041000323b0700787110b04a0431024011001810b3bc2e280b0dc2bf70afc8787c16ff45bf81b1b47f3a1fde4c8e8302cfa0afe4316ee45baf1502001e1c088052200c8802041220005045bfd16fe05be2175c05bea27cf0517090816ee4316ffc5bb01102001e1bc108104100304bfad2fdec2175d4bee72fdc832fecc600786b⟩, ⟨0x1990a7050025811608103d01cc0d006102b010c07002500dc042000, 0x16e4b0a4ac70c55b910104100604cdfd337accde63388cce210ebc858f4337fc3f270fc883ff42f2dcc20cdad336c43e770f9a85408007934042041000338907007933042040081008336c4233888a00793204204108100cdad336c42338807007931042041081008336c42337cca00792b042041000337b0700792a0420410003379c700792704204008100cdad336c42336e07007921042041000336a470078fe04204008100cc701f6ec2333e460078f2083042041080101128d48af3332ac3128d03cfa0bfe43333cc60078f1042040081002ff90f3e82333c860078f0083082041040101332ac4af81f9f830bfe44a3e0b0f03333c060078ef042040081002ff904cced1401e3b810810020400bfe42c3c08ccec1801e3b4108104100304ccb4332a820f3e82ff90b0f03333a460078eb⟩, ⟨0x1ea0eb87042ca14f09e049821a0f7072027411407102400a402c000, 0x4204108100da3b04da631411e7e01081002040367a45bb908da241801e7b818202418202051c5185145101a200c1a2000804aefc2bbdcc8eb367c4d9b60b18ccc76331d42c2216fa85bfd16fe0d9ec34d9b10bfe42c3c0aff43367a45bb91d02001e7b41081042040366c4d9e908d9f22401e7901081002040365b81365c850479ba042040081009c2c2a4c4233fd060079b004204108100cfa533bdcce7a0ccfab1c11e6a4108100204033d80982b08cf711c01e5fc108104204033bdc133bfc504797410b10a409105042041181260806c6d0b3bc2bf70afc85d3b0fdfc28af0a2a8bd710fdd03af2302cfa0afe430fcd828711502001e5c01081002040339ec133ac0504796704204008100ce72339ecce7a0ccea21c11e58410c108104100404ab20279b8ce660c9e65279a8aabf2ece44338d4500793f0420410400c1339b8ce682ecfc32aafcbb390901801e4f810810420402aafc1339bc700793b04204108100aabf2ece423399c6007938⟩, ⟨0x1870b8856c28a13108d84141de0d904401c80b804601c00a802c000, 0x10810020400a6dcdb3008dc381c01e9e4108100204036cc08aaa08dc351801e9e0108100204036a90dab108dc261c01e9dc108104204020dae208dc242801e9d8108100204036af8dae208dc221c01e9d410810420400a6dcdb3008dbf71c01e9c0108104204036ef4dba308dbf11c01e9bc108104204036e8c8aaa08dbef1801e9b9b2db281d890762021460c2007047d3f36facdbe222b84dbbb22aa08aa336ba07ea636be4db2c36c9cdb6834dbbd36e8c8aaa20dae236af86408007a6d04204008100dbbd36e8c236f8c7007a6804204008100dba322aa8236ea46007a6104204108100db3022aa8236cd86007a3304204100036cb47007a3204204100036ca07007a2f04204008100836b88236be8a007a2904204108100dabe36b88236ba47007a23⟩, ⟨0x15009d04842120fb076835c1820ab04a82080e805e02400c8032000, 0x4204008100c92b170cc237af46007afd04204008100ac382b180ac3f0cde331c11ebcc104100204204008200ac3804de2d1411ebc4108104000ddf31c01eba4108104000ddea1c01eb981081002040374ecddad08dde11801eb901081042040376b4ad3708ddb31c01eaf810810420402b4dcad6308dd7b1c01eaf410810020402a890dd3308dd381801eadc10810020402a4c01374c87007ab6042041000374c07007ab504204008100a9312a4c02374b86007ab404204008100a9312a4dc2374b06007ab3042041081009c2c06cc42374ac6007ab204204108100dc7737294d96e0cdcf41c11eaac10810420403659cda3b365b83371907047a7d⟩ ] def tableRLR : Table Block := .leaf #[ ⟨0x1e50e786e43401870bc85ac2aa13f096045c1e20cf05c81980a0000, 0x1081042040331c07dbb08edb41801efac108100204037be4cc7008edb21c01efa810810420403b298ecb432fd433b48c7047be204204108100cbee334c4cbf50cec7a1c11eed0108104000ec3e1c01eeac108104000ebe51c01edf010810020402a4dccab108eba21801edd410810420403a384182008eb6e1c01edc410810020403a2ec13aad47007b6104204108100692976008e9ed1c01ecf410c108104100404ac662b98cac390cac602b0fcac380cac751411ecec1081041003049bef277ec9e230c9be8276b89be70d01801ece410810020403a384182008e8e71c01ecb0880c1202411c48060452200c408704cc730a2bc28aa37cb848fa0fea4df210fdd0b83d1f9dc3f7f1f7f07df734cc7037be43f361f6ec30a1c46408007b2804204108100def9331c0237cbc7007b2308a087046044483076092007048aa822a8cdebc171b45c68170e8ca622e0f4dead22ac48ae11f4fc8aee345c33324acca21208aaa22ab06408007aff⟩, ⟨0x1d40df06a032a1730ae851c26811b06582d414408a03b8190096000, 0x4204108100ef742609c23bdf87007c3c04204008100eef23baac23bdc06007c3b042041081009ca604eeef1c01f0d0108104100304eee527288eee40c9c63271fc9ca60d01801f0cc10810020403ba80cf6008eebb1801f0b410810020403b988eea008eea51801f0a0108100204033bdc13b8e05047bfe04204008100cfa533bdcce7a0cee371c11eff5b281d890480761c210108205b00804cf782beb84a35174a05d32174b43e38174ec8af322bc4ee2f2c5cbe204a340f3e83da633d80982b1d02001efe4108104204033d80982b08ee301c01efe0108104204033bdc13b8945047bf5041040081081002080339c813b8845047bf404204108100ce7b04edf81411efc41081042040339ec13b7c45047bef04204108100ce72339ecce7a0ceded1c11efb428202411411020c208882004282000704bca02f1ecddf212be07e7e0b0882c632f4a0bd2c244a3e0b0f02bfd0cbc3b2f0e463b5e88007bec⟩, ⟨0x17c0b3054025411407e03a418e0b104d82080de05c02200c4036000, 0x4204008100fdba22ab023f7c46007cf604204108100dab136af823f4806007cf50430420410401013e5b8f9603e3b433e4ecf8e53e3a833eef85047cf404204008100eeab3bdd023f0846007ced0410400810810020803e4ec13eee05047ce804204108100fa6604fabe1c01f2e8108104100304fa7d3e9c8fa630cfa663e8f8fa3d0d01801f2d410810420403e8f8fa6608fa711801f2b810810420403e8f8fa3d08fa641801f2ac10810420403e4ecf8ea3e39433e5847047ca204204108100f8ea04f8f61411f1c010410020403e3a813e3cc5047c6f0410400810810020803e3a813e3c05047c6e04204008100f8e504f8e91411f1b410810020402a4c0aa2408f8a31801f1b0108100204104008200982b2609c23e1947007c68⟩, ⟨0x1a10a584b023c108079037018c0b004d02100dc05802100b002c000, 0x33462922461c3186142082008042d720b5b42d260b5f02c371adc02e6a173945d32174b45d6b175a45d36342d200b4e02e650b4848172f85cf81c2e732001f5c41081041003047ca71f1f87b350c7b621ecc42407007d6f042041000424987007d6e0420410810108a6421a024248c7007d6d0420410810108682b6882423f46007d6c0420400810108a6421a02423c87007d6704204108100d9e916ee424219c6007d3e04204008100ffb7367a42421947007d3d042041081007d2c1a9d823fff86007d39042040081007d2c1a9d823ffb06007d3204204108100ffb7367a423fef47007d2d04204008100fef72f0ec23fdd86007d2c042040081004f7113cf023fae86007d2304204108100bb392609c23f9e86007d2104204108100bb39260ac23f9ac6007d2004204108100fdba22ab023f89c6007cfe⟩, ⟨0x2f114388e844820e0ed06202e411505002280ee06102580d403e000, 0x480f08d4203082422011c48060450440402811f88c5f74165d47e331f7f07df70a1e03f6122f847eaf1a2f509bf0a2bc28aa1a1a859ba407dbb0c28710fcd83ef61f6e8687a1648c593f2502001f6d412412011c1186101086046008050a7e42ab45977168a44ebd0a9f03eb6228c429f80b4a4a17ed02b2f13e8849380a7cc1cbd0a8e47406007db4042040081005fb40abe8242acc6007db0042040081005fb40acbc242ab86007daf046045044043042141165dc8a31428c0b8f20fad8a927184fa2124e05fbb17fec42e5e86007dac04904810710504410304204104024112a8c4aa413ebc48fa13e9c4e2d13eac4920129f84e28284a7f13e8849380bae01f27129ec4a7a12db08406007dab04204008100493817ed02429fc6007da908a0890880870c60850c30820c10c02811a1a87c751f0a89cf0276809ff0120f848fa1a1e03ebe2e5d068203029e51f0d09cee075f029ec0faec9e3017ff05ffb2501801f6a063863463062c12412061c11811410c108604600d049c7e1b7c86afc3bbb84ebd1f1d49cf0167fc9da016aa8bc311efe45a29274809cbf3c6af91f0d029fa273b81d7c0a79429e60acbc1cbd271ec9c7f27298c406007da4042040081009e65075f02428e46007da2042040081005ffb050a311c01f68410810420400e8bc3a24090a221c01f5f810810420400e8903e770909fc1801f5ec10810020401a1e859230909e01801f5d81081002040124e05fbb0909b91801f5d0108104100304bb603399909b70cbb392aafc2407007d73⟩, ⟨0x30e17c0ac853828913988a04241fc0d2063826811e06b01fc02c000, 0x4204108100dd332b2ec2464b46007df910b1070441030424001811f7f07df72e0f4b83f16ff45bf81fce87f79323a0787c1f9dcb1f6e85bb916ebc31f6ec52aebc8007df60410400810058771648c2463c06007df5042040081004f2e0518b81c01f7cc108104204043cd06a710918791801f7bc48202508202048201010c28200428200060518751b18c6ae01aaec2cb11b0fc2c7a1b1850ffd461b4a1a9c46a760d0eff43cd05408007dee042040081010eff43cd02461b87007de9042040081010f341a9d82460c06007de108d04c4890761c6181142112008050af4236fc5c6d171a0cdff176e8ce21175810af217588cdeb33798ce23337f4e336c48236f05c28171c05c33336b47408007dbe042040081008dbc170a0242bcc7007dbd08d1623062c215b101d836c2076008045d6b170e85ce5175a45d32174b45c6d171a05d3623bd05c75237805d70172d8e205cbe173e05c33236f05c28171c07408007dbc042041081005ffc273b8242bac6007dba1202448064201420c1082041007045bfd16fe07f6e16fa87f6c0b0887e7e0b18c4af8245baf16ee430b0f02bfd128f861fdc88007db920d0602c8281242208142081008047ea61f9dcb83f2b2f87f3a1f7f07df71fde45bfd16fe0acea1fcc4acef347dba1f6ec316ee45baf2b2ecace71c7eaf2001f6e013c23012c82902018071201020c18024002810a2bc28aa4288cbd390a1e03a6b2b2f87f3a16ff45bf81fde459752b3a87f312b3bcf0e3bc28a30c5bb90fcd8287116ebcacbb2b39c90e3c88007db70420400810028a30fcd8242b986007db6⟩, ⟨0x32518b8c105dc2a913d89943cc1c80bf036c18a09001e0098026000, 0x1081040011ce61c01f9b81081002040222a81470c85047e6c0420400810108682b5c0246fbc6007e680c80c70860850440c30c01c127b846bbc0b4982d2f0b9a86b7716a904ebd1f5c090b4802e650b4846b2f1adc87cee1901c01f99811010c1081041005046dae1f5bd1b2b1a7f441b6b07cee0a7e84f72107d6c1c01f99410810420401ecc43e7b091aec1801f980280f0a038480c0a02448080a01c28060450840830420a00428003411f5acab3e16a902cef0afdc2bf21abe02bfc0adf46b2c1f9f82c220b18c4af81a7f46dae402bf90ade02b761abe46af50c2c3c0aff44a3e0a7e84f721b6b0c408007e3f0420410400c146b947b67087b311ed8821ecd47007e3e2202c12011c41018200c88021811ab806abb0b8a06c6d0afdc2bf20b3bc6c631b0fc7d3f0b0dcb0b3e82bf90c6a711a9d8526ca88007e3c05605505419319018f48e18d04c04b3e62011461060c1b7208f9811804411b7c86c701a7f479a62b6f8adb9467bd08f92b5dcadab1b6a86ca413af47ef0266bc8aa822a8c6afc1b2e86d2a22bdc8af51b1fd70a7e87968421a0ada22b5c04f7213dc44f3c1abe41a6d13da4822ab08aaa13cd44f2e4102001f8ec10810420401e5a108680919f01801f8b421431030c2046005047d3f22ac4dbf636ff87ef022bb8dbff1c29b722ab0db3022aa84407007e2c10a049108047045104042041040241429f86afc1a0c0686a42ac859ff13af468782e5e82aff286af917ed029fa17fec493817eec2afa072f481b9d46007e2a042041081004ab8128d02466e86007e2704204108100ac600519621411f88410810020402b1801464dc5047dfd⟩, ⟨0x26010487cc3581740af05202640fa072033817609501d009001c000, 0x4d08c04a0602421c810804800804bdad175a4bdab16fa8c8eb1ab9c2bf70afc8c8e916ff45bf81abc87f6e34bd3f2609c2cfa0c2bf916ebc5bb91cbd6e2001fba810810020400e8903e77091f2f1801fba5b2091c918114110308604db2c36c9cdde93708cdc21377bcadf6421d8c8eb2b7e0adbe2b6e4c36b88dabe2b68882b5c05408007ee80a01411028030a00828011410afdc2bf2168fc50aff02cef2f9945aa42030afe45a3b0add84408007ee3042041081011e730b484247ad47007ebd042040081005a3b479cc247ab86007ebc0420410810108682b5c02478f86007eb02201888050442200c88021411e6b118af16fa85367b0796c16ff45bf8203367a45bb91e5a04408007eaf042040081007968367a42477f06007eae042041081004f69069b42476b86007ea9042040081005a21051da41c01fa9810c10810410040488f1470c488e20c887f222f088aa0c893b1411fa88180d0603028082201c2806045044101201474b47fb92f280bc7b2f180bca7473d86c6d0b8a02bf70afc82cef0b0dcd22884bc39473c4bc3b0b3e830afe47474d48007ea1042040081008a21473c42474b87007e7c042041081011cf12f0ec2473dc6007e75042041000473ac7007e71⟩, ⟨0x2490fc86cc3181660a9850023410707703581860ad032013802c000, 0x13012c2201d870864834821c1375e8ade0337accde62b7e0cdf22eaccadbe2b6e4cdb74a5a8bc6f1fdb0d2b4dc82b58cad70336c4cdad1902001fccc82421c11811418042010801c10e9ac2c221f9f84af80a1e028af0a2a859750b18c9128f830fcd828710b0f02bfd18bd712001fcc810c108104100404ae63378b119612b19842b0e0ac602b0fc3405047f31043042041040101222a488b04a09832229888a8222a8347f905047f2c0420400810088a80528281411fcac1081042040222a814a09c5047f2a04304204104010147fad1fe7470c432229888a8222a832229c5047f290420410810088a8051fec1411fc9010810420402229888a8222a8347fa07047f2304104008108100208022298147f985047f22042040081007fb2051fb71c01fbfc108104204047dacdabe091fa01801fbe01b72256e48128d8606dc850835b9006051f7a47d887fb93708cdc210f88c3dec36cb0db2747dc0a36af8dae2211f3f47dac5408007ef7042040081011f3f47dac247dc47007ef21f31c1147cc41f3047cc01411e5b079ac28adf82b6f8adb946fb91f312082b5c07968421a04408007eec042040081007968421a0247cc86007eeb⟩, ⟨0x278131085c3761a50c7854c23e109079838019a0ba039816808e000, 0x42040081005a3116ab824f3b46007ff906dc89128d8506dc840430820810401c136cb0db2742494daf936ba04a350f8e08af122bcc936af8dae2203da6128d03cfa191fa72001ffd428203428203088202c21c2181148081008046aad1a9f46ae01aaec7db32f3e83f740ea8428af0a2a83f7f0ebc838f2346a711a9d83f360a28c30a1c438ef1c9b292001ffd010810420404bedc58770938bb1c01ffb810810020401a1e92fb70938b41801ffb411c21421010c204200604686a426fc68bd0fea448fa165f459731c687a0fcd83ef61648c596b143f631c01ffb101900c8081048005043eb60fdb028af0a2a82878166c8522f8480a1c43164fc3ef61102001ffac10810020401a1e85877092fab1801fec810810420401e6dc6929092c721801feb01041002040261c814b0ec5047faa0420410810099ed052c2a1411fe9c1041002040267b414b0844047fa404b04a1041034011001812f180bc761ab806abb2f280bc7b2f1bc6aad2f29c6a6c1a9f46a7530bc3b2f0e431a9d86a711502001fdf810810420404aba12a6f4a8f434abb87047f74042041081012a6f052a771411fd99b2091c91811430c1006042d720b5b42c370b5f04f291adc03ff4123e858f40fc9c3f220f9b8c0b4802d38203e770f9a85408007f34⟩ ] def tableRL : Table Block := .branch 9 tableRLL tableRLR def tableRRL : Table Block := .leaf #[ ⟨0x1d70d885a82a813e08c04141d80d9059828010e05401f00ac026000, 0x10c1081041004041ff607fc09aaf0c1fec267b41ff30d2c2b141221c412c12832090c905b006045c75172945d70170e85c6d171a0cdeb33799296a2f1bccdb7337c8c171c05c33336b48336c4540800886f042041081005c28171c0252494600886e041040081004fa2124e024fe80600886d0430420410401014fa9d3ea54fa8c34f5c93e324f68034f5ec5048868042041081013e32053ea81412219c10810420404f5c93e324f68034fa987048866042040081013da0053ea41412219410c1081041004053e664f8e13da30d3d724f8c93da00d3d7d1412219010810020404f8c814f99c504883e042040081013d724f8c93da00d3e391c1220e0418514510400404ddf24f7fcfefa2f1d8aefc2bbdcbc6f4f7a083fbdcbc3b4f78c3407008834042041081013de33fbdc24f880900882b042041081013da0053da4141220841041002042040082013d72053d7f14122080108100204042dc814f5b47007ffd⟩, ⟨0x2af14c88403f41d40e086b83301820b6037c17c0a804901f0062000, 0x10810020403e8f8fa3d094c67180222cc64013c138190d04c0642c128624190818704618304218106400f049e6e13e9c683f2aad10a332a9f05fe52a6f8a93426ff49da0273a448fa2abc04faf428c8aa2c445ffc270b05fbb2a4c49bf806cc49cee279a8a9b913e884938279941d7c2a4c0e4060088b1042040081009c7f2718c252ff460088ae043042041040101339ccedec3b7dc3339c8ce7a339ec352f9c50488ab04204008100ce7a054be5141222a8108100204027298152eb470088a904204008100eeab2f4fc252e9c60088a804204008100eea03baf0252df460088a604204108100eebc33d80252dbc70088a019119018f18d04c18a189188047046045044043042041040401339b86df21abf04ebd167fc9da02f0c4ab20279b90a32168a4686f428cc683f0ae985fe50a7c45aaa486af90a7e8aabf279a89e65075f01cbd273b85ffc07c9c493817eec29ec0a7982b2f3d0180221ec108104100304ccb40baac20f3e82ba70b0f0352cb0600887a042041081002ba70b0f0252cac6008879042041081002ba70f3e8252ca86008878042041081010f341a9d82526806008875049128d88128d8704308208133a8801c1336dccdb0337accde6336a04ee40f6d43dab337c89336b44a340f3e83da620cdb1184a35200221cc11411010c1081045044aa412a9c4a7812a8c3d3a144a7a1299c4a7f129ec412bf06008872⟩, ⟨0x2a614808d044220b0fa877c3981800b505502400b204e0218026000, 0x4204008100faa8331c02537bc60088f518b18918804704604518404304204128132aad4dbf531c4eb6d3a4fd4c73531c8cae7531bccae51fdb0b3e99818203a2eceb373e8f89c2c3a384a9312a4dc95379c70088f404204008100fa66054de61c0223cc10810020403e8f8fa66094de0180223c810810420403acdc1820094d631802239c108104204026fa0e8e1094d3e1802239410810420403a2ec1533f070088e318818704618504404204104020117dd05f7d168914c7313dc0e93f1fdb0e9ec533dd4cf5285a2113db4e8bb7601a4a49c2c1e6dc74060088e20420400810079b71a4a42533e060088e1042040081009c2c1e6dc2533d860088e0046045044043040141374b54c7332b9cdd2f1fdb0e93f18a9302a4c4e8bb270b043e29070088bf12034480c1202048071201888050442200c48021200448002c132b9cdd3716ff45bf81fdb0f8a2531ccdd2d2e9a0516fa94cbe2ec80e93f38aa242a4c4a9300c5bb9374ccacbb2b39ce8bb270b0a4080088be04204008100dd332b2ec2532fc60088bd04204008100a9373a3842532e060088bc60e18c60b04a1890481870460451841820410403413b0f54ca7531dd4c7332cb8cae7531c8eb6d3a4fd4c661fdb14c71531bccae5394c6832ca4e8ce8bb270b0fa3e3e8f4eb3706080e8e12a4c4a937314ca81c0222dc1081002040531a01531b870088b4⟩, ⟨0x30f17c8b8c50e23f10c875437e17509804681a40bc053021c0ba000, 0x10810420403b09cbc39095c601802259010810020403afe8ec27095c3c1c02258c42c22822422011c41411040c208204100b043e3812cf919ae12cc43d280f88c3dec0f4948af1466908af314c128fc4b2a202c3c0aff43da612ae04a340f3e832902002258812422011c218f9831620858801c10f6d44ee40f6acadbe2b6e4ad772b6ac787c421d49128d03cfa0f69882b5c0ada2184a352002258410c1081041004048e6c231d88c2b0c8c38230f48c2a0c8e7b1412258012011c11811010c1081047045dbd2fbec5dba1b3ec797b1b1fcbfab1e6b0816ffc6cf213cd44f2e175d4bee7189f3c1c0224fc104100204016ffc5d75095be6180224f832c11c1187cc40b1042c4018113aac4ebd0b5c82d6d13ac82d2f2f4a8ce21337accde6337fd296b302d380b4808336c4cdad150200224f012011c1181141101081047049d2b1b7c86afc1b6a8eeee2f0c49cbf1a7f44ebd246af913dc49c7f2729829fa13dc8640600893a042040081009c7b271fc253ea060089390480470460420411412011411010c100508ee243b7fccef8339ccedec33ea8cea13b8d88339c8ce7b33e94cef7339e8553e88504893504104008100ee62271ec253b98600893204204008100eef23ba802539cc60089260420410400c12a8c4aa2c2a99c32a4c0aa240901802248010c108104100404aa29538d0aa7c2a4d042a8909c2c2a4c4a930110180223fc32c32832421c21831421020c208204a04a93b32ad8cabf273a4e8e62e3f8aa2c534f49de22e3f09dfb1fcc4c2a4dccab106080a9303a3849c252e3e49dae26fa094060088f9⟩, ⟨0x4bf256115c744345167098c3d61d50df86a42400fa037016c026000, 0x1081042040372941575fc504897e10a0490480461051040430410402410a7e029f11f1a04ebd1f0a82a7c0b4a42aff1a1a87b670acacb0a7b029e50a7cc2a39072f47b620a7982afa210180225f035835525034d24834434033cc39234c3122d228220c1c218c1421020c2082055045a291ed9c59ff0a7c44f7516aa87c681f0a89e681f2fc7ab713de07cb31a1a89da0428c84fa71b1c04faf428cc5fe51a0fc48fa5c1cbd0a7982b2f1ed8829ec0a7945aae0a7e84f7213dc46ca7279941d7c13cf01a6d13e889cee124e05fbb17ff1440600897b18b04a1880470461840430420411802811f3a87b671a1a859ff0a7c45aaa1f3ec4f78168a47c2a1f1a07cf93029e60a7e84f720acbc1cbd0a7b029e51ed886dac250180225e8190e18d18c18a0642462011c190604504404304104034127ce09f3b176e85f2c176f459ff0a7c45d7b1f1a05aaa1ed9c686a1f0a85a293869f716d945bff0a7e85d75066b429e61ed8829ec0a7942b2f072f4c27cf0700897804e08d08c2202508080442200c108105080028116a902b7d0b3bc2bfc0afdc2bf21f5946c631ab806abb1f4fc6af81f4cc7d7e1f5c07d68402b760afe430ade07d2e1abd47cee1f4b06a76250200225dc24414013c13813412c22812521810c1d814803010fa8059201a0c0687816180686a17f943ea8161f03f270fc88adab2b6f8adb9163a87f312b5dcadec485ffb13e88493817eec3e77161dc58760f9ec82b5c0ada22d0200225d81081042040161dc5876095d35180225cc10410020400f9ec3e77095d33180225c810810420400f9ec3e77095d31180225c423863463062c12812412011c21811411060c608104100f043f270fc885d32174b43ea017394983f338d45fe51a0fc58f6163a83ea813e9c4faf428c8fe6a428cc9da04c5cbe17eec58760f9ec80f9dc4fa2124e09e652ece4982b17ff09cee075f0e408008970043042041040101573e88b64228f8322cf88b2c228d4342b8c504896f05218d18c04b18a0490880470460450440830421811803c1163a85d32174b43f270fc88fe6a260fc683f338d45fe50faa05920276810a33161803ea0161f05ce5428c93260acbb3917eec5ffc273b84fa2124e03e7b0f9dc5877161d88172f89e65075f0f40800896e042040081008a35055cf7141225b1b2c12811c315b082c4018122bd45d62171b45c683b5f8aba8175808aa822a8c99af1fbc08af7305c70170cc8aac208aaa1502002259c10810420403b2d01571e45048966⟩, ⟨0x2af14c89cc4ba2060f8077438a1af08603c41b60c805901a8088000, 0x10810020403eaa0c92b095e64180226fc10c108104100404ec79578a4cbf80ccbee334c4cbf50d5e24141226f010810420403aea4cdad095e37180226e413022422061d21010c604600804ec3d335dc8aa822a8ccdb7578d0cdf2337accde622bdd5e321fbc099af22bd4e336b4cdb120cd743aea48aac22aa874080089b804204008100cd743aea42578cc70089b704204108100cd31055e2a141226d4104100204204008200cbee055e26141226d010810020403e8f4cb29095ded180226b816018205c18205108130510504203c13012c42831d6e460a4ac55b904100f04bd21570fcbca02f1ecbca73aff4ec3d0fd843ff4570ec28af0a2a85975162d028780fc9c3f22163d0cdfd33884cdeb33798ce23337fd1ae864bc390fbd8ebfa3b09c3f360f9a830a1c43e7720cdad336c47b310f9ece4080089ad0420400810410020800f9ec3ef6095de21c0226b010810420400faec3e7b095db61802269c10810420400faec1576d470089a604204008100eb373e8f82576bc60089a510a0470460a015011000604aba81f8cc7dfc1f7dcabaf1f88c6a7d1aab46ae01aaec6a6c1a9d4c1f6e87dbb0c6a761a9c454080089a4043042041040101373ccdca2365c4337294dc77365b83576a050489a10480470460450440430411c117df4fafa1bce8fa701a59cca6e168905f74204f6d3e8f8fa661a59069331688463eaec70089a0⟩, ⟨0x49223e10d47cc39218289dc4221fb0ea84682080de06582cc0ac000, 0x42041081015ffd0f9ec25a5c07008a3a0490c80c72460c104018122aa08aa3336dccdf222bd48af71a9b0cdeb33798ec3d2f0ccebb730cdb1208aaa22ab0cdad150200228d412c42811c81900d0048007045d6923ffc6af20afdc2bf21ab9cffbc16ff45bf8367b0c8eb16fa90828342cfa0afe4d9e90c5bb93fedc6408008a344203042c18202812508080608060401c11abc87db223ffc7db01f6cc6a7d0afdc2bf2175a46ae01aaec6ae7307d2e1f4b031a9d82cfa0afe461f5948008a330540d305240e10d10c04b0a4ac85b9181141104056e403410fc9c3f22162d058f4165d45d690afdc2bf21abc88fff1ab9c3ff40a2bc28aa33884ce23337f43f612bd98cdeb337982878337fd70b3e82bf90f9a83e77203f360f9ec3ef60c2871336b4cdb1310200228c895124524093c238c28c2422021c21861421020cc08204f045d32174b45d282beb8ee2f0a7c44ebd0fc9c3f221abf059ff162d04828576c858f4168a43ff41b7c85aaa174ed4172f8cf60260ac29ec0faec3e7b201cbd0f9a83e771abe429fa0a7982b2f38cf63200228c44c0e07034c301c0b070290181c0507008304c00a0458f457f843f6157fb828780fc9c3f220f88c3dec0ffd028af0a2a858b41459753d5fb00fbd880f9dc3e7b0f9a830fcd82871250200227fc108104204057ec03ef6095fef1c0227e410c108104100404ed223b2c4cbf80cecb43b298cbf50d5f3b141227b986d06886585585184c1c1241107ce1007ce0e0f9c0b60a07024320c1c1c040c30f9c004812eae4dd7a0afdc2bf2174ecdde0376c9192c2b7e0adf60a6e82922370dcadbe2b6e48ae12b3bd4f261b1b42cef16ff45bf81fde4982022aa08aa336cd5b2b58cdd3b376b4ad37374ccada22b5c029b720acbb2b39c2bf90c5bb90b3e8db3022aa913758480089ed04204108100ace716ee4257cac60089ec0430420410401013718d5ee0365c433659cda3b365b8357bc050489ea04204108100da3b055ef514122798104100204204008200d967055ef21412279412c2281242216e4606dc85128d825b9041b72009043dab13b903db517dd0daa737084db2c36c9cdc2337094dc202c4a340f3e83da620dae236a90dab136af88128d480089e308c0891881ad8461ad84433a88333a8801c10fc9c3f22229f43ea80fad829ba0a488dc3722b848aa822a8cdb35303e6a0f9dc29b720db3022aa860f9b880089e2⟩, ⟨0x4e223410387943b71d08d3865a2da136890c37615f08c037412c000, 0x4e04d04c04b18a1891881870461856036026010403810abc03d2a0ebd02af92e4c04fab2e3d0b9740bff49ff0175a56ab75aaa54ea30f998f0abac493807c9c5fbb17ff02ff90bbd89e30075f0ee62271ec2eeb0ab98d406008aa418a0490480471861850440431820402812e3c82af90ebd03e6613ead0a300bff43d2a2e4c0a9270abc0b0ab985ffb0bfe42ef60bbac493817eec2aeb07c9c9406008aa32092084070464022012001c1166e88be10a1e050a2bc28aa1a1a83f6c1a2f509bf28593f0c3ef60a1c4687a1648c6408008aa204204008100ee62056aaa1c0229f010810020403b988eeab096aa8180229ec12812422021cf98506dc833e6087045d32174b4cf6333dc0983f173945d6922bd47db322bdc8aef22aa08aa334cf60260ac5cbe208aaa22ab06408008a7a0420410400c1577855de3083e7b1ecc43ef60ca92c180229c4280c0602c11811418041020a0047047f794209c28af0a2a85bfd16fe08ffb165d508640fad8287842198787c343f363fedc30a1c4d9e916ee46408008a6d0cd0cc0cb08a0c90c80470851840c30c2181301376c8dde0464b0bab92b3bcdd62375e87f312b7b14f263fef10828367b0c8eb38ddad2b2ecdd3b374ccad372b58cada22b39cffb7367a45bb92d01c0229b010c1081041004047c2a1f29c7c685a6c040a7947b620a7b07b31110180229a984444043c43843583042c42041d8181c056040700d808100f04593d0b0f82c220aea82af013eac2c630a2bc28aa0abe42aea16180287822f843f6c166e82cb10b1e920ae9c1f270b0f02bfd0abac2ae60ab944fa2124e03ef60a1c45923164fc3390200229a432c12832432031c31020c308304200a0458ea17f9468781618048fa1a1a858bb576c85920162c83ebe2c5fbb17fec4938161d83e7b13e885877162ac3ebb246832180229a01c090c8407405070101c010700070450ff903eb6229f55de10a2bc28aa0a1e03f6c243e6a0f9dc3e7b0c3ef60a1c46574c88008a662080472064044014001811458ea0fad8af660a2bc28aa0a1e03f6c2058760f9ec30fbd828711458a22002299492c320111b0c104900604dae836cb0db272b5dcadbe2b6e47f312b6acdaf91fa98adec36da0c2b5c0836b88ada236af85408008a610a4ad65b9556e540510ce0cd0cc04b0c83070c66201588040e0801381337c8cdb74a5a8cdeb337983fbc0fc9c3f225a589696f0faa08a7d0a2bc28aa0fdd03f7f0fdb8bd2c2f2ccbca02f1ecbd282f4a97336c4cdad57ff43e7b203e6a0f9dc28710fbd83f362f0ec32f0e4d408008a60⟩, ⟨0x3db1a18bec5ca2d215f8a744201970b085381e40cc05c81a002c000, 0x6e110644013c6e0e1b834190c04b0642862061c61861411010c19020410404410a7e02af023dd88d3f16dd03af417cb05dba42ab44fab168a50a7e0abe43d2a22ee83e660bff51177e48d3416d9419ad07c9c2b2f072f4493817ed02aeb0a7cc5afc0bbac2ae60bfe42ef6408ff218022bc42c460b1141102c436c26c10b1007045aa40b5c82d6d47ad11ead282d7c0b4986b70168fca479cc80b4842d200b4e05a3b19020022bb81081002040169b05a3b096c2518022ba81081002040434c815afbc7008ae7042041081006af9056ba61c022afc10810410030479f31e88479be0c79eb1e6dc79b60d018022af864464013813413012c12812462061c11811460c6086041010045d7b177ac5dba4afb45f2c27cec9f3816ab06c70176f479e91eadc5aec1e6b07a361e9d079f0168d52066b429fa1a7dc5b65072f45bff175d41a6d13cf05aae1b2f079eb1e6d829f3168c4f406008abd04e04c04b04a0890480870860850440430420410403811e6b04f781b1c07cbf1e7c07cb31e9d07a361e7a45aac4afb47ab7168d45aec384f7213dc46ca71e6d879eb1b2f01a6d0a7e81cbd13cf029f3168c45aae345fa018022af011411010c108104100604b8a9229810ae32e1e4b8a7148a3522cf88b242298c8b2c156b6814122adc104100204022cf815acec5048ab50cb0ca0c90c80870860850820810802811ed9c9fe827fc04fa71a0fc5fe5123e8686a276810a3313ebcb1ed887c34278c05fbb075f05ffc273b84fa2124e091f0dc6008ab30430420410401015aaaceea433d8c33b988eea033d8033bef07008aac04104008100ee62056af81c022aa0180a0601c18064054040a00c10418002013bddc2bf70afc96aa753a986c6d260a82cef174ec53bdf4b3baacee620b3e82bf90cef742609c7408008aa7076281d890b1202c476c50b1082042c40201174a0afae5aaaceea4174ecee2f174c85d2d52db8a52da0b172f8ee62260accf6020eea03baf07408008aa6042041081009c7b075f025aaf06008aa5⟩ ] def tableRRR : Table Block := .leaf #[ ⟨0x3f01d20d685fe2e916b0a544e625d113878439c161096822c06c000, 0x4b0471064208051208041208031810a2bc28aa123e83f740fdfc7eb81fae87ef80a3f028f71fbc0b0fcd828710c28b10a390523fec8008b3b2202c880904806080510404018142494bd2c0fea4bca02f1ecbd280fdfc48fa0a2bc28aa0fdd0b2f0ecbc390c3f360a1c453bdcc8008b3a10d04c04a2202011411018200488002010a1e03f611a1a87b35377a4ed7a0a2bc28aa2f48459752f280bc7b2f29cbc60387b310fbd83f360a1c432f0ecbc391d020022ce410810420401a4d16dab096df618022cc810810420401a4d015b78c7008b2e0460450440430420410401c12a48d5db2120a0bd2127f8ca8ff183e7b0faec7b310fbd829ec0a7947b621caf6614022cac1081041003056d6e576cd5de10c3ebb0f9ec3ef60d018022ca810810420400faec3ef6096d6f18022ca011411010c108104100604b8792e29cb8a92e2b48a60148b242298c8b2c22cf88a35148b2514122c9c11c11811411010c1081041008044af812ad04a7e12a8c4aa712a904a6c1c4a3e128fc4a7b129e84a7f1299c4a661c4afb18022c98108104204022cb015b4945048afb04e08d04c48b08a1891851841831821811803010f6d44ee4163d03dab162d0a9270fc9c3f220ffd09fe32a4955db2120a0a8ff384a340f3e83da6203e6a0f9dc3e7b0faec29ec0a7947b622c4a3520022be411811010c1081005043eb62a49448282a3fca92727f8c60faec7b620a7b029e5116cfd1c022be019121304419101303c4c0d18c18b04a0490642011c61819050440640c1081046012052c7f17d8c8bbf5b0f8787c5afb84fab42ab42af00abe47cbf0bff50a7e0a7e03d2a2acbc3e660ebd05a294c5a3113da50d3207c9c2aeb069b4493817ed029f30bbd85aae1b29c2eeb0ab982ff90acbc1cbd45018022bdc62862412011c11811461010c6089048be522f905ff142ab45a291a1e08bbf1a0c029f81f3ec686a2c5a6c17ed02b2f168c45fbb17fec29f3072f48406008af60450440430420410401815ae8c2a7c1b9d429f80b4a451abe429fa0a7cc1cbd0a8e454afb46008af4⟩, ⟨0x30c1798b3457428513788ec37e16309e04a417009203f81b00ac000, 0x420410810029380a5a029660d7fa01c122e8010c1081041004057f7a0a5f0296e0c29380a5a029660c296314122dfc10810420400a59815fdec5048b7b0461050830810401411fce85be21fcc49faa175c08d281fdc8716ee45bb0233b85baf1101c022ddc10810020404bd982bf9097ea318022dd811811010c1081005042c375ae8c4f781b9d47cfb1f3a861abe429fa13dc86dac107cfd1c022dc863c13813413012c62862412181d81861460c105800e045f6313d845f6113de16ba313db04f3a1b9d44f70168905f7b0b0dc5f6917dd04f7517df50069b44f3c13da44f351abe429fa13cbc5f6476013dc84f71168844f6d35018022dc462c12811c11811461010c608604100a046e750b0dc68e65ae8c4f7817d845f6313dd44f6c1a3b44f612c6af90a7e84f7213dc44f6913cd44f2e13cf01a6d2468ee18022dbc10c1081041004048a3f2e2a57a2f42b8c4228d48b2c22cf83405048b6d042040081008b2c057a3014122da8480d1202c528524520a1d48041431600858012802c12bbf0aef72bab85d3b2bb997a265e89179f70b18c2bf70afc82cef1f9f86c6d260a82c2240aea9129fc4a3f128f82c3c0afe498270b3e82bfd0ca408008b6504304204104010112a904af8129903129fc4a3f128f835e8985008b64042040081004a7f057a2514022d8c108100204022cb015e88c5048b62042041081004a3f128f825e7e06008b6110d04b20a1080872040410802013b0f55c3b1f6c87db31f6c0bca72f280bc7b1a9f46ae01aaecebfd570fcd1f4b87d2c0c6a763afe8ec272f0e471f5948008b3f⟩, ⟨0x3ba1c18d3863e2f91718a0c35e1990c185b41a20620260098026000, 0x450440430420410401810baa8486013ebd5db413eac4fa71829ec0faec493807c9c4fa215018022fa421831030c6042005048ab11f6ccdbec36fc06c6136ea0bc301cdbbd36e8c8aaa22ab04407008be80840430420410401412bdbc58f2166c88be11628850f9ec593f0fbd858761101c022f9c10c108104100404ac722b8b8de320cac382b180ac3f0cac3914122f9810810020401f0d09cee09897a18022f9413812c2282252201152101d82040241161f03f270fc8868bd0faa03ea02b6acadbe2b6e458ea2b7b0686a2b5dc7f314bea8f0f9dc58760f9ecada220ad701a1e8587721020022f8c3b1a0591980570560551940644c14864419100643c138634190c0642c190a0641c8c6c184a36148c6c104a36016042d7c0f9984fab0abe43d2a0bff50aad0a7e02af0168a48be522efc3af4429f82d2626b856c240b5c82d6d1adc18936624a8cdf2336a0cdeb3379989246c2ae60bbac2ef60abac1f270acbc1cbd0a7cc5a310bfe4493817ed02d21169b05a3b0b4802d38624948336c5892155020022f88108104204062494cdb109893718022eec108100204062485892509892b1c022ed81081042040168ec2d210988f118022ed065124414013c13813463012c12011c61861461060c2082046011044eb20b5c82d6d13aac587c164807966168dc5aac163a83f270fc885fb8161805a7c16b8d88e8168d43ea00faa06bb5542d38161dc2b2f072f4587617ed04fa2124e05a6c168ec29f3168c43e7b203e770b4842d2045020022ecc43843058202c582028582024582015482010504500904aefc2bbdc283e0e9ad7fae26dcc29300a4b029220a3f028f70a3a428b80a2bc28aa0a29828784428380a4a029270a39028b10a28c30a1c48408008bb10420410810028380a28c25febc9008ba80430420410401015fe8d7fa15fdfc30a4e029680a59830a5845048ba3042040081002966057fa414122e8810810420400a5a015fe885048ba1⟩, ⟨0x30116d8a2448622d10387d03bc1860b8057428811007e83a814a000, 0x10c108104100404ee203b7c0edec0cce72339ecce7a0d4be7141230d1b282c490b1202c47076182c4507604200804ee2f539c94b6852db85d283bbe4bc31174c85d2d2beb8a2ceea03baf0cf603bbc8982b172f881d0200230cc12c12841900c408404604bc603b0f4bca02f1ec6aad1ab806abb1a9f49b2a2f29c7db32cbc3b1a9d86a710cbc3914ec3f200230c81081002040271fc9ca6098b6b180230c410c1081041004054c3e33abccea10cce72339ecce7a0cce73141230b81081042040339e8162c805048c2c042040081009c63271ac262bec6008c2a2202888081471461451442a004a8002012bbf0aef762aa82c3762b842c630b088cc75331d82bf70afc82bfc0b3bcd62a942bfd0b0f02ff90add830afe47408008c26042041081018aa50add8262b889008bfd042040081012a3d058a6614122fcc10810420404a7d129ff4a8f43629887048bf20c60831820c1080141323ac7f312b7b11bee42488adab1908a6421a0ada22b5c04423907008bef0420410810129ff058a3814122fb410410020404a7fc1628d45048bec0c60450c40830820c10c01c11a1a848fa162c858ea4bea83e6e0fef068bd162ec9161dc3e7b0f9a8687a162ac58761901c022fac6b61606b615c25425024ccea248cea244840234480c0890a020280718612000f04dbf636ff87ef00ffd059750fd84dbff22bdc28780a2bc28aa2bd987f7922aa08aa3162d108644209c58f40fc9c3f2216ff45bf81e1f108666429b70fcd8db3022aa828710fbd830f9ec3e6a3fedc80f9dcd9e916ee4e408008bea⟩, ⟨0x4c825810807b239d1ad8d1466430c166095c40a16d09083680ba000, 0x410400810810020804a7d01661f05048c7821421341241140e462e0d462e0c0629702018a5c070442034022012003814279858f2574c058f40fc9c3f220a1e0dbf636ff88aa822a8c7ef022bdcdbff0a2bc28aa148be10fdb15d34166e950f9ec3e770a6dc836cc08aaa0c3ef60a1c45877161d85923164fcd408008c770470460450440430420410402012a48c3f61576d03fa92a3fcbd21121809fe3203f361ed887b310fbd83ebb0a7b029e51d01c0231d818201c182018114182004182000504cc735378851f7f07df7329b87e773eabc8331c031f6ecfaa8110200231d41820241820201a20141a20105005058f3f63ca0aefc2bbdcba6816fa85bfd16fe07f6c14a63c8cace716ee43110200231cc108104204063c8cace7098f60240231a810810420403e3a8163ba05048c610430420410401013e580f8e83e3b833e4ecf8e53e3a833eed45048c3f0480470440c1201181143088a662e1e4b8a722cc88b722e2a4b8ad22d90822c908a63228d48b3e22cb055b4b45048c3d0a040280f06dca0301b728090a0216e601d6e601811428030a008a04b8212ee9c8aa822a8c8af70afdc2bf236ffc983f36fd8dbfe147ef00b3bc5ce5174c85d2d44982722aa8982b36cc029b70c2bf9205cbe250200230ec180c04a1090a02011c18040a00c7045f741b1b42cef1f79898201f7f07df71f9b47e330afdc2bf2174ecc0afe42cfa1f9947de10c7dbb187e75200230e918b85518b85018a5c1220f20e20d20c40b4080629701c819014410104400f04dbfe36fd87ef022bdc8aa822a8c597d165cd5d34163c95d300fc9c3f22163d0dbff463c42878165d428af0a2a850fd8560a6dc596b161d83e7b203e7736cc08aaa161dc59230a1c430fbd83f36390200230e5224921b1db19214908205b00804686a0fa80587c4e2e938b30faa03f270fc8858ea2868bd2c58774bedc3e77161d83e7b20687a1d0200230e1b2c2c450440c30426c1181337accde63af90adbe2b6e4ce212b7b0ad772b6accdff1fcc4b20ada22b5c0cdad336c453aedc8008c3704f04e04d04c04b18a1891876060451846026011803812e4c4486027fa95db4625e54c205aadc3eb62e490cae627f8d4bfc1fcc4e8be3a3818afa403ebb1f0d09cee271ec1d7c06cc429ec0a7949c7f270b0e8bb2718c9c6b350180230d862c12462011c11811460c108104600a058b6a2e4dd5db4530809fe32e4c589790fad94bac121809fea5aadcc271fc9cee272983ebb0a7b029e51f0d09c7b075f09406008c35⟩, ⟨0x33917689b848e23110f07183601660a003340f606502780a4026000, 0x1b29b25b1d219215b089042008052faa162c8686a1a2f43ea00faa03f270fc8858bb163a8a2c58771a1e83e77162ac58760f9ec81d0200233904c2081013082034930dc2080b420808130820144c208040708200c4c2080142080028143dac6ae01aaec6a7d148ae122aa08aa336ba0db2c36c9c8ab13f898daf9377c99a34377c111a9d8322aa88aac20dae23f6e90f3436af89408008ce3043042041040101667f0bc30667f8fdf0110b723f6e88aac0d01c0232fc108104204042dc8fdba099a22180232dc108104204042dc81667fc7008cb62202888081471461451442a004a8002012bbf0aef76658899e1665e42c630b088cc75331d82bf70afc97ea00b3bcd664f42bfd0b0f02ff94bd9830afe47408008cb504204108101993d4bd982665e89008cac04b0482201841088010608001810afdc2bf21ab9c99b726ca87db31abc86ae01aaec6aad1a9f4b0b3e82bf91a9c431a9d854adb08008cab0430420410401012b8a4ae652b98c32b88cae302b0fc32ecb85048ca20a038180d0603082c828820180706018814280406004100c04b8212f5916aa727fc068201a1a8b9745aadcee681a1e02cef0afdc2bf252e9853c982717ff09e30075f0ee62271ec5ffb0afe4eeab2f4fc32d0200232842c4c162202c4716218214604200704cdeb33798ce233388598f2663c0adab1fcc4adbe2b6e4ad772b7b0c624858925336c482b5c0ada21989242002328010810420406248589250998f31c0231fc108100204062494cdb10998f1180231f810c1081041004058a6562985987d0d29f44a8f529ff0d29fd141231f4108104204043bfd0f340998a51c0231e810810420404a7fc1661f85048c79⟩, ⟨0x3831870ba052627d13789844961fe0f4070835818608b8404152000, 0x63863413012c12862462061c61411010c104600d045deb1b4a86ca417cb06c70175ec6cba1e5ec79ac1b1fc6daa27ce05dba1a8885dbd3c4f3c066b44f69069b44f3513cb84f7116d944f721a7dc5bff175d4c406008da304304204104010133ee0cfaa52f90333e94cef7339e8333bec5048da25b92c1b72296e4906dc880821810801c11f6ccdbec22bdcdbf036ea08aa822a8c4ebd0b5c82d6d13ac84eab0b4bcd36ef4dba322aa880b4e02d20190200236841081002040675803cfa099d75240235e01081040019cf61c0235b81081040019cf11c0235ac1081042040672d03cfa099ce62402359942452141c5184084042c001c10a2bc28aa165d42c2223fec2c630fad8aefc2bbdd9c72672942878303f360aff59c710b0f030a1c46408008d62042040081019c710b0f02672989008d390430420410401012f0c0fdf0670cc322ab10b723f6e83437f07008d2c042041081019be80f9ec2670949008d2304304204104010107fd89aae26abc307fb099ed07fcc307fb85048cfa0ce0cc0bb90b0bb90a0bb9090bb908105101231b00241473a91ce566ca43a6b66d80fe26667ed0dfc22ac48aa822a8c3ea80fc9c3f221b1851f2e22b85166c90fdba42dc88aac0e8903e77208aaa210200233e4108104204066c903a24099b61240233c12281d890881860830424810402012e0f45c6d171a05c75170e84eb213af44eab0b5c82d6d1aed42e733b5fc2e76385c33202d380b4805c700b9942d211d02002339c15c18160510604013c23813503012c62412021c61811411060c6090012046c701f8cc7dfc1f7dc2bf70afc86af83b6cc7d2a0b3bc7cea37c806ca42aea06c7f1b6a82bfc1b4a82b7d1f5f86cba1e5ec79ac3b6c581f6ec31b6b04f3c13dc84f710afe44f350ade02b761f3b86af513da41a6d13cb8def9331c11408008ce6⟩, ⟨0x47b21510107bc38c19c8b985a02b514789e439a195075024804e000, 0x13022c22858853e60810458801c10fa803ea817dd03f270fc883eb636d9cdb2c36c9cdc23163a8dc21303e772058760f9ecdabe36b886162888008dbc0430420410401013718cd968365c43368ecd967365b83368f45048dbb043042041040101629852b724aef434a8f529f44a7fc36bad05048dba04c076242141d840831620810070508e42b6f8adb92f0cc6a6c22aa08aa3478e88af52b5dc8af71e1f108f1348aac2b5c0822aa908a6421a06408008db908b08a3e62011c118f98506dc821c1123e95d30163d0bd2a337fc58f216289296b0fc9c3f2233884cdeb33798d0f9dc3e7b161d8cdad20cdb1190200236e0280a0a02428080a01c28060a00828010402010a8fc5a71168d45ae30b6e42bf70afc85aa40b3bc2bfc14b0a7cc5a31169b02a390add82bf90c7408008db7042040081010b723f6e826adb06008db5042040081041002080161dc592309ab201c0236bc10c108104100404b8ad228fcb8a90c8a3522cf88b2c0d6d21141236b810810420401a1e8587709aabd180236b415815424864524063c63062c62812412011c61861411010c108104201304b97a429f82d720b5b458f40a7e02d7c0b4983f270fc886b705b0909ae16aabc58f2168a48bbf22f94683042ab4687c574d15d305c4938202d200b4e05a3b0b4841cbd0a7cc5a31169b05fbb17ed02b2f17fec687a161dc58760f9ec3e774d0200236b02c470b1181082c410b1005045a3f0b5f02d720b5b45aa4282d3f26b848202d38168ec2d21110200236a445925435034c34834434123c190e48d0cc10b48a064243192143112052013043e3813eac2ffd0f9982af90f4a82af02e4c03ea02e3c83af422bc458ea0faa03f270fc899d744bea99d61473a91ce5161f08a2f5c2ae60bbd82eeb0abac1f27124e05fbb0bfe43da60f9ec80f9dc3cfa675805877161d85ffb1a1e92408008da82202888081471461451442a00ca8002012bbf0aef72bab85d3b2bb982c630b088cc75331d8b8210afdc2bf20b3bcd2baa42bfd0b0f02ff92609c30afe47408008da604f08e04d04c04b08a4202088022200508002813bdbcb8213bbe54ba62f5902cef2f0c5497f1b1842bf70afc86ae01aaed0ffd461b46c6340eef23baacbd3f2609c2bf943bfd0f340c6a762502002369410c1081041004049f3c170c45cb617290416ffc5c28171c03407008da4⟩, ⟨0x33d18b8b1c56229b142875838011908183b41ae0c104d822002c000, 0x10c1081041004048e77231d88c3b0c8c2a230f48c380c8e79141238b823022c1281d894844830401c1163d109fb0e980adf82b6f8adb90fc9c3f222b7d8aded1fdb03af20e8c8d0f9dc3a2420ad702b6883a2f190200238b410810020406bd99af3509aff2180238b010810420406bd99af3509afea1802389c10810020406bd95af6d09afe618023898c64358354c504441c1030f30e18d30c0891881871061853043031804812f6b42bf70afc859754288c28780a2bc28aa163d06af21ab9cfe686bf895cf80fc9c3f220e981afe16bdc909fb6befc5d282beb85d32174b5afbc683f360a1c430b3e82bf92609cbb396bdb428a30e8903e776bcd43a2f20982b172f9af666bd952408008e2504204008101af350e8bc26bf807008e241181170961950d43113100703c63032c62861cc18c14c10c0c6011051f2e0faa10a216beec3f740afdc2bf2260a8982f0b3bc28af0a2a9afb82f3e9af7f0fc9c3f226bda46c6d173943f7f260fc5d32174b5af3a643e770e89098270a28c3f366bdb5af666bd942cfa0afe480c2871260ac5cbe6bcd43a2f4502002388c10810020406bdb428a309afb91c02388810810420406bd95af6d09afb0180237f810810420406bdb428a309af731c0237dc10810420406bcd43a2f09af3b1c0237c410c108104100404ba6e3a5887f720cb8f92b39c5baf0daefa1c0237a010810420402e3e416bbe47008de710f10d0b0302c0b0b0282c062a01451140c508a04aefc2bbddaef30fad9aee32e3f0acea3a4f45bfd16fe07f311fce87f790fd842878165d428af0a2a926baf8b8f92b39c5baf16ee43ef60c3f360a1c49408008de604204108101aebe0fbd826bb909008dbd⟩, ⟨0x4511fc8ef46de32116809e44a622d0ce862826811e0640100044000, 0xa30a2c9289241b480ba141b440ba048043db50f6ad9cb66739458a2673d59cf0574c058f20fc9c3f22163d048fa343da6672d03cfa161d83e7b203e771d0200239c0190906421b09b044005043ea00faa03f270fc891cea473943eb6670919bed28a0f9dc3e7b66fa08110200239bc13012411c31810c108104704db2c36c9cfaaf17dd0dc213708c5c6d171a0debc170e95e63329b8c36af8dae2205c333eaa0c92b18db68200239b88310250208184141101007046ae01aaed0f6b1a9f46a6c66290bca73bdcc7fb92f280bc7b2f180c1a9d90eff43cd032f0ecbc39190ffd200239b413022412021c48050601018001c10afdc2bf20b3bc2b7d0aff02c372f29cef731fee4bca02f1ecbc60302b780add82bf90cbc3b2f0e460b0a88008e6c40d40a4091080470450a011000804bca02f1edbfb51fbb0bca73bdcc7fb92f1807eb81fbc028fc0a3dc7eba3429280a49cbc3b2f0e430a39028b11c292c200239ac10c1081041004052aed629952af90d2a6f4a8f52ae80d2a71141239a810c1081041004048f2623ca88e770c8c21230f88c3d0c9f22141239a425024cc48c441c0f08e08b30a3093063050c40830820c13c117f94683f428c86ae7123e86af213e9c2bf70afc84faf2f6b4fe680a2bc28aa338d42878165d49da0428ccbd720e9ad517eec2bf913e8849380b3e8982727994bb390c2871075f05ffc273b83f36390200239a010810420400a4a016fed87008e6710e10d5090b01851050d408705bd756f6b05d7016ff45bf82f180bca02f1ecbca71fee45bea16f88ef732bbf0aef73dbd702f0e4316ec05bb92f0ec6408008e6504204108101bd7016ec026f6b49008e3c04c1080471208060a08041208030a08001c10a2bc28aa0fad82878165d47d681f4fc7d651b18c6ae01aaec7d33303f360a1c431a9d87d2e1f4b060fea48008e3305004f04e04d18c0642862462019071861850440420640419003c11eadc5aec168d42d291e7a44ebd1baec7a361e7cd6de24b1b46a600a9f06da31b1c0696c1bce9116ab85a311b2f079eb1e6dc69297600a8e429f313cf01a6d1a4d04f6d1a590e406008e310420410400c15b6e56dfc096dab1a4d025b7a07008e300420410400c11a5c069675b6e831a4cc69641a4d03406008e2f⟩ ] def tableRR : Table Block := .branch 9 tableRRL tableRRR def tableR : Table Block := .branch 19 tableRL tableRR def table : Table Block := .branch 38 tableL tableR def records (i : ℕ) : List ℕ := PackedNatTable.records table (32 * (i / 16) + i % 16) end PolicyArithmeticPacked0 end PolicySubmissionPart41 /- Component PolicyClosedConstantCache; SHA256 1a86e0331287eb18ba40023f3aa8644583a558d8681972b439a1396ca9fdb6d3. -/ section PolicySubmissionPart42 /- Experimental constant folding for arithmetic certificates. Cache entries are checked against the original program. This proves transfer of Equations, not syntactic equality between the original and folded programs. -/ namespace PolicyClosedConstantCache open ClosureLinear ClosureSemantics Bounty def checkClosedRatValue (program : ℕ → Node) (fuel i : ℕ) (q : ℚ) : Bool := match closedNode program fuel i with | none => false | some v => decide (v.b = false ∧ v.z = 0 ∧ v.q = q) def checkClosedRatValue_sound (program : ℕ → Node) (input values : Valuation) (he : Equations program input values) (fuel i : ℕ) (q : ℚ) (h : checkClosedRatValue program fuel i q = true) : values i = ratValue q := by cases hv : closedNode program fuel i with | none => simp [checkClosedRatValue, hv] at h | some v => have hf : v.b = false ∧ v.z = 0 ∧ v.q = q := by simpa [checkClosedRatValue, hv] using h have hq : v = ratValue q := by cases v with | mk b z r => simp_all [ratValue] exact (closedNode_sound program input values he fuel i v hv).symm.trans hq inductive Cache where | empty | branch (key fuel : ℕ) (value : ℚ) (left right : Cache) def Cache.lookup : Cache → ℕ → Option ℚ | .empty, _ => none | .branch key _ q left right, i => if i = key then some q else if i < key then left.lookup i else right.lookup i def Cache.check (program : ℕ → Node) : Cache → Bool | .empty => true | .branch key fuel q left right => checkClosedRatValue program fuel key q && (left.check program && right.check program) def Cache.lookup_sound (program : ℕ → Node) (input values : Valuation) (he : Equations program input values) (cache : Cache) (hc : cache.check program = true) (i : ℕ) (q : ℚ) (hl : cache.lookup i = some q) : values i = ratValue q := by induction cache generalizing i q with | empty => simp [lookup] at hl | branch key fuel value left right ihl ihr => have hh : checkClosedRatValue program fuel key value = true ∧ left.check program = true ∧ right.check program = true := by simpa only [check, Bool.and_eq_true] using hc by_cases hi : i = key · subst i have hq : value = q := by simpa [lookup] using hl subst q exact checkClosedRatValue_sound program input values he fuel key value hh.1 · by_cases hlt : i < key · exact ihl hh.2.1 i q (by simpa [lookup, hi, hlt] using hl) · exact ihr hh.2.2 i q (by simpa [lookup, hi, hlt] using hl) def aliasOp : Op → Bool | .alias => true | _ => false def foldedProgram (program : ℕ → Node) (cache : Cache) (i : ℕ) : Node := if aliasOp (program i).op then match cache.lookup i with | some q => ⟨.qConst q, []⟩ | none => program i else program i def foldedProgram_equations (program : ℕ → Node) (cache : Cache) (input values : Valuation) (he : Equations program input values) (hc : cache.check program = true) : Equations (foldedProgram program cache) input values := by intro i unfold foldedProgram split next => cases hl : cache.lookup i with | none => simpa only [hl] using he i | some q => have hv := Cache.lookup_sound program input values he cache hc i q hl simpa only [hl, evalNode, evalOp, List.map_nil] using hv next => exact he i end PolicyClosedConstantCache end PolicySubmissionPart42 /- Component PolicyClosedConstantValues; SHA256 40da54e30f0c713c767a92a5713e6c5c033211dc18793c7ff4514970743381a9. -/ section PolicySubmissionPart43 /- Canonical rational values: no rational division is needed at lookup. -/ namespace PolicyClosedConstantValues def q0 : ℚ := ⟨1, 3, by decide +kernel, by decide +kernel⟩ def q1 : ℚ := ⟨1, 4, by decide +kernel, by decide +kernel⟩ def q2 : ℚ := ⟨1, 5, by decide +kernel, by decide +kernel⟩ def q3 : ℚ := ⟨1, 7, by decide +kernel, by decide +kernel⟩ def q4 : ℚ := ⟨1, 9, by decide +kernel, by decide +kernel⟩ def q5 : ℚ := ⟨1, 16, by decide +kernel, by decide +kernel⟩ def q6 : ℚ := ⟨1, 25, by decide +kernel, by decide +kernel⟩ def q7 : ℚ := ⟨1, 27, by decide +kernel, by decide +kernel⟩ def q8 : ℚ := ⟨1, 35, by decide +kernel, by decide +kernel⟩ def q9 : ℚ := ⟨1, 49, by decide +kernel, by decide +kernel⟩ def q10 : ℚ := ⟨1, 64, by decide +kernel, by decide +kernel⟩ def q11 : ℚ := ⟨1, 81, by decide +kernel, by decide +kernel⟩ def q12 : ℚ := ⟨1, 0x7d, by decide +kernel, by decide +kernel⟩ def q13 : ℚ := ⟨1, 0xaf, by decide +kernel, by decide +kernel⟩ def q14 : ℚ := ⟨1, 0xf3, by decide +kernel, by decide +kernel⟩ def q15 : ℚ := ⟨1, 0xf5, by decide +kernel, by decide +kernel⟩ def q16 : ℚ := ⟨1, 0x100, by decide +kernel, by decide +kernel⟩ def q17 : ℚ := ⟨1, 0x157, by decide +kernel, by decide +kernel⟩ def q18 : ℚ := ⟨1, 0x271, by decide +kernel, by decide +kernel⟩ def q19 : ℚ := ⟨1, 0x2d9, by decide +kernel, by decide +kernel⟩ def q20 : ℚ := ⟨1, 0x36b, by decide +kernel, by decide +kernel⟩ def q21 : ℚ := ⟨1, 0x400, by decide +kernel, by decide +kernel⟩ def q22 : ℚ := ⟨1, 0x4c9, by decide +kernel, by decide +kernel⟩ def q23 : ℚ := ⟨1, 0x6b3, by decide +kernel, by decide +kernel⟩ def q24 : ℚ := ⟨1, 0x88b, by decide +kernel, by decide +kernel⟩ def q25 : ℚ := ⟨1, 0x961, by decide +kernel, by decide +kernel⟩ def q26 : ℚ := ⟨1, 0xc35, by decide +kernel, by decide +kernel⟩ def q27 : ℚ := ⟨1, 0x1000, by decide +kernel, by decide +kernel⟩ def q28 : ℚ := ⟨1, 0x1117, by decide +kernel, by decide +kernel⟩ def q29 : ℚ := ⟨1, 0x19a1, by decide +kernel, by decide +kernel⟩ def q30 : ℚ := ⟨1, 0x217f, by decide +kernel, by decide +kernel⟩ def q31 : ℚ := ⟨1, 0x2ee5, by decide +kernel, by decide +kernel⟩ def q32 : ℚ := ⟨1, 0x4000, by decide +kernel, by decide +kernel⟩ def q33 : ℚ := ⟨1, 0x41a7, by decide +kernel, by decide +kernel⟩ def q34 : ℚ := ⟨1, 0x4ce3, by decide +kernel, by decide +kernel⟩ def q35 : ℚ := ⟨1, 0x10000, by decide +kernel, by decide +kernel⟩ def q36 : ℚ := ⟨3, 4, by decide +kernel, by decide +kernel⟩ def q37 : ℚ := ⟨3, 20, by decide +kernel, by decide +kernel⟩ def q38 : ℚ := ⟨3, 28, by decide +kernel, by decide +kernel⟩ def q39 : ℚ := ⟨3, 0x64, by decide +kernel, by decide +kernel⟩ def q40 : ℚ := ⟨3, 0x8c, by decide +kernel, by decide +kernel⟩ def q41 : ℚ := ⟨3, 0x1f4, by decide +kernel, by decide +kernel⟩ def q42 : ℚ := ⟨3, 0x2bc, by decide +kernel, by decide +kernel⟩ def q43 : ℚ := ⟨3, 0x9c4, by decide +kernel, by decide +kernel⟩ def q44 : ℚ := ⟨3, 0xdac, by decide +kernel, by decide +kernel⟩ def q45 : ℚ := ⟨3, 0x30d4, by decide +kernel, by decide +kernel⟩ def q46 : ℚ := ⟨4, 3, by decide +kernel, by decide +kernel⟩ def q47 : ℚ := ⟨5, 4, by decide +kernel, by decide +kernel⟩ def q48 : ℚ := ⟨5, 7, by decide +kernel, by decide +kernel⟩ def q49 : ℚ := ⟨5, 0x961, by decide +kernel, by decide +kernel⟩ def q50 : ℚ := ⟨5, 0x41a7, by decide +kernel, by decide +kernel⟩ def q51 : ℚ := ⟨10, 9, by decide +kernel, by decide +kernel⟩ end PolicyClosedConstantValues end PolicySubmissionPart43 /- Component PolicyClosedConstantData0; SHA256 e644d0d78ba074e905b795b6589e4c525d3029b6cf561fbc6647a657e42506a2. -/ section PolicySubmissionPart44 /- Every cache leaf contains its original node ID, closed-evaluation fuel, and claimed full rational Value. The table is untrusted until checked. -/ namespace PolicyClosedConstantData0 open ClosureSemantics PolicyClosedConstantCache def certificate : Cache := (.branch 0x1abf 3 PolicyClosedConstantValues.q44 (.branch 0xf42 3 PolicyClosedConstantValues.q4 (.branch 0x9ee 3 PolicyClosedConstantValues.q10 (.branch 0x852 3 PolicyClosedConstantValues.q35 (.branch 0x832 3 PolicyClosedConstantValues.q5 (.branch 0x816 3 PolicyClosedConstantValues.q3 .empty .empty) .empty) (.branch 0x9ce 3 PolicyClosedConstantValues.q36 (.branch 0x87e 3 PolicyClosedConstantValues.q33 .empty .empty) .empty)) (.branch 0xaa9 3 PolicyClosedConstantValues.q11 (.branch 0xa34 3 PolicyClosedConstantValues.q1 (.branch 0xa08 3 PolicyClosedConstantValues.q8 .empty .empty) .empty) (.branch 0xf2b 3 PolicyClosedConstantValues.q2 (.branch 0xee6 3 PolicyClosedConstantValues.q0 .empty .empty) .empty))) (.branch 0x165f 3 PolicyClosedConstantValues.q7 (.branch 0x15e4 3 PolicyClosedConstantValues.q16 (.branch 0x151a 3 PolicyClosedConstantValues.q40 (.branch 0x1500 3 PolicyClosedConstantValues.q20 .empty .empty) .empty) (.branch 0x1641 3 PolicyClosedConstantValues.q15 (.branch 0x1614 3 PolicyClosedConstantValues.q19 .empty .empty) .empty)) (.branch 0x1862 3 PolicyClosedConstantValues.q42 (.branch 0x1826 3 PolicyClosedConstantValues.q37 (.branch 0x1694 3 PolicyClosedConstantValues.q6 .empty .empty) .empty) (.branch 0x1937 3 PolicyClosedConstantValues.q32 (.branch 0x1928 3 PolicyClosedConstantValues.q30 .empty .empty) .empty)))) (.branch 0x2c93 3 PolicyClosedConstantValues.q39 (.branch 0x213f 3 PolicyClosedConstantValues.q34 (.branch 0x1ef3 3 PolicyClosedConstantValues.q21 (.branch 0x1e9b 3 PolicyClosedConstantValues.q31 (.branch 0x1c38 3 PolicyClosedConstantValues.q13 .empty .empty) .empty) (.branch 0x1fd1 3 PolicyClosedConstantValues.q22 (.branch 0x1f8d 3 PolicyClosedConstantValues.q12 .empty .empty) .empty)) (.branch 0x29c4 3 PolicyClosedConstantValues.q18 (.branch 0x2665 3 PolicyClosedConstantValues.q41 (.branch 0x24d3 3 PolicyClosedConstantValues.q9 .empty .empty) .empty) (.branch 0x2b61 3 PolicyClosedConstantValues.q47 (.branch 0x2ab1 3 PolicyClosedConstantValues.q14 .empty .empty) .empty))) (.branch 0x32e2 3 PolicyClosedConstantValues.q29 (.branch 0x3125 3 PolicyClosedConstantValues.q43 (.branch 0x2e37 3 PolicyClosedConstantValues.q27 (.branch 0x2e2b 3 PolicyClosedConstantValues.q25 .empty .empty) .empty) (.branch 0x32c4 3 PolicyClosedConstantValues.q28 (.branch 0x32b3 3 PolicyClosedConstantValues.q26 .empty .empty) .empty)) (.branch 0x4649 3 PolicyClosedConstantValues.q46 (.branch 0x36e5 3 PolicyClosedConstantValues.q23 (.branch 0x3573 3 PolicyClosedConstantValues.q24 .empty .empty) .empty) (.branch 0x665f 3 PolicyClosedConstantValues.q51 .empty .empty))))) def checked : certificate.check (boundedProgram ClosureFixedWidthData0.program) = true := by decide +kernel def program : ℕ → Node := foldedProgram (boundedProgram ClosureFixedWidthData0.program) certificate def equations (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData0.program) input values) : Equations program input values := by exact foldedProgram_equations (boundedProgram ClosureFixedWidthData0.program) certificate input values he checked end PolicyClosedConstantData0 end PolicySubmissionPart44 /- Component PolicyHotLiteralOverrides; SHA256 cb3ccaa59610572a37eb08df718151020fbbae36bd7c782b955a763666ce3ef8. -/ section PolicySubmissionPart45 /- The first three comparisons avoid evaluating the underlying program on hits. Only semantic Equations transfer is claimed; the programs need not be equal. -/ namespace PolicyHotLiteralOverrides open ClosureSemantics def program (base : ℕ → Node) (zeroId negativeId oneId i : ℕ) : Node := if i = zeroId then ⟨.qConst 0, []⟩ else if i = negativeId then ⟨.qConst (-1), []⟩ else if i = oneId then ⟨.qConst 1, []⟩ else base i def equations (base : ℕ → Node) (zeroId negativeId oneId : ℕ) (input values : Valuation) (he : Equations base input values) (hz : values zeroId = ratValue 0) (hn : values negativeId = ratValue (-1)) (ho : values oneId = ratValue 1) : Equations (program base zeroId negativeId oneId) input values := by intro i unfold program split_ifs with h0 h1 h2 · subst i exact hz · subst i exact hn · subst i exact ho · exact he i end PolicyHotLiteralOverrides end PolicySubmissionPart45 /- Component PolicyCachedHotLiteralData0; SHA256 5e9d088002bd8e91702216f5936cdad023935344200d73777005217bb07c9aac. -/ section PolicySubmissionPart46 /- Full-Value certificates at the original bounded nodes, each with fuel 1. -/ namespace PolicyCachedHotLiteralData0 open ClosureSemantics PolicyClosedConstantCache def zeroChecked : checkClosedRatValue (boundedProgram ClosureFixedWidthData0.program) 1 0x81b (0) = true := by decide +kernel def negativeChecked : checkClosedRatValue (boundedProgram ClosureFixedWidthData0.program) 1 0x817 (-1) = true := by decide +kernel def oneChecked : checkClosedRatValue (boundedProgram ClosureFixedWidthData0.program) 1 0 (1) = true := by decide +kernel def program : ℕ → Node := PolicyHotLiteralOverrides.program PolicyClosedConstantData0.program 0x81b 0x817 0 def equations (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData0.program) input values) : Equations program input values := by exact PolicyHotLiteralOverrides.equations PolicyClosedConstantData0.program 0x81b 0x817 0 input values (PolicyClosedConstantData0.equations input values he) (checkClosedRatValue_sound (boundedProgram ClosureFixedWidthData0.program) input values he 1 0x81b (0) zeroChecked) (checkClosedRatValue_sound (boundedProgram ClosureFixedWidthData0.program) input values he 1 0x817 (-1) negativeChecked) (checkClosedRatValue_sound (boundedProgram ClosureFixedWidthData0.program) input values he 1 0 (1) oneChecked) end PolicyCachedHotLiteralData0 end PolicySubmissionPart46 /- Component PolicyCachedHotArithmeticChecked0; SHA256 08d0f731efec008481f7d4699ad83f9959a743a43217e26c01f39384cb3751ce. -/ section PolicySubmissionPart47 /- Every required arithmetic initial clause, checked by ordinary kernel reduction. -/ namespace PolicyCachedHotArithmeticChecked0 open ClosureLinear ClosureSemantics Bounty def checked0 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0 32 = true := by decide +kernel def checked1 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 32 32 = true := by decide +kernel def checked2 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 64 32 = true := by decide +kernel def checked3 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 96 32 = true := by decide +kernel def checked4 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x80 32 = true := by decide +kernel def checked5 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0xa0 32 = true := by decide +kernel def checked6 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0xc0 32 = true := by decide +kernel def checked7 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0xe0 32 = true := by decide +kernel def checked8 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x100 32 = true := by decide +kernel def checked9 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x120 32 = true := by decide +kernel def checked10 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x140 32 = true := by decide +kernel def checked11 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x160 32 = true := by decide +kernel def checked12 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x180 32 = true := by decide +kernel def checked13 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x1a0 32 = true := by decide +kernel def checked14 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x1c0 32 = true := by decide +kernel def checked15 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x1e0 32 = true := by decide +kernel def checked16 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x200 32 = true := by decide +kernel def checked17 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x220 32 = true := by decide +kernel def checked18 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x240 32 = true := by decide +kernel def checked19 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x260 32 = true := by decide +kernel def checked20 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x280 32 = true := by decide +kernel def checked21 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x2a0 32 = true := by decide +kernel def checked22 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x2c0 32 = true := by decide +kernel def checked23 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x2e0 32 = true := by decide +kernel def checked24 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x300 32 = true := by decide +kernel def checked25 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x320 32 = true := by decide +kernel def checked26 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x340 32 = true := by decide +kernel def checked27 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x360 32 = true := by decide +kernel def checked28 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x380 32 = true := by decide +kernel def checked29 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x3a0 32 = true := by decide +kernel def checked30 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x3c0 32 = true := by decide +kernel def checked31 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x3e0 32 = true := by decide +kernel def checked32 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x400 32 = true := by decide +kernel def checked33 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x420 32 = true := by decide +kernel def checked34 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x440 32 = true := by decide +kernel def checked35 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x460 32 = true := by decide +kernel def checked36 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x480 32 = true := by decide +kernel def checked37 : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records 0x4a0 32 = true := by decide +kernel def checked (i : Fin 38) : checkArithmeticBlock PolicyCachedHotLiteralData0.program policyMappedDatabase0 PolicyArithmeticPacked0.records (32 * i.val) (min 32 (0x4c0 - 32 * i.val)) = true := by rcases i with ⟨i, hi⟩ interval_cases i · exact checked0 · exact checked1 · exact checked2 · exact checked3 · exact checked4 · exact checked5 · exact checked6 · exact checked7 · exact checked8 · exact checked9 · exact checked10 · exact checked11 · exact checked12 · exact checked13 · exact checked14 · exact checked15 · exact checked16 · exact checked17 · exact checked18 · exact checked19 · exact checked20 · exact checked21 · exact checked22 · exact checked23 · exact checked24 · exact checked25 · exact checked26 · exact checked27 · exact checked28 · exact checked29 · exact checked30 · exact checked31 · exact checked32 · exact checked33 · exact checked34 · exact checked35 · exact checked36 · exact checked37 def sound (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData0.program) input values) (i : ℕ) (hi : i < 0x4c0) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase0 ((PolicyArithmeticPacked0.records i).headD 0)) := by have hblock : i / 32 < 38 := by omega have hwithin : i % 32 < min 32 (0x4c0 - 32 * (i / 32)) := by omega have h := checkArithmeticBlock_sound PolicyCachedHotLiteralData0.program input values (PolicyCachedHotLiteralData0.equations input values he) policyMappedDatabase0 PolicyArithmeticPacked0.records (32 * (i / 32)) (min 32 (0x4c0 - 32 * (i / 32))) (checked ⟨i / 32, hblock⟩) (i % 32) hwithin have hid : 32 * (i / 32) + i % 32 = i := by omega simpa only [hid] using h end PolicyCachedHotArithmeticChecked0 end PolicySubmissionPart47 /- Component ClosureCoverage; SHA256 b473e60bed02be767c987e29a530125bc3626a03bfff8a8487f2a3a54ede15ad. -/ section PolicySubmissionPart48 /- A finite checked dispatch from clause IDs to certified families. -/ namespace ClosureCoverage def checkEntry (limits : Nat → Nat) (targets : Nat → Nat → Nat) (clauseId : Nat) : List Nat → Bool | [family, index] => decide (family < 4) && decide (index < limits family) && (targets family index == clauseId) | _ => false def checkEntry_sound (P : Nat → Prop) (limits : Nat → Nat) (targets : Nat → Nat → Nat) (hs : ∀ k, k < 4 → ∀ i, i < limits k → P (targets k i)) (clauseId : Nat) (entry : List Nat) (hc : checkEntry limits targets clauseId entry = true) : P clauseId := by cases entry with | nil => simp [checkEntry] at hc | cons k rest => cases rest with | nil => simp [checkEntry] at hc | cons i tail => cases tail with | cons a as => simp [checkEntry] at hc | nil => have h : (k < 4 ∧ i < limits k) ∧ targets k i = clauseId := by simpa only [checkEntry, Bool.and_eq_true, decide_eq_true_eq, beq_iff_eq] using hc exact h.2 ▸ hs k h.1.1 i h.1.2 def checkBlock (limits : Nat → Nat) (targets : Nat → Nat → Nat) (records : Nat → List Nat) (start count : Nat) : Bool := (List.range count).all fun i => checkEntry limits targets (start + i) (records (start + i)) def checkBlock_sound (P : Nat → Prop) (limits : Nat → Nat) (targets : Nat → Nat → Nat) (hs : ∀ k, k < 4 → ∀ i, i < limits k → P (targets k i)) (records : Nat → List Nat) (start count : Nat) (hc : checkBlock limits targets records start count = true) (i : Nat) (hi : i < count) : P (start + i) := by have h : ∀ j ∈ List.range count, checkEntry limits targets (start + j) (records (start + j)) = true := by simpa only [checkBlock, List.all_eq_true] using hc exact checkEntry_sound P limits targets hs (start + i) (records (start + i)) (h i (List.mem_range.mpr hi)) end ClosureCoverage end PolicySubmissionPart48 /- Component PolicyArithmeticPacked1; SHA256 8de4a616bd78e86ad7d187c52c001d223651c96cd2587b1a606f2c5a8f6ac0d5. -/ section PolicySubmissionPart49 /- Untrusted packed arithmetic leaves for the shortened Boolean certificate. -/ namespace PolicyArithmeticPacked1 open PackedNatTable def tableLLL : Table Block := .leaf #[ ⟨0x1930a404d423e10907303401740a704881ec0da05f01f80a402c000, 0x12011c11861411060c1086048042a740abe42a790a9882a6c0abb02aa20a9c028a9242a71079942a6b0a388287f0a4902a6d1d1e46004aa3042040081002a6d042ae21c0129f010810420400a4901e65082a7a1c0129b810810420400a3881e65082a63180129a01081041003042a310a2ec29f90c28ae0a7d4283c0d1e46004a670420410810028ae0a7d420a8c86004a630420410810028ae0a0f020a8a06004a3f04204008100282504292e1c0128b810810020400a1fc1ff7082923180128a410810420400a28c1e650828e0180127f410810400028aa1c0127e8108104000287b1c0127dc10810410030428720a184282e0c283c0a0ac2479180127d810810420400a0f0282b082871180127c410810420400a0f010a18870049ec042041081001ff707994207ff470049e3⟩, ⟨0x15309e84a423610d07b830815c0a004901f00dc05802100b002c000, 0x10810420400b39c2b6f082ced1c012c9010810020400c2b3e082cb428012bf41081040002cad1c012bf01081040002ca81c012be410810020400adbc2b3e082ca218012be091c9189149101005042b3b0aed82c700aebc2c240b1902c3f2880aec42a6d0add88111e48004af70420400810080aec420b1c4a004af10420410000b1947004aed0420410000b1807004aea042040081002b6f0acfc20b0c86004ae80420410000b0947004ae4042040081002bb90aec420afe87004abe042040081002b760aee420afb86004aba042040081002b760aec420aedc6004ab5042040081002a6d0add820aec06004ab4042040081002a6d0adbc20add06004aa8⟩, ⟨0x17a0b2054027412608c04081dc0e0069031015c09a03a012c06a000, 0x42040081002dec0b78420b7c86004b75042040081002de10c20b79c6004b71042040081002d3a0b4a020b7807004b700420410810030b4a020b6f8a004b6f0420410000b6e47004b6e042040081002b3f0acf820b6a87004b670420410810030acf820b68ca004b660420410000b6847004b650420410000b5f07004b620420410000b5d07004b3f042041081002d3a0b4a020b5987004b390420400810030b4a020b4c0a004b330430420410401010aef02b3b0afb430a9b42b760aee430b3e47004b320440830420801010acec2cfa0b0902b73102ce70a9b42b6f0c2cf61c012cac10810020400b39c2b6f082cfb1c012ca881c8181150110045042cf60b3b050b2cc2cac0b29c2ca10b09080b39c30adbc2b3e111e48004b29⟩, ⟨0x1c10d006282e815109d84941fe0b7050822c0ea05f01c009001c000, 0x1081041003042f390bc9c20a28c2efd0bb9c30bcfc6004bef0420410810028a30bb9c20bce06004bec0420410810028a30bbf420bc886004be70420410400c10bbb82ef70bae830bb9c2eb60bad4347918012f9810810420400bb9c2eb6082ef818012f8810810420400bb9c2eb5082eed18012efc10c1081041004042c310acec2b730c2b3f0a9b42b6f0c2c7c20012ee882481818050830820410401c10b1f02cac0b29c2eac0b2cc2c240b9d02eaa0baa02dbb282b3f0acf830b7842dec0b6e8647920012ee410810420400acfc2b3e082ead1c012edc10810420400b7b02de1082eab18012ed810810020400b6e82dec082ea91c012ed410810420400b6e82dec082ea01c012ec011040c1084004042e740b9a42e3f0b8a040b7d02de10c30b9d88004bac042041081002de10c20b9d46004bab042040081002df40b78420b9a87004ba50420410000b9807004ba2⟩, ⟨0x1960c1857429412408583e01aa0bf05481f80d605502380a4026000, 0x42040081003923043968141131ec10c10810410040439350e3c039290c38ee0e48c38fd0c3960141131e010810420400e3f410e4fc5044c770430420410401010e4d438f00e4a430e3b839230e3f430e4d85044c730420400810038ee0e48c38fd0c392a1c1131b410810420400e3f410e4845044c6c0420410400c10e2b428b40e2cc30a2b82a710a1fc34791801319c10810420400a9c428ae0838be180130f810810420400a9c4287f0838b4180130ec10c10810410040428b10a1c038a20e2b040a0f0282b0a9c428ae111e46004c38042041081002a6b042fe81401309810810020400a1fc2924082fe11801308c1081040002fb71c012ffc1081041003042f7d0be9020bad42f66082f691c012ff810810420400bad42f66082faa18012fe810810420400bad410bdf07004bf6⟩, ⟨0x15509f84b02120f306802e814808e03c018809c040019009001c000, 0x10810020400eafc3aeb083bae1801348c10810420400ebcc10edfc7004cff0420410400c10ecb03b380ebe030ec943af40ebcc3479180133e810810420400ec943af4083b3d180133dc1081041003043af70ece43b2a0c3af40ec943af30d1e46004cf6042041081003b250ebcc20ecac6004cf1042040081003abf0eb9020eba46004cea042040081003a7d0e7b820eaf86004ce9042041081003a7d0e7c020eac86004ce60420400810039b50e9f420ea987004ce10420410810080e7b820e9cca004cbb0420410000e9a47004cb80420410000e9907004cb70420410000e8fc7004cb40420400810039f00e7b820e7d87004ca50420410000e7a87004ca2⟩, ⟨0x16608d04301fc0eb06a831c16209b04681fc0d2053018008801c000, 0x4b10a0490608022200488001810b6a42da20f5f03d750b2b02ca70f5bc2da00b5ec2d2f0f5902d65302b3e0acfc30b4e82d28151e48004da60420410000f5d87004da30420410000f5c07004da2042040081003abf043d6b1c0135fc10810420400f2ec3bbe083d621c0135f41081040003d261c0135f010810020400ebac3cbb083cfe180135e010810020400f2ec3bbe083ce11c0135bc1081040003cb91c0135b81081040003cb41c0135ac10810420400f0e03b25083c6f1801358010810420400f0e03c29083c67180134f01081041003043c2f0f0f83c3c0c3c290f0e03b250d1e46004d3a0420410000f08c7004d330420400810030eef420efc4a004d2d0420410000ef987004d2a⟩, ⟨0x14809a04341f20e306682fc1620a304681dc0c604d01f80b002c000, 0x42040081003eaf2020fc906004dfa0440c30420c01010fbe43eea0e9a03a26103eb70fabc80c3eff200137d810810420400fabc8083efa180137c810810020400fadc3eaf083eeb1c0137b010810020400f8c83eaf083eb5180137a01081040003eae1c01379c1081040003ea91c0137901081040003ea11c01378410810020400f9983e34083e6c180136f010810420400f8d03e32083e3a1c0136dc1081042040203e20083e28280136c410810020400a0f0282b083dff180136c01081040003dfc1c0136bc10810020400a0f010f7e47004dae042040081002a710a2b820f7dc6004dad042040081002a710a1fc20f7b86004daa⟩, ⟨0x13d094844c1fa0ef06c830c15e0a104982140e205b02380b002c000, 0x108100204020487e0848f9280139f410810020400f8d03e320848f71c0139f01081042040121e8487e0848f51c0139ec10810400048f31c0139e81081002040121e8487e0848e31c0139d01081042040122c02b760848b61c0139bc108104204020487e0848a5280139a410810400048791c0139a010810400048741c013994108104000486b1c0139881081002040203e200848652801398410810420400f9843e200848631c0139801081042040202bb1084861280138fc1081002041040082003e660fd9420fdb07004e2504204008100282b0f99820fd906004e24042040081003e610f88020fcac7004dfb⟩ ] def tableLLR : Table Block := .leaf #[ ⟨0x1620a604e025411408303e01c40ce05d029011c080039019002c000, 0x420410810049e6126d42129ac7004eed042040081008126d4212994a004eec042041000129807004ee9042041081004933127982128a46004ee5042041000128887004ee4042041000127f47004ee10420400810049e6126d42127bc7004ebb042041081008126d42126f0a004eb5042040081008125c02126a0a004eaf04204108100496c125c02125dc7004ea9042040081004934124cc2124e86004ea7042041000124bc7004ea4042041000124a87004ea3042041000124947004ea0087086045066ba61010ccea208cea2047044878121cc3ef9123e83e73123e048f6123c048f4123c8a0fabc80f8d03e32121e8487e191e48004e7f042041081003e320fabc2123ec6004e7e⟩, ⟨0x1800b40554284109079837412808603801880a804601c008801c000, 0x4104008108100208012fd811308c5044f39041040081004bed044bf514113cdc108104204012fb4112fc45044f360b11c2c4616214588408114112ea44b7f129904b77124a44924284a3f204b7a124cc49b520447920013cb0108104204012de84933084ba01c013c9c1081002040124cc49b5084b7818013c982c496c76c60450c20411811288449fc1269c4b22125d84afe127b849291249049bb128c84b6d304970125b08126d449e6151e48004f2404204100012db87004f23042041081004a770f8c8212d949004efe04204100012cf87004efd04204100012ce47004efa04204100012cac7004ef904204100012c8c7004ef604204008100496c125c0212bb87004ef5042041081008125c0212a8ca004ef4042041000129c07004eee⟩, ⟨0x21a0e305e02c415408403e81c80d104a02180f006a02a0104032000, 0x4c04808708606dc853e604f9801c10ea9439e90e98c3a3e0e6f44d390e9c848f8121e04873123c848f4123c0d0e6d43a7d0e7b88121f8487a191e48004fb104b04a0c81ad8470a4ac30a4ac0181135d42bbd0b0902c70122904d73121e048731359c2c640b0fc48e2302bb90aec48121e8487e151e48004fad042041081002bb90aec42135d87004fac042041000135d07004fab04b0ca0470a4ac65b9096e401810e7d43a720e98c3a3e134f048f8135b04878121cc4d680e7a448f43039ee0e7c08121e8487e151e48004faa042041000135b47004fa7042041081003a7d0e7b82134e86004fa4042041081004c28044d2314113df4190906420415b0db085044cfa0b1c04cf6133c4a133b04cbe132942c640b0fca0aec48132e44ca0111e48004f79042041000133dc7004f78042041000133c87004f75042041000133b47004f74042041081004ca0132e42132fc9004f6b042040081004c27044c6114113d8410c1081041004044c3b130e84c2e130984130a04c2713090347914113d801081042040130904c281309c3130bc7044f3a⟩, ⟨0x1c50b4855428e13108d841c1f20eb05a827c12207b03280b0032000, 0x23422c12011c88062201508044200c8044ef813bd84ef50f2e03cb3139a84ef313bac4ee613adc4eb113aac4ea6123c8e0eef44e33138c44ee20c4eae13ab47479200160a810810420400c3bbd084ef9280160a41081040004ef71c0160a01081002040138cc4e31084ef41c01609c108104204013b884eae084eec1c01608810810020400c4ead084eb828013ff01081040004eac1c013fec1081040004ea71c013fe011811440c2082005044e74138a039e9139b84e6b139904e381c4e210eef44e33138c444791c013fdc1081002040138843bbd084e751c013fc41081040004e651c013fb81081042040138cc4e31084e391c013fa410810020400eef83bbd084dff18013f9418070a0182803060081005043d610ef843cb80f2cc3bf00f3ac3d251480eef83bbd0f2ec3111e48004fe4042041081004da6044dbb14113eec108104204012fd84da61309c3136b47044fb5⟩, ⟨0x1660a804a82280fe07403481780ae04a82080d205602000a8028000, 0x420400810059f0166d021688860058b9043042041040101167d859f41679c3166d059f0166883167dc70058b40420400810059b41668821678c60058b10420400810059b4166902166e860058af0420410810059a4166882166a870058a9042040081004cb90aec421668460058a8042040081004cb90aee42165bc60058a40420410001659c70058a10420410810058a413ffc58240c58aa1c1161d41081002040160941160f0504586b0420400810058271609458240c582d1c116194108104204013ffc11608c5045864042041081004eae13ab4213d886005834042040081004f2413ab4213ca8700582d042040081004ee213ab8213c80700582c04204108100313ab4213bf8a00582b⟩, ⟨0x1da0e206b831a1770b084801a60bd05502100dc05802100b002c000, 0x42041081005b6216ea8216ed46005965042041081005b6216e8c216ea060059620420410400c116de05b66085b3a16d885b390c5b7e180164f8108104204016ce85b62085b77180164e8108104204016ce85b39085b60180164d421c31811431030830420070459f416c9859b9133b059f6166a459731c4cb9167c059b41669059a20aee4616cd070059316ca2496c86c74864830816c0201167d05b26167d859b9133e82c640b0fc2c70133b0a166a4b167c059b4132e42bb12059a4166887479200164b41081042040166884cb9085b271c0164a01081002040167c0116bcc70058fc043042041040101168b859f4168ec31689059f0168c0316b8070058f4042040081005a6d0acf8216acc60058ee042040081005a6d0acfc216aa060058ea042041081005a64169b42169d070058e2042040081005a24169902169b060058e1042040081005a24168c02168d860058bd0420400810059f0168902168bc60058bc⟩, ⟨0x1b30c805b42ae14109704381f00d705a027811007202780e4046000, 0x1081041003045d23175905d350c5c77174c05cfd0d1e460059e50420410400c1174dc5d60174883174c05c77173f43479180167901081042040174c05c77085d611801678c1081042040174c05cfd085d36180166fc108104204016ea81173c870059b40420410400c1173805cbd172e0316ea85cb3091e470059af042041081005baa172cc2172e460059ae0420410400c1171f85ca5085c68171dc5c670c5cb0180166b41081041003045cb0171f05ca60c5c68171dc5c670d1e460059ac042041081005c771719c2172ac60059a8042041081005c77171a02171f460059a3042041081005bfb170882170ec600597a0420410400c1170a45c26170803170885bfb0bad83479180165d4108104204016fec2eb6085c21180165d0108100204016fb81b31085bf41c0165bc1081041003045be016ed85ba70c5baa16d885ba30d1e4600596e⟩, ⟨0x1fe0f5066431617d0b7856c28a12f08c840c1da06302680b002c000, 0x420400810080e7b8217daca005a7404c48a0890762020c1092047045ee417cf83f2a17ce83e270fab43ea817cd85f3117c8c5ef417bb82db8343e20205efc17b805eef0f9846479200169cc1081040005f3f1c0169c01081040005f371c0169bc1081040005f321c0169b01081002040205efc085f2428016998108104204017b805eef085ef51c0169841081002040174c01d7c085e70180168b8108104204016fa85be9085e3c1801689c108100204016ce81b31085e22180167f41081042040171a05bee085de9180167e014063c138634190c04b18a0642462011c61811419040640c104f045db9176d05da6175b45d6b175a45d60172fc5c7c170a05bf316fb45bb416dd83d75167cc5966441d7c174c05c77171a05bfb170885bee06cc45bea16fa45baa16ce85b62167c0e479180167dc108100204016fa41d7c085dba1c0167c81081041003045da8175dc2170885bea175b83176b860059ee042041081005c2216fa821769c60059ea042041081005c22175b82175cc60059e6⟩, ⟨0x1fd0f7878439a1b70c885f82b013f096045011006a02a010402c000, 0x10810400068771c016b8c10810400068721c016b8010810020400c683908686428016ae8108104204017ffc682c0868321c016ad410c108104100404582c160ec5ffa0c58271609458240c5ff014116ac4108104204016090117fec5045ab004304204104010117fe05ff717fd431609c5825160903160e05045aaf0420410810058271609458240c5ff91c116ab8108100204016090117fd85045aad0410400810810020801609c117fc85045aac19319219105004f04d04c04b04a1891863e6141b7204f98038117ddc4d39175b45db916fb43d75167cc5d69176985c2817da43a630e8f83a72121883ead0faa02d73121905f63505d30075f05be9167c05bea16fec5c2217d983a7d0e7b880f8803e61351e48005aa80420410400c117df45fac085c6717d98217f807005aa4042041081005c6717d98217ee86005aa1042041081005c67045fa81c0169f410c1081041004045d6017de05f7c172944174c05f66171dc5c67111e46005a7c0420410810039b50e9f4217db47005a75⟩ ] def tableLL : Table Block := .branch 9 tableLLL tableLLR def tableLRL : Table Block := .leaf #[ ⟨0x1c20d60658300134090842c1f00b9051825410e079032813c072000, 0x42040081006a7f1a9d021b0ac6005b79042040081006a740b7b021afd46005b72042040081006a740f8c821aca86005b6b0480470460450440430420410402411a9f46aa90fad03f231aad06aa21a9f86aa62891a9e03eaf0f8c86a741a9e46aa31a9fc8211e46005b67042041081006a79046ab214016d981041002040167c05bfb0869bc18016ce010810420401609411a6805045b2e2202488072a010504a8001411a4ac3d251a5b469671a5883bf00f2e03cb3143be12869260c3bbe0eef4447920016ca810810420401a4983bbe08696e24016c8410810400069681c016c8010810400069631c016bf410810400068e11c016bc010810420400c68390868bf28016bbc10810020401a1f868390868b41c016ba410810020401a0b0683908687c18016b9488042200c4802120041005045f3e1a1d868711a18c683c1a0c468231481a0e4682c17ffc3111e48005ae4⟩, ⟨0x20c0f0872c2f01620a604d82400f807282c011407402f00a4026000, 0x430420410401011b9a86e691b9a06e3f106aa31a9fc6a781a9d04479180170c410810020401aa8c6a7f086df41801709412442011c11841410c4081041009046c611b6d06aa91b5e46ce90f5d46cbd1b1986a7d1a9f8a1aa8c6c381b39c6cb807c9c6c631a9e06a79211e46005c21042041081006ce707c9c21b6d46005bf7042040081006c381b2e021b5e86005bed041040081006c631b39c21b4a46005be5042041081006cb807c9c21b2f87005bb60430420410401011b19c596e1b1a45973106c63132e42bb90d1e47005bb5042040081006c63046cab1c016eb501500d0090041005042cac0b29c6c79133b06c6716ac82cb31481b18c5a6d0acf83111e48005ba80430420410401011b19c5aa71b1e430acfc6c63169b430f5f48005ba6042040081006c63169b421b1e86005ba5042040081006c63132e421b1b86005ba22472462440432401411b1a44cfa133b02c70282c640b0fc6c67204cb90aec481b18c447920016e8410810020401aa8c6c38086c6218016e8010810020401a9fc11b0d47005b7d⟩, ⟨0x1e60e986b43281740ab050c25a101075823c0f205802100b002c000, 0x42040081006fbc046ff31411728810c1081041004046fee1bed86fe20c6fb41bef038fd0c39601411728410810020401bed06fbc0e3f431bf8c7045c7b0420410400c11b9b06f2c1bcd831a9d06a7f091e46005c760420410400c11bce06f2d086a7f1a9d021b9b07005c75042041081006a7f046f371c0171d010810420401a9fc6a74086f2a180171c011010c1081041005042df1146eff0b7986a7e142dec0b78431a9e44479180171b81081042040169b42b3f086ef9180171b013422c8282820242210805044420008045a3b0f5d46ef50b6882d2f0b6a42cac0b29c2d651bbb42da00b5ec2d730b4fce0c2b3f0acf82d28168c05a6d0b4e87479200171ac1081002040168c05a6d086eee1c0171981081041003046eb71b9ac21b0e06aa31a9fc31bb846005c63042041081006aa31a9fc21bb806005c62042041081006aa31b0e021bad06005c3e042041081006a781aa8c21b9f86005c35042041081006a781b9bc21b9d06005c32⟩, ⟨0x28213608603761a50c285c82b813b07703801940b204e00c402c000, 0x42040081007962166d021e7fc6005d6208a0890880470860840830820402411e6a05c280f5f05a731e4f45d721a6a05a2e0f5d45aa7285a64170885d6e16fec59f0168905a6d0acfc816ae07005d3720c409208407206205204202201040281168d42cac0b29c5ab21e7a02cb3168b85d721a6a0793d170a079a814d168c05a6d0acf85a24167c05bfb170885d6e0c9479200174d81081042040168c05a6d0879e91c0174cc10810410030479681e6b479a90c7962175b824791c0174c81081042040175b811e6e07005d29042041081005d6e1e58821e6b86005d260420410400c1176985dae085bea170885d6e0c5d7718017495b2921c919b15b11b0c20520080479680b1902c3f0b1c05b261e59459a9166e4793d284cfa2c79621668859b4166908132e42bb11d1e48005cf80420410001e4f87005cf50420410810078f5166d021e4b07005cef0410400810810020801309011e3b05045ce90420400810078730e9f421e2dc6005ce63e680f06dca034280a0a024f9a01828030a0081042800241123c048f2123e04878121cc3be1134e43a630e8f848f40f2e03cb30efc07835143a7240487a121f83bbd0e9f43bbe0c80e7b88479200173941081002041040082003a7d0eef821e0e07005cad042041081005f660e9f421e0c46005cac⟩, ⟨0x23510f88243e61e50e7855027c12808903f01d20a4038816c040000, 0x10810420401788c7ae1087b23180176a010810420401788c7ae2087af81801769410410020400eafc3c38087ab1180175f01081040007aa01c0175e01081002040170885d6e087a7e180175dc13813413012c12812462181c61861461180d808604e047a6d1e9a06c611a9f46a7e1aaa47a660eb887a3e1e8cc7a311e8e47a381e8d839e93c6d7d1b0e06a791a9e06aa3170885bea178f83abf0f0e01d7c16fec1f27351e46005d76042041081006d7d07c9c21e9b87005d71042041081005e3e075f021e8fc7005d6c042040081005c2216fa821e8d06005d6b042040081005bea178f821e8c86005d6a042040081005d6e047a2d1c0175a482411901501080c8088047047a270b2b02ca7142cb316ac879e8168d479681e4f4a0c2b3e169b45a24168c07962191e48005d682072064044030401411e7a04cec16ac82cb30b2b02ca7147168c05a6d0acf83105a3b2001759c10810020401e5885a24087a281801759811411010c10810410060479ad170a05d721a6a0796a167d86170885d6e16fec7962167c059b4191e46005d650420410400c11e59c79a81e8803175b87962091e46005d64⟩, ⟨0x1d10dd869431e17909004281e80d1057026010406c02600d8046000, 0x1081002040175b87962087c72180178841081002040166884cb9087c391c0177ec1081042040132e42bb9087c33180177e81081042040132e42bb1087c30180177e462862011c11811411060c108104600a047a7f1e9f46aa91e9a07a6d1b1847a361a9f86a7d1e998a175b86d7d1aa8c6c3807c9c6a791a9e05bfb1708891ea887005df8042040081005e2306cc421f0846005df2042041081003af416fb821efb86005deb0420410400c11eefc7bab1edf031ee887ae21ece43479180177a81081041003047bb61eeb47b7b0c7ba21eb887b390d1e46005de8042041081007ae21ee8821eeb06005de0042041081007ae21ece421edfc6005dbd042041081003c38075f021edcc6005db80420410400c11ed807b691ecb031ece47b28091e47005db6042041081007b391eca021eda86005db2042041081007b39047b3f1c0176bc1081041003047b221ebe47ae60c5e231eb887ae10d1e46005daa⟩, ⟨0x243116885c4021eb0ea86fc35219309d04502020ee06a830802c000, 0x10810020401f7c07f39087f6418017b9410810020401fce44b7a087f3f18017b9010810020400bad87dbc087f2718017af410810420401f7bc1cbd087eec18017ad0108100204016fec5c22087ee618017acc108100204016fec2eb6087ee518017ac810410020401f7c07def087e2a18017aa010810420401f6f01cbd087de21c0179ec928924a202e8706d182e8206d04a008044b3d12ce04b64129e43eb4121807c380f5d42c640b0fc7c2f1679c3f23344a770f8c84cb90aec459a20fabc81d1e48005e7a0430420410401011f4f87cf61f3a031f38c7ce11f2f031f6c85045e76042040081007ce3047d3f1411799810810020401f38411f3dc5045e3a042040081007ce31f3847cbc0c7ce91c1178d010810420401f2f011f3805045e331164950644844433833433032d22832432031c31921521019034824814804c10fbe45b260b1902c3f133e848fa133d84cf11f1e07c631a9f46a7e1e8d86c611e9b47a681aaa47a661f1c42c701e9f459e21e5957132e43eaf0f8c87c621a9e41f271b0e06d7d1a9e06aa316fec80aec45c22175b859a21e58859b4491e48005e2b042040081007c620f8c821f1e49005e22⟩, ⟨0x2080f7866427a12708883ec1ca0bd04b82040d605501f80b002c000, 0x4204108100892212fb489290c89301c117dcc12842412011841411010c40810490479a81fe947f2612db47a7a1fbac5d721fb907e291f784793d2c5c22175b85bfb0bad87df01f7bc7dbc072f4847918017db02c4b0b1282c490b121b1c1d841620c2041d802411fd8c88a8221cc7fa712dfc492912490886d129904a3f284a6a307f39221bc7df012de849332049e6126d4847920017d981081042040221bc4b7a0888a91c017cf4108100204012de849330888a21c017cf010810020401fce4886f08887418017cd81081002040124cc49e608886e18017cd410c1081041004047f3e12ea07f631fe9c412de87f391f7c034791c017cd010c1081041004047fa71fed87f700c7f651f7c07f660c88631c017cc01081002040124f04e2108882618017c941081002040124f03bbd087ffa18017c8810810420401fefc493c087fee1c017bf010810020401fd987fbf087fe718017bec10810020401f7c011fe987005eee042040081007df01fd9821fdc46005ee7042040081007f661fd9421fdb06005ee6⟩, ⟨0x1c80d9065030216b0ae84e824810e07c038819807e03400a4026000, 0x42040081007f2a072f4222cc470068280420410400c122bc88aed088ae322b90222c9c7006824042041081008ae4048b211c01a080108104204022b908ae3088aea18017fec1081040008abf1c017fe01081041003048ab1229e48a740c8a751f7bc8a710d1e46005ff7042041081007def229c4222aa86005ff1042041081007def229d42229e86005feb042041081002eb61fca82229c06005fea042041081005bfb07c9c2228f06005fe3042040081006c381b5f42228cc6005fbf10b10a0b02541c5185154007048a22227bc2cb3133b02eac0baa82e741a59c69620b2b02ca70f5f4c227b82b3e0b7b02de10c2b3f191e48005fbe0420400810089ee0b7b022288c9005fb50b01c2c060a00c28021401410b2b02ca70b2cc2ca11a59c6962226e489a20b0905282b3e0adbc897d0c447920017eb01081042040225f42b6f0889ba24017e8c1081002040224a41224f85045f79⟩ ] def tableLRR : Table Block := .leaf #[ ⟨0x18a0ba057829012508783e41b60c8059027010c07002680b002c000, 0x42041081004e210eef42234b470068b6042040081008ba81fca82233d060068b2042041081007f2a072f42233bc70068b10420410400c1232d88cac231f83230c48be9231e834791801a2b4108104204022fa48c31088cab1801a290108104204022fa48c7a088c7f1801a2841081041003048c6e230f02230c48c30088c741c01a1f41081042040230c41231b47006879042041081008c31230c02230dc6006874042040081008ba81f6f0222fdc600686a0420400810029f51b2e0222ec8600683e042040081006ce722ea0222eb4600683d0420410400c122df48b7822dc0322b908a710f0a434791801a0e81081041003048b7222d842229c43c2922b90322de06006835042041081008a710f0a4222dc46006831042041081008a7122b90222cf0600682d⟩, ⟨0x1770b2054428613508f84181da0d405e02a413605802100b002c000, 0x108104204023c90123ff8504693a042040081008f24048fb81411a4b81081040008fb01c01a4a81081040008fa91c01a49c10810420401fd94493c088f7d1c01a498108100204023c988f24224a4323da0704692304204008100892212fb489290c8f3b1c11a480108104204023c988f24224a4323cb070468fa04104008108100208022488123c8c50468f9042040081008929048eff1411a3e01081040008ead1c01a3d412101d01828022012001810b8fc2e28139d08d310f2e03cb312db44ef82378c7fb6284e210c3bbd124f07f65151e480068e7042040081007f65124f022379070068e2042041081004934124cc2236f860068e1042040081007eed072f422359c60068ba04204108100493c138842234c860068b7⟩, ⟨0x1e10dd86a031e17c0b485401de0d906302b813607002100b002c000, 0x10c108104100404992f264b4992b0c987e262f07cbc0c98a91411a6801081002040262f01264c0504697f04204008100987e262f07cbc0c992e1c11a5f810810420401f2f01264b0504697d0420410810098bc0498f11411a5e01081042040261f898bc1f2f032638c704697210c10b0b08202051c5141a20802068820042c20800201262dc89f413aac4ea613bf42df1121a82de61a59c696213bfc4ee513c84d227b82dec0b784313b884eae13ab474792001a5bc1081042040227b82dec0898b82401a5b810810020401f2f01262bc504696b041040081081002080261f81262ac504696a042041081006c6304987d1c01a5a010c1081041004048caa230d89869261804230c48be91b39c8c30111e46006967044043042041040141261a49860231b08caa106ce7230c08be9230c44230f07006966042041081006ce722ea02261b06006962042041081006ce722fa42261a86006961042040081006ce722fa42260e0600693d⟩, ⟨0x18c0bb05a02b414409804682080bb04e821c0f206b02a8108068000, 0x42041081009a78268c8226ae470069f504204100026acc70069f404204100026ab870069f1042041081009a64269a42269bc70069e8042040081003268c82268e8a0069e2042040081008c30169b422689860069be0420410810099781a0e42267d860069b704a0471064034010a00060499a81a2cc68761a1c499e31a2f82da00b5ec2d6523ab099e00b4bcc1a1f868390b4e830b4a054792001a6cc10c1042042d3f124b899bf0b5cc40b4e814792001a6c81081042040265d099780899bb1c01a6c410810400099b91c01a6c010810400099a91c01a6b41081002040265d0997808997e1c01a6a01081002040230c41265c870069a7042041000264e470069a50460440430420401411e9fc987c260e49837133b0983a186c631b39c8be9230c441b3a460069a3⟩, ⟨0x1cb0db868431614009504702100f406f03401840b40360178090000, 0x10810420400c9a32089ba52801a8ec1081002040269e09a32089ba31c01a8e81081002040269a49a78089b731801a8d812422011c2190805420102820007042dbb0baa82ea80b9d09b6926d8c9afc26bdc9b6726d94a0b6e82dec0b7849afe0c9b22191e48006a35042041081009afe26c88226da87006a3404204100026da07006a3304204008100326c88226d98a006a3204204108100326c88226ce4a006a2c042040081009afe26c88226ca47006a2604204100026bf47006a2504204100026be07006a2204204100026bbc70069ff40b10910810504404018113adc9ae726b949ae30b6802d7b0b6f42dbf0f0884eab13a983bfe304ead13c9030b4a02d3a151e480069fe04204100026ba070069fd042041081004f2413ab4226b9870069fc10b40a10404304210118126ae09a3926ac89aad135b04eab13a984efd13ca49aa9269fc3ea0309a320c4ead13c909a78151e480069fb⟩, ⟨0x1f30ee871c36219b0c285bc2b210b07a838419a0bf058826c02c000, 0x10810020400fd949c79089dbc1801aadc10810420400fea43e66089d7e1c01aaac10810420400fd942dba089d781801aaa810810420400f9bc3e34089d351c01aa9c10810420400f9983e34089d331801aa981081042040271e42dec089ca31c01a9e410810020400a0ac3f65089c781801a9e012462011c11811460c1046008046d2a1f8a48cf3233b8987c133b07eeb12db48bac1fe94a1fca86c631f7bc1cbd1b39c8ba81f7c074791801a9dc108100204026ef49bbb089c2f1c01a9d41081042040209bbb089c2d2801a9d01081002040209bbb089c212801a9b81081040009bf71c01a9b41081040009bf21c01a9a8108104204026ef49bbb089be31c01a99094894493092c190a2490480648201c19208044a08034a080213082000c042c70133e82cac0b29c2c640b0fc9a290b6a42da21bbd4a26ae09ab226ab49b72269b89a68135b09a394c2bb1132e42b3e169b42b3f209a78269a49a640c9a322d1e48006a3d042040081009a64269a4226e9c7006a3c⟩, ⟨0x1b10b3054027412208603d81c00b804f82180dc05502100a402c000, 0x280b0a02411c11841488001810b4f82db80b6fc4a3f235fc8d2c0efc03cb80f2cc2da00b5ec2dbd302d3a138843bbd0c2d28151e48006b30042040081003e660f9bc227df06006b2d04204008100282b0fea4227db06006b2c0410400810810020801bed0127cec5046b23041040081002a6b0a9c4227cb06006afe0420400810028ae0a7d4227cac6006afd0420400810028ae0a0f0227ca46006afc04304204104010127ac89e6827b809e24109e6507fb49e210d1e45046afa042040081001fed279949e210c9ef41c11abe01081042040278b49e3227884327bc47046af704104008108100208007fb4127b8c5046af4042041081001fed279949e210c9eb31c11abb81081042040279941279a45046ae9042040081009e2d278c89e210c9e3a1c11ab8c1081002040278841278945046ae0042040081003f650b6e82276f46006ab8⟩, ⟨0x235111083c3f21e60c705081fc0c204d02100dc05802280b0032000, 0x1081042040167c012a3907006b6f042041081009e3204a8e01411adb41081002040122c02b7608a8b01c01ada41081002040278c812a1bc5046b6510a049108407046083082100201129bc9ab226ab49ab813ca44efd268e4a86913aac4ea6269a09a6e135b09b72384ead0c9a3213c909a64269a49a781d1e48006b641090482201010c182008880118113aac4ea613be088300f2e03cb3264e0a86a139d04eb726b944b6d304e210eef4313c904ead151e48006b630470860c50c40c30820c10802010f8e43eb427fdc2a6c274f03f23274d0a203e320a9ac3e660fabc3e6f0f8d081d1e46006b620860850440430420810801c10a9b09c7c0b7c450b7989ca2277f470b7843271e42dec0a9ac3f65191e46006b610430420410401010a9b09db9277f42dbb102a6b0fd942dba0d1e46006b60042041081002a6b0f998227fd86006b3f041040081002a6d0a388227f946006b3a042041081002b6f0acfc227f886006b39042041081003923049fad1411acd410810420400e3b839230e3f4327eac7046b34042041081006fbc049fa71411acc810810420401bed06fbc0e3f4327e947046b31⟩, ⟨0x1d80c805e82c814e078036818e0b404e02180d605501f80b0032000, 0x480460450430401412011c1101081045089ef227ac89e3327bccaa742a9cc9ef0278e4807fb49e65278b49e322788452a9d45046beb04204008100a9f30b39c22a8906006bb80420400810028252a7cc22a7f86006bb70420400810028252a5b422a7c46006bb40cb0ca0c90c80c70c50c40830410802812a7b02f7b0bcdca9ea0bbb02fb62a6f8a9720a9c028a9122d4a9333028250a28c2ee70bad4a96d2a5b048b00a9b42b76251e46006bb304204108100a96c122c022a6fc7006bad042041081009e3204a9a41411ae981041002040278c812a6845046ba5041040081081002080278b412a5f85046ba404204008100a96d2a5b022a5cc6006ba10420400810410020800add82b6f08a9631c01adec10810420400a9b42b7608a9341801ade010810020401a9e06aa308a9321801addc10810420401f38412a4a85046b75042041081007ce104a9201411adc410810420401f38c7ce11f2f032a3b07046b70⟩, ⟨0x1d60e406e834c1900be85a82a813e079837418e0b10318098026000, 0x420410002b2a87006c700420410002b1fc7006c6d04204108100817bf022b1e8a006c6c04204008100ac3b2b1b022b1c87006c67042040081004bed04abf71411b0ec10810420402aed812afb85046c3804204108100ab30121f822adb06006c2d04204008100ab2c2acc022ace47006c270480460451840431820411802010a9e428a91a9f8aaff0a2946a7d0a0a0aafa0a2dc90a4906a790a0946a781b9bc28a30799474791801b09810810020401b9bc292408ab201801b08c10810020401a9e06e6f08aafb1801b08810810020401b9bc1ff708aae31801afe042412011c11841411010c4008042aec1b9a86f3607ff02a622aaec6ea90a2a4287a0a9c0a1a9fc28e2079941ff71b9bc6aa30a9b474791801afdd02081080d0081050006042ca10b2b02ca70b09048ef122d42cb314a9612448b00acf830add82b6f151e48006bf6042041081009e6504aaa61411afc810810020402799412a9f05046bee⟩ ] def tableLR : Table Block := .branch 9 tableLRL tableLRR def tableL : Table Block := .branch 18 tableLL tableLR def tableRLL : Table Block := .leaf #[ ⟨0x23210e08183601a20c605cc2ca14f09c83a01a40c403e819c0a2000, 0x42040081002eb61fca822b9806006cbd042040081007def072f422b8fc6006cbc04a189048047185044183182040241175c8ae35233b8ae341e4f4ae2b1e6a0ae332b8c4ae2d17098b072f47f2a175b87eed2b898adff170882eb6211e46006cbb0420410002b8b87006cba04204008100ae262b7fc22b8b06006cb904204108100ad3e2aed8aba20cad641c11b2ac108104000ad321c01b2a810810420402acb0ab3008ad301c01b2a410810420402b1b05efc08ad231801b28813012c22021c1d854824811c12b3b0acae17cd85f312b3ac5f232b3a43e270fab43ea8123fc3f2a124b8d2b0ecac6c17bf080f9843e20191e48006c7e04204108100ac3b2b1b022b3b47006c7d0420410002b3a87006c7c0b1242c481621cf98616214210604ac3e2b1c4acb52b1e4acbc0e8985f3617cc43a682b2a4a2b0ecac6c2b2c45efc2054792001b1ec10810020402b2c45efc08acbd1c01b1d410810420402b1b0acb108acb61801b1d022c11d2182141092041d801c12b2a4aca52b1f83ead0faa0ac3e12188ac7917cd85f312b1c4ac6b12190d17bf0ac3b2b1b03e61203e20191e48006c73⟩, ⟨0x25b0f5075037c1850a604d824610d07b82040d605502100b002c000, 0x13413062c6281241201907186044182064041900301170985d722b8d4b92d233b8ae342e4acb9211e4f479a8266a0b8fc2e3e0b8f5385c221fbb41cbd0bad87f2a066b45d6e2e3b8b8f92e3d8b8f22d1e46006d6a04204108100b8f9066b422e4887006d65042040081007eed2b89822e3ac6006d630b11c2c460b1081042c40141124e4b87b124a4492422af84a64284b77204934204933126d444792001b4fc28070a01828050a00810050449b42e1ec3bf00f2e03cb32e2908abe1480eef44934124f03111e48006d3e042040081004934124f022e2946006d3d04204008100adff04b8731c01b4e010810420402b9b01a6d08afaa1801b4a41081002040173f4af3908af721801b3fc63813413012c62812462061c61981010d809804d04ae35175c8ae34233b8ae3317098ae6a2bda0af3e1e4f4af381e6a0ae732b9bcaca93c7f2a072f47eed170882eb62b8985cfd2bce45d6e2b9c0ae6c069b4c4791801b3f810810420401fbb41cbd08af6a1801b3f410810420402bce41a6d08af3f1c01b3e010810020402b9c012bbf87006ced04204008100ac6c17bf022bbd06006ceb04204008100ae7b1a0e422bbc46006cea04204008100ae26173f422b9ac6006ce1⟩, ⟨0x1bf0d4864c2fa1670a8840c1da0ca054824c0fa05d01f80a402c000, 0x1081002040265e0683908bb301801b79c1081002040265e0687e08bb2f1801b79810410020402e5a8b96908ba751801b6fc10810420402e5a419ad08b9fe1801b6b010810020402e3b8b93808b9f31801b69c12411c11811010c408404400804b9e4266a0b9bf2e6f48abe2e6c4b9732e5c8b96f2e5b4a2e4e0b8ee2b898adff066b4b96a2e5a474791801b69810810420402e4e019ad08b9e51c01b684108104100304b9b42e6c8b9a80cae26173f4adff0d1e46006da00420410400c12e69cb9b508adff2b8985cfd0cb9b21801b5f810810420402b8985cfd08b9b81801b5f410810420402b898adff08b9b31801b5f0108104100304b9a22e5d8b87b0cadff124d024791c01b5e0108104100304b87a2e5dc22b7fc493408b9a21c01b5dc10810420402b7fc493408b97e1801b5d010810420402b7fc12e5d07006d7204204008100b8ee2e3e422e4d86006d6b⟩, ⟨0x1950c105b02ac140095047020c0f006d02d011c07803280b002c000, 0x10810020402e3c812f5b87006e7704204008100b8f22f3d022f5946006e7404204108100bd282f3cc22f4dc7006e6e04204008100bcf42f4a022f4c06006e6d04204008100bcf42f3cc22f3e86006e690420410002f3bc7006e6604204108100b8f6066b422f2d06006e3d04104008100b8f22e3d822f1b06006e3a042040081007eed2e3b822eff46006e2b0430420410401012ede0b9ec2678c3265e0b96a1a1f832efbc7006e250430420410401012ecd4b9ec2eef832e5a8bb3126ef432efa88006e2404204008100bb3126ef422eefc6006e2004204008100b96a04bb7e1c01b7e888072201888030412200050499b71a18c68761a1c4b9ec266e052ede081a0e432e5a89978111e48006df904204008100b96a265e022ede46006df804204008100b96a2ecc422ecd86006de8⟩, ⟨0x27211388643921bb0a904f024c100075035015c09804501d002c000, 0x2202c42028050430a0041006044efd1a1d868711a18c4eab13a984f29121a8beb92b3a4bef52fbf8c0c4ead1a0e44f241a1f854792001bbc4108104000beee1c01bbb823022c2288201081042007049b691a2f8beeb2fb8c9b6526bf09af71a1d86871266a09977265f499f5349afe0c9b22265d099781a0e464792001bbb4108104000bee41c01bba813423012c22822021c41901428044012811a1d868712fae4b92f2ecb8be35266e0bdb52f8a06863266fc2dbd0b6802d7b0b6fc492e40687e2e3c8bd752f2f899781a0e430b4e82d28251e48006ee804204108100687e1a0e422fae87006ee704204008100bdbb26c8822fa8c6006ee40430420410401012f9d8b92f2f6d43265d0b8f22f5d43266cc7006ee304204008100bd75265d022f9dc6006ebe04204008100bd752f2f822f9b46006ebc0430420410401012f590b92f2f3fc32f3d0b8f22f3cc32f98c7006eb804204108100bcbe265e022f8a47006eab0420410002f7a47006ea604204008100b8f22f5d422f6d86006ea55b9281b72247cc85b91d6e463e614f9840815b90090499b82e4bc9c202f688bd2f2f5909be22eef89bf626fc4a2f4d8c2e3c8bcf426eecbb3126ef482f4a0bcf3211e48006ea204204108100bcf32ecc422f68c7006e7d⟩, ⟨0x39b1c28dbc6b831116b0ab84a620a0d585782160c303b80b002c000, 0x10810420402fedcbff808c8242401bcc010810020402ffe0bff208bffe1801bcbc10810020402788412fdf05046f2404804704604504410310210120107ff02a6c0a9d02af90a28828b70a29428280a2a490a9ac2a710a1fc1ff70799428a30a09474791801bc8811411010c1081041006043df60f7e83dfe0abe49de6271dc60a2b8283c0a9c42a6b0a0ac3f65191e46006f210430420410401010f9ac3e7327fdc2a6c103e340f9982a6b0d1e46006eff120290809047086205042081120008044b2226bf09af726da49b650a2a42cf50b6a42da20b2b02ca70b3e89fbe2fd9ce26c8830acf82ce70adbc2b3f26bf874792001bbf8280b40940804510204118113adc48f22fc809ae526bf09af72fd984eab13a989b3826ca04b2a304f2413ab4326bf89b22151e48006efd04c04a04904808708622080522080406082004904287a0a0bc9db90b9fc2df10b798bef513ca44eab13a984efd121a8c0a0ac3f650b6e82dec0b7844f240c4ead209cad2001bbf012922492091d21020c2081048042bb6123bc48b50b1902c3f0b1c048fa0fbe448f60b090a122c02b760aec43eaf203e340f8c870f9d08006efb04904810704604504404310110024127ca88bb11e8d83df60abe42a6c1b2f43d75167cc5d692829f50a2b82a710a9ac6cb807c9c59f016fec84791801bbe812031c91810db089046049b6726fd89bf126fe89c200fca83ead0faa09be20f89cac6a2b4c4c26ef49bbb203e200f98454792001bbe432411c1196e450a4ac45b9086042c640b0fc48600f5d42bf9165cc4862121908eac23aa83ead0faa0c0aec42bb9203e200f98454792001bbe108092201c880642015080404342008704b92f266e099b71a18cbe282f8d452f6d468761a1c4a1a0e499782f2f832e3c8bd75191e48006ef4042040081004eae13ab422fc946006ef3042041081009a69269e022fc886006ef2⟩, ⟨0x1a70c985f429613509084381ec0d005e825c10206b018007001c000, 0x1081002040324ec808c9b41c01bec01081002040325a0c93b08c9a31801beb0318314408c04400504c971324bc4cf6133c4c96b28c9601cc92c325a0c93b2044791c01beac1081042040324b0c96808c9722401be881081042040324ec808c9611c01bdf410810020400e3f41323c85046f760410400810810020800e3b81323c45046f750430420410401012aaac9e39278cc3278b49e21278c832a5f05046f74042041081009e2104c8ef1411bdcc10c108104100404aaa727bc09ef20c9e2d278849e320c9e301411bdc810810420402ffc4bff208c87d1c01bd9c10810020402ffe0bff108c8761801bd9942542100c505000504c8602fff4c8390b8fc69671a588bfbc320d053208ca2ffc832fedcbff8111e48006f630420400810032ffc8232184a006f3d042041000320e87006f3c042041000320d47006f39⟩, ⟨0x1870b8856c28a12508383c41bc0c8057826410605501f80b002c000, 0x1081042040333d4cce708cd261801e1dc1081042040333d45b3908ccfb1801e1d0108104204016ce4cc2b08ccb11801e1a8108104100304cca733288cc7a0ccc3f331a024791c01e1a4108104100304cc7c331ac2330fccc6808cca21c01e1901081042040330fccc6808cc7b1801e1801081042040330fc133194700783c042040081007ae1330882330a0600783204204108100ca7a32a8ccaa10ccbf61c11e0b0104100204032dd47eed08cbaf1801e090108104204032cb4496c08cb621801bfd811411020c208404cb3532c90cb3023e904b2a23ea0632c84cb2d125b034791c01bfd4108100204032c84cb2d08cb361c01bfc0108104204032a8c132ab45046fe2042041081007962166d02327c06006fbb04204008100c9a5324ec2326ec7006fb1⟩, ⟨0x1930c2857027612508783e41ac0c005502540e405c02300e0046000, 0x108104000ce7d1c01e3b810c108104100404ce6b338a4cc7a0cae6c33798cc3f331a04337d850078ed0420410400c133390ce6c087ae133798cc3f0cce731801e3a4108104204033798cc3f08ce6d1801e3981081042040337987ae108ce6a1801e39410810420402b9b0cde608ce3c1801e2f8108104100304ce2a33890ce280cae6c33798ce200d1e460078b904204108100ae6c3388023389460078b804204008100cde6330fc2337b060078b704204108100cc2276008cdaf1c01e2b8108104100304cda2335e4cd660cafab333d4cd630d1e460078ad04204108100afab3358c23368c60078a904204108100afab333d42335e060078a6042041000334f8700787f04204008100cc2b76008cd2f1c01e1e8108104100304ccfc33494cce90cccf516ce4cce70d1e46007879⟩ ] def tableRLR : Table Block := .leaf #[ ⟨0x36c1a48ca06242fc131077431417406782100dc05802100b002c000, 0x420410400c1261ac8c2f361a8322ea06ce722fa434791801e4ac108104100304d8642e6f421fbb4ae262e3b833619c600792a042041081007eed2b89823618c6007929042041081007eed2e3b823618460079283e65464c1b7248144140f98d18b18a4871861851840430421810404011e4f4ae2b0f89cae34233b83ead0faa03f2a124b84939221b44929124904a64129a8ae3533cb479a817098ae33175c951fca83e610f88049332049e6126d41cbd2b7fc49340bad87eed2b8985c22175b8f23aa8800792741341020f20e20d04c20b0f9c0a2092ecc084074060f9c0034116ac82cac0b29c2cb3168d479e8322ac532f8848621f0e04864121807c2f0b1902c3f0fab43ea823ab08eaa502b3e168c05a6d168903166d059a20f8808132e42bb10f984c4792001e49823012c588a0490843e60c58801c10b1c0d83712bb45b26133b04b2a0b1902c3f133e84aa21288449fc12bf4d166884cb90aec48125c0496c191e480079250420410810059b4166882360d8600792319509409305004f04e04d18c18b18a049048047484183182181040481129a87c2f121802c640b0fccbe21f0e079ad327bcae33221b44939233b8ae34170984929124904a642b8accf2d2b8d45d72582bb1166884cb91e58859b41279849331fca82eb62049b52b898adff124d07eed072f45c22175b924792001e48812c1283242c460b1047cc01812b3c8d82f17c8c4878121cc48e217cd85f31135ccace91359c48a430acb117bf0487a20487e151e4800792104204108100acb117bf02360c0700792004204008100cfab0f984233ff060078fc04204108100cfb233eac233f9870078fb04204008100cfb233eac233eec70078f604204108100cfab0f984233ec460078f504204008100adff124d0233cb860078ef⟩, ⟨0x22e0f4071435e1990bc058829813608803441760a804781f00c8000, 0x480470460440430420401c133190b96f338a0cd3d368c0ce6b3678c99a82e5b4933880cde6330fcd9af2e5a8b969191e460079b20420410400c1368dcd9f436894333880d9af367c434791801e6c41081042040366bcce2008da311801e6b41081042040366bcd9f108da261801e6a4108104100304d9e5366cc22e5a4d9af366a03367ac60079a204204108100b969366bc236790600797e04204108100b969366a02366b4600797904204008100ae6c3379823669c6007978043042041040101363acd8e7362b032ae90aba22ae8032aed450479752202488072a010a8031401413659c4a3f364c069671a5883bf0126d03cb80f2cc528d92b124f03bbd0c44792001e5c41081042040364ac493c08d9682401e5a010810020402ae881363b0504793e04204108100aba42ae80aba20cd8e81c11e4f410810420402ae801362b450479330410400810810020802ae901362a4504793204c10b10a0490486070466041036011002c11e8d8ae341b2f48bb132f9028610a1e8ae351fb904b6d32eb88cee301f270a7d46cb80a0f05bfb0bad8cb751fbb47f2a072f4a0a7e0600792f⟩, ⟨0x23e0fa877c3921b60c585e02aa13f06482040d605501f80a4026000, 0x4b0b11c31810db09b04604dfe22f7a04878121cc48f8270b09bf626fc49c2e123d04d68135b0c209bbd26eec487e121e854792001e8c810810020402bdd41a6d08dc3e1c01e8a810810420400f0a4af7508dc281801e88c108104204023c90136fe85047a200430420410401012e5d8d8622e6c48e6710ae262b7fc7eed124d044791801e7f4108104204032dd4136ed070079f60420410400c136dd42eec0bae430bb9c2eb60bad434791801e7d410810020402a5b448b008db331801e7bc24063c33833422c3281243204a36144a360ccea200b042bed0b1c0a9be0a2e02c24135d4a972122d4a9ec0b1902c3f121f4486a123884878121cc48a4442bb90aec4a96c122c02b760a094a96d121e88121f8a4792001e7a812412041c40d0084006044eab13a984f292a1a44efd129bc9ab226ab49a7f268e44d6c26ae0c13c904ead0c9a78268c854792001e7a4108100204036ae8ae7b08daf01c01e79010810420402b9ec683908dae91801e78c10810420402b9ec687e08dae71801e78810810420402ecc49bbd08dab41801e6f810810020402f3ccbb3108daaf1c01e6f41081042040369941369b450479b4⟩, ⟨0x1f50f387443761a50c786042dc1580a104b02320e005382440f6000, 0x108104000e9ff1c01e9ec10810020400ec943af408e9af1801e9e810810020400e9f439f008e9a01801e9dc10810020400eb9039b408e9781801e9cc10810020400ed843ae408e9671801e9c8108104000e9631c01e9c410810020400ebcc13a5847007a70042040081003b610ebac23a4d06007a6f042040081003b250ebcc23a2986007a680420410810039b40e6d423a19c7007a6204204008100cc3f04e8601c01e9847cc71f3147cc41f304100504cca7334f45f233a09c5f3617cc4aceb288331a0ac6c17bf08111e48007a602201810c8802220048800141334f4cca71a1d8687114e83b2bbc0686320cc682b9ec31a0e444792001e8fc1081002040331a0ae7b08e83c1801e8f81081002040331a0ac6c08e8281801e8d034033d2381d8b0ca0c94884874860c54840830c1341176e459f30ea803a630e8f83a72170a05da60e7d45f6917ddc5d69175b43a260f5d45bed0e9a111708839f00e7b83a7d17d9859f016fec5d30075f0816fa85be9311e48007a33⟩, ⟨0x2a412e092443c1e60e986f42f615a0a204b81d80d906182b4046000, 0x480460450430421412011c110104100508ed3712fcc8f37224bc8f3a23cac8f6723d988224884bed23c98892923c9053b4e45047aef042041081004bed04ed381411ebb810c1081041004045d72170a0ecb31e6b44170885bfb175b87962111e46007aea045044043042041040181262a498f0263887cf61f3a0ec7c18987e262f07ce11f2f07ce3151e45047ae6042041081007ce304ec7f1411eb8c10810420400add82bb908ec6f1801eaf832461d21060c30820460448ee0a2a4ec6c0b1902c3f121802bf92a2bc3a260e9a0a0aee42bb1122c02b762054792001eaf4108104100304eb6c3adac22b9eccc682b1b033adb86007ab904204108100cc682b9ec23adb46007ab804204108100cc682b1b023ada86007ab71890c80c71860854801810afe47c381679c7c320e8983a680f5d42c640b0fc48602859a2132e42bb9202bb1151e48007ab4042041081004c2804eaeb1411eab810810020400f0e01d7c08ea691801eaa81081042040231e85be908ea341801ea8064063c634130190b04a1890642011c618190504404304206404f043c3b3a8b859660ece08c7e1ebdc6ce91ef987b7b176e45bf31ecf8ea271b19898691efa03d75443c380ec943af41eb881d7c16fb87b39231e85be91b18c6ce722fa45e2306cc4e4791801e9fc1081041003048cb53a8a08caa0c8c7a22fa48c310d1e46007a7e⟩, ⟨0x26b12b88c44362070f884f42080ee06d831416406702880ac026000, 0x10810020403be9c308fa6a1c01eddc10c1081041004049faa27eb09f7e0c38fd0e48c38ee0c9f7b1411edcc10810420403e0ecefab08f8642401ed9010810420403be9c308efb71c01ecfc10810020403beacefa708efb11801ecf865c15815465014c14864414013c63863463062c382028c241c063030e08013208004c11f1c46a7e1aaa47a361e9b47a681e9986c611a9f47a271e9f45a351e7a02dbf0bab02cac0b29c2cb30b6802d7b16a9cad313bde02dbd601f271b5f45bfb1aa8c6c381a9e46a781e5885c22175b85a24168c02b3e169b42b3f0b4e830b4a124792001ece828070a01428040a00c100504ef36128fc3bf0126d0d9a50f2e03cb3148124f03bbd32dd43111e48007b3704204008100cb75124cc23bd946007b3404204008100cb7504ef3e1c01ecc8108100204032dd4493c08ef3b1801ecc010410020400eafc13baf47007b230602428080a01418040600c10418001c10f3f43bf00f2e03cb30ef843d610eeb43d2514e937283bbd0f2ec3bbe0ebac30eafc64792001ec881081042040138c43bbd08edeb1801ebec10c108104100404893d23cdc8f2b0c8f2623c9089290c8f381411ebd41041002042040082008f2604ed6d1411ebd010810420402248813b58c5047af1⟩, ⟨0x2030f6875c3821a00b6856826411f08603e41cc0be038016802c000, 0x10810020402a7ccaa2508fbaa1801eeec10810420402a8942b6f08fb7b1c01eed410410020400a09428a308fb681801eec01081041003046e731baa421a9e06e6f1aa8c31b9a46007bae0450440430420411411a9f86aa91a9f46c341aa983dfb186a791a9e06aa31a9fc44791801eeb410410020401bef013ec905047bac0430420410401013ebdc9f7b1bed86fe2106fb41bef038fd0d1e45047ba8042040081006fbc04faf81411ee9c10810020400e3f413ebd05047ba6042041081006fbc04faf31411ee9410410020401bef013ebc05047ba404304204104010127ce89fa41bfbcfaeb106fb41bef038fd0d1e45047ba304a0c71ad8460430a4ac10a4ac0181133b04d750b1902c3f0b1c048a4121e0487326ec0486a121f448e2302bb1202bb9121e8487e151e48007ba20410400810059b41689023e9ec6007b7f4208080a082019082014110404100604ac7e0b4bc2d653e9c02da00b5ecfa693bdf880b4e82d283be9c33bdf453bde08007b7e04204008100ef7d3be9c23e9c47007b78⟩, ⟨0x2a0112077837a1a70c885c02b414409703841960a504780f004c000, 0x6448190e0642c92819090642091c4c03102064043b002c13eef428a90f2e03cb3234b02cac0b29c78350ad982da20ea802da90e98c3a3e0e9a03bf00e89839f50e9c93138843bbe0e9f42b3f0acf830eef439f02039ee291e48007c3510b0491064041030401810f4942da90f2e03cb3234b028a90efc02da20b2b02ca70ad98b138843bbd0c2b3e0acfc5138a08007c330420410400c1420a4fffe08eef922ea0eef20d082a1801f0c010810420403bbe48ba80908281801f0bc10810420403bbe4eef208fffc1801f0b0108104100304ffb53fec023f0dc28e23bbe433fe906007c2b0420410810028e23f0dc23fed86007c2a0420410810028e23bbe423febc6007c2904204108100fefa26c8823fcb46007c232094061052042030422011002010b09028b80b2b02ca70b2cc2c313ede8fb7414a9fd0bab0b0adbcaa250c28252a7cc2b3f0acf874792001f0841081002040138c43bbd08fde61801efec10c1081041004044c3b136e84dac0c4bf6136984c270c4bff1411efe010810420403ef9c5a6d08fc242401efbc480a22024480806080704510404322000804fbbd0f5843bf00f494fa703e9a4ef7e0f2e03cb3234b0a0f2ec3bbe3be9c33bdf44e210eef470f3a88007be6042040081003bbe1388423ef886007be30430420410401012a88c2cf50a2e032a7cc2ce70a09432a8bc7007bbf⟩, ⟨0x1a90c9854827812608983c01a00bd05382440f605802100b002c000, 0x1081002040432c05fff090cee1801f3cc81881451050c50850460469671a5890c7b432e90cb5432cd0a3e432b85f3e250c76432c109b217ffc682c151e47007cf2042041081010c761a0b02432ec9007ce9042040081005fff1a0b02432bc7007ce8042040081010c33050c371411f2f81081041003045bb442dfc5bbf0c5b6216e8c5baa0d1e46007cb80420410400c142dc10b3442ce4342cb90a3f091e47007cb5042041081010a3f050b661c01f2b41081042040428fd0b2e090b3c1801f2a810810420403a6c90a60090afb1801f28c10810020403a6c81820090ab01801f1e01081041003050aa8429f10a640d0a6a429810a3f0d1e46007c77042041081010a60429a82429f46007c6f042041081010a60428fc24299c6007c6b042041081005ba3427e82428ac6007c640420400810109fa060802428807007c3f⟩, ⟨0x1b00c505d02bc148099047020c0f006b831015806402700ec050000, 0x430420410401013b4dc893d224bc3224884bed224a4323c845047da404204108100e9b206080246aac6007da3042041081005eef2b2c42469986007da0042040081005eef2b2c42468d86007d79042040081005eef17bf024688c6007d75042040081003c292bdd42463d46007d7204204108100af75069b42463c87007d71042040081003c380ec942463bc6007d70042041081010f7a43ea10c330d0fec1c11f588108104204043ea0143eb05047d3d04104008108100208043de8143e9c5047d3c40b04a1080471041001810b4bc9b282f7a02d652fa989afc26bdc9b380b6802d7b0b5cc2d3f302d2826bf8326c882d3a151e48007d37042041081010cb017ffc2437a46007d270420400810109b2050dbf1c01f4901081042040426c81434c07007cfa043042041040101433bd0ce91a0890ced1109b2432c05fff0d1e46007cf4⟩ ] def tableRL : Table Block := .branch 9 tableRLL tableRLR def tableRRL : Table Block := .leaf #[ ⟨0x2db1630ac04fa24b0fb878439616f093044c1c40cf04201b8090000, 0x1081042040477e4e882478887007dec042040081010a60429a82477c86007deb0450c40c30410c01410f9ac9f6b275f4287a0f9cc282f183fa90f9983e340a0ac44791c01f7a051940c408404500504efb01a59c696214f8633e0f4efb61cefab3e0ecefa70c44791c01f788f98c3e6281b721c21821010410070448620b5cc5f630fab43ea8121907c2f0f5d448600b1902c3f1f0e059e7343e610f88080aec44cb91668864792001f784108100204022b8c7f66091cf41801f6fc108100204022b8c7f39091ce01801f6d423413012c62821c1b720cf9823e60080449e8222844ba8126ec49291249049ee12db44878121cc48f8135a04d6c123d0e124cc4b7a1279849b520487a121f874792001f6d012c32011c2c446c26c11812b2f03ead0faa0ac79468985f3617cc448641a3808eaa121888eac305efc2b2c480f9843e20151e48007db30420410810038ee051b2d1411f6b411410c1081041005043dfb0abe43df80f7e82a6c142a710a2b8283c0a9ac40fd806007dac0410400810038fd051afc1411f6ac32c1281182c450b1107cc3181126ec49ee124a4492412db44a32121885f63121903ead0faa02d733049b5127983e61203e20151e48007daa04204008100df7e26eec246bd46007da9043042041040101130b84c3b1e3a83130a04c271309033abb05047da60490480870863e6085881162007043e390fc8c3eb42b2a45f3617cc4ac792b2f0acf1243e340f8c83eaf205efc2b2c460f9cc8007da5⟩, ⟨0x28010587d83d01d20de069c3321830a784f019a0b7050822c02c000, 0x18e04d04c04b04a0491881871851831820411803414aac51f6816d991f27427fc5ba742abd0aea12ca90a6347c890b3847bf90a2a47aa8f16ce4cc2b76016d8818203a6c90a60428fc5ba3427e91e71479c0c4791801f8e01081042040479c1d8024aac86007e330420410004a4c07007e320420400810128b03fbe824a3c07007e2f042040081005b39330ac247da46007e2404204108100cc2b760091f281c01f88c1081040011f231c01f880108100204016ce85b62091e691801f7ec1181141101081005050cef427b45f3e478e0e9fe478b06426c85baa16ce85b62111e671c01f7e8108100204016ea81479987007df922034480c1202c480a1202048071201811488021200448002c11a18c6831478f509ed17cf90cef478e11e2c1468761a1c4683c478e90ced3909b216ce85b620c682c1a0e45baa172cd0cb017ffca4792001f7d8108100204016ea85cb3091e3b1801f7d4108100204016d885baa091e391801f7d0108100204016d885ba3091e371801f7cc13413062c12812462011c118614610609805800d045f3e433bd09ed3a7ad1e2d478b11df1478ad1e29478851dfc2b4c51dfb477e11df63d09b216ce85b6216e8d09fa06080e9b2429810a6a477e51df33a2311e46007df20420410810109fa060802478a87007df1⟩, ⟨0x276130892c46a1d10ad851425e0c104f02200e405d02780b002c000, 0x42040081011e70760092d3b1801fad41081042040173f4af75092c7f1801fac410810020402beac1a6d092c731801fab01381341302281b721cf9840433e60820490459e21e5945b261e4f44cfa0fab43ea80f89c2c640b0fc3f2a1e5a048ff0b1c0492e3c59b4166884cb90f88079620f98480aec484792001faac13c23833463032422031c4a36181b72141b7208300b04793d16c984d75166e42c700b1902c3f166a4596e1e5943e270fca83ead0faa048ff124b87968442bb11669059a2132e42bb9166d080f8803e611e588a4792001faa8108100204042ac41820092bec1801fa8810810420401ee8909fa092be31801f9f813062c62862462011c11811411019030411803011a3807bab4aea12b774adcd2b6a4ad9109ff1ebdd2b624acdd2b2e4aca52ae2392b744ad947ba2427e818201eb885e233a24ac990ab14aafcb4791c01f9f41081041003052bb24aea92b7c0d2b744aafd2b780d1e46007e7c042041081012abf4add024aea46007e74042041081012abf4ade024adf46007e71042040081012b653a2092b6b1c01f9b01081040012b2f1c01f9981081041003052b214aba52ae30d2ae542ac52abf0d1e46007e65042041081010ab14ab9424ac886007e61042041081010ab14aafc24abe06007e3d⟩, ⟨0x28013688783ac1930be85a81c20c305802680f206302680b002c000, 0x42040081012b26052f6a1c01fcddb281241d880761db0c10820420080448f617da83abd0e98c3a3e0f4945f6c0f9cc48fa0fbe4a0e7b839b50e9f43e340f8c83eaf2070e6f48007f350cb24a0492440416c018117c8c4aed2b3c84a21127f05f3617cc48fa32b3a48faf360bc4aa230496c2b2c45efc204970151e48007f340608090688080688070608021411414bbf468632bbc068761a1c469671a5892ee614ace928ae7b1a0e52ee10c44792001fcc010810420404bb84ae7b092efe2401fc9c108100204032a8414ba885047efd0500643c638134190c0642c62819090481870460451841830413c132f912e26332c12c7e4b6ad2d77333e92d3a361892c7232eb8b9b4334b8cd774a4bcdc3d12db514b6a52d6316ce51e7032dd47eed2b8985cfd330add80afab333d4af75069b4e4791801fbec1081041003052e284b7d824b6a52deb092e2e1c01fbdc10810420404b6a414b89c7007ef4042041081012da94b7ac24b7c46007eef0420410400c14b6c52dac090aec4b58d2da90d2de61801fbac10810420404b58d2da9092de01801fb9c10810420404b58d0aec092da81801fb881081041003052d794b59c2479c12d634b4f034b5fc6007ebe042041081011e704b58c24b5e06007ebb042041081011e704b4f024b5846007eb6⟩, ⟨0x2090fb074031a1770b2052c26a0ed06b83040d005201f80b002c000, 0x1081002040479c414e9807007ff20430420410401014e5b939604bffc34bfd9393a4bff434e7f45047fed16080916080812080312080214014126d94bea226bf09af71a59c69624e7a939b32f3b85289b222f6ed39ae0c44792001ffa410810420404e6b8bdbb0939eb2401ff8010810020404e4e814e5bc5047fb6042041081012ff64bff5393a0d39611c11fec010810020404e39138f009392e1c01fea042842041d018114108604ad3126b9448f22fc802dbd13adc2dbf13aac4ea63bde02da00b5ecc13c90313ab42d280b4e854792001fe9010810420404e3c02d280938f61801fe8010810420404e1d03e610938a91801fdd41d8a2494882470861830814802012b4c43ead0faa03e274e1ac3f2a4e1f09be226fd89bf127080bcee37fad3877383e204e1a0826eec9bbd4e1d03e611d1e48007f740420400810138684e1d024e1f47007f6f042041081012ffd0538251411fd9010410020404bff414e0885047f63042041081012b744ad9424be8c6007f3c042040081005ee017bbc24bdfc7007f3b⟩, ⟨0x259123088041a1f40f0872436c18b0ad84481960b502100b002c000, 0x10810420404eddc14efa4504886a0430420410401014ef993bba4ede834eda5393a4eddc34edd0504886904204108101393a053be7141221a010810020404eda53b774e4e834eeec7048862042040081013b77053b7b141220f41041002042040082013b69053b76141220f01081002040477cc14ed887008839043042041040101172e05b7616ed13b27105b6216ea85b3a172cc4479180220dc11010c1081041005045bb416dd93b27172fc5cbc145b6216ce85baa172cc4479180220d812c12030c2c420b1047cc0181121e04873360bc5f3e17cd85f31121a85f23121f448e212290b2b2c45efc121e88121f8546898800882c0b12058870863e61458820b10460468e017b8cacbc0e898ac7917cd85f314698d2f7e0e9a0a205efc2b2c45ee017bbc5479200220ac1081002040434dd3ab3093aec180220a434063833413032c1d8a0850840c3162081d802c14eaec596617c8d3ab117bd05cbd0fca85f3617cc43ead0faa0d82f467f93ab50f89c492e123fd117b805cb317bf05eef2b2c50d374eacc80f8803e61291e48008828042041081013ab317b8024eaf07008822042040081005cb3434dc24eac86008821042040081005cb3432c024e9f46007ff7⟩, ⟨0x27512f87382e41640a884ec24a0ff074835011c06b02a80fc032000, 0x108100204042cb8bdbb093ea1180222d908104203d080e0e080d4203038202c38202838202438202108050e080442008382004300e050cef478ad1e29477f11e2d4f9d53e742fa889b6526bf09af7478b0e9eb17cf909ed4f9c45445ba3427e90b2e2f6ec9b2216d88e9b20608109b216ce90a60428fc3351e480088b518b18a0490481870450441830420402813a7ad1e2d478b11dfc4f9e51e29433bd3e71427b45f3e478acb3a6c909fa060810a60428fd09b216ce85b6216e8c94f9ec70088b40420410004f9e870088b3042040081010a3f053e781c0222c81081002040428fd0b2e093e76180222c41081002040429810a3f093e72180222c010c1081041004050fa443fad0fab0d0f7a430cd0fa80d0ffd141222b8108100204016e8d09fa093cb4180222b41041002040477cce8824f1a860088a80470450440430420410401c112ca92da747c891eaa42ce10a6347bf90b254b5dc9428fd1e71429810aec479c12d63191e4600887d0420410400c14b6c12de64b6ac342bb12d634b6a43479180221f010810020403a6c90a60093c28180221ec1081002040429a91df9093bf3180221c410c108104100405396e4efa93be80d3b694e4e93b770d3b72141221b010810420404eda53b774e4e834efac704886b⟩, ⟨0x2000ed070435c1960c0059c25011207f83a416209b02080ac030000, 0x4304204104010132a894a3e528f035278ccaa1526943528e450489390420410810149e352694caa10d4a3f1c1224e01081042040526941528f450489370410400810810020805278c1528ec504893604204008100cde61eb842521d8600892a04204108100da3e369953f380d3ff01c12248c88082201c518a8012a0005044e644fedd3fa01469671a5883cb80f2cc4e6e0efc0a4fdec4e310c3bbd111e480088ff042041081013f7b138c424fee090088f6042040081013f38053f3c141223b010410020401fbb41cbd093f291802239411411010c1081041006047eeb1f8a4dbb332ec08d661fe9461f7bccb751fbb41cbd1f7c054791802239010810020402acc0487e093efc180223842342301d8b07629b1db0c2082008053ef242dc0ab33122904878121ccab3826fd89bf147c88ab2f27080486a37eb4e42cb8487e2acc0ab2c20df7e26eec747920022380108100204042cb8df7e093ef3180222fc108104204013ffc14fbac50488ba0410400810810020801629014fb9c50488b9⟩, ⟨0x2d81610ab050827112d87d43be1990b6855c1f60e506781cc096000, 0x42040081010eeb26bf8252fd46008975042041081010eeb26bf8252fc460089730430420410401012638898ae262a098f0107cbc261f898bc0d1e45048972042041081004da6054ba3141225a81081002040231e85e3e094b7b180225a033022c22822432031c218314310204200b048caa176985bed175a47a3e231b05db952dc14b731e4f43d75170a059f3345bea230c45be9075f08be9231e85e3e16fec5c22167c0a4791802259c108100204022fa48c7a094b711802259812011c11811010c1081007042aec3feb88c2f0a2a48caa231b02a701e4f508272428e222fa48c310a9b4eef922ea064791802259411410c104100404793d0ad9828a916a9c9a25142b3f230c05a6d0c8c3b1c022590108100204022fa48c31094b6e1802258c23012422048071200c28020a004100804ace91a18c4eab13a994aa92bbc04efd1a1d86871121a84f2113bfc4ee536bdce2b9ec68390c4ead13ab84ee236ae8747920022584108104204036ae8ae7b094aaa1c02258010810420400eef84e21094a73180224fc28202d080a4202411c2181088042008044eab13a984eb726b94bf200e7a43ce0139d048f20f2e03cb30f3a84ef83eee0e13ab44f240f2ec30eef43bbe138847479200224f810c1081041004049f3a27de89fa627e9041bed06fbc0e3f43479141224f0280b0a028424880704404018126ca09b210b2cc9aee26ce09afc26bdc2eac0b2b02ca7133b03d7d309afe0c9b220acf82b3f151e4800893b⟩ ] def tableRRR : Table Block := .leaf #[ ⟨0x27911808283c8196097841c1c80ce05c02940fa06a02a00b002c000, 0x12c3281242c420b1047cc01812b1e4acbc17cd85f311a3809938121e04873123d04a74123e0b2b2c45efc121e88121f854689c80089b80430420410401012a3a8a8eb262b831f38c7ce11f2f031f4f850489b70430420410401012a4aca8eb262b831f38c7ce11f2f03534bc50489b608c0480852040820810401c126bf09af72b2a4dabd1a1d868711a2f89b6526d9c9b6936ba0daef30326bf89b221a0e4daba2b9ec626c8480089b510b10a0688090688080688070688051608021411402411a59c6962227d098b752fc14d22531bc9aee26ca09afc26bdc9b380b7982df13889ee43bad4bff26bf89b220c2dec0b7848479200226cc10c1081041004054d245348d4bf426c84452ffd0eeb26bf834791c0226c81081041003050ef85348d4d260d0eeb52ffd0eec0d1e460089b0042041081014bff43bac2534a060089af042041081014bff43bb025349c60089ae042041081014bff054d251c0226b410c1081041004054c7026c854c2452fd0452ffd0eeb26bf834791c0226b0108100204052ffc15338870089a9042040081010eec26ef42532e060089a8043042041040101531c14c6d26fe54c6b109bbd52ffd0eec0d1e470089a1042040081014bff43bb02531b060089a0042040081014bff43bac2530946008978⟩, ⟨0x3581a10cb062c2a114588b442e2010f587602d80d104501d004c000, 0x42040081003af4177ac25739060089f8042040081008c7a16fa42572f460089f7042041081005be9075f02572ec70089f660e04c18b60960818704618504404318204118034147aa84b2a0eda8cc270ef952ab147bf8cdae0f0bcae6f463c518f0521d43b2a337b8f479c11e7133089d801a6d0f0a4af751eb843b250ebccae6c33798c479180227d010810020400f0e03c29095c3d180227cc62c12862412011c118610108104600a04cdeb463c4ce7b0eca95c3a0f0ec3be52b9bcce7c0eda918f0337b8c330fc3c380ec941a6d0ebcc3c292bdd4ae6c337989479180227c81081002040229c48ae4095c35180227c410810020400f0a4af39095bbd180227ac1081002040229c43c29095bb8180227a8108100204022b90156ed870089e904f04e04d04c08708642014880342004880028123df08af2473cc7f6b0f2e03cb313aac4ea60efc049b413c84486a13b948abe13bf44eff408ae31fd987f65124f03bbd0c4ead13b884eae251e480089e819405349219105018f08e04d08a189188187186045042041040441167d849bb127a059e22e6c44cfa16c982c640b0fc2c7023598d8622e5d849ee1a6a04929124908b30229bc5c20504933166d059a2132e480aec47eed2b898adff124d049e6126d459f0072f47f2a16fec2eb6448def2002279c18080601c28060452201028001812b2a4daef36af4dae60b8a068be0b8fc68761a1c468b328daba2b9ec31a1f86839151e480089e504204008100ae6c069b425399060089bd20c4080472044030411001c10b2b02ca7128fc3bf00f5f03cb80f2cc8f7c126d03d750b6a42da2307f65124f03bbd0acfc30acf861fed880089bc043042041040101224bc893d2248c312fb4892922488312fc850489bb⟩, ⟨0x33d1938c505fc2e814d89184601ea0ce055027c0e204780b002c000, 0x10810020401f7bc8a71095eb71802298410810020401e1cc1579b87008a60041040081007873174c02579946008a3e042041081005d30075f02577d86008a3310a20920820720410340204020116a9c7968169cc7a270b2b02ca7169ac2eac0b2cc793d14b169b47962168905a640acfc2b3e0c7479200228c1b2db29225b21b1c21521090c908904792b576f42c701f1c479a81e4f4a133e859e216c982c640b0fcc1e3d47962175b880aec459b4166884cb9211e48008a2f0420400810079621e3d42576f86008a2e0470460450440420410401c10ef943c2f22dc03b6a1f8a44b6d0eca88a731fe9490f0a43b250ebcc7def229c47df0191e46008a2804904810710604404310204120122fd88c2f32eb8ae351e4f48c6c232a8cbe41f7844b6d288ba81fbb48be9230c4cb751f6f01cbd1d1e46008a27047046045044043042041040201260dc3d7c261f15da2260e85aa71b4a89a25208be9230c42b3f1b18c6ce7230c05a6d1d1e47008a26042040081008c31230c025768c6008a2518b04a04904818704604404218118028152dc098371b4a8e936572e8e962261f04cec572f07a383a580b22fa46ce70ec946c63231e85be90f0e01d7c0ebcc93a4e06008a240b129b242c45076102c43076082c410802013a5985f6c0e98c3a3e0ef943b7017da8e8660eaf4e97728b0ed8439b50e9f439ee0eb9039b42074792002288d080d04c08b08a0470460451200c48002410ef944efd0edc03bf00ef843cb80f2cc3cfd3a4cc3d610fa809aa913aac4ea613ca4f0c3bbd0ed843aeb0f2ec3bbe13c904ead211e48008a22042041081005deb06cc42573e070089fd042041081005b3a06cc42573c860089fc⟩, ⟨0x3b81aa0be058826610f08203e417409d844c16e08e03c0188098000, 0x14d50c14b06880a0688071608061011002010b2b02ca70bab02cb30b0c42dbf1a59c69620b4f82dbd0b0902da00b5ec2db8226e489a2402b3e0acfc2d3a0c2d280adbc897d1d1e48008aa604d10c04b0482200c1081820048800201220943bf02e2903cb80f2cc8d2c22af8486a13aac4ea62fbd4b87b13bf44f2938493c138843bbd124d0313c904ead1d1e48008aa5046044043042040141133b07a2c177847a661e9fc9c33185d6e16fec5c22167c041ea846008aa408b08a0890c70c60c50840c30820812813a89c9869231f83d751e8c479a11e8f85db91e6a06c661b3a4793d308be9231e85bea178f85be9075f05d6e1b18c6ce7251e46008aa30cb2470c60450c40411812efa89bf626fc499b8270809be22b2f0ac7917cd85f314689868e0309bbd26eec817bf0acb1151e48008aa204204108100682c1a1f825a6b06008aa1042040081008c30132e425a1a86008a7f04f18e18d04b04a049048186605044603602181180381572e8e9ae3a4d84cec261f15cbc1b4a94b701a3815ce3427ac9837573c50a3e573dc7a38403b2516fa46c63231e83af41b39c8be916ce909b2177ac1b310f0e01d7c351e46008a760450440430420410401811a9dc6aa61aaa46aa21a9f450b7b06aa31a9fc6a741a9e46a78186eff180229d410c108104100404886d3bd904a32366944124cc49e632dd434791c0229d032c22822432031c21421020c204300a048b70229ccaf3e2bda08abe1fe94dc27370f44b6d1f8a4b9732c8a71173f4af390f0a4af75069b47df01f7bcadff24b9a7180229cc11020c204100404d9a5128fcef6422284432dd44b7a124cc312ea47008a72042040081007def229d4257bf06008a6c042040081008a752e3e4257bc46008a67042040081008a752e4e0257afc6008a630490481071061050430410402012e790b8f52e3e0b92b266a15eba22af88aec22ac492e3c8b8f6066b4b93822b908a71229d4722de06008a62⟩, ⟨0x34819a8c885b82b615189ec4c424a0ea05181ea08a02200b8030000, 0x42041081006fb4057cf514122b84108104204023c9815e7905048abf0480460450430420410401c10a0a028a90bbdc5d721e4f479a8170982f370a2949175b85c220bad82ee70a09428a3191e46008abe0430420410401014fcecda3f4ffbc3368f8da654fce033699c5048aba042041081014e67056ca614122ae010c1081041004056ca15b2813f3b5aff445399d3f385afcc347914122adc10810420405afcd4e674fce035b2887048ab60410400810810020805afcc15b0805048ab004e04d04c04b04a0490481870461841830421813412b8acae352b8ccae3c229cc8b70370f54e602b8c4ae2d339accc643709cce29334f4f1fbb4ae26072f47def229c41a6d2b7fccc3f0f0a4af752b9b0cde6311e46008aae05105004f18e04d18c18b04a0490480450441831821811804012e3f0b9212b8f0b8f52e4b4b8f82e4ac8b70370f48e66334f499a83709c8a73338a4ce6b53980cc6448b8f92e3b8b8f22e3d819ad1fbb41cbd0f0a4af751f7bc8a7133798ae6c069b4cc3f3d1e46008aad04c089087046162101d83076007042c640b0fc7c2f0f5d448601f0e099b8270809be226fd89bf12efa8c0aec459a2132e4826eec9bbd18d83720022ab023882c12812422011c48061201410508002811e4f42eac0b2b02ca70b2cc5a351e5a05aa71e7a0bf6626ca09afc26bdc4b2a1e89c9b38402b3e0acfc5a30169b49afe1e5885a240c9b22251e48008aab10b10a0480464051021811a2f8bcee2bb80aca91a2cc9b6526bf09af726da468761a1c4b1a1f868390c9afe26c8852fa988008aaa041040081003a7d0eef825a9886008aa90420400810078730eef825a8ec6008aa80410400810810020801f38c15a8cc5048aa7⟩, ⟨0x46b222907c7b23b31c68d9c6622e816a8afc43a1c40a4832c0a4000, 0x10c10810410040458a94fb953eea0c5824162904fff0d5df214122bd410c108104100404dbef23cac893d0c8f2623c9089290cdbfb14122bd012c129b203089049006044a6a128fc9c2c124a4492426bb89bf626fc44a64270b89bf92c49e62049b526eec9bbd144a3220022bcc10c10810410040458b717fd458a90c58a413ffc58240c5ea714122bc810c10810410040448ee36ca828b80ca96d122c028250ca9ed1c022bbc10c108104100404aaa727b849eb20c1fed279949e210d8abf14122bb031821030c608204504ab60129bc48e22b4bcab77129a448f21cab2c2acc0487e121e844791c022bac280b2202028060421010401810b6802d7b0b4bc2d730b5943cb80f2cc4ef6139d04ef83b7c8b0b4e82d280c3bbd1388450b4f88008aea042041081002a6d057ee41c022ba410810020400a7d46d7d097e3218022ba045445044c14844414043c13813428203108202c4820284820201182820150010048825234b0ae3522fd8cbae1f784ef36232a88c6c26e989ba426e884d7326e84793d230bc9a670f2e03cb326ac89aad0efc16138847eed1f6f01cbd32dd4493c230c49a32269a49a7822fa48ba82699030eef4f47920022b9c62862061c61811411010c108104100a047a7f260dc6db4260e43df627ca97dfb0a9b07a6d0abe4a22fa46ce7230c428ae0a7d46d7d07c9c2a6b0a9c49265b86008ae604e18d18c18b18a0496080471860450446030426013810f7d898371b6d14b7052dcc2a6c577d47a6d1e8f97dfb0abe55df927ca95df80e7a4f1b39c8be9231e81f27178f81d7c1b5f42a6b0a9c428ae0a7d47873174c0d47918022b9424013c23828203413012c12822488201c21020c108282004d043ef9276e42de60b6fc2e7f123d83f690b7c43a680b6f42da00b5ec3a26123e89d323bde0ad31442dba0fd942dec0b78430b4a080f8c83eaf0f9983e340b4e8c47920022b9144454053442948202148201c410a82008a820042c208002810b2cc2eac0b2b02ca716a9c69671a588fc23133b09ba126e889ab226ab4fbec135cc9ba62699c9ba4482b3e0acfc5a6d269e0fbe7269a49a640c9a32251e48008ae304c0a02428060601418020411001c11a1d86871267d42c24266a068be265f42cac0b29c99770bab02cb3306839265e099740acfc30acf860ad988008ae2⟩, ⟨0x3171820b7051227312688e843c1c30bc84781f009e01e0098026000, 0x10410020401f2f01678d45048b670430420410401010e6f59de80eba03ae31039b50eb903abf0d1e47008b666ca0b1242c48076101d830b1082c4108020117db0e9773a4dc3d250e98c3a3e0eaf45f6a3a1983ae828b0e9f439ee0e6d039b50eafc3ae420747920022d9410810020400eb9039b5099de918022d8810c1081041004050feb430d90fa50d0fa8430cd0f7a0d9d3b14122cfc108104204043ea01674dc5048b3e043042081123fcac7e124b830f98412b1a87008b3d04d18b088047086162141d8407600804bcff266a09c2c26fd89bf136ac0daae270b848f8123d048f2121e04873123c0e2f3ccbb3126ef49bbb20487e121e8747920022cf012422021c48031200908010401c10b6ec2e740baa868761a1c45f3e2fae468e21a18c2ea8282de11a1f831a0e42dba0b7b0647920022cd4180c1202422018070862050410402011a38099e00b6802d7b0b4bc68b30b59569331a2f88eac1a1d86871432b86822382d3a0b4a0687e0c68391a0b05fff1d1e48008b340430420410401013629cd8e7363ac32ae90aba02ae883637d05048b304203508092080850840a08030420402010b6802d7b124b82dbf0b2cc2cac0b29c5aa70bab02dbd1bbd84cec1e7a0d0b4e82b3f0acf830b4a05a30169b47267808008b2f0ce10b7ac28c204143102ee40deb02201128fd8de2133d84cf1129a8487d121a84a64124a44924221b58dab1229048e2121e048734049b5124cc49e6636988121e8487e1d1e48008b2e042041081018da6124cc26378c9008b2504204108100aba0058da414122bf01081042040160941635945048af6⟩, ⟨0x4c82208f3869e2cc15b09104622090f186f42ca14f09c83f8138000, 0xd30cf08e04d0763022c32832432031c319208605200e044929124908abe22bb0886d12dfc9c2c129a88a731f7d488731fd8c88a826bb89bf626fc49c2e129909bf94c8ae4124cc49e6229c47def1f7c07f39221bc4b7a26eec8126d49bbd348b7820022e8064033c13032c22432031cf9861621421058832c1129911cb7124a4492412dfc88a822af84a6a22bc888730f89c3f2a221b448ff124b83ead0faa1112de849b522b8c7f39221bc80f8804933127983e61291e48008b7f04e04d18c04b18a1890480470641819050441830640819003810abe43df61b6d07a6d233cc8bac27ca97dfb570c95c340a9b08cee1fbacae2d56ed4f0a9c41f271b39c8ba80a2b829f51b5f48a710a9ac7f2a1f7bc1cbd22b90d47918022df863813463012c12812462041c41841461060c408104100f055bb767bd8af3e231f88cee233cd5bbc4b1f8dc3d175b55c321fbac5d35230bd9ef53c7f2a0f0a4af392bdd41a6d075f08a711f7bc1cbd174c05cfd22fa48ba8231e85e3e3d1e46008b7d042040081005e3e075f0267bdc7008b7c14d14c14b28a2891481601458045200c480212004b0469671a5899eb6277989d770baa82e740baa03cb80f2ccfbbd234b03bf01a5b4692b0f49500a9ac3f650b7842dba0b7b04e210c3bbd0eef86926291e48008b7b042040081002a6b059ee114022de810c10810410040478b6577ec4d3c3a5fc41e1cc3a7d0e7c034791c022de410c1081041004056a3a3eef55dfb0c3bbe1388478730c4e7f20022de010c108104100404dbf923ce48f2b0c8f2623c9089290c8f3e14122ddc2e882472460ba15e101b4328228106d009044b3d12ce03f2367a8d9e7b0fad0c9b30f8e4c9ba679b43e742d9e760fabc80f8c8c93b325a0c9a50f8d084791c022dd81081002040679d8c968099e7c24022dbc1081042040325a0c9a5099e6e18022dac11411010c1081041006043f3c0abe49ff50f7f83df60f7e860a9ac3e660a0ac2a710a2b8283c191e46008b6a04b04a0890884208050608200d0820081820801120820009042e7f0b7982df126ac89aad2699c4d7326e889ba626e849ba42c2dba0b7b02de1269909a69269e03268c880b6ec8008b6919319219118e04d04c04b04a049048487186185184083042041080481576889837260e82c640b0fc6db41e9b42a6c0abe49f2a5f7ec3df60b1c0596e135d56869123e848f60f9cc3ef9508be9230c46ce707c9c2a6b0a7d46d7d0a9c428ae0aee42bb1230c04cb90f8c83e340fabc8451e48008b68⟩, ⟨0x6062be14a09a44802260ea067431418089c041e1b40cf041810c000, 0x5104f128d8e04d0a4acc0a4ac9048087086045044043128d8233a8813810f7ec3df6121883dfa33f883ead0faa0cfe5123d848fa0fbe49ff52779c9d3233f9c48640b5cd10a2b8283c33ec83e320fabc2a6b0a9c43e660f8d0cfab0f98480f880d0f7f48008bbd1f3207cc51f3107cc30c20410401c10f5d49bf626fc51f2237eb42c640b0fd3ef242dc09c20121802bf9165ccd37df90b2e26eec80aec42bb9191e48008bbb04d08c08b0472061051042032010b6f538f52b4c42da00b5ed392d13adc4eeb13b984eb113aac4ea6123c8d0b4a138e44e3c0313b884eae13ab474e4d48008bba06030280b0602011c41828030401c13fbf44b2a0f49528ef139fc3bf026bf09af726ce03cb80f2cc8d2c3128b03fbe8326c884e210eef464a3c88008bb90860841030410401411a38099ba266dc99b81a29468b3189974265e0687e1a0e44265dc7008bb705419305105018f04e04d18c128d8b04a08908833a887046128d840a4ac10a4ac04410aa882a700a2a42a7427fd42aec274c89de70a98848620a9e43ef9123e84864123d82d7333f9c3ead0faa0cfe533f8950a1fc2a6d0f9982a6b0a9c428e20a4901e650fabc80f8803e340f8c83e6133eaccfb2411e48008bb620d20c14a14914828728614528428106800b0469671a588c8232fef0c83467ad89de6275dc2eaa0b9d02ea8321f0c8390b8fcc8753218102fedc2a6b0fd942de10b6e82dec2ffe0bff10cbff2291e48008bb2043042041040101130844dac130ec312fd84da61309c352e905048bb1041040081004c2405aaa310122ec015014814414013c63813463062d2286252201d841834803c11fe944b6d1f8a4dc27229ccdc3d337d88b7053980eb692b1e4acb526f889bf626fc4bcee27080acbc17cd85f3137fad51f7c07def2bdd48a710f0a4ae6c069b4cc682b1b0826eecacb117bf09bbd391e48008baf0603883413021c81821420c80410090468632fbf839bd1a1d868710f2e03cb33eee04ef81e0d039e9139d0ace92fae43aa53c30eef84e210eef4687e1a0e439b50e9f4847920022ea813442812412011888050a008280020167c902cac0b29c2cb35fb8c2eac0b0902c3126ce09afc26bdcbeea2fbb49b28382a6d0acf82b6f0acfc326bf89b221d1e48008ba8042041081008c7a178f8267ec46008ba71b844640190f06438134190c1b82c6e0a048047186185044183042041064011048cee1fbad5ef00a9b0b9212e5bcb96d266a17dfb27ca88bac233cc7a6d1b6d03df60abe55eec441cbd2e3e419ad2e5a8b9690a7d48ba81fca86d7d1b39c1f270a2b82a6b0a9c47def229d502e7b86008ba511109004f08e04d08c08b4202048201018200818200508003010efc07fed220948af2234b07fe6473cc3cb80f2cc9a6726ac89aad135cc9ba422af89ba126e889ba648493c138843bbd1fefc8ae31fd983269e09a32269909a692d1e48008ba321321211141004d20c04b049048207405204201200381229cc2da20efc02cac0b29c2da91f7d59f230a2a49fbe0a9c08aec22af849b423df03cb80f2cc7f701fdad3229c430acf87def0adbc2b3f0a9b48ae40eef4493c1f7c07f661fd94d22de08008ba2⟩, ⟨0x4401da0e205c022e0f104c01c804c000, 0x480450c416cffb0c1e75a42079d69046044878121cdbb3f3258048a412388487d121a8832694c93b20487e121e85326a88008be704204108100c9a5324ec26ed807008be65b9287cc91f3207cc70460450c41f3048044a64221b44a6a124e4c9aa326e8c9b3124a449242e1ec8abe2c49e6126d4493332694c93b2049341d1e48008be56cd07631b281d8716218214204600804cfb00b6e0cfba0fab43ea80fca83e272b3c85f3617cc4ace9360bc5f2334cfb233eac3e610f880acb1205efc1ccfe220022f9010c108104100404cbf5329eccaa20ccaa3329e8caa10ccaae14122f8c83413022811c21881418022012011a2f90cae1a38068b31a1d868711a089693326da49afc26bdc9b652fd9c4b2238683917ffc682c1a1f8326c889afe1d1e48008be204304204104010117fd45ff017fe031609c5825160903635845048be104918818618504404204104020132eb84cec32f90ae35270cc4b6d233b8ae3417784932dd47eed072f42eb61fca859f016fec7673dc6008bbf0430420410401012b5c4ad63363ac32b4f8abb62ae8832afbc5048bbe⟩ ] def tableRR : Table Block := .branch 9 tableRRL tableRRR def tableR : Table Block := .branch 19 tableRL tableRR def table : Table Block := .branch 37 tableL tableR def records (i : ℕ) : List ℕ := PackedNatTable.records table (32 * (i / 16) + i % 16) end PolicyArithmeticPacked1 end PolicySubmissionPart49 /- Component PolicyAssertedData; SHA256 f6b3d68bbeefd61e9a722401d68807b3057edcf204358ee98e5b389df8f7114d. -/ section PolicySubmissionPart50 /- Authoritative asserted clause identifiers and dense alias roots. -/ namespace PolicyAssertedPacked0 def records : Nat → List Nat | 0 => [0x11dd, 0x903] | 1 => [0x1201, 0x9a4] | 2 => [0x122b, 0xa38] | 3 => [0x124c, 0xaa1] | 4 => [0x1277, 0xb1a] | 5 => [0x12a4, 0xbce] | 6 => [0x12b3, 0xc49] | 7 => [0x12b7, 0xc5c] | 8 => [0x1309, 0xdb7] | 9 => [0x136d, 0xeea] | 10 => [0x13e4, 0x105e] | 11 => [0x13e7, 0x1071] | 12 => [0x13f6, 0x109c] | 13 => [0x15d5, 0x170c] | 14 => [0x15e5, 0x1755] | 15 => [0x15e8, 0x1770] | 16 => [0x16d6, 0x1a60] | 17 => [0x171f, 0x1b37] | 18 => [0x173c, 0x1c0d] | 19 => [0x173f, 0x1c22] | 20 => [0x1848, 0x1ffe] | 21 => [0x184b, 0x2020] | 22 => [0x186c, 0x20a7] | 23 => [0x1948, 0x2465] | 24 => [0x19c5, 0x2611] | 25 => [0x1a58, 0x2852] | 26 => [0x1a5b, 0x286d] | 27 => [0x1a78, 0x28c4] | 28 => [0x1ad4, 0x29d7] | 29 => [0x1ad7, 0x29f9] | 30 => [0x1c4a, 0x31cc] | 31 => [0x1cd4, 0x3417] | 32 => [0x1cd7, 0x343c] | 33 => [0x1d8b, 0x3852] | 34 => [0x1dae, 0x399b] | 35 => [0x1e4a, 0x3cc3] | _ => [] end PolicyAssertedPacked0 namespace PolicyAssertedPacked1 def records : Nat → List Nat | 0 => [0x1102, 0x86f] | 1 => [0x1117, 0x8d5] | 2 => [0x111a, 0x8ea] | 3 => [0x1169, 0xa13] | 4 => [0x1183, 0xa5e] | 5 => [0x11ba, 0xb06] | 6 => [0x120f, 0xc22] | 7 => [0x124c, 0xd04] | 8 => [0x1420, 0x13e1] | 9 => [0x1423, 0x13f6] | 10 => [0x143d, 0x1486] | 11 => [0x1440, 0x1499] | 12 => [0x1500, 0x1707] | 13 => [0x1511, 0x1734] | 14 => [0x15a2, 0x1916] | 15 => [0x15a5, 0x192b] | 16 => [0x15fa, 0x1ad9] | 17 => [0x174e, 0x1f46] | 18 => [0x1751, 0x1f5b] | 19 => [0x1757, 0x1f71] | 20 => [0x1a53, 0x2ae1] | 21 => [0x1a56, 0x2af5] | 22 => [0x1a8c, 0x2bcf] | 23 => [0x1acf, 0x2d02] | 24 => [0x1ae2, 0x2d69] | 25 => [0x1ae5, 0x2d84] | 26 => [0x1bdd, 0x30f6] | 27 => [0x1be0, 0x3118] | 28 => [0x1e3b, 0x4155] | 29 => [0x1e5a, 0x41cb] | 30 => [0x1e5d, 0x41ed] | 31 => [0x1f06, 0x47be] | 32 => [0x1f2b, 0x4993] | 33 => [0x1fa1, 0x4bd6] | _ => [] end PolicyAssertedPacked1 end PolicySubmissionPart50 /- Component PolicyInitialCoverageData; SHA256 e0674f908ddeecfe5e6167a8bec57fc569196cf56edfe1206af12529d28c5fd6. -/ section PolicySubmissionPart51 namespace PolicyInitialCoverage0Tail open PackedNatTable def tableLLLL : Table Block := .leaf #[ ⟨0x4001f00f007403801b00d006403001700b0054028013009004402000f007003401800b005002401000700300140080030010004000, 0x6015c15815411825014c14814414011421023c13810c23413012c12812410822011c11811411010c1081041001042002⟩, ⟨0x4f026012408c04402080f807803a01b80d006202e01580a404c023010007403401800b005002401000700300140080030010004000, 0x1b8106d041b0100306b041a813c2382069041a0106704198106504d0819010630418810610418013022c27c17812827417012422026c16811c2641⟩, ⟨0x5c02c81580a6050026812808e04402080f807803901b00cc06002e01580a004a022010007403601800a804801e00c0048018006000, 0xaa042a410a80429c10a60429410a40428c10a20428414c20a0041fc107e041f4148207c041ec107a041e41442078050081dc1076041d41074041cc1072041c41070041bc1⟩, ⟨0x5802a814809e04d025812008a04302080f807603801b00cc06002d01580a004a02200f807003201600a004401c00b0040014004000, 0xe20438410e005a099082fc10be058097082f410bc042ec15820ba042e410b8055082dc10b6042d410b4042cc10b2042c415020b0042bc10ae042b410ac042ac1043⟩, ⟨0x5a02b81500a204e026012408c04302000f407603801a80cc06002d015009c04802100f0070032016009804001c00b0040018006000, 0x60083ec10fa043e417c20f8043dc10f6043d410f405e083cc10f205d083c410f0043bc10ee043b410ec043ac10830ea043a410e80439c17020e60439416c20e40438c1⟩, ⟨0x5f02e01640ac0530280134094047022010407c03b01c00d406402f01600a404c023010807803601800a804801e00c0048018006000, 0x1a42131044c0112f044b810680819c212d044b0112b044a81129044a011270449810660819421250449010640830c18c21230448811210418820610848010ff043f810fd043f01⟩, ⟨0x5f02e01640ac0530280134094047022010807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x5a81169041bc206e085a01167045981165041b4210306c08590116304588116104580113f041ac213e044f4106a084f0113b044e81139044e01137044d81135044d01133044c81⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x770868811a104680117f045f8117d041d8217c045ec117a045e41178045dc1176041d42074081cc2072085d41174045cc1172045c41170045bc1071085b8116d045b01070085ac1⟩ ] def tableLLLR : Table Block := .leaf #[ ⟨0x5d02d015c0a8051027012c090045021010007a03a01b80d406402f01600a404c023010007403401700a004401c00b0048018006000, 0x6f811bd046f011bb046e811b9046e011b7046d811c31b5046d010780860c6cc11b2046c411b0046bc11ae046b411ac046ac11aa046a411a80469c11a60450c69411a40468c1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x1f6047d411f40428021f3047c8107f087c411f0047bc11ee047b4107e087b0107d081f0207b087ac11ea047a411e80479c11e60479411e40478c107a081e421e20478411e0046fc1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0xa6088c0122f048b8122d04294222c048ac122a048a412280489c12260489412240429022230488812210488010a3087fc11fe0428821fd047f011fb047e810a1087e411f8047dc1⟩, ⟨0x5f02e01640ac0530280134094047022010407c03b01c00d406402f01600a404c023010007403401800a804801e00c0048018006000, 0x99c10ae082b42266042b02265049901263049881261042ac2260048fc123e048f410aa088f0123b048e81239042a42238048dc1203236048d410a8088d01233048c812310429c2⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x2a304a8812a104a80127f049f8127d049f0127b049e81279042c820b1089e01277042c02276049d41274049cc1272049c41270049bc126e049b4126c042bc226b049a81269049a01⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x2b604ad412b404acc12b204ac412b004abc12ae04ab410bf08ab012ab042f820bd082f020bb082e820b9082e020b7082d820b508aa812a904aa012a704a9810b4082cc22a504a901⟩, ⟨0x5f02e01640ac0530280134094047022010407c03b01c00d406402f01600a404c024010807803601800a804801e00c0048018006000, 0xbb810e60839422ed04bb012eb04ba812e90439022e804b9c10e308b9812e504b9012e304b8812e104b8012432bf04af812bd04af010e208aec12ba04ae410e108ae010e008adc1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x326043b8232504c90132304c88132104c8012ff04bf810ed08bf412fc043b022fb04be810eb08be412f804bdc12f604bd410ea083a422f404bcc12f2043a022f10439c22f004bbc1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x33e04cf4133c04cec133a04ce4133804cdc133604cd41334043d820f508ccc133204cc4133004cbc10f4083cc232e04cb4132c043c8232b04ca810f108ca41328043c020ef08c9c1⟩ ] def tableLLL : Table Block := .branch 8 tableLLLL tableLLLR def tableLLRL : Table Block := .leaf #[ ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x37904de0137704dd8137504dd010fb08dcc137204dc4137004dbc136e04db4136c04dac10fa08da8136904da0136704d981365043e4236404d8c10f808d881361043dc236004cfc1⟩, ⟨0x5d02d015c0a8051027012c09004502100fc07a03a01b80d006202e01580a004a02200f8070032016009804401c00b0048018006000, 0xec013af0448423ae0448023ad04eb013ab04ea813a904c0cea013a7043fc23a604e9413a404e8c10fe08e8813a104e80137f043f420fc08b0cdf8137d04a0cdf0137b04de81⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x3e4044b423e304f88112c084ac23e104f8013bf044a82129084a0212708498212508ef813bd04ef013bb04ee813b904ee013b704ed8112408ed413b404ecc13b204ec41123084882⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x3fd04ff013fb04fe81134084cc23f904fe013f704fd813f5044c82131084c023f404fcc13f204fc413f004fbc13ee04fb413ec04fac112f08fa813e9044b823e804f9c13e604f941⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x13b090d8113a090d41434044e42138090cc1432050c41430050bc142e050b4142c050ac1137090a81429050a01427050981425050901423050881136090841420044d423ff04ff81⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x46c051ac146a051a414680519c14660519414640459421640858c216208584246305188146105180143f04580213f090f8143d044f8243c050ec143a044f42439050e01437044f02⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x16b09298116a0929414a40528c14a2052841169085a0216709280147f04598247e051f4147c051ec147a051e41478051dc1476051d41474051cc1472051c41470051bc146e051b41⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x4be052f414bc052ec1173085c824ba052e414b8052dc14b6045c42170092d414b4052cc14b2052c4116f085b8216d092c014af052b814ad052b014ab052a814a9052a014a7045b02⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x4f7045e824f6053d414f4053cc14f2053c414f0053bc14ee045e424ed045e024ec053ac14ea053a41177085d824e80539c14e60539414e40538c14e2045d424e10538014bf045d02⟩ ] def tableLLRR : Table Block := .leaf #[ ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x532045fc2531054c0152f054b8152d045f8217d085f0252c054ac152a045ec2529054a015270549815250549015230548815210548014ff053f814fd053f014fb053e814f9053e01⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x56a055a415680559c15660469c21a6086942565055901563046902562055841560054fc153e054f4153c054ec153a054e411a3094e01537054d811a20868421a0094d41534054cc1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x5a30568815a10568011ae086b4257f055f8157d055f011ac095ec157a055e41578046ac2577055d811aa095d41574055cc1572046a42571055c011a8095bc156e055b4156c055ac1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x5bb056e815b9056e011b6086d425b7056d815b5056d011b4096cc15b2056c415b0046cc25af056b815ad056b015ab056a811b2086c425a9056a015a7046c025a60569415a4046bc2⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x5f4057cc15f2057c411bd086f025f0057bc11bb086e825ee057b415ec057ac15ea046e425e9057a011b80979c15e60579415e40578c15e20578415e0056fc15be056f415bc046dc2⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x62b058a811e6098a416280589c16260589416240588c16220588411e5087902620057fc11e3097f815fd057f015fb057e811e20878425f9057e011e0086fc25f7057d811be097d41⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x66105980163f058f8163d058f0163b047c021ef087b821ed087b0263a058e411eb087a82638058dc11e9087a02636058d41634058cc1632058c41630058bc162e058b411e7098b01⟩, ⟨0x5f02e01640ac0530280134094047022010407c03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x19f0167b059e81679059e01677059d81675059d01673059c81343671059c0166f059b8166d059b0166b047d021f3099a81669059a01667047c826660599411f1099901663059881⟩, ⟨0x5e02d81600aa0520278130092046021810007a03a01b80d006202e01580a004a02200f807003201600a004401c00c0048018006000, 0x1fa09ad016b3047e426b205ac416b005abc11f809ab816ad047dc26ac047d826ab05aa811f509aa416a805a9c16a605a9416a405a8c13c36a205a8413836a0059fc167e059f41⟩ ] def tableLLR : Table Block := .branch 9 tableLLRL tableLLRR def tableLL : Table Block := .branch 17 tableLLL tableLLR def tableLRLL : Table Block := .leaf #[ ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x22209bb0122109bac16ea0488026e905ba016e705b9811ff09b9416e405b8c16e2047f826e105b8016bf05af816bd05af016bb05ae811fd09ae416b8047f021fb09adc16b605ad41⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x72305c88172105c8016ff05bf8122b09bf416fc048a826fb05be81229088a026f90489c26f805bdc16f60489826f505bd016f30489426f205bc416f005bbc122409bb816ed0488c2⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x23409ce8173905ce0123309cdc173605cd41734048c8273305cc81731048c4273005cbc123009cb8172d048bc222e09cb0172b05ca8172905ca0122d09c9c172605c94122c09c901⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x77305dc8177105dc0123b088e8276f05db8123909db4176c05dac176a05da4123809da0176705d98176505d90123709d8c1762048d8276105d80173f05cf8123509cf4173c05cec1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x7a904994226409ea017a705e98126309e9417a405e8c17a205e84126208984226009e80177f05df8177d05df0177b05de8177905de0177705dd8123f088f82775048f4223c09dd01⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x270089bc226e089b427be05ef4126c09ef0126b09eec17ba05ee4126a09ee017b705ed817b505ed0126909ecc17b2049a027b105ec012670899827af05eb817ad05eb017ab05ea81⟩, ⟨0x5f02e01640ac0530280134094047022010407e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x1fd017f305fc817f1049e427f005fbc17ee05fb417ec0500dfac17ea049e027e905fa017e705f9817e505f90127709f8c17e2049d8227509f8417e0049d0227309efc1272089c42⟩, ⟨0x6d03481940c405e02d01580a404f025811c08804001e00e006a03101680a804e024010807803601800a804801e00c0048018006000, 0x182c04182b04a842060a81060a41060a010609c12a0081826041825049fc20609010608c106088127e08182104182005ffc127d09ff817fd05ff017fb049f027fa05fe417f8049ec27f705fd817f5049e82⟩ ] def tableLRLR : Table Block := .leaf #[ ⟨0x7503881bc0d606803281880bc05a02b014c09e04b023811008003c01c00d006002c014009004001d00c805802600f005801c008000, 0x18620510c186104aa822a908aa02061801060fc1060f812a708183d04183c04183b04a982060e81060e41060e01060dc1060d81060d41060d01060cc1060c812a508183104a9022a308183004182f04182e04a882060b41⟩, ⟨0x7803a01c80dc06a03401900c005d02c81540a204d024811408203e01d00d806602f015809c04602000e00600280100060020008000, 0x61f014c3061ec1061e81483061e41061e012ae08187704187604187504187404187304187204187104ab42061c01061bc12ac08186e04186d04186c04186b04aac2061a81061a41061a010619c10619810619410619010618c1⟩, ⟨0x7603981bc0d606703201800ba05a02b814c09e04b023811008003c01c80d406202d015009804401e00d005c02600f0060020008000, 0x2b80818b20418b10418b004adc2062bc12b608ad422b40818ae0418ad0418ac0418ab04acc2062a81062a412b20818a80418a70418a604ac420629410629010628c10628812b00818a10418a004abc2061fc1061f81061f41⟩, ⟨0x7903a81c40da06903281880bc05a02b014c09e04b024011008003c01c00d406202e015809c04601f00d80600280100060020008000, 0x18eb0418ea0418e90418e80418e704afc20639810639410639012be0818e30418e204af42063841063801062fc1062f812bc0818bd04aec22ba0818bc0418bb0418ba0418b904ae42062e01062dc1062d81062d41062d01062cc1⟩, ⟨0x7a03b01cc0de06b03381900c005c02c01540a404e025011808403e01d00d806402f015809c04601f00d805c0260100060020008000, 0x649412e508192404192304192204b902064841064801063fc12e308b882063f81063f41063f01063ec1063e81063e41063e01063dc12e10818f60418f50418f40418f30418f20418f10418f004b802063bc1063b81063b41063b01⟩, ⟨0x7903a81c40dc06a03301880bc05a02b81500a004c024011408203d01c80d806402e015009804401e00d005802600f0058020008000, 0x193e04193d04bb02064f01064ec1064e81064e41064e012eb08ba82064dc1064d81064d412e908193404193304193204ba02064c41064c01064bc1064b81064b41064b01064ac1064a812e708192904192804b9820649c1064981⟩, ⟨0x7503881b80d606703181800ba05902a814409a04a023010807c03b01b80cc05e02c014009004001d00d005c02600f0058020008000, 0x197304bdc22f608197204197104bd422f408197004196f04196e04196d04bcc2065b01065ac1065a812f208196904196804196704bc420659810659410659012f008bbc22ee08196304196204196104bb42065801064fc1⟩, ⟨0x7303781b00d206503081780b60570298140098048022810807c03b01c00d006002c014809404201e00d005802400e0058020008000, 0x19a604c9023230819a50419a404c8823210819a30419a204c8020668410668012ff08bf82065fc12fd08bf02065f81065f41065f012fb08197b04197a04be82065e41065e01065dc1065d812f908be02065d41065d01⟩, ⟨0x7703981bc0d606703201840bc05b02b814c09e04b024011408203d01c80d406402e015009c04601f00d805c0260100060020008000, 0x19bd0419bc0419bb0419ba04cb4232c08cac232a0819b90419b80419b70419b604ca423280819b50419b40419b30419b204c9c2066c41066c013260819af0419ae0419ad0419ac0419ab04c942066a81066a41066a010669c1⟩ ] def tableLRL : Table Block := .branch 8 tableLRLL tableLRLR def tableLRRL : Table Block := .leaf #[ ⟨0x7403881b80d4066031817c0b6057029814009a04a023811008003c01c00d006002d014809404401e00d005802600f005801c006000, 0x33908ce02067c41067c013370819ef0419ee0419ed0419ec04cd8233508cd0233308cc82067ac1067a81067a41067a010679c13310819e60419e504cc020679010678c106788132f0819e10419e00419bf0419be04cb82⟩, ⟨0x7803a01c00d806803201800ba05a02b014809c04a023010c07e03b01b80cc05e02c014009804401e00e00600280100060020008000, 0x68ac1068a81068a41068a010689c106898133d08cf020689410689010688c106888106884133b081a200419ff0419fe0419fd0419fc04ce82067ec1543067e81067e41503067e01067dc1067d81067d41067d01067cc1067c81⟩, ⟨0x7803a01c40dc06a03381900c005c02c81540a204d024811408203d01c80d406202d015809c04602000e00600280100060020008000, 0x6990136308d8820698c136108d80206988106984133f081a60041a3f041a3e041a3d041a3c041a3b041a3a041a39041a38041a37041a360560c1a35041a3404cf82068cc1068c81068c41068c01068bc1068b81068b41068b01⟩, ⟨0x7603901b80d4067031817c0b6057029813c096047022010407c03b01c00d406202d014809404201e00d005802400e005001c008000, 0x69e81069e41069e0136d081a77041a76041a75041a74041a73041a72041a71041a7004db0236b08da8236908da02367081a6f041a6e041a6d041a6c041a6b04d982069a81069a41069a010699c106998136508d902069941⟩, ⟨0x7803a01c00d806803281840ba05902a814809e04c024011408403e01d00d806402e015009804401f00d805c02600f0058020008000, 0x6ac8106ac4106ac0106abc1375081aae041aad041aac041aab04dd0237308dc8206aa8137108dc0206aa4106aa0106a9c106a98106a94106a90106a8c106a88136f081aa1041aa0041a7f041a7e041a7d04db82069f01069ec1⟩, ⟨0x7803a81c40da06903301880be05c02c81540a204d024811408203e01d00d806402e015009c04601f00d805c02600f005801c008000, 0x37d081aea041ae9041ae804df0206b9c137b08de82379081ae6041ae5041ae4041ae3041ae2041ae104de0206b80106afc106af8106af4106af01377081abb041aba041ab9041ab8041ab7041ab6041ab5041ab404dd8206acc1⟩, ⟨0x7c03c01d40e206e03501980c405e02d01580a404e025011808403f01d80dc06602f015809c04601f00d805c0260100060020008000, 0x6c9813a1081b2504e80206c90106c8c106c88106c84106c80106bfc106bf8106bf4106bf0106bec106be8137f081af9041af8041af7041af6041af5041af4041af3041af2041af1041af0041aef04df8206bb8106bb4106bb0106bac1⟩, ⟨0x7903a81c40dc06a03301880bc05a02b81500a004c024011008203d01c80d406202d015009804401f00d805c02600f0058020008000, 0x1b3f041b3e04ea0206cf4106cf0106cec106ce8106ce413a708e98206ce0106cdc106cd8106cd413a5081b34041b33041b32041b31041b3004e90206cbc106cb813a3081b2d041b2c041b2b041b2a041b2904e88206ca0106c9c1⟩, ⟨0x7903a81c40da06903281880be05b02b814c09e04c024011408403e01d00d806402e015809c04802000e00600280100060020008000, 0x1b78041b77041b76041b75041b7404ebc23ae081b73041b72041b71041b7004eb4206dbc13ac08eac206db8106db4106db0106dac106da813aa081b6904ea4206da0106d9c106d98106d94106d90106d8c106d88106d84106d801⟩ ] def tableLRRR : Table Block := .leaf #[ ⟨0x7903a81c40da06903281840ba05902a814409a049023010c07e03b01c00d406202d014809804401e00e00600280100060020008000, 0x1bb2041bb1041bb0041baf041bae041bad041bac041bab041baa041ba9041ba8041ba704ed023b3081ba6041ba504ec823b1081ba4041ba3041ba204ec0206e84106e8015c306dfc106df8106df4106df0106dec106de8106de41⟩, ⟨0x7903a81c40da06a03301880be05b02b814c09e04c024011008003c01c00d406202e015809c04602000e00600280100060020008000, 0x1beb041bea041be904eec206fa0106f9c13ba081be6041be5041be4041be304ee4206f88106f84106f80106efc106ef813b8081bbd04edc23b6081bbc041bbb04ed4206ee8106ee4106ee0106edc106ed8106ed4106ed0106ecc1⟩, ⟨0x7903a81c40dc06a03301880bc05b02b814c09e04b023810c07e03b01b80cc06002c014009004201e00d00580260100060020008000, 0x1c24041c2304f88207088107084107080106ffc13e1081bfe041bfd041bfc041bfb041bfa041bf9041bf8041bf7041bf6041bf504f80206fd0106fcc106fc813bf08ef8206fc4106fc013bd08ef0206fbc106fb8106fb4106fb01⟩, ⟨0x7403801b00d006503081740b20550290138096048022010007803801a00c005a029013008c04001c00c005402400f0060020008000, 0x70e01070dc1070d813ee081c35041c34041c33041c3204fb42070c413ec08fac2070c01070bc1070b81070b41070b01070ac13ea081c2a04fa423e808f9c2070a41070a013e608f9423e408f8c20709c1070981070941⟩, ⟨0x7803a01c40dc06a03301880be05b02b814c0a004c024011008003c01c00d006002c014809404201d00c805402200f005801c008000, 0x71c413f408fcc2071c01071bc1071b813f2081c6d041c6c041c6b04fc42071a81071a41071a010719c10719810719410719010718c10718813f0081c61041c60041c3f041c3e041c3d041c3c0580c1c3b041c3a04fbc2070e41⟩, ⟨0x7803a01c00da06903281840ba05a02b014809c04b023810c08003c01c00d006002d015009804401e00d005802400f005801c008000, 0x72a41072a013fc081ca7041ca6041ca5041ca404fec20728c10728810728413fa081ca0041c7f04fe42071f81071f41071f01071ec13f808fdc2071e81071e41071e01071dc1071d81071d413f6081c74041c7304fd42071c81⟩, ⟨0x7703981c00d806803281840ba05902a814409a049023010c07e03b01c00d006002c014809404401e00d005802600f0058020008000, 0x1ce0050942072fc1072f81424081cbd041cbc041cbb041cba041cb9041cb8041cb70508c2422081cb6041cb5050842072d01072cc1072c81420081cb104ffc2072c01072bc1072b813fe081cad041cac04ff42072ac1072a81⟩, ⟨0x7503881b40d2066031817c0b605702a014009a049022810807e03c01c00d006002c014009004201e00d005c0280100060020008000, 0x1cf5041cf4041cf3050c0242f081cf2041cf1041cf0050b82073bc142d081cee041ced050b0242b090a82073b01073ac1073a81073a41073a010739c1429090a020739814270909820739410739010738c1073881073841⟩, ⟨0x7003681a40ca06102e816c0ae053028813409204502080f807403601900b8056028012808803e01c00c005402400f0060020008000, 0x43c081d27041d26041d25041d2405a0c1d23041d220590c1d21041d20041cff041cfe050ec2073f41073f01073ec1073e8143a090e42438090dc2436090d42073e41434090cc2432090c42073e01073dc1073d81⟩ ] def tableLRR : Table Block := .branch 9 tableLRRL tableLRRR def tableLR : Table Block := .branch 17 tableLRL tableLRR def tableL : Table Block := .branch 35 tableLL tableLR def tableRLLL : Table Block := .leaf #[ ⟨0x7503881b40d206503081740b2055029813c098048022810407a03901a80c805c02a013008803e01b00b804c01e00c0048018006000, 0x1d3d041d3c041d3b041d3a041d39041d38041d37041d3605b0c1d35051942074d01464081d33041d32041d31041d300518c2074bc1074b81074b41074b01462081d2b041d2a041d29041d28051842460090fc243e090f42⟩, ⟨0x7803a01c00d806803281840ba05a02b014809c04b023810c08003c01c00d006002d015009804401e00d005802400e005001c006000, 0x75d41075d01075cc1075c8146d081d71041d70051b02075bc1075b81075b4146b081d6c041d6b051a82075a81075a41075a010759c1469091a020759810759410759010758c1075881075841075801074fc1467081d3e051982⟩, ⟨0x7803a81c40da06903301880bc05b02b81500a004d024811408203d01c80d806402e015009804401e00d00580260100060020008000, 0x475081dad041dac041dab051d02076a81076a41473081da8051c820769c1471081da6041da5041da4041da3041da2051c02076841076801075fc1075f81075f41075f01075ec1075e8146f091b82075e41075e01075dc1075d81⟩, ⟨0x7703981bc0d806803201800b805802a014809c04a024011008203e01d00d806602f015809c04602000e00600280100060020008000, 0x1de6041de5051e820779010778c1077881077841077801076fc1743076f81076f41703076f01479091e02076ec1076e81477081db9041db8041db7041db6051d82076d41076d01076cc1076c81076c41076c01076bc1076b81⟩, ⟨0x7b03b81cc0de06b03381900c005c02c01500a204d024811408203d01c80d406202e015009804401e00d805c02600f0060020008000, 0x1e21041e20041dff041dfe041dfd051fc2077f01077ec1077e81077e4147e081df8041df7041df6041df5041df4041df3041df2041df1051f42077c01077bc1077b81077b4147c081dec041deb041dea051ec2077a41077a010779c1⟩, ⟨0x7503881b40d2065031017c0b805802a0140098048022010407c03b01b80cc05e02b014009404401e00d005c02600f005801c006000, 0x1e36041e35041e34041e33052a824a9092a02078c81078c41078c01078bc1078b81078b414a70929824a5081e2c041e2b041e2a041e290529024a3092882078a010789c14a1081e26041e25041e24041e23041e22052802⟩, ⟨0x7803a01c40da06903281880bc05a02b814c09e04b023810c07e03b01b80d006002c014009004001c00c005002000d005001c008000, 0x79b814b2081e6d041e6c041e6b052c42079a81079a414b0081e68041e67041e66041e65041e64041e63041e62041e61052bc2079801078fc1078f81078f41078f01078ec1078e81078e41078e014ae092b424ac092ac2078dc1⟩, ⟨0x7a03b01c80dc06a03301880be05b02c01500a004c024011408203e01d00d806402e015009804602000e00600280100060020008000, 0x7aa0107a9c107a98107a94107a90107a8c14b8081ea2052dc207a84107a801079fc1079f814b6081e7d052d42079f01079ec1079e81079e41079e01079dc14b4092cc2079d81079d41079d01079cc1079c81079c41079c01079bc1⟩ ] def tableRLLR : Table Block := .leaf #[ ⟨0x7403881b40d4067031817c0b605802a814809c04a023010807c03a01b80d006202e015809c04601f00d805c0280100060020008000, 0x4e4081ebc0538c24e2081ebb041eba041eb90538424e0092fc207ae0107adc107ad8107ad4107ad0107acc14be092f424bc092ec24ba081eb2041eb1041eb0041eaf041eae052e4207ab4107ab0107aac107aa8107aa41⟩, ⟨0x7703981bc0d606703181800b805802a0140098048022010407c03a01b00c805c02b014009404201e00d005802400e0050018006000, 0x1ef3041ef2041ef1041ef0041eef053b4207bb8107bb4107bb0107bac107ba8107ba4107ba014ec093ac207b9c107b98107b94107b9014ea093a424e8081ee30539c207b88107b84107b80107afc107af8107af414e6093942⟩, ⟨0x7703981bc0d6067031817c0b6057029813c096047022010007a03a01b80cc05e02c014009404201d00c805802400e005001c006000, 0x1f2a041f29041f28041f27041f26041f25041f24041f23041f22041f21041f20041eff053d8207bf814f5093d024f3081efd041efc053c8207bec14f1081efa041ef9041ef8053c0207bdc107bd8107bd414ef081ef4053b82⟩, ⟨0x7703981bc0d806903281840ba05902b014809c04a023010807e03c01c00d006202d014809804401e00d005802400f0060020008000, 0x1f61041f60053fc24fe081f3f041f3e041f3d041f3c053f4207cec107ce8107ce4107ce0107cdc14fc093ec207cd8107cd414fa081f34041f33053e4207cc8107cc4107cc0107cbc107cb814f8093dc207cb4107cb0107cac1⟩, ⟨0x7103681a40ca06102f016c0b0055029013809404602100f807403601900b8054027012008403a01900b004c02000d0050018006000, 0x1f72041f71041f70041f6f054b8252d094b0252b094a8207db8107db4107db0107dac107da8107da4107da0107d9c107d98107d941529094a02527081f64041f6305498252509490252309488207d881521094802⟩, ⟨0x7203781ac0ce06302f81700b00540280134094047021810007803801a00c0058029012808803c01b00c005002200e0050018006000, 0x53c081fa4041fa3041fa2041fa1054ec207e80107dfc107df8153a094e42538081f7d054dc207df0107dec107de8107de4107de01536081f77054d4207dd81534094cc207dd41532094c4207dd0107dcc1530094bc2⟩, ⟨0x7403801b40d4066031017c0b805802a0140098049022810407a03a01b80d006002c014009404201d00d005802400e005001c008000, 0x7ee015680959c207edc107ed8156609594207ed4107ed0107ecc107ec81564081fb1041fb0041faf0558c256209584207eb8107eb4107eb01560081fab041faa054fc207ea4107ea0107e9c107e98153e094f4207e941⟩, ⟨0x7903b01cc0de06b033818c0be05b02b814c0a004c024011008003c01c00d006002c014809404601f00d805c02600f0060020008000, 0x15b4256c081ff2041ff1041ff0041fef041fee041fed041fec041feb055ac207fa8107fa4107fa0107f9c107f98107f94107f90107f8c107f88156a081fe105e0c1fe0041fbf041fbe041fbd041fbc055a4207eec107ee8107ee41⟩, ⟨0x7603901b80d6067031817c0b6057029813c09604702180fc07803901b00cc06002d014809804401e00d005802600f0060020008000, 0xa0a010a09c1577082826042825042824042823042822042821042820041fff041ffe041ffd041ffc055d82575095d02573095c82571081ffb055c0207fe8107fe4107fe0107fdc156f081ff6055b8207fd4107fd0107fcc1⟩ ] def tableRLL : Table Block := .branch 8 tableRLLL tableRLLR def tableRLRL : Table Block := .leaf #[ ⟨0x7403801b40d4066031017c0b605702a0140098048022810807e03c01c00d006002c014009404401e00d005c02600f005801c006000, 0xa0f015a30968820a0ec10a0e815a10828390428380568020a0dc10a0d810a0d4157f095f8257d095f020a0d010a0cc10a0c810a0c410a0c0157b095e820a0bc10a0b8157908282d04282c04282b04282a042829055e02⟩, ⟨0x7b03b81d00e006c03401900c005c02c01500a004c024811408203d01d00d806402e015009804401e00d005c02600f005801c006000, 0x2877056a020a1d810a1d410a1d010a1cc10a1c810a1c410a1c010a1bc10a1b810a1b415a708286c04286b04286a0569820a1a410a1a010a19c10a19810a19410a19010a18c10a18815a508286104286004283f04283e04283d056902⟩, ⟨0x7a03b01c80dc06a03301880be05b02b81500a004c025011808403e01d80dc06602f015809c04602000e00600280100060020008000, 0xa2c810a2c410a2c010a2bc10a2b810a2b415ab0828ac0428ab0418030a2a810a2a417c30a2a010a29c10a29815aa0828a50428a40428a30428a20428a10428a0056a420a1fc10a1f810a1f410a1f010a1ec10a1e810a1e410a1e01⟩, ⟨0x7c03c01d00e006c03401900c005c02c81540a204d024811408203d01c80d406402f015809c04601f00d805c02600f0060020008000, 0xa3b810a3b410a3b010a3ac10a3a810a3a410a3a010a39c15af0828e60428e50428e40428e30428e20428e10428e00428bf0428be056b825ad0828bd0428bc0428bb0428ba0428b90428b80428b70428b6056b020a2d410a2d010a2cc1⟩, ⟨0x7b03b81cc0de06b033818c0be05b02b814c09e04b023811008203d01c80d806402e015009804401f00d805c02600f0058020008000, 0x29290429280429270429260429250429240429230429220429210429200428ff0428fe0428fd056d025b30828fc0428fb056c820a3e810a3e410a3e010a3dc10a3d815b10828f50428f40428f30428f20428f1056c020a3c010a3bc1⟩, ⟨0x7403801b00d006503081740b2056029814009a04a023010807c03a01b80d006202e015009804401e00d805c02600f005801c006000, 0xa4f410a4f010a4ec15e008293a042939042938056fc25be096f425bc096ec20a4dc10a4d810a4d410a4d015ba096e425b8096dc20a4cc10a4c810a4c410a4c015b608292f04292e04292d04292c04292b04292a056d42⟩, ⟨0x7703981bc0d806903281840ba05902a814809e04c024811808603f01d80dc06602f01580a004802000e00600280100060020008000, 0x2974042973057a425e808297204297104297004296f04296e0579c25e60979425e40978c25e208296d04296c04296b04296a0429690429680578420a59c10a59810a59410a59010a58c10a58810a58410a58010a4fc10a4f81⟩, ⟨0x7903a81c80dc06b033818c0be05b02b814c09e04b023811008003d01c80d406202d014809404201e00d005802600f0060020008000, 0x29ad057c020a6b015ef0829ab0429aa0429a90429a80429a70429a60429a50429a40429a3057b820a68815ed0829a10429a004297f04297e04297d04297c04297b057b020a5e810a5e415eb082978057a820a5dc10a5d810a5d41⟩, ⟨0x7903a81c40da06a033018c0be05c02c01500a004c024011008003c01c00d006002c014809804401e00d805c02600f0058020008000, 0x29e60429e50429e4057d820a78c15f50829e2057d020a78410a78010a6fc10a6f810a6f410a6f010a6ec10a6e810a6e410a6e010a6dc10a6d815f30818430a6d410a6d015f20829b30429b20429b10429b0057c420a6bc10a6b81⟩ ] def tableRLRR : Table Block := .leaf #[ ⟨0x7b03b81cc0de06b03401900c005c02c01500a004d024811408203e01d00d806602f015809c04601f00d805c02600f005801c006000, 0x2a21042a200429ff0429fe057e820a7f410a7f010a7ec10a7e810a7e410a7e015f90829f70429f60429f5057e020a7d010a7cc10620c29f20429f10429f00429ef0429ee0429ed0429ec0429eb0429ea0429e90429e80429e7057dc2⟩, ⟨0x7e03d01d80e406e03501980c405e02d01580a404e025811c08603f01d80dc06602f01580a004802000e00600280100060020008000, 0xa8fc10a8f810a8f410a8f010a8ec10a8e810a8e410a8e010a8dc10a8d810a8d410a8d015fc082a33042a32042a31042a30042a2f042a2e042a2d042a2c057ec20a8ac10a8a810a8a410a8a010a89c10a89810a89410a89010a88c10a8881⟩, ⟨0x7303781ac0d006503081740b2056029813c096048022810407a03a01b00cc05e02c014809804601f00d805c02600f005801c008000, 0x2a72042a71058a42628082a70042a6f042a6e0589c2626082a6d042a6c058942624082a6b042a6a0588c20a9a41622082a68058842620097fc25fe082a67042a66042a65042a64042a63042a62042a61057f420a9801⟩, ⟨0x7a03b01c80dc06a03381900c005c02c01500a004c024811808403e01d00d806402f015809c04601f00e00600280100060020008000, 0xaab010aaac10aaa810aaa4162f098b820aaa010aa9c10aa9810aa9410aa9010aa8c162d098b020aa8810aa8410aa8010a9fc10a9f8162b082a7d042a7c042a7b042a7a058a820a9e410a9e010a9dc10a9d810a9d410a9d010a9cc1⟩, ⟨0x7a03b01c80dc06a03301880bc05a02b014809c04a023010807c03a01b80d006202e015809c04601f00e00600280100060020008000, 0xab9810ab9410ab9010ab8c10ab8810ab8410ab8010aafc10aaf810aaf410aaf010aaec10aae810aae410aae010aadc1635098d02633098c82631082ab6042ab5042ab4058c020aacc10aac810aac410aac010aabc10aab810aab41⟩, ⟨0x7a03b01c80dc06a03301880be05b02b814c09e04c024011008003c01c00d006202d014809804601f00d805c02600f005801c008000, 0xac8010abfc10abf810abf410abf010abec163a082afa042af9042af8042af7058e420abd810abd410abd010abcc10abc810abc41638082af0042aef058dc20630c2aee042aed042aec042aeb042aea042ae9042ae8058d820ab9c1⟩, ⟨0x7903b01c80de06b033818c0be05b02b814c0a004d025011808403e01d00d806402f015809c04601f00e00600280100060020008000, 0x198420ace41660082b38042b37042b36042b35042b34042b33042b32058fc263e098f420acc410acc010acbc10acb810acb410acb0163c082b2b042b2a042b29042b28058ec20ac9c10ac9810ac9410ac9010ac8c10ac8810ac841⟩, ⟨0x7803a01c00da06a03301880bc05b02b814c09e04b023810c08003c01c00d006002d015009804401e00d005802400e005001c006000, 0xadc410adc01669099a020adbc10adb810adb41667082b6c042b6b042b6a042b69042b68042b670599820ad9810ad9410ad9010ad8c16650999020ad8810ad8410ad8010acfc10acf810acf410acf010acec1663082b3a059882⟩, ⟨0x7503881b40d4066031017c0b6057029813c098048022810807c03b01b80d006202e015809c04601f00d80600280100060020008000, 0x2ba6042ba5059d020ae9010ae8c1673082ba2042ba1042ba0042b7f059c820adf81671099c020adf4166f082b7c059b8266d099b0266b082b7b042b7a042b79042b78059a820addc10add810add410add010adcc10adc81⟩ ] def tableRLR : Table Block := .branch 9 tableRLRL tableRLRR def tableRL : Table Block := .branch 17 tableRLL tableRLR def tableRRLL : Table Block := .leaf #[ ⟨0x6d03481940c405f02e01600aa052027813009204602180fc07603701a00c405a029013008c03e01c00c805402200d0050018006000, 0x2bb3042bb205a9c26a609a9420aec416a409a8c26a209a8426a0099fc267e082bb0042baf042bae059f4267c082bad042bac059ec267a082bab059e42678082baa042ba9042ba8059dc20ae9c1676099d42⟩, ⟨0x7703981bc0d606803201800b805902a814409c04b023811008003c01c00d406402e015009804401f00d805c02600f005801c006000, 0x2bea042be9042be805ac020af9c10af9810af9416af082be4042be305ab826ad082be205ab020af8410af8010aefc16ab09aa820aef810aef410aef010aeec16a9082bba042bb9042bb8042bb7042bb6042bb5042bb405aa02⟩, ⟨0x7603981c00da069033018c0be05b02b814c09e04b023810c07e03b01b80cc05e02c014809404401e00d005c02600f005801c006000, 0x6ba09ae426b8082c2005adc26b6082bff042bfe042bfd042bfc042bfb042bfa042bf9042bf8042bf7042bf6042bf5042bf4042bf305ad426b4082bf205acc20afc410afc016b2082bef042bee042bed042bec042beb05ac42⟩, ⟨0x7803a01c00d806803281840ba05902a814409a04a023010807c03b01b80cc06002c014809404201d00d00580260100060020008000, 0xb0e010b0dc10b0d810b0d416e2082c34042c33042c32042c31042c30042c2f05b8420b0b810b0b410b0b016e0082c2b042c2a05afc20b0a416be082c28042c27042c2605af420b09416bc09aec20b09010b08c10b08810b0841⟩, ⟨0x7703981bc0d606803281840ba05902a814409a049022810407a03901b00cc06002c014009004001d00c805402400e0050018006000, 0x2c6f042c6e042c6d05bac26ea082c6c042c6b042c6a042c69042c68042c67042c66042c65042c64042c63042c6205ba426e809b9c20b18410b18010b0fc10b0f816e6082c3d042c3c05b9420b0ec10b0e810b0e416e409b8c2⟩, ⟨0x7603901bc0d6067031817c0b605702a014409a049022810407c03a01b00c805c02a013809004201e00d805c02600f0058020008000, 0xb29416f5082ca4042ca3042ca2042ca1042ca0042c7f05bd026f3082c7e042c7d042c7c042c7b05bc820b1e810b1e410b1e010b1dc10b1d816f109bc026ef09bb826ed082c75042c74042c73042c7205bb020b1c410b1c01⟩, ⟨0x7503881b40d206503081740b2055028813409204502100fc07803901a80c405a029013008c04001d00c805402200d005001c008000, 0x2cba042cb9042cb8042cb7042cb6042cb5042cb4042cb3042cb2042cb1042cb0042caf05c8026ff09bf826fd082cae042cad042cac042cab05bf026fb09be826f9082caa042ca9042ca8042ca705be026f709bd820b2981⟩, ⟨0x7d03c81d40e406e03501980c405e02d01580a404e025811c08603f01d80dc06602f015809c04601f00d805c0280100060020008000, 0x2cf7042cf605c8c20b3d410b3d010b3cc10b3c810b3c410b3c010b3bc10b3b810b3b41722082cec042ceb042cea042ce9042ce8042ce7042ce6042ce5042ce4042ce3042ce2042ce1042ce005c8420b2fc10b2f810b2f410b2f010b2ec1⟩, ⟨0x7b03b81cc0de06b033818c0be05b02b814c09e04b023810c08003c01c00d006002c014809404401e00d005c02600f0060020008000, 0x2d32042d31042d30042d2f042d2e042d2d042d2c042d2b042d2a042d29042d28042d27042d26042d2505ca020b49010b48c10b48810b48410b4801727082cff05c9820b3f810b3f41725082cfc042cfb05c9020b3e810b3e410b3e01⟩ ] def tableRRLR : Table Block := .leaf #[ ⟨0x7703a01c00d806903281840ba05a02b014809c04b024011008003c01c00d006202e01580a004802000e00600280100060020008000, 0x1cc420b5a410b5a01730082d67042d66042d6505cbc20b59010b58c10b588172e09cb420b58410b58010b4fc10b4f810b4f4172c09cac272a09ca420b4f010b4ec10b4e810b4e410b4e010b4dc10b4d810b4d410b4d010b4cc1⟩, ⟨0x7b03b81cc0e006c03401900c005c02c81540a204d025011808403e01d00d806402e015009c04601f00d805c02600f005801c006000, 0x2da4042da305cd820b68810b68410b68010b5fc10b5f81735082d7d042d7c042d7b05cd020b5e810b5e410b5e010b5dc10b5d810b5d410b5d010b5cc1733082d72042d71042d70042d6f042d6e042d6d042d6c042d6b042d6a05cc82⟩, ⟨0x6f03601a00c806002e01640ac053028013009004502080f807603801a00c405c02b013808c03e01b00c005402400f0060020008000, 0x1d9c20b6cc10b6c810b6c410b6c0176609d94276409d8c20b6bc10b6b81762082dad05d84276009cfc20b6b0173e09cf4273c082dab042daa042da9042da805cec273a09ce4273809cdc20b69c10b69810b6941⟩, ⟨0x7103701ac0d006503101780b4056029013c096047022010407a03a01b00c805e02b013809004201e00d805c0280100060020008000, 0x1dd8277509dd0277309dc820b79010b78c10b78810b7841771082de0042dbf05dc0276f082dbe05db820b6f410b6f0176d082dbb042dba05db0276b09da82769082db905da020b6e010b6dc10b6d810b6d410b6d01⟩, ⟨0x7403881b80d406603101780b4057029813c096048022810807e03b01b80cc05e02b013808c03e01b00b805002000d0048018006000, 0x7a209e8420b7e010b7dc10b7d810b7d410b7d017a0082df3042df2042df105dfc277e09df4277c082df0042def042dee042ded042dec042deb042dea042de9042de8042de705dec20b798177a082de505de4277809ddc2⟩, ⟨0x7703a01c40dc06a033818c0c005d02c81540a204e025011808603f01d80dc06602f015809c04601f00d805c0280100060020008000, 0x1eac27aa09ea420b8bc17a8082e2e05e9c27a6082e2d042e2c042e2b05e9420b8a810b8a417a4082e28042e27042e26042e25042e24042e23042e22042e21042e20042dff042dfe05e8c20b7f410b7f010b7ec10b7e810b7e41⟩, ⟨0x6b03401900c205d02d015c0a8050026812808e04301f80f007203601980c005a029013008803c01a00b004c02000c0048018006000, 0x1f8020b8e817bf082e3905ef827bd09ef020b8e017bb09ee827b9082e37042e3605ee027b709ed827b509ed027b3082e3505ec820b8d010b8cc10b8c810b8c417b109ec020b8c017af09eb827ad09eb02⟩, ⟨0x7103681a80cc06202f816c0ae0540288138094047022010007803801a00c005a02a013808c03e01b00b805002200e005801c006000, 0x2e6b05fbc20b9a810b9a417ee082e68042e6705fb427ec09fac20b99817ea09fa420b99410b99010b98c10b98810b98417e809f9c27e6082e60042e3f042e3e042e3d05f9427e409f8c27e2082e3c042e3b05f842⟩, ⟨0x7603901bc0d6067031817c0b605802a0140098048022010007803801a00c005a02a013808c04001c00c005002200e005001c008000, 0xba8417f9082ea0042e7f042e7e042e7d042e7c05fe020b9ec10b9e810b9e410b9e010b9dc10b9d810b9d410b9d010b9cc10b9c817f709fd827f5082e7105fd020b9c010b9bc10b9b817f309fc820b9b417f109fc020b9b01⟩ ] def tableRRL : Table Block := .branch 9 tableRRLL tableRRLR def tableRRRL : Table Block := .leaf #[ ⟨0x7a03b01c80dc06a03301880be05b02b814c09e04c024811808604001e00e006803001600a004802000e00600280100060020008000, 0x608020bae810bae410bae010badc10bad817ff082eb5042eb4042eb3042eb205ff827fd09ff027fb09fe820bac410bac010babc10bab810bab410bab010baac10baa810baa410baa010ba9c10ba9810ba9410ba9010ba8c10ba881⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbbb810bbb410bbb010bbac1060b02060ac2060a820bba810bba410bba010bb9c10bb9810bb9410bb9010bb8c1060a420bb8810bb8410bb801060a020609c20bafc10609820609420609020baf810608c20608820baf410baf010baec1060842⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbbfc1060ec2060e82060e42060e020bbf810bbf410bbf010bbec1060dc20bbe81060d820bbe41060d420bbe010bbdc10bbd810bbd410bbd010bbcc1060d020bbc810bbc410bbc01060cc2060c82060c42060c02060bc2060b82060b420bbbc1⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbcd410bcd010bccc10bcc810bcc410619420bcc010619020618c20618820618420bcbc10618020bcb810bcb41060fc20bcb010bcac1060f820bca810bca410bca01060f420bc9c10bc981060f020bc9410bc9010bc8c10bc8810bc8410bc801⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbda81061c020bda410bda010bd9c1061bc2061b82061b420bd9810bd9410bd9010bd8c10bd8810bd841061b020bd8010bcfc10bcf81061ac20bcf410bcf01061a82061a420bcec1061a020619c20619820bce810bce410bce010bcdc10bcd81⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0x61fc2061f820bdec10bde810bde41061f420bde010bddc10bdd81061f02061ec20bdd410bdd010bdcc1061e82061e420bdc81061e020bdc41061dc20bdc010bdbc1061d820bdb810bdb410bdb010bdac1061d42061d02061cc2061c82061c42⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbec810bec410bec010bebc10beb81062a020beb410beb010beac10bea810629c20bea410629820629420bea010629020be9c10be9810be9410be9010be8c10be8810be8410be8010628c20bdfc10bdf810bdf410bdf01062882062842062802⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbf8c10bf8810bf841062dc20bf8010befc10bef810bef410bef010beec10bee810bee410bee01062d82062d420bedc10bed81062d020bed41062cc2062c82062c42062c02062bc2062b82062b42062b02062ac20bed01062a82062a420becc1⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbfc81063a020bfc410639c20bfc010639820639420639020638c2063882063842063802062fc2062f82062f42062f020bfbc10bfb81062ec20bfb41062e820bfb01062e420bfac10bfa810bfa41062e020bfa010bf9c10bf9810bf9410bf901⟩ ] def tableRRRR : Table Block := .leaf #[ ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0x63d42063d02063cc2063c820e09410e0901063c42063c02063bc2063b82063b42063b020e08c1063ac20e08810e08410e08010bffc10bff810bff410bff010bfec1063a820bfe810bfe410bfe010bfdc10bfd810bfd410bfd010bfcc1063a42⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe0f41063f420e0f010e0ec10e0e810e0e410e0e010e0dc10e0d81063f02063ec2063e820e0d410e0d010e0cc10e0c810e0c410e0c010e0bc10e0b81063e42063e020e0b410e0b010e0ac10e0a810e0a410e0a010e09c10e0981063dc2063d82⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe1d810e1d410e1d010e1cc10e1c810e1c410649020648c20e1c010e1bc10e1b810e1b410e1b010e1ac10e1a810e1a410648820e1a010e19c10e19810e19410e19010e18c10e18810e18410648420648020e1801063fc2063f820e0fc10e0f81⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe2cc10e2c810e2c410e2c010e2bc10e2b810e2b410649c20e2b010e2ac10e2a810e2a410e2a010e29c10e29810e29410e29010e28c10e28810e28410649820e28010e1fc10e1f810e1f410e1f010e1ec10e1e810e1e410649420e1e010e1dc1⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe3b810e3b410e3b010e3ac10e3a810e3a410e3a010e39c1064b020e39810e39410e39010e38c10e38810e38410e38010e2fc10e2f81064ac20e2f410e2f01064a820e2ec10e2e810e2e410e2e01064a420e2dc10e2d810e2d41064a020e2d01⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe3e810e3e410e3e01065802064fc2064f82064f42064f02064ec2064e820e3dc1064e420e3d810e3d410e3d010e3cc10e3c81064e02064dc2064d82064d420e3c410e3c01064d02064cc20e3bc1064c82064c42064c02064bc2064b82064b42⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe4d010e4cc10659820e4c810e4c410e4c010e4bc10e4b810e4b410659420e4b010e4ac10e4a810e4a410e4a010659020e49c10e49810e49410e49010e48c10e48810e48410e48010658c20658820658420e3fc10e3f810e3f410e3f010e3ec1⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe59810e59410e59010e58c1065d020e58810e58410e58010e4fc10e4f810e4f410e4f010e4ec1065cc20e4e81065c82065c42065c02065bc2065b82065b420e4e410e4e010e4dc10e4d81065b02065ac2065a82065a42065a020659c20e4d41⟩, ⟨0x4001e00e006803001600a004802000e00600280100060020008000, 0x65fc2065f82065f42065f02065ec2065e82065e42065e02065dc2065d820e5ac1065d420e5a810e5a410e5a010e59c1⟩ ] def tableRRR : Table Block := .branch 9 tableRRRL tableRRRR def tableRR : Table Block := .branch 18 tableRRL tableRRR def tableR : Table Block := .branch 35 tableRL tableRR def table : Table Block := .branch 70 tableL tableR def records (i : Nat) : List Nat := PackedNatTable.records table i end PolicyInitialCoverage0Tail namespace PolicyInitialCoverage0 def records (cid : Nat) : List Nat := if cid ≤ 0x11a0 then [0, cid - 1] else PolicyInitialCoverage0Tail.records (cid - 0x11a1) def limits : Nat → Nat | 0 => 0x11a0 | 1 => 0xcac | 2 => 0x4c0 | 3 => 36 | _ => 0 def targets : Nat → Nat → Nat | 0, i => (PolicyCircuitPacked0.records i).headD 0 | 1, i => (PolicyRewriteParametricPacked0.records i).headD 0 | 2, i => (PolicyArithmeticPacked0.records i).headD 0 | 3, i => (PolicyAssertedPacked0.records i).headD 0 | _, _ => 0 end PolicyInitialCoverage0 namespace PolicyInitialCoverage1Tail open PackedNatTable def tableLLLL : Table Block := .leaf #[ ⟨0x4001f00f007403801b00d006403001700b0054028013009004402000f007003401800b005002401000700300140080030010004000, 0x6015c15815411825014c11424814411020c24013c13813410823012c12812410422011c11811411010c1081041002001⟩, ⟨0x530280134096048022810807e03d01d00dc06a03201780b0052026011808003a01b00c005402401000700300140080030010004000, 0x1c81071049081c0106f041b8106d0420c1b0106b0410c1a81069041a010670419810650419010630480818810610418017c11c27817417016c1681641003⟩, ⟨0x5b02c01540a404f026012808e04402080f807603801a80c805e02c014809804602100f006c030015009004001c00b0040014006000, 0x2b410ac042ac10aa042a413820a80429c10a60429410a40428c10a20428410a0041fc107e041f4107c04d081ec107a041e41078041dc13022c2076041d4107404a081cc1⟩, ⟨0x5a02b81500a204f026012408c04402080f807603801b00d006202e01580a004a02200f8070032016009804401c00b0040014006000, 0xe70439810e50540839010e30438814c20e10438010bf042f814824420bd042f010bb042e810b9042e010b7042d810b5042d010b3050082c810b1042c010af04f082b81⟩, ⟨0x55029013c098049023811408403f01e80ec07203601980c005a02a014009404401f00e806802e015009804401c00b0040018006000, 0x3f010fb043e810f905e09d083e010f705c09b09a083d810f5043d010f3043c816420f1043c010ef058083b810ed0570830d6083b010eb043a815420e9043a01⟩, ⟨0x5e02d81600aa0520278130092046021810007a03a01b80d006202e01580a004a02200f8070032016009804001a00a0038014006000, 0x133044c81066084c41130044bc112e044b41065084b0112b044a81129044a010640818c2127044981125044901123044881062081842060084841120043fc10fe05f0840c3f41⟩, ⟨0x5f02e01640ac0530280134094048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x5a411680459c11660459411640458c1143162045841160044fc106f084f8113d044f0106e081b4206c081ac213b044e81139044e01137044d8106a081a42068084d411340419c2⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x17e045f4107a085f0117b045e81179041e42078085e01077081d82075085dc1176045d41174041d02173045c81171041cc2072085c0116f045b8116d045b01071085ac116a041c02⟩ ] def tableLLLR : Table Block := .leaf #[ ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x1b5046d010a30828821b3046c811b10428421b0046bc11ae0428021ad046b011ab046a811a9046a0107f0869c11a6041f821a50469011a304688107d081f021a104680117f041ec2⟩, ⟨0x5f02e01640ac0530280134094047022010407c03b01c00d406402f01600a404e024010807803601800a804801e00c0048018006000, 0x7bc11ee047b410a8087b011eb0429c21ea047a410a6087a011e70479811e50479011e30478811e10460c78011bf046f811bd046f011bb046e811b90429421b8046dc10a4086d81⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x2280489c12260489412240488c10af088881221042b820ad0888011ff047f810ac087f411fc047ec11fa047e410ab082a821f8047dc11f6047d410a9087d011f3047c811f1047c01⟩, ⟨0x5f02e01640ac0530280134094047022010407c03b01c00d406402f01600a404c023010007803601800a804801e00c0048018006000, 0x2d82260048fc123e048f4123c042d4223b048e810b4082cc2239048e010b2088dc1236048d41234048cc1232048c411c3230048bc122e048b4122c048ac10b1088a81229042c02⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x278049dc10be089d81275049d01273042f42272049c410bc082ec2270049bc126e049b410ba089b0126b049a81269049a01267042e420b8089981265042dc22640498c1262049841⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x2b10439422b004abc12ae0439022ad0438c22ac04aac12aa04aa412a804a9c10e208a9812a504a9012a304a8810e108a8412a004380227f049f8127d049f0127b049e810bf089e41⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x2ea04ba410ec08ba010eb083a822e704b9812e5043a422e404b8c12e204b8412e004afc12be04af410e80839c22bc04aec10e608ae812b904ae012b704ad812b504ad012b304ac81⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0xf808bf812fd04bf012fb043dc22fa04be412f804bdc10f608bd812f504bd012f304bc810f5083d020f3083c820f108bc412f0043c022ef04bb812ed043bc22ec04bac10ee083b42⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x33604cd4133404ccc133204cc41120083fc233004cbc132e043f8232d04cb0132b043f4232a04ca4132804c9c1326043f0232504c901323043ec20fa08c881321043e4232004bfc1⟩ ] def tableLLL : Table Block := .branch 8 tableLLLL tableLLLR def tableLLRL : Table Block := .leaf #[ ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x12508490212308dc4137004dbc136e04db4136c04dac136a04da4136804d9c136604d94136404d8c136204d84136004cfc133e04cf4133c04cec133a04ce4112208484233804cdc1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x3a4044c82131084c0212f084b8212d084b023a304e8813a104e80137f044ac237e04df4137c04dec112a08de8137904de0137704dd81129084a0237504dd0112708dcc1372044982⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x13a08ef013bb04ee813b904ee0113908edc13b604ed413b404ecc113808ec813b104ec013af04eb8113708eb413ac04eac13aa04ea4113608ea0113508e9c13a6044d0213308e941⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x3ef04fb813ed0459c216608fb013eb04594216408fa813e90458c21620858423e804f9c13e604f9413e404580213f084f823e304f88113d08f8413e004efc113c084ec23be04ef41⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x172085c424240508c1422050841420045c0216f08ffc116e085b423fe04ff413fc04fec13fa04fe413f804fdc13f6045b023f504fd013f304fc8116b085a823f1045a4216808fc01⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x43e050f4143c050ec1178090e81439050e01177085d82437050d81175085d02435050d01433050c81431050c0142f050b81173090b4142c050ac142a050a414280509c1426050941⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x475051d01473051c81471051c011a1091bc146e051b4146c051ac11a0091a81469051a0117f0919c146605194117e085f4217c085ec24640518c117a091881461045e42460050fc1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x4ac052ac14aa052a414a8046a821a90929c14a6046a021a70929414a40528c14a20528411a609280147f04694247e051f4147c051ec11a4091e81479051e011a3086882477051d81⟩ ] def tableLLRR : Table Block := .leaf #[ ⟨0x5f02e01680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x138812034e10538014bf052f814bd052f014bb052e814b9052e014b7046cc24b6052d414b4052cc14b2052c411b2086c421b0086bc21ae086b421ac092c014af052b814ad046ac2⟩, ⟨0x5d02d01600aa0520280134094047022010407c03b01c00d406402f01600a404c023010007403401700a004401c00b0040014006000, 0x6e022c34fa053e412834f8053dc14f6053d414f4053cc14f2046dc24f1053c014ef053b814ed053b014eb053a814e9046d824e80539c14e60539414e4046d421b40890d38c1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x1e2094c0152f054b811e108780252d054b011bf094ac152a054a41528046f825270549811bd0949411bc0949015230548815210548011bb086e824ff053f814fd046e424fc053ec1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x56b055a81569055a015670479c25660559415640558c156205584156004798253f054f8153d054f0153b04794253a054e41538047902537054d81535054d01533054c815310478c2⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x5a50569015a3047b425a20568415a0047b0257f055f8157d055f011eb095ec157a055e411ea095e01577055d811e9095d41574055cc1572047a02571055c0156f055b8156d055b01⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x5be056f415bc056ec15ba056e415b8047d025b7056d815b5056d011f3087c825b3056c815b1056c011f1087c025af056b815ad056b015ab056a815a9056a011ef0969c15a6047b82⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x5f6057d411fc097d015f3057c815f1057c015ef057b815ed057b015eb047ec25ea057a415e80579c11fa087e421f8087dc25e60579415e4047d825e30578815e10578011f5096fc1⟩, ⟨0x5f02e01680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x18ac130362a058a41226098a016270589816250489422240989016230588816210488c2620057fc15fe0488825fd057f015fb0488425fa057e415f80488021ff087f821fd097dc1⟩, ⟨0x5f02e01640ac0530280134094047022010407c03b01c00d406402f01680a804e024010807803601800a804801e00c0048018006000, 0x8a4266705998166505990166305988166105980163f058f8163d058f0163b058e8163904d0d8e01637048a02636058d41634058cc1632058c41227098c0162f058b8162d058b01⟩ ] def tableLLR : Table Block := .branch 8 tableLLRL tableLLRR def tableLL : Table Block := .branch 17 tableLLL tableLLR def tableLRLL : Table Block := .leaf #[ ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x233099f4167c059ec1232088c4267a059e41678059dc1676059d41230088bc222e099d01673048b4222c099c81671048ac2670059bc166e059b4166c048a8266b059a81669059a01⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x6b2048f826b105ac016af05ab816ad048f426ac05aac16aa05aa4123c09aa016a705a98123b088e82239088e02237088d826a505a9016a3048d426a205a8416a0048d0267f059f81⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x2670899826e905ba0126509b9c16e605b9416e405b8c16e205b8416e005afc16be05af416bc04990226309aec16ba05ae416b805adc126209ad816b505ad0126108980223f09acc1⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x72605c94172405c8c172205c84172005bfc16fe049a826fd05bf016fb05be816f905be016f705bd816f5049a426f405bcc16f2049a026f105bc016ef05bb816ed05bb016eb05ba81⟩, ⟨0x5e02d81600aa0520278130092046021810007a03a01b80d006202e01580a004a02200f8070032016009804001a00a0040014004000, 0x272089c4273c05cec127009ce8173905ce0126f09cdc173605cd4173405ccc1732049b8273105cc0172f05cb8172d05cb0126d09cac172a05ca4126c089ac23c372805c9c1383⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x77505dd0177305dc8177105dc0176f05db8176d05db0176b049e4227809da8176905da0176705d98176505d90127709d8c176205d841760049d8273f049d4227409cf8173d049cc2⟩, ⟨0x5f02e01640ac0530280134094048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x9f427b005ebc17ae05eb417ac05eac14037aa05ea4127c09ea017a705e9817a505e9017a305e8817a105e80127b09dfc177e05df4177c05dec177a05de4127a09de0177705dd81⟩, ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x7eb05fa817e904a8827e805f9c17e605f9417e405f8c17e205f8412a109f8017bf04a80227f09ef817bd05ef017bb05ee817b905ee017b705ed817b505ed0127e09ecc17b205ec41⟩ ] def tableLRLR : Table Block := .leaf #[ ⟨0x6002e81680ae0540288138096048022810807e03c01c80d806603001680a804e024010807803601800a804801e00c0048018006000, 0x2ae09ffc17fe05ff417fc05fec12ad09fe817f905fe017f704ab022ab08aa827f605fd417f404aa427f304aa027f204a9c22a609fc417f005fbc17ee04a9427ed05fb012a408a8c2⟩, ⟨0x7d03c81d40e206d03481940c205d02c81540a204d024811408203d01c80d406202d015009c04601f00d805c02600f005801c006000, 0x183c04183b04183a04183904183804183704183604183504183404183304183204183104183004182f04182e04182d04182c04182b04182a04182904ac422b008182804182704182604182504182404182304182204182104182004abc2⟩, ⟨0x7a03b01c80dc06a03301880bc05a02b014c09e04b024011008003c01c00d006202d014809404201d00d005802400f0060020008000, 0x61d81061d41061d01061cc1061c81061c41061c01061bc1061b812b708186d04186c04ad82061ac1061a81061a41061a010619c12b508186604186504186404186304186204ad020618410618012b308ac82060fc1060f81060f41⟩, ⟨0x7903a81c40da06903281840ba05902a814409c04b023810c08003d01c80d406202d014809404201d00d005802400f0060020008000, 0x18af0418ae0418ad0418ac0418ab0418aa0418a90418a80418a70418a604af822bd0818a50418a404af022bb0818a30418a20418a10418a004187f04187e04187d04187c04ae82061ec1061e812b908ae02061e41061e01061dc1⟩, ⟨0x7103681a40ca06102e81680ac052027012c09004502080f407203501900b8054026011007c03801900b004c02000d005001c006000, 0x18e00418bf0418be0418bd0418bc04bb42062ec1062e81062e412ec08bac22ea0818b80418b70418b60418b504ba42062d01062cc1062c81062c412e808b9c22e608b9422e408b8c22e208b8422e00818b004afc2⟩, ⟨0x7703981c00d806803281840ba05902a814809c04b023810c07e03c01c00d006202d014809404201e00d005c02600f0060020008000, 0x18f704bd82063d81063d412f50818f40418f30418f20418f104bd02063c012f30818ef0418ee0418ed04bc82063b01063ac12f10818ea0418e90418e80418e704bc020639812ef0818e50418e404bb820638c1063881063841⟩, ⟨0x7703a01c00d806803201800ba05a02b81500a004c024011008003d01c80d406202d014809404401f00d80600280100060020008000, 0xbfc2064b81064b41064b01064ac1064a812fe08bf422fc08bec2064a41064a010649c10649810649412fa0819240419230419220419210419200418ff04be422f80818fe04bdc2063f41063f01063ec1063e81063e41063e01⟩, ⟨0x7b03b81cc0de06b033818c0be05c02c01500a004c024011408403e01d00d806402e015009804601f00d805c02600f005801c006000, 0x196904196804196704196604196504196404196304c902065881065841065801064fc1064f8132308c882064f41064f01064ec1064e81064e41064e01064dc132108193604193504193404193304193204193104193004192f04c802⟩, ⟨0x7c03c01d00e006c03401900c205e02d01580a404f025811c08603f01d80dc06602f015809c04601f00d805c0260100060020008000, 0x669410669010668c106688106684106680132808c9c2065fc1065f81065f4132608197c04197b04197a04197904197804197704197604197504197404197304197204197104197004196f04196e04c942065b41065b01065ac1065a81⟩ ] def tableLRL : Table Block := .branch 8 tableLRLL tableLRLR def tableLRRL : Table Block := .leaf #[ ⟨0x7503881b40d206503101780b40560290138098048022010407c03b01c80d406202f015809c04601f00d80600280100060020008000, 0x19bd0419bc0419bb0419ba04cb42066e41066e01066dc1066d81066d414c3066d01066cc132c08cac232a0920c19b20419b10510c19b00419af0419ae0419ad0419ac04ca42066ac1066a81066a41066a010669c1066981⟩, ⟨0x7903a81c40da06903281880be05b02b814c09e04b023810c07e03b01b80cc05e02c014009004001c00c005002200e0058020008000, 0x19f60419f50419f40419f30419f204cd023330819f10419f00419ef0419ee0419ed0419ec0419eb0419ea0419e90419e80419e70419e604cc820679410679010678c106788106784106780133108cc0232f08cb82066fc1066f81⟩, ⟨0x7803a01c00d806803281880bc05a02b014809c04b024011408203d01c80d806402e015009804401e00d005802400e005801c006000, 0x68b81068b41068b01068ac133c08cec2068a81068a41068a010689c106898133a08ce42338081a25041a24041a2304cdc2068881068841068801067fc1067f81067f41067f01067ec1067e81067e413360819f80419f704cd42⟩, ⟨0x7c03c01d00e006c03401900c005c02c81540a204d024811408403e01d00d806402e015009c04601f00d805c0260100060020008000, 0x69a81069a41069a010699c10699810699410699010698c1360081a62041a61041a60041a3f041a3e04cfc2068f41068f01068ec1068e81068e41068e0133e081a37041a36041a35041a34041a3304cf42068c81068c41068c01068bc1⟩, ⟨0x7b03b81cc0e006d03481940c205d02c81540a204d025011808403e01d00d806402e015009c04601f00d805c02600f005801c008000, 0x1aa5041aa404d942364081aa3041aa2041aa1041aa0041a7f041a7e041a7d041a7c04d8c2069ec1069e81069e41069e01069dc1069d81069d41069d01362081a73041a72041a71041a70041a6f041a6e041a6d041a6c04d842069ac1⟩, ⟨0x7803a01c40da06903281840bc05a02b014c0a004c024011008003c01c80d406202d014809404401f00d805c02600f005801c008000, 0x6af4136d081abc041abb041aba041ab904db0206ae0106adc136b08da8206ad8106ad4106ad0106acc106ac81369081ab1041ab0041aaf041aae041aad04da02367081aac041aab041aaa041aa9041aa8041aa704d98206a981⟩, ⟨0x7803a01c00d806903301880bc05b02b814c09e04b024011008003c01c80d406202d015009804401e00d005c02600f0058020008000, 0x6bd4106bd0106bcc137508dd0206bc8106bc41373081af0041aef041aee041aed04dc8206bb0106bac106ba81371081ae9041ae8041ae704dc0206b98106b94106b90106b8c136f081ae2041ae1041ae004db8206afc106af81⟩, ⟨0x7b03c01d00e006c03481940c205d02d01580a404e025011c08603f01d80dc06602f015809c04602000e00600280100060020008000, 0xde8206cc0106cbc106cb81379081b2d041b2c041b2b04de0206ca8106ca4106ca0106c9c1377081b26041b25041b24041b23041b22041b21041b20041aff041afe04dd8206bf4106bf0106bec106be8106be4106be0106bdc106bd81⟩ ] def tableLRRR : Table Block := .leaf #[ ⟨0x7803a81c40da06903281840ba05a02b014809e04c024011008003d01d00d806402e015809c04601f00d805c02600f0058020008000, 0x3a2081b68041b67041b66041b65041b64041b6304e84206d88106d8413a008dfc206d80106cfc106cf8137e08df4206cf4106cf0106cec137c081b3a041b39041b38041b37041b36041b35041b34041b3304dec206cc8106cc41⟩, ⟨0x7903a81c80dc06a03301880bc05b02c01540a204d025011808403e01d00d806402e015009804401e00d005802600f005801c006000, 0x1ba104ea4206e80106dfc106df8106df4106df013a808e9c23a6081b7b041b7a04e94206de4106de0106ddc106dd8106dd4106dd0106dcc106dc8106dc4106dc0106dbc106db8106db413a4081b6c041b6b041b6a041b6904e8c2⟩, ⟨0x7803a81c40da06903301880bc05b02b814c09e04b023810c07e03b01b80cc05e02c014009004001d00c805402400f005801c008000, 0x3b1081bb9041bb8041bb704ec0206ed8106ed413af081bb4041bb3041bb2041bb1041bb0041baf041bae041bad041bac041bab041baa04eb8206ea4106ea0106e9c13ad081ba6041ba504eb023ab081ba4041ba304ea8206e881⟩, ⟨0x7203701ac0d006503101780b4056029013c09604702180fc07603801a00c005a02a013008803e01c00c005402400f005801c006000, 0x6fac13bf08ef823bd08ef0206fa8106fa4106fa0106f9c13bb081be6041be5041be4041be3041be204ee8206f84106f8013b908ee0206efc106ef813b708ed8206ef413b508ed023b3081bbc041bbb041bba04ec82⟩, ⟨0x7503881b40d206603101780b4056029013809604702180fc07803901b00cc05e02b014009004001c00c005402400e005801c008000, 0x1c20041bff041bfe04fa8206ff4106ff0106fec106fe8106fe4106fe013e9081bf7041bf6041bf504fa023e708f9823e5081bf4041bf304f90206fc8106fc4106fc0106fbc13e308f88206fb813e1081bed04f80206fb01⟩, ⟨0x7603901b80d606803281880be05b02b814c09e04b024011408203d01d00d806402e015009804401e00d005c02600f005801c006000, 0x70d81070d413f408fcc23f208fc423f0081c34041c33041c32041c31041c3004fbc23ee081c2f041c2e04fb42070b41070b01070ac1070a81070a41070a010709c10709813ec081c25041c24041c23041c22041c2104fac2⟩, ⟨0x7303781ac0ce06303001740b4057029813c096048022810807e03c01c00d006002c014009404201d00c805402200e005801c006000, 0x1c69041c68041c67041c6605084242008ffc23fe081c65041c64041c6304ff423fc08fec23fa08fe42071881071841071801070fc1070f813f8081c3d041c3c041c3b041c3a041c3904fdc23f6081c38041c3704fd42⟩, ⟨0x7703981bc0d6067031817c0b605702a014409c04a023811008003c01c00d006002d015009804401f00d805c02600f0058020008000, 0x1ca0041c7f041c7e041c7d041c7c041c7b041c7a041c79050a82429090a02071e01427090982071dc1071d81071d41071d01071cc1425090902071c81071c41423081c70041c6f041c6e041c6d041c6c050882071ac1071a81⟩, ⟨0x7903a81c80dc06a03301880bc05a02b014c0a004c024011008003c01c00d006002c014009004201e00d00580260100060020008000, 0x1cb9050c42072e01072dc1072d81072d41072d01072cc1072c81430090bc2072c41072c01072bc1072b81072b41072b01072ac1072a81072a41072a010729c142e090b4207298107294142c090ac20729010728c1072881072841⟩ ] def tableLRR : Table Block := .branch 8 tableLRRL tableLRRR def tableLR : Table Block := .branch 17 tableLRL tableLRR def tableL : Table Block := .branch 34 tableLL tableLR def tableRLLL : Table Block := .leaf #[ ⟨0x7603901b80d406703201840ba05a02b014c0a004c024011408203d01c80d406202e015009804401e00d805c02600f005801c008000, 0x73bc1073b81073b4143b090e82439081cec050e02073ac1437090d82073a81073a41435081ce8041ce7041ce6041ce5041ce4050d020738c1073881073841073801433081cbf041cbe041cbd041cbc041cbb050c82072e81⟩, ⟨0x7303801b40d406603101780b405702a0140098048022810807c03b01c00d406202d015009c04601f00d805c02600f005801c008000, 0x11a02467091982074881074841074801073fc1465091902073f81073f41073f01463091882073ec146109180243f081cfa041cf9050f8243d081cf8041cf7041cf6041cf5041cf4041cf3041cf2041cf1050f02073c01⟩, ⟨0x7203781ac0ce06302f816c0b0054028013409404602180fc07603701a00c405c02a013808c03e01b00c005002000c0048018006000, 0x476081d34041d33041d32041d31041d30051d42074bc1074b81474091cc2074b41472081d2c041d2b041d2a051c42470091bc2074a4146e081d28041d27041d26051b420749410749010748c146c091ac246a091a42⟩, ⟨0x7803a01c00d806803201800b805802a014409c04a023010c08003c01c00d006002c014809404201d00c805402200e0058020008000, 0x75b01075ac1075a81075a41075a010759c107598107594107590147e091f420758c107588147c091ec2075841075801074fc1074f81074f4147a081d3c041d3b041d3a041d39041d38041d37051e42478091dc2074d81074d41⟩, ⟨0x7a03b01c80dc06a03301880bc05a02b014c0a004d024811408203e01d00d806402f015809c04802000e00600280100060020008000, 0x769810769410769010768c1076881076841076801075fc1075f814a40928c24a2081d7d041d7c041d7b052842075e81075e41075e014a0081d77041d76051fc2075d41075d01075cc1075c81075c41075c01075bc1075b81075b41⟩, ⟨0x7903a81c40da06903281840bc05a02b014c09e04b023810c07e03b01b80cc05e02b014009004001c00c005002200e0050018006000, 0x1dbf041dbe041dbd041dbc041dbb041dba052ac2076e41076e014aa081db7041db6041db5041db4041db3041db2041db1041db0041daf041dae052a42076b41076b01076ac1076a81076a414a80929c2076a010769c14a6092942⟩, ⟨0x7503881b40d206603181800ba05902a814409a049023010c08003c01c00d406202d015009c04601f00d805c0280100060020008000, 0x1df4041df3041df2052d824b5092d024b3081df1041df0041def041dee041ded052c824b1092c02077b01077ac14af081dea041de9052b824ad081de8041de7041de6041de5052b020779010778c1077881077841077801⟩, ⟨0x7203781ac0ce06303001740b405702a014009804a023010808003c01c00d006002c014009004201e00d805c02600f005801c006000, 0x4e0081e28041e27041e26052fc24be092f424bc092ec20789410789015430788c1078881503078841078801077fc1077f81077f41077f01077ec14ba092e424b8081dfa041df9041df8041df7041df6041df5052dc2⟩ ] def tableRLLR : Table Block := .leaf #[ ⟨0x7903a81c40dc06b03401900c005c02c01540a204d024811408203d01c80d406202d015009804602000e00600280100060020008000, 0x1e61041e600539c24e6093942078fc1078f81078f41078f014e4081e3b041e3a041e39041e38041e37041e36041e35041e34041e33041e320538c2078c414e2093842078c01078bc1078b81078b41078b01078ac1078a81078a41⟩, ⟨0x7903a81c40dc06b03401900c005c02c01540a204d024811408203d01c80d406202d014809c04601f00e00600280100060020008000, 0x1e7b041e7a053b024eb093a82079e41079e01079dc1079d814e9081e75041e74041e73041e72041e71041e70041e6f041e6e041e6d041e6c041e6b0560c1e6a041e69053a02079a010799c10799810799410799010798c1079881⟩, ⟨0x7303801b40d206603181800b805802a014409c04a023010c07e03c01c00d006002c014009004201e00d005802400e005801c008000, 0x13e424f8081eae053dc24f6093d4207ab4107ab0107aac14f4093cc207aa8107aa414f2081ea8053c4207a9c107a98107a94107a90107a8c107a8814f0093bc207a84107a801079fc1079f814ee081e7d053b42079f01⟩, ⟨0x7a03b01c80de06b033818c0be05b02b814c09e04b023810c07e03b01b80cc06202d014809804401e00d00580260100060020008000, 0x7ba4107ba014fd081ee7041ee6041ee5041ee4041ee3041ee2041ee1041ee0041ebf041ebe041ebd041ebc041ebb041eba041eb90570c1eb8041eb7053f0207ad8107ad4107ad0107acc14fb093e8207ac8107ac4107ac0107abc1⟩, ⟨0x7503881b80d406603101780b405702a014409a049022810407a03901a80c405a029012808403a01900a804801e00c0050018004000, 0x1f2005490207bfc107bf8107bf4107bf0107bec1523094882521081efa041ef9041ef8041ef7041ef6041ef5041ef4041ef3041ef2041ef1041ef0041eef041eee041eed041eec0548024ff093f8264307bac107ba81603⟩, ⟨0x7b03b81cc0de06b03401900c005d02c81540a204d024811408203d01c80d406202d014809404401e00d005802400e0058020008000, 0x1f3b041f3a041f39041f38054a4207cdc107cd81528081f35041f34041f33041f32041f31041f30041f2f041f2e041f2d041f2c041f2b041f2a041f29041f280549c207c9c107c98107c94107c90107c8c152609494207c88107c841⟩, ⟨0x7903a81c40da06903301880bc05a02b014809e04b023811008003c01c00d006002d015009804401e00d805c0260100060020008000, 0x1f74041f73041f72041f71054c0207dc0107dbc107db8107db4107db0152f081f6b041f6a054b8207da4107da0107d9c107d98107d94152d094b0207d90107d8c107d88152b081f61041f60054a8207cfc107cf8107cf4107cf01⟩, ⟨0x7903a81c40da06a033018c0be05b02b81500a004c024011008003c01c00d006002c014009004201d00c805402200e005801c006000, 0x1fad041fac041fab054dc207ea81536081fa9041fa8041fa7054d4207e98107e94107e90107e8c107e88107e84107e80107dfc107df8107df4107df0107dec1534081f7a041f79041f78041f77054cc2532081f76041f75054c42⟩, ⟨0x6c03481940c405f02e01640ac053028013409204502080f807603801a80c405a02a013808c03e01c00c005402400e005001c008000, 0x56b081fb9055a82569095a02567095982565095902563081fb8041fb7041fb605588256109580253f081fb5041fb4054f8253d081fb3041fb2054f0207ec4153b094e8207ec0107ebc1539094e0207eb81⟩ ] def tableRLL : Table Block := .branch 8 tableRLLL tableRLLR def tableRLRL : Table Block := .leaf #[ ⟨0x7903a81c40da069033018c0be05b02c01500a004c024011008003c01c00d406402e015009804401e00d005802400e005001c006000, 0x1ff2041ff1041ff0041fef055c82571081fee041fed055c0207fb0107fac107fa8107fa4107fa0107f9c107f98107f94156f095b8207f90107f8c107f88107f84107f80107efc107ef8107ef4107ef0107eec156d081fba055b02⟩, ⟨0x7703981bc0d606703201800b805802a0140098049023010c08003d01c80d406202d014809404201d00c805402400f005801c008000, 0x2829042828042827042826055ec20a09410a09010a08c10a08810a08410a080157a095e42578095dc2576081fff041ffe041ffd041ffc041ffb041ffa041ff9041ff8041ff7041ff6055d42574081ff5041ff4055cc207fcc1⟩, ⟨0x7603901c00d806803301880be05b02b814c09e04b023810c07e03b01c00d406202d014809804601f00d805c02600f005801c006000, 0xa18416c30a18010a0fc16830a0f815a108283d04283c04283b04283a04283904283804283704283604283505680257f082834042833042832055f8257d08283104283004282f04282e04282d04282c04282b04282a055f02⟩, ⟨0x7c03c01d00e006c03401900c005c02c01500a004d025011808403e01d00dc06602f015809c04601f00d805c02600f005801c006000, 0xa1f410a1f010a1ec10a1e810a1e410a1e010a1dc10a1d810a1d410a1d010a1cc15a50969020a1c810a1c410a1c010a1bc15a308286e04286d04286c04286b04286a042869042868042867042866042865042864042863042862056882⟩, ⟨0x7b03b81d00e006c03401940c205d02c81540a204d024811408203e01d00d806402e015009c04601f00d805c02600f0058020008000, 0x28b8056a820a2dc10a2d810a2d415a90828b40428b30428b20428b10428b00428af0428ae0428ad0428ac056a020a2ac10a2a810a2a410a2a010a29c15a70828a60428a50428a40428a30428a20428a10428a00569820a1fc10a1f81⟩, ⟨0x7803a01c00da06903281840ba05a02b814c0a004c024011408203d01c80d406202d014809404201e00d805c02600f0058020008000, 0xa3c010a3bc15b20828ee0428ed0428ec0428eb056c425b00828ea056bc20a3a410a3a015ae0828e70428e60428e50428e40428e30428e20428e10428e00428bf056b425ac0828be0428bd0428bc0428bb056ac20a2e810a2e41⟩, ⟨0x7803a01c00d806903281840ba05902b014c0a004c024011008003c01c00d006002d015009804401e00d805c0260100060020008000, 0xa4a010a49c10a49815ba082925042924042923042922056e425b8096dc20a48410a48010a3fc10a3f810a3f410a3f010a3ec10a3e815b6096d420a3e410a3e010a3dc15b40828f60428f5056cc20a3d010a3cc10a3c810a3c41⟩, ⟨0x7403881b80d4066031017c0b805802a0140098049023010807c03a01b00c805e02c014809404201d00d005802400f0060020008000, 0x5e60979420a4f010a4ec10a4e815e40978c20a4e410a4e010a4dc10a4d815e20978420a4d410a4d010a4cc10a4c810a4c415e0096fc25be08293004292f04292e056f420a4b410a4b015bc096ec20a4ac10a4a810a4a41⟩ ] def tableRLRR : Table Block := .leaf #[ ⟨0x7203701a80cc06303001700b0054028013009004402000f007203601900b8056027011807c03801900b004c02000d0050018006000, 0xa5b810a5b410a5b015f4097cc20a5ac10a5a810a5a410a5a010a59c10a59810a59410a59010a58c15f2097c420a58810a58415f008296004293f04293e057bc25ee097b425ec097ac25ea097a420a4f415e80979c2⟩, ⟨0x7a03b01c80dc06b033818c0be05b02c01540a204d025011808403e01d80dc06602f015809c04601f00d80600280100060020008000, 0xa6a010a69c10a69815fa0829a50429a40429a30429a2057e425f80829a10429a0057dc20a5fc10a5f810a5f415f608297c04297b04297a042979042978042977042976042975057d420a5d010a5cc10a5c810a5c410a5c010a5bc1⟩, ⟨0x7803a01c00d806903301880bc05a02b014809c04a023010c07e03c01c80d406202d015009804401e00d805c02600f005801c006000, 0xa78010a6fc10a6f816220988420a6f410a6f010a6ec10a6e810a6e410a6e010a6dc10a6d816200829b5057fc25fe0829b40429b30429b2057f420a6c410a6c010a6bc15fc0829ae0429ad0429ac0429ab0429aa0429a9057ec2⟩, ⟨0x7603901bc0d606703201800b805802a0140098049023010807c03a01b00c805e02b013808c03e01c00c805402200d0048018006000, 0xa7d8162c0829f50429f4058ac20a7cc10a7c810a7c410a7c010a7bc10a7b8162a098a420a7b410a7b010a7ac10a7a810a7a416280829e80429e70429e60429e50589c26260829e40429e30429e20429e10589426240988c2⟩, ⟨0x7703a01c40dc06b033818c0be05b02b814c09e04b023811008203e01d00d806402e015009804401f00d805c02600f005801c008000, 0x18d42634098cc2632082a2d042a2c042a2b042a2a042a29042a28042a27042a26042a25058c42630098bc20a89010a88c10a88810a88410a88010a7fc10a7f8162e0829fd0429fc0429fb0429fa0429f90429f8058b420a7dc1⟩, ⟨0x7303781b00d206603101780b605802a014009a049022810407c03b01c00d406402e015009804401e00d005c02600f005801c006000, 0x2a600598826610998020a8fc10a8f8163f098f820a8f410a8f0163d082a3b042a3a042a39058f0263b098e82639098e020a8e010a8dc10a8d810a8d410a8d010a8cc1637082a32042a31042a30042a2f042a2e058d82⟩, ⟨0x7803a01c00d806903301880bc05a02b81500a204d024811808403e01d00d806402f015809c04602000e00600280100060020008000, 0xa9e010a9dc10a9d8166a099a420a9d410a9d010a9cc16680999c2666082a72042a710599420a9c010a9bc10a9b810a9b410a9b01664082a6b042a6a042a690598c20a9a010a99c10a99810a99410a99010a98c10a98810a9841⟩, ⟨0x7703981bc0d6067031817c0b805802a0140098048022810807c03a01b80cc06002d014809404201e00d005802400f005801c008000, 0x2aaf042aae042aad042aac042aab042aaa059cc20aaa410aaa010aa9c10aa9810aa941672099c420aa9010aa8c1670082aa2059bc266e082aa1042aa0042a7f059b420a9f810a9f410a9f0166c082a7b042a7a059ac20a9e41⟩, ⟨0x7703981bc0d806903281840ba05a02b014809e04b023811008003d01c80d806402e015009804401e00d005802400e0050018006000, 0x2ae6042ae5059f0267b082ae4042ae3042ae2059e820ab8410ab801679082abf042abe059e020aaf41677082abc059d820aaec10aae810aae410aae010aadc10aad810aad410aad010aacc10aac810aac410aac01675099d02⟩ ] def tableRLR : Table Block := .branch 8 tableRLRL tableRLRR def tableRL : Table Block := .branch 17 tableRLL tableRLR def tableRRLL : Table Block := .leaf #[ ⟨0x7a03b01c80de06c03401900c005c02c01540a404e025011808603f01d80dc06602f015809c04601f00d805c02600f0058020008000, 0xac8010abfc16a209a8420abf810abf410abf010abec10abe816a0099fc20abe410abe010abdc167e082af6042af5042af4042af3042af2042af1042af0042aef042aee042aed042aec042aeb042aea042ae9059f420aba010ab9c1⟩, ⟨0x7203701a80ce06302f816c0b0054028013009004402080f407203501880b8054027012008403a01900a804801e00c0048018006000, 0xacc810acc416b0082b30042b2f042b2e05abc20acb410acb010acac10aca810aca416ae082b28042b27042b26042b2505ab420ac9016ac09aac26aa082b23042b22042b2105aa426a809a9c26a609a9426a409a8c2⟩, ⟨0x7a03b81cc0de06b033818c0c005c02c01540a204d024811408203d01c80d406402e015009804401e00d005802400f005801c008000, 0x6b6082b6c042b6b042b6a042b69042b6805ad420ad9c10ad9816b4082b65042b64042b63042b62042b61042b60042b3f042b3e05acc20acf410acf010acec10ace810ace410ace010acdc10acd816b2082b35042b3405ac420accc1⟩, ⟨0x7603901b80d6067031817c0b6057029813c096047022010007a03901a80c805e02b013809004201e00d805c02600f005801c008000, 0xae8810ae8416e0082ba0042b7f042b7e042b7d042b7c042b7b042b7a042b79042b7805afc20addc16be082b76042b7505af426bc082b74042b7305aec26ba09ae426b8082b72042b71042b70042b6f042b6e05adc20adb41⟩, ⟨0x7903a81c40da06903281840be05b02b81500a204d024811408203d01c80d406402e015009804601f00d805c02600f0058020008000, 0x2bbc042bbb042bba042bb9042bb8042bb705c0c2bb6042bb505b9426e4082bb4042bb3042bb2042bb1042bb0042baf042bae05b8c20aeb410aeb010aeac16e2082baa042ba9042ba8042ba7042ba6042ba505b8420ae9010ae8c1⟩, ⟨0x7603901b80d406703281840ba05b02b81500a004c024811408203d01c80d406202d015009804401f00d805c02600f005801c008000, 0xafd010afcc10afc816eb09e0c2bf1042bf005d0c2bef05ba820afb810afb416e9082bec042beb042bea042be9042be8042be7042be605ba020af9410af9016e7082be3042be2042be1042be0042bbf042bbe05b9820aef41⟩, ⟨0x7a03b01c80dc06a03301880bc05b02b814c09e04b023811008203e01d00d806402e015009804401e00d80600280100060020008000, 0xb0b810b0b410b0b010b0ac10b0a810b0a410b0a016f1082c27042c26042c25042c24042c2305bc026ef09bb820b08810b08410b08010affc10aff810aff410aff010afec16ed09bb020afe810afe410afe010afdc10afd810afd41⟩, ⟨0x7b03b81cc0de06b03401940c205d02c81540a404e025011808403e01d00d806402e015009804401e00d005802600f0058020008000, 0x2c69042c68042c67042c6605bd826f5082c65042c64042c63042c6205bd020b18410b18010b0fc10b0f810b0f410b0f010b0ec10b0e810b0e410b0e010b0dc10b0d810b0d410b0d010b0cc16f3082c32042c3105bc820b0c010b0bc1⟩ ] def tableRRLR : Table Block := .leaf #[ ⟨0x7903a81c80dc06a03301880bc05a02b814c09e04b024011008003d01d00dc06602f015809c04601f00d805c02600f005801c006000, 0x2ca205bf420b28410b28010b1fc10b1f810b1f410b1f016fc082c7b042c7a042c7905bec20b1e010b1dc16fa09be426f8082c76042c75042c74042c73042c72042c71042c70042c6f042c6e042c6d042c6c042c6b042c6a05bdc2⟩, ⟨0x7203781ac0d006403001700b0054028013009004402080f807603701980bc056027012008403c01b00c005002000d005001c008000, 0x72b082cb405ca820b2cc10b2c810b2c410b2c010b2bc10b2b810b2b410b2b010b2ac172909ca02727082caa042ca9042ca8042ca7042ca605c98272509c90272309c8820b29410b290172109c8026ff09bf820b28c1⟩, ⟨0x7203701ac0ce06302f816c0b00550290138094047022010407c03b01c00d006002c014009404401e00d005c02600f005801c006000, 0xb3981739082ce5042ce4042ce3042ce205ce0273709cd820b38410b380173509cd0273309cc8273109cc020b2fc10b2f810b2f410b2f0172f09cb820b2ec10b2e8172d082cb9042cb8042cb7042cb6042cb505cb02⟩, ⟨0x7603981bc0d606703201800b805802a014409a049022810407c03b01b80cc06002c014009004001c00c005002000e005001c008000, 0x761082cfd042cfc042cfb05d8020b3e810b3e410b3e010b3dc173f082cf6042cf5042cf4042cf305cf8273d082cf2042cf105cf020b3c010b3bc10b3b810b3b410b3b010b3ac10b3a810b3a417c30b3a0173b09ce820b39c1⟩, ⟨0x7703981bc0d606803281880bc05a02b014809c04a023010c07e03b01c00d006002c014009404401e00d005802400f0060020008000, 0x2d34042d33042d3205da4276809d9c20b4c410b4c010b4bc10b4b810b4b410b4b010b4ac1766082d2a042d2905d9420b4a010b49c10b49810b49417640818030b49010b48c10b48810b484176309d8820b48010b3fc10b3f81⟩, ⟨0x7703981bc0d606803201800ba05902a814409a04a023810c07e03b01c00d006002c014009404401f00d805c02600f005801c006000, 0x2d6b042d6a042d6905dc820b5a010b59c1771082d66042d65042d64042d6305dc0276f082d62042d61042d6005db820b4fc10b4f810b4f410b4f0176d09db0276b082d3b042d3a042d39042d38042d37042d36042d3505da82⟩, ⟨0x7803a01c00d806803281840bc05a02b014809e04b023811008003c01c00d006202d014809404401e00d005802600f005801c006000, 0xb68c10b68810b68410b680177a082d7f05de420b5f810b5f410b5f01778082d7b042d7a05ddc20b5e410b5e010b5dc10b5d81776082d75042d74042d7305dd420b5c810b5c410b5c01774082d6f042d6e042d6d042d6c05dcc2⟩, ⟨0x7803a81c40da06903281880be05b02b814c0a004c024811808403e01d00dc06602f015809c04601f00d805c0280100060020008000, 0x610c2dbb042dba042db9042db805e8427a0082db7042db6042db505dfc20b6d0177e09df420b6cc10b6c810b6c4177c082db0042daf042dae042dad042dac042dab042daa042da905dec20b6a010b69c10b69810b69410b6901⟩, ⟨0x7a03b01cc0de06b033818c0be05b02b814c09e04b024011408203d01c80d406402e015009804401e00d005802400e005001c008000, 0xb7d417a7082df4042df3042df2042df1042df0042def042dee042ded042dec042deb05e9827a5082dea042de9042de8042de705e9020b79810b79410b79010b78c10b78810b78410b78010b6fc10b6f810b6f417a309e8820b6f01⟩ ] def tableRRL : Table Block := .branch 8 tableRRLL tableRRLR def tableRRRL : Table Block := .leaf #[ ⟨0x7b03b81d00e006c03401900c005c02c01500a004d024811408203d01c80d806402e015009804401e00d005c02600f0058020008000, 0x2e3005eb020b8bc10b8b810b8b410b8b010b8ac10b8a810b8a410b8a010b89c17ab082e26042e25042e24042e23042e2205ea820b88410b88010b7fc10b7f810b7f410b7f010b7ec17a9082dfa042df9042df805ea020b7dc10b7d81⟩, ⟨0x7b03c01d00e006c03401900c005c02c01500a204d024811408203e01d00d806402e015809c04601f00e00600280100060020008000, 0x1ec420b9ac10b9a810b9a410b9a010b99c10b99810b99410b99010b98c17b0082e62042e61042e60042e3f05ebc20b8f810b8f410b8f010b8ec17ae082e3a042e39042e3805eb420b8dc10b8d810b8d410b8d010b8cc10b8c810b8c41⟩, ⟨0x7603901b80d406603181800b805802a814409c04b023810c07e03b01b80cc05e02b013809004201d00d005c02600f005801c006000, 0xba8410ba8010b9fc10b9f817bb09ee820b9f410b9f017b9082e7b05ee027b7082e7a042e79042e78042e77042e76042e75042e74042e73042e7205ed827b5082e7105ed027b3082e70042e6f042e6e042e6d042e6c05ec82⟩, ⟨0x7603901b80d406603181800ba05902a814409a049022810407a03901b00c805c02a013008c04001d00d005c02600f005801c006000, 0xbadc10bad810bad410bad017e509f9027e3082eb3042eb2042eb1042eb0042eaf042eae042ead042eac042eab05f8820baa810baa410baa010ba9c17e109f8027bf09ef827bd082ea6042ea5042ea4042ea3042ea205ef02⟩, ⟨0x7103701ac0d006403001700b00550290138094047022010407c03b01c00d406202e015809c04601f00d80600280100060020008000, 0x1fd027f309fc820bba010bb9c10bb9810bb9417f109fc020bb9010bb8c17ef09fb827ed09fb027eb09fa827e9082ee205fa027e7082ee1042ee0042ebf042ebe05f9820baf410baf010baec10bae810bae410bae01⟩, ⟨0x7b03b81cc0e006c03401900c005c02c01500a004d024811408203d01c80d406202d014809804401e00d005802400e0058020008000, 0x2f23042f2205fe420bc8410bc8010bbfc10bbf810bbf410bbf010bbec10bbe817f8082ef9042ef8042ef7042ef6042ef5042ef4042ef3042ef2042ef105fdc20bbc010bbbc10bbb810bbb410bbb010bbac17f609fd420bba810bba41⟩, ⟨0x7a03b01c80dc06a03301880bc05a02b81500a204e025011808403e01d00d806402e015009804401f00d805c02600f005801c008000, 0x609420609020608c20608820bcdc10608420608020bcd817ff09ff827fd09ff020bcd410bcd010bccc10bcc810bcc410bcc010bcbc10bcb810bcb410bcb010bcac17fb082f2a042f29042f28042f27042f26042f2505fe820bc901⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0x60c82060c420bda810bda410bda010bd9c10bd9810bd9410bd901060c020bd8c10bd881060bc20bd841060b82060b420bd8010bcfc10bcf810bcf410bcf010bcec10bce81060b020bce41060ac2060a82060a42060a020609c20609820bce01⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbde810bde410bde010bddc10618820618420618020bdd810bdd41060fc2060f82060f42060f020bdd01060ec2060e820bdcc1060e42060e02060dc2060d82060d420bdc810bdc41060d02060cc20bdc010bdbc10bdb810bdb410bdb010bdac1⟩ ] def tableRRRR : Table Block := .leaf #[ ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xbeac10bea810bea410bea01061c42061c020be9c10be9810be941061bc2061b82061b420be901061b02061ac2061a82061a420be8c10be8810be8410be8010bdfc1061a020619c20619820619420619020bdf810618c20bdf410bdf010bdec1⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0x61fc2061f820bef41061f420bef010beec10bee810bee410bee010bedc10bed810bed410bed010becc1061f020bec810bec41061ec2061e82061e420bec010bebc10beb810beb410beb01061e02061dc2061d82061d42061d02061cc2061c82⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0x62a820bfc81062a420bfc410bfc010bfbc10bfb810bfb410bfb010bfac10bfa81062a020629c20629820629420629020bfa410bfa010bf9c10bf9810bf9410628c20bf9010bf8c10bf8810bf8410628820bf8010befc10bef81062842062802⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0x62fc20bff41062f82062f420bff010bfec10bfe81062f020bfe41062ec2062e82062e420bfe010bfdc10bfd810bfd410bfd01062e020bfcc1062dc2062d82062d42062d02062cc2062c82062c42062c02062bc2062b82062b42062b02062ac2⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe0ac10e0a810e0a410e0a010e09c1063c420e09810e09410e09010e08c10e0881063c02063bc2063b82063b42063b020e08410e0801063ac20bffc10bff81063a82063a42063a020639c20639820639420639020638c2063882063842063802⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe18410e1801063ec2063e82063e42063e020e0fc10e0f810e0f410e0f010e0ec10e0e81063dc2063d820e0e410e0e010e0dc1063d42063d02063cc20e0d810e0d410e0d010e0cc10e0c810e0c410e0c010e0bc1063c820e0b810e0b410e0b01⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0xe1b41064bc2064b82064b42064b02064ac2064a82064a42064a020649c20649820649420e1b010e1ac10e1a810e1a410e1a010e19c10649020e19810e19410e19010648c2064882064842064802063fc2063f82063f420e18c10e1881063f02⟩, ⟨0x8003e01e00e807003601a00c806002e01600a8050026012008804001e00e006803001600a004802000e00600280100060020008000, 0x658820e1e81065842065802064fc20e1e41064f82064f42064f020e1e01064ec2064e820e1dc10e1d810e1d41064e42064e02064dc2064d820e1d010e1cc10e1c810e1c41064d420e1c01064d02064cc20e1bc1064c820e1b81064c42064c02⟩, ⟨0x600280100060020008000, 0x65a020659c20659820659420659020658c2⟩ ] def tableRRR : Table Block := .branch 9 tableRRRL tableRRRR def tableRR : Table Block := .branch 17 tableRRL tableRRR def tableR : Table Block := .branch 34 tableRL tableRR def table : Table Block := .branch 68 tableL tableR def records (i : Nat) : List Nat := PackedNatTable.records table i end PolicyInitialCoverage1Tail namespace PolicyInitialCoverage1 def records (cid : Nat) : List Nat := if cid ≤ 0x10e1 then [0, cid - 1] else PolicyInitialCoverage1Tail.records (cid - 0x10e2) def limits : Nat → Nat | 0 => 0x10e1 | 1 => 0xc3b | 2 => 0x4a9 | 3 => 34 | _ => 0 def targets : Nat → Nat → Nat | 0, i => (PolicyCircuitPacked1.records i).headD 0 | 1, i => (PolicyRewriteParametricPacked1.records i).headD 0 | 2, i => (PolicyArithmeticPacked1.records i).headD 0 | 3, i => (PolicyAssertedPacked1.records i).headD 0 | _, _ => 0 end PolicyInitialCoverage1 end PolicySubmissionPart51 /- Component PackedNatHead; SHA256 eef459d79e09719dc8d62d18a6f1a4903e0d7d3ae951e2bd312a01e7f9060fc4. -/ section PolicySubmissionPart52 /- Read the first field without decoding the rest of a packed numerical record. -/ namespace CompactNatData def headAux : Nat → Nat → Nat → Nat → Nat | 0, _, _, _ => 0 | fuel + 1, packed, value, multiplier => let digit := packed % 64 let next := value + digit % 32 * multiplier if digit < 32 then next else headAux fuel (packed / 64) next (multiplier * 32) def head (digits packed : Nat) : Nat := headAux digits packed 0 1 def read_preserves_first (fuel packed value multiplier first : Nat) (xs : List Nat) : ((read fuel packed (xs ++ [first], value, multiplier)).1.reverse).headD 0 = first := by induction fuel generalizing packed value multiplier xs with | zero => simp [read] | succ fuel ih => by_cases h : packed % 64 < 32 · simpa only [read, step, h, ↓reduceIte, List.cons_append] using ih (packed / 64) 0 1 ((value + packed % 64 % 32 * multiplier) :: xs) · simpa only [read, step, h, ↓reduceIte] using ih (packed / 64) (value + packed % 64 % 32 * multiplier) (multiplier * 32) xs def headAux_eq (fuel packed value multiplier : Nat) : headAux fuel packed value multiplier = ((read fuel packed ([], value, multiplier)).1.reverse).headD 0 := by induction fuel generalizing packed value multiplier with | zero => rfl | succ fuel ih => by_cases h : packed % 64 < 32 · simp only [headAux, read, step, h, ↓reduceIte] symm simpa only [List.nil_append] using read_preserves_first fuel (packed / 64) 0 1 (value + packed % 64 % 32 * multiplier) [] · simpa only [headAux, read, step, h, ↓reduceIte] using ih (packed / 64) (value + packed % 64 % 32 * multiplier) (multiplier * 32) def head_eq_decode_head (digits packed : Nat) : head digits packed = (decode digits packed).headD 0 := headAux_eq digits packed 0 1 end CompactNatData namespace PackedNatTable def Block.head (b : Block) (i : Nat) : Nat := let first := b.start i let count := b.start (i + 1) - first let packed := (b.data >>> (6 * first)) &&& ((1 <<< (6 * count)) - 1) CompactNatData.head count packed def Block.head_eq_get_head (b : Block) (i : Nat) : b.head i = (b.get i).headD 0 := CompactNatData.head_eq_decode_head _ _ def recordHead (t : Table Block) (i : Nat) : Nat := (t.get emptyBlock (i / 32)).head (i % 32) def recordHead_eq (t : Table Block) (i : Nat) : recordHead t i = (records t i).headD 0 := Block.head_eq_get_head _ _ def recordHead16 (t : Table Block) (i : Nat) : Nat := recordHead t (32 * (i / 16) + i % 16) def recordHead16_eq (t : Table Block) (i : Nat) : recordHead16 t i = (records t (32 * (i / 16) + i % 16)).headD 0 := recordHead_eq _ _ end PackedNatTable end PolicySubmissionPart52 /- Component PolicyInitialFastCoverageData; SHA256 7e066da35b905ca0598de0f98f0ae298580a1cbeec91f8236c07a747b57f5c85. -/ section PolicySubmissionPart53 namespace PolicyInitialFastCoverage0 open PackedNatTable abbrev records := PolicyInitialCoverage0.records abbrev limits := PolicyInitialCoverage0.limits def targets : Nat → Nat → Nat | 0, i => recordHead PolicyCircuitPacked0.table i | 1, i => recordHead16 PolicyRewriteParametricPacked0.table i | 2, i => recordHead16 PolicyArithmeticPacked0.table i | 3, i => (PolicyAssertedPacked0.records i).headD 0 | _, _ => 0 def targets_eq (k i : Nat) : targets k i = PolicyInitialCoverage0.targets k i := by match k with | 0 => exact recordHead_eq PolicyCircuitPacked0.table i | 1 => exact recordHead16_eq PolicyRewriteParametricPacked0.table i | 2 => exact recordHead16_eq PolicyArithmeticPacked0.table i | 3 => rfl | k + 4 => rfl end PolicyInitialFastCoverage0 namespace PolicyInitialFastCoverage1 open PackedNatTable abbrev records := PolicyInitialCoverage1.records abbrev limits := PolicyInitialCoverage1.limits def targets : Nat → Nat → Nat | 0, i => recordHead PolicyCircuitPacked1.table i | 1, i => recordHead16 PolicyRewriteParametricPacked1.table i | 2, i => recordHead16 PolicyArithmeticPacked1.table i | 3, i => (PolicyAssertedPacked1.records i).headD 0 | _, _ => 0 def targets_eq (k i : Nat) : targets k i = PolicyInitialCoverage1.targets k i := by match k with | 0 => exact recordHead_eq PolicyCircuitPacked1.table i | 1 => exact recordHead16_eq PolicyRewriteParametricPacked1.table i | 2 => exact recordHead16_eq PolicyArithmeticPacked1.table i | 3 => rfl | k + 4 => rfl end PolicyInitialFastCoverage1 end PolicySubmissionPart53 /- Component PolicyInitialFastCoverageChecked0; SHA256 9c3ecf84539503e41282c7d3076d3588a58332ab219a7e580e8312317264a36f. -/ section PolicySubmissionPart54 namespace PolicyInitialFastCoverage0 open ClosureCoverage def test (start count : Nat) : Bool := checkBlock limits targets records start count def checked0 : test 1 0x80 = true := by decide +kernel def checked1 : test 0x81 0x80 = true := by decide +kernel def checked2 : test 0x101 0x80 = true := by decide +kernel def checked3 : test 0x181 0x80 = true := by decide +kernel def checked4 : test 0x201 0x80 = true := by decide +kernel def checked5 : test 0x281 0x80 = true := by decide +kernel def checked6 : test 0x301 0x80 = true := by decide +kernel def checked7 : test 0x381 0x80 = true := by decide +kernel def checked8 : test 0x401 0x80 = true := by decide +kernel def checked9 : test 0x481 0x80 = true := by decide +kernel def checked10 : test 0x501 0x80 = true := by decide +kernel def checked11 : test 0x581 0x80 = true := by decide +kernel def checked12 : test 0x601 0x80 = true := by decide +kernel def checked13 : test 0x681 0x80 = true := by decide +kernel def checked14 : test 0x701 0x80 = true := by decide +kernel def checked15 : test 0x781 0x80 = true := by decide +kernel def checked16 : test 0x801 0x80 = true := by decide +kernel def checked17 : test 0x881 0x80 = true := by decide +kernel def checked18 : test 0x901 0x80 = true := by decide +kernel def checked19 : test 0x981 0x80 = true := by decide +kernel def checked20 : test 0xa01 0x80 = true := by decide +kernel def checked21 : test 0xa81 0x80 = true := by decide +kernel def checked22 : test 0xb01 0x80 = true := by decide +kernel def checked23 : test 0xb81 0x80 = true := by decide +kernel def checked24 : test 0xc01 0x80 = true := by decide +kernel def checked25 : test 0xc81 0x80 = true := by decide +kernel def checked26 : test 0xd01 0x80 = true := by decide +kernel def checked27 : test 0xd81 0x80 = true := by decide +kernel def checked28 : test 0xe01 0x80 = true := by decide +kernel def checked29 : test 0xe81 0x80 = true := by decide +kernel def checked30 : test 0xf01 0x80 = true := by decide +kernel def checked31 : test 0xf81 0x80 = true := by decide +kernel def checked32 : test 0x1001 0x80 = true := by decide +kernel def checked33 : test 0x1081 0x80 = true := by decide +kernel def checked34 : test 0x1101 0x80 = true := by decide +kernel def checked35 : test 0x1181 0x80 = true := by decide +kernel def checked36 : test 0x1201 0x80 = true := by decide +kernel def checked37 : test 0x1281 0x80 = true := by decide +kernel def checked38 : test 0x1301 0x80 = true := by decide +kernel def checked39 : test 0x1381 0x80 = true := by decide +kernel def checked40 : test 0x1401 0x80 = true := by decide +kernel def checked41 : test 0x1481 0x80 = true := by decide +kernel def checked42 : test 0x1501 0x80 = true := by decide +kernel def checked43 : test 0x1581 0x80 = true := by decide +kernel def checked44 : test 0x1601 0x80 = true := by decide +kernel def checked45 : test 0x1681 0x80 = true := by decide +kernel def checked46 : test 0x1701 0x80 = true := by decide +kernel def checked47 : test 0x1781 0x80 = true := by decide +kernel def checked48 : test 0x1801 0x80 = true := by decide +kernel def checked49 : test 0x1881 0x80 = true := by decide +kernel def checked50 : test 0x1901 0x80 = true := by decide +kernel def checked51 : test 0x1981 0x80 = true := by decide +kernel def checked52 : test 0x1a01 0x80 = true := by decide +kernel def checked53 : test 0x1a81 0x80 = true := by decide +kernel def checked54 : test 0x1b01 0x80 = true := by decide +kernel def checked55 : test 0x1b81 0x80 = true := by decide +kernel def checked56 : test 0x1c01 0x80 = true := by decide +kernel def checked57 : test 0x1c81 0x80 = true := by decide +kernel def checked58 : test 0x1d01 0x80 = true := by decide +kernel def checked59 : test 0x1d81 0x80 = true := by decide +kernel def checked60 : test 0x1e01 0x80 = true := by decide +kernel def checked61 : test 0x1e81 0x80 = true := by decide +kernel def checked62 : test 0x1f01 0x80 = true := by decide +kernel def checked63 : test 0x1f81 0x80 = true := by decide +kernel def checked64 : test 0x2001 0x80 = true := by decide +kernel def checked65 : test 0x2081 0x80 = true := by decide +kernel def checked66 : test 0x2101 0x80 = true := by decide +kernel def checked67 : test 0x2181 0x80 = true := by decide +kernel def checked68 : test 0x2201 0x80 = true := by decide +kernel def checked69 : test 0x2281 0x80 = true := by decide +kernel def checked70 : test 0x2301 48 = true := by decide +kernel def checkedRange0 : ∀ i : Nat, 0 ≤ i → i < 32 → test (1 + 0x80 * i) (min 0x80 (0x2330 - 0x80 * i)) = true := by intro i hlo hhi interval_cases i · exact checked0 · exact checked1 · exact checked2 · exact checked3 · exact checked4 · exact checked5 · exact checked6 · exact checked7 · exact checked8 · exact checked9 · exact checked10 · exact checked11 · exact checked12 · exact checked13 · exact checked14 · exact checked15 · exact checked16 · exact checked17 · exact checked18 · exact checked19 · exact checked20 · exact checked21 · exact checked22 · exact checked23 · exact checked24 · exact checked25 · exact checked26 · exact checked27 · exact checked28 · exact checked29 · exact checked30 · exact checked31 def checkedRange32 : ∀ i : Nat, 32 ≤ i → i < 64 → test (1 + 0x80 * i) (min 0x80 (0x2330 - 0x80 * i)) = true := by intro i hlo hhi interval_cases i · exact checked32 · exact checked33 · exact checked34 · exact checked35 · exact checked36 · exact checked37 · exact checked38 · exact checked39 · exact checked40 · exact checked41 · exact checked42 · exact checked43 · exact checked44 · exact checked45 · exact checked46 · exact checked47 · exact checked48 · exact checked49 · exact checked50 · exact checked51 · exact checked52 · exact checked53 · exact checked54 · exact checked55 · exact checked56 · exact checked57 · exact checked58 · exact checked59 · exact checked60 · exact checked61 · exact checked62 · exact checked63 def checkedRange64 : ∀ i : Nat, 64 ≤ i → i < 71 → test (1 + 0x80 * i) (min 0x80 (0x2330 - 0x80 * i)) = true := by intro i hlo hhi interval_cases i · exact checked64 · exact checked65 · exact checked66 · exact checked67 · exact checked68 · exact checked69 · exact checked70 def checkedAll : ∀ i : Nat, 0 ≤ i → i < 71 → test (1 + 0x80 * i) (min 0x80 (0x2330 - 0x80 * i)) = true := (Bounty.policyIntervalJoin _ 0 32 71 checkedRange0 (Bounty.policyIntervalJoin _ 32 64 71 checkedRange32 checkedRange64)) def checked (i : Fin 71) : test (1 + 0x80 * i.val) (min 0x80 (0x2330 - 0x80 * i.val)) = true := by exact checkedAll i.val (Nat.zero_le _) i.isLt def covers (P : Nat → Prop) (hs : ∀ k, k < 4 → ∀ i, i < limits k → P (targets k i)) (cid : Nat) (hp : 0 < cid) (hi : cid < 0x2331) : P cid := by have hb : (cid - 1) / 0x80 < 71 := by omega have hw : (cid - 1) % 0x80 < min 0x80 (0x2330 - 0x80 * ((cid - 1) / 0x80)) := by omega have h := checkBlock_sound P limits targets hs records (1 + 0x80 * ((cid - 1) / 0x80)) (min 0x80 (0x2330 - 0x80 * ((cid - 1) / 0x80))) (checked ⟨(cid - 1) / 0x80, hb⟩) ((cid - 1) % 0x80) hw have hid : 1 + 0x80 * ((cid - 1) / 0x80) + (cid - 1) % 0x80 = cid := by omega simpa only [hid] using h def covers_original (P : Nat → Prop) (hs : ∀ k, k < 4 → ∀ i, i < PolicyInitialCoverage0.limits k → P (PolicyInitialCoverage0.targets k i)) (cid : Nat) (hp : 0 < cid) (hi : cid < 0x2331) : P cid := by apply covers P ?_ cid hp hi intro k hk i hi rw [targets_eq] exact hs k hk i hi end PolicyInitialFastCoverage0 end PolicySubmissionPart54 /- Component PolicyFixedHintData; SHA256 c690738d5de43a4cf40d37d29520372e0da72d43be2d02f6ab8ef26571acd008. -/ section PolicySubmissionPart55 /- Direct fixed-width hint IDs, decoded in bounded pieces. -/ namespace Bounty def policyFixedHintPart : Nat → Nat → List Nat → List Nat | 0, _, result => result | n + 1, packed, result => policyFixedHintPart n (packed >>> 15) ((packed &&& 0x7fff) :: result) def policyFixedHintChunks : Nat → Nat → Nat → List Nat → List Nat | 0, _, _, result => result | fuel + 1, count, packed, result => if count = 0 then result else let n := min count 0x200 let piece := packed &&& ((1 <<< (15 * n)) - 1) policyFixedHintChunks fuel (count - n) (packed >>> (15 * n)) (policyFixedHintPart n piece result) def policyFixedHintDecode (record : Nat) : List Nat := let count := record &&& 0xfff (policyFixedHintChunks (count / 0x200 + 1) count (record >>> 12) []).reverse end Bounty end PolicySubmissionPart55 /- Component PolicySharedUnitFixedData; SHA256 3501536e8e2b15531313db07b32b470bb05d3a42d498e425e679046e6d4b365a. -/ section PolicySubmissionPart56 /- The same shared-unit certificate with directly packed fixed-width hint IDs. -/ namespace Bounty def policySharedUnitFixed0Clauses : PackedNatTable.Table PackedNatTable.Block := (.branch 23 ( (.branch 11 ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x9840978097408a408900888088408820830082808240820080a078606d006ac059e059a053c0530052c04f404dc04d804ca04c804c404b2039603860382033e⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0xf340f320e8a0e840da60da40d780d700d320d2a0cb20c9a0c860c7e0c7a0c5a0c560c520bc80bc00b9e0afe0a400a280a240a140a1009fe09f209ee09c609c2⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1370136c133c1336130812dc12d812ca12ba12b612b212861280125011a410e210de10a0109e1078107610721062102a101c10180fd20fc80fb00f9c0f520f4e⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x19b8190c18f21868181c177e170c170216fe16bc16861682163e162015f215e415e015c415c015ae15901550154814a4149c144a13d213c0139c138613841380⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1fe01fdc1f801f7e1f3c1f281f0a1ee81ec21ec01ea81e3c1e381e2c1d5a1d541d521d4e1c901b8e1a661a621a2a1a1a1a061a0019fe19fa19ea19e619c819c4⟩]))) ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x25ae25902550254c2548252624c824a824a6245c23f023ec23a623a22390238223302290228c225e224a222821c221ba21b621a8219c211220ee205620522044⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2c342b302ac02a9e2a962a922a8229a0296c29682952293e292e290428f828a2289e2880286c2866284c28482844281e281a280427e027bc2732272c26a225be⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x33b23382332a32c4329e32743262321c321831fc31f03166313230e430ca30c830a03022301c2ff82f882ee22ec82ec22e202e1a2d6c2d0c2d0a2ca42ca22c3a⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x383a37e837b436cc36b83686365a3656364836463642363a3626361a360a35ec35de35b03596355a3552353e353a352c352a351e351434ee34e63486342833f0⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x3cf23ce43caa3c9a3c023bf63bcc3bc83ba43b8a3b743b4c3b143b0a3ae43a763a4039fc39f039e639dc39d639c239963930392c38dc38d43892388e38863880⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x17e05ba000204fc04980004045803ba034802de029e027641ae417040d240ba3f7e3ed43ec03e703e543dfe3dde3dd43dc83dc63dc23db63d663d3e3d3a3d24⟩]))))) ( (.branch 6 ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x135012be12aa12a01274123810420f680ee60ed40e6a0dbe0d360c880c280bde0b5e0aea0aac0aa20a6e09f6091e076c074c06d60648063a0634061e05fe05f0⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2442242a23d623862236221e220421d22130210420221f861f331ece1e501cc81cba1c1a1c0619ce19281902183a17da17ce176e16e6165216321576142013ac⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2ed82eaa2e9e2e402e362e102daa2d982d902d442d002c442c2a2b8a2a722a062998297e2910284e27ee271626aa2698266c2616260425e82578250424ba244e⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2510223021301fd01e701d701bf01a53f8c3e4a3d323c203b0c3a5e38ac36d83582356e352e350034c234b0348e347c341a31d431563144311c30d4306e2fae⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0xbe10b090a890a710a4f0a2d09f909d5098b094b09350921087907ff07ed06fd06f106df05f305a5051304ff04830471045b042b03c3039b0355032d02e102b7⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x138b1353134312f7125d1215120311e711d511a9118b116f115f1149111d110710891045102f0fff0fdd0fb50f6b0f170ee90ebf0e6d0e3b0ded0dd30d390cd9⟩]))) ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1cff1c851c771c2d1bdd1b9f1b931b771b571b371b011aeb1adb1a9f1a831a7119ab192b18df180317ef16691579150914f914e314cd14bd14ab148313db13af⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x266f2641262b25f525eb25cb247d234922d5229722632153210720c720b120a12099208b20131fed1f5f1f3f1efd1eed1ed11e591db51da51d791d631d251d0f⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2d472d3b2d2d2d032cc92c812c712c5b2c4d2bf52bab2b492a5b2a1f2a0929eb29db29cd29b728db27f127cd27ab2775274b271926f526df26c726b526ad2679⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x382f381937d53675359b358534cb34913461341d339d3291323131af319f312530d7307b30552fe32fb12f692f592f052ee92ead2e832e6d2e572dcf2d712d4f⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x21c02141b5001fe1b4c01e801e001d809e801c04179412b411340754059402b3fd13faf3f953f353ee33e893e2d3d0f3c773c673c533b3f3aa5399b395f38f3⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x87a07c2078c07362a5406fe074406f206e00698052605140dcc0484047a0472151c042c040403e80de603c403ad03a4039c05320356191c030e02fa1b6c0224⟩]))))))) ( (.branch 12 ( (.branch 6 ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0xfde1dd00fb60f840f260f180f02160c0e3c1d400dee15640dd40cf40cda0b260b420b0a0aba1cf80a2e0f7a09d60994098c0ab2094c0f2a093608ea08ce08a9⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x14ac182a13dc246c138c1b4612f812e61232120411f811e811de11d611fc11ce11aa11f411701168116011f0114a1126111e1bbc110812c410e41a5a10300ff4⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1b5823f61b381b201b301b0228581aec1ae41adc1ab41a841aae1a721a302b2a17f0178816cc15ca159a1608150a150214fa15f414e415fc14ce15f814be30b2⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x20c820be20b2206821141fee355c1f6023f21e5a1e141f7228861d7a28821d641d481d261d441d101d081d001c4437901c2e34e21bde1bb61ba01bb21b942194⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2a3e29b829ae28dc28c427b427ac27902764274c26fe26f6272026e0272426c82fba26b62954267a30142642285425f6241028d422d62f922264220a21e02128⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2eea2e8c2e842f1e2e6e2f1a2e582f222dec2d7232142d5031e22cca2c9a2c822c7a2c722c962c5c2c9e2c4e2bcc2b4a2a882a5c2a3629ec29e429dc2a3a29ce⟩]))) ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x3a04397a391238403e7236a8367e36763f20359c34de34cc34983462333632ac31bc317c3b283bbe315c312630f030562ff02fe42fc22f762f362f282f062efe⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x3aa024e824c425703bd83f1840b641761fbe127c0e9c3b60090808aa07ac0cb6086403ae192003504194407e40764064403c3fec3f503efe3ea43f2c3c823c2a⟩, ⟨0x52025811c08a04101d80c8056025012008c044021010007c034016008003801a00c0058028012008003801800a0040018008002000, 0x5ef0a690955091507490869015e2cc132013b1a32080242026639b339cd3940394e29ad342b372f340f3f97393400d835350f7f0457044304ad04ec1cd500eb02d5354135351cd50f7f029502d1124512371011105a1085008a139e136913641faa41ac0c9206c70b91070d0b8f0c3b0b8f0b910c3b01390c3b0c1d0b910b8f079f01370b910cac41b41d3c08b8085e03d208b703d10b460b20067e3de30b1f0d5005ce⟩]) ( .leaf #[⟨0x7703b01c80e207003401800b4054027813809804a02200f807603901b80d806a034019009004601c00d803c01c00d0060028006000, 0x5b806130b910b8f0c3b06710678013c0ca60caa0b8c0cad0bd20ca801240f670fa90f630ec10e65030902f50b540f672bc72bc53191319a14c90b8b0b8f0b930b910bd40b560b8f0b930b910b8b0b5d132e1ce3289a0e770e66091508690955074905ef0aa8091508690955074905ef015c091d09870954015c01630a470a6805860366161c17c6009c238f238d0b8b0fd7028d10390e4f0e5503650dab0b8f0b910e5100a7235e067019df19bb028d195b1a02012f198824692405241f0e5503650dab238d0b8f238f0b910b8b23fd1a971a9416dc027509180f7709be09f5360738c10ef713d50e740e660e77⟩, ⟨0x52027012408c04001d80e807203801b80d806a03301900c406002f01700b405802b01500a404801f00a80500260120058008002000, 0x5231ecd2d5f04531fad23dd1dc1147f1eab089c08590893286f1cef1d5d1cde3c9c1d8e20891555155f1525156e2ca623662cba2cb0258825a2129d1298338e32ee105b10560ff00a831a10193c1a0314782005212720df285e0184290735490fd725c615b429ad342b340f393415932082212720df20052a04195a19de19ba0a0909f509bb0ef70ec10f3b097e0a990b5d0dab0b8f0bd10b910b8b0e670db613a205c9⟩, ⟨0x7503781b80da06c03581a80c005f02f016c0b4057028012c08c04502100fc07603701880a805002701300480220100078014004000, 0x352724fb0e610e69352500cb137a2623247224f62540387323c123bf1211184d103b12451237106500a718a4187e2ab501842004101003a9153715250a0d091d0fa909cd38c1360713d505ef0749086908a1086d0d4c06c70c3b070d0cee0d6c09550aa80b3c074905ef0645074905ef06450137074905ef064501380749071305ef0645062b012f09550aa805ef074905ec08a10869243e0114230419f428fd0f7f1cd529060ef70a0d091d38c13cd50fa909bb267527610955222b226d222d0a69230519f5228422a623370a470dab0e550b8f0bd10b910b8b0365095809601cef1d911ce408360b3c⟩]))))) ( (.branch 6 ( (.branch 3 ( .leaf #[⟨0xb105782b01440a10500278132097047023411808803d81c00d806603281900c0057029812006e030017007c038015005002000e000, 0x29ff09ba092f0ee4095435273525092f34330e6105ef091507491fd70ee0337617a4179117a428bd247928bf2329006d222d22543a2139e128413af5280b39ff3afb356d328d16d824fa3a2d2d28243f24380e650db30955092f352735251fd734330f4109f509bb0e77096035273525092f1fd734330e6909d10e650db3287a0e733d56288f1d911cec0e610e650db30e690dab0cee0d4d0d650893074905ef086d0e77092f352735250edd1fd734330f410e7209f509bb096309541fc33525386b1fc92a8d0e610e6923fd35272bc5017701420a7e245f3e5d09bb09f523fd3db935540f41352735250edd1fd73433092f0163245f3e5d09bb09f523fd0a46096135c60f61298d352735250e610e6921661fd7372f41551fc9415d350d2a8d280b343235c60f5f0f3909f509bb09630ec109550ef70f3b3e5d05ef245f074901420a7e09bb09f523fd091509610cca0cee1ac82f542dc13be63a813a5930a92d9e⟩, ⟨0xd406883341980c205d02d81680aa053028011e08e046823011608503f81ec0ee06a02e016008e035013809004402000d804000c000, 0x9bb09f509540187285e2005019110641ef81f1923b200a71765103b3d0338731a5e10651ef81f1923b2103b387300a71065147c1ef81f19147f12990d350cee156b0457044b152123ad1a8f03a923ab1a8d1a9b2dc12f542da52d9e106518d502dd044f1845005e133f03a93d2f3e413e293541029537290e6503090915074905ef044b35351dcd1dd9184c185014303d782002290702a715b4200a25c529ad342b372f340f3f873f970b8f0b910b8c0c3b275f276940f30bd83db93b8935540e770fa90f6702f503090e6509550ef70b5409603ce128e53a21030928d30e653afd074905ef0915280b39ff2841134a091d0ee409bb09540a0d091d3cd128e5074905ef09153a2128d32a6c0e6529ff0ee402f503090e6109550a0d091d29ff0ef73cd1030928e5074905ef09153a2128d32a6c0e610e650db30e6936053cd128e53a210a0d38c10749091d030928d30e6505ef0915360709aa3228243f092f092f0a162d431d3b32283a433a3032082ce728410e65030928e5074905ef09153cd13a2128d3134a243928b928d303090e65074905ef0915322528e525c535490fd703a9052428d2⟩, ⟨0xe5071834c1a40c805c02cc14a097049021810808203a01c40da06802d013c094047021810808203e01a807802e0130060024006000, 0x3a904f92a6c2bc72bc50f673be12655300c27132fd935d5294b262c2f8f3a7d2f5404f823283a6c3a6b3a5d30a93a573a473a592b6f2b6b006c09cd3ceb400a38d90edd092f400e243932250e6503090915074905ef28e528d32fef372f356b3f9729b209cd3ceb400a38d903090e6505ef09150edd092f0749400e28d328b53ceb3554400a28d303090e6505ef09150edd092f0749400e28b50e73044f389b178102dd00a738560e6535351dd7133f0915074905ef03091dcd00fc17c6010100fa31d3044a40b93d273b4f3541353502951dd91dcd29073b5702d503a90ffb044b2aa6213c2aad02d503a936f802d002a7208903a928d200fd12e13d1d0e6535353d3125b50915074905ef03091dcd133f1dd700fc091528fd03093cc70e653afd3cd7074905ef352128d3044b03a9370b37010ffb3940394e39b00e690e6100cb012009bf09ba091d0ee409542fef2bc52bc717c736e3372f3f970f6714c641b101a7023307e82d28298d372f4155350d280b415d3b4f2f152f170e650db30915092f1fd705ef074909550a980e690e650e610db306c7070d0b550e690e6119cc01200e7709552f173b4f2f151ce50e600f630e7b0a990e7b0ec109551ce51cde0f3b0e7b0f3b0ee1⟩]) ( .leaf #[⟨0x1550a5851c28a13809a84c024411608203c01be0cf06582cc13408604101c40da06b034817409c04001900a40480110030014006000, 0x2ee50b5c2d5f0f6714c62ecf2efb03090e6528d2129623b21085129c010000ea2efb2ecf2ee50b5c2d5f0e65133f00fc0f67030914c635351ecd092f09cd2ea60e690db30e610e650b552a6c1ef81f6f0edd3b570e770f411ecd0f670e650309092f28d204f82fef2bc52bc736e3372f14c60f67018702d5389b178117c72ecf17c22ee50b5c2d9e2dc12d5f1ecd03a90e65133f00fc353503091dcd0f6714c600fb02d5389b178120df200538560e65133f00fc35350915074905ef03091dcd2d5f03a91ecd208202d12ecf36e33e7b17c20e65133f00fc35350915074905ef03091dcd044b03a902d52efb2ecf17c228d22ee50b5c2d9e2dc13b4f3b5703a90e6503091dcd0f6714c640b928d2044b03a900fd40b93b4f29073b57044b03a938560e65133f178135350915074905ef03091dcd2fef2bc736e3372f14c60f67389b00fc40b93b4f29073b57044b03a938560e65133f178135350915074905ef03091dcd2fef2bc736e3372f14c60f67389b00fc00eb40b93b4f29073b57044b03a90309389b178138560e65029535351dcd35410915074905ef02d50ff8044b03a90ffb36f92ecf36e33e7b17c228d20e650915074905ef030903a93b4f1dcd3b57044b40b92efb03a928d2052400fd09cd095409540ee42e952f17284127031fd735270e690e6135252cc231eb27152a6c2bc72bc50f673be12655300c2fd935d52f8f0b5c3a7d04f8262c271405ef400a09aa2a6c29ff02f5280b091503090e6528d307490e730121243f243928e50e7309cd400a28d303090e6505ef091507493cd7092c34331fd7092f0e61074905ef09150ee028e409cd0e650b5403090b5d2a6c2655300c271335d5262c3a7d2d9e14c92bc72bc50f673bae006c3ac92b6f3a5930a90b5c0fd913033a6c3a6b3a5d006c30a92b6f3a592b6b33aa14283068006a3bce3ac23ac9⟩, ⟨0x1870b2053028013f09f04e426812208804141de0eb073034c1980c205e82a814009904001a80b405402400a801e00e0048014006000, 0x2952a852f542dc1044f02dd3be63e7b36532de731df30451ab3156b0457044b152123ad1a8f03a923ab2b292d283a2d1ef81f1923b2103b3d0301770e610e692bc523fd17652a852f542dc11ef8044f02dd3be61f2023b23e7b36532de723ad3d03156b044b045731df3045152103a923ab17651fc5130313010fd90e4d3d0317650e5112df12e10e4b13e50e4f2b122aea18131bd916651be7003e36532de73639363117ff389b3b4f3b57044b03a9178102d540b938560e651dcd00fc0915074905ef030917c628d203a92ce739ff0f9f2d2801421d9c3b4f092f2f1503090915074905ef0f770e6515b4010103a92029202d07490f6603090e65091505ef0191285e2fef356b41b102332d28298d372f0a98350d280b0db33b4f2f152f170e650955091507491fd705ef092f00d70e7709551ce50e6005ef07490e6509150bd8271404f8261e29092fff33e22a6c2655300c35d53a7d2d9e14c92bc72bc50f673bae0b5c260c05ef074909150f670e650e6109ab07491523170f0309285e0e65091505ef03a90f66285e01872029202d019103a92ce739ff0f9f1523170f01421d9c3b4f0f772d2803090915074905ef0e65092f2f1500fd2d28092f28d30e6503090915074905ef28b928e50f7709f5092f0edd38d938c313d521662d282b292ce72a85110139ff0f9f3b4f2f1515230fd7170f092f10390f771d9c03090e650915014205ef074928d31ce2280b092f2f172f15298d1fd7372f2166350d0f9f1039014205ef074909150e610e651523170f0fd71ce128e4280b074905ef0915092f2f172f15298d0e610e691fd7372f2166350d28e40ee01d9c1ce60e690e650db30b5d31d31d9c2029202d1ce60e690e650db32fef285e372f0a162b292ce72a852bc71101280b39ff0f9f29433b4f2f152f1715230fd7170f10393a3b38d901420f771fd71d9c091503090e6528d3074905ef092f2a6c0f9f29433b4f2f152f172761260b30002439328115230fd7170f10393a3b0f7738d928d303090e65092f014205ef0749091532250ee5225425c625b51627104115b438d938e934f338c3092f09cd092f09cd0ee4⟩, ⟨0x1d70de06bc35419f0c9863c30a17a0b6858c2b214e0a304ec25c11a07c03a41b60be05982ac10a06002c813409004401c80a8020000, 0x915030928d30e653521074905ef0e610e690b5c09630a4d170f152310390fd7275f27693cb53c453c072a31294b27132fd90efb2d421fc52e95294b2de73b1735d527132fd9349d0efb2f1727ed2fa23cb53c453c0727f627e93bae28bd28bf0fd9130333aa3a592b6f30a9247600160b5c2a31245f09630efb0a4d170f152310390fd72d42097a3cc32b293aff20f80915030928d30e653521074905ef280b39ff0121324d09153cd7030928d30e6505ef3521074928fd32250f9f01421d9c3b4f15b4010103090915074905ef0e650f77091825c5156e2089074905ef03090e6509150f66154a0db31ce60e69030905ef074909150e650e610b5d0523202905ef03093b4f0e65095509150749202d0b5c3b4f05ef0749091503090e65095500fa095502d501870e65354103090915074905ef02950a9901873b4f00fc02d505ef20110955091503090e65074915230a982f542dc11ab3156b0457044b15211a8f03a920112002154b02dd044f02951ef81f19103b23b200a73be636533045154b20112002156b15212f54044f02dd280b05ef15231ef823b23d2f35413e41044b02953e2937290a0d0ee4091d0955091503090e6535210749012100a63d2f35411dcd3e41044b02953e2903090e650915074905ef37291dd9131e05ef095501873b4f00fc02d52011152303090e65091507490a982f15154b20112002156b045715212f541ef8044f02dd152323b23521280b39ff01213d2f35413e41044b029503090e650915074905ef37293e2917643521280b39ff030901210e65074905ef0915284128d309630b5c0efb2a310a4d23fd245f097a0e610e69044f02dd1f2023b231df30452a85154b11012bc72bc520112002156b045715211a8f03a93b2d1ab3275f2769294b2de727132fd92bc3349d2f1509630b5c0efb2a310a4d23fd01201ef8044f02dd1f2023b2365331df30452a85154b11012bc72bc520112002156b0457044b15211a8f03a93b2d1ab3303b275f2769319a294b2de727132fd93be62f543bae2bc32610348d30743a592f9f30a929212b6f248c28bd28bf0fd913033a6c3a6b3a592b6f30a93a5d33aa24762bc32ea6303b3ac933993cbd3c053c192a3028d339ff030928410e65074905ef0915280b134a01210a98095501872011091515233b4f02d500fc03090e6505ef07492f15092f0e770f410f7709f538d93cd73cc73afd28fd0e65156b1dcd0915074905ef030917c6044b25c52aad17fb103b0edd092f15930e720e610e69355401420a7e0f413e5d09f50edd3db9343323fd1fd70163092f0120⟩]))) ( (.branch 3 ( .leaf #[⟨0x6f03701b40d806b03501a40d006703301940c806303101840c005f02f01740b805b02d01640b005702b013c08e02f0120068016000, 0x2a270b8e0e2327150d35091c1fc10cef0a171fc20b6920ba1d381fc52a6e1bba31ce0b5c0bd00b54016401680b3c3b4e09543b4f05ef091507490e65030909553b4f05ef0749091503090e65095509ab156b0457152123ad23ab34be0915030928d30e653521074905ef2d4309630b5c0efb2a310a4d0e690e610fd710391fc31a57352735251a2110390fd718d50e690e61028d0e510915030928d30e653521074905ef2d4320f8012132ed05ef0a0d0ee4091d09552d430915030928d30e653521074937bf1fc2261e29092fff006d2dc13be62d9e2f542f9f2921260c⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1194368c0b901c730ee11592044a21921b660cbd044911841b8509d037390a0c0446118729ac0a2104ee29b32a8c1fc820f9351a2a28267434420456271232a4⟩, ⟨0x4301f80ec07203501900b805402000e006c02e0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x25c5156b03a9154a20df2127156b044e044e04f9044304ad04a1044e028d0100044f20df204b285e200500e0028d044f0100241f238f238d24052a3503650e552809245f23fd22130a6921f30121222c0a9e0e550365015d0e650e610aa90daa3a313a423a2b0c6a27600b8a27c1286e1cee1ced1c283798379700be00b1342a340e340d04ed⟩]) ( .leaf #[⟨0xa3051028413209404581f80f007503901b40d60570298134094047022010407603301800bc05c02a01400840300140058028010000, 0x23c31244028d238d1b69238f0e55036511e3008b028d0e55036511e3154a241f238f238d28092a3503650e55240523fd044f21681b69152f04431a410e510e55036523ab23ad0fd7028d0a99015c03650e55290601211edf1ecb1e801e7b1e831e681edf1ecb1e801e9312bd1fad1f84008b02b3028d2aa11dd702e725c615b4238f238d1b69152f044311e310390e5503650fd71e811f8525c615b4104100a61edf1ecb10ed12bd1e931e8021672aad0ffb12451085008a122e1212123110ed12bd12442aa11e8102b31dc51f85008b1edf1ecb1e9310ed12bd1ec91ec71e8321672aad02f0167a2bc4028d0fd72cec21681ce5015f0a99226d28fd2906222b03650e5525c520df2005044325ff152f0fd7354929071ce503650e55015d0a990e55036528fd2906222b226d0a69015c2bc611011244123123bf103923c10fd7028d1211122d⟩, ⟨0xba05902c015a0a8052027812e09204602180fc07903a01c00d406402e016c09c04a023011407803a018009c04802200b005001a000, 0x3650e5500d804ad0443152f0fd701212611260a0a69012100ca03650e5523fd2423012003650e5523fd04f71413145d03650e550fd7028d1413145d0fd70e550365028d10392a0400a62169010104f90e55028d0fd7036510391a4125c5156b1a8f1a8d1a9b03a91039028d0fd703650e551a41044304f91039028d0fd71f19147c1039028d0fd723c1008a1e81147f1f85008b1dd516030f9f1f1902b3107c028d03650e550fd710392168386b17fc16431523170f162720ab04f817462dc10e4b12e112df10390fd70e550e510e4f03650e35028d13f900622dc12da43be200622dc13be20048169a1619170f145d16431627152314131747169b16be169a2de7363134db16431523170f162720ab363917fc21690101208620df21711dda0f9f1dd916030e550365015d31fe2cc11b690e511039152f0fd703650e550443028d23ab23ad1a41129c007e044303650e550fd7028d103911e321681b69044323ad23ab00a70fd71039028d03650e55238f0e51⟩, ⟨0x240120090048024012009004802401200900480240120090046022010808003e01e00e807003401600a8050026012007001c00a000, 0xd902a70442044104ac04f701200115242323fd238d238f044f028d13f80e540364015f1413145d0e55036503650e55044300d804ad00eb012102d5044e1413145d0e5503650fd7⟩])))))))) def policySharedUnitFixed0Db (i : Nat) : List Int := if i < 0x2331 then policyFixedCompact0Db i else policyFixedClauseDatabase 16 policySharedUnitFixed0Clauses (i - 0x2331) def policySharedUnitFixed0HintLeaf0 : PackedNatTable.Table Nat := .leaf #[ 0x47fc8ff11fd003, 0x9091211002, 0x909a332002, 0x485c90b1211003, 0x92e925c002, 0x9311261002, 0x931a336002, 0x9321261002, 0x9351269002, 0x935a339002, 0x49c89389269003, 0x940127f002, 0x940a33c002, 0x4a14942127f003, 0x4a6094b9296003, 0x4a6c94d1296003 ] def policySharedUnitFixed0HintLeaf1 : PackedNatTable.Table Nat := .leaf #[ 0x96b12d5002, 0x4b8096f92de003, 0x4c40987930e003, 0x4cc0997932e003, 0x4ce499c1337003, 0x99d933a002, 0x99e2346002, 0x4cfc99f133a003, 0x9aba346002, 0x9ac2332002, 0x9ad1359002, 0x9ae935c002, 0x9b19337002, 0x9cc1397002, 0x9cca34e002, 0x9ce9397002 ] def policySharedUnitFixed0HintLeaf2 : PackedNatTable.Table Nat := .leaf #[ 0x9d593aa002, 0x9d62351002, 0x9db13aa002, 0x9dba353002, 0x9dd139a002, 0x9e093c0002, 0x9e12356002, 0x9e393c0002, 0x9e42358002, 0x9e7a356002, 0x50009ff932e003, 0x5090a119420003, 0xa151429002, 0xa16142b002, 0xa241447002, 0xa24a35f002 ] def policySharedUnitFixed0HintLeaf3 : PackedNatTable.Table Nat := .leaf #[ 0x512ca251447003, 0xa291451002, 0xa29a362002, 0x5158a2a9451003, 0xa2e1420002, 0x518ca311440003, 0x520ca411481003, 0x521ca431485003, 0xa4a1451002, 0xa4c9447002, 0xa5514a7002, 0xa55a36b002, 0x536ca6d14d9003, 0x5378a6e94dc003, 0xa841507002, 0xa84a36f002 ] def policySharedUnitFixed0HintLeaf4 : PackedNatTable.Table Nat := .leaf #[ 0xa87150d002, 0xa8794d9002, 0x548ca911521003, 0x54a0a939521003, 0xa98236f002, 0x54d0a999507003, 0xaa19542002, 0xaa22377002, 0xaa39542002, 0x5550aa99552003, 0xaab9552002, 0xaac237b002, 0xaac9552002, 0xab21563002, 0xab2a37e002, 0x55d0ab99572003 ] def policySharedUnitFixed0HintLeaf5 : PackedNatTable.Table Nat := .leaf #[ 0x55d8aba9572003, 0x5684ad0159f003, 0x572cae515c9003, 0xaee95dc002, 0xaef95c9002, 0xaf515e9002, 0xaf5a386002, 0x57b4af615e9003, 0x57c8af89563003, 0xafb11fd002, 0xafba38a002, 0xb011601002, 0xb051609002, 0xb061609002, 0xb0c1617002, 0xb0ca38f002 ] def policySharedUnitFixed0HintLeaf6 : PackedNatTable.Table Nat := .leaf #[ 0xb0e1617002, 0xb0ea391002, 0xb0fa38f002, 0x5894a9a94dc003, 0xb15962a002, 0x58c0b17962a003, 0x593cb271649003, 0x597cb2f165d003, 0xb31165d002, 0xb451689002, 0xb46168b002, 0x5a74b4e169b003, 0xb532339002, 0xb56168b002, 0xb56a39e002, 0xb5b16b5002 ] def policySharedUnitFixed0HintLeaf7 : PackedNatTable.Table Nat := .leaf #[ 0xb5ba3a0002, 0x5af0b5d96b5003, 0xb651601002, 0x5b48b6896d0003, 0xb7196e2002, 0xb7223a5002, 0x5bc4b7816ef003, 0xb8016ff002, 0xb80a3a8002, 0x5c14b8216ff003, 0x5ca0b939726003, 0x5d3cba7174d003, 0x5d88bb0975d003, 0x5e10bc19782003, 0x5e2cbc51789003, 0xbda97b4002 ] def policySharedUnitFixed0HintLeaf8 : PackedNatTable.Table Nat := .leaf #[ 0xbdc97b4002, 0xbdd23b1002, 0xbe017bf002, 0xbe0a3b3002, 0xbe217bf002, 0xbe2a3b5002, 0xbe323b3002, 0xbe597ca002, 0x5f40be797ca003, 0x5f50be996d0003, 0xbf097e0002, 0xbf123bb002, 0x60a4c141827003, 0x6194c321863003, 0xc4b1895002, 0xc4ba3bf002 ] def policySharedUnitFixed0HintLeaf9 : PackedNatTable.Table Nat := .leaf #[ 0xc4c2358002, 0x626cc4d1899003, 0x6328c6498c8003, 0xc6618c8002, 0xc66a3c4002, 0xc7118e1002, 0x63a0c7398e6003, 0xc7498e6002, 0x63d0c7998f2003, 0xc7e23c4002, 0x6408c809900003, 0x6420c839906003, 0x6474c8e191b003, 0xc8fa386002, 0xc9b9936002, 0xc9c23cf002 ] def policySharedUnitFixed0HintLeaf10 : PackedNatTable.Table Nat := .leaf #[ 0x6538ca6994c003, 0xca8994c002, 0xca923d2002, 0x65e4cbc1977003, 0x6610cc19982003, 0xcd499a8002, 0xcd6a3d2002, 0xcd899b0002, 0xcd923d8002, 0xcdba377002, 0x6748ce899d0003, 0xcec19d7002, 0x6774cee19d7003, 0xcf399e6002, 0xcf423de002, 0xd071a0d002 ] def policySharedUnitFixed0HintLeaf11 : PackedNatTable.Table Nat := .leaf #[ 0x688cd111a20003, 0xd1423a8002, 0x68acb52969b003, 0xd169a2c002, 0x6904d201a3f003, 0x690cd211a3f003, 0x697cd2f1a5d003, 0x69c4d381a6b003, 0xd391a6b002, 0x6a00d3f9a5d003, 0x6a60d4b9a93003, 0xd4f1a9d002, 0xd4fa3ec002, 0x6a84d501a9d003, 0xd589ab0002, 0x6aecd5d17b4003 ] def policySharedUnitFixed0HintLeaf12 : PackedNatTable.Table Nat := .leaf #[ 0x6afcd5f1782003, 0x6bccd791af1003, 0x6c58d8a9b14003, 0x6c64d8c1b17003, 0x6cf8d9e9b3c003, 0x6d20da39b46003, 0xdaa9b54002, 0xdae1b5b002, 0xdaea3f8002, 0xdb39b5e002, 0xdb41982002, 0xdb4a3fb002, 0xdb99990002, 0x6dd8dba9b74003, 0xdbe1b7b002, 0xdc19b74002 ] def policySharedUnitFixed0HintLeaf13 : PackedNatTable.Table Nat := .leaf #[ 0xdc22400002, 0x6e68dcc9b98003, 0x6e74dce1b98003, 0x6e94dd21af1003, 0x6ea8dd49ba8003, 0x6ebcdd71b14003, 0xdda9b46002, 0xddb2407002, 0xddf9bbe002, 0x6fdcdfb1bf5003, 0xdff9bfe002, 0xe00240b002, 0xe022351002, 0xe0a2336002, 0xe19a362002, 0x71e0e3b9c76003 ] def policySharedUnitFixed0HintLeaf14 : PackedNatTable.Table Nat := .leaf #[ 0x71ece3d1c79003, 0xe4aa40b002, 0xe4b23b1002, 0xe591cb1002, 0xe59a414002, 0x7320e639cc6003, 0x73d0e799cf2003, 0x73dce7b1cf5003, 0x7474e8e1d1b003, 0x7480e8f9d1e003, 0x749ce931d25003, 0xea8a3ec002, 0x75b0eb59d6a003, 0xebb1d75002, 0x75e4d4a1a93003, 0x7658eca9d94003 ] def policySharedUnitFixed0HintLeaf15 : PackedNatTable.Table Nat := .leaf #[ 0xed21da3002, 0xed2a421002, 0x76b0ed59daa003, 0x7704ee01dbf003, 0x7738ee69dcc003, 0xef82414002, 0x77ccef91cb1003, 0xefd23cf002, 0x77f0efd9cc6003, 0xf061e0b002, 0x7844f081e0f003, 0xf0d1e19002, 0x7890f119e22003, 0x78fcf1f1e37003, 0x7948f289e4f003, 0x7974f2e1e5b003 ] def policySharedUnitFixed0HintLeaf16 : PackedNatTable.Table Nat := .leaf #[ 0x79b0f359e6a003, 0x79f4f3e1e7b003, 0x7a60f4b9e96003, 0xf5823b8002, 0xf5aa38d002, 0x7af4f5e1bfe003, 0xf601ebf002, 0xf61a3dc002, 0xf62a3b5002, 0xf651b85002, 0x7b38f669609003, 0x7b4cf691789003, 0xf6da395002, 0x7ba0f739ee6003, 0x7bc4f781ee6003, 0x7bf0f7d9d5c003 ] def policySharedUnitFixed0HintLeaf17 : PackedNatTable.Table Nat := .leaf #[ 0x7c00f7f9b17003, 0xf85a391002, 0xf881f0f002, 0xf899f12002, 0xf8ea33c002, 0x7c84bf917e0003, 0xf9123bb002, 0xf91965d002, 0xf949ea2002, 0xf952449002, 0x7cd0f999f32003, 0xfa1a3a5002, 0x7d20fa39f44003, 0x7e40fc79f8e003, 0x7e80fcf9f9e003, 0x7eccfd91fb1003 ] def policySharedUnitFixed0HintLeaf18 : PackedNatTable.Table Nat := .leaf #[ 0x7f0cfe11977003, 0xfe2997b002, 0xfe41b72002, 0xfe4a399002, 0xfed1fd9002, 0xfee1fdb002, 0xffd237b002, 0x7ff0ffd9cd8003, 0x805d00b2015003, 0x808d0112021003, 0x80b1015a02a003, 0x101823d8002, 0x80dd01b13f0003, 0x101e23fb002, 0x80fd01f1e6f003, 0x10279e0a002 ] def policySharedUnitFixed0HintLeaf19 : PackedNatTable.Table Nat := .leaf #[ 0x816d02d2059003, 0x82150421e0f003, 0x823d0471e0b003, 0x824d026a04c003, 0x10569b85002, 0x830d0611d4a003, 0x1065a34e002, 0x8349068a071003, 0x836d06d1dd3003, 0x8378f281e4f003, 0x83a50741d3a003, 0x83c10779de1003, 0x1093a353002, 0x109820f2002, 0x8534f381e6f003, 0x10ab2400002 ] def policySharedUnitFixed0HintLeaf20 : PackedNatTable.Table Nat := .leaf #[ 0x85a50b41fbc003, 0x85cd0b91542003, 0x10bd235f002, 0x86150c2217f003, 0x10d3217f002, 0x10d5a17f002, 0x10d7236b002, 0x10d8238c002, 0x86d50da1fd1003, 0x86e90dca1b8003, 0x871d0e321c5003, 0x87850f021df003, 0x87c50f81f9e003, 0x88251042207003, 0x884110799d0003, 0x112da02a002 ] def policySharedUnitFixed0HintLeaf21 : PackedNatTable.Table Nat := .leaf #[ 0x1165199a002, 0x116b2421002, 0x8c2d1852309003, 0x8c98b999732003, 0x3648ea91d6003, 0x39c8ee91dc003, 0x4108f411e9003, 0x1203023e48049001202005, 0x4ec9109222003, 0x5809241249003, 0xb2124c002, 0x5bc92b9258003, 0x6309399274003, 0xc81277002, 0x70095112a3003, 0xe392a4002 ] def policySharedUnitFixed0HintLeaf22 : PackedNatTable.Table Nat := .leaf #[ 0x74495612ad003, 0x74c95712af003, 0x79895992b2003, 0x7a895b92b6003, 0x4ae524a12b8003, 0x7b095e92be003, 0x83497112e3003, 0x8a09811303003, 0x8d09849308003, 0xa789c31387003, 0xb549dc13b9003, 0xbf09ed93dc003, 0xc489f213e3003, 0xc5c9f393e6003, 0x13f806464fd89fa93f7005, 0xd18a0c941a003 ] def policySharedUnitFixed0HintLeaf23 : PackedNatTable.Table Nat := .leaf #[ 0xda0a181431003, 0xde8a1f143f003, 0xe50a2c1459003, 0xf40a44948a003, 0xfd4a5814b1003, 0x1078a6b14d7003, 0x43b087253b0a7814ee29da53bca7914f1009, 0x1110a7a14f5003, 0x1190a8b1517003, 0x1268aa7154f003, 0x1454ae295c6003, 0x15d70a445754aea15d6005, 0x14d4af295e4003, 0x14e8af415e7003, 0x1500af715ef003, 0x1598b099614003 ] def policySharedUnitFixed0HintLeaf24 : PackedNatTable.Table Nat := .leaf #[ 0x160cb131627003, 0x1694b221645003, 0x17e4b4b1697003, 0x18b8b6716cf003, 0x16d80c665b58b6a96d7005, 0x1968b7d96fc003, 0x17210cf85c7cb8f1720005, 0x1a68b9e173b003, 0x1a80b9f973e003, 0x1ad8bab1757003, 0x1bb0bc39788003, 0x1bdcbc99794003, 0x1c84bdd97bc003, 0x1eb4c241847003, 0x1edcc25984a003, 0x1f70c391873003 ] def policySharedUnitFixed0HintLeaf25 : PackedNatTable.Table Nat := .leaf #[ 0x1f84c3a9876003, 0x213cc6798d0003, 0x21c4c7718ef003, 0x4449905002, 0x227cc901921003, 0x2340ca41947003, 0x2454cc01981003, 0x2488cc6198d003, 0x2530cdd99bc003, 0x19c712aa6714ce219c6005, 0x2574ce719cf003, 0x258cce999d4003, 0x26e4d121a25003, 0x274cd1d1a3b003, 0x27a0d2a1a55003, 0x27e0d2c1a57003 ] def policySharedUnitFixed0HintLeaf26 : PackedNatTable.Table Nat := .leaf #[ 0x27f8d2d9a5a003, 0x1a7a142c69e0d3b9a79005, 0x28a8d479a90003, 0x2920d561aad003, 0x29a8d659acc003, 0x29ccd6a1ad3003, 0x29f8d6b9ad6003, 0x2a64d731ae7003, 0x2a90d779af0003, 0x2aa8d7a1af5003, 0x2b1cd879b10003, 0x2becda59b4c003, 0x2c44db51b6b003, 0x2d20dcf1b9f003, 0x2da0ddc9bba003, 0x2db8dde1bbd003 ] def policySharedUnitFixed0HintLeaf27 : PackedNatTable.Table Nat := .leaf #[ 0x2e2cded1bdb003, 0x2eacdf99bf4003, 0x2fd4e251c49003, 0x3074e3a1c75003, 0x3090e3e1c7d003, 0x315ce571caf003, 0x31b0e5e9cbe003, 0x3204e689cd2003, 0x3214e6a1cd3003, 0x3244e6b9cd6003, 0x32a4e781cf1003, 0x32d0e7d1cfb003, 0x32dce7e9cfe003, 0x3334e8a9d16003, 0x3348e8c1d19003, 0x3370e919d24003 ] def policySharedUnitFixed0HintLeaf28 : PackedNatTable.Table Nat := .leaf #[ 0x3450ead1d5b003, 0x3504ec59d8a003, 0x3580ed39da8003, 0x35c8edd1dbb003, 0x35ecee31dc7003, 0x35fcee49dca003, 0x3674ef41de9003, 0x38c8f3c9e7a003, 0x392cf4a1e95003, 0x3948f4d9e9c003, 0x3968f501ea1003, 0x397cf529ea6003, 0x39c8f5c1eb9003, 0x39f8f631ec7003, 0x3a40f6f9ee0003, 0x3a5cf719ee4003 ] def policySharedUnitFixed0HintLeaf29 : PackedNatTable.Table Nat := .leaf #[ 0x3bc0fa59f4c003, 0x3dbcfe79fd0003, 0x3f5502aa056003, 0x3ffd0482091003, 0x413d07ba0f8003, 0x42550b7a170003, 0x43610eea1de003, 0x4489130a262003, 0x5500ab015246948d491a7234c46a08d591aa00a, 0xac016002bc05711ad235c46bc8d891b0009, 0x16202cc8d991b4004, 0xb5017202e005b91b7237046e48dd91ba009, 0xba017c02f405e11bd237c46fc8e091c0009, 0x17e03048e191c4004, 0x18603148e391c8004, 0xce01a4034406811ce239e47408e911d1009 ] def policySharedUnitFixed0HintLeaf30 : PackedNatTable.Table Nat := .leaf #[ 0x7c00f901ee47808f211e223c2478c8f311e500a, 0x81a487002, 0x47008e91f823f847e88fc91fb007, 0x484092012324124828906120b007, 0x26404d090d121b004, 0x27804f89121225004, 0x15202ac05540aa12412484490c9229244009, 0xafa48a002, 0x2ca059c927124f004, 0x16902da05b00b5925224a6495092b1255009, 0xc5a48d002, 0x6440ca019324f249e893e127b007, 0x36c06e094e929e004, 0xe7a491002, 0x838108821025ca4b9897412e7007, 0x424085097512eb004 ] def policySharedUnitFixed0HintLeaf31 : PackedNatTable.Table Nat := .leaf #[ 0x85410c021725da4bb897812ef007, 0x95012a932726564ca4994132a007, 0x4ae0960996132d004, 0x4ee09e49aa1355004, 0x14ea49a002, 0x2a2054c0a94152138b27184e349c7938e009, 0x54e0aa49c89392004, 0x56a0adc9d013a1004, 0x2c9059a0b3016593af27604ec49d993b2009, 0x16a249b002, 0x2e405d00b9c17313ca27964f309e713cd009, 0x17a82f605e84f4c9eb93d527a84f589ec93d800a, 0x17da49c002, 0xc1c18413de27c44f809ef93e1007, 0x32b065e0cb8196940328085014a039406009, 0x1b3a4a1002 ] def policySharedUnitFixed0HintLeaf32 : PackedNatTable.Table Nat := .leaf #[ 0x3b407700edc1db146e28de51c0a391471009, 0x1e724a4002, 0x3fa07fc0ff41fe14b6296e52e0a5d14b9009, 0x10002018402297a52f8a6014bf007, 0x104c20b0415299e5340a6914d1007, 0x20ea4a6002, 0x21d24a7002, 0x221a4a8002, 0x113822884502a005404a819502007, 0x231a4a9002, 0x11d423c04772a5454aca96952c007, 0x11fc24104812a6e54e0a9d1539007, 0x90c1220a9f153f004, 0x9261254aa5954c004, 0x24c24aa002, 0x95812b8aaf9560004 ] def policySharedUnitFixed0HintLeaf33 : PackedNatTable.Table Nat := .leaf #[ 0x4cc09a0133c267157d2afc55fcac09580009, 0x9a2134cac19584004, 0x4dc09c0137c26f158b2b185634ac7958e009, 0x9c2138cac89592004, 0x4e509d213a027395952b2c565cacc9598009, 0x9d613b4acd959c004, 0x4f309ee13d827a95a32b485694ad395a6009, 0x9fa13fcad795b0004, 0xa02140cad995b4004, 0xa101428add15bb004, 0x28785100a1c56f4ae095bf2b7c5700ae195c200a, 0x148029095cf2ba65744ae815d2007, 0xa9a153caff15ff004, 0xabe1584b079610004, 0x2b224b0002, 0xaec15e0b111623004 ] def policySharedUnitFixed0HintLeaf34 : PackedNatTable.Table Nat := .leaf #[ 0x2c124b1002, 0xb1e1644b1a9636004, 0xb7616f4b2c965a004, 0x171c2e505c92cca5998b341667007, 0xb961734b35166b004, 0x5cf0ba617482e8966d2cdc59bcb389670009, 0x5d40bb0175c2eb16732ce859d4b3b9676009, 0xbb2176cb3c967a004, 0x5dd0bc217802ef967d2cfc59fcb409680009, 0x2fc24b3002, 0xc6c18e0b6f16df004, 0xd441a90ba29746004, 0xd4c1aa0ba4974a004, 0x1b88371977d2f025dfcbbf1780007, 0x37aa4bc002, 0xe2c1c60bd897b2004 ] def policySharedUnitFixed0HintLeaf35 : PackedNatTable.Table Nat := .leaf #[ 0x1d343a8074f2fca5f98bf417e7007, 0xea21d4cbf517eb004, 0xeb01d68bf717ef004, 0xecc1da0bfe17fd004, 0x76a0edc1db43b6180030026008c021803009, 0x76f0ee61dc83b89806300e6020c051809009, 0x1df03bf877e302a6058c0c1817007, 0x1e0c3c30785303a6078c10181f007, 0xf121e2cc119824004, 0xf221e4cc15982c004, 0x7940f301e5c3cb182e305e60c0c191831009, 0xf421e8cc1e983e004, 0x7ba0f7c1ef43de184e309e6140c291851009, 0x1f383e7985c30c06178c2e985f007, 0xfa21f48c309862004, 0xfe21fccc401881004 ] def policySharedUnitFixed0HintLeaf36 : PackedNatTable.Table Nat := .leaf #[ 0x7f50ff21fe03fb9884310a6218c441887009, 0x7fa0ffc1ff43fe188a31166230c47188d009, 0x80a101c2034406189e313e6280c5118a1009, 0x80f1026204840898a4314a6298c5418a7009, 0x207840f98ab315e62b4c5618ae007, 0x10422088c5818b1004, 0x2140429885231a4634cc6a98d4007, 0x437a4c3002, 0x10ee21e0c7a98f6004, 0x21f443f18f731f663e4c7c18fa007, 0x111c223cc85190b004, 0x225444c089732266450c8b1915007, 0x8bd1182230045f993c327a64f8ca0193f009, 0x23344671942328c6510ca19945007, 0x23bc478195f32c66584cb01962007, 0x11e423cccb21965004 ] def policySharedUnitFixed0HintLeaf37 : PackedNatTable.Table Nat := .leaf #[ 0x11ea23d8cb31967004, 0x11f223eccb5196b004, 0x8fe12042404480197032e265c8cba1973009, 0x489a4c7002, 0x495092b12526648ccb199433266654ccc199700a, 0x12da25bccf019e1004, 0x12f225eccf519eb004, 0x26244c6098b33f467eccfe99fc007, 0x26ac4d61a1634346860d0b9a19007, 0x140e2824d339a68004, 0x5318a6414c46b08d631ac435866b14d641ac700a, 0x534a4d5002, 0x14da29bcd679ad0004, 0x2a185439ad835b86b68d6c9adb007, 0xa8a151c2a345461adf35c06b84d719ae2009, 0x54c24d8002 ] def policySharedUnitFixed0HintLeaf38 : PackedNatTable.Table Nat := .leaf #[ 0x2a6854e8a9c35d26ba8d761aeb007, 0x554a4da002, 0x2aac5570aad35ee6be0d7d1af9007, 0xaaf15662ac85589afc35fa6bf8d801aff009, 0xab415702adc55b1b0236066c10d831b05009, 0x15722aecd841b09004, 0x562a4db002, 0xad115aa2b505699b1d363c6c7cd909b20009, 0x56f0adf15ba6ca0d961b2a36526cacd971b2d00a, 0x15ca2b9cd9c9b3a004, 0x2bc45791b41368a6d0cda11b44007, 0x57d24dc002, 0x166e2ce4dca1b95004, 0xb7516f22de05bb9bc6378e6f20de51bc9009, 0x16f42df0de61bcd004, 0x16fa2dfcde79bd0004 ] def policySharedUnitFixed0HintLeaf39 : PackedNatTable.Table Nat := .leaf #[ 0xb81170a2e105c19bd337a86f54deb9bd6009, 0x5c4a4e1002, 0x17222e48def9be0004, 0x2e805d18ba237dc6fbcdf89bf0007, 0x17c42f90e1e1c3d004, 0x6008c021800713ce299c5138a07148e2a9c5400a, 0x18183038e311c63004, 0x184a309ce3f9c80004, 0xc28185830ac6151c8239067210e431c85009, 0x185a30bce441c89004, 0xc31186a30d06199c8c391a7238e481c8f009, 0xc43188e31186229ca239467290e531ca5009, 0x62b24e6002, 0x31906329cb6397472e0e5b9cb9007, 0x18ce31a0e5d9cbc004, 0x635a4e7002 ] def policySharedUnitFixed0HintLeaf40 : PackedNatTable.Table Nat := .leaf #[ 0x31b46380c6f39807304e619cc2007, 0xc7618f431e463c1cca39967330e671ccd009, 0x64f0c9f193a7374e709cdf39bc7380e719ce200a, 0xcbb197e32f865e9d043a0a7418e841d07009, 0xcc01988330c6611d0a3a167430e871d0d009, 0x198a331ce881d11004, 0x66824ef002, 0x33786708ce03a5274a8e961d2b007, 0x33946740ce73a6274c8e9a1d33007, 0x33f467f1d433a8e7514ea21d46007, 0x1a003404ea41d49004, 0x68924f1002, 0x1a3c3480eb39d68004, 0x34e069d8d3a3b087614ec39d86007, 0x35086a28d443b1a7638ec81d8f007, 0x6afa4f3002 ] def policySharedUnitFixed0HintLeaf41 : PackedNatTable.Table Nat := .leaf #[ 0x1ae635d4ede9dbe004, 0x36446c91dda3bbc7770eed9ddd007, 0x1b283654eef9de0004, 0x6dc8dba1b707804f029e033c047810f039e0600a, 0x1b943730f0b9e18004, 0x1c1c3840f2c1e59004, 0x71824f8002, 0x390c7230e453d1c7a3cf489e90007, 0x72824fa002, 0x39807318e623d507aa4f559eaa007, 0x74b2500002, 0x3a6c74f0e9d3dd47bacf769eec007, 0x1da63b54f979f30004, 0x3cc87999f993f3a7e6cfcd1f9c007, 0x3d0c7a21fa83f587ea8fd49fab007, 0x1e923d28fd79fb0004 ] def policySharedUnitFixed0HintLeaf42 : PackedNatTable.Table Nat := .leaf #[ 0x7bf8f801efc7f90ff41fe63fca7f9cff51fe900a, 0x7ce0f9d1f3680110042006400a801d005200900a, 0xfa41f503e9c7d320194034806d00ea01c009, 0x3fa87f5a06c40e081b9036a06f007, 0x201c403d05520ab004, 0x82c905a20b08421086210a4212842d087210d00a, 0x20b84175087a110004, 0x20c0418908c2119004, 0x211642350b22165004, 0x434086990d243ae87610ed21d9007, 0x87610ed21d687d90fd21f843ee87e50fe21fb00a, 0x88091022200888d113a22544488899114a22800a, 0x88a1115222689111242246448a891d125224900a, 0x8931127224a89a5136a26b44d489b1137a26e00a, 0x225044b0895912a44e289c913b227444e689d513c227700c, 0x8999134226489f1140227e44fa89fd141228100a ] def policySharedUnitFixed0HintLeaf43 : PackedNatTable.Table Nat := .leaf #[ 0x45148a3229445308a5914aa297007, 0x2298453915222a5004, 0x22a6455515622ad004, 0x117422f045dc8bb22f245e68bd117b22f5009, 0x117922fa45f08bda2f845f28be917e22fb009, 0x8c79190231c8c5518ca317462c8c6118da31a00a, 0x2b528511ac003, 0xb3928513b4003, 0x2c928591b2003, 0x2d128591b5003, 0x2d928611b6003, 0x1e05286181a003, 0x2ed28691bc003, 0x1e09286981b003, 0x30128711c2003, 0x30928711c5003 ] def policySharedUnitFixed0HintLeaf44 : PackedNatTable.Table Nat := .leaf #[ 0x31128791c6003, 0x1e212879821003, 0x10f021c044408811ed23dc47c08f791ec009, 0x1130224045408a11f223e647d48fa11f1009, 0x2f205e39244178f004, 0x48928a1208003, 0x66928a1282003, 0x4cd28a9219003, 0x4d528a921c003, 0x136244004e090f121f005, 0x4f528b1223003, 0xffd28b14bb003, 0xa281442456051c0a40146245848c0917122d245e48c8918922a00e, 0xa50149029648d091a9233006, 0x54d28b9240003, 0x178928b9682003 ] def policySharedUnitFixed0HintLeaf45 : PackedNatTable.Table Nat := .leaf #[ 0x59928c924d003, 0x5a128c9250003, 0x5a928d1251003, 0xfe528d14b4003, 0x64928e1278003, 0x65d28e127e003, 0x7f00f881f403e607c896012c125844b1096192d000b, 0x83d28f92e4003, 0x84d29012e9003, 0x8992901300003, 0x85929092ec003, 0x2e7d2909bec003, 0x2230444089411212fc25fa4bfc97f12fb009, 0x23b047408f411e131226264c5498a1311009, 0x91c123024a04920920990132126444c90991931f00b, 0x9e12921353003 ] def policySharedUnitFixed0HintLeaf46 : PackedNatTable.Table Nat := .leaf #[ 0x28126ce0a0c9b29366005, 0x145028926da0a30146828b26dc4dc89b8136f26e24dd09b9936c00e, 0x147828e05204dd89bb9375006, 0xa8d293138a003, 0x114d2931505003, 0xaa12939390003, 0xc6129393e8003, 0xad9294139f003, 0xae129413a2003, 0xb2929493ae003, 0x119d294951a003, 0xb9529593c9003, 0x1fc1295987e003, 0x31a06320c7018d93ea27d64fb49f613e9009, 0xcb12979402003, 0xcdd2979414003 ] def policySharedUnitFixed0HintLeaf47 : PackedNatTable.Table Nat := .leaf #[ 0x33206660cd0a05140e2818502ca069409009, 0xed5298946d003, 0xeed2989475003, 0xfed29994b5003, 0x17c12999693003, 0x100529a14bc003, 0x200529a1891003, 0x105129a94ce003, 0x188529a96c5003, 0x1128224844d0898112ca7d14fb29f853f8a7e94f900b, 0x113d29c94ff003, 0x114929c9504003, 0x11a4234046c08d611a8a8e151d2a3c5480a8f951b00b, 0x11d929d9529003, 0x20a529d98b6003, 0x120129e1536003 ] def policySharedUnitFixed0HintLeaf48 : PackedNatTable.Table Nat := .leaf #[ 0x121529e153c003, 0x125129f154a003, 0x1d2129f17df003, 0x4c4096612d425a15662ace55a4ab41577009, 0x541096c12e025b956a2ad655b4ab615f0009, 0x13352a0957c003, 0x1e6d2a09835003, 0x13492a11582003, 0x13512a11585003, 0x13752a1958a003, 0x14112a195b5003, 0x13892a21590003, 0x13912a21593003, 0x13992a29594003, 0x14152a295b6003, 0x13d12a395a2003 ] def policySharedUnitFixed0HintLeaf49 : PackedNatTable.Table Nat := .leaf #[ 0x13f12a395ad003, 0x141c27c04fb09f413e4ad415a92b5456b0ad595b800b, 0x13f92a415ae003, 0x14012a415b1003, 0x14092a495b2003, 0x14192a495b7003, 0x14252a515b9003, 0x144d2a515c4003, 0x54a0a9215302a595f92bf457f0afd95f8009, 0x15392a695fd003, 0x1e012a69819003, 0x15dd2a81621003, 0x28112a81a63003, 0x16412a91634003, 0x1ac12a91753003, 0x17212aa1664003 ] def policySharedUnitFixed0HintLeaf50 : PackedNatTable.Table Nat := .leaf #[ 0x354d2aa1d9d003, 0x17312aa9669003, 0x186d2aa96be003, 0x17412ab166c003, 0x18712ab16bf003, 0x17552ab9672003, 0x18692ab96bd003, 0x17692ac1678003, 0x17712ac167b003, 0x17792ac967c003, 0x18812ac96c4003, 0x180430006040c061808b5016a12d445a90b51969f00b, 0x183c30706120c221840b5796b02d625accb5916ae00b, 0x32906510ca65bdcb7c16f6006, 0x2e585ca925b972b004, 0x1a8d2ae1744003 ] def policySharedUnitFixed0HintLeaf51 : PackedNatTable.Table Nat := .leaf #[ 0x2f692ae1c31003, 0x73d0e781cfc39f17d62fae5f64bec17d5009, 0x1d392b097e4003, 0x1d752b097f3003, 0x1d492b117e9003, 0x1d792b117f4003, 0x1d9d2b217fb003, 0x1da52b217fe003, 0x1dad2b297ff003, 0x2c4d2b29b6d003, 0x1dc12b31805003, 0x1ded2b31813003, 0x7770eec1de43bc180f30206048c08980e009, 0x1df52b39814003, 0x27692b39a45003, 0x1e112b4181c003 ] def policySharedUnitFixed0HintLeaf52 : PackedNatTable.Table Nat := .leaf #[ 0x24dd2b419a5003, 0x1e492b5182a003, 0x1e652b51833003, 0x1e552b5982d003, 0x1e692b59834003, 0x1e892b6183c003, 0x39992b61eae003, 0x1eed2b6984d003, 0x3c792b69f83003, 0x1f003df87c30f841f04c2a185530ac6160c2b985300b, 0x1fc92b8187f003, 0x1fd12b81882003, 0x1fd92b89883003, 0x20092b89892003, 0x1fed2b91889003, 0x200d2b91893003 ] def policySharedUnitFixed0HintLeaf53 : PackedNatTable.Table Nat := .leaf #[ 0x202d2b9989d003, 0x2c812b99b7d003, 0x20412ba18a3003, 0x2c852ba1b7e003, 0x226841b0839107020dcc5e98be317e6304c60191800b, 0x20ec41d083e107a20f0c6198c4318a631cc6318c200b, 0x21452bb98d1003, 0x27652bb9a44003, 0x22592be1912003, 0x3a312be1edd003, 0x22f92be993b003, 0x245d2be9985003, 0x8e311c82394cab995b32b26560cad1956009, 0x23e92c11969003, 0x23f52c1196c003, 0x23fd2c1996f003 ] def policySharedUnitFixed0HintLeaf54 : PackedNatTable.Table Nat := .leaf #[ 0x24792c1998a003, 0x94e129a25404a799be337e6704ce019bd009, 0x3394672126519c9004, 0x25b92c319df003, 0x342d2c31d55003, 0x26292c419f9003, 0x2cd92c41b92003, 0x9e113c0278c4f11a4f34a06948d289a4e009, 0x29b92c69ace003, 0x2c492c69b6c003, 0x2a2d2c79ade003, 0x34a52c79d73003, 0x2a6d2c89ae8003, 0x2d692c89bb0003, 0x2ab12c99af6003, 0x34552c99d5d003 ] def policySharedUnitFixed0HintLeaf55 : PackedNatTable.Table Nat := .leaf #[ 0x2ac12ca1afb003, 0x2b252ca1b12003, 0x2ad52ca9b01003, 0x2b212ca9b11003, 0x2ae92cb1b07003, 0x2af12cb1b0a003, 0x2b492cc1b1c003, 0x2b5d2cc1b24003, 0x5708ae015c82b8c5711b3036626cd4d999b3236686cdcd9b1b2f00e, 0x2b992cd1b38003, 0x2ba12cd1b3b003, 0xb3316642cd459a1b8e371e6e44dc81b8d009, 0x2ce12ce9b93003, 0x2dcd2ce9bc4003, 0x2dd92cf1bc5003, 0x2e652cf1be7003 ] def policySharedUnitFixed0HintLeaf56 : PackedNatTable.Table Nat := .leaf #[ 0x2ded2cf9bcb003, 0x2e612cf9be6003, 0x2df92d01bce003, 0x2e012d01bd1003, 0x2e092d09bd2003, 0x2e5d2d09be5003, 0x2e852d21bed003, 0x2ebd2d21bfc003, 0x2f8d2d29c3b003, 0x6020c03180e30186029c5738b07170e2d1c5938b67178e2e9c5600e, 0x30992d41c7e003, 0x30e52d41c93003, 0x30a52d49c81003, 0x30dd2d49c91003, 0x30b92d51c87003, 0x30c12d51c8a003 ] def policySharedUnitFixed0HintLeaf57 : PackedNatTable.Table Nat := .leaf #[ 0x30c92d59c8b003, 0x30e12d59c92003, 0x31112d61ca1003, 0x36812d61ded003, 0x31b92d89cbf003, 0x36b92d89df8003, 0x31dd2d91cc9003, 0x6508ca01948328c6511ce539cc73a8e741ce739d273b0e759ce400e, 0xced197032e865c9cff3a007408e809d37009, 0x32f12da1d03003, 0x33ad2da1d35003, 0x33052da9d09003, 0x33b12da9d36003, 0x33192db1d0f003, 0x33212db1d12003, 0x337d2dc1d28003 ] def policySharedUnitFixed0HintLeaf58 : PackedNatTable.Table Nat := .leaf #[ 0x33912dc1d2f003, 0x33992dc9d30003, 0x33bd2dc9d39003, 0x33c86788cf519e833cce9f1d3f3a807508ea09d3d00b, 0x340c6810d061a0a3410ea61d4d3a9c7540ea79d4b00b, 0x345c68b0d1a1a323460eaf9d603ac2758ceb11d5e00b, 0x347d2de9d66003, 0x34892de9d69003, 0x34e52df1d83003, 0x35992df9db1003, 0x35d12e09dbc003, 0x36012e09dcb003, 0x10341aee35e46bc1dc23b867714ee220d7009, 0x10071b0636146c21dcf3ba07748ee8a0a3009, 0x361c6c30d8a1b123620eea9dd63bae7764eec1dd400b, 0x365c6cb0d9a1b323660ef19de43bca779cef31de200b ] def policySharedUnitFixed0HintLeaf59 : PackedNatTable.Table Nat := .leaf #[ 0x37406e78dd31ba43744f0e9e1e3c3e7884f101e1c00b, 0x37cc6f90df61bea37d0f219e443c8a791cf231e4200b, 0x39112e41e8d003, 0x394d2e41e9d003, 0x39852e51ea7003, 0x39952e51ead003, 0x3a712e61ee9003, 0x44312e6223a003, 0x3b512e69f2e003, 0x3b592e69f31003, 0xee01dbe3b887709f3d3e7c7d00f9f9f3c009, 0x438c79a8f381e6e3cd8fd09fa23f467e94fd221f200b, 0x3d347a60f501e9e3d38fda9fb63f6e7ee4fdc1fb400b, 0x3e0c7c10f861f0a3e10ff79ff03fe27fccff91fee00b, 0x7cf8f9e1f443e847d0200c401a8045007a00e4020804d009200b00e, 0x3f087e08fc51f883f0d020a04240868115022204000b ] def policySharedUnitFixed0HintLeaf60 : PackedNatTable.Table Nat := .leaf #[ 0x4144828105420a6414907d20fb41f883f907ea0f900b, 0x4190831906720cc419508da11c423a847d08f211a00b, 0x443d2ed223f003, 0x87790ee21e443c487821fe43fe880d100a2004404881510221fd00e, 0x8821103220e4418882a22b445888c1117222d445e88c9118a22a00e, 0x88b91162234446488c224d449c8949128224f44a28951129a24c00e, 0x89b1135227244e089ba284450a8a25143a28645108a2d145228300e, 0x8a41147229645288a4a29a45368a7d14ea29c453c8a85150229900e, 0x1150229e45488a8a2a745508aa9154a2a6009, 0x45512f1a2ab003, 0x45592f1a2ae003, 0x8c91191232a46508c9a31d463c8c89190231f46428c91191a31c00e, 0x1207240c48112441205005, 0xbc8a5f5002, 0x4dd2fd121d003, 0x9c92fd134c003 ] def policySharedUnitFixed0HintLeaf61 : PackedNatTable.Table Nat := .leaf #[ 0x146425784ae924a92bb005, 0x131b26344c6124a9319005, 0xa093089364003, 0xa59308937e003, 0x20b927f64fe524f93fa005, 0x14e429c6538524f94e2005, 0x15db2bb4576125615d9005, 0x1931326064b9256192f005, 0x23122db65b6525a96da005, 0x22c72e865d0525a9742005, 0x111a265f002, 0x10702693002, 0x1aab35546aa12651aa9005, 0x1a7e34fa69ed2691a7c005, 0x1a88350e6a152691a86005, 0x206b40d481a0ed80d653b5c76b4ed7a069009 ] def policySharedUnitFixed0HintLeaf62 : PackedNatTable.Table Nat := .leaf #[ 0x38c07200e492a525524a9c95312a8038a024c04d249000c, 0x7b00f641ed148c29205238a46948f07ae026404da49000c, 0x33028229884a08140f005, 0x10c0437c9a350dea1bc005, 0x7e00fb92cf03f207e80fd92c825984b2896492cb258e4b3896692c600f, 0xcc53899408003, 0xce13899415003, 0x9f923f028205080a8923c4dfe97f52ff014d029805400a7814e246e48e091c923b247448d80a192282452489c91f123d01a, 0x1421382050c0a1c14b937f4c24984c1490291052a0a50149937926f44dec9be937c26f09c10144136a26d64da49c0938001a, 0x50138c1226003, 0x9c538c134b003, 0xa1538c9368003, 0x200138c9890003, 0x4400807b50f6c92fc3d707b0233e1ecc3d58f6d23401ec8c249fce00f, 0x146100020e781d282080414082410392dc46844b74113822b074c0e8498224984c1498381a803a407380e8c1cd03a2019, 0x11b023904700754986a343046e51940e901d404840968122824404864cc4126024b04b20934129826a065009a0134934300029c5413381d800ee4d09307934446b64d149932344264a4c78999131d03ae075803c12b049249835305130c032 ] def policySharedUnitFixed0HintLeaf63 : PackedNatTable.Table Nat := .leaf #[ 0xed807a045e08cd24c81de03ba0765390037506e80dec1bc037706ec0260001943d28845104a20143c047e08f8120824003ca4c5d381131603c2078d24992b1022, 0x518400081e803ce519d24a12b828cc07a495a92b44c1498381cc83a8074e0e601bca7214944517d1b31460017, 0x1a98352069a0d30a0f039728bc00041c8834b06a80d241ca945a46b85075251839628b65088a109420016, 0x205f233299cc5f5119b1a14465ceaa26951a9c46687ed919800d, 0x45288a4114422a045399221146648cc93992532486498c94992800e, 0x15d02b9856f2c3415c4b1005630ace15a02ba85690ad458591c99615496015acb0da392013, 0x2b62726002, 0x2c305880b0e1610b14162c472a58cc000857d0b1c95442bf858b0b1816242c5162d472c58b8b191629016, 0x28e051b0a461474ae727072b9898c825d04b9098612f825e84bc008c0004ab7a3812adc98d132415cd016, 0x3da8000408080fc490e05e00bd017902ec040092fa33724c098592fe2630010, 0x5c00c1018303000604937926c24dc49b40b8817b02e405cc0ba125b02b67b50000810501e803d807a80fd4a22477c8f526164bf898c092d126624ca8cd40baa72a0210041c02991eb1d061b9437686e80dd492ecbc323af3d9e038006f812001c20390071006300be92188eda6fd23b4497919c125903f, 0x894a2794c12985130c26194ca699ed33e267d4cfe3e38ffea6e94dd4446d12f8001223889592efa270016, 0x3e4c7c920241f2a80047d2a0181f2280a07d7a0251f60974d013200000f, 0x19a03310df80cf239a03508e990c14376032d0e190c24a208700861a1c121889c510e111cc014, 0x82553618db23bfc9b1d3620dab3bea36c52d91dfd00b, 0x31e27f800041909018202e0c889fa270527e6985d30f031d06400c7c0d281a3034c069c944128c25144a2494593ef27e44fc49f813ee01d ] def policySharedUnitFixed0HintLeaf64 : PackedNatTable.Table Nat := .leaf #[ 0x2108420002, 0xb8c17102df05344f14170a1eb05360a7c17482a005428990000a48b4c28986130c938946b44e2124d262a4c563dc47b9045f08b0116422d0eb61cd839b4ff626174c5a9930f5b150c2a167f489e3235902b, 0x203331289c1133307ff311e0b7929293c44cca9c75313a67e4d009c0d38e26264d7630d8e4a260a4c3898545c39bd80002982533e8ccc1996335c6648cca41c40a7124d25f14c28985930c26194c3a99ed33e267f4da6744d20d1d1449dc9af936126bc4d7a9afd36026c1039, 0x32a86622e04195832c8658496c5be832a06640cc6196c32e09ba0cba1978b7f23e22dfa5c0d1d516f9016, 0x7540eb85fc43aa87594ac65fb476207450e881d083a18ec50e8c1d6cbf824472fb85f7522317ec015, 0x3ab2735002, 0x1ca473d872a13be2790d29a6464d30693521c87220e461cbc3920a0134c800052f9a64d34c08edcbde97c2017, 0x1c28bd780010e1e1c5038987152f5a5eb8bd607090e241c2c386070d0e201c4438717a62f525ea0bd297a42f565ea8bd397a301b, 0x10417c9044e08a412d822e00ea4ccd24c260a4c989ce01050209040e0818102820b03ec07d4116822c00e84c1496292e125b64b711a112dd01e, 0x4d789b6136426c4d0ea3e11360689800089ae136e26cc7c409b4136a687cffb9a21344068792669a1c016, 0xe72689d2f9a6304c8c98a436e06db0dc81b7c36e804d00025df11d7177b4cc49ce839c073b0e7418ac314805a00065f491dd17d101c, 0x1a4c34c869849701a503490034007, 0x31217470c44188cb6316c70d4a15482a88410081c103cb6585530c4a5b251d194cb2998580d1c616c8016, 0x9701310260049890aa334025e48600008125024e04a413d812a025648411a5120f025048349071214016, 0x6ac94c81b74a3a4a700d5026404c606e40dd027a037606f09502349253e4cf51a4128e013, 0xbcc17902ed05d60be524e02f105ee4f6929613d200b ] def policySharedUnitFixed0HintLeaf65 : PackedNatTable.Table Nat := .leaf #[ 0xc10046008e011a0c44185a49d007, 0xab09e1800105540b8417182e205be0a6814e249a278a8d649e302ab05680ab415702af204a0ac0158939648ce4e549ca139301b, 0x17fa7404e600c54189a741493c0bf4041030406220c2d24e93dd00e, 0x1040bf417fa7404e600c5524f13dd01160c34187830e06284f941862743010, 0x10e821c04374e6210d87da041c494c80b4a75a4a700b, 0x109d213e448c85910b321328b385939b824344899523aa17d213c86b084d10b7435a0005342108042aa86a923b217c019, 0x5562c2200042ae05604a9c58382aa8e820aae15602ac8e6b0ab4156cb0424352c0e581921d9605015, 0x6900d7d0c3035606aa0d741ac0357284c50bca12836549420d1c1f603eb067e0da45ee836a06d68288000a48e4e369c0130926134e080db81b6837106e00dbca1b1437287050e8a1c94354e3a989c75a9f071d660d641ae035a06b6691c1b183e707cc0fa41f4034229445294a5214a329420d281a4835406960d301a6945d069c0d3d01903604c20507d1b2941e283a8d70a0e1428285c50b51ae83ea075c0ec01e583b3076451dd38ba623077851d81d894744e2c98881dd03b907940efc1df0097012a0d001a224a028f08d9ca39946c290851aca53235e284e3ad0f829f06286670d0a5414a7286452a51b6141b080, 0x1ab835906b80d681ad9a460002922d381a71c07260e49251945706d89490a1a2626080a1010203840606869d2125014c22988530ca5194c108121020206040b08145318a6394c829945324a629428285c509c1ac035d06aa0d590c3034a06920d501a5834c069a51741a7034f40640d81308141f46ca5078a0ea35c28380d952509425285e50b51ae83ea075c0ec01e583b3076451dd38ba623077851d81d894744e2c98881dd03b907940efc1df009601280cf019f147846ce51cca36148428d652991af142606a, 0x2014411d0770bfa17f2307c5fe0bfb000c2ff45ff0bff38be9bfd38d266c4d549aad34d0c1a1832307860d8c1c4188999d33426694cd69a652721c73482071c935d25a6389c71352089c4c4dc0412482410091b20363d2e10d8e1b18364d2e18d7a433e8c4c16982c005822ed41610bb337d098692f426174c5c2e18fdf26b14d6c9ac93581c02481a4ea124da5e74bd297a930b261b4cc63934f4ca6641c90391c7260e491c9424b527c9e9348667a4936f10081af836086be8d7e1b0288493331f1c4bf697fc0c39683000297e12fca5fc4ca4995132b265a4c00996132ca6574caa996d332a6af4d669ad135aa6dc49ec7721212a0a449ea829523620a6088, 0xfba1f7880e80cf0c0d4b4e718413f829804da09b8137827d04fc3eed094a5e74be69cf937fa71a4bfa97f816402d105a00afc16002c1176a0b085d99be84bd297a930d25e84c2e98b85c31fbe4ca41738d2480014e369c004eda5303490995d329a6554cde995132b26584cb29abd358a6b34d689ad535b26b24d60700920693a8274e8d509d6a62f40724d849b0135f26924d209c2135e469609f00e6026504cc0ca819494134c3e9c5819b14120648505d310271706722014402033b0674023c19e941847805058a00934126804d6d1a62038071, 0xfb01f5045a08b003a130525a200041000202040207bc0f68072257e4b5d1a092d44e2a981c1058205040c0e80115025b045c01d403c807c26664b6c97092c5022, 0x3fe4b640fe81fe0406081096d12d225b04b540f701ef04d607c010012d4268c8d0495f92d3014, 0x12d100029d3538aa607005, 0x40a08181d0039f03d0079ca33a494257051980f492b525680e741cd839907500e9c1cc03794944517d1b3146006bc0d44115025b045c01d4999a71f041607d80fa822d045801d0117823303b807880f2272149264ac524c93054e9c4b1497092db034, 0x6b80da01b3252a8cfc0d79291000206fc0df12a1036206c00d91293252806a00d481b5035806b49a701bd491e9cf8947a340251a4a4939f929001f ] def policySharedUnitFixed0HintLeaf66 : PackedNatTable.Table Nat := .leaf #[ 0xe12750002, 0x5841d1616142c31629487a1600b1880014e5015f9258962800d, 0x15e82d605780aec15d1b5205560ab0da9857a05c24f193a0139327484e949de13bb055a4e511a82355057c6d452f983212030405c19113f44e0a4fcc16182c6058a0b041600bb43264991932d2600116472c12fc25f94bfe982930d25e84c8a996cfc925e74bd297a937fa71a4c1294a8e0193a846a44ea417982f205de0bb817f82fd01044f7458e906a216c42cc84ca2ce0fd61fa859507e7083e10b8216043208622cb05958b2d370e6e20dc4a7474e4c9d48dc30430165e6ddc404030101020c10188a49d31386e282198434086a5398a7514e829ce53a41870314062c0fd1252a49e27ca5394c3d1b8530f686890d4a1a848ea869d0c1a181430085f910e87ed30f89a05341881531522c683f608070fde1fb803f843f0882541930926134c38985c22402e305c40b7c14d02de311e985130b26184c32999530ea67d4cfe1ffcc4a00014e08999933da67c4e3a989d33f26804a4a4f109e2a35929f098b130aa4a830fa8f08dbc26824d082c8c40a0b19102e20580430084061262a91ff1b8042fe8608dbd13d14a584f4820b857c0af61060a6a239429a6986d33713a60de, 0x218a204084a139382aa27a0000415f13a64c2e98a9315a7474c989ca0813905520d00ae50922123420a8488da70afc15f0937106610a105b00b5c15e02bb05744e909d2a188025, 0x7192f6e000438ba5602f601c6806e8a5701b8036806d8c3b0e361c70bdc241323ae47611f817b3015, 0x1cb839687292f841cacbe407200e441c8c39787240e4a5ef91db97bd497a1c98be1a3b6013, 0x6fd0e0c5e7c37f87002f305e6438186fc0e101c1c37f07010e081c14381179b2f3c5e74bcd17a02f445e84bce1797019, 0x236846d8f6732f4027113d00a01284250405100a10092029405311244e583c1073b0e751ce67ae921b1f694bbc89a08d1a3d923449a45345a6903f94237846e88d411a623b92bf88ec11d623d12c085f644ce980530126064c0898912fe263a4c7c9a686cda0a74c7898f531da63f4be499f934008f737b000052f8a6094c28986130ca61d4cf699f133ea67f17149688deca699496665251e9994f053, 0xb0685551cfe7c2833d8a6714cc6b2926aa5f44bf89c9932627280c16183430606092d548e7cb559ec90aae15602ac8e6b0ab439a85a21eb4486a581cb03238e022, 0x90a17767038e0688d14d189a4404f009d36e0235846c08d711aa234c46a093d11b2236846d8f6732f49a2cfe5194f47ae6524ca523d132969a408d0997b021, 0x2dc85c42cc016e82de25532cb016e02e305c50b7c16fcf9205c00b825971224165b2cc2598d1cc9657016, 0x7340e6e1cd8be723b90e6a7abc00086f64abe1be037c8e670df41bec398979648685e54bc917cd015, 0x398275c002, 0x7360e6e1cd039a97cd47721bd03799f1e4eba3b0925e17ce00d, 0x6064214842108642b4856d09500014eaa9d593af215900c, 0x4af096412c4ab1237f09605d6000084a9095a950025504ab0a84120c242153b47125574aaf1561015 ] def policySharedUnitFixed0HintLeaf67 : PackedNatTable.Table Nat := .leaf #[ 0x12a025384a42aaa1298aae049709361270aad049d093c55451be95504954127caab237c013, 0x2502761002, 0x1bd237b86f30de71bc83794f179e303c7278e0f1b8de821f637bc6f810fc444290b91101e31014, 0x38187058e071c143820f299e54007, 0x14a8015052d0a6414c029a24ad007, 0xa4b149a6adc5288a4749a86acc52a8a4f149c29245228a521c6a294c52a1ab53cfe6ad8d581ab4355c6ac91f79aaf019, 0x5248a561494292cd579ab847de29185281ab914989d9926a1aae00e, 0x2d886ee0b6416c66edcf151e29188072780008b65187838e061e8c3e39307a08e4d1c99392e937c61f9c9b017, 0xb64393a2d886201c9b393872645b18b6716cc937cf5980014ed039a4ddc1bb7011, 0x9b2136c26bc4d81a1c47c226c44dc1a8c4e74288d2669a1d00d, 0x393e9da93b32768004, 0xbda17a42f505eb0bd8179c2f416b80272922430b86190c30185807808f14b00239c47608eb11d201542f996b947445ae8b4316882d0e17b82f796a802b405640c3018502b80584302816202c649f4000a48b4bf617e92ad169824968e7492512704676491d300a6024c06981531285f1138026fc2fa169547c65a5132e1692044, 0x435242d88599099459c1fac3f51b7730f686890d42475434e860d0c0a18042fc8875340a683102a62a5341268416466e010bfa18201c, 0x4fa09bc137026d05304e109a4134904fc4d849b0135f00c, 0x433886910d0219843298e4478e68f0000a6324c68992139a2735113c22a526298e5012, 0x8b41b5e22d45801df94e0880cd381a71c4c4c9aec61b1c944c14987130a8b8737b097c5304a6144c30986530ea67d4cfe23dd053a63b4c7e97c933da67c4cfc9a0134c8d9b44ce98182ff8159030c06140ae127046765a7934d26bc4c82991538ea6274d8c6d612140b103db813c027904f109de13b82762546405e98e931e263d4c7c9ac535ea6c11e508270000815d4914980530126044c4897f135926bf4d809af9361159a2b3a8e08acf26404c86991132326424c8e9a2526e9934065 ] def policySharedUnitFixed0HintLeaf68 : PackedNatTable.Table Nat := .leaf #[ 0x19503292826987d38b033628240c90a0ba6204e2e0ce4a0b140100e, 0xc044041b774d029a0cc4e008106080c441858089085e2cb8dc5249d00f, 0x2c0176864c930b26464cb498004591cb04bf097e52ffa60a4c3497a1322a65b3f2498252951c0305822ed416102c336a200052f3a5e94bd497cd37fa71a057c0b6016b82bc05760ae8da913a4274a4ef89de93bc27760ab49ca235046aa4e9817982f205da94b09e9261b4cdc4ea520693a803d, 0x9a113402670d05899e3b3200044a5894a4992251c4a409a31334266c4d11a0a34246844d0699b933746830d07a3e0019, 0x25f44c319f512fc26004bf898133de67c0cf7097c1310261c4c109831aa026104c299f23b3067d0cf899f633f067dccf999ed01b, 0x12e067b0000897612f4961ccf48e3b1c7425c44b90973207a25d04ba99e541c28f78cf219e33d0a7a10cf319e2018, 0x12b0684d3ba269212a425444ab09533386672d34999c24d289dd93ba895712bc25644ad8a7114f429e453b804414f829f453b004214fe2a20ecd8a8f15222a405658a9515282a4c01f803c14ea00f85530aa836169849309a69f4d422af855e8aca15802afc56325973626986130ca61c4c2a99cd35226a2361c6c351f99b0c4d469a9535324da35ca8fd0d72269b35ba935c54b9ed83daa979d2f4a5ea4c369929334a66b4c5e39b483b845b08b4116422c045f1ee43dc50f5a62a4c5616392a8857f0b1616302c48e783d9898593268b300adc15b42b405670aca953cf6400014c2e993139427554d2c9a60b09161547206e2cf60a3962c5c58c8fe9150b2a187ad931c26394cce99a1336264b4ce499d131ba69d4cd49360d6aa4d6499667351ed99cc09c, 0x7291cf61ca839597c348721c7cbe380014eac1cb125e97c200d, 0x26384cb9a061320263c4c89a00340267fc4cb098d133226604c909931aa826504ca9a033b3e6814d011a0734126820d0219fe01b, 0x27c84fa09f100e027dc4f624d0007, 0x13d812a04ea4e0d245a7034e384d440948126026004c4097027626ac000413a026204c206e80dc826304c806a814ca744270a8d2099e929f468e4d41308135246684854907a34a026, 0x8209808001044e08a412d822e00ea4ccd24c260d4c1408281048207040c081410581f603ea08b41160074260a9d3896292e125b64b711a112dd01f, 0xec807b00f807800f2249300f208cc117a77c04340864110821d0438087810f822025e64bdc97a92f425ec4bc897d12f925f04bc40f401e728ce925095c146603d24ad495a2499026, 0x11b023904700754986a343046e4c700e901d404840968122824404864cc4126024b04b20934129826a065009a013493434e2a099c0ec00772684983c9a2235b268a4c991a21325263c4cc898e81d703ac01e095824924c1408c411802350464086c0490001260e4c2c98512f8260c983811f823e048209000f2a77d262e9c0898b130c046, 0x3b601e81178233493209b00ef81dd03b29df80f081e34efa924c9589347010, 0x126025209ec0950275269e9238138276e04fe0a013bd81ce49224d889af234b04f84d6d1a6134a4e369c009a8a34a241e04c0098812e04ec4d58000827404c409840dd01b904c609900d502994e8809cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a097812e826004be073099b2345266a074128f01ca0396070c0e2275103820c94193832627fc4ff538892aa04ca09993b8934126804aac9c2a348267a4a7d1a393504c204d4919a1215061 ] def policySharedUnitFixed0HintLeaf69 : PackedNatTable.Table Nat := .leaf #[ 0x7be527800083de07c40f841f1949c293a526c1be038506fc0dfc1c0109807020f80a4c2473288a51111b09497018, 0xeb41d603cc075e0eb8a3523684e440f3d29903d107a40f541eb03d307c8527d389148b07600f2c1d983b228ee9c5d31183bc28ec0ec4a3a27164c440ee8a39946c290851aca441469027, 0x4e0c0e6a48b04ea04b40960129024c04c0098812e04ec4d58000a61026a48cd090a920f46664d45381a71c017, 0x1ee287ac223844608aa111422095064c24984d30c26194c38985c22402e305c40b7c14d029c49344f151ac94f84c58985525414f646e053dd315262b1ee4117c22c045908b43ad87360e6d4284000524725e74bd297a9326262f3d6c5430a859fd2034, 0xc32186030b00f02d72185cb5c00010272179030f85e50bcc184cb5a248e4bf097e52fda5ff4cba5a14b61a3a02d089224b5d23a201c, 0x490212c1248aa324720922552400084874a7a1224245094509161230aa0a3da2a8054f42469545015, 0x216246c04e809e12142eec7ad8918123a6624fe01b7232f64684cc40052021a233c075005b11842310ca0a4c6018, 0x1b2036586ca2ed05dacbb506c92ed8000436286c40d8c5d94bb306c20d863e1c36606cd2eda7fd8bb717692ec65d90363976701b, 0x1b3c36c17770da01b4836886d32ee25dc8bb806ce0db41b6436a06d51f121b5836b97743ff05dd8bb997782ef45de4bba976f01b, 0x35ba15d4ec0992131aa6294c9e9e213c486dc0db61b9036f86dd009a0004bbe23ae2ef645808af86a10c5e5d01385175901a, 0x14686a940008a3a147e28f85201aa335486a885198a3d146a28d851b8d07147028e4d4e241c35366a691f71a99018, 0x145a34b05160a2b3522907c51720800002289c5188a3214482894d46a3eb352c934c5179a92014, 0xa1314242840d370a1134e800045030a084b1428285059a7314182834d3523e934d26998d37a3e8015, 0x15023fd103f80014f1a9e313c58ea81d527bdcf7c207e00c, 0xade3ae02b805712c3691082b1161e4e4e15c9258161a00c, 0x2909028a6174e8e9e3d34926944d2c9da93c68a1b1434288850e8a1c00d00004d411a8b35146a24d40a78b4ece29045220a4312a86a9d3869aa601f ] def policySharedUnitFixed0HintLeaf70 : PackedNatTable.Table Nat := .leaf #[ 0x3ba07750ee91dce7d15226a062000216582ca86810b2e58ecb96a65f2c7499287778eee1dda3bc464a00173e9a3b9881f1045208033d864a8c93002c7365072a0eb41c87d29280a6734ca23f807b50f8c1ed832006418c8d1918322000d8c8f1920321c00c8c922036830480e101a203c407480c8cfc19f696e867d0cf819ee006064320bd48cc82f936aa0bf49d47355274a4e83f9a91610309f46053, 0x1dd43ba07600ebe1d8465a87620ec65fdce7e17f92fec5fd43b2980b000297f52ff07644cce99a1334a66b2ff46034c0617f801b, 0x1d983b228ee9c5d31183bc28ec0ec4a3a27164c440ee8a39946c00e, 0x1be473386fa140685e084ba61605ee0be924e13da4c9a698921a06f80e6c1cdc39a0a02446c0004858252d05d40c0017f1083060c0c15297030401180238189a74404e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d05624e593afa15827ba86785ca8b9421b82bf4da69be220420acc15902af055c4e551a7a0c634c28ee4be7179504b, 0x5560b653aa13be277a4ef09df93bb46a08d5481121284e4e985d315262b4e8e993139420c7014, 0x45a845908b191621cde39c127ea2cf08bc8b4d16922d008b4116422c045d08ac542ca8622d1014, 0x460d182a6084c2a99047449ed6202245e917b91844608461518323034bfe985130c26194c80990d322265b1bb6820504120831fea2c345848b6c16da9380f140e774a3e7af88baa5e445e245fc8c0918022fc07acffa260b4c1498692f426544cac996132ca66617262eb45d60b9b17342ea85d4a4e2465000052f3a5e94bd497e12fca6094c2e986d3a3a78f4cb4980134b276b1c6e2dac5b91bc336c86d78db18b07160c2c2110e0b691c6c7a011fd1b6036be9024f409bf237d29028df0a49645fa8c0518022ff45fc46092f2a30206f, 0x116a116422c645887378e7049fa8b3d169a2d245a0116822c845808be542ca8622d1012, 0x6f80e6c1cdc39a0a02446c000417c0b951728437057e9b4d37c469851dc97ce0df2399c37d0a0342f0425c81082b305640abc1571395469e831930b02f705f40ba924e13da4c9a698921a1795029, 0x105700014c28986130c8438086e1084216842b01149d04a72a53729d698ac22b845642a28dc423c87e61d023a0080820af4d06426c84d10a0213c427484f90b5163c9e6418002fe21060c18182a52e06080230047275f42b04f74dbd217d42f891d10bda0ac487461e8a97a3722a149901321a6444e8e9e3d34b276b042, 0x2ad15fc0af415f13d005544e98da82350055c0abc81282b005629e00189a79a060420250c3a7723138280439407270e461c8839021534c989d744ef09dd140027fc4d509a84b1227f04fd09f513e001c44f609f713de01b863d8c7c4584316462d8c5a18ea317862e8c634b5c31886308c664b5e31a509d26660ffe623c16e267e4d8a939c6300c7218e631d0e621cc5396a9058e5a26c7399e9340d2ca4d134b88f9cd262698497a5ef51da1a60443c6d3c9cd1b4e05780aec85121e708a811bd317a59c43124e951fb88b0434e860d0c0a18042fc88743f6987c4d029a0c58d07ec100e1fbc3f7007e061461f51e11b784d049a105919b8042fe8608744081510282c6440b8816010e021421f18aa47fc62a422f27984432923816193a94c581198237046d08ca1184df40bb3058c0b1416082c0176864c92f3a5e94bd494a8e0193a846a4700930d25e84c5c2e18fdf26af4d629acd35a26b54d6c9ac935824a92a308dcca8ca61b4c5a97c934026d219d283886651d134da633b86648cd719963330dec25f14c12987533da67c4cfa99fc5c3a4ee3a289068e9c101341624059059843d087811f823e8440201882c1315a7474f1e9a593b5a538415254c91bb14f34f2e2da84f30dd91bb436a510a0fcd1f9881293620da23bde310510726c31892312062c0c4b189401984f70c54174a7da933aa6b817b29398e542415394e43dc7e5900121f03f38032912f226044c5197a48b4c289859374a6ea4dee978113da20d48c88830efa1e273c4c6eec4969f1c030e996d33288b6326a3c10fb4918a4618461c8c3118923100831186a608492e8c21241a3071ce839d873a8e73171072513050c3640669aed35ea6bf4d809b0535f26c24d789384f5d24363d762c0045c08b711682c40e1a83c9068a520132026434c88990926e993447a06d6015082db05b40a7c14d9b134c30986530e26174c2a99cc560a1ef1cbc3970797869b1ca2972508a26364c8c32986528caa194e32a0f7b20c44cd299ad34ca6384c72999d334266c4ce898dd34d266a49d673bd20b9cee4dc67a6879825ce1e62438487110df21c0437486f22da22d0439487210f321ce439801590e821d243a9103018f033206600c681892d0697e12fca5fc4ca41738d2480014e369c004eda5300678692132ba6534caa99bd32a26564cb0996532d2600491a49d519e92764dfe97ed38d25ff4d549aac60a825d04c0097c0e6026504cc9dc49a09340266c8d14e3726f44bb687d50fa247e43e69bb10f621ed48fa87b927e26724cc29b987640eca1d923b1872ca0a106880d0004a809749409c0d38e26264cc09a85351a6a54d4c93ecf93a44a3e509a91351249a27108d5c9c4880510080cec19d008f01280258a0c23c0272c919c9ca9394219, 0x2da053e0a6d3a1139e27384e689cda49a27100b6c15093a34916985130b02ac05560b6415d02bb05780b5815e82be27a0000415513a627784e949d213bf27768d411aa93934c3098649c4a357029, 0x105700014c28986130c8438086e108529b94eb4c56115c22b215146e211e4a97a3722a149901321a6444e8e9e3d34b276b01a, 0x12c025204980980131025c09d89ab261026a48cd090a920f025a09d49a78001491c09c13b7027f05009e0c9b1134a4e369c0013981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d349a8a33302d, 0x1b90390071e51511b20373292c0e1c1c30388289a51381c4838a17b80e2c1c6149300025141207944f28989c8d3c0943b01a, 0xf501ee03db4f3e0f74a489492007 ] def policySharedUnitFixed0HintLeaf71 : PackedNatTable.Table Nat := .leaf #[ 0x1cd839907500e9c1cc03794944517d1b314604e9807800f22493073e07a01d503a903d29c8495aa70125680f35252271f06bc0e740ed274f06fa0df01c2837e06fe0e0084c038107047b2c000a6174c3c0f3d29903d107a40f541eb27a007a60f901f283bd2940527d389148b29100eb41d603cc075e0eb81d803cb4f265210a35946a46d051a4a232473288a51111b0944304e, 0x221d0fda61f1340a68316346de13412684009, 0x7360e641d403a707300de5251145f46cc51813a601e003c8924c1cf81e807540ea40f4a721256a9c0495a03cd49489c7c1af039d03b49d3c1be837c070a0df81bf838021300e041c12749079e94c81e883d207aa0f593d003d307c851dd38ba623077851d8a4fa712291652201f6838e071a0e281c4838f292a0dc81f727a1295a8da4a2a144f46c652b01d683ac07980ebc1d703b007969e4c1dc83ca077e0ef804b0094067851e11b3948428d651a91b4146906be0d2085c90b807d652a523b941b067e276d2981a494e369c002e71fbe4ca4995132b26af4d622e18df425e94bd498692f4261708c20c2803f07ee0fde201c3f627a242fc86010c0a183434e42d484f909d213c86b084d109b415e3a2080810120fca1f98c3d246541589a0d0bda47642f885f50c1217f16466e0040a88141632205c40b0087010a10f880620b00002985130c2619083410642128424084453611b694d54c569901321a6444e8e9e3d34b276b4a7082a4c5523fe31528f08c3ea4a94c5c9ad935926b04d669ad135aa6584cb2995d329a6554cde6920a232473288a51111b094430dc, 0x8aa1118223a795055a4e5021c0437084294dca75845708ac85451b884792a5e8dc8a8514f7088a110023e847e087810f53cea7a308369d152530bb3058c0b1416082c005a6926c9d4235238042c78dbd14f346ec54c8a7b2370030, 0xc5918b6316863a8c5e18ba318d2d70c6218c0317c03589ee396a9058e5a22c24d8e31f063d806e13de27dc4f6007113e027d52681ccf01d, 0x145834b05168a2e3524907c5158a291450934cd4a8a304f182898d471a91010, 0x6630cc8195032a96f94754195cb8300014e68198525b170300d, 0x1bae37587fd0ff74426922d320a6434c889b1937820861bb03fe07fc8dcd1b9c8b14000a5f84bf297fd32c26594ca6995535726b74dce786d0439e25020, 0x25ac4b6096912d467691ee89601b8a784c0008dc412c49330f0919db00f, 0x35ac6b50d6d1ad835246a50d4b3b24764cedb1db83b6e765103ca6724d289de53d30be717cc2fa45f41c403882710ce211c3f1a8696fcec60fe31ace35a46b40d4d00720004ed91db43b66765d0329db502b, 0x68623381a1c344173149081a14346068b0d1a5cdcb9c173900021a24b9b1730011, 0x342068a0d041a0d3d5972e2e6a5cd0b9906850d0c467034386882e629210b98172f012, 0x1bfc79540008e041c129d906fe8e051bfe380070090381c04380cf27246a3c9a79312179e4b014, 0x2c6058a0b0416013a805869e7016902bf20d20b1c1642125088492a124725e74bd297a857c02ba36a40aac15613a349169858155139346a08d549d224dc275a91b49d3a49b055a0ab8157902505600ac49cb2467272a4e513a18273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a6808a085610b53a2841b4160000530a26184c3298ac806253841529901321a6444e8e9e3d34b276b494c53949d4a352059, 0x16302c505820b009d402c34f380b4815f9069058e0b21092a48e4bce97a52f5262b15f00ae816c82ab05584e8c000a48b4c28985815526184c324e4c9df93bb46a08d549d224dc275a91b49d3a49b055a0ab8157902505600ac49cb2467272a4e509d4a352036, 0x5907fad24725e74c2c11bcdf400014bd297a816793b54c3497a130ba62e4d669ad135b26b24d6098bc16882d0057e0b001608bb505840b0c9d4a40d27504e9d1aa13ad024 ] def policySharedUnitFixed0HintLeaf72 : PackedNatTable.Table Nat := .leaf #[ 0x2f505e90bda17b82f796a70bf817f82fe85fb0bea17dc0caa4b32d328e70b4d16922d225a40b4796870bd617b02f385e84f0a178cf85067b14ca297c5308a6014ba962cd609ac94be897f1393264c4e5039fc2aa8e820aae15602ac8e6b0ab439a8f5a24352c0e581921d9ec92d0c5a38b46a39a0c0e18213ac8b4314bc5aa51cd9688046, 0x2144000297cc13981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d35323269816802d085a08b3c16766e592019b9b1ffc36ec7130c7d00de27bc4f989fa13f89344d2c9e714a0841d07fd8ffd1ff836cd046a463427841e050f0a21144026a4044000316746a11387a14503d, 0x6db8db61b78389863e806f13de27cc4fd09fc49a26964f38a2410aca953cb09264c4e509a605a00b4216822cf059d9b9648066e6c839907220ec36fd3d90e684b5a6fe8000a48e4bf097e52ffa6454d6e7ac859885740ae615bcb0d23923718782509d9078143c288451009a90110000c59d1a844e1e85152e21e00042, 0x1397a20e4d863124e538da844289b106d10da41b469098ef7a0964130825c62c2415012, 0xd90e1aa7034e38989858808b41b5e22d445b213a4c80990d32226c5326a90a0c9a24dd4c8c9908c4a00014e08999933da67c4e3a989d33f268001f, 0xcce4242992d33926a14d462b04d89a6734d4a9a9935226a24d949b3116e150600029849309a61c4c2e112017182e205be0a6814e02dc49344f151ac94f84c58985530a26164c309865315a64a4d9c9b3d365a6cd02d, 0x62e006d00d827b53d28c6118cc96bc6d60db01b549ed087ba20c1f9a3f307e5900121f03f38032912f226044c5197a48b4dd29ba937ba5e044f68835232204a189631280338c4c18d29ed43ff988f0002985130b26184c329ed9332a61d4cf699f133ea67f49ce72a12149df603a, 0xe78428697cc13981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d353268b300adc15b42b405674f662c305878b0e16142444c9925f84bf2986d323265a4c002ed12951c03498e6d951fe1b662c2a8e40dc585890b18162c2bf858e4f0811c823a047308e20c402381feb000292392f3a5e94bd49859317a53a2a4854951ba152605900b4416802bf274e8d509d6a5512c6458b91cb1ec1055, 0xe6c1cc83a8074e0e601bca4a228be8d98a30274c03c00791249839f03d00ea81d481e94e424ad538092b4079a929138f835e073a0df41be038506fc0dfc1c0109807020e093a483cf4a640f441e903d507ac9e801e983e428ee9c5d31183bc28ec527d389148b29100fb41c7038d07140e241c7949506e40fb93d094ad46d25150a27a36329580eb41d603cc075e0eb81d803cb4f260ee41e503bf077c025804a033c28f08d9ca42146b28d48da0a34835f069042e485c03eb295291dca0d833f13b694c0d24144648e65114a222361288607680f59ff437c89858237a6654c5e982d305266617262eb45d60b9b17342ea0fc925e74dfe9c69304836134929c6d38005ce4188994932a26564cd299ad34c9ef64cc0999d334266c4ce898dd34d266a17b27da92fc25f94c6c98e131ca6464cb4980133aa6b81764243448b0910121e2c287de8b0b16189ecc2b385680aea15a459821434be609cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a993473c05890b18162c2bf858e4e641198237046d08ca1184df400014bd297a85d982c6058a0b0416013a846a4700930d25e84c2e98b9359a6b44d6c9ac935824a92a308dcca8c82c44f600b493dc249b3e127f54fea1fd34aa258c8b1723963d826e2d1c9961536cc9178db2997e47aa7005330a6584cb2995d329a6554cde986d33724e237d29028df0a496113, 0x8ba115822ba1284e4e98a93a3a64c4e5040881559b52055a2c74835276d0fda61f10c38b1a0fd8201c3f787ee00fe10fcc3ea3c236f09a093420b233700205058c881731548ff8dbd139405742be1092a48e05900b4416802bf274e8d509d6a62b49b84e911a82355418e542822c045908b4116c22e04604e9611c823a047308e20c40a92a3742a4c10e021b84214a6e53ac1b29f92396097fd30526454cb622c8c9925f84bf29859323265a4c002ed129502c005822ed41610bb337d0000530d25e84c2e118441025761032206c40d100d4baa20712ba881d164442045920b25164c9d183f587ea165c10bc0449b8a16541f9cc3d1b8530f66e052381b7f495298b9359a6b44d6c9ac93581c02481a4ea0e01a5e74bd297a937fa71a4c12986d33724a12a2a544ca8915112a18542ca8a151008f210887371f084f72111c23d847a088a110525414f646ea53dc1f803ef084c0fc81f883f4062c9d1124f24a5295e8db8a57041b4e8a10b4215808a4e8609cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a53952532371486e7adca97a3720dc, 0x2d0057e0b493ce02ad055c0abc81282b005624e5923393952728926c9d382d10590849524725e74bd297a930b262b15f00ae89cd939c273c9d091a8139a274893709d6a354025, 0x1075428c922d320a6434c8899153630dbe221a37586eb8dd81ff084f509f213f4f6690a8f0520873c4a88f111d9e084de08510000a5f304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d4c8c9a6059885740ae615bcb0d239237182d005a10b4116782cecdcb2403373641e050f0a21144026a4044000316746a11387a145049, 0x8b2116022e845608ae84a1393a6174c5498ad3a3a64c4e5040888121023055a4e51063950a2a28542c22d045b08b811813a58438086e108529b94eb2a2a544ca8915112a208dc423c87e61d023a0080820af4d06426c84d10a0213c427484f90b5163c6de90bea17c48e885ed056243a30f454bd1b9150c040, 0x6a7a2e822de45b91738b4f37468b9816182c6058a0b041600bb432649859323265a4c0022c92951c0327508d489d4a6724ce898dc54f8a9e154a2a845500aa33db298d931c26394ce699d526c9aee47e46bb45a90b5416a62d445a30d521a502b385669b2215a06c6d3538acc364a2b585678ae915b22b6001b0ada15b62b710d2890e121a2458488090f12289610e5800014bf097e52ffa60a4c3497a1322a65b3f24979d2f4a5ea4dfe9c69304a61b4cdc65fccbf23d532fa9aa535526ab2162868485a21a343480d2085c90b807d60cfca54a47728360eb41d603cc075e0eb81d803cb4f260ee41e503bf077c025804a033c06cc9284a3c2367290851aca35236828d20d852cc9b27364c8fd4d91a6a8363475c8ece1ba6480a6e9c8b5116922da45b08b5a2de45be8b8d170a2e045c48b9517222dd0a6, 0x13a601e003c8924c1cd839907500e9c1cc03794944517d1b31460073e07a00f3946749284ae0a3301e94e424ad495a271f06bc0e740ed274f01e, 0x44f20005304a6144c309865329a67b4cf899f533fa28c22ca8b55374a6ea223a447c88f10cf1d1a3e3c7d98f8d4e58916cfff21d544ae44a52efa270020 ] def policySharedUnitFixed0HintLeaf73 : PackedNatTable.Table Nat := .leaf #[ 0x3a153ac86f00de41bc437700e62f189bf8bc68a5e1d083a1c74306e90dd6039407780ed119695f846508c914d86b348ef248649767b4521e1ed001f, 0x215442b085590a9432286550ca2310214e429885710af214842950c72198432e864d0cb10a8431e8640856a192018, 0xb5816b82d685a12c868e5d18780010b54169125905a20b5216ac2d385a82c8c592cb2516492c8e5920851964d018, 0x35c86c02ec01acd25d06ba0d701b0435906b10d761af435f06bc2eb85d7cbaf175d2eb65d511d6975a016, 0xd641b0435c06b92eb48eb435886b50d6892e90af00014f881afcbaa9754010, 0xf01124624910f125f34c0298093018273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a6a6254d769afd36026c12124124084b04922a8c91c90b510d14bb48758cc7018202e005c40be109317707d8d24725f84bf297fc243a53d091212284a2848b128885d8000a6304e4c99313942633336a8f68aa0153d4c64702492c926d049, 0x680462200052fe27604f869941314a65e4f589f113c40f6b1ed43e307b60c7f0064000cfe6a4583f989f0888491080b2e58ed385972901d, 0x101c2034407880e901919f833ed2dd0cfa19f033dc00c0c86417a919905f20c12036324800c8c871920323c00d8c88191893a905fa6d501d, 0x5ea0bd227044de89be3e4c98152fe265c34545a1c2f589c2137626f105b80014bec97e12fca5ff4c64996132ca6554cc69994d14968801d, 0x1ea83d207a20ec01e5948428d6522c1eb27a007a60f901f283bd4f265280a4fa712012, 0x27544ea09d713ac27404e924ce347c8f953b788ac105a00a0c958824104622bc457051f0a7214dc297888d4af621e443d887c4af45799257192d4e1062c844524c41118222c4440884461c20d4420083f106820c8419887f10822108421888041402214c7e98cb479462e8c5da3c331789a1842308301058009c29618b932068f30c821a3d047, 0x145c28d05190a2c57211c185184f1427287b30f650b8a598522a1a36139a27304ec09cf13a29338d1ca3e63470147028d85230a3a14e029b27652bcc92b8ae727072b9a9f1428a0511138c271c4e2882f105c14a401198b8346668d4d1a05280a4e009029505344f9616f12a99658495a578d25595c703f, 0x6630cc819503a0055042b89d81314a64f0d6e45808af86a10c5e5d0138517594f8a9e213c486dc0db61b9036f86dd009a0004bbe23ae2ef61ce439c073b0e7418ac314805a00065f491dd17d14cc45f691d5065b0cb826e832e8741436497ec4e185c30b8416fc2df27cc2cb68e60d1926332fb68f88b7e9703041, 0x4a41f161294253155648ae1258aad80014ec2128d255155500d, 0x27113d275a1272240c484890712103d747af0f5c1ec47f1d2289fc132ec8f50cd50f5f1ec680c53489fc4017, 0xabc81282b005624e5923382ae055a9e709ca139500b ] def policySharedUnitFixed0HintLeaf74 : PackedNatTable.Table Nat := .leaf #[ 0x87a11f0a988441495010f023f047d088054c91bb14f300c, 0x20aa409d0c500012040428416c02d7277c4ef49de13bb43102bf057c24dc419841a015ca124424684150911b4e05780aec15d1b520556408909427274c2e111c23d847a088a53d91ba94f74c5498ad3a3a64c4e50831c1568b1d20d49db43f6987c430e2c683f608070fde1fb803f843f4fa261f51e11b784d049a105919b8010282c6440b881d164442045920b25164c9d183f587ea30f66e052381b7f31548ff8dbd139446a08d549d213a505c, 0x8e454b80008461495211d02398471062054951ba152600c, 0x161a2194c309865316261508cc11b823684652a308dcca8ca61b4c5a97c933da67c4d009b493cb1016087811f823e8440201a975440d081b103220812bb081c4aea2074591108116482c9459327460fd61fa8c3d9b8148e06dfca99237641660b1816282c105800afc83482c705907fac000a48e4bce97a52f5261608e094e93e9846008b8116c22d045908b0117422b04574fa410e021b84214a6e53ac59507e730f46e14a8515142a165430a8995122a2254411b88479084410902128419083453551b694d82a5e8dc8a8a84232a4898bc9d6a46d274e4ea11a913a9076, 0x13ba28004ff89aa13509624d2e23e713bc854d30ba7474f1e99313aea6964d303a2859f8b3e167a2ce80440003372e9008f6d1a4c01c, 0x274907040e101c1838006fe0df8a4d037c06fa9e093d0144346d45110a22a360288c0f3d29927ca29100fb41c7038d07140e241c7949506e40fb93d094ad46d25150a27a36329580eb41d603cc075e0eb81d803cb4f260ee41e503bf077c025804a033c28f08d9ca42146b28d48da0a34835f069042e485c03eb295291dca0d833f045, 0x1810809430e2c683f608070fde1fb803f187d47846de134126841646205058c8817102c021c042843e31548ff8dc0189c4f288878da7939a369c0af015d90a243ce1105254259c43124e951fb8a010e501c9c39187220e409f5525e97bd4768698018509dc0e3c1c7406d80da01b85ed806e80de4e729d593aaa7574eb847651d811d823ae8ec8d25a7a408bc9e6110ca62c4c2a1198237046d08ca54611b995194c5a99ed33e26804da4405821e047e08fa11013d727971d142cfc59f0b3d1cf893f8dcba4023db439e450c0a17142827f04fd27a51f983f2c80090f81f9c0194897913022628cbd245a6144c309865374a6ea4dee978113da20d48c8812862a0ba53ed498d9323265a4c0099d535c0bd93dec831132905ce34929c6d38009db4a609f58104020a0412081c10312dc46844b741138229040a082c0fb01f5045a08b003a13054e9c4b1497092db04b608b803a822f0466076403b81d804ce4d0d38aa60f04d209a0194026a04a609452910250049c095929181eb3fe8982d3330b93175a2eb05cd8b9a37d29028df0a496268a8d6c9a2134249324ccd24c1a484ca699bd32a26564cd299ad34ca6384c729981333a6684cd899d131ba69a4cd499852731a5949a269d53871ec208369d152531be44c36996132ca6574caa9994487197d1764243448b0910121e24512c21cb04bf097e52ffa60a4c8a996c5d38b9c1f6e2e745cf21d14bd697b52f8a32b0f1c609933b26af4d6a8669359a6b44d6c9ac133ba60912701e403c7878d0f181e292b4a19b116297bd2f8261a4bd0985d2f625ee4be46088c12a3bd334e9aa935590c8218e432c86510c9439287290e721cc439687350e821cf43906fad01a1bfd37ea6fa9271197f32fc8f54e00a7d4165c10bc0449b8a2a648dd905982d249360b0c16302c505820b0015f9069058e0b20ff58001491c979d2f4a5ea4c2c11c129d15244c5e4eb523693a727508d489d4842d085602293a18273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a694e518e, 0x112d225c44ba89793e00b741c5879d9240225844b24480890a263491c99f533fa6ca4d989b39367a6d81c6838ac7198e2e1c5a38c52e3a2d94cf699f133f26804d429a953530e5d1e9097407a00f411e7e3d147a30f473f5a7eb87a125cf1e783cf47a58f3a1e763ce519526ed1ea21a38019868f0d321a6001a86910d2e1a58727a12d4bce985930d8bb44a540b001608bb505842eccdf425e94bd498692f426174c5c2e18fdf26af4d629acd35a26b54d6c9ac93581c02481a4ea0e01a6e41ca832946550ca719507bd906226694cd69a6531c26394cc0999d334266c4ce898dd34d266a49d673bd20b9e9e49f45ce925c1fba21ca439087990e721cc00ac87410e921d488180c78199033006340c49683000297e12fca5fc4ca4173932a26564cb0996532d2600491a49d519e92764dfe97ed38d25ff4d549aad37a25db43ea87d123f21f33f4c9140fd3a4fc4dca79e0f3ba4323cfc3a487488ea01d263a552801ee2487e7b8528422600c2, 0x2d105a00afc16002c1176a0b08161a7bb275290349d413a70590849524725e74bd297a930b262b15f00ae89cd939c273c9d091a8139a274893709d6a354021, 0x1b09a494e369c002e71fbe4ca4995132b26af4d622e193d826b34d689ad532c26594cae994d32aa66f3f2472c12ffa60a4c3497a1322a65b116464c8000a5f84bf29859323265a4c002ed129502c005822ed416102c3275290349d41c034bce97a52f526ff4e34982530da66e03a, 0x16227da002, 0x39e53c80e8a167e2cf859e8b3a0110000cdcba4023db49e9850c0a17142869d53871ec2013, 0x272d1f5480787d8a027005, 0xef51de83be477d0efb42dc922d300a6024c06989477e8efc1e003bfc77f1f5e3ebe7d80fb11f613eba7d70fa88ef61dee3be05dc1f63000292392fc25f94bfe98c8e049f52025, 0x2b3856f1d7015c0598a1444c8c9a60dc624422c3415a02ba85691660850c000a5f304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d4c9a6e2d1c99615026, 0x12907c584a51f1485dd2f98273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a6a6604cc47fe522b849b0938556824e894642ec000407000df024003848eda6fd23b498c1393264c4e5098cc74186e50dda1ba0373807600065e191d79ecf33708df4aa8155503b ] def policySharedUnitFixed0HintLeaf75 : PackedNatTable.Table Nat := .leaf #[ 0x1f0a0cf6299452f8a6114c029752c59ac1359297d12fe27264c989ca02f1a76c2d1c5a44b48168f2d1a8e6830386084f82230c461005b118e231802e16a9473617d80cb27b114d6232002e806101d003880722486359a1bc037906f10ddc0398bc626fe2f1a92cc5a18e7f0aaa3a082ab85580ab239ac2ad0e6a3d6890d4b03960648767b247428e841d0e3a1837486eb49767b4521e1ed0051, 0xb8817b02e405cd16b8001491c03d807a80fd4a22477d2fc25f94bfe9d813c326324ec249689331265466a05d492f233802e005b858a092e1e0696144930f023eaa2494cc7a3d647fa7d50fa99f663ece6db9246125902e, 0x17138207044e090bbd24b805c00c12175466a8f58936925900d, 0x27de3eb67d68fac9f583eae7d593f1010017729f8c5db8bb83ec692392fc25f94bfe98c8e04892312488b30000a6014c04980d30c26194c58985531827264ea49894cc71c0a025, 0x2c649f5245a5fb4c0698140caa2670002980530126064c0898912fe263a4c7898f531f061d2d809a680bf817e02c205700c2818602b20568923a33b24e0492919d124b024, 0x17c08688cf01d493180318061007, 0x847a7e01dd646308c586322da89c24fa490941ea83d587aa80303f7a941852c8a5814b6296837086de009c1a7834e173d49720004d5ea3f135784244848108e1d763cac7a9910a1eb23d687ac002f4e787efd11c1fbb3f2e8599238a167032, 0x35ba3114bf89d813e727c34ca098a532f27ac4f889e2036e06db0dc81b7c36e804d00025df11d7177b4f8445808af86a10c5e5d01385175901e, 0x2c28e8b0b0815fc2c5858c0b1239e10a1a64d3d828e58b171628487a1f8d16400014be609cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a9c1130a26184c3298ad38ea6e94dd43dc483e8eb71cdc1088f5b9fd222ae45608aca2b3456e8ad515a22b6227c44fc8a0114222864505147228f45268a451482292213a42790d6109a213682bc80810120fca1f98c3d246541589a0d0bda47642f8456c8ad115e22ba457115ca2ba457c8af115da2bd45808afd15c1878066, 0xf751ee83de47bd0f814430922d30a26184c3298ad3771fed3fc28ac91589ebf3fb27f6d157a2b03fae3dd87bb8f781cda8508239047408e611c4188152546e85499326058e4aa215fc2c5858c0b1239e10a1a5f304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d4c9a7b051cb162e2c647ad8ff01fdf3fbc7f7521b8f734fd23a2040a88141632205c40b008601080c242381feb000292392f3a5e94bd49859317a53a2a4862a91ff18a93fac915522b1fd8065, 0x44b4897112ea25e4f8038b0f3b248044b08964890112144c6000524726544cb0996533da67c4cfa99fd36526cc4d9c9b3d36c0e341c5638cc7170e2d1c5e2dd127c1e77486479f92842260028, 0x5670ade3ae02b80b314f646e31221161a0ad015d42b48b304fd46e2d1c99615011, 0x7f28fe71fcc3f91033271040ae99cc5f68bec17de2fb8e229c463890711ce2226da4db83f746a30d4c1a90351c02080033b22908102e206701e, 0x99c1aaa26744cf1a0c3b408f804a49a104ee8267d2649a0b00d, 0x145628c45190a241bbc81792470b4d37429a786870d0d1a5634406878d134b7884b134ea6a04dac9b8c727212d4c2c2ed129502c005822ed41610bb337d0985d3170b863f7c99482e71a494e369c001b09f924cdc995d329a6554cde995132b26584cb29abd358a6b34d689ad535b26b24d60700920693a838069b9072a1e9e208c2d305a80b4e154486dc265957b4c8e99c842a1bf94bce982530da687174c72c12f4a5ea4c1498692f40bae0a7814ec264853e33480629246a648495e55e91c39bf84d109364dd1240441d87564eac1d783aee75b8eb68d253ade9078eab9e2c47d66a585160d2c145a34306efa05f4ce631f851e0a3b146e28d851a8a3d14663f7d3c8903f41d4325c64b0cab193232600090c9a19363270e768ca6194a32a86538ca849d673bd20b9cee4d9096cce6e1cdb4830736936a0cb30ef4886932527924cce99a1335a66d12289610cbfa4ec40c08fb8d4d1a9b47da734134a8fe24b8035686b10a831fe69e385400a8935ba81f4ed4a0641fc235586ac8d581a4834986950d2715ea87985680acf15d22b6456c003615b42b6c56e22c64dfe9c69322a6a94d549aac5860b0f161c2c284878910122c24345d91f6a4c6c991932d26004cea9ae05ec9c30000297e12fca5fb4bfe1f8928d98774c7098e532da6604ce898dd3309c0147aa65f8db2a3fc36cc9664d939b2647ea6c6d34e1d713ae875c0ed1242240c6755920f9a91118, 0x36134929c6d38005ce2d060625246a6524ca8995932c26594cae994d32aa66f3f2472c130526454cb622c8c9926164c8c22c10cd232c2d8200052fea5fe4bee97f132d26000c3c055c0ce019b03104a0d19f16c24bec97e12fca5fb4bfe99d9357a6b54c3497a130ba6b34d689ad935826774bce97a52f526ff4e34982530da66e045 ] def policySharedUnitFixed0HintLeaf76 : PackedNatTable.Table Nat := .leaf #[ 0x714207740f081f07f90e271c528680f331e6540f681e8f399e7200e, 0xd3d1a7c34f000f8dfa1bf237ecf251e49009, 0x5ad0b42168cb2600010b4c9f0d25916430b5c16b0b26a39700d, 0x38006ff8e051bfa3f453f6a053485e793070090381c043fb103a0fee1fda81cd3398be54b4a70f936d0fdd1a8c35306a40d470082000cec8a42040b83f947f38fe61fc881993882067203e386c70d0e161c2a386070b8e193cc079850600e111c26796932527f34f589ae53d69e5f3cbc7990f319e62418a81c92351e4d043, 0x9fc481c903a465c98e86988d641ac634c06ce20a74c7898f531da63f49ee75f12119d7d41be3fbc7f82235491c9ae460d0c19183c306c60e24e438e69040e390e0f4b8c38307068e141c249fd07740eea1dd23b9cfa2a44d3e8c3bbc7770eed1de2325000b9f4d1dcc40f88229040207e83a936a0cf6192a324c00b001a1912322d3e40c97192c32ac64c8c980024326864d8c9c39da9bfd38d26364d549aad3308ca6194a32a86538ca83dec8311334a66b4d3298e131ca6604cce99a133626744c6e9a6933524eb39de905ce7726c84b667370e6da41839b47365072a0eb41c87d292808fd81fa63f487ed0fd91fae8161230a054205440a4816902c1fd23fa12ea20d048d083387ea0fd6205c40dc8180d8b17f02fd80051c4b41a88375069902b17ee002c5f90bf417e62fc40038bf020169d286c6905b4bae308d06c25f24cfc9a0047b9bd84be2982530a261d4cf699f133ea67f170e725130526184c32987130a8c3640669aed35e26bd4d829b7136e90351adc35d86b80d6f1ae2885d35fa6c04d7c9b0936da4f43b72909106ca4e54150938d067a5031a12284c5090a101414282cd398a0c1a149fbc82110412088410c6578013190c839d235a0e61a38346c6918d1d15506c2d30926134d3e2af8d8624da3aca9074eb20b57157a2b285600abf1588936cd86a3f3375a33e467fa5bb196c838d381a71c4c4c99287150cd619aa33506698cd14b6e8485325a6724d429a8d352a6a64d949b3136726cf3a2e746920c9e754d969b35364a4ed03125a0c000a5f84bf297f132926544cac996132ca65a4c009234eaa23e934d269b91f41d5348607958f2ba075143, 0x21107e716549db43f6987c430e2cb8217808937142c68dbc26824d0841a858ea7bd434e860d0c0a18042fc9e885919b800fd8201c3f787ee00fe10fcc3ea3c242fe860906520c9272e832015d0af8424a98ad26e13a446aa3a2040a98a908e411d02398471062054951ba152608de06dd28e929c088e11ec23d0445088292a0a7b237529ee6de840a0b19102e20580430084061211c0ff5a48e4bce97a52f5262f4a745490c5523fe370a61e82120425083210693d083f007de10981f903f107e80c593c0249e494a52bd1b714ae08369d14216842b01149d0c14c81aa04c8098c0dc81ba04f406ec13a279e26bc8d2c13e135b46984d411a4929f267a8d209c28273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a6a7bb05b8541930926134c38985c22402e305c40b7c14d02de311e985130b26184c32999530ea67d4cfe1ffcc4a00014e08999933da67c4e3a989d33f26804a4a4f109e2a35929f098b130aa7da04bc0974130025f03984cd91a2933503a094780e501cb038607113a881c1064a0c9c19313fe27fa9c44955026504cc9dc4402880406760ce8047833d28308f009a093402556539525303ee06e40e401c7838907142f701c583ed4e900e081c2038307000dfc1bf149a06f80df53df83cf4a6452201d683ac07980ebc1d703b007969e4ca42146b28d48da0a3483cd4f949290a21a36a288851151b014462958903ca27945446c852b41dc83ca077e0ef804b809506800d11250147846ce53551b694d812a, 0xe794f5c3a2859f8b3e167a6e5d2011eda1430285c50a0e7d49fc69d53871ec2011, 0x27ea42a0853cf5fa14e1ef63df07bea5d11d4e3a98738a4fd3dea7f8cff1043d087811f823e84402a648dd8a79913d229a978919827034e38985c220844508aa1118223a2644916985130c26194c5498ac7b88f7208be116022c845a1d6c39b0736a14208e411d02398471062011c0ff58001491c979d2f4a5ea4c2c94e8a92152546e85499326058e4aa215fc2c5858c0b1239e13ef8b4016842d0459e0b3b372c900cdcd90741ff63ff47fe0db3411a918d09e0ffe1b76389863e806f13de27ccf38a5043d828e58b1716324c5e7ad8f84950c2a167f54fea1fd33e108dc473704223d6e90dcfe914f746e053d9254262c4c2a404d058a6f94df49bed1518b300adc15b42b405670ade3ae02b80b314f6436d13db82a1271277fcdc624422c3458551c81b8b09d, 0x37046ea214c18d2939c6df106c20d684ad0ce9e0b4338375c6ec0ff8427a84f909fa7b83c14821cf129e0820ea9f7c5a00b4216822cf059d9b9648066e6c6e00dc31b8431387e40ff61f8c3f1d3de214b429236fcf04a42a48c03f247df0fc01f7e27d901ea45f409040006da8db71b6c36f13d90b310ae815cc2b7961a47246e307130c7d00de27bc4f99e714b8878010490b0c161e2c385850911326497e12fca61b4c8c99693000bb44a54700d2639b6547f86d982b385680aea15a459821434be609cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a993473c05890b18162c2bf858e4f080b8417182e205be0a689e2a359278c0a6c14f82e905409fe04fd09fc49a2696462a8ba449cc39f527f1078143c288451009a935089c3d0a2a35a27109268239047408e611c418804703fd6000524725e74bd297a930b262f4a745490a92a3742a4c0b2016882d0057e4e9d1aa13ad3faa7f50fe99f093e108dc473704223d6e90dd2a896322c5c8e58f609b8b472658550232462408e78392159e0d0d3, 0x41c69c0d38e26264c9432d867fa5bb19f29fbc5ab8abd15942b0055f8ac449b66c351f99bad49da38a866b0cd519a8334c668a5b742420005325a6724d429a8d352a6a615829b2936626ce4d9e745ce8d24193cea9b2d366a6c9030, 0x110a0fcd1f983f2c80090f81f9c0194897913022628cbd245a6e94dd49bdd2f0227b441a919102526c41b5237686ec89e616d42dbc5b48e3641600a849c4a62b08a88b6131626b24d7c9b087941f9316aa2d645ac0b5615862b0926d9bac480c6ead358a6bd4d7e9b01360a6a020260b6c16d029f053692689c4235741629d1d3c7a6964ed67a00de01b6236bc6d845840b6d443692392fc25f94bfe9901321a6444be49a013690ce941c46c4c000a61c4c2e9855339a6a54d4c9a9135125f14c28985930c26194c3a99ed33e267f4da69380db0240937767898f139df4076, 0xb6814f829b4fb292689c402db05429ebc9c4a35700b, 0x84908341055204e849880a1013416292392f3a5e94bd40b7929293c44c3a2bf057c24dc41980ae5091a10542446d3815e02bb05740b6415582ac2746922c15082db05b40a7c14d02df100c0b80224150600029849309a61c4c2e9ff1316261529f08f049e2938846ae4e2530a26160554986130c9393277e4eec15682ae055e409415802b1272c919c9ca939446a08d549d213a504f, 0x9ec453588c800ba9f9807100e4490c6b347428e841d0e3a1837486eb49767b4521e1ed00de01bc837886ee01cc5e3137f178d01b, 0x1d4018003100e301ca921802f08cf021a014c08381084fc84248248109609245519239216a128c1288250849c093612907c584a51f1485dc07000df024003848eda6fd23b497cc13981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d353180eeb2318462c31916d44e127d253310a5914b0296c52d06e10dc0957834f069c2e7a92e4d5ea3f135783a0c37286ed0dd01ba925d9786475e7b3c84790912120423875da16648e2859c84a0f541e563d4c8850f591eb43d600179fbf44707eecfcb8f561eaa00c0fdea5063ff2915caaa955046f466e05a184874a7a12242450945091625113f38f52447a9bb08858f2c1e683cb8796802c3f30913d11c8e7f0aaa3a082ab960648767b242b0254e0ab01564735855a1cd47ad121a96072c1c9ff893ea48b4bf6058c0bf817e02c20575160a6044c4897f1245124a4674492d300a6024c06981434a8691006a1a6034c868f00661a387a8a32a1e723cec79d0f4b1e7a3cf07a125cf1e823d007a425d01cba8b6532926604cf699f133f26804d429a953530b7443d00005329a6664cfa9b45372a4fc1e7e3cf801886903f4e9140fd326ed3f7492e0cdaa3da2a8054f48f5a4c60ec, 0x9f78fad9f5a3eb27d60fab9f56007 ] def policySharedUnitFixed0HintLeaf77 : PackedNatTable.Table Nat := .leaf #[ 0x847a177000297cc13981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d353180eeb2318462c31916d44e127d25330266214b2296052d8a5a0dc21b812af1abd47e26af07c504a8094e129024d849c2ab412744a327e421241240aa404922a8c8de50b519b846fa5540aaaa37c3ff242507aa0f561eaa00c0fdea506212242408470ebb1e563d4c8850f591eb43d60017a73c0d3a1a7d3f4017802f405e40bb010024be8cdc930010101f89f8940004874a7a54f5243a4b92e7a7efd11c1fbb3f2e8599238a16706e, 0x5e00bd017902ec040092fa3374fd0040407e08ba1214027804e809c44f424e44818909120e24207ae8f5e1eb83d887b1a0311236042c0291988014025084a080a20142012405280a622489f606041c660002923938da7004bbc89a08d1a3d923447f1d2289fc132ec8f50cd52691234265ecc9ca4870d3e1a753f38944091e123824504895002038006f812001c2476d37e91da1d061b9437686e80dce01d80019786475e7b3c084010700a647acaa02378336a5cf525c9260063, 0x1da03b807780e5490c4778076005e119e043540124c600c, 0x5ea0bd217b42f705ef2d500005245a5fb4c029809301a6054c4a17c44e009bf0be817d80cb27fe49665a551f196944cb85a48b4896902d1e5a1c2f585ec0bce17a13c285e33e1419ec5328a5f14c2298052ea58b35826b252fa25fc4e4c99313940e7f0aaa3a082ab85580ab239ac2ad0e6a3d6890d4b03960648767b24b43168e2d1a8e6830386084eb22d0c7428e841d0e3a1837486eb49767b4521e1ed00de01bc837886ee01cc5e3137f178d14bc29ac464005d4fcc03880722486359a5aa51cd9688069, 0x1ed63da87c60f6c190093a0fe6a45850062d0c7a9223d4dd8442c7960f341e5c3cb401606903f30913d11c85604a9c583834011092210165c6418c8d4f9033e467fa5bb196c838d3250e2a19ac335466a0cd319a296dce96a6654c969b2936626d019c49ffc87290e421e6439c873002b21d043a487522064bf097e537fa5fb4e3497fd35526ab18107199247271b4e009bd12eda1f543e891f90f99d173a349064f3aa6c949da7355274963b4e165ca473f85551d04155c2ac05591cd615687351eb4486a581cb03243b3d920a640d5026404c606e40dd027a037609d13cf135e469609f09ada34c26a08d2494f933d46904e1412f133503a094780e501cb038607113a881c1064a505d3102717067250589fea71125544aac6909f684d489a89330a6ce4d9e9b2d366a6d71cb0305412e826004be073013282664ee22014402033b067402401a08343494050611e0134126804cd91a29c6e1de63b287648ec61cb2828533026a14d469a9535324fb3e4e9128fa80f041cec39d47398b8849c27ae921b1f6950089f946cda0a74c7898f531da63f4be499f934008f737b097c5304a6144c3a99ed33e267d4cfe2e1ce4a00014c14986130ca61c4c2a30d9019a7034e38989935da6bd4d7e9b01360a6be4d849af134c9fcc0fc, 0x4fc62edc5dc1f63491c97e12fca5ff3812248c49222c94916058c0bf817e02c20575160a6044c4897f1245124a4674492d300a6024c0698c8cc70bb902009f8940004874a7a12242450945091625113f38f52447a9bb08858f2c1e683cb8796802c3f30913d11c86950d2200d434c06990d1e00cc3470f5146543ce479d8f3a1e963cf479e0f424b9e3d047a00f484ba0397516ca6524cc099ed33e267e4d009a85352a6a616e887a0000a6534ccc99f5368a6e549f83cfc79f00310d207e9d2281fa64dda7ee925c19b547b45500a9e9c0a070, 0x2c68b25245a6014c04980c49209234fc62edc5dc1f63000292392fc25f94bfe121d29e84890914251424589444fce1a7434fa7e802f005e80bc817624be8cdc930010101f8921d25c973d336a8f68aa0153d4c6470245dc8100381466380bf817e02c29dc02fb08f44b0223ac47608ee4afe234c46a093d11b2236846d8f6732f4027045e090c121622e4c9c997c32f664e9345a6903f94653d1eb99494966492919d124b058, 0x2980528049014202887db009f014089e804e009e013a246c08580523310242845d193932f6468449c99aa4d22468922e11a322489f606909f684d489a89330a6d71cb09f9c4a2048f091c122824484874a7aa0013f128071ed63da87c60f6c190093a0fe6a4583f981a0088491080b2e320c646a7c819f233fd2dd8cb641c699287150cd619aa33506698cd14b6e74b5332a64b4d949b3136726cf4da0338940327e51b36829d31e263d4c7698fd2f9267e4d0023dcdec25f14c12985130ea67b4cf899f533f8b874d320420083805300bc01888f59d173a349064f3aa6cb4d9a9b252769cd549d258ed38597291208240c4848907120a012c03000e332ec8f50cba88c41184016cca08f52447a9bb087290e421e6439c873002b21d043a487522064bf097e537fa5fb4e3497fd35526ab18107199247271b4e003054e3726f44bb687d50fa247e43e6442c7960f341e5c3cb401606903f30913d11c88e711e2960007680ef01ca92188ef00eb2a7a55011bc19b5053206a81320263037206e813d01bb04e89e789af234b04f84d6d1a6135046924a7c99ea348270a097812e826004be073099b2345266a074128f01ca0396070c0e2275103820c94a0ba6204e2e0ce4a0b13fd4e224aa813282664ee22014402033b067402401a08343494050611e0134126804aac7798eca1d923b1872ca0a14cc09a85351a6a54d4c93ecf93a44a3ea03c1073b0e751ce62e20e4a00014c14986130ca61c4c2a30d9019a7034e38989935da6bd4d7e9b01360a6be4d849af12709eba486c7da52ef2268133, 0xbc017a02f205d8080125f466e9fa008080fc1174242804f009d013889e849c89031212241c4840f5d1ebc3d707b10f63406202804a109410144028402480a5014c44913ec25de44d0468d1ec91a23f8e9144fe0997647a866a934891a132f664e5243869f0d3a5cf525c926003a, 0x15c02c218140b101634592922d3018924331c492d1ce924a030a06180ac85ff43a6980530126044c4810e021b84214a6e53ad315845708ac85451b88479084439b883f0f7022c2a01480982db05b40a7c14d82dd49344e211aba0b1459a854921ba0b52a1a82d0f5b952f46e454293b0263109221240aa404922a8c8de4aa2854301be048007091db4dfa57cd3b085562c0a1b9837286ed0dd01ba925d9786475e5e1486709234fc62edc5dc1f6338122ee408027e25000121d29e84890914251424589444fce3d4911ea6ec22163cb079a0f2e1e5a00b03481f98489e88e54048d213ed09a9135126d71cb03c1073b0e751ce62e212709eba486c7da448d810b00a466207b58f6a1f183db064024e83f9a9160fe60680221244202cb8c83191a9f2067c8cff4b7632d90718e2a19ac335466a0cd319a296dce96a64b4d949b3136726cf4da033894030ef31d943b247630e5941429a85351a6a54d4c93ecf93a44a3ea0439487210f321ce439801590e821d243a910326f44bb687d50fa247e43e60a640d5026404c606e40dd027a037609d13cf135e469609f09ada34c26a08d2494f933d46904e140e8251e0394072c0e181c44ea2070419294174c409c5c19c941627fa9c4495512ab0210041c029810d119e03a94040cd93a42393d0968bb44a540b001608bb505842eccdf426174c5c2e18fdf26520b9c9abd358a6b34d689ad535b26b24d60700920693a838069b9072a1e9e49f4338c66c0cdd19b4336d2781d22483674b864b8c961956326464c00121934326c64e1ced194c32946550ca7195093ace77a41739dc9b212d99cdc39b69060e6d0c714f6a15812a7160e50089f946cda0a74c7898f531da63f4be423dcdec25f1170e725130e2615186c80cd381a71c4c4c9aed35ea6bf4d809b0535f26c24d789a640c781990330063493aa33d24ec39fc2aa8e820aae15602ac8e6b0ab439a8f5a24352c0e581921d9ec91050120c2a104ab095412b52a015cc4ec49e1931904ba0972130c25f04bd0a3c9530ab7a3812adc98d028e051b0a46147429c05364eca579925715ce4e0e573428a05110a50149c01215e34956146028b851a0a3214584e309c7138a2711194a685105e20b829480230a5414d02960027105820c105008851106221c443088211020080888111122248955347a6aa4d563020e33248e04bc4cd460a825d04c0097c0e6026504cc9dc4402880406760ce804803410686625138207ff311e985130b26184c329ed930ea67b4cf899f533fa71d4c4e99f934024a028308f009a09340266c8d14e3710be217a42f085d8f6e1eae892d32a26564ccc9a38f8e26654a0486cd23ca1b64dec977512198fe479663fd3430880108621084228844106620c843e257a10f621e4446a57b109a6fe53438ba6175c14f029d84c90a7c66900c5248d4c9092bcabd238737f09308c5d23c5319663f4c5ca4ad317068ccd1a9a342b908e0cae3955e2aba8e24c5a9a494e369c001b09f923960982930d25e84bce97a52f526ff4e34982530da66e4cb0996532ba6534caa99bd26311eb3a2e746920c9e754d969b35364a4ed19661de910d26454c949e49333a6684cd699b448a2584121e244048b090d17647da931b26464cb4980133aa6b817b270c0000a5f84bf297ed2ff87e24a3661dd31c26394cb6998133a26374cc270051ea997e32fe93b0e6aa4e92c769c2cb9499b547b45500a9e9c0a43a85a7919d9270299, 0x1c0109807020e093a483ed071c0e341c50389071e52541b903ee4f4252b51b49454289e8d8ca56035f069042e485c03eb295291dca0d833f288c91cc1bf837e29340df01bea7bf079e94c8a4403ad07580f301d783ae07600f2d3c9948428d651a91b41469079a9f281dc83ca077e0ef804b0094067851e11b3a4a428868da8a221445046, 0x387c8368dfc003c9fc869f8d4049e476250970e201c3c887c6f08de01c46387470e001d21fa43f887fa2334dea97711111e67486278b53b1a6e21c4437e06fb8ff14fea2b04817a0dc17f42fe460f8bfc17f600185fe8bfe17fe717c60d0c19183c306c60e24e438e69040e3926ba4b4c7138e26a41138989b7c8191031206c40cc6100008184235e90cfa31305a6926d3318e4d3d3299907240e471c983924725092d49f27a4d2199e924dbc40206be0d821afa35f86c0a2123e38061d36e24f63b90909505224f541ac91a506aa7aa16a42d505a98b51168c6e992029ba7141096285050a0b34e6283068527fa1a38346c6918d1d3aca9074eb20eab3df23f787550ead1d587be9220205d4ff63328e8990da4b242a9c5770a9615de966d0f208b6117022dc45a0b10386a0d9132026434c88990926e993447a064d47450b3f167c2cf4dcba4023db439e450c0a17142869d53871ec2188288393618c49394e36886d20da3484c77bceaa23e934d269985a38b451aa434a05670acd15986c9457a0aea15e62bb45780b5c22742d745af0b5f448435445a5803a3b349aa0dda228d480e6eccda023f636926c68eb91d9c16942d2401d8a7c14fa935cdd024de4fdc31f851e0a3b146e28d851a8a3d14663f7d3c88cf919fe96ec81fa0ea192e32586558c991930004864d0c9b193873b53308ca6194a32a86538ca83dec8311334a6994cc099b134d266a49d673bd20b9cee4d9096cce6e1cdb4830736936a1042208241108218caf002832c865b20e31c54335866a8cd419a6333d2779d1a483279d5364a4ed41ce91ad0730cb30ef488693c926674cd099ad336a4ec40c08fb8d4d1a9b47da73407f08d561ab235606921da24844818c7f125c01ab435885418ff3150a2a112c70a7814f629c93ee0e7d4fd885410a79ebf429c8dc489e11444bc28a8937c0f7b1ef83df52e88ea71d4c7bd4ff19fe2227a45352f123304df29be937da2a31b689ed087ba20c1f9a3f307e5900121f03f38032912f226044c5197a48b4dd29ba937ba5e044f68835232204a1b5436c06d60c5c00da01b04f68e684b5a7ac8efb2429189631280338c4c18d29ed52739ca83bfe0a640d5026404c606e40dd027a037609d13cf135e469609f09ada34c26a08d2494f933d46904e140e8251e0394072c0e181c44ea2070419294174c409c5c19c941627fa9c4495512ab50146fe935b887a10ec95e444c8847113821244240022109621b926198ce479a645c21e94f308b039c111b847208e811cc238831008e094e8a92152546e854992f926d2202c10f023f047d08801109254153246ec82cd27e950b10d87b7931da63f4d143ed427904f109de13b82762546405e98e931e263d4c7c3ca116c22dc4c56992936726cf199c9b2d366a62c2b3456751c1202e0340067c7dc81a203420244943a45d250c0625246a4fe49ac6b553c70a8015126b7503e9da91a4c34a86939f914d362b58d918eb23e022bd50f30eaf1d5c3ac47580a92008000f453a0fd0376298d93398b4d16982d405a70aa2436e132cabda6474ce42150dfca687174c72c04590bae0a7814ec264853e33485a0d2fe25fb4c7098e5324265b4ce898dd257957a470e6fe134424d937449010dd0a69e4b208148f7f24413dfa2b405678ae915b22b6001b0ada15b62b7116326ff4e3497fd322a6a94d549aac5860b0f161c2c2848899324bf097e530da6464cb498005da252a05800b045da82c217666fa130d25e84c2e11bcff5a5e74bd297a9317a62e170c7ef932905ce3492276d298280b08369d1525303f007de10981f903f107e89294a57a36e295c9f50216842b011453946770cc919ae332c6661bd84be298245c39c944c14987130a8c3640669c0d38e26264d769af535fa6c04d829af936126bc49dc745120d1d3820260b6c16d029f27108d5d0588ce94e660a6c16ea49a165c10bc044a74106266e282140427085410a40d203164f009ff524f14e04e0c537cd2426574ca69955337a6544cac996132ca6af4d629acd35a26b54d6c9ac93581c02481a4ea0e01a4c736ca8ff0db30c0838cc923812f13354e369c0060a825d04c0097c0e6026504cc9dc4402880406760ce8048034106869280a0c23c026824d0099b234538dc9664d939b2647ea6c6d34e1d713ae875c103218944e0899983ff988f0002985130b26184c329ed9332a61d4cf699f133ea67f4e3a989d33f268040ec7920f349e68357, 0x14c0838108500c3bcc7650ec91d8c3965050a6a14d469a9535324fb3e4e9128fa810e521c843cc87390e6005643a087490ea440c9bd12eda1f543e891f90f982990354099013181b9037409e80dd82744f3c4d791a5827c26b68d309a82349253e4cf51a4138503a094780e501cb038607113a881c1064a505d3102717067250589fea71125544aad3f28d9b414e98f131ea63b4c7e97c933f268011ee6f612f8a6144c3a99ed33e267d4cfe2e1ce4a26184c32987130a8c3640669c0d38e26264d769af535fa6c04d829af936126bc23d6043446780ea5010393d096a6e41ca87a7927d0cb30ef4886932527924cda93b064b8c961956326464c00121934326c64e1ced4c6c99846530ca51954329c6541ef6418899a5335a6994cc0999d334266c4d3499a92759cef482e73b936425b339b8736d20c1cda031e06640cc018d0312923493aa33d24ec20a02418542095612a8256a5402b989d893c32632097412e426184be097a14792a6156f470255b931a051c0a36148c28e85380a6c9d94af324ae2b9c9c1cae685140a2214a029380242bc692ac28c05170a34146428b09c6138e27144e223291132211c44e08491090008842598ce479a645d342882f105c14a4011852a0a6814b0013882c106082804428883110e2218441088100404440888911244aa9bfd38d268f4d549aac6041c66491c097899aa71b4e00305412e826004be073013282664ee22014402033b067402401a08343494050611e0134126804cd91a29c6e217c42f485e10bb1edc3d5d125a6664d1c7c700c3a6574caa999528121b348f286d937b25dd448663f91e598ff4d0c22004218842108a2110419883210f895e843d887a10ec95e4437086d498621e4446a57b109a6fe5304a687174c72c13052645116464c92f3a6164c3699185da252a05800b045da82c217666fa12f4a5ea4c3497a130ba62e170c7ef9357a6b14d669ad135aa6b64d649ac0e01240d2750700c5d7053c0a76132429f19a42d0600052fe26520b9c995132b26584cb2996930025f84bf297ed2ffa6384c72992132da6744c6e92bcabd238737f09308c5d23c5319663f4c5ca4ad317068ccd1a9a342b908e0cae3955e2aba8e24c5aa4c61af, 0x3a8030006200bc233c086a4c6007, 0x5170a34146428b15c847061460ae627624f0c98c825d04b9098612f825e84bc008c0004ab7a3812adc98d028e051b0a46147429c05362bcc92b8ae727072b9a992028a0511138c271c4e2882f105c14a401198b8346668d4d1a05280a4e0090014852e0a62578d25595c7039, 0x10ce21a4434086610ca63911e3a171115a209041188af115c147cc96a7083164038006f812001c2476d37e91da4be609cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a98c026004c2098212fc25d80450a7214dcaf324ae2ae08e00ab8a635104a12bc25904b12ac48dfcc59889e11522229262088c11162220442230e106a210041f883410620098012884a10e095e140698ed31768f0cc5e2686108c20c041600273172640d1e61904115820b4014052c4ecaa03c4e223291106221c44308821102008088811112224895534790be217a42f085d8f6e1eae892d3471f1c030e995d32aa6654a0486cd23ca1b64dec977512198fe479663fc44c88471138212442400210a562134dfca687174c72c132288b2326499185d7053c0a76132429f19a44c90996d257957a470e6fe126118ce479a645d34284ad4a8012a82558542090620a14030ef31d943b247630e5941429a85351a6a54d4c93ecf93a44a3ea0439487210f321ce439801590e821d243a910326ff4e3497fd35526ab18107199247271b4e003054e3726f44bb687d50fa247e43e6393d096a5e74c2c986c5da252a05800b045da82c217666fa12f4a5ea4c3497a130ba62e170c7ef9357a6b14d669ad135aa6b64d649ac0e01240d2750700d3720e54194a32a86538ca83dec8311334a66b4c7098e533026674cd099b133a26374d3499a92759cef482e7a7927d05604a9c583814c81aa04c8098c0dc81ba04f406ec13a279e26bc8d2c13e135b46984d411a4929f267a8d209c2825e04ba098012f81cc266c8d1499a81d04a3c07280e581c303889d440e08325282e988138b8339282c4ff538892aa04ca09993b8880510080cec19d009006820d0d250141847804d049a012ab4fca366d053a63c4c7a98ed31fa5f24cfc23dcdec25f14c12985130ea67d4cfe2e1ce4a260a4c30986530e2615186c80cd381a71c4c4c9aed35ea6bf4d809b0535f26c24d789a64084010700a6a03807180e5490c47acc5aa3892aba5578c95a4c51cfe155474105570ab01564735855a1cd47ad121a96072c0c90ecf648e830dca1bb437406ea4ffc063c0cc8198031a0624b41a5f84bf299482e726544cac996132ca65a4c00923493aa33d24ec49f5245a5fb02c605fc0bf016102ba8b04000a6044c4897f1333267b4cf89a01368a48a24948ce8925a6014c04980d302a4bb2f0c8ebcf6798e51d4 ] def policySharedUnitFixed0HintLeaf78 : PackedNatTable.Table Nat := .leaf #[ 0xb6944382c205b6a21b4be49b492701b6047f42da84f30dd91bb436a510a0fcd1f9881293620da23bde310510726c3189236906d18c4b1894019c6260c6949ce72a12131ca721ee3f2c80090f81f9c0194897913022628cbd245a6e94dd49bdd2f0227b441a91911061df43c4e7898ddda4091c6c9fdc45b19351cf89fe489e11444bc28a8937fa71a4d549aad37c1bfa4bfe99145860b0f161c2c2848899324bf097e530da65a4c002ed129502c005822ed41610bb337d098692f426174c5c9ad935926b0380490349d41c03498e6d951fe1b664d6e2e18fdf26520b9c995132b26af4d629acd35a26b5160022e045b88b4162070d41b226404c869911323264249ba64d11e81b58053206a81320263267a8d209c2a81018e29ed4d24a71b4e00276d2981a484cb0996532ba6534caa99bc66c9d2119c474b5325a6ca4d989b39367a80c19c6336066e8cda19b693c0e91241b3a5c9b403f38b2a4eda861c58d1b784d049a108350b1d4f7a869d0c1a181430085f93d10b23370085fd0c120ca41924e5d06402ba15f08495315a4dc27488d54744047208e811cc23883102a4a8dd0a93046f036e94740dc81ba04f406ec13a279e26bc8d2c13e135b4698097812e826004be073099b2345266a074128f01ca0396070c0e2275103820c94a0ba6204e2e0ce4a0b13fd4e224aa813282664ee24d049a012ab26a08d2494f929c0340067c7dc81a203420244943a45d250c111c23d847a088a53d91ba94f75016106d3a2a4a607e00fbc21303f207e20fd125294af46dc52b93ea042d085602293a0831329ca33b86648cd719963330dec25f14c122e1ce4a260a4c38985461b20334e069c7131326bb4d7a9afd36026c14d7c9b0935e24ee3a289068e9c101305b60b6814f938846ae82c4674a73305360b7524d27720fda1fb040387ef0fdc01fc21f8441495061f51e1187c102a62a42140427085410a40d203164f009ff0402880406760ce804803410686625138226660ffe623d30a26184c329ed9332a61d4cf699f133ea67f4e3a989d33f2680494050611e0249e29c09c18a6f9b7a10282c6440b8816010c021018484703fd6000524725e74bd297a930b262f4a745490c5523fe370a61e927f1e801b1, 0xe85a58d5144842d7c5af0b6116c02d705780aef4b362bb855390da3f269a885aa8b5916b02d58561a1214d429a8d352a6a649b66eb12031bab4d403ca116c259243c82a58dd9a40837682b585678ae915b22b6001b0ada15b62b7116326a91810719860a9c6e4b326c9cd9323f536469aa0ecd0a7c14fa29e053d8a724fb839f53f62150429e7afd0a704581ce093f4a85a371227845112f0a2a24dfe9c6935526ab4df03dec7be0f7d4ba23a9c753223708e411d02398471062011c129d15242a4a8dd0a9325f24da440590599ef53fc67f8821e843c08fc11f42200442495054c91bb14f3227a45352f12330502298b137ca6fa4df68a8c6da27b421ee88307e68fcc1f96400487c0fce00ca44bc8981131465e922d374a6ea4dee978113da20d48c881286d50db01b583170036806c13da39a12d69bfa16182c3c5870b0a1222931cdb2a3fc36cc9adcf591df64852312c6250067189831a52739ca83bfe0a640d5026404c606e40dd027a037609d13cf135e469609f09ada34c26a08d2494f933d46904e1412f025d04c0097c0e61336468a4cd40e8251e0394072c0e181c44ea2070419294174c409c5c19c941627fa9c44955026504cc9dc49a093402556a040638a7b519b274846711d2d4c969b2936626ce4d9ea0306718cd819ba336866da4f03a44906ce9726d00340067c7dc81a203420244943a45d250c93f926b1ad51fa06ec531b2673169a2d305a80b4e154486dc265957b4c8e99c842a1bf94d0e2e98e582645116464c930da646176894a816002c1176a0b085d99be84c3497a130b846f3fd692392f3a5e94bd498bd3170b863f7c9abd358a6b34d689ad535b26b24d60700920693a838062eb829e053b099214f8cd216834bf899482e71a494e369c004eda5305016106d3a2a4a607e00fbc21303f207e20fd125294af46dc52b93ea042d08560228a728cee1992335c6658ccc37b097c53048b873928982930e2615186c80cd381a71c4c4c9aed35ea6bf4d809b0535f26c24d7893b8e8a241a3a70404c16d82da053e4e211aba0b119d29ccc14d82dd49342cb821780894e820c4cdc50428084e10a821481a4062c9e013fe880510080cec19d009006820d0cc4a27044ccc1ffcc4780014c28985930c26194f6c999530ea67b4cf899f533fa71d4c4e99f934024a028308f0124f14e04e0c537cd2426574ca69955337a6544cac996132ca65a4c0097e12fca5fb4bfe98e131ca6484cb699d131ba4af2af48e1cdfc268849b26e892021ba14d3c964102924d71eb, 0x1eec3ddc7bc1fe03fbe7f78feea43748aa91587ba8f741ef23de8ff0a2b245627afcfec9fdb455e8ac0feb9fd8018, 0x358000052fe27864c649d6c305860d0c181824b55239f2d5698a53d38a6714cc6b2926aa662014, 0x12c839e84b289664f52675921c096012d625b04b4896a33b48f74ced99d5010, 0x72d0e521c88391872f0e4828053ca221e369e4e68da702bc057642890f3a62f4b3886249d2a3f734c08edcbde97c20e5c277d10b2616216094b4175030005fc420c18303054a5c0c10046008e06269d113af83021012861c58d1b784d049a10c4e215827ba867933909dc0e3c1c7406d80da0e2e9580f6226304ef0287cd4189a534289dd934b17b023ae8ec8d25a6ac4d2e34205208a4414862550d53a70d3aa435746ae0d5b1ac22a080218a763b5276992798d5722ce45986ac1da249047684801897812ee25cc4b9097a4b0e82692fe275b4f4ea05535719e933c88f7d04c902105660ac815782ae163c42d484f909c00fa44ec89e27e942a0853cf5fa14e08bc9e6110ca48e4bce97a52f5261b4be499ed33e26804da44059059a3711d1044f48a6a5e246609c0d38e26f94df49bed1518b300adc15b42b405670ade3ae02b80b314f646e31221161a2c2a8e40dc58f7350263e0510c248b4c2810f421e047e08fa1100a99237629e698ad3771fed1cda7fb13eda62d4c9816392a8857f0b1616302c48e784fbe2d005a10b4116782cec73ea4fe372c900cdcd90741ff63ff47fe0db3411a918d09e0ffe1b76389863e806f13de27cc4fd09fc49a26964f38a5043d828e58b1716323d6c7f590bea1a7430686050c0217e4f442c8cdc0217f43046de89caa34f418c41e050f0a21144026a4d42270f428a436c4d20a19134e269804027dc08369d1525327d4085a10ac045274304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d29ca9f413ed02d2057e41a416382c850244eb523693a749369dc83f687ec100e1fbc3f7007e30fa8f08c3e081510282c6440b8816010e021421f0442495062a91ff18a9342a8fa90f290f521e843e487b095a12b829c853d8a7814fa29f001d0b4b1aa289085af8b5e16c22d805ae0af015de966c5770aa721b47e4d339a6a54d4c9a89358a6bd4d829a8079422d80002986130ca6174c58985535926bf4d809af9361259243c82a58dd9a40837689aa0ecd24d735aa9359265a20b48fe8828d26a3b6195, 0xfeaa7324fb67c24223847b08f41114a7b237529ee16392a8857f0b1616302c48e78428697cd3268b300adc15b42b405670ade3ae02b80b314f649fdc71b0b7116e02da84f30dd91bb436a510a26c41b4477bc620a20e4d8631246d20da3484c729cefa1e273c4c6eecde11bc137806d88daf1b6116102db510da6404c8699112f9267b4cf89a0136924e036c09024f4027d4085a10ac04514e537189108b0d161547206e2cf60a3962c5c58c8fea1fd33e108dc473704220fce2ca83f587ea165c10bc044a74304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d4fa09f68dc52746164c2c945948b281644207440e257510362068806a5d50882a0586920d261a54349cfc8a69b15ac6c8c7591f0115ea87987578eae1d623ac05490040007a29d07e81bb14ce62d345a60b50169c2a890dba6474ce499d042a1bf94c9098dd3438ba64d109364dd1240437429a792c820523dfc9104f7e8ad0159e2ba456c8ad8006c2b6856d8adc458c9aa535526ab181071992472599364e6c991fa9b1b4d3875c4eba1d701b8e37186ea8dc91b90372d2e2a7a81f923ef87e00fbf13ec80f522fa0481f7080d45860b0f161c2c28db2a3fc36cc8225046208b411482212162460200436cd04a232d4ca4995133b26af4d6a866816902bf20d20b1c1642812275a91b49d3a49b4c2e9acd35a26b64d6099dc7490e911d403a4c74a9a494e369c001b09f92396097fd305261a4bd0991532d89144b08243c4880916121a2ec8fb525f84bf298d931c26394c8c996930026754d709984e00a3d532fc65fd2f3a5e94bd49bfd38d26094c3699b932c26594cae994d32aa66f4a007b8921f9ee14dd07858f0aa42d3c2836d13da10f744183f347e60fcb200243e07e70065225e44c0898a32f0002922d30a26164c309865374a6ea4dee978113da20d48c881286d50db01b583170036806c13da31545d224e63bec90a4effa4a836fe9004dc0987b370a61e8f5ba437182, 0x13c39c0e381a9a2d348268c4eb42410cba809c44f402804a109410144028402480a5014c44913f58e921d223a807498e9534929c6d38009db4a60a02c20d0419084a109021107e716541fad3a30b26164a2ca45940b22103a20712ba881b103440352ea84412a0c9849309844805c60b8816f829a053892689e2a35929f098b12541b7f48026e04c3d9b8530f453611b694d53490996132ca6574ca69955337a5003dc490fcf70a1154ca499ed33e267e4d009af5360a2174ce49a853518ac1362699cd352a6a64d489a8935fa6c04d7c9b0936da6dc4bbc89a08d1a3d9234424e44818909120e241402605f30bec899d30326044c4897f131d263c4c7a98f82ff8159030c06140ae08f83f2800052fda6014c04980c16e26184c32987130ba6154c4a9460cb4127046765a7934d24b332ec8f50cd526910a6, 0x425083210693d083ee06e40e401c7838907142f701c583ed4e900e081c2038307000dfc1bf149a06f80df53df83cf4a6452201d683ac07980ebc1d703b007969e4ca42146b28d48da0a3483cd4f949290a21a36a288851151b014462958903ca27945446c852b41dc83ca077e0ef804b809506800d11250147846ce535421204220fce2ca83f5a746164c2c945948b281644207440e257510362068806a5d50882541930926134c38985c22402e305c40b7c14d02de311e985130b26184c32999530ea67d4cfe1ffcc4a00014e08999933da67c4e3a989d33f26804a4a4f109e2a35929f098b130aa4a836fe9004dc0987b370a61e8a6c236d085, 0x27971d142cfc59f0b3d372e9008f6d0e791430285c50a0e7d49fc69d53871ec223148c30487197d230e46188c4918804188c35304260a4c2a99cc560a1214c9699c9350a6a34d4a9a9936526cc199c8b7022124a84c28985930c26194c56992936726cf4d969b3535226a2492e8c21241a3071764243448b0910121e2c287de8b0b1618886c000a48e4bf097e52ffa6404c8699112f9267b4cf89a005b68b0844382da471b1e8047f49024db024e04da46d9922f1b6532fc8f54e00a7f7065, 0x37452b80dc01b4036c61d871b13b89e6450087280e4e1c8c391072042a6985d326275d13bc277450009ff135426a12c49a5c47ce693134c24bd2f7a8ed0d30221e369e4e68da702bc057642890f38441495098b1317a59c43124e951fb9a4b4826475c8ec23f001bc80ec0cea1e9000242c129682ea06000bf88418306060a94b8182008c011c0c4d3af83021012861c597042f01126e2858d1b784d049a10c4e215827ba867881082b305640abc1570b1e216a427c84e909e4358426884da0af1d109a0d0bda47642f885f50d3a183430286010bf27a216466e0040a88141632205c40b0087010a10f940d041b4e8a10b4215808a4e86539525318aa47fc62a43f608070fde1fb803f187d478485fd0c11b7a272a8d3d06325fc4c609d1d3c78579084e10a821481a4062c9d1013981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d353e827da05a40afc83482c70590a0489d6a46d274e926d24f14e04e0c589134b276a4ecc9ab93b48e791430285c50a0e7d49fc69d53871ec21d142cfc59f0b3d372e9008f6d11d90d7, 0x1cb439487220e461cbc3920a014f328878da7939a369c0af015d90a243ce98bd2ce2189274a8fdcd3023b72f7a5f0839709df442a42c129682ea06000bf88418306060a94b8182008c011c0c4d3af83021012861c58d1b784d049a10c4e215827ba86784ee071e0e3a036c06d07174ac07b113182778143e6a0c4d29a144eec9a58bd811d74764692d34ba6ad1f948124801897812ee25cc4b9097a4b0e82692fe275b4f4ea0553570dc71b8c37546e48dc81b9697153d40fc91f7c3f007df89f6407a917d0240fb8406a2c305878b0e1614243c4880916121a2ec8fb525f84bf298d931c26394cb4980133aa6b84cc270051ea997e36ca8ff0db320894118822d0452088485891808012094465a994932a26764d5e9ad50cd25e94bd498692f426b34d689ad935826771d243a447500e931d2a692538da70013b694c1405841b4e8a10b4215808a29ca92981f803ef084c0fc81f883f4062c9d1124f24a5295e8db8a571a484cb0996532ba6534caa99bd2801ee2487e7b853741e163c2a90b4f0a19e933c88f7d04c902105660ac815782ae163c42d484f909c00fa44ec89e27e942a0853cf5fa14e1d1044f48a6a5e246601105254262c4df29be937da2a3166015b82b685680ace15bc75c057016629ec8dc624422c3458551c81b8b42fa869d0c1a181430085f93d10b233700205440a0b19102e20580438085087c62a91ff18a90fd8201c3f787ee00fc61f51e1217f43046de89caa34f418c436c4d20a19134e26980401a1547d4879487d096912d825ac4b009641cf425947e7a817182a0974130025f039809941332771100a201019d833a01200d041a1a4a028308f009a09340266c8d14e370b5516b22d605ab0ac343c610f421e047e08fa11002228455088c111d39914f746e053d8a99237629e698ad33926a14d469a953530f711ee4117c22c150b3faa7f50fe99fd249b66eb12031bab1ef63df07bea5d11d4e3a98738845908b43ad87360e6d3fd89f6d30ba62d4c9816392a8857f0b1616302c48e784fbe2d005a10b4116782cecdcb2403373641d07fd8ffd1ff836cd046a46342783ff86dd8db44f6e77fc7130c7d00de27bc4f99e714a0841e050f0a21144026a4d42270f428a7b051cb162e2c647ad8f849f0846e239b8f5ba4372a1893f4f7a9fe33fc42e9462a27a513f427f073e281b16006d606770cc919ae332c6661bd84be298245c3a4ee3a289068e9c0b6a13cc37646ed0da944283f347e6204a4d883688ef78c41441c9b0c6248da41b469098e5390f71f96400487c0fce00ca44bc8981131465e922d374a6ea4dee978113da20d48c88830efa1e273c4c6eec45b08b8116e22d05881c3506c89901321a6444c8c990926e993447a064d47821f691ce839d873a8e7317107251305261c4c2a30d901998944e0899983ff988f0002985130b26184c329ed9332a61d4cf699f133ea67f4e3a989d33f26804e069c7131326bb4d7a9afd36026c14d7c9b0935e24e13d7490d8f5d841a0832109421204220fce2ca83f587ea165c10bc044a74304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d4fa09f6816902bf20d20b1c1642812275a91b49d3a49b371461ecdc2987a29b08db4a6a87e849fc9344d2ca4e6409c90e0cea99db47ba8844d26a3b627f, 0x14098f8144300005245a6144c309865315a6ee3fda39b4ff627db4c2e98b53261eb6012, 0x1f9c0194897913022628cbc000a48b4c28985930c26194dd29ba937ba5e044f643e08008fcb1f989e953d90db44f6e27e84fe008800062ce92689a593bfe8129232220d024, 0x27974fa82cb821780893714106d3a2a4a61e087da48c5230c121c65f48c3918623124620106230d4c1099cc560a0b64e4c993139426724d429a8d352a6a64d489a8924ba30849068c1c73a0e761cea39cc5c424e13d7490d8f5d8bb2121a2458488090f16143ef45858b0c44362db4584221c16d238d8f4023fa16d427986ec8dda1b5288507e68fcc40949b106d11def188288393618c491b48368d2131ca721ee3f2c80090f81f9c0194897913022628cbd245a6e94dd49bdd2f0227b441a91911061df43c4e7898ddda40936c09380db3245e36ca65f91ea9c0116006d610570438086e1084216842b01149d0d3e814e54a6e53ad31584574f2c5450a88237108f254bd1b9150a4e8e9e3c45b08b8116e22d05881c3506c89901321a6444c8c990926e993447a064d534b276b1cf2286050b8a141cfa93f8d3aa70e3d843a2859f8b3e167aa07859885740ae615bc2b385680aea15a459821434be609cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a993473c05890b18162c2bf858e503a10f4a798f7b1ef83df52e8a219491c98b1316a5f24da433b86648cd719963330dec25f14c122e1ce4a260a4c38985461b203331289c1133307ff311e985130c26194f6c987533da67c4cfa99fd38ea6274cfc9a01381a71c4c4c9aed35ea6bf4d809b0535f26c24d7893b8e8a241a3a70405821e047e08fa1100806a5d51034206c40e2575103a2c888408b24164a2c993a31b8148e06dfca99237641667f8cff10f730fcc3a0474010100fd2a070df225e74c2c9f6930da6584cb2995d32aa6654c5e2f64e1801874cc02eb8dfc04cb0a7814ec264853e334806293f8248d4c7098e5324265b4ce898dd257957a470e55ec37806f20de21bb8073178c4dfc5e342a305480a8e151008c0073000257d11c595f54fc223b448d258001e004e919625f64bf097e52fda5ff4cec9abd35aa19a4bd297a930d25e805a40afc83482c70590a0489d6a46d274e926d30ba6b34d689ad935826774912661d056243a30f47f592a896322c5c8e58f609b8b47265854b0d239237186e5d2011eda19d, 0x2787381c7035345a6901ebe7f11346009c44f424e44818909120e24207ae8f5e1eb83d887b1a0313f8e9144fe0997647a866a9348a7cf01d ] def policySharedUnitFixed0HintLeaf79 : PackedNatTable.Table Nat := .leaf #[ 0x13eb919d464e02a128480a4014601208d200c7018c431806480c80194431539700d3217e035806a800201ae036124291d448f487108e591ca48f647241278b904b462da84f30dd91bb436a510a0fcd1f9881293620da23bde310510726c3189236906d1a426394e43dc7e5900121f03f38032912f226044c5197a48b4dd29ba937ba5e044f68835232220c3be8789cf131bbb23148c305801b58230e46188c4918804188c3530426731582885d08aa6524fd63a487488ea01d263a54d24a71b4e00276d298280b4fa8692132c26594cae994d32aa66f4a007b8921f9ee12248977805300a5009202840510fb6013e0281410091b0216014940700e301caa07c6258c4a00ce3130e540fc71f8c3fd87e4204748c48118185046608dc11b4232951846e654646308c664b5e31a53da87ff311e9995273a4863310468922e11a344d09b7133926db1ce87aed24ba30849068c1c809a0b119d283886651d134da633b86648cd7199633312771d14483474e015082db05b40a7c14d82dd5030366d053a63c4c7a98ed31fa5f24cfc9a0047b9bd84be2982530a261d4cf699f133ea67f170e9a6448c998611ac236046b88d511a4015c02a00e802748cb12fb25f84bf297ed2ffa6764d5e9ad50cd261a4bd0985d359a6b44d6c9ac133ba48932948f44ca58d213ed09a9135126614d9c9b3d365a6cd4dae3961050a6604d429a8d352a6a61e0839d873a8e731710725130526184c32987130a8c3640669aed35ea6bf4d809b0535f26c24d789384f5d24363ed292689c42357271222d845c08b711682c40e1aa7034e380d9140c8819104095d83f50b2e085e0224dc5041b4e8a10b4215808a4e86539525303f007de10981f903f107e80c593a20273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a6a49e494a52bd1b714ae4c4c9901321a6444c8c990926e993447a064d53e827da05a40afc83482c705907fac000a48e4bce97a52f5261608de98bc9d6a46d274e926c230a4a9186, 0x7e0a02c20da745085a10ac045274329ca92984eda53034929c6d38005ce3f7c994932a26564d5e9ac45c31be8000297a52f50bb3058c0b1416082c027508d48e01261a4bd0985d31726b64d649ac1359a6b44d6a996132ca6574ca699553379a4807de10981f903f107e80c593a20273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a6a7d04fb40b4924da49e494a52bd1b714ae054, 0x31f93fa8ff11bee37e07110e201c3e41b46fe001e4fe434fc6a027aa16a42d505a98b51168c6e992029ba7141096285050a0b34e6283068527fa1a38346c6918d1d15506c2d30926134d3e2af855e8aca15802afc56224db361a8fccd8624da3aca9074eb21d5447d269a4d330b47168a2d285a4803b14f829f526b9ba049bc9fb92791d89425c79a0f349e4840ec28f051d8a37146c28d451e8a331fbe9e4467c8cff4b7632d9071a7034e3898993250e2a19ac335466a0cd319a296dd090a64b4ce49a85351a6a54d4c2b0536526cc4d9c9b3ce8b9d1a483279d5365a6cd4d9293b481fa0ea192e32586558c991930004864d0c9b193873b537fa71a4c6c9aa9355a661194c32946550ca7195070c0000a5f84bf297ed2ff87e24a3661dd31c26394cb6998133a263749d673bd20b9cee4d9096cce6e1cdb4830736936a1042208241108218caf00263219073a46b41cc3f848b391661ab03490ed1248240c63f892e00d5a1ac42a0c7f98a85150896393c7207d3b52819103023ee35346a6d1f69cd00cf, 0x20268865247046608dc11b4232951846e65465316a5f24d009b48674a73319dc332466b8ccb19986f612f8a6144c3a99ed33e267d4cfe2e1ce4a0c364066a065381a71c4c4c9aed35ea6bf4d809b0535f26c24d7893b8e8a241a3a709e5880b043c08fc11f4220153246ec82cc16d82da053e0a6816f880605c01120a8326124c26986130ca61c4c2e1104806a5d51034206c40c88204aec9f4c230045c08b6116822c845808ba115822ba7d2087010dc210a53729d65428a8a150b2a18544ca8915112a208dc423c952f46e45454211881c4aea2074591108116482c9459327460fd61fa8597042f01126e2859507e70844109021284190834a02c20da745085a10ac045274329ca92981f803ef084c0fc81f883f4062c9d1013981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d353e827da116064c930b26464cb498004591cb0000297e12fca5ff4c1498692f426454cb67e492f3a5e94bd49bfd38d26094c3699b924f24a5295e8db8a57036606c29284a6aa36d29b061e8dc2987b370291c0dbfa4a84c589854a7c23c1278a4e211aba0b10dc, 0x6661bd84be298245c39c944c1430d901998944e0899983ff988f4c28985816f25252788999530ea67b4cf899f533fa71d4c4e99f934027034e38989935da6bd4d7e9b01360a6be4d849af06658cd7199233b93ea101305b60b6814f938846ae82c4674a73305340b7c40302e008905418000a6124c26986130ca61c4c2e1104806a5d51034206c40c88204aec9f4c230045c08b6116822c845808ba115822ba7d2087010dc210a53729d65428a8a150b2a18544ca8915112a208dc423c952f46e45454211881c4aea2074591108116482c9459327460fd61fa859507e7084410902128419083453551b694d830f46e14c3d9b8148e06dfd254262c4c2a53e11e093c53a709068e8a24ee08e, 0x9f5c05425090148028c02411a4049e2e412d1918a4618461c8c3118923100831186a6084c14986130ca6154ce62b0510ba1150002994933da67c4cfc9a013f591244bbc0298052804944d09af5360a6dc4ce49a85351a6a54d4c9afd36026be4d849b6d35226a2492e8c21241a30703b, 0x17b82f685e90bd417ac2f605e70bd09e14b43168e2d105a1c2f796a7032c17d925985e35042299452f8a6114c0297453588c800ba6b352c59ac1359217f02ff05fd0bf617d42f9804c120a241c484890312086dc134588c41184016d3f3280e00a4042c48da82033106505348197547a865d8b4ca39c2d345a48b4896902d1e5a351cd0607162c6dc4b54a39b04b, 0xa67503e182c306860c0c125aa91cf96ab01ca038d2430a6614bc29ac464005d4fcc6b34d6524d5015, 0x4a2848b12889f9c2b0254e2c1c66d4245048950022d0c07000df024003848eda6fd23b439fc2aa8e820aae15602ac8e6b0ab439a8f5a24352c0e581921d9ec91d061b9437686e80dce01d80019786475e7b3caa023da02e, 0xea51d483afc7600f053ed8922d352a6a64d447dacf7a0eba1d7a3af87791f4f0002923931b26384c72993cfa71f0e019, 0x1e943d207d50f4e1e983d407a90f546108c23184430866114c20986830ce6198c1f80014e7a993c3eb10cd21981f5cc3521d230e261bcc3707d830d861acc36987030d21e783ce87a00f3e60e0c1c983b307460dd33b184002f, 0xbc7178c2f0c5e11c1a17882f14e110bc0179040105e48bca3840826ce109c1f17827060e0c8bcb38367078e0e9c1c019, 0x2f345eb1c2b179e2f385e81c25384c70905ea8bcc17b02f5c5e88bd2200a2f4c5ea1c28413a70a8e139c2c385c70b4e149c2301b, 0x81c104085d0411082486c4000a6494c94533523c14cc081e5b2c2a985540b2486bd2fda6284c9c58111d194cb018, 0xbd627084dd89bc44cc97d83a60ec40e8a1d10beea4462fc69a646cf25be3bd468a42f505e9138226f44df1f264c0a97f1319265c0eb2958c3a107431d8a1d183a38749436497ec3a086600cbe197032d86630cc819503a0282e1dde3bb87768ef11928005cfa69f4a4a0216c02d7867f0b6216702cd059d0b3c58f0b20163e2c7a58fcb28a3ab2ca03ba07750ee91dce3b9881f1045208033d864a8c93002c00686448c8b39b28395075a0e43e8a9134fa305962c74270c2e185c20b7e16f82de25534586147028d85230a3a573938395cd4c6a98a431396cc0c625b4c31e16e14f4e27344e609d8139e274429c05364eca579925724ce34728f98d1c16582cb68e60d190e390c4c18c0315062c49685b351d21e831dd646308c586322da89c24fa4879c0c7e18f831d06390c6e956d04f89c90a30145c28d05190a2c57211c195c70a2814444e309c7138a20bc4170529004662e0d199a35346814a029380240a5414d02960027105820c105026861100210c4210845108820cc419087c4af421ec43c888d4af62134dfca5e74c12986d31c26394c9098dd3438ba6396000052f4a5ea4c1498692f424c231748f14c6598fd317292b4af1a4ab4e7a1aacba6264f5058a0b4b6e96e0474c60d875186ad0d581aa835486a74abaa0a8f8d1f193e307c5cf8b1f153e28910c75e0ebb1e563d4c8850f591ea488f48858f2c1e683cb879890e121c4437c87010dd21bc8b688b40f5a1eb000bd39e069d0d3e9fa07b58f6a1f183db064024e83f9a9160fe60680221244202cb8c83191a9f20659877a443497e12fca5ff4c8a992932da7924cce99a1335a66d49d87355274963b4e165ca525c973d3f7e9bb10f621ed48fa87b8fcc244f447288e0fdd9f973e229110ba4174b47587bccbed23aa2e065bf51d497db4c665f7922397dc2fda68a8b439688168, 0x1eb49e6c73c8a18142e2850d3aa70e3d842438cbe8e8a167e2cf859e8e7c13f827e93d28c54174a7da931b26384c7299d535c0bb2121a2458488090f12289610cbf997e47aa7005330a4e634b2934527f1b9748047b687ac002f4e781a7434fa7cd42e81d243a3874b0e941d0c3a107594ac69f25089a5f84bf2991932a26584cb2996930026644ccc22c941788852fda5f711de17de4f9c92e4b9e9fbf054 ] def policySharedUnitFixed0HintLeaf80 : PackedNatTable.Table Nat := .leaf #[ 0x13cd0a010e501c9c39187220e409f5525e97bd476869813ed0e8a167e2cf859e8b3a0110000cdcba4023db439e450c0a17142869d53871ec201e, 0x248d3f18bb717707d8d24704874a7a54f53191c09219c874d300a6024c08989021c0437084294dca75a62b08ae11590a8a37108f254bd1b9150a4ec098c424884902a901248244848a128a122c4a2217601c0037c09000e123b69bf48ed26300ac09538b0727264c989ca131989460944128424e049b093294fd40a0a5e14b2296052d8a5a0dc21b780271abd47e26af031386260c6018a8316069e0d385cf525ca4b42d9a8e90b660608162ea09c48c998611ac236046b88d511a4015c02a00e802748cb12fb25fb4bfe99d9357a6b5433497a52f5261a4bd0985d359a6b44d6c9ac133ba48932948f44ca580a01284250405100a1504c3484fb426a44d44998536726cf4d969b3536b8e5841429981350a6a34d4a9a987490e911d403a4c74aa5003dc490fcf70919d464e031c06310c60192032006510c54e5c034c85f80d601aa000806b80d8490a475123d21c42396472923d91c918c231992d78b6a13cc37646ed0da944283f347e6204a4d883688ef78c41441c9b0c6248da41b46312c6250067189831a53daa4e739509098e5390f71f96400487c0fce00ca44bc8981131465e922d374a6ea4dee978113da20d48c88830efa1e273c4c6eec7821f6908c2a0894128b2e085e02253a18273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a69b8a05a6926d2548e741cec39d47398b8849c27ae921b1ebb16006d601f803ef084c0fc81f883f4062c9e00402880406760ce8047833d06ca0d8925094184780927925294af46dc52b880982db05b40a7c9c42357416233a5399829b05ba92686770cc919ae332c6661bd84be298245c39c944c14987130a8c3640669aed35ea6bf4d809b0535f26c24d7893b8e8a241a3a709f413ed08b6117022dc45a0b10386a9c0d38e036431289c1133307ff311e985130b26184c329ed9332a61d4cf699f133ea67f4e3a989d33f26804c4c9901321a6444c8c990926e993447a064d48d1a3d923446dc4aa6955046f466e074186e50dda1ba03752804031e06640cc018d03125a0d2fc25f94bf899482e71a4900029c6d38028244cae994d32aa66f4ca8995932c26594cb498012469275467a49d925d9786475e7b3ccdaa3da2a8055191bc95454ec215582aa8e820aae15602ac8e6b0ab439a93ef8e780b1216302c5857f0b02163540e8f733fac92c4b1723963d827ad121a96072c0c90ecb02a1d41d3, 0x87aa2164d5834205208a4414862550d53a70d3aa435746ae0d5b1ac22a080218a763b5276992798d5722ce45986ac0d241a4c34a86939f914d363ac8f808af543cc3abc7570eb11d602a48020003d14e87bf92209efd15a06c6d34e1d713ae875c0ed124823b423f3c4b4096712c825804b5896c12d243e910a90b04a5a0ba90cf09df0e5c1cb439487220e461cbc3920a014f320c0017f1083060c0c152970304011802393afa15827ba69811db97bd2f848ed8d26a6974d5a3f29024a21147ba676ccea99d947b88138801897812ee25cc4b9097a4b0e82693d3867a502a9ab86e38dc61baa37246e40dcb4b8a9ea07e48fbe1f803efc4fb203d48be81207dc203541123f1c7e30ff61f90811d23120464118822d0452088485891808012094465a9ba0f0b1e15485a7850cf499e447be826481082b305640abc1570b1e216a427c84e909e4358426884da0af202040483f287e630f49195056268342f691d90be217d36f44e551a7a0c621b6269050c89a7134c0200d0aa3ea43ca43d087c90f612b425705390a7b14f029f453e003a169635451210b5f16bc2d845b00b5c15e02bbd2cd8aee154e4368fc98b5516b22d605ab0ac343c616392a8857f0b1616302c48e784fbea0a48b0a2cd1ea488f48858f2c1e683cb879890e121c4437c87010dd21bc8b688b40f5a1eb000bd39e1fbf4dd887b10f6a47d43dc7e61227a2393d828e58b1716321ee241f475b8e6e0844a0c87bd8f7c1efa9744ff19fe220f028785108a2013526a11387a14520e83fec7fe8ffc1b668235231a13c1ffc36ec6da27b41b5436c06d60c5c00da01b04f69df6485277fc7130c7d00de27bc4f98e684b5a6fe935b9eb213f427f12689a593ce294105a00b4216822cf059d8e7d50623a201810809430e2c68dbc26824d08627110f1b4f27346d3815e02bb2144879d2ce2189274a8fdd0d3a183430286010bf27a216466e0040a88141632205c40b0087010a10f8c5523fe31521fb040387ef0fdc01f8185187d478485fd0c10e3616d288705840b6d44369380db023fa48127a00189a4fe372c900cdcd88280906150825584aa095a9501407a7650a58009c4160830414022153430880108621084228844106620c843e257a10f621e4446a57b109a9308c5d23c5319663f4c5c955e2aba8e24c5a869d0d3e9fa07b58f6a1f183db064024e83f9a9160fe60680221244202cb8c83191a9f20659877a44349e49336a4ec39aa93a4b1da70b2e5292e4b9e8bb938141b9837286ed0dd01b9c03b00032f0c8ebcbc2843d29e617fc0ac8186030a0570938233b2d3c7add0a8214f3d7e853822f2798443298b0233046e08da1194a8c23732a3298b53691016087811f823e844008848b713158cce495054c91bb20b346e27f4926d9bac480c6ead350259243c82a587e81bb14ce62d345a60b50169c2a890db84cb2af699c842a1bf94d0e2e98e5808b24d109364dd1240437429a792c8205237669020dda0ad6159e2ba456c8ad8006c2b6856d8adc458c99153548b0c161e2c38585091142269f243ab9f254e6c9d6d39a108c4bb2231c84508cc119229b052e10894b18a0c05d7053c0a76132429f19a44cb692bcabd238737f033e467fa5bb207e83a864b8c961956326464c00121934326c64e1ced4c6c9b212d99cdc39b69060e6d26d4208441048221043195e00506590cb641c699287150cd619aa33506698cd14b6e74b5325a6ca4d98338ce9726d019c48b0466c8cd819ba336866da4f03a44906ce90a6d13a2e746920c9e754d9293b5073a46b41cc439487210f321ce439801590e821d243a910326f44bb687d50fa247e43e63b207650ec91d8c396527d9f2748947ca06530ca51954329c65424eb39de905ce770d9f3bd634d0ec40c1a1832307860d8c1c49c871cd2081c724db217c44e009bf0be85a551f196944fca366d053a5f211ee185c30c86180c2c03c0b5ca3a22d7468c07269e99345e68b91cd09ad34368f905ec9ef6418899a5335a6994c7098e5333a6684cd899d131ba69a4cd421e843b257913888ca44418887110c220844080202220444488922554dfe9c69347a6aa4d5642f885e90bc21763db87aba24b4d1c24b128121b348f286d937b25dd448663f91e598ff1132211c44e084910900088425886e3dbc98ed31fa6484d143ed427904f109de13b82762546405e98e931e263d4c7c991d3588f28413805740b0860502c4058c93ea6034c0a17e92ad05f200942418b4c124b473a492924526014c04981131226b22b3456751c1202e498663391e699174d0a150caf990870c1a18303048608162e6dc4b55239f42be0ef81e183c4078a51e4a3e947b28f451f01e103c1078c0f1c1e4147e28fe0d0d25003c007ec0fdc1fc14b22966a094597042f01126e2820da745085a10ac045274304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d29ca92984ee071e0e3a036c06d00dc2f6c037406f20bc01c0037c09000e123b69bf48ed010101f8921d2fa0117022c047808d01190236944c8fba33123ec05e00bd017902ec040045d090a013c027404e227a1272240c484890712103d747af0f5c1ec43d8d0189fc748a27f04cbb23d433549a448d0997b3272497d19b92604c989d753aaa75623b28ec08ec11d74764692d0b09acd1186231448e8f64162aa09c48c998611ac236046b88d511a4015c02a00e802748cb12fb018f033206600c681892d0697f132905ce4cac923493aa33d24ec97ed2ffa6764d5e9ad50cd261a4bd00b4815f9069058e0b2140913ad48da4e9d24da6174d669ad135b26b04cee9224ca523d13296118925480a01284250405100a1504c3484fb426a44d44998536726cf4d969b3536b8e5841429981350a6a34d4a9a987490e911d403a4c74a9a494ca699bd2801ee2487e7b848cea327018e031886300c901900328862a72e01a642fc06b00d50004035c06c0cea490a475123d21c42396472923d91c918c231992d78b6a13cc37646ed0da944283f347e6204a4d883688ef78c41441c9b0c6248da41b46312c6250067189831a53daa4e739509098e5390f71f96400487c0fce00ca44bc8981131465e922d374a6ea4dee978113da20d48c88830efa1e273c4c6eec7821f691ce839d873a8e7317109384f5d24363d762c00dac03f007de10981f903f107e80c593c0249e494a52bd1b714ae19dc332466b8ccb19986f612f8a609170e7251305261c4c2a30d9019a6bb4d7a9afd36026c14d7c9b0935e24ee3a289068e9c08b6117022dc45a0b10386a9c0d38e036431289c103ff988f4c28986130ca7b64c3a99ed33e267d4cfe9c75313a67e4d00989932026434c88990926e993447a064d48d1a3d92344914ccc4994142c4858d2fc25f94c8c995132d26004cc839207238e4c1c923928df225e74bd297a930b27da4c3611c129d15244cb0996532ba6554cca98bd27c9e9348667a4933324c736ca8ff0db30c0838cc0005247271b4e00305412e826004be073013282664ee22014402033b0674023c19e836506c4a091250941847804d049a01336468a71b92cc9b27364c8fd4d91a6a83b34935cd6aa4d64996882d23fa20a562, 0x6db8db61b78389863e806f13de27cc4fd09fc49a26964f388db520009ef10a5a1491b7e9ec859885740ae615bcb0d23923718782521524601cfa93f87e48fbe1f803efc4fb0e684b5a6fe8000a48e4bf097e52ffa6454d6e7ac901ea45f409082492e21e00036, 0x2bdc57b218d47ee413107a246e431883d4502a13120dc9758825904a20de41c45ca9be241e684bc8141b4a017, 0x9fc481c903a465c98e931e263d4c949b39367a6cb4d9a837c7f78ff0446a000524726674cd099b135ca075017, 0x27f44f5428212c51a664fdc34245098a12142069b91f41d5300d, 0x102f0d0a3aa837785120a32146228ac5160d2c145a34306ef91961fb82fad3921d56483e6a44d4b23eb3c583f787550ead1d582a587e81bb10002923931b26384c7299cd34f259040a47be9220205d02a, 0x70a0e12506e3ba07750ee91dce7d152269f461dde3bb87768ef11928005cfa68ee6207c41148200cf6192a324c00b001a1912322d3e41cd941ca83ad0721f4a4a023f607e98fd21fb43f647eba05848c281508151029205a40b07f48fe84ba8834123420ce1fa83f5881710372060362c5fc0bf60014712d06a20dd41a640ac5fb800b17e42fd05f98bf1000e2fc0805a0ee208e40288249048201236406c7a5c21b1c36306c9a5c31af4867d3e487573e4a9cd93ada73421189764463908a119823245360a5c2112963141790e521c843cc87390e6005643a087490ea440c97ed37a25db43ea87d123f21f33460421c306860c0c125aa91cfa15f345e68b91cd09ad0c10686d1f22161359a85890b1a6544cb0996533226664d669ad135aa6dc4dbc93d5052a46c414c2fe85fc8c1f17f82fec0030bfd17fc2ffce2fa66c4d349ae92d31c4e389a9044e2626e04150938d067a5031c1a3830707a5c6506c8485325a6a14d469a9535326ca4d989b393678ff11bee37e07110e201c3e41b46fe001e4fe434fc6a027aa16a42d505a98b51168c6e992029ba7141096285050a0b34e6283141c0d5e49e634387950f291a4a75bcfcb1f953e089078f819d6d3e0434406878d134b7884b134ea6a04dac3aac7550ead1d582a58f7d24403df241190761d593ab0755c63f0a3c147628dc51b0a35147a28cc7efa791192e32586558c991930004864d0c9b193873b536425b339b8736d20c1cda1fc2459c8b30d581a48768924120631fc497006ad0d6215063fcc5428a844b1c9e385400a8935ba81f4ed48d261a54349cfc8a69b1d647c0457aa1e61d5e3ab87588eb01524010001e8a743dfc9104f7ea69c3ae275d0eb8206419661de910d264a4f24999d334266b4cda93b103023ee35346a6d1f69cd047d269a4d330b47168a35486940ace159a6c885681b1b4d4e2b30d928ad6159e2ba456c8ad8006c2b6856d8adc458c9bfd38d26a916182c3c5870b0a1222931cdb2a3fc36cc9664d939b2647ea6c8d3541b1a3ae476705a50b49007629f053e8a781fa06ec534f259040a4935cdd024de4fdc93c8ec4a12e1c3c887c6f08de01c46387470e001d21fa43f887fa233491c99cd35526ab169a2d305a80b4e154486dd323a6724ce82150dfca5e74c12986d32426374d0e2e98e5825e94bd497fd305261a4bd0991532d88b2422800052fc25f94c6c98e131ca6464cb49801330a6e34d109364dd1240437429bd52ee22223cce90c4f16a7634dc479a0f349e4840ec795cf2b24301ea, 0xdf01cd839b87341404862cd30a3b92f9c1be473386fa140685e450087280e4e1c8c39107204faa92f4bdea3b434c0993481102ab36a40ae857c21ea4bce97a52f527da4c3698dd3690cee1992335c6658ccc49dc745120d1d381c9ca0e443d08764af221b8f6f26484d143ed427904f109de13b82762546405e98e931f26474d623ca104e26014c04981131225fc4d645668acea382405c930c7640eca1d923b1872ca0a14cc093ecf93a44a3e5005680ac8186030a05700af248a24e08cec9238d311ac8358c6980d9c414e98f131ea63b4c7e9a6527b9d7c484675f46c6905b4bae40fd0750c97192c32ac64c8c980024326864d8c9c39da98d931c26394cc29b212d99cdc39b69060e6d26d4208441048221043195e005065920e748d6839867c8cff4b7632d9071a64a1c54335866a8cd419a633452dba1214c969b2936626ce4d9e745ce8d24193cea9b2d366a6c949da40bd06e0bfa17f2307c5fe0bfb000c2ff45ff0bff38be9bfd38d26674cd099b135526ab4d349ae92d31c4e389a9044e2626df206440c481b1033184000246110c2341b097c933f268011ee6f612f8a6094c28987533da67c4cfa99fc5c39c940002982930c26194c38985461b20334e069c7131326bb4d789af5360a6dc4dba40d46b70d761ae035bc6b8a2174ce49a85351a6a54d4c9afd36026be4d849b6d27a1db948488365272a0d648d2835453d8a724fb89358d6aa6e449b84e911a82355418e698921a1795120, 0x42f29c0d38e26184c329871313261514061ccc39906f90df01cd839b87341404862c57ca4dc34c28ee4be717952f988ee0d31264d20440aacda902ba27488d411aaa0c7024, 0x1ac036a06a40d401b3036806b812e277f26688cfc94a928d468009cd0a180014be69934598056e0ada15a02b3a8342c2a8e40dc5934d01d, 0x20a13e305604a9c583873f85551d04155c2ac05591cd61568735283c16182c3c5870b0a1222931cdb2a3fc36cc7ad121a96072c0c90ecf6489460944128424e049b093294fcd6027864c52189c31306300c5418b125a16cd47485b313d3a66214b2296052d8a5a0dc21b812af27e81ed63da87c60f6c190093a0fe6a4583f981a0088491080b2e320c646a7c8192e32586558c991930004864d0c9b193873b531b2661194c32946550ca719507bd906226694d329981336269a4cd493ace77a41739dc9b212d99cdc39b69060e6d0cb30ef4886932527924cce99a1335a66d49d87355274963b4e165ca4d5ea3f135785534aa8237a3370120c2a104ab095412b52a0280f4eca14b0013882c106082804428883110e2218441088100404440888911244aa9bfd38d268f4d549aac6041c66491c305412e826004be073013282664ee22014402033b0674023c19e836506c49284a0c23c026824d0099b234538dc42f885e90bc21763db87aba24b4d1c94090d9a479436c9bd92eea24331fc8f2cc7fa6861100210c4210845108820cc419087c4af421ec43c888d4af62134dfca5e74c12986d3438ba6396097a52f5260a4c3497a132288b2422682dd2fb018f033206600c68189491a49d519e92764cc63934f4c89bc137627082f585ea0bd227044de89be3e4c9815319265c0eae7c9539b275b4e6842312ec88c7211423304648a6c14b829a033d24d5359a85890b19a2a345e5a1cb441a30345c8e684d6860834368f90d14a6464cc839207238e4c1c9239284969f1c030e999527c9e9348667a493330bae0a7814ec264853e33485a0d2fe26520b9c6924000a71b4e00a09132ba6534caa99bd32a26564cb0996532d26004bf097e52fda5ff4c7098e5324265b4ce898dd257957a470e6fe126118ba478a632cc7e98b92abc55751c498b5167, 0x1eb03d6916d116821bc437487010df21c443847988f304b9c3cbc72e0e5e43de9b9927e069b1ca2972508a26e33d3487b923ea1ed43d89bb0fdf802f4e781a7434fa7cd0a8657cd0ba07490e8e1d2c3a507430e841d652b1a7c942269990459282f207e83a864b8c961956326464c00121934326c64e1ced4c6c9b212d99cdc39b69060e6d26d4208441048221043195e005065920e748d6839887290e421e6439c873002b21d043a487522064de8976d0faa1f448fc87cc7640eca1d923b1872ca4fb3e4e9128f941a30210e183430606092d548e7d0af9a2f345c8e684d6860834368f9141e8cf919fe96ec65b20e34c9438a866b0cd519a8334c668a5b74242992d36526cc3a2e746920c9e754d9293b443d08764af239e02c4858c0b1615fc2c7273208cc11b823684652a308dcca8ca7db3e127f54fea1fd33e108dc473704220fce2ca83f5a74630f66e14c3d1eb7486e111c23d847a088a53d91ba94f74aa258c8b1723963d822c0045c08b711682c40e1a83644c80990d32226464c849374c9a23d036b03f1c7e30ff61f9031a53da87ff3e189b486770cc919ae332c66624ee3a289068e9c24e7408e9189023283a504a22144e223291106221c44308821102008088811112224895537fa71a4d1e9aa935590be217a42f085d8f6e1eae892d3472502436691e50db26f64bba890cc7f23cb31fe2264423889c10922120011084b10dc7b793450fb509e413c427784ee09d89519017a6472b3456751c1202e498663391e699174d0a367cef58d343b109b645d71bf8162e6dc4265853c0a76132429f19a44c90996d257957a470e55ec60a825d04c0097c0e6026504cc9dc49a09340266c8d14e370c0838cc230c462891d1ec82c552299989328217c44e009bf0be85a551f196940c2e186430c061601e05ae51d116ba1c9a7a648040d7c1b0435f46bf0d814424999849626dc49ec7721212a0a41c90391c7260e491c946f91332a4f93d2690ccf490aeb367e2bd05750af315da2bb001c0aa636808fd8da48b57375a3298e770d1c1a36348c68e8aa836169a7c55f0abd15942b0055f8ac64b2e6c38d86a3f336189368eb2a41d3ac8306860c8c1e183630712721c73482071c872a0ca51954329c6541ef6418899a5335a6384c72999d334266c4ce898dd33524eb39de905cf4f02ad2728a0d509ca138426e84d11fba46e426c8405081105f20bc41852ec212017660b1816282c105804ea11a91c0205c24f185c31fbe4d623ca104e040d4d649bc908ba11620fe8550826904e41fe9f6930da6f14a0a83d8178252c05d80c0017f1083060c0c15297030401180238189a75f060420250c38b27370462710ac13dd163a2c7c58d8b1c2104855c58d07ec100e1fbc3f7007e30fa8f08dbc26824d0842005930b2516522ca0591081d103895d440d881a201a975422095064c24984c22402e305c40b7c14d13c546b253e131624a836fe9004dc0a15536f28ffcdbd09dc0e3c1c7406d80da01b85ed806e80de4178040407e24874be8045c08b011e0234046408da51323ee8cc48fb017802f405e40bb125f466e4981326275d4eaa9d588eca3b023b0475d1d91a4b42da85b10b58e830dca1bb437406e700ec000cbc323af3d9e43550ed815a248e038006f812001c2476d37e91da3eca7d9119aa3d61772040045d0bbc50303484fb426614d9c9b3d365a6cd4dae3961050a6601e0839d873a8e7317109384f5d24363ed20b74e079c0e381a9a2c48c998611ac236046b88d511a4015c02a00e802748cb12fb018f033206600c681892d0697e12fca6520b9c692538da7004cae994d32aa66f4ca8995932c26594cb498012469275467a49d92ffa6764d5e9ad50cd261a4bd00b4815f9069058e0b20ff5a48e4bce97a52f5261608e094e8a92262f275a91b49d3a49b4d669ad135b26b04cee9224ca523d132969a4048219754d1824e44818909120e241402605f30bec899d30326044c4897f131d263e0bfe05640c3018502b823e0fca25fb4c029809301a6254a3065a0938233b2d3c9a686cda0a74c7898f531da63f4be499f934008f737b097c5304a6144c3a99ed33e267d4cfe2e1ce4a260a186c9af934ca4b332ec8f50cd526913272702912026724d429a8c5609b1300020a6c14f82e905400a85419938946b44e2124d26184c32987130ba6154ce69a9535326a44d449b0935e110e21a8436486b10d74066a06440c881801060c283f50b2e085e0224dc5041b4e8a10b4215808a4e8609cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a539525303f007de10981f903f107e80c593c0080510080cec19d008f067a0d941b12824494250611e0249e494a52bd1b714ae4e069c7131326bb4d7a9afd36026c14a0e877123e223e4de65fb4bee23bc2fbc9f3925c973d3a0, 0x9c4d24a70050481738b4180014bf097e40c4818d1d8206380c7a7c60ac09538b070e7f0aaa58342ab9606471c7b2493b244524ea92352fe26524ca8995932d26004cb0996532ba6534caa99bd38c134b02b, 0x9f7c5a00b4216822cf059d9b9648066e6c83aa14c1ba837046e00dc31b843138f07242b3c1a31a47e40ff61f8c3f1d41ea04648c4811d2738dbe20d841ac6df9e0942568674f05a19c1bae37607fc213d427c84fd3dd0fc91f7c3f007df89f6407a917d0240b863f7c9abd358a6b34d689ad40dba51d037206e813d01bb04e89e789af234b04f84d6d1a6135046924a7c94e2825085a10ac04514e5165c10bc044a743371490a8f0520873c4a9180f0410001b6a36dc6db0dbc4f642cc42ba05730ade159c2b405750ad22cc10a1a5f304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d4c9a6e2d1c996152c348e48dc60e7d49fc389863e806f13de27cc73425ad37f42c305878b0e161424452639b6547f86d9935b9eb213f427f12689a593ce29710f00209220f028785108a2013526a11387a1451cd415782ae85590ab0a0fc41404830a8412ac25504ad4a80a03d3b2852c004e20b041820a04d0c22004218842108a2110419883210f895e843d8879111a95ec4269bf94bce982530da687174c72c12f4a5ea4c1498692f42645498462e91e298cb31fa62e4aaf155d471262d44a304a20942127024d84994a7e6b013c326324eb698a431386260c6018a8314005900065b351d216cc4f4e19e94178bae0a7814ec264853e33489921257957a470e6fe064b8c961956326464c00121934326c64e1ced4d9096cce6e1cdb483073684428883110e2218441088100404440888911244aa9a3c85f10bd217842ec7b70f57449699993471f1c030e996d332a502436691e50db26f64bba890cc7f23cb31fe68c0843860d0c181824b55239f42be1034fca26014c04980d3128d9f1832307860d8c1c49c871cd2081deb345e68b91cd09ad0c10686d1f208b2422898d93230ca6194a32a86538ca83dec8311334a66b4d3298e131ca6604cce99a133626744c6e9a6933524eb39de905ce7726e31ca2972434d8f2f1cb839790f7a6724d462b04d89a6184c32987130ba6154ce69a9535326a44d44998537324fc1e60973879890e121c4437c87010dd21bc8b688b410e521c843cc87390e6005643a087490ea440c063c0cc8198031a0624b41a5f84bf297f132905ce3492995d329a6554cde995132b26584cb29969300248d24ea8cf493b26ff4bf69c692ffa6aa4d563020e33248e4e369c0060a825d04c0097c0e6026504cc9dc4402880406760ce8047833d06ca0d8941224a128308f009a09340266c8d14e3726f44bb687d50fa247e43e63d687ac002f4e781a7434fa4b92e7a7efd37621ec43da91f50f71e9a4cc4296452c0a5b14b41b8436f004e00026af51f89abc2a9a55411bd19b82c0e582d1c69eb420b ] def policySharedUnitFixed0HintLeaf81 : PackedNatTable.Table Nat := .leaf #[ 0x21744f9a1d243a3874b0e941d0c3a107594ac65fb4bee23bc2fbc42252c60a5c14d8232446508c721189764f92a7364eb69cd03aba7c9346068bcd17239a135a686d1f221134c8c995132c26594cb498013322666116488683bd0cb34f903234641a7c74f9c1b7036d86e40dbe1b7402680012ef88eb8bbd86b722c0457c350862f2e809c28baca4e939aa93b12fc25f94bfe9915325265b4f24999d334266b4cda858cd66a161210e183430606090c105aa91cfa15f061, 0x21c4437c87010dd21bc8b688b410e521c843cc87390e6005643a087490ea440c9bd12eda1f543e891f90f98f5a1eb000bd39e069d0d3e92e4b9e9fbf4dd887b10f690e11e623cc12e70f2f1cb839790f7a6e649f81a6c728a5c9507222146cf9deb175c6fe0265853c0a76132429f19a44cb692bcabd23872af640206be0d821afa35f86c0a21249ec7721212a0a41a6235906b18d301b3893dcebe24233afa2bacd9f8af415d42bcc5768aec00702a98da023f63692363482da5d716ae6eb468e0d1b1a4634745541b0b4d3e2af855e8aca15802afc5632597361c6c351f99b0c49b4759520e9d64205e83705fd0bf9183e2ff05fd800617fa2ff85ff9c5f4d749698e271c4d4822713136f9032206240d88198c2000123088611a0d84db89b7481a8d6e1aec35c06b78d71442e9b6d27a1db948488365272a0d648d2835453d8a724fb8a095420103f41d49b5082110412088410c65780141964839d235a0e61d903b287648ec61cb293ecf93a44a3e5034d0ec40c1a1832307860d8c1c49c871cd2081c724db22c0045c08b711682c40e1a83644c80990d32226464c849374c9a23d036b085b50b6216b1d061b9437686e80dce01d80019786475e7b3c86aa1db4480443886a10d921ac435d283a1dc48f888f93799f653ec88cd51eb0bb938140b849e30e780b1216302c5857f0b1c9cc8233046e08da1194a8c23732a329f6cf849fd53fa87f4cf8423711cdc10883f38b2a0fd69d185930b2516522ca0591081d103895d440d881a201a9754dbfa401370261ecdc2987a3d6e90dc223847b08f4111422095064c24984c22402e305c40b7c14d13c546b253e131624a829ec8dd4a7ba5512c6458b91cb1ec1508233e467fa5bb196c838d3250e2a19ac335466a0cd319a296dd090a64b4ce42b04d89a6734d949b30e8b9d1a483279d5364a4ed192e32586558c991930004864d0c9b193873b531b0ca6194a32a86538ca83dec8311334a66b4c7098e5333a6684cd899d131ba66a49d673bd20b9cee4d9096cce6e1cdb483073687241e920be227004df85f42d2a8f8cb4a015a248e185c30c86180c2c03c0b5ca3a22d7439347238e4c1c92392927c9e9348667a6446188c5123a3d9058aa4533312650458b9b71020203f1243817802f405e40bb010011742ef140c0d213ed09a9135126614d9c9b3d365a6cd4dae3961050a6604d429a8d352a6a61e0839d873a8e7317109384f5d24363ed20b74e079c0e381a9a2c48c998611ac236046b88d511a4015c02a00e802748cb12fb018f033206600c681892d0699482e71a494ca699bd2469275467a49d933b26af4d6a866930d25e805a40afc83482c705907fac9d6a46d274e926d359a6b44d6c9ac133ba48932948f44ca5a690120865d53460939120624244838905009817cc2fb22674c0c17fc0ac8186030a057047c251832d049c119d969e4d34366d053a5f24cfc9a0047b9bd84be2982530a261d4cf699f133ea67f170e72513052699496665d91ea19aa4d2264e492fa33724c003808ed087a10ec95e42a180df024003848eda6fd2be627111948883110e2218441088100404440888911244aa9bfd38d25ff4d1e9aa93558c0838cc923938da700182a0974130025f03980994133277126824d0099b234538dc42f885e90bc21763db87aba24b4bf097e532a26564cb49801333268e12586f912f3a5e94bd498593ed261b08e094e8a9226584cb2995d32aa6654c5e94090d9a479436c9bd92eea24331fc8f2cc7f8899108e227042488480044212c4371ede4c7698fd3240c364066a06440c881801060c283f50b2e085e0224dc5041b4e8a10b4215808a4e8609cc0d601b5035206a00d981b4035c09713bf9334467e4a54946a340269a539525303f007de10981f903f107e80c593c0080510080cec19d008f067a0d941b12824494250611e0249e494a52bd1b714ae4e069c7131326bb4d789a287da84f209e213bc27704ec4a8c80bd31d263c4c7a98f9323a6b14d7a9b04794209c081a7e50000a5fb4c060a6d3998ce9507c926930c26194c38985d30aa6254c02980930226244bf89ac935fa6c04d7c9b08acd159d470480b926198ce479a645d342a4d635aa7a690f7247d32c, 0x126c2520f8b094a3e290bba5f34c603bac8c6118b0c645b513849f494cc4296452c0a5b14b41b84370255e0d3c1a70b9ea4b9357a8fc4d5e108f212242408470ebb42cc91c50b390941ea83cac7a9910a1eb23d687ac002f3f7e3d4911ea6ec21ca439087990e721cc00ac87410e921d4881937a25db43ea87d123f21f322163cb079a0f2e1e5a00b03480e4f425a9b9072a1e9e49f47e61227a23944707eecfcb8f561eaa00c139e28091ed63da87c60f6c190093a0fe6a4583f981a0088491080b2e320c646a7c8192e32586558c991930004864d0c9b193873b46530ca51954329c6541ef64cd493ace77a41739dc9b212d99cdc39b69060e6d0cf919fe96ec65b20e31c54335866a8cd419a633452dba1214c969b293661d173a349064f3aa6c949da7355274963b4e165ca4fdea5063ff2915caaa849c2ab412744a327c60ac09538b07018f033206600c69275467a49d90b6a16c42d643550eda240221c435086c90d621ae941d0ee247c447c9bccfb29f64466a8f585dc81001174242804f009d013889e80500942128202880508049014a029889227eb1a427da136726cf4d969b3536b8e581e0839d873a8e7317109384f5d24363ed23a487488ea01d263a552801ee2487e7b8516ca1ef158299853730ec83e509b947798eca1d923b1872ca0a14cc093ecf93a44a3ea0977913411a347b2468849c89031212241c482804c0be617d9133a6060bfe05640c3018502b823e128c196824e08cecb4f24b332ec8f50cd52691234265ecc9c9c0a4fca366d053a5f24cfc9a0047b9bd84be2985130ea67b4cf899f533f8b87392839fc2aa960d0aae15602ac8e6b0ab439a93fc913c2288978515126f8170c7ef858008b8116e22d05881c3506c89901321a6444c849374c9a23d036b01f9c595276d0fda61f10c38b1a36f09a09342106a163a9ef50d3a183430286010bf27a216466e003f608070fde1fb803f843f30fa8f090bfa182419483249cba0c805742be1092a62b49b84e911aa8e88102a62a4239047408e611c4188152546e854980dba51d037206e813d01bb04e89e789af234b04f84d6d1a6135046924a7c94e044708f611e822284412a0c112017182e205be0a689e2a35929f098b125414f646ea53dcdbd08141632205c40b008601080c24c5523fe370a61e93ee041b4e8a92985390a7b14f0a08c0c4a48d15002a24d6e8d521a502b385669b224d4e2bacd9f8acc364a9aa057a0aea15e62bb45760038154c2aa0d85a6124c269a7d3508abe157a2b285600abf158c965cd89a6a44d446c38d86a3f336189a8d352a6a649b46d011fb1b49363475c8ece0d261a54349c57aa1e615a06c6d34e1d713ae875c070f221f1bc237807118e1d1c38007487e90fe21fe88cd37aa5dc4444799d2189e2d4ec69b88dfd26b71d5e7bf4fc8a69b15ac2b3c5748ad915b000d856d0adb15b88b193548b0c161e2c385850911498e6d951fe1b664b326c9cd9323f536463ac87570eb11d602a48020003d14e87bf92209f011d567be47ef0eaa1d5a3ab054b0fd0376298d93398b4d16982d405a70aa2436e132cabda67210a89a2126c9ba248086e8534f259040a47be9220205d19661de910d264a4f2499b5276102f41b82fe85fc8c1f17f82fec0030bfd17fc2ffce2fa66c4d34306860c8c1e1836307106226674cd099a5335a69949c871cd2081c724d749698e271c4d4822713136f9032206240d88198c20001030846bd219f46260b4d24da6631c9a7a653320e481c8e39307248e4a125a93e4f49a4333d249b788040d7c1b0435f46bf0d8144249abd359a6b44d6a9b7127b1dc8484a829127aa0d648d28354d6aa4d63d6890d4b039606471c7b2441404830a8412ac25504ad4a80a03c4e223291132211c44e08491090008429598ce479a645d342a7650a58009c4160830414022144418887110c220844080202220444488922554dfe9c69347a6aa4d563020e33248e182a0974130025f039809941332771100a201019d833a011e0cf4a0c23c026824d0099b234538dc42f885e90bc21763db87aba24b4ccc9a38f8e01874cca94090d9a479436c9bd92eea24331fc8f2cc7fa6861100210c4210845108820cc419087c4af421ec43d08764af221b8f6f263b4c7e30d9019a7f606ca0d89250a7034e38989935da6bc4d143ed427904f109de13b82762546405e98e931e263d4c7c991d358a6bd4d823ca104e040d3f28980c14d829f05d20a80150a81205900b4416802bf274e8d509d6938946b44e2124d26184c32987130ba6154c4a980530126044c489ac935fa6c04d7c9b08acd159d470480b92618879111a95ec4269bf94c129a1c5d31cb04c1498692f42645116464c92f3a5e94bd4985930da646176894a941104614952a094216842b01145394597042f01129d0c13981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d34dc51c03175c14f029d84c90a7c6690b41a5fc4ca41738d2480014e369c0141226574ca69955337a6544cac996132ca65a4c0097e12fca5fb4bfe98e131ca6484cb699d131ba4af2af48e1cdfc24c231748f14c6598fd31725578aaea389316a66e11be95503e3, 0xbf85a9c0cb05f6496617bc2f705ed0bd217a82f585ec0bce17a13c296862d105a1cb4905fe0bfa17ec2faa76c11da24692c000f002748cb12fb018f033206600c681892d0697e12fca5fc4ca41738d24a71b4e00a09132ba6534caa99bd32a26564cb0996532d2600491a49d519e92764bf697fd33b26af4d6a866930d25e805a40afc83482c705907fac000a48e4bce97a52f5261608e094e8a92262f275a91b49d3a49b4c2e9acd35a26b64d6099dd24499872d1c5a44b48168f2d1a8e6830386080c124220305060b2d5685811cf16aa2d528e6c2f1a842119695f807528430210041c02991eb1236042c029280e33103a0c37286ed0dd01ba925d9786475e7b3c07000df0240038407200e24fcc92188eda6fd23b45a651ce169a098, 0xa1504c3484fb426a44d44998536726cf4d969b3536b8e5841429981350a6a34d4a9a987490e911d403a4c74aa5003dc490fcf70919d464e031c06310c60192032006510c54e5c034c85f80d601aa000806b80d8490a475123d21c42396472923d91c916d427986ec8dda1b5288507e68fcc40949b106d11def188288393618c491b48368d2131ca721ee3f2c80090f81f9c0194897913022628cbd245a6e94dd49bdd2f0227b441a91911061df43c4e7898ddd8f043ed239d073b0e751ce62e212709eba486c7aec5801b5807e00fbc21303f207e20fd018b2780100a201019d833a01200d041a1a4a028308f0124f24a5295e8db8a570cee3a7022d845c08b711682c40e1a83644c80990d32226464c849374c9a23d0326a02887db009f0140a09c58b86085050312c6250067189872a07e38fc61fec3f21023a462408c11bc6308c664b5e31a53da87ff311e0b71332a4e706142064410257619d2838930b0cca1992335c6658ccc49dc745120d1d134da61198237046d08ca11854112825085a10ac04514e5165c10bc044a74304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d371492a4a8c23732a320180074013a465897d80c78199033006340c496834bf097e532905ce34929c6d38028244cae994d32aa66f4ca8995932c26594cb498012469275467a49d92ffa6764d5e9ad50cd25e94bd498692f402d2057e41a416382c850240a8416d82da053e0a6cfca25fb4c0623e128c015c030a06180ac85ff44ce980530126064c0898912fe263a4c7c9a686cda0a74c7898f531da63f4be499f934008f737b097c5304a6144c3a99ed33e267d4cfe2e1ce4a00014c14986130ca61c186c80cd381a71c4c4c9aed35ea6bf4d809b0535f26c24d789a64b4f233b24e065a130aa62549344e211ab9389275a91b49d3a49b4c2e9acd35a26b64d6099dd244a84436e2468922e11a3175, 0x57e41a416382c84feca02c9d6a46d5044118441025761032a06525493a7010, 0x188031a3b040c7018f5042178d3b6168e2d225a40b47968d4734181cb54a39b14ca297c5308a6014ba962cd609ac9162e6dc493b244524ea066c0ce01570c3c5b04000a5f84bf204e4478a58011ce23b047588e900aa17cd244a5fd4bfc97dd2fe265a4c005b0919f1283039, 0x18d1d8206380c7a828189631280338c4c39503f1c7e30ff61f90811d231204618c231992d78c694f6a1ffcc47a6144c2c986130c82de4a4a4f11332a61d4cf699f133ea67f49ce0a8416d82da053e4e211ab938919d29ccc93b244503125a0d2fc25f94bf899482e71a4900029c6d38028244cae994d32aa66f4ca8995932c26594cb498012469275049, 0x20e89f7c7ff0dbb4a083fec7fe8ffc1b668235231a13c00c, 0xdd81bae81406de8dbe428c922d320a6434c889b1937810753c1078947fc107a20e441cd0a3a48e4bfe991532d890e32fa389083e107b1c4a79b92379e6d4dc241e53ef90001b6a36dc6db0dbc4b8878010492148427685290a48dbf5092389863e806f13de27dc4f6007113e02ee84fc89fa13f89344d2c8c54174a7da92fc25f94c6c991932d26004cea9ae05d9090d122c24404878b0a1f7a2c2c586283c36cc9178db2997e47aa70045ec9ef6418899482e71a4900029c6d38028244cae994d32aa66f4ca8995932c26594cd299ad34ca6384c729981333a6684cd899d131ba69a4cd499852731c0c49a079c483c0a1e144228804d49a844e1e85145a00b4216822cf059d8e7d49fc6e592019b9b3c1290a92302087095, 0x107b1c4a31505d29f6a4c6c98e131ca6464cb4980133aa6b817647005330a4e63cdc41f07122147000292392fc25f94bfe991532d890e32fa9b84f36a46f021, 0x5881c3500029c0d38e03644c4c99013232642116836bc45a8b004222037806e8a5701b8036806d8c3b0e36277141d9a4b4826475c8ec23f023b2986130ca61c4bf8985531826414c869911322a6c620440aacda902ba27488d411aaa0c736b090a0c9a24dd036, 0xfd31fb0a0dc8151029205a40b07f48fe84ba8834123420ce1fa83f588158bf70016833d2818fd21fb43f647eb902e206e40c06c58bf817ec00285f90bf449c6712d06a20dd41a68161230a054029, 0x415882a9027204c415d2eb20cc420e8419082210336a883c9080104a209641308380af641e883cd080a105017, 0x43d4979d2f4a5ea4c3098653ed261c4c2a986d33025f24d009b48674a0ed1a2293c52f8a5f84bf297fd31c26394c8a996d31ba67b4cf899fd352a6a64d489a893698e4e42580005339269d4cc2344d2de1d594d409b59371a6e4030, 0xe221bf037dc7f8a8361a6235906b18d301b38829d31e263d4c7698fd27b9d7c484675f4707a5c61c18383470a0e12509a40bd06e26df206440c481b10331840002461120d648d283545f98bf1000e2fc0805a0ee208e40288249048201236406c7a5c21b1c363482da5d7184683612f9267e4d0023dd36e90351adc35d86b80d6f1ae2885d36da4f43b72909106ca4e51b18364d2e18d7a419a3b0d4270afc3e409b788040d7c1b0435f46bf0d8144249998f8e01874cca9abd359a6b44d6a9b7127b1dc8484a829127aa0a548d882985fd0bf9183e2ff05fd800617fa2ff85ff9c5f1834306460f0c1b18389390e39a41038e49ae92d31c4e389a9044e2626e04150938d2181e563cae81d8f240e201c3e41b46fe001e4fe434fc6a027aa16a42d505a98b51168c6e992029ba7141096285050a0b34e6283141c0d5e49e634387950f291a4a75bcfcb1f953e089078f819d6d3e043440687a84f1994744c82320ec1d563aa87568eac152c7be92201ef91ca87a786770cc919ae332c6661bd84be2985130ea67b4cf899f533f8b87392893b8e8a241a3a707560eab8c7e147828ec51b8a36146a28f45198fdf40c4165888491080b2e58ed385963a1dd03ba87748ee73e8a9134fa30eef1ddc3bb47788c94002e7d34773103e208a410081fa0ea4da841088209044208632bc00a0cb241ce91ad0730cf6192a324c00b001a1912322ce6ca0e541d68390fa525011fc497006ad0d6215063fcc5428a844b1c9e385400a8935ba81f4ed4a0644ca23f848b391661ab034906930d2a1a4e7e4534d8eb23e022bd50f30eaf1d5c3ac47580a92008000f453a1efe48827bf534e1d713ae875c0ed1248240c63f807b50f8c1ed832006418c8d4f90325c64b0cab193232600090c9a19363270e76a661194c32946550ca719507bd906226694d329981336269a4cd493ace77a41739dc9b212d99cdc39b69060e6d0cf919fe96ec65b20e31c54335866a8cd419a633452dba1214c969a85351a6a54d4c9b2936626ce4d9e745ce8d24193cea9b2d366a6c949da32cc3bd221a4c949e49333a6684cd699b52761cd549d293a0fe6a45840c281811f71a9a35368fb4e6823e934d269985a38b451aa434a05670acd36442b40d8da6a715986c9456b0acf15d22b6456c003615b42b6c56e22c64dfe9c693548b0c161e2c385850911498e6d951fe1b661810719860a825d04c0097c0e6026504cc9dc4402880406760ce8048034106869280a0c23c026824d0099b234538dc9664d939b2647ea6c8d3541b1a3ae476705a50b49007629f053e8a7814f629c93ee24d635aa3f40dd8a69e4b20814926b9ba049bc9fb92791d89425c387910f8de11bc0388c70e8e1c003a43f487f10ff4466923931b26734d549aac5a68b4c16a02d3855121b7099655ed323a67210a86fe5304a687174c72c1305261a4bd0991445921124bce97a52f526184c329f6930e26154c362be14260a010e501c9c39187220e409f554250b00117022dc45a0b10386a0d9132026434c88991932124dd32688f40dac0fc71f8c3fd87e40c6949ce811d2312046497a5ef51da1a6049b830d9019a7034e38989935da6bd4d7e9b01360a6be4d849af05d7053c0a76132429f19a42d0697f132905ce3492000538da7005048995d329a6554cde995132b26584cb2996930025f84bf297ed2ffa6384c72992132da6744c6e92bcabd238737f09a2126c9ba248086e8537aa5dc4444799d2189e2d4ec69b88f341e692a1 ] def policySharedUnitFixed0HintLeaf82 : PackedNatTable.Table Nat := .leaf #[ 0x28dc6838a3818fca0e06af24f3141e28385058a0a141096293d50b5216a82d4c5a88b46374c9014dd38b47168a2d285a4803b14f829f526b9ba049bc9fb8d331a6934da69b0d359cd0483828d851a8a3d14663f7d3c88fe122ce45986ac0d243b4492090318fe24b8035686b10a831fe62a14542258e4f1c81f4ed4a06440c08fb8d4d1a9b047, 0x41d50a60dd41b8237006e18dc2189c31a92739e0e485678346df110d1bac375c6ec0ff8427a84f909fa7ba1f923ef87e00fbf13ec80f522fa048170c7ef9357a6b14d669ad135a81b74a3a06e40dd027a037609d13cf135e469609f09ada34c26a08d2494f929c3c14821cf12a23c4476852d0a48dbf3c1290a92301e084fbe2d005a10b4116782cecdcb2403373640006da8db71b6c36f13d90b310ae815cc2b785670ad015d42b48b30428697cd3269b8b47265854b0d2392371839f527f0e2618fa01bc4f789f31cd096b4dfd26b73d6427e84fe24d134b279c52e21e00412441e050f0a21144026a53ee0a7214f629e14288a8015126b746a90d28159c2b34d9126a715d66cfc5661b254d502bd05750af315da2bb001c0aa615506c2d30926134d3e2af855e8aca15802afc5632597361c6c351f99b0c49b46d011fb1b49363475c8ece0d401a7e9fc800f0dfc20da79d07108de11bc0388c70e8e1c003a43f487f10ff44669bd52ee22223cce90c4f16a6e2425c7625279103f41d4325c64b0cab193232600090c9a19363270e76a661194c32946550ca719507bd906226694d329981336269a4cd493ace77a41739dc9b212d99cdc39b69060e6d26d4208441048221043195e004c64320e748d68398659877a44349e49333a6684cd699b52760cf919fe96ec65b20e3508c0fc01f7842607e40fc41fa03164f00927925294af46dc52b83f5041b4e8a9299412842d08560228a728b2e085e02253a18273035806d40d481a8036606d00d7025c4efe4cd119f9295251a8d009a69b8a4e069c71313264a1c54335866a8cd419a633452dba1214c969a853518ac13626986130ca61c4c2e9855352a6a64d489a8936526cc4d9c9b3ce8b9d1a483279d5365a6cd4d9293b46870f2a1e5234946920d261a54349cfc8a69b15ac6c8c7591f0115ea87987578eae1d623ac05490040007a29d07e81bb14c6c99cd34f259040a47bf92209efd15a02b3c5748ad915b000d856d0adb15b88b1937fa71a4d529aa93558b0c161e2c385850911498e6d951fe1b66181071992470c1504ba098012f81cc04ca09993b8880510080cec19d008f067a0d941b124a128308f009a09340266c8d14e372599364e6c991fa9b1b4d3875c4eba1d703ade755c5a68b4c16a02d3855121b7099655ed323a67210a86fe52f3a6094c369a1c5d31cb04bd297a9305261a4bd099144590bae0a7814ec264853e33485a0d2fe26520b9c6924000a71b4e00a09132ba6534caa99bd32a26564cb0996532d26004bf097e52fda5ff4c7098e5324265b4ce898dd257957a470e6fe134424d937449010dd09ad549ac6a11387a145203, 0x6ec0dd740a036f46df214c1ba837046e00dc31b84313863524e73c1c90acf0690753c1078947fc107a20e441cd42590794fbe40006da8db71b6c36f12e21e004124852109da14a429236fd4248e2618fa01bc4f789f713d801c44f80bba13f227e84fe24d134b231505d29f6a4bf097e531b26464cb4980133aa6b8176470045ec9ef6418899482e71a4900029c6d38028244cae994d32aa66f4ca8995932c26594cd299ad34ca6384c729981333a6684cd899d131ba69a4cd499852731c0c49a079c483c0a1e144228804d49a844e1e85145a00b4216822cf059d8e7d49fc6e592019b9b3c1290a9230208707e, 0x198c33206540e8082ed30ba7474f1e98a533126964e745f691d5065b0cb826e832e874141740005318264c4eba9d553ab26332fb68f88b7e970301f, 0x14604e4a0b84c60147028d85230a3a573938395cd0a28144429405270048578d255a6354c989d753aaa756139a27304ec09cf13a214e029b27652bcc92b92671a3947cc68e04e50f661eca1714b30a454346c145c28d05190a2c27184e389c513888ca444c8847113821244240022109663391e699174d0a20bc4170529004614a829a27cb10f421d92bc886e3dbc98ed31fa6484d143ed427904f109de13b82762546405e98e931e263d4c7c991d3588f284138980530126044c489ac8acd159d470480b92618883110e2218441088100404440888911244aa9a3c85f10bd217842ec7b70f5744969a384962502436691e50db26f64bba890cc7f23cb31fe16f12a985be0b7e7c902e009c350a81d1c3a5874a0e861d083aca5634f9205680ac8186030a05700af248a24e08cec9238e4d3d32844d3320e481c8e39307248e4a37c811bd4110bb4326498592951c034cca98bd27c9e9348667a4933317ed2fb88ef0bef0e8a167e2cf859e8e7c49fc6e5d2011eda1cf2286050b8a1434ea9c38f6107390e701cec39d062b0c5a92d0be923ba2fa21b7036d86e40dbe1b74026869f0d3a9cf00178f581eb48b688b410e521c843cc87390e6005643a087490ea440c063c0cc8198031a0624b41a5fc491a49d519e92764dfe97ed38d25ff4d549aac6041c66491c305412e826004be073013282664ee22014402033b067402401a08343494050611e0134126804cd91a29c6e4de8976d0faa1f448fc87cc86f10dd21c0437c87110e11e623cc12e70f2f0d3639452e4a1144c6c99846530ca51954329c6541ef6418899482e71a494e369c0141226574ca69955337a6544cac996132ca6694cd69a6531c26394cc0999d334266c4ce898dd34d266a49d673bd20b9cee4dc67a690f7247d43da87b13761fbf2e7a92e4bbe23ae2ef6037806e8a5701b8036806d8c3b0e36277141d8a010e501c9c39187220e409f55429890d122c24404878912498e65f91eaa4bd2f7a8ed0d300af8422400052f3a5e94bd497e12fca6184c329f6930e26154c36991932d2600186c80cd381a71c4c4c9aed35ea6bf4d809b0535f26c24d789370d25a41323ae47611f811d934649120b2d9658495a62e0d199a35346857211c195c71b3, 0x7c08f819f043f2a7e594290de31bc49d8c6f80df111cc237c47008e211c29c58caa195332bc6574cae140f32aa9884f209e403c7a78f0cb71e3b4d1a78e86f48de81bd637b06f69e323c6c78d0f199e351bd434cc69b0d351a6e7604ec11d884cd8306860c8c1e1836307106226674cd099a5335a4e438e69040e3926d93b0034b46991d7f4c749a685f08bde17c02f7ce1b1c37387270e0e1d0d311ac8358c6980d9c49ee75f12119d7d1a5c34bcebd1d7b3afc78c52171e2e483c75b46880d0f1a2283b46749f0c4cca1ffd3daa6d219dc74e134e8cca1992335c6658ccc49dc745120d1d134da69a8136b0eab1d543ab47560a961fa06ec531b0b4d37429a792c820523df49100f7c904616982d405a70aa2436e132cabda64710a86fe53438ba63960991445928550be227004df85f42d2a8f8cb4a06170c32186030b16b947445ae8d181a2f345c8e684d69a1b47c8397072f21ef4cc29b987640eca1d923b1872ca0a14cc093ecf93a44a3e5093f142828044fca366d053a63c4c7a98ed31fa5f24cfc9a0047b9bd84be2982533da67c4cfa99fc5c39c944c1430d9019a7034e38989935da6bc4d3239e02c4858c0b1615fc2c727324fb67c24fea9fd43fa67c211b88e6e08441f9c59507eb4e8c61ecdc2987a3d6e90dc223847b08f41114a7b237529ee9544b19162e472c7b045338a6614bc6b2926a860b0c1a183030496aa473e5aac5759b3f15e82ba85798aed15d800e05531b4047ec6d2509aa13341ea84c90788b57375a2b0468e0d1b1a4634745541b0b4ce49a7d3508abe157a2b285600abf158c965cd89829b493499cd35226a2361c6c351f99b0c4d469a9535324da3aca9074eb202ad2728a0d509ca138426e84d11fba46e426c8405081105f20bc41852ec21204c282ecc16302c505820b009d4235238040b849e3261d170c7ef9358a6bd4d823ca104e015d02c218140b1016324fa922d301a605032a492d1ce924a4914980530126044c489ac935fa6c04d7c9b093792117422c41fd0aa104d209c83fd24725e74fb4986d378a50541ec0bc129602ec06000bf88418306060a94b8182008c011c0c4d3af83021012861c5939b82313885609ee8b1d163e2c6c58e108242ae2c683f608070fde1fb803f187d47846de1341268421002c985928b2916502c8840e881c4aea206c40d100d4baa1104a8326124c26986130ca61c08900b8c17102df0534a120237830a0c10a11c53588c800ba6b342fb28451232661846b08d811ae2354469005700a865291e8994b508c0fc01f7842607e40fc41fa03164f002014402033b0674023c19e836506c49284a0c23c0493c9294a57a36e295c1fa925988ed12349600078198700c003a0233046e08da1194a8c23732a324f151ac94f84c5898552540819104095d8230a82249526dfd2009b8142aa6de51ff9b7a08369d152532825085a10ac04514e5165c10bc044a74304e606b00da81a9035006cc0da01ae04b89dfc99a233f252a4a351a0134d37141bc037906f10ddc0398bc626fe2f1a15182a405470a88046003980e501de03b409d232c4bec063c0cc8198031a06252469275467a49d933b26af4d6a86692f4a5ea4c3497a0169249b4c2e9acd35a26b64d6099dd24480eb5088477924315f4471657d45d7053c0a76132429f19a42d0697f132905ce3492000538da7005048995d329a6554cde995132b26584cb2996930025f84bf297ed2ffa6384c72992132da6744c6e92bcabd238737f09a2126c9ba2480883b12789d582a7, 0x13ee041b4e8a92994128a7214f629e14118189491a2a005449add1aa434a05670acd36449a9c5759b3f15986c953540af415d42bcc5768aec00702a985541b0b4d3e2af855e8aca15802afc5632597361c6c351f99b0c49b46d011fb1b49363475c8ece0d261a54349c57aa1e615a06c6d34e1d713ae875c070f221f1bc237807118e1d1c38007487e90fe21fe88cd37aa5dc4444799d2189e2d4ec69b887579efd3f229a6c56b0acf15d22b6456c003615b42b6c56e22c64d529664d939b2647ea6c8c7590eae1d623ac05490040007a29d0f7f24413e023aacf7c8fde1d543ab47560a961fa06ec531b0b4d16982d405a70aa2436e132cabda64710a86fe53438ba6396098692f40bae0a7814ec264853e33485a0d31c26394c9099d131ba4af2af48e1cdfc268849b26e892021ba14d3c96410291efa48808174659877a4434992932da7924cda22c9276102f41b82fe85fc8c1f17f82fec0030bfd17fc2ffce2fa66c1834306460f0c1b18388311333a6684cd299ad2721c73482071c86041c66182a0974130025f266c8d14e3726ba4b4c7138e26a41138989b7c8191031206c40cc61000091844308d06c26dd206a35b86bb0d701ade35c527a1db948488365272a0d648d28354d6aa4d64ff244f08a225e145449bfd38d26aa4d569be0dfd25ff4c8a2c305878b0e16142444c9925f84bf2986d32d260011600b4d24da4c736ca8ff0db326b7170c7ef82e726544cac9abd358a6b34d689ad458008b8116e22d05881c3506c89901321a6444c8c990926e993447a06d605a1a7c1118623c52c008e711d823ac47a258111dc95fc46988d4127a236446d08db1ece65e9345a6903f94653d1eb99490c102c5d3ad08c41184016cca0890432ea027113d00a01284250405100a10092029405311244fd63484fb426614d9c9b3d365a6cd4dae3961050a6601e0839d873a8e7317109384f5d24363ed23a487488ea01d263a54d24a71b4e00996132ca6574ca69955337a5003dc490fcf70a1154ca4885d33926a14d462b04d89a6734d4a9a9935226a24db69b712ef226823468f648d10939120624244838905009817cc2fb22674c0c981131225fc4c7498f82ff8159030c06140ae08f83f2897ed300a6024c060a6d24d26254a3065a0938233b2d3c9a686cda0a74c7898f531da63f4be499f934008f737b097c5304a6144c3a99ed33e267d4cfe2e1ce4a260a186c80cd3fb27034e38989935da6bd4d7e9b01360a6be4d849af134ca4b332ec8f50cd5269136e2231c463005c14d6232002ea844359a1f9c595276d0fda61f10c38b2e085e0224dc50b1a36f09a09342106a163a9ef50d3a183430286010bf27a216466e003f608070fde1fb803f843f30fa8f090bfa182419483249cba0c805742be1092a62b49b84e911aa8e88102a62a4216842b01149d0c13981ac036a06a40d401b3036806b812e277f26688cfc94a928d46804d34a72847208e811cc23883102a4a8dd0a93046f036e94740dc81ba04f406ec13a279e26bc8d2c13e01cc04ca09993b8880510080cec19d008f067a50611e0134126804d6d1a6135046924a7c94e044708f611e822284412a0c9849309a6184c32987130b844805c60b8816f829a053e0ba415002a150244e251ad1388278a8d64a7c262c4c2a92a0a7b237529ee0d941b1282449426de840a0b19102e20580430084061211c0ff58001491c979d2f4a5ea4c2c0b2016882d0057ea1589d3a354275a98bd29d152431548ff8dc2987a2a2, 0x5a00afc16927d04fb4926c9d382d105909ff49d6a35400c, 0x29b05ba9ed880aa0b2053e0ba4150101341628d689c4249a00d, 0xdc826304c806a814ca85750b210a0213842a08520690a70270629be06800cf8fb9034406840488001062c9e0124f128748ba4a1942c138546904cf40dd027a037609d13cf135e469609f09ada34c04bc0974130025f03984cd91a2933503a094780e501cb038607113a881c1064a0c9c19313fe27fa9c44955026504cc9dc49a0934025564d411a4929f04a, 0x6740cec5ed833550b470c91df9418008, 0x47a85b002, 0x19ea85c002, 0xd9542ea4a1003, 0x3430682024142da4a0005, 0xef626ff4e34a17933726b34d689ad935826d800a ] def policySharedUnitFixed0HintLeaf83 : PackedNatTable.Table Nat := .leaf #[ 0xf6ca6ff4e34a17931b26384c7299b9339a67500a, 0xfc925e74bd297a937fa71a4c12a17930da66e00a, 0x1cb0000297a52f525f84bf297fd305261a4bd0991532da86200d, 0xffe6250000a70450be999933da67c4e3a989d33f268000c, 0x11f865b4000a6014c04980d382285f4c4a9c75313a68f00c, 0xd1c1f603eb067ea174a54a36c007, 0x4592863002, 0x188f0002985130b26184c32999530ea67b4cf899f533fa86400d, 0x3b907940efc1df00960128a170a3c2367009, 0x19320002979d2f4a5ea4bf097e530b261b4c8c9969300286700d, 0x16e2868002, 0x13e52869002, 0x1b130002a1ad30c26194c38985d30aa6734d4a9a9935226a200d, 0x1f94000297ed300a6024c06a1ad30c26194c38985d30aa62500d, 0x79e94c94361488004, 0xbad17582e6c5cd0ba850c49388df4a40a009 ] def policySharedUnitFixed0HintLeaf84 : PackedNatTable.Table Nat := .leaf #[ 0x219a4bd297a930d25e81160a1a930ba6b34d689ad9358267700d, 0x560a86d002, 0x206a86e002, 0x390871e0e411c7c38f471fa8601c807a1cf441e863d167a28f449e8c00f, 0x2a7c54f0aa515422a80551a86149b26bb91f91aed00b, 0x2e4d4381be1003, 0x3a254381ed6003, 0x48689161220243c48a258450c665fccbf23d500a, 0x243943c197d003, 0x2ec943c1c01003, 0x108a80014ca499ed33e267e4d009af5360a2174ce49a85351a6a54d4ca1c935fa6c04d7c9b0936da6dc016, 0x6140ae08f850dc9460cb41270007, 0x17182e205be0a6816f28684a4a4f109e2a35900a, 0x5ba287b002, 0x80bd31d263c4c7a98f9323a6b14d7a9b04794209c0002a1cd300a6024c0898912fe26b24d7e9b0135f26c2017, 0x61943e233b003 ] def policySharedUnitFixed0HintLeaf85 : PackedNatTable.Table Nat := .leaf #[ 0xb8543e93c6003, 0x1e167ddc000a6124c2699d9365a6cd1e1c3c347880f0f3ee67dd0fbb1f753ee43c487888f171e283c4c78a9ff54e08a17d38ea6274d949b3136726cf4cee3c58fbd1f7b3ef27df8fbe9f7c3ef03c30fb81f7102c, 0x17660b1816282c105802ed1435252a38064ea11a91c0200c, 0x7900f1e1e343c6078a4ad2866d43525e94bd497bd2f8261a4bd0985d2f625ee4be46088c12a3bd015, 0x275287f002, 0xaca880002, 0x7580f301d783ae07600f2d3c9a869290851aca35236800c, 0x1e394421826003, 0x24e144219a7003, 0x5694431247003, 0x17fd443169e003, 0x1104a8300014c24984d30c26194c38985c224287d29f098b130aa4a800f, 0x1f2c7840f091e147db8fb7a882007, 0xeb54439469003, 0x3b6476c0ede1db63b6876e28711dba7cdcf9c1f363e767ce8f9c9f3500f, 0x13bc27704ec4a8ca1fcacd159d007 ] def policySharedUnitFixed0HintLeaf86 : PackedNatTable.Table Nat := .leaf #[ 0xc2288a002, 0x7158e331c5c38b4718a5c750f679e0f3ba43200a, 0x38b14491e76003, 0x38d14491e7e003, 0xaa615506c2c000a6124c2699c934fa6a1157c2af45650ac0157e2b192cba86d361c6c351f99b0c4d469a9535324da019, 0x1f2895002, 0x3c7c7918f221e420034783a8823f0a7e20fc39f8600b, 0x3c8144b9f84003, 0x3c9544b9f8b003, 0x7ec100e1fbc3f7007f087ea230c3ea3c2009, 0x1fb544d187c003, 0x2c6944d1b78003, 0x15d42bcc5768aec0070a254da023f6008, 0x38207080e0c1c0037f06fc0e141be037d4f7ea1bd44703cd50d89290a21a361288851151b01446015, 0x2b585678ae915b22b6001b0ada15b62b710d280014bf097e537fa71a4bfe991532da66e50f29aa535526ab2162868485a2887434686901a428662836a23942f2599364e6c991fa9b23027, 0x7142f701c583ed4e90a1bd447289e50be52b1207944f00c ] def policySharedUnitFixed0HintLeaf87 : PackedNatTable.Table Nat := .leaf #[ 0xfcb200243e07e70064225a44b88b8117222e645c517522ee45d88bad176a2f045de9ef85759b3f15e8a274da4836250bc8ba5106a46401d, 0x43dd450a20c003, 0x1f9a3f31450a04a004, 0x3ee06e40e401c78389514051511b214ad009, 0xfc1405841b4e8a10b4215808a4e820c4ca72a4a650ba0fbc21303f207e20fd018b249e494a52bd1b714ae017, 0x5569dcd42f0b1d163e2c6c58e108242ae2cb821780893714a271341268421002c985928b2916502c8840e881c4aea206c40d100d4baaa23040c88204aec6dfd2009b8142aa6de51ff9b7a05586d4c2bd25f34e08985130c261951029d0017f82fd0104022c186830f061c0c309eea85f513ca1bd44728a44c3a9c753139393044, 0x9641cf425944b319d648702584cef000112bea05526619d500d, 0x287c50f0a21144026a4d42270f34269dd142c26174eaa9de134928a74d2826944d20a19134e26980400001342a8fa8d0a27764eea9a593bc9a8301f, 0xaff15ec2bdcd32a5f34e08985130c26195102a17d30ea71d4c4e280839a07370e6c5f391dc9a6136940ae815d82bc172c2e505caa1990002979d2f4a5ea4fb4986d32606f64abe1be037c8e670df4280d39ba8a450dea23944f1a6248685e54bc926af4d669ad135aa6d750c06f889d293a403d, 0x45d05e000101c0037c09000e123b69bf48ed010501e803d807a80f200a0014d407251123be47a92fa25fc4c989d753aaa756022c047808d01190236944c07200e2490c47dd19891f6027, 0x2887db009f01409f3cdb808dc11b6654134811a248b8029c4a00943127c24fccd6093a127824ec58c1b7233569a2ccd719b4336666c0cd791a301f, 0x8ba0bc0002038006f812001c2476d37e91da020203f007d28aa0210041c029a80e23d6921d2fa25fc4c989d753aaa756022c047808d01190236944c07200e2490c47dd19891f6026, 0x126524cc05ec0b9017302e8496c0ad925a466a05d40800176177e05dc0bc1260481c497c92f2338015, 0xaca88002b40610937815b50e606040c00183030405c00b8a8ad02b0055c0ce019b03104a0d19f12460312923492c926d24dc499519a8175020005d85df817702f04981207125f24bc8ce0936124702a, 0x5e90bda17b82f7860635a4a229300a6024c069815382285f4c4a99705328a5f35929c7531396922d225a40b4785ea0bd617b02f385e83e3e9bfd38d285e4eb6185c30c86180c2c03c0b5ca3a22d749cd139aa66e14c2298052e8a6b119001753f3280e00a6014007900f501ec8b5c000a48e02e605f40be017102e006080c18180030249bd448815b50e649b0937126d24b249a0933926624ca8cd40ba925e467049693b027864c649d8528891df01f46b352c59ac12d0c5a38b46a39a0c0e2c585de08ba020005d85df817702f04981207125f3272703ce071c0d4d162464cc308d611b0235c46a88d200ae0150074013a465897d92fc25f9031e06640cc018d515c49d519e92764bf697fd33b26af4d669ad135aa871491265291e8994b4d209a313489b712d528e6cb4416870a1, 0x17a82f485ed0bdc17bc3031ad25114980530126034c0a9c1142fa6254cb8299452f9ac94e3a989cb4916912d205a3cb4385eb0bd8179c2f41f1f00029bfd38d285e4c649d6c30b86190c301858078013a465897d92fc25f94bf697fd33b26af4d669ad135aa87149125ae51d116ba4e689cd53370a6114c029752c59ac12d0c5a38b46a39a0c0e5aa51cd968804b ] def policySharedUnitFixed0HintLeaf88 : PackedNatTable.Table Nat := .leaf #[ 0x1392146028b851a0a321458ae423832b8e82e131826480a281445255a6354c989d753aaa756014, 0x9e2a24027904f04588136c26d052509b2135c26c052609aa1358e178001491c98d931c26394c8e5618af115872b105784af023840a48145828c851a0a2e1460ae3a3832b9057791c29589510a2720acf238202c, 0x9b81368c131814305c60c1c7150be989ce381c6c269009bc13e8c1118283058e37a85e4cdc3024e369c6a38d271a0e33a34b469a30400e6025f04c0097460a9c6e468a4cd8e329349027, 0x13bb8b5b0832109421214d846da6ec83f225364ea60fcc18a83134e8292792529879088e111822a8445511853d91b814f750d67f54fea1fd342828500f849f0846e239b821107e716549db544e289b10100c04040989c20d42c753b982ff05fa02081820311061692749eea85e05560ab0da9857a4be69c1130a26184c32a20542fa89e50dea239452261d4e3a989c9c99b7a10282c6440b8816010c021018498aa47fc6e14c3d1eb7486e11c823a047308e20c40a92a3742a4c9f6943aa89f50b0a29d3bca77806a, 0x84e10a821481a4062c9278a7027060850a295412842d08560228a72a8580628a2989f294df014, 0x17bcb5381960bec92cc2fe05fe0bfa17ec2faa76c11dc95fc46988d4127a236446d28ab162e6dc4ca7a3d73292178cf85067b4be897f1393264c4e5039fc2aa960d0aae15602ac8e6b0ab439a85a21eb4486a581cb03238e3d925a651ce169a0bdc17b42f485ea0bd617b02f385e814e06b452fc25f94bfe98c93ada65d4cb69cd05328a5f14c2298052ea58b35826b2539aa6674cd099a5335a6992d0c5a38b4416872d225a40b47968d4734181c304275914bc5aa51cd9692063, 0x5fa0bfd3a028b427ba020818203110616a2d53b9289b102a205058c8817102c0218042030931548ff8c54a49d018, 0xa2942140427085410a40d214e04e0c537d412842d085602293a0831329caa16018aa49e013, 0x2d0145b89a5134828644d389a6010068551f51a14516c29ac464005d359a05609231ef64cc0999d334266c4ce898dd34d266a17b27da931b26384c72991933aa6b850f499842f306150c281790b4223a12d0a3a147420e871d0c1ba437580e501c6921925d9ed148787b4050f8a1e144228804d49a844e1e6a0c1909018202e0c889fa270527e6105c2be057b08300fcd45c27725136205440a0b19102e20580430084061211c129d152431548ff8c54a4a529a88e50a698b4216822cf059d8e7d13fa27ed3bd006913d63109025a8a34d8836946d38da61b4231446280c5218a672a4e569cab395472b062789f61cd096b4dfd81eb04ac948c12703ab04a40945291025304d40ca0134026926869c5413381d800ee0764119822f4e729d393ab27554eae9d7124c93424c1e4d111ad9345049e2e412d1820c37bc982130926134c30986530e2615171e2ec45d80b8d17189d6143f289451263e347d98f8f1d1a3e407d927dd1f283e8c7cb8f9600083e607cc8f9a40289aa9355a6b1170c6fa1441a61708de6f912f3a5e94bd498593ed261b4c5e24b131726b34d689ad935926b04db0a1d1377a5d24006800922c8fa91f5c3eb07d580051d1c3a3cf7726534dce3a7c74c0e9a1d323a507d6a5cb2d06061d32926544cac8080f72a43e3dde93fd00fa45a40527ffcfff245b5116239c478a580127266a848209031212241c482804b01d204e4b6080014bfa97f92fba5fc4cb4980030f01570338066c0c41283467c5b09244997647a865d446208c200b69f9945628ae0fc4946cf8e25f84bf297ed2ffa6584cb2995d32aa66530ee6504dee240c37ba925ca3424964c16982930d25e84c8a996d43ca8764d6e7ac8ef724273be27280d2ca4d149fc6e592019b9b157, 0xc0b182471ac606a5a738c23028609826d04dc09bc13e8c11181e7190e351c6938d04d249a41c6c38ce8d2d1a68c100398097c130025d04bc7198000a48e4e369c006041335468a4cd8e329c60029, 0x18d432016e50c6e956cb6e863d0c68190832086390c743b9031d863c2dc29130b7016e62dd05b9cb7116dc017, 0x30c05640ad1b6f123e980530126034e08a17d312a71d4c4e2490491a7e3176e2ee0e04000102b0055c0ce019b03101f8928d9f1c125a97e12fca5fb4bfe61dc941a33e248c9d813c326324ec2996132ca6574caa996d332892112409320cc59c09331c491d43e233b038, 0x85910d4216042b885610d62188431990900026380c6b18d710b42170c8f26471122224044a089311246434c87190f32226440c8618d801d, 0x4121c064bf6130026104c1097e12ec02280012ae08e00ab8a6484c6a208c45788ae0a3e64b538418b2016, 0x13c544804f209e08b1026d84da0a4a136426b84d80a4c135426b1c1700025618af115872b105784af023840a48145828c851a0a2e1460ae3a3832b9057791c29589510a2720acf2382027, 0x2888512002 ] def policySharedUnitFixed0HintLeaf89 : PackedNatTable.Table Nat := .leaf #[ 0xa5e14c429b8539495c579829700290a6814a801205270a50a30028a24ab0a1814352a5850b200c9ca53c32762413c56f0af1a4ad01c, 0xc3015902b466d934728651248248d3f18bb717707054000815802ae06700cd81880fc4946cf8e092d4bf097e52fda5ff30ee4a0d19f12464c64996132ca6574caa996d3329c09331c491d43e233b02a, 0x28bd31d863acc7523c610c82194433086810d2219cc72a3c731c8638d1e4085b011, 0x140a0a5914b0296c52d06e10dbc01380009abd47e26af031386260c6018a8314005900065b351d216cc016, 0x2f505e9138226f44df1c160bf817f82fe85fb0bea17dcf58a88a4c029809301a6054c80990d32226464c849895259969947385a68d151a2f2d0e17ac4e109bb137868c52f5a5ed4bde97c12f8a5f34bf097e52ffa65d4cb61d3076207450e881d083a18ec50e8c1d1d05d26304c989d753aaa7560e82198032f865c0cb6198c33206540e809ced44f28a450dea2384e185c30b8416fc2df05bc4aa668f0000a6324c68992139a27351048208c45788ae0a3e64b538418b213aa27504eb89d613a027492671a3e47ca68f4b2c165b473068c946204994a7e126c24e155a093a25184159c054bf620a02418542095612a825884b2095e209545f18b346fe5588aaea389316a66e11be95502a9a5f691d517032dfa8ea4beda6332fbc911cbee17dd488c5f8d444a671345268c0d17239a135a686d1f216880a6, 0x45508a1114c2280455992a4e4a22a444f24c500a, 0x132029e84c5098ca30cabc2388098e14fd257957900b, 0x226c42e885e31b20004c6d085f0a66213842a24c231b66468c8c98de00f, 0x518e21807b48f6810c2213442aa4c231ba7f2cc6f98de31b814f8264889d0994132d0dba6474ce499d1430a8c810b42164435085810ae2158435886210c6642400098e031d86358c6b98eb31d48f18432086510cc21a0434886731ca8f1cc7218e34790636042da6882af68f38abd24af03c, 0x145a0b4016842d0459e0b3b1cfa93f8dcb24033736287c50f0a21144026a4d42270f350626944d20a19134e26980400001342a8fa8d0a274005fe0bf4041030406220c2d24e93dd026, 0x5ea0bd227044de89be382c17f02ff05fd0bf617d42fb9eb14bf6a229300a6024c0698153200b10116836bc45a8b003bf29c1142fa6414c869911322a71d4c4e36b52d80c4e517277dd3631b58485064d126ea6464c849895259969947385a68d1516870bd627084dd89bc346297ad2f6a5ef4be097c52f9a5f84bf297fd44f286f511ca29132ea65b0e983b103a287440e841d0c76287460e8e82e931805460a90151c2a2011800e6000407280e351589218afa238b2bea99313aea7554eac98ccbef24472fb85f7522317e3511299c4d149688071, 0x389071e52541b903ee34a627904ef872e0e5a1ca439107230e5e1c90500a8a934c08edcbde97c2476c69352f9a89e50dea2393232698295a8da4a2a28a0021, 0xbd617b02f385e814e06b440ac12464c649d6c2f306150c28179009c96c14bfa97f92fb861e02ae06700cd818825068cf8b6124892d088e84b42a65d4e68299452f9ac94e6a99a53359ef64cc0999d334266c4ce898dd3350bd93ed46fed322a8794d6e98d931c26394cb4980133aa6b850f49984b43168e0bd417a42f685ee0bde702d2f9a89e50dea23945206f00de41bc437700e62f189bf8bc6a6300a8c15202a38544023001cc07280e3490c57d11c595f50bf817f82fe85fb0bea17dd259969947385a685308a6014ba29ac464005d4fcca2b145707e24a367c704969ff44bd297a80f582564a4609381d5825204a29488129826a065009a013493434e2a099c0ec007703b208cc117a7394e9c9d593aaa7574eb892649a1260f26888d6c9a2824f1720968c1061bde4c109849309a61c4c2a2e3c5d88bb0171a2e305c525a237b097c5304a6144c30986530ea67d4cfe23dd053a63b4c7e97c933da67c4cfc9a0134c8d9b44ce0004f58a88a4c029809301a6054c80990d32226464c84989530326044c4897f131d263c4c7a98f9445a69a37b26f712061bdd492e51a124b260b4c1498692f426544cac999943b25f84bf297ed2ffa6584cb2995d32aa65b4cca61dcd66a58b35825a48b4896902d1e5a351cd06072d528e6cb439688100, 0x146281050204921c8f50bbe02f405e40bb125f466e704c4a2048f091c122824484874a7aa308a9e954046f066d45db251201f60424083005100be018c085091c36e024747b20b1548a66624cc4010c51782ee40801c0a23d622e85de0b1636e2703ce071c0d4d162464cc308d611b0235c46a88d200b001582f905f7496665291e8994b4d202410cbaa68c1272240c4848907120a012c074997647a866a93489939380e297853588c800ba9f98d668608519a179830a86140bc804e4b60a5fd4bfc97dd32d26000c3c5b09244968447425a140ac01570338066c0c41283467c49182a305480a8e151008c00732be88e2cafa86f00de41bc437700e601ca038d45628ae0fc4946cf8e092d3fe897a52f501eb04ac948c12703ab04a40945291025304d40ca0134026926869c5413381d800ee0764119822f4e729d393ab27554eae9d7124c93424c1e4d111ad9345049e2e412d1820c37bc982130926134c3898545c78bb117602e345c60b8a4b446f612f8a6094c28986130ca61d4cfa99fc47ba0a74c7698fd2f9267b4cf899f934026991b36899cf58a88a4c029809301a6054c4a981930226244bf8a22d34d1bd937b89030deea49728d09259305a60a4c3497a132a26564ccca1d92fc25f94bf697fd32c26594cae995532da66530ee9218bc626fe2f1aa324439887510e821c842608704af063b4c7823c931e221b0f6e00014c7498f131ea63e09e013c8278a8904704567932026434c88991932126474d12a318456082d005014b13b285360a7092b8af3192b12e, 0x131429e84c8098e55e51c404c6517e14f8264889d0994132d459157b479c55e92579578013, 0x4e4a8cf002 ] def policySharedUnitFixed0HintLeaf90 : PackedNatTable.Table Nat := .leaf #[ 0xdda1bb227985808ddd16042c0d39da89e0e80195033206630cb619704dd065d0e82a32c2f306150c28179009c96c14bfa97f92fba5fc4cb4980030f01570338066c0c41283467c5b09244968447425a14beda3e22dfa5c0d1d517da5148a1bd4471b5a3c568fe0dac9e261b528851451a6c41b4436906d18c4b1894019c6261ca8484c77bc6208c4213d601a53bd09fb13faa32945aa7725136205440a0b19102e20580430084061211c0df225e74bd297a930b27da4c3698bc496253a2a4862a91ff18a94eb23a147420e871d0c1ba437580e501c6921925d9ed148787b4052f0a6b119001753f328ac515c1f8928d9f1c4bf097e52fda5ff4cb0996532ba6554cb69994c3b9acd0c10a33458808b41b5e22d45801df900029c1142fa6414c869911322a71d4c4e36b52d80c4e517277dd3631b58485064d126ea4d134b27280efa1e270ad, 0x52f0a6214dc29ca4ae2bcc14b801485340a540090293852851801451255850c0a1a952c28590064170a341318051c0a36148c28e95ce4e0e573532426354c989d744e689cc13b0273c4e8a4ce34728f98d1c09ca1ecc3d942e285be0b7e7c902e009c351a268c0d179a2e473426b4d0da3e45188126529f849b0938556824e8946105670145db251201f60424083005100be018c085091c36e024747b20b1548a66624cc4010c517847ace03a6331050120c2a104ab095412b52a028c1519ea3385818b0516082c044f31b5947f26d683c39a4a4bde97c02e71683030e9949329a5ec4bdc99c1444155e2aba8e24c5a8944091e12382450489090e94f54610bb9381454f4aa02378336a2ef80bd017902ec040045d0bbc162c6dc4e079c0e381a9a2c48c998611ac236046b88d511a4016002b05f20bee92ccca523d132969a4048219754d1824e44818909120e241402580e902725b052fea5fe4bee9969300061e02ae06700cd818825068cf8b61248932ec8f50cd526913272497d19b9c1333708df4aa8154d13ce27946ec8dda1b528851451a6c41b4477bc620a20e4d8631246d20da3189631280338c4c189ca2e4e542426394ea288efa1e273c4c27a84f4806a4ef427ec4fea8ca516a9dc944d881510282c6440b8816010c0210184847037c8979d30b27da4c3698bd29d152431548ff8c54a7591d0a3a107438e860dd21bac07280e3490c92ecf68a43c3da0297853588c800ba9f9945628ae0fc4946cf8e092d3fe897a52f501eb04ac948c12703ab04a40945291025304d40ca0134026926869c5413381d800ee0764119822f4e729d393ab27554eae9d7124c93424c1e4d111ad9345049e2e412d1820c37bc982130926134c3898545c78bb117602e345c60b8a4b446f612f8a6094c28986130ca61d4cfa99fc47ba0a74c7698fd2f9267b4cf899f934026991b36899c0009eb15114980530126034c0a9901321a6444c8c9909312a6064c0898912fe263a4c7898f531f288b4d346f64dee240c37ba925ca3424964c16982930d25e84ca8995933328764bf097e52fda5ff4cb0996532ba6554cb69994c3b9acd0c10a3352689a5934ac933cd1924482cb6598522a1a36413c56f0af1a4ad1b1, 0x14bc298852e005214d029524ad007, 0x137a27042f485ea0bd627084dd89bc346297ad2f6a5ef4be097cd2fc25f94bfea279437a88e5148997532d874c1d881d143a217dd488c5f8d444a67134525a20b4389be3e4ca229439a6054c6417c44e009bf0be817d9133a6014c04981930226244bf898e931f288b4d34366d053a63c4c7a98ed31fa5f24cfc9a0047b9bd84be2982530a261d4cf699f133ea67f171496885c60b8d18742e385c79bde04182e412d1824f04a0093812b252303d67fd0496a8b9189c36b4efca70450be9905321a6444c8a9c753138b00117022dc45a0b1051a49374c9a23d036b09b192d81df74bd297a9305a61a4bd0995132b26584cb2999943b249604a29488129826a065009a013493434e2a099c0ec007703b208cc117a7394e9c9d5d3ae24992684983c9a2235b268a925d304260a4c24984d30c26194c389854deea41237b86f6534ca4b32d2a8f8cb4a265c0eb2958c3a107431d8a1d183a3a0ba000298c1326275d4eaa9d5931997de488e5f70bf69a2a0c4, 0x6288c4b18b031206d122141b523104efa1def482a72a06d08da61b4e3695025a8a34d8877c52139dee016, 0xb2e516a10bc0449b8a005, 0xc5ba5e74bd297a8079a51101e2013c028805f00c603a4085091c36e02370ca819880218247cdb7a70450be9d813c327614e3a989d26400fa4c2c9f6930da6334c5e22cc0b9017b02e205c00b70b1436dc923092c926624ca8cd40ba925e467064cc4a2048f091c122824484874a7a66d9319268e50ca2490491a2cb124a22e47b008bb11780270cbd268b1188230802da7e632823d9c46d88da11bc237446a08d311dc95fc47608e711e2960009c96c14bfa97f92fba5fc491265251e9994f3f949a40c9d24523272663c493892612509614ccc80014bf097e544526014c04980d32a26564cb0996532d26004c4a999933da67c4cfa99fd432199147ac8ff5240998e2a7a55011bc19b508e, 0x1d4a3a9075f8ec01d727c6d2fe275b4c529cf545da7a70d5c3a8875086af2ea27bc8ba9174d2ea097c933da67c4cfc9a01350a6a34d4a9a98f869ef41d743af475f0ef23e9e000524726364c7098e4353a55d2e90993cfa71f0e030, 0xc941930326864b2ddc8e9c32486470c8c1920b7596ec2de41914b7516ed010, 0xcd419a433397080cd05c702db05b40b6a19b033286660cd65c74b83970e2e1a59502db96552cac97f13ada6504c52a2ed32f27a72e125c30b85970a020, 0x192432786500c86191032728d92dd25bd4b7a16ef2de61928326064d0c965bb91d396ed013, 0x103f41d49b5082110412088410c657801341ce91ad073104019ec3254649801600340070e6ca0e5015, 0x410c8221041208483a881f904019ec8395073246b196032c46780cad195c32b116d8c95192600586478c901914321946e24ea39b29b50e7c1d3c3a7674e8e7ca0e7023, 0x3228643001c003432406478017002a3bb077796004be6a279437a88e514898a02cb11092210165cb1da70b2c743ba07750ee91dce3b98fa2a44d3e8c98c1324a64a0b6016bc33f85b10b3859451d596504a023b9481f104551ba32086470c84005a00042cc24e939aa83ad07224ea03b, 0x19d833c86782e305c68b8c86772e360004337066d0cde5c40b8886700ce219d033a86722e265c58b8a97142e245c3c339971701b, 0x28d83e2e7c58f8a8e641caa396c72b8e561d8c3c187638ec843de397872e0f2f0d3639452e4a1144c6c991932d260050ce32986528caa194e32a0e1807e24a3661dd31c26394cb6998133a263749d673bd20b9cee4dc67a6879825ce49f899c9351a8724cc29b98f941f6d48927c9cf4f9ea43d467a88f561f1a3e327c60f8a24431d783aec7958f5322143d647a9223d22163cb079a0f2e1e62438487110df21c0437486f22da22d0439487210f321ce439801590e821d243a910300014bf097e40c781990330063493aa33d24ec9bfd2fda71a4bfe9aa9355a8ba51669bd12eda1f543e891f90f9a6ec43d887b523ea1ee3f30913d11ca2383f767e5cf88a444089 ] def policySharedUnitFixed0HintLeaf91 : PackedNatTable.Table Nat := .leaf #[ 0x116e22d058828d202b0055c0ce019b03101f8928d9f1c4bf097e52fda5ff4cb0996532ba6554cb69994c3b9283467c491926e993411702c00efc80014e08a17d320a6434c88991538ea6271b5a96c062728b93bee9b18dac23d0030, 0x230e11082220445888c11149310432886610d021a4433992c115a209041188af115c147cc96a7083164979d2f4a5ea4bf097e530b27da4c36130026104c1097e12ec02280012ae08e00ab8a6484c6a99693000825104e2098258956231688df8c59a62f518c22b04168028325663951e398e432088f304231903106a210041f8834106420cc43f88411084210c44020a0110a20c041600270a589d9429b05385182a33c256a5402abc92b8af318b931fa632d1e518ba31768f0cc5e2686065, 0x1a3c000298c931a26484e689cd44120823115e22b828f992d4e1062c84ea89d413ae27584e809d2499c68f91f29a3d019, 0xa1a143028928b10a50149c01228d30a6e14e525715e62bc6952c28590064170a341318051c0a36148c28e95ce4e0e573532426354c989d753aaa756139a27304ec09cf139c011c0019a3947cc68e104f15bc02c, 0x439a8c910dc930d471a8c6115820b4014052c325621d443a0872109821d92bc887a4f9616f12a996584eca14d829c28e413943d987b285c52cc29150d1b24ae2bcc63c11e498f1026, 0x146a0787349497bd2f805ce2d060625246a6524cae994d32aa5ec4bdc99c144409c30b8617082df85be51ca220c44388861104220401011102222444912aa6ff4e3497fd347a6aa4d56a2e945990be217a42f085d8f6e1eae892d3472502436691e50db26f64bba890cc7f23cb31fe596d1cc1a320bcc185430a05e42d088e84b429a2f346068b91cd09ad0c102c5d4558904120624244838905009603a4cbb23d432ea236846f08dd11a8234c477257f11d823ac47a25810bec899d300a6024c0c9811312263a4c7ca22d34d0d9b414e98f131ea63b4c7e97c933f268011ee6f612f8a6094c28987533da67c4cfa99fc5c525a217182e3461d0b8e171e6f781060b904b46093c128024e04ac948c0f59ff4125aa3852f4a5ea4c1698692f426544cac996132ca66650ec9258128a52204a609a8194026804d24d0d38a826703b001dc0ec8233045e9ce53a727564eaa9d5d3ae24992684983c9a2235b268a925d304260a4c24984d30c26194c389854deea41237b86f6534ca4b311ce23c52c001392d8200052fc25f94bfa97f92fba5fc4cb4980030f01570338066c0c41283467c5b09244994947a6653c46208c200b69f9945628ae32826dc4d0da3e40ee, 0x6180ac815a4f92a1cc30b86190c301858078013a465897d92fc25f94bf697fd33b26af4d669ad135aa87149125ae51d116ba346068bcd17239a135a18214581a1b47c8491d43e233b027, 0x1570338066c0c41283467c0561473018d1d8206380c7a8e714d6232002ea7e65158a2bc48219751272240c4848907120a01302f9997647a866a8d6685f1138026fc2fa05f644ce980530126064c0898912fe263a4c7ca22d34d0d9b414e98f131ea63b4c7e97c933f268011ee6f612f8a6094c28987533da67c4cfa99fc5c525a217182e3461d0b8e171e6f781060b904b46093c128024e04ac948c0f59ff44bd297a9305a61a4bd0a1d924b02514a44094c135032804d009a49a1a71504ce076003b81d9046608bd39ca74e4eae9d7124c93424c1e4d111ad9345492e982130526124c26986130ca61c4c2a6f752091bdc37b29a65259969547c65a507269e99422699193320e481c8e39307248e4a125a93e4f49a4333d24a19c3aca5630e841d0c76287460e8e82e84e185c30b8416fc2df28e51106221c443088211020080888111122248954000a6ff4e3497fd347a6aa4d56a2e945990be217a42f085d8f6e1eae892d2fc25f94ca8995932c26594cb49801333268e51c294090d9a479436c9bd92eea24331fc8f2cc7f965b473068c9318264c4eba9d553ab26332fbc911cbee17ed24ec911493a92460e5, 0x28e2116605c80bd817102e005b858a1b6e491849649331265466a05d492f23383266220c44388861104220401011102222444912aa6ff4e349a3d45d28b3217c42f485e10bb1edc3d5d125a68e4a0486cd23ca1b64dec977512198fe479663fc079a51101e2013c028805f00c6042848e1b7011b86540cc4010c123e6dbd382285f4ec09e1931927614e3a989c492092345962494cc78927124c24a12c299995114980d312a66650c866451eb23fd4902663926400fa11723d8045d88bc013865e93458f6711b67f29348193a48a464e425504ab0a84120c414082a51ae24bc49819a64bd697b52ff8158248c9849309a65b0f0e69292f7a5f00b9c97b12f72670511024cc4990936126a24d0ccf99a03342668ccd1199e511299c4498999c333a666c2379be84bd297a9441a61a4bd0985d31726b34d682e1900a26aa4d569ac536c28741f3497487cc8f9800083e587cb8fa31f289f747d90f901d1a3e3c7d98f8d4eb0a1f944a2893127266a922d9ffe3ffe80a47d48fae1f583eac0028e8e1d1e7bb932ba6534caa9b9c74f8e981d343a6474a0fad4b965a0c0c4a48d4ca4995132b26584cb28080f72a43e3dde93fd00fa45a48b28009001a6ef4d6c9ac935809460944128424e049b093294fd4620a5e14d6232002e9acd0c102c5d4558904120624244838905009603a4cbb23d432ea236846f08dd11a8234c477257f11d823ac47a25810bec899d300a6024c0c9811312263a4c7ca22d34d0d9b414e98f131ea63b4c7e97c933f268011ee6f612f8a6094c28986130ca61d4cf699f133ea67f17149688deca6994966239c478a58002725b04000a5f84bf297f52ff25f74bf89969300248932928f4cca788c41184016d3f3194136e25534aa8237a337018780ab819c03360620941a33e2d8462d51c4955d161, 0x1f6d41586ab2e983c6478c0f271e341f68fc0244e3efe18dd2ad86390c743b9031d879c2c6e16482aa05940b26103c20704102174104431228da51bea36cb6424782998532cb1c96382c0258112f9a6284c6038e4f418eeb3e92993875186ad0d581aa8354a8e01eb43d60017a73c0d3a1a7d25c973d3f7e18c48c6118b0c645b5138496d30c16183430606092d548e7cb558a6714cc297830428b014d6232002ea7e6359a063c0cc8198031a49d519e92763594935431386260c6018a831624b42d9a8e90b66174b47587bccc1b244c2dc05b743d607b10f68467938f1849497c1f6478d8f261e3a3c70fc628994cf03c90fc507df3f1299e544c1f823f1a7e043ef07dd001c1ed43db07af001e1ee03dc87d43e8499e83e287c40f8e1f183e987c90f901f352b707cc511a1f283e8256f0fc03b8cfa087e24a3661dd447a6eb4982616d1df185a30b23b387668ed71da03b3c0060ed11da4463519284cb0a7814ec264853e33480629474a73b13ce27944f509e900d469592678b03160a2c1058089e61bb2376946a8c4213d601a53bd09fb13faa2a04ac095712bc25644ada4cb339a8f6cce6274005fe0bf4041030406220c2d46b249d27ba254881e103b12a629c453d0a7914ee011053e0a7d14ec010853f8a883b362a3c5488a9015962a5454a0a93007e00f053aa89635ca8fd0d72269b513e6b7526b8a973dae979d30da67250ea9a75306287749b06b5526b19c34e1867092689a593940789cf131b5947f26d6944f07400ca81990331865b0cb826e832e874151d05f6d1f116fd2e068ea8bed28a450dea2384e185c30b8416fc2df28e51106221c44308821102008088811112224895537fa71a4d1ea2e945990be217a42f085d8f6e1eae892d32d26004d1c94090d9a479436c9bd92eea24331fc8f2cc7f965b473068c945628af120865d449c89031212241c482804c0be665d91ea19aa0be227004df85f40bec899d300a6024c0c981131225fc4c7498f9445a69a1b36829d31e263d4c7698fd2f9267e4d0023dcdec25f14c12985130ea67b4cf899f533f8b8a4b442e305c68c3a171c2e3cdef020c1720968c1278250049c095929181eb3fe824b5470a5e94bd4982d30d25e84ca8995932c26594ccca1d924b02514a44094c135032804d009a49a180014e2a099c0ec007703b208cc117a7394e9c9d593aaa7574eb892649a1260f26888d6c9a2a4974c10982930926134c30986530e261537ba9048dee1bd94d3292ccb4aa3e32d2892352fc25f94bf697fd324265b4ce898dd257957a470e55ed31b26384c72991d33b26aa4d569abd359a6b44d6aa1c537e25e646287cb52259f2c309892fcc3a24c0207, 0x18124dea2440ada8730300060c0c1017002e205ec0b9017345ae923807b00f501fe03f8084010700a6a0388f591e74a22477d2fc25f9031e06640cc018d515c49d519e92764bfe9d813c326324ec24968933125924da49b8932a33502ea04000bb0bbf02ee05e145600e301ca01cc00081180a883d842a2854651d457d4fe3238a2be89218930240e24be497919c126c04d, 0x4f3a8cc142a286050b8a1434ea9c38d3b0b03160a2c1058089e636b28fe4dad1b5737c66d591aa8afd055c9dcd42f02ab05586d4c2bd25f34e08985130c26195102a17d44f286f511ca29130ea71d4c4e4e4cda6a3f713bc277450009ff135426a12c49a5c47ce69304f28dd91bb4a35510726c3189236906d18c4b189401984f70c54174a7da931b26464cb4980133aa6b850f42f64e1800014cc099852731ca8484c729d4511e273c4c27a84f4806a4ef427ec4fea8a812b0255c4af095912b6932cce6a3db33989d0017f82fd01040c10188830b51ac92749ee8952207840ec4a98a7114f429e453b804414f829f453b004214fe2a20ecd8a8f15222a405658a9515282a4c01f803c14eaa258d72a3f435c89a6d44f9add49ae2a5cf6b9ff4125a7c712fc25f94bf697fd32ba6554cb69995305a60a4c3497a132a26564cb0996533328764bce97a52f526094c3698e131ca6724ce898dd43aa69d4c18a1dd26c1ad549ac670d38619c249a26964d2b24cf0c6, 0x28cc142a286050b8a1434ea9c38d3b09e713ca27a84f4806a4ef427ec4fea4d134b269592678b03160a2c1058089e636b28fe4dad1b5737c66d591aa8afd055c9dcd42f02ab05586d4c2bd25f34e08985130c261951029d0017f82fd01040c10188830b51ac92749eea85f513ca1bd44728a44c3a9c753139393369a8fdc4ef09dd140027fc4d509a84b1269711f39a4c04d, 0x28a812b0255c4af095912b6932cce6a3db3398254881e103b12a6670d38619c2011, 0x15202b2c54a8a94152600fc01e0a75512c6b951fa0a91151e766c5440a7f008429d853e8a7c008829dc53ca4d735ba9a6d44f9ae401c, 0x7420e871d0c1ba437580e501c6921925d9ed148783a1545b0a6b11900174d668904120624244838905009665d91ea19751188230802da7e6501c9cac73f85552c1a155c2ac05591cd615687350b443d6890d4b039606471c7b245ad8419084a109021107e716549db544e289b10100c04040989c20d42c753b982ab05586d4c2bd25f34e08985130c26195102987538ea62727266de840a0b19102e20580430084061262a91ff1b8530f453611b69bb250e6a2443f225364ea6a17d452286f50bca23944f03f3062a0c4d3a0a49e494a61e4ca09ef64cc0999d334266c4d3499a85ec9f6a37f697fd322a65b50f29add2fc25f94c6c991932d26004cea9ae143d2661516811c0df226164fb4995d32aa6654c5e7fd0f6ba5e74bd297a9304a61b4c7098e533926744c6e2a5d4778a7a14e2a3b926b1ad549b0a1d534ea60c50ee982d305261a4bd0995132b26584cb2999943b253a2a482d005a10b4116782cec73ea4fe372c900cdcd8a1f143c288451009a935089c3cd4189a5134828644d389a601000004d0aa3ea34289d0017f82fd01040c10188830b493a4f7546b1ed00de ] def policySharedUnitFixed0HintLeaf92 : PackedNatTable.Table Nat := .leaf #[ 0x27ac62128d51bb437654769e263c4e7280034a77a13f627f547800e9030e056092305e60c2a18502f201392d8200052fc25f94bfa97f92fba5fc4cb4980030f01570338066c0c407e24a36a3b04ee071e0e3a036c06d00dc2f6c037406f28eb23b28ec08ec11d74764692cc3b9283467c5b09244968447425a152689a59043, 0x159510005680c2126f02b6a1cc0c08180030606080b8017102f605c80b9a2d70002923807b00f501fe03f88f3a51123be97e12fc818f033206600c6a8ae24ea8cf493b25ff4ec09e19319276124b4499892c926d24dc499519a8175020005d85df817702f04981207125f24bc8ce0936124703d, 0xfce1088212042508322d6d3958e7f0aaa58342ab85580ab239ac2ad0e6a1688a2d05a00b4216822cf059d8e7d49fc6e592019b9b143e28785108a2013526a113879a83134a269050c89a7134c0200d0aa3ea34287ad121a96072c0c8e38f64a87351221f9129b275307e60c54189a741493c9294c3c9bb246da5360595276d5138a26c4040301010262708350b1d4ee6a17815582ac36a615e92f9a7044c28986130ca88150bea279437a88e5148987538ea62727266de840a0b19102e20580430084061211c0df200014c2c9f6932ba6554cca98bcffa1ed74bce97a52f526094c3698e131ca6724ce898dc54ba8ef14f429c5477274005fe0bf4041030406220c2d46b249d27ba9358d6aa4d850ea9a7530628774c16982930d25e84ca8995932c26594ccca1d929d152431548ff8dc2987a0a4, 0x27ac62128d51bb437654769e263c4e7280034a77a13f627f54798158248c03a409c96c1000297e12fca5fd4bfc97dd2fe265a4c0018780ab819c033606203f1251b30ee4a0d19f16c24912061d47609dc0e3c1c7406d80da01b85ed806e80de5158a3c8084010700a647ac8eca3b023b0475d1d91a4b501c038c07280e60ddc272c37786f051e25e34d1ba5f52f1892192689a5904f, 0x2741011210bc59728b837140c4c18aa49e009, 0x642406080b832251ea4fd138293f3008, 0x20b857c0af610601f9a8f5494a53511ca14d300a, 0xa3d02d00ecc1d96167cb209f2b3b3c5c98b2105b30cfc19f42d9059b005c166400096522e4a5c90b9124b72e46594d47ba8f601b, 0x103820810ba0822104946f0c97192c32ac64c8c980024326864d8c9c39da99846530ca51954329c6541c304cc093ace77a41739dc9b212d99cdc39b69060e6d28f8299a91e0a66040f2d96154c2aa05922c6e97cd314079c0c7e18f831d06390c6e956d41586ab2e983c6478c0f271e341f68fc0244e3efe1f6c3ec8f1b1e4c3c7478e1f8c513299e07921f8a0fbe7e2533ca8983f047e34fc087de0fba00383da87b6497e61d126007ac0f621ed08cf07af001e1ee03dc87d43e8499e83e287c40f8e1f183e987c90f901f352b707cc511a1f283e8256f0fc03b8cfa087e24a3661dd447a6eb4982616d1df185a30b23b387668ed71da03b3c0060ed11da4463519284cb0a7814ec264853e33480629246a5fb4c90996d33a2637495e55e91c3957b4c6c98e131ca6474cec9abd359a6b44d6aa1c537e25e646287cb52259f2c30989c78c24a4be2dba5b811d318364c6038e4f418eeb3e92993875186ad0d581aa8354a8e01eb43d60017a73c0d3a1a7d25c973d3f7e18c48c6118b0c645b5138496d30c16183430606092d548e7cb558a6714cc297830428b014d6232002ea7e6359a17c44e009bf0be817d9133a6014c04981930226244bf898e931f288b4d34366d053a63c4c7a98ed31fa5f24cfc9a0134ca4b32d2a8f8cb4a018f033206600c69275467a49d8d6524d50c4e1898318062a0c5892d0b66a3a42d9823dcdec25f14c12985130ea67b4cf899f533f8b8a4b446f654748b8c171a30e85c70b8f37bc08305c825a3049e094012702564a4607acffa092d4bd297a9305a61a4bd0a1d924b02514a44094c135032804d009a49a1a71504ce076003b81d9046608bd39ca74e4eac9d553aba75c49324d09307934446b64d1524ba6084c149849309a6184c32987130a9bdd48246f7139da89e0e80195033206630cb619704dd065d0e82a3a0beda3e22dfa5c0d1d517da5148a1bd44709c30b8617082df85be51ca220c44388861104220401011102222444912aa6ff4e3497fd347a6aa4d56a2e945990be217a42f085d8f6e1eae892d2fc25f94ca8995932c26594cb49801333268e4a0486cd23ca1b64dec977512198fe479663fcb2da3983464a38547b28f70de01bc837886ee01cc5e3137f178d0a8c15202a38544023001cc00080e501c69218afa238b2beaa2b0ba5a3ac3de658111d194cb1c7, 0xde21bb807300e501c6a039479a4862f181bc837828f001d2061c0ac12460bcc185430a05e402725b04000a5f84bf297f52ff25f74bf89969300061e02ae06700cd81880fc4946d476187725068cf8b6124892d088e84b42a8ed51eca3dcbc6a6fe034, 0xa2bc48219751272240c4848907120a01302f9997647a866a82f889c0137e17d02fb22674c02980930326044c4897f131d263e51169a686cda0a74c7898f531da63f4be499f934008f737b097c5304a6144c3a99ed33e267d4cfe2e292d10b8c171a30e85c70b8f37bc08305c825a3049e094012702564a4607acffa092d3e3897e12fca5fb4bfe1f8928da8ae30ee995d32aa65b4cca97a52f5260b4c3497a132a26564cb099653332876492c0945291025304d40ca013402692686000538a826703b001dc0ec8233045e9ce53a727564eaa9d5d3ae24992684983c9a2235b268a925d304260a4c24984d30c26194c389854deea41237b86f6534ca4b32d2a8f8cb4a28f916062c145820b0113cc6d651fc9b5a13ce27944f509e900d4695926780de01ba295c06e00da01b630ec38d89dc51f437646ed28d5188427ac0349ca03c4e7898d25a41323ae47611f811d90b3, 0x4fe89fb4ef4a3ecd2ca4d1006, 0xf8e092d3fe87b5d2f3a5e94bd4982530da6384c7299c933a2637152ea3bc53d0a7151dc9d0017f82fd01040c10188830b514c0c5018b28f5493c4f9547ba8f6493a4f7547e24d635aa936143aa69d4c18a1dd305a60a4c3497a132a26564ccca1d92fc25f94bf697fd32c26594cae995532da66503e, 0xc3a8fd002, 0xab819c033606203f1251b51fa61dc941a33e00a, 0x56147f9246003 ] def policySharedUnitFixed0HintLeaf93 : PackedNatTable.Table Nat := .leaf #[ 0x4e4b6080014bf097e52fea5fe4bee97f132d26000c3ca3fcb61248900f, 0x74a901002, 0xde21bb807300e501c6a039479a4862f181bc837828f051eca3dd48128fe5200179830a86140bc8a404b4223a12d0aa3f0bc6a6fe01c ] def policySharedUnitFixed0HintTable : PackedNatTable.Table Nat := (.branch 0x2f0 ((.branch 0x170 ((.branch 0xb0 ((.branch 80 ((.branch 32 ((.branch 16 (policySharedUnitFixed0HintLeaf0) (policySharedUnitFixed0HintLeaf1))) ((.branch 16 (policySharedUnitFixed0HintLeaf2) ((.branch 16 (policySharedUnitFixed0HintLeaf3) (policySharedUnitFixed0HintLeaf4))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf5) ((.branch 16 (policySharedUnitFixed0HintLeaf6) (policySharedUnitFixed0HintLeaf7))))) ((.branch 16 (policySharedUnitFixed0HintLeaf8) ((.branch 16 (policySharedUnitFixed0HintLeaf9) (policySharedUnitFixed0HintLeaf10))))))))) ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf11) ((.branch 16 (policySharedUnitFixed0HintLeaf12) (policySharedUnitFixed0HintLeaf13))))) ((.branch 16 (policySharedUnitFixed0HintLeaf14) ((.branch 16 (policySharedUnitFixed0HintLeaf15) (policySharedUnitFixed0HintLeaf16))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf17) ((.branch 16 (policySharedUnitFixed0HintLeaf18) (policySharedUnitFixed0HintLeaf19))))) ((.branch 16 (policySharedUnitFixed0HintLeaf20) ((.branch 16 (policySharedUnitFixed0HintLeaf21) (policySharedUnitFixed0HintLeaf22))))))))))) ((.branch 0xc0 ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf23) ((.branch 16 (policySharedUnitFixed0HintLeaf24) (policySharedUnitFixed0HintLeaf25))))) ((.branch 16 (policySharedUnitFixed0HintLeaf26) ((.branch 16 (policySharedUnitFixed0HintLeaf27) (policySharedUnitFixed0HintLeaf28))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf29) ((.branch 16 (policySharedUnitFixed0HintLeaf30) (policySharedUnitFixed0HintLeaf31))))) ((.branch 16 (policySharedUnitFixed0HintLeaf32) ((.branch 16 (policySharedUnitFixed0HintLeaf33) (policySharedUnitFixed0HintLeaf34))))))))) ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf35) ((.branch 16 (policySharedUnitFixed0HintLeaf36) (policySharedUnitFixed0HintLeaf37))))) ((.branch 16 (policySharedUnitFixed0HintLeaf38) ((.branch 16 (policySharedUnitFixed0HintLeaf39) (policySharedUnitFixed0HintLeaf40))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf41) ((.branch 16 (policySharedUnitFixed0HintLeaf42) (policySharedUnitFixed0HintLeaf43))))) ((.branch 16 (policySharedUnitFixed0HintLeaf44) ((.branch 16 (policySharedUnitFixed0HintLeaf45) (policySharedUnitFixed0HintLeaf46))))))))))))) ((.branch 0x170 ((.branch 0xb0 ((.branch 80 ((.branch 32 ((.branch 16 (policySharedUnitFixed0HintLeaf47) (policySharedUnitFixed0HintLeaf48))) ((.branch 16 (policySharedUnitFixed0HintLeaf49) ((.branch 16 (policySharedUnitFixed0HintLeaf50) (policySharedUnitFixed0HintLeaf51))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf52) ((.branch 16 (policySharedUnitFixed0HintLeaf53) (policySharedUnitFixed0HintLeaf54))))) ((.branch 16 (policySharedUnitFixed0HintLeaf55) ((.branch 16 (policySharedUnitFixed0HintLeaf56) (policySharedUnitFixed0HintLeaf57))))))))) ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf58) ((.branch 16 (policySharedUnitFixed0HintLeaf59) (policySharedUnitFixed0HintLeaf60))))) ((.branch 16 (policySharedUnitFixed0HintLeaf61) ((.branch 16 (policySharedUnitFixed0HintLeaf62) (policySharedUnitFixed0HintLeaf63))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf64) ((.branch 16 (policySharedUnitFixed0HintLeaf65) (policySharedUnitFixed0HintLeaf66))))) ((.branch 16 (policySharedUnitFixed0HintLeaf67) ((.branch 16 (policySharedUnitFixed0HintLeaf68) (policySharedUnitFixed0HintLeaf69))))))))))) ((.branch 0xc0 ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf70) ((.branch 16 (policySharedUnitFixed0HintLeaf71) (policySharedUnitFixed0HintLeaf72))))) ((.branch 16 (policySharedUnitFixed0HintLeaf73) ((.branch 16 (policySharedUnitFixed0HintLeaf74) (policySharedUnitFixed0HintLeaf75))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf76) ((.branch 16 (policySharedUnitFixed0HintLeaf77) (policySharedUnitFixed0HintLeaf78))))) ((.branch 16 (policySharedUnitFixed0HintLeaf79) ((.branch 16 (policySharedUnitFixed0HintLeaf80) (policySharedUnitFixed0HintLeaf81))))))))) ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf82) ((.branch 16 (policySharedUnitFixed0HintLeaf83) (policySharedUnitFixed0HintLeaf84))))) ((.branch 16 (policySharedUnitFixed0HintLeaf85) ((.branch 16 (policySharedUnitFixed0HintLeaf86) (policySharedUnitFixed0HintLeaf87))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed0HintLeaf88) ((.branch 16 (policySharedUnitFixed0HintLeaf89) (policySharedUnitFixed0HintLeaf90))))) ((.branch 16 (policySharedUnitFixed0HintLeaf91) ((.branch 16 (policySharedUnitFixed0HintLeaf92) (policySharedUnitFixed0HintLeaf93)))))))))))))) def policySharedUnitFixed0Hints (i : Nat) : List Nat := policyFixedHintDecode (policySharedUnitFixed0HintTable.get 0 (i - 0x2331)) def policySharedUnitFixed0_root_empty : policySharedUnitFixed0Db 0x2903 = [] := by decide +kernel def policySharedUnitFixed1Clauses : PackedNatTable.Table PackedNatTable.Block := (.branch 23 ( (.branch 11 ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x860080407ec07c607ba06b406b006a4065c065a06560638060405e005620494042c0424042003b8039603740370032c02f0028a027a0276022601b001a0019c⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1052104e1038102810261022100c10080ffe0ffa0ff40ff00fe60fe20f7c0ed20e600e5a0e540d3c0d360cee0a4c0a2a0a1e0a1809f209d2091c08ec08d4086a⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x166e166a1612160a160615e4155815561552153c153814fa14f614e014de14d4142213ce132c12ec124c121611ec11e211de11a2112e110e10b8108a1086105c⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1bd01bc61bb41bb01bac1b5a1b581b541b3e1b121a701a661a2c1a2a1966193818a0188e183c180a18081806180217ca1788175a173a171616ce16cc16941670⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x20221ffa1ff61fcc1f981f7a1f201f0c1f081eb41e881e861e821e601e521e221dfe1df01dc81dbe1db01d6c1d681d201d101cde1ca01c1a1c161c121c0c1c08⟩]))) ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x26ea26b8269c2698262c262426202576256a253c250224d024ba24b82494244823ee23d42344234222fa228e221a21ca21c221b020c420bc20b82064205c204c⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2d2c2d222cf82cbe2be82be62b582aba2ab02a882a722a5c2a502a4429f429ec293e292e291c291828fa28da28d62846281a27fc27f82794276a273c26fe26f2⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x32b032ac324a3240320431e2319e319c31963174316431563132312e311e311c311630ae3076305830543012300e2f3a2ee62eb42eb22e8e2e462e222e1e2d4a⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x3a3c39f63962395238c63860370c36d236c636ae367e36763672363435de35cc35a035903582356e34e834d434a2349e34683460343633d033a2333a333632ee⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x3f7e3f563efc3efa3ef63ee43ede3ed83e883dea3dd23d9a3d7c3d5e3d5a3d1e3d063cfa3cd63c9e3c8a3c723c263c063b923b703b463b123b003ac23ab63aa6⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0xef80e7a0e700d940d140c260b88096e090a08b8079806d606c6066f016005ea0536000200040356030e02f4025e02520246022a01fc01ee01823fe03fd83fb6⟩]))))) ( (.branch 6 ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1af01ad01ac61aae195c193e1890180c172e16d716bc15fa157614a81488147e144e13a2134e128c12601242122a11c61188115c111610c00fa60f640f220f02⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2bf02b522aa029ac298c2922290228ac28a02862285828042782275e274e26c82668265e260c259e23c4238c20a41f2f1e8e1e361de21d981d2a1bb81b6a1b08⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x31102bf01cb01bb01853e683e4a3c103a0439ec39c4397e397438ac383a37603724365e35d234ec3482342a340233ca325831fa306c2fea2d402d082cac2c4c⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x94b0935090d08f908bb08a308930845082f0817080b07d507510739071d06df068705ed051304e70481046d0461044b0431040503ed03dd03bd03a503790359⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0xddb0dc30db10d9f0d6d0d210cdb0ca10c3b0c290c110bdf0bcf0ba70b910b6b0b550b3d0b250b0f0af30ae30ab10a9f0a890a770a6b0a3309db0987097b0971⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x157914ab14691451143313f513db13ad13a51385136f135b135112d512c312ad129b128f127b11f3115f10f1106d103d0fa90f670f250f0b0e8d0e310e070ded⟩]))) ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1fc11fb11f871f451ee51e9b1e111d7b1d531d371d2d1cb91ca71c691c411bbb1ed21a8f1a491a211a1119e5185b180f17ad170316dd169b1679163d15d315b5⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x260f25e725d125c325ad25a125932583251b24f1249923c7238f22ff22d522a321fd21e921d32183216d215b214f212f211f211320f720dd20d32081206f2027⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x31b33143307b2ffd2fed2fd72fc92f032e6f2e592e092d8b2d792d0b2ce72c8b2c772c432bcf2b852b712ac32a8d29f9299529252905286d27cf2785272b26cb⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x202038c01cc092801bc016c3f1d3e2d3da13d833cfd3c3b3c1b3b813b4b39fb39bb39ab391b373535d535c1351734db34a9340d3405333d329b326d31e531db⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x6ec08d606e006880522051404e804cc04a7052a04820476046e0496046204a0044c049c0432041a0406047a03ee03e603de0a5c03be03ae03a60d2e037a02aa⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0xaca0a6c0a6009dc09c3099009882148097c0ad2094c0a6409360cd408fa08da08a4089c089408f208300e200818080c12e6075212e2073a072e0726071e0702⟩]))))))) ( (.branch 11 ( (.branch 5 ( (.branch 2 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x1bee0c120be80be00bd80bd020600ba80bfe0b920b740b6c0ba00b560b9a0b3e0bc00b260bc40b101f240af40aec0ae40ace0ab223cc0aa00ad60a8a0a800a78⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x11f410d01982103e0fbe0f3831260f0c0ed813420e8e21440e320e280e080e240dee0de40ddc1eb60dc40e1c0db20e160da00d420d2a0d220ce40cdc0cbc0c76⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x19e61872185c188617ae1798237616de1816169c16001564140613fe13f62a8213ae138e138613c01370352e135c13c412d612cc12c425bc12ae3964129c1266⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x21302128212021bc20f821b820de2092208220962070205220281f901f881f741f461f7c1ee61ea226841d38201c1cba1c841f5e1c421bf61b7e1ed61a7623de⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x270a263a2e9025e825fa25d2263225c4260025ae2ee8262e251c244e2300232422d6221021fe21f221ea221421d42198218421a0216e2164215c219c215021b4⟩]))) ( (.branch 3 ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x373636e4353a36f2340e32ba328232b2326e30c8307c2ffe2f1e2e802e702d8c2c583fe22bd02b9a2bc82b862a9a2a8e2a302fde29fa29c02a182996282627ae⟩, ⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x3fc03fc83fdc31d61ed81cf431ac1dea191212681978123209d409c4050604a8029e02043f383ed03cc83c783c563b663b4c3ae03a423a2839d0393637663bde⟩, ⟨0x53026812408c04401e80e407003601a80d005c02600f8054028010007803801a00c0058028012008003801800a0040018008002000, 0x2a6929132a492a53208e27c1232922cc22d124da36a636a336ab333f23af1a8836a31d4f039d0d931fac00c50d931d4f36bf0c311d48296327a633c233ac03d0039d03430339034d030303d0039d02dd02fd029102a102b902a502dd02fd029102b902a102a502d902dd02fd029102b902a502a10340036b035302d817e22c7f1abf039d044527ea280e2e9e1e4a0ada09980997052604b604b5099d061416263908348a2986⟩]) ( .leaf #[⟨0x7a03b81cc0d406803201780b0056029013c09a04a022811008603b01d00c806002f015809c04802200d005001a00c0058014008000, 0x246601db23bf24bd24bf24c022d115eb1519157515c714973ccf36cf1495149d096d0145237b16f1234606a8155d0fdd0904155f0ce9151b149714953ccf36cf149d149b15a315720c301e271ef800b30f950f6f0fa10f6f0f710f6f0f710f4f0fdd0f6f143509030f9510e811bc02a1091f1dd71853233902fd142b100f1db702a1229f23a7091f0a23369902fd09271fef1fe31e7a229f226f3fad2ac531cb1f5c1f3e1f6e0d931cab044429ab0f63011f0116149515151497149d15190127039d029102dd24e103d0167502dd039d24e1029103d0167502d8164416c600ee250514971495017b24e816482c0f2c2e2bfd2bf6⟩, ⟨0x9b04d023010a07d03d81d00e206d035019c0c805a02a814c09c04a023810807e03a01b00d406803201580a403c01b008003000c000, 0x1aa03d0039d02b9029102dd229f0a23369923a70fdd090302a1013902fd149d3ccf149536cf149715190136149d1519149536cf14973ccf15750138090415180fdd0903091f233902a102fd01390132142801350fdd0903013d0f6f054b017a0111017a24da023f01db039d247f011100fd23122395332532fd0ac701db242122c1011100fd231222bd00ee049a23af0ac7242101db2465096c069b2387236606a82ac5049b05e4054b016201db011103d73e273ea90d9324652463054b2421033a03430339240a033b058405ac17223f681aa927e71da91b4d1cfd2800007a1d291cfc08b30c70233915eb1fdb091f02fd3ee902a13cdb0e6830e230f030df23393e253cdb1fdb091f02fd3ee902a115eb3e2300e600ee167503d024e9023f149514972505017b023d2487041524da24bd24bf017a⟩, ⟨0x6002e815c0ac05402901440a004f027013409804b022010c06e033017809c04001f00e006c03201600800340140080030014008000, 0x8b513a104470ef61347133d33d833f30ecb10ac3b9e36d821693d6e088a2e342f6212ee11ac12f411340777310f08cb211b30df080707d107ac30ff3ded3de11fdb3cdb34393dd91855159f1ffd33fb30f90e6d0d680c8b08b23cdb0f6d11b300e6157420cb159f1ffd0fdd1fdb09031fe124e90d0f161e14b3049a02dd00ee11d606a82ac506c3054a023301c60241023d024202fd02a502a1017b01c7010d03d01e2702dd1e2702dd02d902a122b702a123ab15b11fee061005e906a806b8⟩]))))) ( (.branch 6 ( (.branch 3 ( .leaf #[⟨0xd506683001760b3056829013a09704382080f6070033816c0a604c02180f8074034017009c04601f00d805401e0090018008002000, 0x13a10c30291e27a5186a1c5927e7281f0b512ef12a9f1ba72bc11bd313a1291e0c30186a1c5927a51f6f13a1281f291e27e727c9282127e5281f27e7291e2920209f288b13a127e7291e281f005c2091271926a9270526a7268f268d10e72689268b2a9f1ba72bc11bd31f111f1327810c301b4d1ad9188100bd00c70f190adf0f4f18353253182f1515186d1853149d149514970f9d0fdd1883186b3d5321f73d1721693d54149d15193ccf36cf14971495013808b30c660e691515186b14951497188c149d1853186d08c20c8b096b030d0f6d10cb11b311b7177f08b30c6614951853149d186d184f186b1515149718570e6927a527a927bd27bf1c590c3027a7186a27a527a927bd27bf27a710e700c62ab70f9d0fdd0f190adf0f4f182f183517bb2091291e28e528ed28352a692913208e27a42897291e27e72091281f005c288b282127e7281f27e5288922992a9f095f096b23612357018103d002a502a102fd02a102a502fd010d06c302a503d006a803d002a502a102fd00ee010c24da03d002a502a102fd023f02fd02a502a1017b00ef010d03d002a502a102fd02dd010c0611063401d4⟩, ⟨0x9a04a024412008f047023411808b04501fc0f807103781b00d606a03401980be05002300e4058021010006c03001600a8030004000, 0x194b194d151915751e6700e716d306c4067307bc084c18e8191418ba2f9c2cfe147a203f20130fdd0f190adf0f4f2ab7186b188a0fa1167503d0024e173d23393ee91fdb091f3cdb15eb02a102fd08b20e6c14a7234714a706ae096a16231646147a01260c8b0c7106a81622149d15191575013816f63d1721693d0f203f200a030d3ee91fdb091f02fd15eb02a123391fe1096b0c7002fd23393ee91fdb091f15eb02a10e683cdb0fdd030d21cf3ee91fdb091f3e9915eb02a1233902fd096b1fe106c416223d1721693d0f23dd0f4f0f9d030d186b0c8b149d067308b30c6614951853149d184f1515186d186b14970e691da82a4328b32913209b27a41c591f6a304310e70111055800ee2e8523a703d02e7f225702a522a1010c02dd2e85029123a722a102a52e7f225702b902d9289d2898⟩, ⟨0xbf05d82e814409d04782000e806b03001680a404a024811808804001e80e406e03501980c804e02100e006c03000d004801c00a000, 0x206b300d26d704442e00004b27a527e33fb13dab11b71e273ee9309f15eb233902fd1eab091f02a11ae126552ef10adf26d71aa91b4d1dcf27e10b390b870c311e2700c6004b27a53ee927e31dcf15eb1eab02fd1ae102a12339091f27e11d083fb1007b11b71e273ee91dcf15eb233902fd1eab091f02a11ae13dab3dc90c310adf0b390d93039d1fac1bdb23953fb902a300c51d4f26552ef10adf26d71aa91b4d309f2e01007a26d730b72e013d8b25e130611b4d309f1aa930bd2d020b392bc11bd31f111f1327813fb13dc911b71eab1ae11e273daf007b1bdb0adf1a880d93039d1fac00c51d4f119a2091291e27e2288b27e0004b27a51d29005d1b690d1d1b4c0d1d1b1d1b510b7a1a8b1aa82395090513a109051cfc21f71bdb3fb923951a911b2502a30b391b651b671cfd0c310b871e270b39268f00c62c84268f1e271e051ef81e66234606a816f63e9f147a203f20130fdd0f190adf0f4f188a186b134b133d0eb6009f0eca0e6c00da16d3067302a1092702fd091f0a21⟩]) ( .leaf #[⟨0x7e03d81d40e807303901c40e006f03701ac0c805f02c015409804701e80f007603a01a80c005e02b014008c040015008002c008000, 0x6a80139049b385738a32cb92ca53845003428142dac2d6238f2389e343a388630a330a930b10c340d1d1c591ad91aa918810c3128963eb427e7281f289c20910ac92fc03c2d27e7281f291e1abb1abd1abe0c703f690d0f11b3133d0ecb0f6d12d10e6c1ae11aa91b4d1afd186a0c703f690d0f12d1133d0ecb0f6d11b311b70e6c1126107e115614350ce90f710f4f17ee149702a3023f14951656151804160339034303031e27041602dd023f149714952505023d02da02bc02dd36cf3ccf02a1149514970fed091f02fd23391519149d2a4320912a5429ab27a40b391f111f190c212781007a268f26911aa91b4d268b27720c301e271f3e00b3⟩, ⟨0xbb05982c0138099048823411007f03f01f40e406202d015c0a4051024010808203c01d00d80680300158068030014007002c002000, 0x23f5013d142b1fdb0139134b13dd1caa13dd226f05e405f80a2f00ee010c03d022992a9f095f096b268d268f2ca518532cb91ad91dd722572e7f23a705f40a00239b23a026542ab2268f2689268d268b10e7007113a1209b291327a413a12913209b27a4289623f5013d0f6d142b0dd61fdb16ab1a0f049a33d93b0b0ecb33fe30ff159f1fdb18551ffd3dd93cdb30f90ef50c3212971c59133d1b4d07cd0ecb33fe30ff1fdb18551ffd3dd93cdb159f0b8623f5013d049a142b0d0f1fdb0f6d0dd61497149516561675149714952505023e34b2377b37433731371f106934733421109b34b337bb37eb380337d3192d0043378811b311b70f6d10cb009b1cab01451575149d0138096a0fa10f6c0fed142b0f4f17ee142b0fed0f4f17ee0ce90c6a0fed0f4f142b149518531857185508071515186d149d186b14970777184b07f4088f185608070777310f077a0f190fed0f4f142b0adf17ee182417c317bf26a926a726892705271928963c2d209100c610e727e6⟩, ⟨0x15109f04cc24c12208a04042000ff07f03e81ec0f1076837c1b60cc05e02a414609503f81ec0c604601e808003c01500a002800e000, 0x136b188c37eb3731371f377b3743149736ff142b149518530fed08071515186d07770adf186b1347133d37eb3731371f377b374336ff136b0adf0ef6184f142b149518530f4f0fed08071515186d07771497186b00e711b30f6d009b00e61347133d3bf237eb3731371f377b374336510adf136b36ff3adb0ef60807136b15151853186d1495188c149711b30f6d37eb3731371f377b37430adf36ff186b0ce9109a192c3802142b0fed1823100e0adf142b0fed17ee023f02a502d802a3236706a802a502d806b80d0f1f230ecb11b30807142b186b1497186d15151853149519880fed18241a433e0d1a3b1f591f7326a926a70c212705271928963c2d20910b390d1d0c341c59186a1c591f591f7318811ad926a926a70c212705271928963c2d20910b3910e70c300ac90ecb12d111b308070e69142b0fed17bf197b149719880ce9151518531495186d1991186b06a8023f02a502d802a306b80ac90c8b0ecb12d10f6d11b3188c15151853186d14951497186b08070c56049a197b152d09030ac9030412d111b31515149515b314970fdd0fb7205723f5142b0139203f0ce91a332ca52cb91e271e090c56049a197b152d09031a330ac917bf12d111b31515149515b314970fdd0fb70ce923f5142b0139203f2057186b030423f5013d142b049a197b152d0903203f205715b31ae11aa91eab1a330ac917bf12d111b315151853186d1495186b14970fdd0fb70ce90ecb133a203f205715b31ae11b4d1aa91eab1dcf201023f5013d142b049a0ac911b315151853186d1495186b14970fb717bf1aa90ce9197b12d11a33133d203f205715b3152d0ecb0fdd090333fe1fdb013511b22657258125cd1f832ca52bf62c0f2cb9265438a2023f2e8522a102a502d823a72e7f02a32257024e06a8236606b823f5013d142b1fdb0139134b13dd⟩]))) ( (.branch 3 ( .leaf #[⟨0x14309c849822611108684302040f607883b81ca0df06b034c1a00ce06082f41740b705a029812807a036017809403b0178080022000, 0x5f803d002dd01390fdd029102b9090323a705f501102e7f22992a9f095f096b268d2cb92ca5268f1ad922570a0005f803d00fdd0903013900ee05f82e7f010c03d022992a9f095f096b268d2cb92ca51853268f1ad91dd722570a0000ee05f40b510b86183f17bb04470fda17ea142b17db0b511ecb0f5d10e31cf91ef40ce9100e25cd26541f590b39186a28963c2d20910d1d1c591f730c251abc18811ad91b4d1abf1c59186a00b21f3e25cd1f83258126542bf62c0f265700b323dd0f9d02d802a523a7044505f80a002e8502a502d8024e2e7f2257041613a1291327a40fa50d93044434f8003e142b0fed14951853184f1515186d186b1497077708070d0f00e7133d37eb0043008f34f734f534f8350935ec35f135a43be4363725cd1f832bf625812c0f26540b391f2228963c2d20911c590d1d186a198815150ecb142b0807149714952b510fed25cd265428963c2d20910b390d1d1c591f2325ff39a23a59136b188c14970d1d142b149518530fed08071515186d25cd1f832bf62c0f26540b3928963c2d20911c5936ff0adf0d1d1c59186a1f3e25cd1f832bf625812c0f26540b391bd31f22268b1bd3186a1f3e25cd1f832bf625812c0f26541b4d0b391f22268b00b21f02186a1f3e25cd1f832bf625812c0f26541b4d0b392719270526a926a71bd31f22268b2e4f00b3268b1bd3186a1f3e25cd1f832bf625812c0f26541b4d0b391f221abc00c72719270526a926a72e4f1f220b01268b1bd310e7268f268d0d1d1c591f3e25cd1f832bf625812c0f26540b391f221bd310e7268b1b4c1bd3186a1f3e25cd1f832bf625812c0f26541aa90b391f22268b1ae11b4d1f3e25cd1f832bf625812c0f26541b4d1aa90b39268f1f22268b1bd310e7268d00b3⟩, ⟨0x127092048824211f08e84301fc0fc06d03401640a604c823c11608503b01d00e006402f814409404702280f006e0310148094032000, 0x234606c40673049b2347186a0138049a186a0139080715150ecb14971495044425ff1f832bf6142b25cd0b39186a28961c590d1d09060444186a25ff0d1d1c592896090525cd1f830b392bf6142b0f870b51013d0f6c23f511b30d682c2e3cc0310f013d049a2e49363f26a72df30f5d0b511ecb10e31cf91ef419fd33fe1fdb0ef515150ecb142b1497149525cd0d1d2b5128961c591f230f6d17c3142b0f5d0b511ecb0ce910e31cf91ef40f87310f0777080730df013d049a377b3731371f2cdb2e49363f26a72df3142b0f5d0b511ecb0ce910e31cf91ef419fd0ecb33fe3dd91fdb0ef518550904142b0f5d0b511ecb0ce910e31cf91ef409030ff60fdd100e203f205715b30ecb33fe3dd930ff1fdb18550ef530f93cdb2013377b3731371f2cdb2e49363f26a72df307cd083825ff26d730b12d2f28963c2d00c610e72091279c186a25ff0d1d1c590bc91f8325cd23f5013d142b1fdb049a28962c2e2689265800702ca52cb90034007b0444186a25ff0b390d1d1c5928960bc91f8325cd268909051abc18811ad90d1d1abf25cd1f832bf6186a2c0f25ff0b390d1d1c593c2d2091289626541f2202dd041602b902fd029102a102a5186a0139096b024200f80a2136cf149714953ccf02a1013902fd091f1bd3186a2e692e85049b1bd3186a2e692e85049b0445146a20133f662cb92ca5268f268d23f5147a20131a0c013706c4069b1bd313a1186a2e6903d00fdd09032e850445067303d001390fdd090305f80a2f22992a9f095f096b2cb9268f268d2ca51ad902dd2e85029102b92e7f225723dd04450f9d23a7⟩, ⟨0xb705b02d41680b305902c41600af05702b41580ab05502a41500a705302941480a3051028410c07f032017008002b00d0054014000, 0x209020b226d620b1325326d52a762aa82a9f26c70b38186c2a7b16f71852044604450f6c013c1bb70138049b09030d93039d3fb902a323951fac1bdb27e3309f26d72ef127a50adf26553fb111b73ee915eb1dcf02fd1e27233902a1091f28971b4d0c3021b31ba71e270b8720f100c60c30304f1bdb21b31ba720f127e31b4d309f26d72ef127a50adf26553fb111b73ee915eb1dcf02fd1e27233902a1091f28971aa900c71bdb0adf1b7721b31ba720f136ab1d4f09030d93039d1fac3fb902a31bdb239527e327a5309f26d72ef10adf26553fb111b73ee915eb1dcf02fd1e27233902a1091f28971b4d0b393e49178013a124da3d1721693d0f200a096b3cdf3e1f03d03fb111b73ee915eb02fd233902a1091f173c3d1721693d0f200a096b030d3cdf3e1f3e2502a1091f15eb02fd23393ee93e231fdb0d931745096b2aa73e272013203f0f190fdd0adf0f4f3e9f147a133d0eb600e703d013a124d50b511bd32bc12ef1291e04451e27⟩]) ( .leaf #[⟨0x2000f807803a01c00d806803201800b805802a0140098048022010007803801a00c0058028012008003801800a0040018008002000, 0x2606260523671514142d1506142a23f411b20134012e160e0136149c36ce14963cce36c814b71494234606a92c0e3b5e3a583c2c3a573a0e33900de80e2c0e4b⟩, ⟨0x5e02e81700b605a02c81600ae056029813c09204401f80e006c02c014009804601e0090028012008003801800a0040018008002000, 0xfa116aa0fdb00a61b4c0c301b68090203041fdb09030ce917ee09030f4f09030ce919a318241a681a00152d1fdb09031fe120101c592896136b1fdb0adf08072bf61c592896136b0adf39a21a32201313470adf136b133d3731371f377b37430ef6000808b3077b184f00e70807077a0adf090317ee0adf17bb090319a30ce913470adf136b37eb133d3731371f377b374336d936dd0ef60807136b0adf2bf61c59289639a20902308a0d0e0776077525fe309e261b30971f820d1c⟩, ⟨0x13009804c026013009804c026013009804c026013009804c024011008003c01c00d006002c014009004001800a0040018008002000, 0x2f4032381ef72c821e04268e00c71e261fd80d92080708070adf2056203e203d15b221a50117⟩])))))))) def policySharedUnitFixed1Db (i : Nat) : List Int := if i < 0x21e8 then policyFixedCompact1Db i else policyFixedClauseDatabase 16 policySharedUnitFixed1Clauses (i - 0x21e8) def policySharedUnitFixed1HintLeaf0 : PackedNatTable.Table Nat := .leaf #[ 0x87710ed002, 0x877a1e8002, 0x87910ed002, 0x44488889110003, 0x8909120002, 0x89121ec002, 0x44988929120003, 0x89f913e002, 0x8a6114b002, 0x8ae115b002, 0x8aea1f1002, 0x459c8b3115b003, 0x45c08b7913e003, 0x8c6918c002, 0x8c721f5002, 0x46448c8118c003 ] def policySharedUnitFixed1HintLeaf1 : PackedNatTable.Table Nat := .leaf #[ 0x8d6a1f5002, 0x47948f211e0003, 0x4814902110b003, 0x4834906120b003, 0x90c9120002, 0x910121f002, 0x910a1fd002, 0x911121f002, 0x48d891a9234003, 0x91c9234002, 0x91d2201002, 0x49d49399272003, 0x93c1272002, 0x4a089409280003, 0x9449288002, 0x4a7c94f129d003 ] def policySharedUnitFixed1HintLeaf2 : PackedNatTable.Table Nat := .leaf #[ 0x4a88950929d003, 0x4aec95d12b9003, 0x9601288002, 0x4b30965921f003, 0x97c12f7002, 0x4c0c9811301003, 0x9851309002, 0x986130b002, 0x988130f002, 0x98d931a002, 0x4ef09dd93ba003, 0x4f409e793ce003, 0x4f509e993d2003, 0x505ca0b1415003, 0x5068a0c9418003, 0x5074a0e141b003 ] def policySharedUnitFixed1HintLeaf3 : PackedNatTable.Table Nat := .leaf #[ 0x50d0a199432003, 0x5160a2b9456003, 0xa36146b002, 0xa36a21a002, 0xa37946b002, 0xa38221c002, 0xa391471002, 0xa39a21e002, 0x51dca3b1471003, 0xa3c9478002, 0xa3f147d002, 0xa3fa222002, 0xa40147d002, 0x521ca431456003, 0xa47948e002, 0xa482226002 ] def policySharedUnitFixed1HintLeaf4 : PackedNatTable.Table Nat := .leaf #[ 0x5250a49948e003, 0xa4e149b002, 0xa4ea229002, 0x52a0a5394a6003, 0x52fca5f14bb003, 0xa6294c4002, 0xa7094e0002, 0xa7614eb002, 0xa76a22f002, 0x53c4a7814eb003, 0x53f0a7d94fa003, 0x5434a86150b003, 0x54dca9b13ce003, 0x552caa51549003, 0x55ccab91571003, 0x5634ac6158b003 ] def policySharedUnitFixed1HintLeaf5 : PackedNatTable.Table Nat := .leaf #[ 0xad895b0002, 0xada95b4002, 0xadb2239002, 0xadd95ba002, 0xade223b002, 0xae3a21c002, 0xae515c9002, 0xae795ce002, 0xae8223f002, 0xae895ce002, 0x57d8afa95f4003, 0xb019602002, 0xb022243002, 0xb031602002, 0xb0b9616002, 0xb0c2246002 ] def policySharedUnitFixed1HintLeaf6 : PackedNatTable.Table Nat := .leaf #[ 0xb0c9616002, 0xb122243002, 0xb1ba245002, 0xb1c221a002, 0x592cb251649003, 0xb291651002, 0xb2d9655002, 0x59b0b359655003, 0xb3e967c002, 0xb45968a002, 0xb462251002, 0xb46968a002, 0xb472253002, 0xb51a253002, 0xb5ca22f002, 0x5b00b5f950b003 ] def policySharedUnitFixed1HintLeaf7 : PackedNatTable.Table Nat := .leaf #[ 0x5b8cb7116e1003, 0x5bc4b7816ef003, 0xb921723002, 0xb92a25a002, 0xb9a9734002, 0x5ce4b9c1737003, 0x5d8cbb11761003, 0xbb5976a002, 0xbb8176f002, 0xbb8a260002, 0xbb9176f002, 0xbc39786002, 0xbc42263002, 0x5e28bc49786003, 0x5e3cbc7178d003, 0x5e4cbc9178d003 ] def policySharedUnitFixed1HintLeaf8 : PackedNatTable.Table Nat := .leaf #[ 0xbd19799002, 0xbd22268002, 0xbd417a7002, 0xbd4a26a002, 0x5eacbd517a7003, 0x5f3cbe717cd003, 0x5f88bf095f4003, 0x5fb8bf697ec003, 0xbf917ec002, 0xc011801002, 0xc01a271002, 0xc099812002, 0x6060c0b9812003, 0x6070c0d9761003, 0x6094c121823003, 0x60a4c141827003 ] def policySharedUnitFixed1HintLeaf9 : PackedNatTable.Table Nat := .leaf #[ 0x60ccc191831003, 0xc1d983a002, 0x6100c1f983a003, 0xc231845002, 0xc23a27b002, 0xc241845002, 0x6154c2a1831003, 0xc35986a002, 0xc36986c002, 0xc3a226a002, 0x6214c4217cd003, 0x6234c46188b003, 0x6264c4c1897003, 0xc51a279002, 0x6294c521827003, 0x62c4c581737003 ] def policySharedUnitFixed1HintLeaf10 : PackedNatTable.Table Nat := .leaf #[ 0x62f0c5d98ba003, 0xc61223f002, 0x6318b1295ba003, 0xc6c98d8002, 0xc6d228b002, 0x6374c6e18d8003, 0x6464c8c1917003, 0xc8f2226002, 0xc909920002, 0x64d8a5e14bb003, 0x654cca91951003, 0xcb6196b002, 0x6604cc0197f003, 0xcc121ec002, 0x66b0cd599aa003, 0x66d0cd99723003 ] def policySharedUnitFixed1HintLeaf11 : PackedNatTable.Table Nat := .leaf #[ 0x6730ce599ca003, 0x6774cee19db003, 0xcf49110002, 0xcf519e8002, 0x67c4cf8196b003, 0x6804d0019ff003, 0x6840d079a0e003, 0x6868d0c9a17003, 0x6874d0e188b003, 0xd221a43002, 0xd22a2a1002, 0x6920d239a43003, 0xd2f9a5e002, 0xd3022a4002, 0xd329a64002, 0x69bcd371a66003 ] def policySharedUnitFixed1HintLeaf12 : PackedNatTable.Table Nat := .leaf #[ 0x69c8d389a70003, 0x69d4d3a1a70003, 0x6a20d439a86003, 0xd4b1a5e002, 0x6a88d509aa0003, 0xd5a9aa0002, 0xd5b22ad002, 0xd5fa2a4002, 0x6b2cd651ac9003, 0xd771aed002, 0xd781aef002, 0x6bf0d7d9aef003, 0xd811b01002, 0xd81a2b4002, 0x6c28d849ac9003, 0x6c3cd871b0d003 ] def policySharedUnitFixed1HintLeaf13 : PackedNatTable.Table Nat := .leaf #[ 0x6ce8d9c9b38003, 0xd9e1b38002, 0xda89b3b002, 0x6d58daa9b54003, 0x6d6cdad1b54003, 0x6d84db01b5f003, 0x6da4db11b5f003, 0x6dd8dba9b0d003, 0xdc1a1fd002, 0xdd7a222002, 0x6f64dec1bd7003, 0xded2201002, 0x702ce051c09003, 0x706ce0d1c19003, 0x708ce111c21003, 0x709ce131c21003 ] def policySharedUnitFixed1HintLeaf14 : PackedNatTable.Table Nat := .leaf #[ 0x70c0e179c2e003, 0xe301c5f002, 0xe30a2c9002, 0x71b0e359c67003, 0x71fce3f1c7d003, 0x7238e469823003, 0xe4822ab002, 0x7270e4d9c9a003, 0x72d0e599cb2003, 0xe7595ad002, 0xe762239002, 0xe809897002, 0xe8122d3002, 0x7424e841d07003, 0xe8b1d15002, 0x74d8e9a9d34003 ] def policySharedUnitFixed1HintLeaf15 : PackedNatTable.Table Nat := .leaf #[ 0xe9c1285002, 0xe9ca20a002, 0xe9e1845002, 0xe9ea2da002, 0x7524ea41d47003, 0xea6a204002, 0xea8a251002, 0x7570d0299ff003, 0xeafa1f1002, 0xeb02246002, 0xebc2260002, 0x7604ec01d7f003, 0x764ce7c9cf8003, 0xeca9cf8002, 0xeda9db4002, 0xedb22e6002 ] def policySharedUnitFixed1HintLeaf16 : PackedNatTable.Table Nat := .leaf #[ 0x772cee51649003, 0xef21418002, 0xef2a2e9002, 0x7818f029e04003, 0xf0a22e9002, 0x78a8f149e28003, 0x78c8f189e30003, 0x78d4f1a1e30003, 0xf229e44002, 0xf2322f0002, 0x7944f281e4e003, 0x795cf2b14a6003, 0x79e4f3c1e77003, 0xf3f1e7d002, 0x7a0cf411571003, 0x7a28f449e88003 ] def policySharedUnitFixed1HintLeaf17 : PackedNatTable.Table Nat := .leaf #[ 0x7a4cf491e91003, 0xf4c9e98002, 0xf569eac002, 0xf5d9eba002, 0xf5e22fb002, 0x7afcf5f1eba003, 0xf6b9ed6002, 0xf71a2e6002, 0xf7522d3002, 0x7be0f7b94d5003, 0x7d50fa99a86003, 0x7da8fb49f68003, 0x7e4cfc91f91003, 0x7e68fcc9f98003, 0x7eecfdd1fb9003, 0x7f3cfe71fcd003 ] def policySharedUnitFixed1HintLeaf18 : PackedNatTable.Table Nat := .leaf #[ 0x7fc0ff79fee003, 0x7fd4ffa1ff3003, 0xffc9ff8002, 0x803d007200d003, 0x8054a6b14d5003, 0x8085010201f003, 0x80c1017a02e003, 0x80e901ca038003, 0x817502e1549003, 0x81ad0352069003, 0x8209040a080003, 0x1044a2c9002, 0x8239046a08c003, 0x8288f279e4e003, 0x82b5056141b003, 0x82c50581d47003 ] def policySharedUnitFixed1HintLeaf19 : PackedNatTable.Table Nat := .leaf #[ 0x82dd05b1e96003, 0x1061a0c2002, 0x1062a0c4002, 0x834506520c4003, 0x838106fa0de003, 0x83d4e341c67003, 0x83ed07d16ef003, 0x1097a270002, 0x10ada28b002, 0x10aea27b002, 0x8580f409e7f003, 0x85b90b6996b003, 0x10b82248002, 0x85c4cf99979003, 0x86490c89c9a003, 0x86910d19d34003 ] def policySharedUnitFixed1HintLeaf20 : PackedNatTable.Table Nat := .leaf #[ 0x10e0a273002, 0x87550ea1882003, 0x8780ea793d2003, 0x25c87490ea003, 0x2d487f9100003, 0x1104016c44088809103005, 0x30c8899114003, 0x34c88b9116003, 0x36c88d1119003, 0x37c88e111d003, 0x4048a09142003, 0x42c8a31147003, 0x46c8ab9158003, 0x961169002, 0xa31183002, 0x6448ee11dd003 ] def policySharedUnitFixed1HintLeaf21 : PackedNatTable.Table Nat := .leaf #[ 0x7009041209003, 0xe6920f002, 0xf09229002, 0x7f891e923e003, 0x80c9201241003, 0x8c4937126f003, 0x9ec95a92b6003, 0xa5096392c8003, 0xacc96f92e0003, 0xcac9b39368003, 0xd549c7138f003, 0xe449e293c6003, 0xed49f393e8003, 0xfbca10141f003, 0xfd4a119422003, 0x1064a1e943c003 ] def policySharedUnitFixed1HintLeaf22 : PackedNatTable.Table Nat := .leaf #[ 0x1078a20143f003, 0x109ca229446003, 0x10e8a291453003, 0x113ca2f145f003, 0x1260a5614ad003, 0x12b0a6014c1003, 0x1300a6894d2003, 0x132ca6e14dd003, 0x136ca7394e8003, 0x150209e65400a7f9501005, 0x13eca84950a003, 0x15130a005444a881512005, 0x143ca8f9520003, 0x14fcaa99554003, 0x154cab39568003, 0x15fcacc959a003 ] def policySharedUnitFixed1HintLeaf23 : PackedNatTable.Table Nat := .leaf #[ 0x164cad115a1003, 0x1668ad295a4003, 0x1684ad495aa003, 0x1758aed95dc003, 0x15fc0bf257e8afc95fb005, 0x18bcb191633003, 0x31a963a002, 0x1938b27164f003, 0x1a04b481691003, 0x1a84b5d16bb003, 0x1b34b7316e7003, 0x1b54b7696ee003, 0x1ca8ba4974a003, 0x1ce0ba7174d003, 0x1cfcba89750003, 0x17590e885d5cbab1758005 ] def policySharedUnitFixed1HintLeaf24 : PackedNatTable.Table Nat := .leaf #[ 0x1d34baf9760003, 0x1d90bbc1779003, 0x1de0bc5978c003, 0x1f54bfa97f6003, 0x1fc4c07180f003, 0x2018c101821003, 0x2078c1b1837003, 0x20d8c25984c003, 0x4301877002, 0x2310c6a18d5003, 0x25e8ccb9998003, 0x2630cd399a8003, 0x2808d129a26003, 0x2870d1f9a40003, 0x28dcd299a52003, 0x28f4d2b1a55003 ] def policySharedUnitFixed1HintLeaf25 : PackedNatTable.Table Nat := .leaf #[ 0x2948d339a68003, 0x1a8e14e66a30d459a8d005, 0x29dcd499a94003, 0x2a10d4d9a9c003, 0x2a98d5d1abb003, 0x1ad115746b3cd671ad0005, 0x2af0d6a9ad6003, 0x2b58d711ae1003, 0x2b74d729ae4003, 0x2bc4d7e9afe003, 0x2bf0d839b08003, 0x2c64d921b25003, 0x2c84d951b2b003, 0x2d68db79b70003, 0x2e18dd69bae003, 0x2eb8dee9bdc003 ] def policySharedUnitFixed1HintLeaf26 : PackedNatTable.Table Nat := .leaf #[ 0x2f30df71bef003, 0x2f98e031c07003, 0x2ff0e0e9c1e003, 0x3030e161c2d003, 0x32ece701ce1003, 0x337ce829d06003, 0x3548ebe9d7e003, 0x35a0ecd9d9c003, 0x3700f089e12003, 0x374cf0e9e1e003, 0x3770f131e27003, 0x1e3d1bde78ecf1d1e3c005, 0x3828f2d1e59003, 0x3908f4a1e95003, 0x3990f5b1eb7003, 0x3a50f7e9efe003 ] def policySharedUnitFixed1HintLeaf27 : PackedNatTable.Table Nat := .leaf #[ 0x3a88f869f0e003, 0x3b48fa39f48003, 0x3bb8fb21f65003, 0x3c84fcf1f9f003, 0x3c98fd09fa0003, 0x3cf0fd69fae003, 0x3d18fdb9fb8003, 0x3d30fdf1fbf003, 0x3f410312063003, 0x419508e211d003, 0x41c1092a126003, 0x4aa32b002, 0x148029887c10f9004, 0x14e02a487d90fc004, 0x7b00f701ea44d089c1136226a44dc89d113900a, 0x852333002 ] def policySharedUnitFixed1HintLeaf28 : PackedNatTable.Table Nat := .leaf #[ 0x8ca334002, 0x122024c0494092115f22c045848b19162009, 0x25a04bc8b5916c004, 0x134027004dc09b117222e645d08bb1175009, 0x27a04fc8bd117b004, 0x141028a05100a1917e22fe46008c11181009, 0x51c0a50149230a46188c41187007, 0x15302ae05580aa9194232a46588cc1197009, 0x15902ba05700ad919a233646708cf119d009, 0x2bc05808d011a1004, 0x2c2058c8d191a4004, 0x16602d405a40b411a8235246a88d611ab009, 0x2f805f88e191c4004, 0x6180c4818823a247488ea11d3007, 0xdf2338002, 0x1e803d807ac0f5122e245e48c09191231009 ] def policySharedUnitFixed1HintLeaf29 : PackedNatTable.Table Nat := .leaf #[ 0x40808189219244004, 0x422084c92a9256004, 0x2180438086c10d125c24ba4978930125f009, 0x874110021f24c4498c9329264007, 0x47c090093e127d004, 0x492092c945928c004, 0x24c04a0093c127128e251e4a409491291009, 0x4a2094c94a1295004, 0x4ac096094c1299004, 0x4d809b895612ad004, 0x9c0139827225604ac495992b2007, 0x13ca33e002, 0x5160a3496212c5004, 0x149a33f002, 0x29f05460a8815092d225a64b5096b12d5009, 0xa9015382a625b04b6496d92da007 ] def policySharedUnitFixed1HintLeaf30 : PackedNatTable.Table Nat := .leaf #[ 0x158a340002, 0x5680ad897112e3004, 0x56e0ae497292e6004, 0x2ca059c0b3416612fc25fa4bf898012ff009, 0x16f02df05ba4c4c98b931526284c5898c931800a, 0x5ce0ba49919324004, 0x5d40bb09931327004, 0x2ee05e40bc4178132a26564cb0997132d009, 0xbcc17b02f526604cc49999332007, 0x2f705f60be817c9335266c4cdc99c9338009, 0x6040c109a09342004, 0x60c0c209a29346004, 0x30d06220c40187934a26964d309a7134d009, 0x312062c0c5418a135026a24d489aa1353009, 0x31706360c6818c935626ae4d609ad1359009, 0x31c06400c7c18f135c26ba4d789b0135f009 ] def policySharedUnitFixed1HintLeaf31 : PackedNatTable.Table Nat := .leaf #[ 0x6420c8c9b11363004, 0x6580cb89b5136b004, 0x6620ccc9b79370004, 0x6760cf49bb9378004, 0x67e0d049bd937c004, 0xd2c1a7034d27104e249c5938a007, 0x1a9a342002, 0xd741af139027284e489c89393007, 0x1bd037b06f24e909d413a6274a4e9c9d513a900a, 0x7040e109db13b7004, 0x7260e549e413c9004, 0xea41d513dd27c24f7c9ef13e0007, 0xed81dc83b827d44fac9f693ec007, 0x7740ef09f793f0004, 0x3be07840f041e013f227e64fd09fb13f5009, 0x78a0f1c9fc93fa004 ] def policySharedUnitFixed1HintLeaf32 : PackedNatTable.Table Nat := .leaf #[ 0x3c9079a0f301e593fd27fc4ffca009400009, 0xf3c1e903d128065010a031405007, 0x3d807b80f6c1ed140e281e5040a091411009, 0x3f807f80fec1fd1426284e50a0a151429009, 0x83e1084a211443004, 0x2132349002, 0x21ca34a002, 0x227234b002, 0x11d023b847629125228a46148b007, 0x8fe1204a4b9498004, 0x9401288a5b94b8004, 0x25f234e002, 0x139827484e829e653d0a7b14f5007, 0x142828595192a3a546ca8d151c007, 0x286a354002, 0x144028985122a44548ca929524007 ] def policySharedUnitFixed1HintLeaf33 : PackedNatTable.Table Nat := .leaf #[ 0x5140a30145c28b15272a5054a4a95952a009, 0xa32146ca96952e004, 0xa3a147ca989532004, 0x29ea355002, 0x15002a185422aac555caac9558007, 0x5440a90151c2a3155b2ab85574aaf955e009, 0xa92152cab09562004, 0x2a92356002, 0x5540ab0155c2ab156a2ad655b0ab7156d009, 0x2b185640ac455d8abd15782aee55e4abe157b00a, 0xaca159cabf157f004, 0x2bd057b0af25644aca95932b245650acb959600a, 0x2bf2357002, 0x16302c6959c2b405678ace959f007, 0x2cfa35a002, 0x2eaa35b002 ] def policySharedUnitFixed1HintLeaf34 : PackedNatTable.Table Nat := .leaf #[ 0x17ac2f615e82bd857a8af495eb007, 0x17cc2fa15ef2be657c4af815f2007, 0xc141830b079610004, 0xc341870b0e161d004, 0x189031386262c4e58a0b151629007, 0x6370c7618e831c963c2c7a58f8b20163f009, 0x191032296442c905918b229647007, 0xcce19a4b3b1677004, 0x33fa360002, 0x1a4834a86942d5a5ab8b5816af007, 0x6f40df01bdc37b17152e2c5c5cb8c9718009, 0x1c08381971c2e405c78b8e971f007, 0xe0a1c18b909722004, 0x38907130e225cb0b98172e2e5a5cbcb99173100a, 0x39287260e485d04ba297432e845d10ba3974600a, 0xc2e2367002 ] def policySharedUnitFixed1HintLeaf35 : PackedNatTable.Table Nat := .leaf #[ 0x3bba36a002, 0x79c0f401e7c3cf17b42f6a5ed8bdc17b7009, 0x3d507ab0f525ef0be017be2f7a5efcbe117c100a, 0x1ed43db17d02fa85f48be897d3007, 0xf6e1eec3dd07b92fac5f5cbed97d92fb05f68bee97dc00c, 0x3e9a36b002, 0xfac1f60bfc97fa004, 0xfb81f78bfe97fe004, 0x1fa03f587ea30126028c06180b007, 0x204c40a182c306060b8c16982f007, 0x107020e8c279850004, 0x212c427084d30c66190c331865007, 0x86610d421a4434187b30f861f4c3f987e009, 0x10ec21e0c441889004, 0x2214443189031286248c489893007, 0x11102224c4a9896004 ] def policySharedUnitFixed1HintLeaf36 : PackedNatTable.Table Nat := .leaf #[ 0x8a1114a229045198b3316862d4c5b98b6009, 0x22d845c88b831926328c6618cb007, 0x117422f0c6718cf004, 0x119c2340c7018e1004, 0x8d111aa235046998e331c86394c7398e6009, 0x235c46d08d931d263a8c7618eb007, 0x11ba237cc7798f0004, 0x11c02388c7918f3004, 0x8e411d0239c47318f631ee63e0c7d18f9009, 0x11d823b8c801901004, 0x11de23c4c819904004, 0x8f311ee23d847a990732106424c85990a009, 0x8f811f823ec47d190d321c643cc889910009, 0x90b121e24384869925324c649cc949928009, 0x12202448c95992c004, 0x9151232246048b992f326064c4c999932009 ] def policySharedUnitFixed1HintLeaf37 : PackedNatTable.Table Nat := .leaf #[ 0x49f093f127a6564cae995b32b46570caf995e00a, 0x947129625284a4996432ca6598cb41967009, 0x95212ac25544aa196f32e065c4cb99972009, 0x4bca372002, 0x4c5a373002, 0x4e409c9138e677ccf199e133c06788cf299e400a, 0x27604ec99fa33fc67f0cfd99fd007, 0x27784f089e034106824d059a0a007, 0x27e84fd9a1e34446880d0f9a21007, 0x13fc27fcd119a24004, 0x500a374002, 0x28105038a06345068a4d159a2a007, 0x1412282cd171a2f004, 0x14182838d189a32004, 0xa11142a28505099a36346e68e0d1d1a39009, 0x50da375002 ] def policySharedUnitFixed1HintLeaf38 : PackedNatTable.Table Nat := .leaf #[ 0x528a378002, 0x29b85379a81350a6a0cd411a84007, 0x541237b002, 0x2a5c54c1aad35626abcd571ab0007, 0x5608ac215806b60d6e1ada35b26b6cd6f1add00a, 0x5782381002, 0x57d2382002, 0x16342c70d939b28004, 0x2cc05998b32367c6cfcda09b40007, 0x16a82d58db59b6c004, 0x5b48b6a16d06e18dc51b88370e6e24dc61b8b00a, 0x2e4c5ca1bb837786ee8ddc9bbb007, 0x2e545cc0b97377c6efcde09bc0007, 0xba517522ea05d39bd237a66f50deb1bd5009, 0x17922f28df61bed004, 0x17aa2f5cdfc9bfa004 ] def policySharedUnitFixed1HintLeaf39 : PackedNatTable.Table Nat := .leaf #[ 0x5f00be117be6ff4e009bff37fc7000e019c0200a, 0x2fd05fa9c1438307058e0a9c17007, 0x5fda38a002, 0x305c60d0c19387670f0e1f1c3d007, 0x18363074e201c41004, 0x187030e8e2d9c5c004, 0x189a313ce391c73004, 0x314c62b0c5538ee71e0e3d1c79007, 0x6408c8219007284e529ca339447290e539ca600a, 0x32c46591cd639b47360e6b9cd9007, 0x196832d4e6d9cdc004, 0x65d238c002, 0x32f86608cc039ca7398e741ce7007, 0x33846720ce33a167430e871d0d007, 0x34446891d423a8c7510ea19d45007, 0x1a6e34e4eb41d69004 ] def policySharedUnitFixed1HintLeaf40 : PackedNatTable.Table Nat := .leaf #[ 0x1a903524ebb1d77004, 0x1a983534ebc9d7a004, 0x35b06b78d6e3b407684ed19da2007, 0x35d86bb9dae3b6476c0ed79db1007, 0x6d08da21b4077a0ef61dea3bd277acef71ded00a, 0x6e92391002, 0x37506eb8dd63c407884f119e22007, 0x1bee37e4f241e49004, 0x1c063814f299e54004, 0x70d0e1b1c327984f329e633cc47990f339e6600a, 0x1c7638f4f479e90004, 0x720a395002, 0x1d303a68f809f02004, 0x7878f101e1c7e00fc21f823f027e0cfc31f8500a, 0x3cd479b1fa63f547ea0fd39fa9007, 0x1e723ce8fd59fac004 ] def policySharedUnitFixed1HintLeaf41 : PackedNatTable.Table Nat := .leaf #[ 0x1e923d28fde1fbd004, 0xf991f3a3e707cda02340488095013a026009, 0x3ea07d4a033406e80d501a2036007, 0x1fa83f55033a068004, 0x7ef8fe01fbc81bd039a07140e081c903aa07400a, 0x201a403905720af004, 0x206240c906ca0da004, 0x207440ed071a0e4004, 0x830106120be845508ca117422c846108da11a00a, 0x85310a7214a85f90c1218042fe86050c2218300a, 0x910120024c04910e421ca439c87310e3009, 0x2951d210f7003, 0xa711d212cf003, 0x2a11d290fa003, 0x49d1d29164003, 0x220e44151969106004 ] def policySharedUnitFixed1HintLeaf42 : PackedNatTable.Table Nat := .leaf #[ 0xef01dc03c4078112f226044c8898912e009, 0x48d1d4915e003, 0xe5d1d493cc003, 0x4b91d5116a003, 0x4c11d5116d003, 0x4d51d59171003, 0xb911d5931f003, 0x4f91d61179003, 0x5011d6117c003, 0x5091d6917d003, 0x5951d691a6003, 0x5211d71184003, 0x5391d7118a003, 0x5511d79193003, 0x5b51d791af003, 0x5691d81199003 ] def policySharedUnitFixed1HintLeaf43 : PackedNatTable.Table Nat := .leaf #[ 0x5b91d811b0003, 0x57d1d8919f003, 0x5b11d891ae003, 0x5891d911a2003, 0x5911d911a5003, 0x59d1d991a7003, 0x6311d991d7003, 0x16f236805c48d911b3005, 0xbc0177237405e80bd8179237646fc8de91bc237c47048e011b900e, 0x5f51da11c2003, 0x61d1da91d0003, 0x6291da91d5003, 0x7a51db922d003, 0x8151dc1242003, 0xa051dc12bc003, 0x820103820b04140824923124724904928924924500b ] def policySharedUnitFixed1HintLeaf44 : PackedNatTable.Table Nat := .leaf #[ 0x106820c2498083c108020e249a4944927924e24a0494c929124b00e, 0x8491dc9254003, 0x8511dc9257003, 0x10b0215042e496492d1258006, 0x8651dd125b003, 0x14851dd1534003, 0x8791dd9261003, 0x14891dd9535003, 0x9291de928a003, 0x9351df128d003, 0xf551df1409003, 0x9491df9293003, 0xa291df92c2003, 0x9b51e092ab003, 0x9bd1e092ae003, 0x9c51e112af003 ] def policySharedUnitFixed1HintLeaf45 : PackedNatTable.Table Nat := .leaf #[ 0xa091e112bd003, 0xa311e212c3003, 0xe051e213b4003, 0xa811e312d1003, 0xb991e31321003, 0xa951e392d7003, 0xbfd1e3933c003, 0xad51e492e1003, 0x23ad1e498fd003, 0xae11e512e4003, 0xae91e512e7003, 0x2c525ea0b1c97992f4005, 0xb2d1e592fb003, 0xb951e59320003, 0xba11e69322003, 0xbf51e6933a003 ] def policySharedUnitFixed1HintLeaf46 : PackedNatTable.Table Nat := .leaf #[ 0xbad1e71325003, 0xbb51e71328003, 0xbbd1e79329003, 0xc011e7933d003, 0xbd11e8132f003, 0x26351e819a9003, 0xbe11e89334003, 0xbf91e8933b003, 0xc0d1e91340003, 0xc151e91343003, 0xc1d1e99344003, 0x21751e99875003, 0xc391ea1349003, 0xce51ea1375003, 0xc4d1ea934f003, 0xce11ea9374003 ] def policySharedUnitFixed1HintLeaf47 : PackedNatTable.Table Nat := .leaf #[ 0xc611eb1355003, 0xcbd1eb136c003, 0xc751eb935b003, 0xcc11eb936d003, 0xc891ec1361003, 0xc911ec1364003, 0xcb51ec9369003, 0xd1d1ec9383003, 0xcc91ed136e003, 0x22c91ed18c5003, 0xcf11ed9376003, 0xcf91ed9379003, 0xd011ee137a003, 0xd091ee137d003, 0xd311ee9387003, 0x1e151ee979c003 ] def policySharedUnitFixed1HintLeaf48 : PackedNatTable.Table Nat := .leaf #[ 0xdb01b5836f06dc0db49cd939c273a4e7c9cf139a00b, 0x1be837c07000dfc1bf13ac275a4ec49d793ae27604ecc9d913ab00e, 0xe0d1f093b5003, 0xe151f093b8003, 0xe511f113c7003, 0xe591f113cb003, 0xe6c1cd039e073a0e709eb13d727b04f689ec93d500b, 0xedd1f213e9003, 0xf4d1f21407003, 0xeed1f293ee003, 0xf511f29408003, 0xefd1f313f1003, 0x21011f31856003, 0xf191f393f8003, 0xf211f393fb003, 0xf291f413fc003 ] def policySharedUnitFixed1HintLeaf49 : PackedNatTable.Table Nat := .leaf #[ 0xf591f4140b003, 0xf411f49402003, 0xf5d1f4940c003, 0xf651f5140d003, 0x23a91f518fc003, 0xfe51f59425003, 0x14e51f5954e003, 0x103820684110820103ca1b1437287050e8a1c943500b, 0x10811f61441003, 0x34191f61d3b003, 0x10b0215842f085c10b4a25144b28985138a26944900b, 0x1150229845708ac1154a31946428ca519ca33146200b, 0x11d51f81488003, 0x1b751f816fb003, 0x49a0932127024d94b0296252cca5914af009, 0x139d1fa14f2003 ] def policySharedUnitFixed1HintLeaf50 : PackedNatTable.Table Nat := .leaf #[ 0x2a2c54511a99515004, 0x14451fb9521003, 0x3c6d1fb9f9b003, 0x14551fc1526003, 0x28211fc1a2c003, 0x14691fc952c003, 0x14711fc952f003, 0x14791fd1530003, 0x15691fd1570003, 0x15051fe1555003, 0x38711fe1e68003, 0x15151fe955a003, 0x15651fe956f003, 0x15291ff1560003, 0x15311ff1563003, 0x15552001569003 ] def policySharedUnitFixed1HintLeaf51 : PackedNatTable.Table Nat := .leaf #[ 0x2d452001b67003, 0x1599201157d003, 0x15a12011580003, 0x2b505690ada15b02b595822b06561cac295842b0c5624ac4158100e, 0x5cf0b9c17442e815d72bb05768aec95d6009, 0x2bfe57f51ae15fe004, 0x18952061626003, 0x1a092061693003, 0x18e1206963b003, 0x25c52069991003, 0x198c33106660cca1990b3816712ce459d0b39966f00b, 0x19a12079675003, 0x1a7120796b8003, 0x1a4d20896ac003, 0x6970d2c1a6434c16b22d665ad4b5a16b1009, 0x1bd52091714003 ] def policySharedUnitFixed1HintLeaf52 : PackedNatTable.Table Nat := .leaf #[ 0x264920919b0003, 0x71a0e321c7038d973c2e7a5cfcb9f173b009, 0x617920b985d003, 0x1da03b3876b0ed41da4bbe977e2efe5e04bc0177c00b, 0x1e1c3c3078a0f121e20bcf179f2f405e88bd0979d00b, 0x1e7520c97b3003, 0x21b120c9880003, 0x3d687ac0f601ebc3d717c42f8a5f24be397c62f905f2cbe517c300e, 0x1ee120e17d5003, 0x227d20e18ae003, 0x1f5d20f17f8003, 0x290d20f1a5a003, 0x20ed2101851003, 0x21312119862003, 0x21d12119886003, 0x219d212187a003 ] def policySharedUnitFixed1HintLeaf53 : PackedNatTable.Table Nat := .leaf #[ 0x21c92121883003, 0x21dd2129887003, 0x21e5212988a003, 0x228921418b2003, 0x22b121418be003, 0x22dd21498c8003, 0x230121498d1003, 0x22ed21518cd003, 0x22fd21518d0003, 0x234921618e2003, 0x2415216191b003, 0x236121698e8003, 0x2419216991c003, 0x238521798f1003, 0x238d21798f4003, 0x239521818f5003 ] def policySharedUnitFixed1HintLeaf54 : PackedNatTable.Table Nat := .leaf #[ 0x2411218191a003, 0x23b521898ff003, 0x23fd2189913003, 0x23c12191902003, 0x23c92191905003, 0x23d12199906003, 0x24012199914003, 0x23e521a190c003, 0x23f921a1912003, 0x243121a9924003, 0x246d21a9935003, 0x244521b192a003, 0x244d21b192d003, 0x245921b992e003, 0x246921b9934003, 0x252121c9963003 ] def policySharedUnitFixed1HintLeaf55 : PackedNatTable.Table Nat := .leaf #[ 0x257121c9977003, 0x254d21d196e003, 0x26c84d889b5136826ccce719cf33a06748ce899cd00b, 0x277d21f9a07003, 0x289121f9a49003, 0x31d84f389ea13d227a0d089a1234266854d0a1c9d00b, 0x28152219a27003, 0x285d2219a3d003, 0x28292221a2d003, 0x28952221a4a003, 0x28352229a30003, 0x28592229a3c003, 0x28492231a35003, 0x316d2231c80003, 0x289c5130a2a145228a0d261a4d349c6940d279a4b00b, 0xa6314c429945321a7934f469f0d3d9a78009 ] def policySharedUnitFixed1HintLeaf56 : PackedNatTable.Table Nat := .leaf #[ 0xa8c15162a385469aa6354e6aa4d541aa5009, 0xaaf155c2ac45581ac235866b14d621ac1009, 0x2c6d2279b26003, 0x2ce52279b46003, 0x2c945920b28164e2c98d979b3036626cccd991b2e00b, 0x2cc52281b3d003, 0x32d92281cdd003, 0x2cf859e8b4116802cfcda61b4d369c6d40da79b4b00b, 0x2d552289b6a003, 0x2d612289b6e003, 0x2e5922a1bbd003, 0x2e9122a1bd0003, 0x5cd0b99173a2e705cd9bc337886f20de31bc5378e6f28de49bc200e, 0x2e9922a9bd1003, 0x438522aa1e6003, 0xbce179a2f405e79bf137e46fd0df99bf0009 ] def policySharedUnitFixed1HintLeaf57 : PackedNatTable.Table Nat := .leaf #[ 0x307122e1c3f003, 0x315122f9c76003, 0x315d22f9c7b003, 0x6420c83190e32186429ca9395472b8e561cab395a72c0e579ca800e, 0x32fd2321ce4003, 0x33892329d0a003, 0x33c86788cf519e833cce919d243a4a749ce931d2200b, 0x35b52351d9f003, 0x35e92351db7003, 0x6b88d701ae835cc6b91da53b4c76a8ed41da73b5276b0ed59da400e, 0x35f06bd8d7f1afc35f4edc9dba3b7676f4ede1db800b, 0x37552371e1f003, 0x3a1d2371ef1003, 0x70f0e1d1c42388070f9e6a3cd679bcf369e6c3cdc79c4f381e6900e, 0xe841d063a187429eed3ddc7bc0f779eec009, 0x3a6523a1f00003 ] def policySharedUnitFixed1HintLeaf58 : PackedNatTable.Table Nat := .leaf #[ 0x3f0123a2053003, 0xea31d3c3a8074f9f093e147c30f859f0f009, 0x7890f111e2a3c507899f883f127e34fc59f8a3f187e3cfc71f8700e, 0xf3e1e7a3d0079f9fb03f627eccfd91faf009, 0xf541ea63d587aa9fc93f947f30fe59fc8009, 0x3d687ac8f5d1eb83d6cfe89fd23fa67f54fea1fd000b, 0x3dec7bd0f7e1efa3df1001a004400a801d003200200b, 0x3e6923ca022003, 0x3e8123ca02b003, 0x7f10fe11fca3f907f1a07740f081f103d207940f681f903ea07600e, 0x3fa07f38feb1fd43fa50422085410c8221043a08300b, 0x3ff07fa0ff71fec3fd5048209141248251049a09800b, 0x42248429088210e42190a8a15242a685550aa215600b, 0x85490a8215842ac8552186430e862d0c4a188431486350c6218500e, 0x8842487002, 0x112d225844a9196912b005 ] def policySharedUnitFixed1HintLeaf59 : PackedNatTable.Table Nat := .leaf #[ 0x5c124f91b1003, 0x61124f91cb003, 0xb1926192f2003, 0xb2526192fa003, 0x15062a0a540d1a89504005, 0x16f72dec5bd11a896f5005, 0xa8ba508002, 0x16dc2db65b651a996da005, 0xc11251d002, 0x1d652fce5f951ae17e6005, 0x17e92eb85d691b3975b005, 0xc2fa52a002, 0xeb9a52a002, 0x21d835226a3d1bc9a90005, 0x21cb3ea07d391bc9f4f005, 0x21c635a86b491be9ad3005 ] def policySharedUnitFixed1HintLeaf60 : PackedNatTable.Table Nat := .leaf #[ 0x1b2236426c7d1be9b20005, 0x1e413c8078f91c99e3f005, 0x1f7c3e2e7c54f840e9d3e0c7c14f839f16009, 0xc0e182030496092c1a582cb05160c0c0c0214046233900c, 0x39807380e792102428484890892130396022c046a33900c, 0x57c0b2097b24a849560b0416002c405860b0897692ee25de4bc497812ec4b340afc97512eb014, 0xb911cf02e805d40c291cc494092840c0017f030606080c091c6238e47208e511c9238a96640bb11b7237046d88e711cd01a, 0x5cd2d711b5003, 0x62d2d711d6003, 0x15d92f9057a96b4974a20c006, 0xaf12d892e8003, 0xc052d8933e003, 0x40c0826307a207440e236e306a208c40b8828104e207c410089510422088c1ca285307060f913d1834016, 0xc6018c6722857da44e360c318857f0b0116002a245450b5f150e3184e44a2bf35486c3115b9c88015, 0x2aacd600008154a2a911be1ab9154e29f053d8a3e147e29005560a4115526af11579a5834ae6a5d1559abd017, 0xa9915426adc540a37b153429f45430a8014fe2a6c6260a9c153a6ad0e3822ad35666a651561ab2015 ] def policySharedUnitFixed1HintLeaf61 : PackedNatTable.Table Nat := .leaf #[ 0xf241e6c6a1086d1a862178eb9189b3ae25ec866707970f2c1e603cc97ad2f625ebcbd717b00f2a2fa05ec086146e0350486e08701a8c335c4359d753ae88ca4eb821373ade27c8d0da52d11166269297087c10f6222843f088419a23a046690cd319a885d03d107a10f621e903d180360f4a1e983d42146490c923d2482491493c946528d252f48345eecbdd226d2f7294dc668072d008a1cb839b873600901cbc399a36539fc74011801cff311e8a10c4725381a7c27c44f98b6106b600dc1ab876230ce9281250a4df49e692c842087740ee61dc03b788493320926d24e249a492c9261258a4b5496c937927a241830c05e1113218574a6a8da4dbba2a03adc61d8e040793199e73f400425b74b6c96d4421084330b06164e7e1cfb098, 0x6752d24002034024102d1e19cc33a067d0cec19dc33c0d1e0cf219e8b44a2de2d105a1d12a1686015, 0x829192029a045408a115322a445448a6a1ef43e004c48b7115422860021242a48812f803c807a00f301f28e98899999a01a, 0x450c004248501fa04cc09900ff01fc44f50fa113c4910040007c233200f, 0x478696811d02384565170011f4b7404600940129022c045c8bba335022a0450089810e021e04400888112021a4768082914300109215244097c01e403d007980f9474c44ccccd114822a0453c8a7114a2292454c8a91151229a87bd0f8013122dc4551243248b491892348aaa1f322ca8cd12dd915a03f, 0x1140226043808781100222044808691da229045288a4811522ee002119aa486491692312469154015, 0x1b70782c6da0db53c0e78206db8dae1b5a36ac6d48daa1b5e36a06db1e093c0077fcefc9dfa3bfc77f4efe1e0a018, 0xdb91b7c78406dd0dbb3c1a78386de8d5c1ab635686ac8d581aca35986de1e0f3b327660ec59d8c3b1e7638ec69e0c019, 0x5820b0316122c205858b0c36306c645810b0d36342c185838b0536226c54d899b1236286c5cd8b1b10016, 0xfb41f94c0207db0fba907cbfe07d90fce1f983ef87e021a01f843f11800438889c4bff9805300e6018c0097fb018, 0x79c502926383bd27ee9295277a4f11b5877ec5af1b7349ee93e52780d4f1a9c354c6a80d5142d48e38ebe22e33af693c9074076d0ed81dd43b7178344ca5e0927d03de07c00f7c1ee8b5936e2931927aa4f649f093ed289a5634a302d6d0a51e97492a0560cc8249a492c9261258a4de49e8212520c076f0ee021643b8884130ce002125024a1496a92d926fa4f349641d891b4a53530ae61cd131978430c0925d24ca49b493895352a7a56b4a2a945928ba5144a9695312a8254e4ac495a91c29413442a50503a907510efa1df01ac179144ce5d992992536074, 0x11ac66912702543120264584c119a349be1dd91b524e1438693b43b3077a0ef21d94bbd22662ef694ac3b907740ee61dc03b7876e0eea1db03b6a0dc0ec68da5258a4de4a6c5e0913297832f088990bc2a53249e82d74481890211b8236c46f242e31f692fd276254111d263f814192c64924927525a24b9051c5f792cca5b049741ed0c57a5984b5e0f38a0524c7077a4fdd252a4ef49e236b0efd8b5e36e693e52780d4f1a9c354c6a80d5142d492d525b24f3471c75f11719d7b49e492c927d03de07c00f7c1ee8b5936e2931927c24fb4a26958d28c0b5b42947a5d24a8158428c0021243248f4920924524d2496493092783d4241a0f4c1e9401b07a30f481ec43d087a242e833506698cd619aa33444420883484c22084400887484e9708e7fa2d43a0094dc668072d008a73f8bdca26d2f745eed297a4974932926d24e254d4a9e95ad28aa5164a2e94512a5a54c4aa095392b1256a470a504d10a94144a329469298a530496693d527b24f749f893012a2a5464a8e63b8c76a28e36e495212a125441cf839e869e07560eaa1d5c3af8e7b3dbc7b74f6e17692ed07b6cf6d1ed93db0897c73e87280e401cb039580462e967b8117f1edf0ec, 0xa40314a3c54136952447e9915435296612d7a4a24b32928d2d8254b4a9895412a5254e4a9a953cb1684590c66116822da163491e9241248a49e497493b528ca51a11ac66912a18901322c2d74481890211b8236c46f242e39d2002127024ec49ea93d927c24fb4a8295152a3254731dc63b51471b724a9095092a20da41b46369c6d30da53be077c4efa9df33be477d0efb9df63bde51a91259469053, 0x3af87570eaa1d5909c2139427441e4bb517682ed239ecf6f1edd3db87b6112fa2fe012, 0x1350269cdda255717146ecc4ad1bb24ab02d90dc219c400c, 0x2c785a31b5816408e1058e8b48168e2c7c5910b4316882c8cda10008466a95012a8a5534aa895552b60b2a16522d1459a0b35166c2d0859b8b3836c66d14da21b43366895b4d96a2bb36586d6515e1b2902b ] def policySharedUnitFixed1HintLeaf62 : PackedNatTable.Table Nat := .leaf #[ 0xbbd17782eec5e00bbf177c2f145e30bc737ce6facdf49be837d42f105e10bc1001a2ebcdf19be637ca6f90df121e317742ee40070bb0176e2ed80080bb117682ee0df01bdf37c22fac5f50bee17da2fb0e069c0e381e7044e081c0c031, 0xc3a1888b11860d0c3e187831016202c42587c2fe05fb0b7016d82db86320bfa1884b11224a2b7c56fd122161e018, 0x3144e289c6487a26d86c69dd033bc023803100c1018468180042485015c02b405b80b0015e43f92cb10fd491027706958d2a13ba681116f9a03465c0320063806401940348068806600d2035406c89d7487c8cc1197911502f, 0x315860f2c6a18b8316a35d2c6218c42d985b20b5e16b42d708b30b6818c0b1a228a2b6e56e111e1630016, 0x2d7862a0b6018acb18162f447618b0b1b00080c1c972d1ae95b800e, 0x1192029a045408a0113021c043c0880111022404348ed1148229445248aa01184668047c0908120023a04700940129022c045d2de915322a445448a8114f229c45350f7a1f0026245b808299f700109209241a48512f803c807a00f301f28e98899999a4b92972c8aaa1f322ca45650f9115a03d, 0x3f4099813201fe03f889ea1f433ee00212412483490a040007c25cd466497252e5913c013, 0xbdc580400424b94a38174c2e9006f00e28d6c2fb85f60bf417e0afc16004a3a57dc2f685f50be217c02f924090b2e165003e807a46b257b912115ed020, 0xaf21fa42bcc65ba19c05f87709246a4c64990932526524ce4974922869023ed3aa6931d267a4cb4a7e95592a9256e39bc819915a0aee1970853062f06db08f211e0214042408f611f021106dc3aa80021244a48b491892a1255a4b9491c5be91141492288e889cb7ca5054a8095452a9a5544aaa9134e6f9aff041, 0x1e7140a498e0ef49fba4a549de93c46d61dfb16bc6dcd27ba4f949e0353c6a70d531aa035450b524b5496c93cd1c71d7c45c675ed27924b2315e96612d7a4fa07bc0f801ef83dd16b26dc526324f549ec93e127da5134ac694605ada14a3d2e002124a8158492e926524da49c4a9a953d2b5a5154a2c945d28a254b4a9895412a725624ad48e14a09a2152828946528d253104e, 0x1cd801d87910f341ec8432888c1a7e626cc3c97b20e6e1cb8022872d19a0335c6a30871310475d0e7f2365017, 0xb7e43a49665251a5b017002dfc5c18b8217026ea0dd49baa37586eacdd38b8917102db05b58b6d206e2db85b79ba300108cd9250a5194a342dc45b80b7416e62dc8dc89b92372c6e50dc99b9537306e5cdc80b7616ea2ddcdcd1b9b37322de11da1b9c16f42de45be8b7c16f66e78dcf9ba037446e84dce9b8f41c26e94dc71b8d37626ec0dd21ba6049, 0x415184d001020c041a883446de61286848d08105620b0416908f105c20bcc2223213086610916d9841016, 0x20a040b8818314e0020c1a082710342064c5325b44ba88db8c1f227a00f, 0x5aa0b6016c82d105a486a8982130805c4260473a891d3702002014f00a30144027804c009921ea026814d9ecc05a0921096710f421da43ac87810f343d44b40c9c131e024, 0x1fd0c0d00080ff61fc11b618190fee1fd83f907ee0ff21fe83f607ed0ff0603513a1816302060511399811017 ] def policySharedUnitFixed1HintLeaf63 : PackedNatTable.Table Nat := .leaf #[ 0x6de800424b908da11bc237046b08d451ed111947c0afa15c91aba51c00f, 0x1378b4284d946a0138827084e009b8135c27204e509aa1358a73223129de53a511814ea013, 0x49e296a0020250a3f2296c127c24e84a8094e128c252091c094a1298a5d2291297252f511614b4015, 0x8901194a3a044c4696111c233846608961140342045108a41188b4ba4b94a0697692eca5234b725184b4aa21e28c051d5110145d01c, 0x84611e8a4884254692108823e047b084810a0484042908545234004233549169231246a4ba4a049410a24228f288e5249114144401c, 0x86c10f4a2a0438469410d421f843e086e10d0239843008629770a27a22528a0515510c9451014, 0x8901194a3a044c4696111c2338466089651d5110145d00c, 0x2039083800849be948d294a5b44ba829984220847108c616d2d19a7d17c82f8c5ed0be70f2800f0e041c05471235806b10d61199873dd1721d92101a205440888101024908439e073a0e661cbc024174f46cc60ad13c182a02f, 0xbb617642ec05e10bc0175c2ee85d446b65794aee85dc0bb45778af115e02bbe5784af215e3014, 0xb50331073f85aa426a58b919b25984b5e56c82d385a91ffc16902d295a7466a96c92cd85b10b6616c82d785ad0b5c22cc2da05b53b9a002124215bd451456dcadc223c2b7256acad795ae028, 0x5bc0b9a16f82df85c00b9817042e115c62b8a5710ae185bd2b82002119aa48b4918923525d15c2015, 0x12cc82700040b8c376c9484b2081f203e248dd290198300c, 0x10c2218a43105d08ba017542e785cf9bcb466a93a92758b9248a62e445c80080376e95c92ba1bcc45846f350d621ae435a6f5c861a1b6001092f52d9259b49c893952b9a575218e431886490c8436086c50d9a1b2435e43285c7807f219686d10daa1ab035, 0xbf616e02db05b70c6417f42ff25e12c0a8928adf15bf0bf816e8b00800849729470ae02244014, 0x131c260c4c799eb4aae95652ac095d487465e0cd68986131226984d709af135626a44d5095f338a6718ce499c83354670ccd3229601c, 0xcc719923320663098839dc73c4e7819ca42de26291b99cef00d ] def policySharedUnitFixed1HintLeaf64 : PackedNatTable.Table Nat := .leaf #[ 0x19ed011e43884ada5c6131e66b4cbb19ec4bcc26104c1898e130c261402c09874bce26dc4dc89b81b1c26e84dd89bc1b3026f44df09c43bbe675cef019d633aa7748ee889cb017c02fc06000bc017a44390f5910f33ce8a6914d99d40154669914b19a5035, 0x138a272806300c401848cb806400c700c8032888a99e6138c90f44db0d8d340c921405700ad016e02c005790fe4b2c43f524409dc1a5634a84ee89d40108002006d00d8019c44611981a0445be680cee819de02c, 0x9738095812a02a40544083810902728ccc8c7a1f722d003ac07500ed01d844a52cb91280208040c02d006500d0035806d008400102751198114413a627484ed09d613aa67e514e99f8027, 0x82d2165494a949529310052008403c8030d101a1a01b800420a9462e82a027e850109fe543d2cf2113016, 0x45808ace951d2b3a5c33e4935822d250c4a1cf688e763a5a74b0942926c010, 0x41a12f5906420c4419c68c004e423e8e841f903f007d450851a306580cbc1964328065a0cba197032d8d171a2c01341f683ee468a7530b34966a2cd0599d127a120023, 0x3e507c90f8e1f20bfb80080f8c5fad13787cb0f9841dc3e687ce2fe28c7cbf817ef012, 0x1099a4df4a64959c5340a6714e029b05358a6a00740020d4022aa34fe336466c0ce019b8336802100013a088b54e81a57d01a, 0x598cb3206470caa192cb2d064a0c92193032786530cac192085c964c2cc45984b30165f449a33a885d165e2cba59411af964d01b, 0x36406c40d791f9036047f80d401aa035606cc0d601ad23ec47f48fc11f5035247cc8fa01ae23f447f08fd91f7018, 0x6700d291ef033c06740cf91e923d447a00d2019b034e06980d001a11b1806880d191ec3b9e47b88f591f023e447c48f691e701b, 0x337e67004d109a11340267c4ce899e337266e8cdd99be3378043008901110220043c0870113022845248a519bd018, 0x478696811d02384565170011f2324053408c01280252045808b9177466a0414ce98008490a97c92f881b5036806d8900120123fe93304ce19b84ab404548aa248649169231246915543e6459519a115a02b, 0x1b3237046cd8d9c43700f10ef1a2ec07620ecd1a21de100c, 0x25f322a645488a89150229e45388a6a1ef43e004c44d619ed011e4388cf625e6139a67b84e809cc139e27384a7005f00b867bd14e19f21308260c4c70986130a01604c399a6452c6694ce3916e33ec9330662a43c39da97d04e309c5018a0320063806400ce032c88aa43d33bc26904d189b0134a979c4db89b9137036384dd09bb137836604de89be1388777c0a589c0137e270c4e080d4138490ec8c48008466c9219247a4904922924cced19d945326760ceb9de033ac6754ee91dd11396679d14d229b33a8670914c19c106d, 0x1280668000401bc240c24eccac25d3126024dc49b092f03f607f519d99494524652886621ba014 ] def policySharedUnitFixed1HintLeaf65 : PackedNatTable.Table Nat := .leaf #[ 0x5c59db312da2e30ddb0974476e665091c01f203e248dd2521bb500e, 0x474696811e023e73a926302fc267e002015724c84992931d267a4cb49949339245255a22b48b8008e01280252045808b9b7b490c922d246248d4b34933125f25b322aa87cc8b29159027, 0x11ac66912a18901322c86a52cc25af494493b45ae89031204237046d88de485c73a400424e049d893d527b24f849f695052a2a5464a8e63b8c76a28e36e495212a12544024, 0x25604ab89590192018c06500d201a20198034a32f32ea65e8004094d2130425c4a88950129e017802d996a464665a52ac997401b, 0x12fc01f6247625d40fa896403f007dc044008603f207f519d923c452866544b80296038607100e281bb4bee2d9d2290b6616ca01584a19b854bf42608cd1a4df49e692c8424199002b07a5d24aa497493295ad0a525174a2895885ad9b71498c93e127da5134a2a94592b1a51816b86df5263a4e349ea93d927ba54d4a9e2d88dbf0008490a923d248249449249275271254b4a9895412a7256a4936927124d2496493092c525aa4b649bc93d1270a4fc43f64828964998f03e807cc0f201e34bc897e44dc89b81b1c26e84dd89bc1b3026f44df09c43bbe25dd1b909c0137e270c4e080d4019897ec4a1094113a225144a2196133ea67d0cbc996033b28a64cec19d733ac6754ee91dd1139602f805f80c0017802f4055910e43d6443ccf3a29a45366750915220209e, 0x137e270c4e080d433b28a644e01ddf138825dc6cb0d971b283654f008008466c9219247a490492292786c80d8f1b2636486c89dd63bae7760eed1dd93baa776ceef1ddd33b677711b919d8028, 0x4bd027004df89c313820350ceca29933b025dd1b909cd33dc27404e609cf139c253802f805c019667bd14e19f2018, 0x10b61096129a426084b895112a0253c02f005b32d48c8ccb4a55912b2032403180ca01a403440330069019897f9197997516c8426c4af09464bf801744c38960011e4388cbd897b33327750ee98cc5487873b44d209a3136026952f389b7137226e06c709ba137626f06cc09bd137c97f4095812a02a40544083810602d604ec09e25f622f087e08a2918f43ee45a0ceb9de033ac6754ee91dd1139602f805f80c0017802f488721eb221e679d14d229b33a802a8ce12298338265891929b84066, 0x2c400780b02160c2b985770af0976d20195902b3616482c8807a00fa11292ef044608e211c02220443088411c822004414bba5164a42945a28b65210a41948229028884234846a08d62e1c236046d087851f1160947b28f48890a2e2358032, 0x2b9846800ec160c2c0959b006, 0x3d05910b2416211ac007d00f601e130085700afa8d5c2bb85780aec15f0dbd0008497210ed300251c0f8034d869a87c10b325f912d097e3100220004048803100420151b6981f44ec6078acc24032b2016502cba35902e, 0x15d50010108c211047c08f61090a492228288810942140908085210a92f11448451e511d1a485bd0b7817342df05bf0b8017302e085c22b8c116c22e845c08b20a40149028e467e51a510d946a0b765714ae995c42b865750ae9223e0b8a17182e388af0b901724ae6a2892b98572d12095c203d, 0x2f725e50bee202040385f82bf09680afb85ed0bea17c42f805f2481257b912115ed012, 0x3d807d00f416502cba6040ba697802f205e200e216442c9058846b0579d1ada359012, 0xe001d0486807309624c0465f50fe112401c2259407109614bac0a680ee01db03b0075c0eb122303a80a5d2de12ca43fe487090ea1fe259a65f114a911e021, 0x4d09900132026087599ae43d0026c87b0008012802784bb009f014043c4ccb21ea21e08cac05090ec016 ] def policySharedUnitFixed1HintLeaf66 : PackedNatTable.Table Nat := .leaf #[ 0x1c9038c070414b0970331e4b2490701ca038e078073a096c4bf007d891d8975332a7b34914a5ac015, 0x8943916002041ca422309c31903ff080c1014202c4468896111c224cc50a2863138609913b98a2015, 0x5e811222240449189f31409755304989e009, 0x2a8059e0ab415612dd441a0aa4dbf82af125025bc494896e3344002119aa4bd4b64966c4958924124e2498492993f32806504ca19942328e6634cc71945260265111a012dc025, 0x126e24d849781fb329224eccd001fc127024e4497093a3342002119b25984b5e247c48f092212422480c9d193b327864f8c9e993932ae6558caa995132a88ceccac2292024, 0x3f4099813201fe03f889ea1f4414a0021242810001f08cc9291a5b44ba896f92df913c013, 0x2324053408a81140226043808781100222044808691da229045288a4915402308cd008f81210240047408e01280252045808ba5bd025604a80a90151020e042409ca333231e87dc8b4115322a445448a8114f229c45350f7a1f0026245b8082a0a5001092144be00f201e803cc07d80fa4c1a44ed1d311333334948d2da25d44b7c96fc8aaa1f322ca45650f9115a04c, 0x1b820010920805c80b8017602e805900b446584428886910c2216442524280ae1a5234a005800af21fc756d24390fd019, 0x6800ce002, 0x9c6138a272806300c401848cb8cf3243d136c3634ee819de00d, 0x32e06680cc91e343f206608f300080320063d19b8192032642d80ca019523be866c8f091e023bc476c0cb11e2018, 0x25c014b01c3038807140dda5f703f88ced0fd920a259297e00fb123b12ea07d44b201f803ee022004301f924788a50cca998f01b, 0x4dc0d3e137426f14ea44ac1360a7704e34bb2137d1a814e900d, 0x200a401080790061a20343d23320a9462e829c21da60000f801e427b04f509f813dc27c83f207e00fb01f3805507da0fb81f3005207c60f910e890092010401c805900a07500e9d1f183a6074a403123e820127a292a525524ac495c0bf0ee124c849929329267248a1a408fb4ea9a4cf49968cf01d203ab07580eb49f113e341568c59055037106e00e181b9837200960dd81bb8378277293a527524eb47c04e8c9d12212274293b8a0f234504ee8279252a4b7498e2d70db8a4c64a26958d28c0b5b42947a5d2a6a54f4ad6945528b25174a28952d2a625504a9c95892b50fff1b3c36746cc83b107668d10ef0a2ea413e8cf8a10a34646a4542111995074bb415f42b9070b0e2841f880820d713261be438386fc2e36896ccd88d31428e5cd0b9385830b0201e0acda3574c28941d292a5b44ba8400c6848d08105620b0416908f105c4008c6185d40bbe17942f185e94c14179c45898c40bd490202c8a5cf0b8816e82fe05fb0b7016d82db86320bfa17f92f09605449456f8adfa2442b80579d1ada524111e223844b088d101620e5211260e309c6271143189d116a20944120820103e206d052045b28d4948c46688cc427c17002df88cf4856647519aa48d085411e423c0428084811ec23e04220db87551244a48b491892a1255a48e087040c123f06fe0dfe1bf438224140e00904c3808994132c26544cb902f41ac94a04cc058500ee98144cd99b7413a168120305a20c02181030286030c169028b08a5cc0c2c186030b86140c26186d205a5ea0274586cb0a22472c2a9724b0725ab2c1056a0f739ee63dca7b902d315ac44708b442ce859c0b5816ac2d195b34474569930199b6336a8a5ccd9234a4a0a5be91141492288e889ca2408d6435296612d7a4a249da2d74db925484a8495112a189011206240846e08db11bc90b8c7da4bf49d893e127da54111d263f814192c649680a39259a4c04a8a95192a398ee31da8a38c8b18df2b8888f8484991f452063791b71838307889e4c6388970b9617282e385c6113022b844d0899318022acc5ea53c115a62fd059089c1136228044e86ec00d41b7836f889e483662b4c562287315694ec45388a6115422a4454006b08941130b15a49502b0925d24ca4b94a3c18a022e845c08b20a40314a3c52fbc96652d8249e4974946528d07b44ba2784d2428108020c05ac09d813c23128cd924324914926052c4bc00cb46e445e10fc11454666923d2482492493a9298cc8249b4938926924b24984962937927a08483346002125aa4b649be93cd27aa4f649ee92c9270a4fc130497e9298162d28d2886cb16234b31728a20c5c18aa318262a4ae622403150828d190984330848b6d05320a820c, 0x112a208445a98c349749490c638820103e209c414081720a68418004210544f460f8c1c2285014, 0x20a7497213d827a84fc09ee13e51a915084466541d2ed26144a0e948d292a5b44ba84014802100f200c3440686806e001082a518ba0a801d ] def policySharedUnitFixed1HintLeaf67 : PackedNatTable.Table Nat := .leaf #[ 0x10092010401c805900a07500e9d1f183a607480e8c027827541568c5905521d107c80f8c02903e607dc0fb402a83e707d88d14a0f24ee01d, 0x46408dc68c823a1a0a84d8004251020a0413c829105141fc83fd080a10041fa74e916e9274046608e011a0cf619f8841125d0cfe477a74c482423f441ec74a11019270024, 0x8f411e023724e808ec93d0008046008bd19e8232046608e011a023524e2880c938126d046c49dc93ca204017, 0x12f60cf819fe840d19aa4a9495492b5257a57e3a6433e867da102001092c1258a4b5496c92e125fa4f549ec93e127d9d2f01a, 0x4af2998002025984b909568d34a6584b2096212b425484b40a4e12d425b14c82a765324a6214c72984531911694c3019, 0x5290a605510293052b0a5854f8a9f85280a6414c4295052d21a814b829795414392550caa015452a8e5518aa1153d019, 0x9a2134026614de099c539400404ca09928d3c26304c72a74134826994e32a725380a6d14db09a8537ca71222e018, 0x292153c0010987130f261d006, 0x323864c1cc21920323c6489cbb397872e864a8c8d193432646490c93192c325c64a1cbe39827300e5e9cc3398a7310e5f9cb901b, 0x1888311ce348c2f185c30c0e2a1c5538a631146218c49189030c4619104718663118e33231d38ac71a91659c65018, 0x133026504c609a413412a304c84a9095412a6254a4a9c95512a900e, 0x40ad068101c2036407505da0bc4174408881290212032406906590172058833d05ca0bf418e8318810101e203e40b4813902a41a4002080a1016202a404c71f8e40472a82d118c20b52052833518da0bd417c8c6518d20ce02f, 0xfb01f5c3e387db0fb71f708129025a049407e3ec47d78fb540903ecc7da0fb240828115021a0424088811d0232040019, 0x24694ae0010124824b8496469852ac7040e07091c123c248049309281244a52a22b2948528d17994a2016, 0x1b9637346e30f851b90371c6e48dca3c2c7868f0c1e173c32105c6e18f8b40308048f0d8e311c6414d829a955149fa0ff8a1585342a9e15bc1fe840c08000ffc018002f081250b110c158e49fc5530f431e8502c, 0xec41d99e13490a85892432491493c875d2880adf35ce950129f253d118e232446408c51186634d269a53f11826349269237131ac8a30c6ba48f4920924924ea4b1494c93d11a20d991b82366c7ffa09e494a92d525b24b7498e93cd27ba4b249f82d70db8a4c649ea93d927c24fb4a26958d28c0b5b42947a5c0042495492e926524da49c4a9a953d2b5a5154a2c945d28a254b4a9895412a725624ad4827d1761de1057 ] def policySharedUnitFixed1HintLeaf68 : PackedNatTable.Table Nat := .leaf #[ 0x7300e901d044910f700e7224e002005600de01ba8cc407000e112ca0388071911f452a447888d9123016, 0x3aa489c00401de03ba077c91292262448074c14c829803ac075c0ec0b6303b2076890f22c0243a4871105921b018, 0x39007440e801d2242c485c90c00084c0e98a1314921500c, 0xeb4b7804ac095015202a2041c08481394666463d0fb9168037006e80dc81b701620228000920243f4480c07500ed01d844a52cb912801d, 0x3200c701909845307911500ce035406ca33000a, 0x1a2016808181044c56451006900ce01b0036931625fe01968cc088c232f010, 0x32806801ac0369198005a02060411315914400a, 0xc8031c06426114c1e97fd309111501940348068806600d2035406ca62e019898b484d895e128c250c02b0b6516cc2d9d309a452370a658919281bc037607140e201c3052c25c12fc01f6247625d4cca998f259248290fd9206037e8ed9304262a03ea25900fc01f7011002180fc923c4528481d198232f040, 0x650064018e0321308a60f222a0348068806600d298b12ffa61201aa0365198232f012, 0x1a2016808181044c56451006900ce01b003691981118019898b9318232f010, 0x91d12466df12cc25af4944931927aa4f649f093ec4b402e3125a24b04b3896912d425acf740008490624c84988935126824ccca6194d329c6540ca7994b33186610ca41938025, 0x1ac6001094c929f8abb15888df85758aed15d82b845631ae945666be92db2569011, 0x2b905718ae815d22b80d820af415ec2bd45790aee15de2bdd1c09aff456a6c00d741af735ec6bd4d758ae515cc2b9c5751af9466c944d28aa5164a802ac8d6300084a6494fc5618abd157e2af8562a44c35ae6b7d2db256935f06bd0d799af235e22b893198ac8158e00605650ad515a02b6856e238035c68dfcd700ab515682adc55b0a961528912cd6422b0358e2ae086910d115726b352d39acc35d48ac51591aec057, 0x25c736a66d5cda90b2b16142cb05970b2f165a6cdd15c1b36366a8ae515d0a8f011, 0x15c62ba05748ae036082bd057b0af515e42bb85778af747026bfd15a9b0035d02b905728ae615ce2ba8d7c8008466c944d28aa5164a806be0d761aeb020, 0x22184420ce21a203449f4a49169231246a4bb4982930926224d24914940928216a228b4111023806870d1a852c004248f4920924524f24e34a46947d2a5a54c4a9a953cb53145b026 ] def policySharedUnitFixed1HintLeaf69 : PackedNatTable.Table Nat := .leaf #[ 0xa66355400212eca5234b7294d129f8a450ffa1ff03e1074700c00004bf4227534ba95a06a28d44108c616d2d21a7d019, 0x1d783ae87590e505db43ad97ac0010937d2eca5234b721a6929487290e3e34f52e921373ade27c8d0da52e10f8623929c086b3aea222c43d888a10fc22106688e8119a4334c66a21744a6e3340396804539fc74011801cff311e8a10c4d08643d8894b469f09f113e62d841ad803706ae6ddd1501d6e3ada1cb039580460e5c1cdc39b00480e5e1ccc39d073c46cc5d3d1b2974b46c81d0024e84a8094e52f511617520e841f103e187430e7c5d552d117540e8c1d143a7074a0e921d3131c04a147e4128c252091c094a1d04ba9a291297252d91b4175e44bc5d74bb72261077, 0x28905100a1412403660cbe0da41b403e407c601481f3141e273259b49cc12be050e5ad800424a50d201a3c35286a409f013e91a916be44ae5aa835f06c00d7e1af41fa03f307e20fa4a10a3462dae967cb6c25254a4c4afc960a20a031, 0x217033ac32886500cb4197432e065b27400e201c3839907124ef910a13bd2cd259a8b3416533a2692e52ed26144a0e987d2f81e150010929d25424ab4958088811085230448088c1128398044c089cfca820204000e281c5838d071c4efc9e193c127804f081c60d1521c0346868d8d1c3d8c93a0ea7232a3a968cf1254a4aa4b3492f92d9a4ad495e49a5109926824ce88d09330d9c1b3c36746cc83b10766784d242a48f4920924924ea4b1496a92d925324f4468877851751de3064, 0x26e869f09b8135c27204e509aa1a6cb7c25264a485add11894ef29d28958348a63a0d4009a81b3065f06d20da01f203e300a450789cc966d27301a8c1f2805307cc5af51b096ab026, 0x1e403e05950894163c2cb059846b2568c2c4a60500e217882f225e00ba698111ad95e7013, 0x408481290222046830506020c7418c406480d20cb202e40610660008204882e0810101e203e40b4813902841928c6d05ea0be46328c6905ca0bf01f, 0x88811c0343868d3b34923d24824914936927124b2498493c947c37306740cfa19d8b43a2542e029584b530443088419c434406893e940021245a48c491a92ed260a4c24988934924525024a08948c34024100cee19e068f06790d1c1a78b7c25264a485aa516f16882d1e5a88a2d145b03c, 0x22071e0e525eb000424df4bb2948d2dca5290e841f103e187430e7c5d552d117540e8c1d143a7074a0e921d2003080012ebc8978baea364008c1cb839b873600901cbc399873a0e788d98ba7a36502a, 0x6180c2c42a83090614879526824d149b2936d2b9a575268e4d20429085410a62a150a28008496292d525b24c649ea93d927c24fb4a6493d0d4e9869020, 0xa3f147c31a05240a4934fc95892b39a61459c695c5200aac14822908d2d80084bb2948d2dca5344a6669651579a58019, 0x43ae2c6131a23834a2e94412a0253e008, 0xae415c62ba05748ae036082bd057b0af515e42bb85778af747026bfd15a9b0035d06bdcd7b1af535d62b945730ae715d46c145591ac6001094c929f8ac3157a2afc55f0ac548986b5cd6fa5b64ad26be0d7a1af335e46bc4571263335d48ac51591aec035, 0xad015a42b6856e238035c62b3c00e0ad5159400605638ac84c882ad455a0ab7156c2a58d6422b0358e2ae086910d115726b352d39acc15f02b7845e88cb11942308c6da28d35cc230c462908c118c2b7d321803500102a48d73a32031ac8dc4d70237f035, 0x159c00745650ad546fe2c4456b8ad1159a006c5870b0f4b806aa92eca5234b7294d129f8a9115202bf45499aac456c6aad2b40b1316242c5458a0a95363c96a0d8e8aff15fc2c045801b0c456e6c2cd8d8ad915b62a51225a64515f691385448a8a16be2a1c544264214d0299c5380a6c14d629b52249a80455469fc52c0a5a14b2295cd3622a734da29d853a8a7414f229e00119a9514ac31a46448c6b18d4322853d0022396e2d80e5a8c6d18d831d46378c6e004228b8e4a22cf39269574e491cb639226a491bd0a7121bc43745390a3a147028cc5178028146a28d85168026145628b10ef09ee13da27c04f789ec13d627e522009f713ec27f12208a00347692a1255a55e4a1828405078a231444286453024473902932926703923da89321264a4cf49969341268a4d849b4937c1a90d4748d02204441088010fe00f4441a426468493b1273a4ed4a169435287256534ec69191519a344ac88dd04fa8d4b48d2685914f9a184acc69451bb0cb941ca9281250a5174a28958865e0a5d14be2978527903c36e2002126324f549ec93e127da5134a2a94592b1a51848908398d39a2a939c495f11c61a5446ee6a292d29a8914cc35146a2084630b69690d3e8a450ffa1ff03e1074b4c801d6c3af075d0eb21ca0bb6a2612edc1d0024e84a8094e52f511617520d341c7469e9d6d46d05fa113a9a5d09428fc825184a4123812943a09753452252e4a5b0a7e35306a8d15f9aa4360c2a6453e8a86150029fc541a44a4c8261bcc38186e10a22140430a3701a8275c109b9d6f13e4686d296888b313494b843e087b111421f84420cd11d0233486698cd442e894dc84810db1a80874cc41215f3a008c00e7f988f4508623929c0d3e13e227cc5b0835b006e0d5cdbba2a03adc61d8c34227f45006a68d4ca2ac35648e00d719b1c164, 0x159c00745650ad546fe2c4456b8ad1159a006c5870b0f4b8098e45488a9015fa2a4cd5622b635562c4c5890b1516282a54d8f25a8363a2bfc57f0b0116002be4556a38236188adcd859b1b15b22b6c54a244b4c8a8e00d719b1c030 ] def policySharedUnitFixed1HintLeaf70 : PackedNatTable.Table Nat := .leaf #[ 0x745650ad546fe2b385698ad1007, 0xaf497c82bb06028758004248501fa04cc09900ff01fc44f50fa113c4910040007c233249329305261259a498a92f125f257a267c88312d692e901f, 0x46480a681150228044c087010f02200444089010d23b445208a5114922a8046119a011f0242048008e811c025004a408b01174b7a04ac095015202a2041c08481394666463d0fb916822a645488a89150229e45388a6a1ef43e004c48b7010543ac0021242a48812f803c807a00f301f603e9324810402060168032806801ac0369198114401d603a807680ec2252965c89401b8037406e40db80b10114000490121fa240644ed1d3113333349265260a4c24b34931525e24be4b6695e88aaa1f322ca45650f9115a06b, 0x1990334065c0cc11e243f20638e7a80084c24332919b91e300d, 0x3300d101a40329197806900ce019006380c84c22857800425ff4c249215325a5f24bb2948d2dc9115016, 0x221043f088a10f6222ceba886b1a8c335ceba189a4508623c6688e8119a4334c66a21744a6e74011801cff017, 0xb1e168c6d605902384163a2d205a38b1f16442d0c5a20b2336848cd52a8a5534aa895552b60b2a16522d1459a0b35166c2d0859b8b3836d0002124da49c492c926126925134a2a94592a00a8f4ade9460da29b5336886d0cdab9b5216562c285960b2e165e2cb4d9ba2b8366c6cd515ca2ba366895b4d96a2bb36586d6515e1b29045, 0xfe443383f987f430228ca03f798154bae1fd51b6181000c, 0x4d6098813382610d445af1311026a0d4098e91b086a307ca014c1f316bd010, 0x13d827a84fc09ee13e51a91508446698ec13e043b4c000a382ca059746b215f42b905830b0201e0acda35709fc13f428084ff07e40fc01f51421468c543d2cf150e1a2e345802683ed07dc99401b39df849dc0e801cf83e207440e84028805004e809e0ef324b81b3836786ce8d9907620eccf09a48549249275258a4b5496c929927a23443bc28ba8ef1a33e27b8885c9ed869109c2138026e04d709c8139426a869b4c7e108c211047c08f610906901dc249169231246a48a47da754ca49222828885a84b50169f3b7c925524ba49b4938359c6b48e7e1ad435acf7123364afe35d52358b8e171a01f8ed6a5813b3c8bfcecea38f4b009608b4f169d2d385a6d110866c08d41c2c38a107e2020835c44e089b11402274376006a0dbc1b7c44f20d34b3096bd28ca51a4a6298f88130e381c7c38e871c8e3c48e47a38f46a2f841902450dbca4bb498895292a8a5534aa895550ce885b3da6930526124c549789441269a50c4ac8803126302fc267e0ab92cd24c84992931d267a4be499696cd26524ce4a169435287250f4aca93492b025614c46906cc5698ac450e62ad2940d311330161403ba605336c851cb9a17272cf289403e00d361a6a1f042cc97e44b425f8c22d845d08b811641480629478a58b4a34a21b28d45add11894ef29d288c0b5585ba0bf817ec2dc05b60b6e18c82fe85fe4bc2581512515be2b7e8910ae007bd0f781efc3df05ef010698f5301a09b491e9241248a49e497495252a5a54c4a9a953d04e9ee73dcc7b94f7205a62b5888e116885a0480c168830086040c0a180831b235e2c7296acb0415a82fc089b8bef859d0b3816b02d585a31a3e25cc4b31dc31b0636086c29dc53b8894846c31dc63b9000212900e7303da079c0f781ee03cc0794915a20024587b2c6c40d841b1436243218642481c190415602b2479097900f192de3b928ba0ee3998333267548ad9a23a2b4c8d14ea61507177, 0x21a80846108823e047b08483480ee1248b4918923526302fc267e00212cd24c84992931d267a4be499696cd26524ce497492291f69d53292488a0a221053102e20a0413983e44f4841483d907a1a7416f82df85c012142330466a0a41036207c4100895104222d50b308b44a4c9490c63a28530708db9242a52331bc5710ae1a13f045, 0x83425eb20c841888338d18009c847d1d083f207e00fb01f380554bda50851a306580cbc1964328065a0cba197032d8d171a2c01341f683ee468a7530b34966a2cd0599d127a120026, 0x213d4ca4116c22e845c08b20a40314a3c54136923d2482491493c92e8b169469443651a8c91a13c4276648911f09090b8c2260457089a4164227044d88a0113a1bb003506de0dbe2279069a5984b5e946528d25314a92952d2a6254d4a9e98f88130e381c7c38e871c8e3c48e47a38f46a2f841902450dbca4bb498895292a8a5534aa895550ce885b3da6930526124c549789441269a50c4ac8803126302fc267e00212cd24c84992931d267a4be499696cd26524ce4a169435287250f4aca93492b025614c46906cc5698ac450e62ad29d98aa318262a4c8fa290075, 0x2d024060b44180430206050c0418d08498d8742c258e92d596084c087b9cf731ee50b3a16702d605ab2b6688e8ad3209d3dc816982d18d1f12e6978c4b919920c7c5908cc99d522b5888e116895a802a, 0x34548700d1a1a363470f6310da06d48740ea7232a07180e241cc838707104e8000424e8277a88509df1d4b017, 0x163c2c8058e00f216482c8a358007 ] def policySharedUnitFixed1HintLeaf71 : PackedNatTable.Table Nat := .leaf #[ 0xc22773830da40b2c36184030c86120c26185069706150c2c585517096142c2658691241612014, 0x6030c169028b0880084b9899612e4960e009, 0xc0818042d10d1f12e6978c4b9199203e807cc0f201e34bc80ab8915220233267548b0406054cb2180831b235e2c82948031f063d0c8c190031f808205560abd1a0164344985908b1ca5ab028, 0x6050c0818042d10d1f12e6664cea916084cb2180831a10931b0e8584b1d25ab011, 0x41912f590680cb0197832c86502cce893d09003f207e050851a3106220ce3460027005407d00fad08fa3a1017, 0x40c08225ce025604a80a90151020e042409ca333231e87dc8b400eb01d403b407611294b2e44a04e989d213b427584ea99f9453a67e08a2005a01a2034806700d8223003312f509d7487c0365198232f02b, 0x2b885840b0434bc2c5858a480a163c2c38d3848ce75a92ed25d90d145a9033525b93ace1618699099a336c7588eb0959b1a6890110a224ba0d1c19f033d86780cee1a0120826370890111c2338466089651d5110145d2d3c5a74b4e16a12d405a7cb4da2210cd859e5128168f2d108948b54a524132211bc237046b08d41c2c38a107e2020835c4c999b14a50759800425270df41be438386fc0df601d003904492e36896cb8d08b00bcc01c132b98c44a76851cb9a172728f6888ccd79d64066, 0xbfe385200206010c0648b470a06008c0017fa2fe46020c0517ee2fe0e0e22c7384a707d1631c20015, 0x1942328064f0c9d3990327ce68800819363290e680ca219467334e679cce19387318e638ca539927330e659cca018, 0x1ab886c86b02d9287390e686af2d94002035386a60d505b08b6186a90d54397435586ac2d8a7ad0b6396c62d885b0435696c801b, 0x1b1cb7500080d821b3836623622dd21b2836486c60d881b14b7286c20d865b74b7216e12dbc5b7d12c16e0017, 0x1ae435e06bb2da65b54b6a06ba2dac002035906b10d665b30b6686b40d6a39bc35b06b72d9e7b08b6896d02d9c5b2c35c16d201b, 0x25d04b8096894d825b2534002012ba3c004a80954130025e04be4a811041296252e096494e2207015, 0x2371a3208e811d927745ba08b893b00084c3408e519e927400d, 0x36106c50d890c861909207064105580ac91e425e403c64b78ee4a2e81b10772000425201ce607b40f381ef03dc07980f2922b440048b0f659dc701f, 0xd143a7e999533224b94a009419283a6614cc699893048d0b1a14344c6870d0c00da0020ea0a2dc3a801b0035f86bd07e85b5d2cf9d4a01d ] def policySharedUnitFixed1HintLeaf72 : PackedNatTable.Table Nat := .leaf #[ 0x25d6128098304c0260b261c7b40f679ece009, 0x63c0c7c18f432306400c7e02040fd01fb4ccc590d12616421b16772000425201ce607b40f381ef03dc07980f2922b440048b0f659dcc01d, 0xfa41f583e800a80fb81f6a345007, 0x213c4274850109f080c10142038408285a50c4a17942e286010102010401005c85dd0bca178286442710f08f8a1b8400c420b0418082a00cc01a040a468e806127f2176024, 0x132f0b6243c493892a5a54c4aa09538341a18f4328002124aa4974a2a945928ba5144a20934d289248f4920924524da49c492c926124f24d24974947d1f79694022, 0x25e312e4664831f1642005, 0x82b309220a4415184144fa20cce9f00084ba8341d1b7984200d, 0x1083800849be948d294a5b44ba82f905f19c05471235806b10d61199873dd1721d92012, 0x186030b3b2c358c6b221340efc1e3c3c70328064e0ca91a0936644d65e54eca134810a441e06ae8d5e3b2e8cd9258a4b5496c9378645a1070010937d291a5294b6897505f10bdc17bc2f745ed9bfb48b06ff0e021d90426284c113f8d5f10a099bc5ed0be70f2800f039b07370e621cec39ea3662e9e8d94e04080e101a2054408881010249084c15a27830547645172986904e, 0x3a821c049cc1df83c7878e06500c9c195217349a0934526f24d949b68d049b3226b2f2a94b12a4a5534aa895592a907600ebe1d5c3aa87560ec21d4c3aa21c24bae9215247a49049249275258a4b5496c94c92e0a5362ece5da0bb49765032, 0xf961f483e8a5ee46d61f3083b87cd0f9c5fc518f97f000c, 0x3ae07c20ec01d925d10f685f7928ca51a4a608d109f32216075e4f9119b02764c4e0560cc8249b4938926924b24984962937927a0848334692d525b24df49e693d527b24f74964938527e09824bf464552cca4a34b6023f504d8008491e9241248a49e497495252a5a54c4a9a953d2a8254a4a9c929925c13e5041, 0x296462519b2486027805400a781060210784d2e887b42fbc927925d25194a3494c12532333228a87d88bc249149266df9242a48f49209251249249d49c42d88dbea4c749c62d70db8a4c649f093ed2b18b5b42947a5d24a81583320926924b24984962937927a0848334692d525b24df49e693d527b24f74964938527e09824bf486540042599494696c1287a5130ab699cd28c24974932926d24e254d4a9e95ad28aa5164a2e94512a5a54c4aa095392b1256a060, 0x1c8c39107200e3e1ca51b207210e4e5d2120b174000b, 0x3bf878d0f020d48f6a24c84992933d265a4d8064c4d9526d24df49d8939d1a117972f4a89a03c017a600108cd526824d149bc936526da4e60efc5e552961796022, 0xf061e081ac835447bc4e34bcc07840e9e5e501a7938c00108cd526824d149bc93641a503490f200d20193832810b40c9533b228126cc4e15136138649cc1d403b0075f0eae1d543ab07610ea61d50bc8077b0ea41d443be877c06b01d8d1b4979144ce5d98bb397772ed05da4bbb17752ee85dcd12f87580e501d646a5075a0eb65db9171176d2ed88988bb2875c2ec85e6cbcd1799050 ] def policySharedUnitFixed1HintLeaf73 : PackedNatTable.Table Nat := .leaf #[ 0x84892eba5324b8294fd2e00b0f161c006c00f0ad815b68e00d8d8b1316242c5458a0a95363c96a0d8ea56920d641a883b106d20d841bd1d12124425c84b5094a123023, 0x2afc55f0ac515882aed1bf0abd15866b7d2261ad700b, 0x263635e86bccd791af735ec6bd4d788ae2158c2b845760aed15d66be91599ae935d48ac51590ab2015, 0x2660525099a1338a6f9538445c1320a720008099e98791a794de00e, 0x194085a064a1df90dfa4e64a5894c873c25c33daa5e551408327065485cd26824d149bc936526da54912286de400424bb49829309262254a4aa2954d2aa2555433a93492b025614aac95491a0936602a, 0x208086f533da66e4a68959d2be8ed71dac3b6476c0a6900720020fa923023ea24335208a1bc207e41088208cdd19b6010c000a0ec41dc83b4e83a0eb020, 0xc30185885506120c290f2a4d049a2936526da5734aea4d1c9a4085210a8214c5429a9e00108cd9258a4b5496c94c8d4e986901b, 0x5258a4a149c33b8691a1cf49be943528726724c9e95452a9a5544aaa94312b2256a38da2ff86008c0017fa707d1631c204c4295f4eab9a62149829346768cef3a3e002119b25134a2a9458603245a385095e0e8f1a6302e, 0x3494eac8d261a423488eaa9d561a4833b45268a4c149629285270cee1a46873d26fa6724c9e95452a9a5544aaa94312b2256a38da2ffce120c034cbe2fe933f8a10141e288c5110a19143a298450f0a55347c002125da4c149849311269250b4a1a9438850a44213fa31c051a0c7118e631d0e4a9c99392e7258e4c217a4ac6957cd359a7745426904d2322a334688e293108cd919b0338066e0cda00840004e8222d53a0695f481990de21ba29c8d4525a541ba755ce8e9d1c3a366988d319d1a3a327460e8ba2a61a4e29586348c8918d631a85b01cb518da31b063a8c6f18e4428885710af214642b50c80c8a14f4008851a8a36146228e451da37734a88dd8e5ba17c464c85ece4a22cf39269574e491cb63922756916b1d58097, 0x17764ce21c8c391267c482c5d003a907510efa1df01ac179144ce5d98bbba6722eea5dd0bb9a25f0eb01ca073ea5c51cf239f12e11edf1cf086fd273077e0f1e1e381940327065485cd26824d149bc936526da54912286de400424bb49829309262254a4aa2954d2aa2555433a93492b025614aac95491a0936644d65e5529625323daa7b80bb62262049, 0x7fa0fd841150df00084a4c94d1299a0f10ff21fb83f910ce0fe640f933ea0ea46506040c0b2274015, 0x87145598ab821a4434455c9acd4b4e6b3129325344a7e95a083a87c70f921f28bf7a26f425841c8838907420e641b933c07d4483a5fd11d12128425684a9094a127023, 0x6178eb98d451a882118c2d8a664ce069f520b985d00b, 0x310061f8c3c187630e522e9cd2001094fd32fa5784c4298813301c5a38ba30f9340268220d21f403e787cc0f969a0cbf817f344e08484e2f22ca01f, 0x30d8e2c800818729174e2d0c37186a31086208c3b18783fb061e8c3e38bc8c4ce2e9c6238c8718ce2f9c58017, 0x3ce2814931c1de93f7494a784d242a162490c924524f253d118e232446408c51186634d269a53f11826349269237131ac8a30c6ba48f4920924924ea4b1494c93d1277a4f11b5877ec5af1b7349ee93e52780d4f1a9c354c6a80d5142d492d525b24f3471c75f11719d7b49e492c9050a4fa07bc0f801ef83dd16b26dc526324f549ec93e127da51816b68528f4b8008492a056124ba499493692712a6a54f4ad6945d28a254b4a9895412a725624ad48e14a09a2152828944d28aa5164ac6400123220a0069 ] def policySharedUnitFixed1HintLeaf74 : PackedNatTable.Table Nat := .leaf #[ 0x8651118217c42825df30ee626c3d9079a0f2200ecbd9187900d, 0x10a700081484291c5230a40147e2a8d2f78a993564993d339237c34b08a94d2ca53314fc6a6132fa5784d0c988466c8cd819c0337066d00420002741116a9d034afa40cc86f10dd14e46a292d2a0dd02a, 0x3d8a4cfd2cd02fc43ce879526d877e2f2a95cd2baa4c64ae495d9263a4be4b6692f52d9259b4a1895892b20a183902932926703923da89321264a4cf49969360193078f0f1c0ca019383480f200d241a51a9f466a9341268830a10ae2158185830c10a421504298a85353c002119b24b1496a92d8d4e986926904d1d26ca532270c89b09c2936644d64d9526d24df49d8939d276a50b4a1a94392b1a565054, 0x59a8b34168a2ca45951b5836686d5cda18b3616842cdc59c1b7400108cd9289a5154a2c9500547a56f368a6d4cda90b2b16142cb05970b2f165a6cdd15c1b36366a8ae515d1b44026, 0x11c822004414bba10ecdbd24b90af815d8acc251c28b21108221844408e011c4223169600101120223846708cc112c22696a7466c923d248249149748d2ca3aa22028ba97692ec85780aee15cd20195904a4696e528f945c2908520ca41145b28b45214a40a22108d2976040088001012200c401080546da607d13b181e0f8034d869a87c10b3298f4bf225a12fc6160c2c080784c0a566ca3d2224053, 0x7c00f9002, 0x3552ffa6124bd203600671118007, 0x478696811d02384565170011f2324053408c01280252045808b9177466a045408a0113021c043c0880111022404348c58105414a0021242897c01e403d007980fb01f444ed1d311333334948d2da25d44b7c96fd24a114822a0453c8a7114a2292454c8a91151229a87bd0f801314c1a45b88aa248649169231246915543e6459519a115a047, 0x11e1a5a047408e115945c0047c8c9014d023004a00948116022e45dc0042335022a0450089810e021e04400888112021a462d24a1148229445248aa248649169231246915543e6459519a115a029, 0x84411f023d8424292488a021195d5084a10a048404290854570519aa48b49189234a24228f288e8d242de8d3b1a7416f82df85c00b9817042e115c800108cd9247a490492292e822f846108c01160148828f4c068cfca34221d28dc16ecae295d32b88570ceb61d6b2ba8574911f05c50b8c171c45785c80b92573514495cc2b968904ae11444048, 0xf401e69a3408023320208040c02d00d101a48cbc8a200f212f867dc00424824906921407580ea01da03b0894a5972250972430da40b2c36972c4e989d213b427584ea89d7487c036406b80cf4d1c276c84d10990c24584d1921a0222308cc0cfca29d33f066691d31133039, 0x59e119aa48b4918923528125044a4619acb5280084bb4976433a868c0d1619d8b43a2552d0c1a01208168f017, 0x4bb299e002025fa3f329a012f07460e8b098a13042610f8909861310a6a230c29a6535d18094ce015, 0x8fc1224a4f048047e25258243047d0916122824104831ee81210242949a3fec88a4a4c949f29425280a4d9495018, 0x25684b7095c12bca6194ca445a12a825c14cd096098711a694c200e, 0x53dd28026954c4a941934b26944c3c13c427804f409e413b8a7f259c29fa13ac27504ef09da13b0026041d0836105c20c041500581048209a1720a040fdc1fb05330a0a1410284a3f50a10141c28723f62a66926925da4c40a4055200042499495292a925624b949829309262a4bc09ec13d427e04f709f20fc81f81421468c8d48a8422332a0e976930a10b819d61944328065a0cba197032d8d171a2c01353351d4c2cd259a8b3416534c3e9425285a50d4a1c943ca8f040b2a3088d4a1224ff28768d1ca1f234829f288c8a7c250706f ] def policySharedUnitFixed1HintLeaf75 : PackedNatTable.Table Nat := .leaf #[ 0x127425404a70946129048e04a50e825d4d14894b9297a88b03a017ac0010937d2eca5234b721a692949752017, 0x15170a0213f427f26972a1c13fc1f903f028428d18a87a50800d, 0x3988732002, 0x2ad455a0ab7156c2a5854a244b35908ac0d6325324cf22b20563801815942b551bf9ae04cf42ae086910d115722b6c56ca648159a00685880ca642b4329c6548ca81fac32ac6550cb048c232bc6570cb348c42c810ce000849909325263a4cf499694fd2a9a5544aac95492b70cb715ec2bd45790aee15de2bdd1c09aff456a73791c21cd5462273512c91cd335c68e00d66a5a7359896d92b49ac7053, 0x4c662b20563801835c02ad455a0ab7156c2a5854a244b35908ac0d638ab821a4434455c8adb15b26b8d1c01acd4b4e6b30841108b2108420c8588ac9002e00705678ad2432c85410aca14f028, 0x7462f58002126fa5d94a4696e529487420f881f0c3a1873e2eaa9688baa26770ec48da43a2874e0e941d243a6073d0e769a6839b873646ca1cc0023803b0f221e6906d836306c40d8443d036006be0d711ef835a06b04e5514193964a5a5ec8ba7a36646d05d7912f175d039, 0x292c5250a4e19dc7474e8e1d1b34c429305268ced3a347464e8c1a6300f, 0x3b707729f5e1dbc3b7476f9f583eb27d5c7720edb1dce3b987700ee1216a3b887719f5b43347d74fad1f5f3ec27d80fae1f5601b, 0x1bcc78dc0040ddf1bd6378c6f21e2c3c5a78d86f40de71bca37886f48dea1bc03784f15a2ef3c6678b91771e2f018, 0x7798ef21de03bbcfb30ef1407800207758ef61dee3ba07749f623edc7db4fb41f6c47343bd0fb3a303016, 0x3be47811f771df63be877e1f713ee47dc07808ef81e083c0c77e8efe21643bfc7801f74432e7dd8fb99f783ef47de4fba9f6f01b, 0x1044208630586071c38182a70e40040c0f182242d06090c1338688664e1b1c33182070c4e190c14386e83c10779c35019, 0x30986148c2838947130e258c27389a002060f8c1e1840710ce220c21184442cc6118c24388c8660e241c47388a71086129c4901b, 0xa3e18d029205559abd459c2a88d5f0aa84b6c2aa91be1a5700d, 0x1db47dec00424df4d4a30206038c0d18143024012800138568b20e1526a31830916ce1d26a44b6a95f47538ea51d4c7c40f889f124d3e9a887830f051d527c512d51f55024, 0xe001d0486807309624c04116c22e845c08b20a40314a3c52c5a51a510d946a051c99cc2ada1954a1e944d28aa5164a3065f50fe112401c2259407109614cd006f00dd81c5038848290fd9206037e8ed9304262a240e0a680ee01db03b0075c0eb122303a80a5d31791d900109219247a49049229665251a5b0493c4b290ff921c243a87f8966930d441c0b840e1829612e097e00fb123b12ea07d44b201f803ee022004301f903fa8cec91e2294332a663c964931d441e65f114a911e065 ] def policySharedUnitFixed1HintLeaf76 : PackedNatTable.Table Nat := .leaf #[ 0x2a005430a7d15326ac91560a7f15069128d5c00084b6e2a80d4d1a9900f, 0xb1e168c9a2c5a48b5316a42c58d91a2be36b82c811c21aaa4bb2948d2dca5344a7e97005878b0e00366c6c5488a9015fa2a4c549003535588ad8d55a56816262c4858a8b14152a2b7056d1ae347006c792d41b1d15fe2bf85808b0036188adcd858b1d16902d1c58f8cb348c432b86578cad195800646582461195432ac7eb0ca81952329d0ad0ca616200068566a6484d38855c004108a206840d881c1035002c2b31071231c42b096513540afb489c2a245450b5f150e2a213210a661a8a3510423185b4b4869f452287fd0ff81f083a3806000025fa113a9a5d35468afcd521b0639a69648e6a231139aa6d6515e1b29081, 0x221167a2cf659f8b3f96800cdc19b422184442d305a64ea80d1d44a051e0a2d945a012, 0x8861108239044008825a9433586750d181a2c33b168744aa5a18a2c948528b411102380471088c5a592ed25d90af015dc2b9a4032b2096e4a2e148429065208a40a22108d211a833626aa0d0c1a34b540448088e119c233044b089a5a9d19b248f4920924525d234b28ea8880a2ea51f2d4c1a24fa5000849169231246a4bb4982930926224d24914940928225230d009040b4796a22cf251e9112145b054, 0x6aa8284045a08b0115a1a0045208a90d2a335495292a9256a4af4afc49a8935926c048c760813f028004fe09f413e027a47864f900042336496292d525b12b4256e882495c24a649703550ec192833b0e7618ec29d84048e09201428d04050c0a1c95fa2d9257c4a1110322d803a, 0x135826204ce098435116bc4c4409a8350236100a, 0x8698100a33c045008a86ab8d56045608b011682841aaa0918ec1027e050009fc13e827c256e882495c0d543b064a0cec39d863b0a49b09359d8a3b127620ec202472508881916c126a217c430085f90bd040007fc6810d001a029ab0b5b24a50d22138427004dc09ae139027284d50d365be034f068e0cf819ec33c06774d56108c211047c08f61090a4922282888216cdbc248949729305261248e498a92f02128428121010a421513b9466a922d246248d06f08f801bb837600960dc81b9838606e00dc4efc036706d2197c1b313982cda4e6527703a0073e0f881d103a100a2014013a027a47864f900042336496292d525b24a649704ad09ee221727b64e8510913a2274693a525d24ea49d6512114794474692934cb4422522d529490b5ba23129de53a511816ab4a4a9498e99a2d7247e8685193a1a20a7, 0x110c221047208801104b52866b0cea1a3034586762d0e8954b431459290a5168222047008e21118b4b25da4bb215e02bb8573480656412dc945c2908520ca411481444211a4235066c4d541a1834696a80890111c233846608961134b53a336491e9241248a4ba469651d5110145d4a3e5a98344967800108cd5245a48c491a940928225230d009040b4796a22cf251e9112145b04f, 0x8469aac42d9b7800109225245a48c49729305261248e498a92f0212a34949a6108823e047b084810a0484042908549abca24228f288e52491141444020, 0x22216982d325a683428445088c9778a2e14780886110823904400882977421d9459290a5205110846908d411ac5c3846c08da51f1160947b28f48890a2d145b022, 0x63d0c8c190031f808205560abd1a01643449899540fa01f303c8078d2f202ae2454880932ca691015, 0x4c7c409871c0e3e1c7438e471e24723d1c7a3517c20c812286de525da4c44aa2954d2aa2555433a216cf69a4c14984931525e251049a694312b2200c05f84cfc15725e44b349321264a4cf497c932d2d9a4ca499c942d286a50e4a1e95952691014416a834d2cc25af4a6295248091016202a404c71f902e48e6835105a23184166988c47e99154bf42608cd1a4df49e692c8424199002b07a5d24ca54d4a9e95ad0a525174a2895885ad9b71498c93e127da5134a2a94592b1a51816b87f11263a4f549ec93dd2b09dbe492a925d2b00d671ad239f86b50d6b3dc4002119b25194a3495fc6baa46b171c2e3403f1dad4b02767917f9d9d471e96012c1256a4936927124d2496493092c525aa4b649bc93d1270a4fc4b32928d2d8254b4a9895412a5254e09c, 0x27884f009e813c827714fe4b3853dd25ca5004d2a989528325da4d2c9a5130f261409d613a827784ed09d8013000414f9446453e128394fd01e, 0x7599f241d6a7c88f918eb43e4a00207550eac1d563ab4f8d1f1b1d5c3abc7588eb21d607c74f901f1f3e3c7c70f8c9f2101a, 0xece21b0435c7678ddd3e868730fa31f4447267d14f9ea5104cc2960d35a8eb71d6c3ae0f939f283e4c3ae4f958eba3e527ca87658eca1d9a3b3072e002b00107cfcfa09f403d667cf875e0ebb1d7c3af4f969f2e3e607cbcf961f42031, 0x1f5837cc6fa1f184b063a6d22d9f033c8637c86f88df848de80f400424e34d40961d34fa6a13c8e790901f22f0018 ] def policySharedUnitFixed1HintLeaf77 : PackedNatTable.Table Nat := .leaf #[ 0xdfc1bf638086fe9e4b45e479540040dfa1c0891c06ff0dff200238007009e4d462a7930f291e4a015, 0x4bfe98492e525ea0198035532e813a021004180b5813b027846240042336490c923d24824914926270921d99da22f087e08a2a33301c, 0x9a400a6097746e445408a7914e22a645488a8914d43e004c407f00ff228003f007e913c43de44f48b701054d249ae430da40b2c36276c84d10990c24584d1921a02023, 0x4149058105620b0416908f105c400930b05d446b62334466213e0b8016fc467a42b323a23590d4a5984b5e92892768b5d36e495212a125444a862404481890211b8236c46f242e31f692fd276254111d263f814192c6496892cd26025454a8c951cc7718ed451c6458c6f95c4447c2424c8fa29031bc177920385df0bca178c2f4a60a0bce22c4c6205ea4810164403d007d2bce579844b85cb0b94171c2e30898115c226844c98c0115662f529e08ad317e82c929d88a7114c22a845488a800d61128c5ca288317062a8c6098a92b988900c54045b28d40a39051a3213086610908922da2006985c2be85720e161c5083f101041ae264c37c87070df85c6d12d99b11a62851cb9a172746ae0fc81f82618074a403123e820127a292a525524ac495c0bf0ee124c849929329267248a1a408fb4ea9a4cf49968cf01b88370070c0dcc1b9004b06ec0ddc1bc13b9466a9235274a4ea49d610a823c84780850109023d847c08441b70eaa24894916923125424ab491c10e0818247e0dfc1bfc37e870448281130b15a492493a92e528f062808ba117022c82900c528f14bef248f492092452cca5b0493c92e928ca51a0f6894c0b169469443658b11a5870048261c044ca0996132a265c817a0d61138226c450089d0dd801a836f06df113c974520d98ad31588a1cc55a528336a8a5ccd9234a4a0a5be91141492288e889ca2423e027464e8910913a104ee8279252a4b7498e2d70db8a4c649f093ed289a5634a302d6d0a51e97492a0560cc8249a492c9261258a4de49e82120cd18008496a92d926fa4f349ea93d927ba4b249c293f04c125fa492e926524da49c4a9a953d2b5a5154a2c945d28a254b4a9895412a725624ad43ffc6cf0d9d1b320ec41d983c346887785175209f467c50851a320a615e, 0x2096986482704f009e813c827714fe4b3883f07181092212238a8f3da3223d0837446e80dce1b98371401904163c3678711c88e5904bc098012a825404ae8f01084261a4960937d33a872c0e56011839707370e6c00ec3c8879a41b60d8c1b1036110f40d801af835c47be0d681ac835447bc4e3119a834a06921e401a4032946824e15136138649cc4e349caa283272c94b4bd923652e9699c93279297252c8820f58104a209a413036906d4083a106c20b8418082a00b0209041342e414081fb83f60a661414282050947ea1420283850e47ec54cd24d25094a16398072f8e6c1cd63988f69a4c549789435287251010b68674dbc80084976930526124c44a94954448a217349a0934526f24d949b695252a9a5544aac95492aaa56149a49581269a50c4ac88e58f5ea2fd3d6a943ca8f040b2a3088d4a1224ff28768d1ca1f234846c683e518f20f80b0, 0x104b4c32413827804f409e413b8a7f259c41f838c084910911c5479ed1911e841ba237406e70dcc1b8a00c820b1e1b3c388e44825104d20981b4836a041d0836105ca1f234846c683e518f20f8029, 0x29b212e825da017299c131425ea01600109a55312a694469c535ca6c14d5010, 0x37107c38f864d7c3e21009a014007, 0x11f021106dc3aa8922525424ab491c10e0818247e0dfc1bfc37e870448281130b15a48f492092540ac19904934925924c24b149bc93d042419a3496a92d926fa4f349ea93d927ba4b249c293f04c125fa492e926524da49c4924927525ca51e46968d2928296fa08f610906901dc249169231246a4c605f84cfcf62a4bd4b64966d28625624ac82860e40839227940021252a4a7495292a92560390044a0e60113038f4d764f111099268468693b1276a50b4a1a94392b1a5654b349321264a4c7499e92f9265a5b34994933925d248a47da754ca492228073, 0x46108c52118231856fa1d716308e0d28ba5104a8094f8d73a32031ac232846588bd15bc99385a48b5316a42c58d91a2be36b86b9914698db01e, 0xb4b4c6a22f858ba383169a2d305a50ad44d826d7515e9b5e00d, 0x264214d0299c5380a6c14d629b52249a80455469fc52c0a5a14b2295cd3622a734da29d853a8a7414f229e00119a9514ac31a46448c6b18d4322853d0022396e7248e5b1c9135248de853890de21ba29c851d0a38146628bc0141a5446ee6a292d29a89035, 0xcce999e05c40b5498f02d405a60b5816c1b80441c6670905930805ae4c189839305012, 0x75c0eb122303a80a5d32512ca43fe48700ec0b6303b20a690ee829d05364b384b080e501c8038407000dc391e026c04e809c0132026004b23a34c64662ccc519893310661ccc31985441e884110882e0263843a0875a1e921d8920d28e2534466244790f6997c490824f121c01c24af4316062d0c5918a23140627245e3d94926526c24da42e69341268a4de49b2936d2a4891436f292ed262254a4aa2954d2aa2555433a216cf69a4c14984931525e251049a694312b2200c498c0bf099f80084b349321264a4c7499e92f9265a5b349949339285a50d4a1c943d2b2a4d24ac095852ab255249be71c4e3a22cc38f84b35160121d083, 0x1b3c36746cc83b107600f841d703af2b148cd89f2a21627cc77846ce21bb00109665251a5b0496292d525b24a64a32946928da4f4128098300de1206219886e8ef1a2ea024, 0x20a9a400a6097746e445408a7914e22a645488a8914d43de87c0098916e43ac9215244097c01e403d007980f94c9203ac07500ed01d844a52cb9128052e0a6414c01d603ae07605b181d90534877414e829b259c258407280e401c2038006e1c8f0136027404e0099013002591d1a63233166628cc49988330e6618cc2a20f44208844170131c21d043ad0f490ec4906947129a2331223c87b4cbe2484259a8b0090e921c44164b280dc01ba037206dc059a32c240487e890181040206016806880d2019c036088c00cc4d8a0b6816d82dc47984c4898880d901aa993119802a925b82f905f18bda17ce1e5001e1c08380a8e243e00d361a6a1f042cc97e44b425f8c6b00d621ac23330e7ba2e43b241d0024e84a8094e52f51161752100220004048803100420151b6981f44ec60791979144474c44ccccd093c487007080e301c9039498a80e381e2467448cc0f681e7245892900fb01f512c807e00fb8088010c07e491e2294247648a12d6120e12fe25f936221644b3096bd251092a05500b3c15692dd441a651849d99583b7c359c6b48e7e1ad435acf71257f1aea91ac5c70b8d00fc76b52c09d9e45fe76751c7a5804b0425f40e181c4038a06ed3630930126e24d84979949452465290fd920a3336667d0f20a60488e28645110a23141e2840d1d8a0013f891044fb09f713ea352d23489f9488027ac4f609ef13e027b44f721de4acc28b05158026145a28d851aa6c316c072d46368c6c18ea31bc6370021145c32e50728cbc14ba297c52f0a4f20786dc527c24fb4ac691210731a73455273892be238c39288b3ce49a55d14cc35146a2084630b69690d3e8a7e14fa2a185400a7f15069129320986f30e061b8428885010be223043288643d8894b469f09f113e62d841ad803706ae6ddd1501d6e0f641e683c8803b2f6461e4c4d987730d089fd1401a9a35328ab0d4c0a450ffa1ff03e1074b0e781ce8399872f00901cd839b872e008a1cb4668264d10e29918193136516b86df5271a54d4a9e2d890f124e20ee45e150f3a5724aec6208e7f23652e9e8d991b417e844ea69745440a8716be2a285448afb489c991c3b118674940928442087740ee61dc03b7884948306180bc2226430ae94d51b4a6c20ab62bd057b0af515e42bb865c21424a809134e6f9aff456a6c003d107a10f621e903d180360f4a1e983d42146025604a80a90151020e06351d391d8231e87dc8b4252f48345eecbdd226d2f729aa0d831aa4457e6a8c250a3f20946129048e04a50e82994532c9014416a23f48091016202a404c71f902e48e664552a5a54c4aa0953906a20b4463082cc4c986f90e0e1bf0b8da25b336210c42180473086810e0eaa2489495092ad25ca48e0db8108823e047b08483480ee1248b4918923524523ed3aa6524911416fa4a0a8d28a282225289e1120223846708cc112c341a18f4a3e8fbcb4a14754440517409c91d9490c0dc41b8038606e60dc8025037406ea367d2e20982334693cd27aa4f649ee92c8424199002b06348460a194492a925d28ba5144a2441f47128e2f1c4c154083e21954946944d28aa5164a308ffd0a01e7545ec850524da49c4934925924c24f449c293f12361de7274488489d0899b0c30185c30a06134d7416742ce05ac0b56168c68f897333267548ad9a23a2b4c1681203265b12cc770c6c18d821b0a36106c50d890c861909207064105580ac91e412de03f607f519d9dc945d07714ee225211b0c07bc0f701e603ca48ad1001dc64cd2660cad41614448e66dcba9a291297252d91bb1a5118f031dc6440c7a18f2008063e8c7e2148863927524eb0efc1e3c3c70328064e0ca91a0936644d65e552caa48142fa727d1681c9e34308a7cd0b23744abc9588d1a22a3348c69d86291c754af295e862c0c5a18b231446280c4e48bc7b2924ca4d849b485cd26824d149bc936526da54912286de525da4c44a9495452a9a5544aaa867442d9ed349829309262a4bc4a20934d28625644018931817e133f055c97900f181e4175607c1353a6c00876980022d946a051c0f101d903b007c20eb81d7958a466c92c525aa4b6494c946c9f2a21627cc8d10314045d08b811641480629478a5f78004248f492092452cca5b0493c92e928ca51a0f6894c0b169469443658b038024130e0226504cb0995132e40bd06b089c1136228044e86ec00d41b7836f889e483662b4c562287315694a0cdaa29733648b0c915259a49909325263a4cf497c932d2d9a4ca499c942d286a50e4a1e959526925604ac295592a924df38e271d11661c7c370 ] def policySharedUnitFixed1HintLeaf78 : PackedNatTable.Table Nat := .leaf #[ 0x25d107640ec01f083ae075e562919b24a64a32946928d93e5442c4f991a219904936927124d2496493092c526f24f41090668c00424b5496c937d279a4f549ec93dd25924e149f826092fd26a703e807cc0f201e34d669b1c9152202031, 0x25f803ec48ec4ba9995005, 0xc050eb0008490a03ac07500ed01d844a52cb9128491006e00dd01b9036e02cc06ca330465848090fd120312f803c807a00f301f20410081805a01a2034806700d822308cbc8a223a62266666924ca4c149849669262a4bc497c95e92d8933e033, 0x1de03bc87798ef13ece8c0c7778eed1dd88e68fb58ef54d423ba8fb19f66010, 0x17a22fa45ea0bd317ac915c9c224d449ac936126d24dc49ba85cd26824d149bc936526da54912286de525da4c44a9495452a9a5544aaa280cd19a4c14984931525e250d4a1c28004fe244113ec27dc4fa89f4004828b91ba255e4a1895812b125614aac954927124df37f06fdd1620bd237ea938d29c8bcb179091585e1a5c8176a2eb53530ed71dac3b6476c0a6900720020fa923023ea29b2c76a10d621aa3b5451e0a3b147228c8d2a23773e9a9698fa6238737bc8e212bb9bf6064, 0x15e02bba6010ae015f51ab85760af85661201959000b, 0x82c1056612441490034d7a33f4e9806be0d801afc35e83f42dae967cb6c10491a14344c6870d0c00da0fcc1f89421468c750516e20f71cb20978130025504a8095d1e021084c34090c12282440484090411fa3bc4c36089c9348d011a0034080ff820127a292b919e123f45ae74cc13f028004fe09f413e12b744124ae047498fe492c926014192c6492a925d24da49c496892cd2600cf704900d9832f836906d00f901f1805207cc50789cc966d273074a493d927e440a49fd258267741b8924924e876d0ed81dd43b707763346937d279a4f549ec93dd25924e149f826092fd236a2f068994bc124de4a6c99c93279297252c8820f580418082a00b0209041342e414081fb83f60a661414282050947ea1420283850e47ec54cd24d24bb49881480f70a49949729305261248e498a92f021c234a4a0a9425287951e0816546111a942449fe50ed1a3a0a644fa6108416908f105c400930b05d446b62334466213e447c2424c8fa29031bc177920385df0bca178c2f4a60a0bce22c4c6215e72bcc225c2e585ca0b8e171844c08ae11342264c6008ab317a94f1059089c1136228044e86f10de41c5c38c06f30e2c5cd929386fa0df21c1c37e06fb00ea01cc219043408e610c021896784a049410344a6aa0d0c1a35088248f4920924524f25034a465a98b510680482019dc33c0d1e0cf21a3834f263c06ce77e127703a0073e0f881d103a100a2014013a13dc442e4f6c1f5027a47864f9125324b825689a6532b037106e00e181b9837200960dd81bb837827728cd5245a48c491a93a525d24ea49d68f809d193a244244e852f81665466c0ebc1d703e107600ec81e226bb46884f9910b13e5496292d525b038f044c0e60112839027949295253a4a9495492b01c91c8149949339276a50b4ac62860f62933f0010966926424c9498e933d25f24cb4b6692f52d9259b4a1a943928625624ac89595276234324d0884c9e2043b4c00266c30c06170c28184d35d1614448e66dcb54a2de2d105a3ca27a22528a05c6d12d971a2e268974b8918ac450e62ad29d98aa318262a4ae622403150828d190984319d, 0x112e64dd26fa4ba0bbc901c2ef85e50bc617a530505e711626310af395e64a68172c2e505c70b8c2260457089a1132630045598bd4a7882c8004089c315694ecc5518c13152573112018a8028, 0x26aa0d0c1a350882491493c940cb5306892cf09408218843008e610d0219007300ea1bec37e07070df21be8b9b07160de61c6038b86f20de25c4912e97134a4e5c6912d971b28a08894a27a5044a461a0120806770cf0347833c868e0d3c98f01b39df849dc0e801cf83e207440e84028805004e84f7110b93db07d409e91e193e4494c92e095a26994cac0dc41b8038606e60dc8025837606ee0de09dca33549169231246a4e9497493a9275a3e027464e8910913a14be0599519b03af075c0f841d803b24ba2227920d86df0dbc01a8376089d1140226d367a67741b8923d2482492493a92e43b6876c0eea1db83bb236a2f068994bc125360ffe1ff8406080a1016223444b088e111e9b386e78e311c6414d829a955149fa0ff8a15853a2aa014d0aa7856f07fa103020003ff006000bc204942c4430563927f154c3d0c7a14c4ea2863138609913b981d450e62b0c5699904936927124d24964930937927a08483346937d279a4f549ec93dd25924e149f826092fd234427cc88589f2a4b1496a92d81c78226073008941c813ca494a929d254a4aa49580e48e40a4ca499c93b5285a56314307b1499f80084b349321264a4c7499e92f9265a5b3497a96c92cda50d4a1c94312b125644aca93b11a1926844264f1029c154d087698004cd86180c2e1850309a6ba2c28891ccdb96a945bc5a20b4796a210d, 0x1140226d367a6770ec48da41c91c8149949339276a50b4ac62860f62933f4b349321264a4c7499e92f9265a5b3497a96c92cda50d4a1c94312b125644aca1ffc3ff080c1014202c4468896111c223d364053b313a8a18c4e182644ee607444e86ec00d41b7836f889e4ba20ec81d803e1075c0ebcac524a60ac290042b0055f005215742af056e0a6e9b402ca059746b21d083e207c30e861cf8baaa5a22ea899d4396072b008c1cb8ba5883d107820fc41f080f00b21cf439d873106ae00dc1ad8b6113e627c44f9036406ca4e5cd0da2a036ee1cdc39b003b0f221e6906da52d0f441e843d887a40f4600d83d287a60f505f3009e0150029e04188a2a1f622f094bd20d17bb2f7489b4bdc97b246ca5d3d1b3185344fc61483e00d361a6a1f042cc97e44b425f8c3de87bc0f7e1ef82f780832fc089b8bef853e47f6559119b250f4a2215382a6855c0a9e15450eba16202128ccd243248f4920924524f253d118e635d2880adf1192232046288c331a6925524ba5174a28934d29f88c131a4056124ca4d246e263591461ae74a8094f91ab1566446c5595289a5154a2c554911b95742aea946528d251b27ca88589f323443320926d24e249a492c9261258a4de49e82120cd18008496a92d926fa4f349ea93d927ba4b249c293f04c125fa483662b4c562287104, 0x14cc841d26fa5234a522038406881510222040c15a278305496d12ea0d451a88211802c8008101e616d2d21a7d018, 0x39700460e561cb133aa69d06b20d4401c03923902932926724ed4a16958c50c1ec5267e966926424c9498e933d25f24cb4b6692f52d9259b4a1a943928625624ac895943a0049d0950129c25184a4123812943a09753452252e4a5ea22c2ea41a69368866c08d41c2c38a107e202034c50a397342e4e59e41ab803706b62d844f989f113e40d901b2939734368a80dbb974b0e6e1cd801d87910f34836d29687a20f421ec43d207a3006c1e943d307a82f98002119b2486027805400a78106228a87d88bc248f4920924528ca51a4a5e9068bdd97ba44da5ee4bd92365076, 0x25f02cca9a6532b038f044c0e60112839027949295253a4a9495492b01c91c8149949339276a50b4ac62860f62933f4b349321264a4c7499e92f9265a5b3497a96c92cda50d4a1c94312b125644aca93b11a1926844264f1029c05370adc15782ae80290abe15802b0958a4a32946928da4012aea55d111b954d07d498f01b39df849dc0e801cf83e207440e84028805004e84f7110b93db1336186030b86140c269ae8b0a2247336e09e91e193e400108cd9258a4b5496c929925c12b4065, 0x3cc07c81040206016806880d2019c036006d233022308cbc8a200f401e425f08a18008490a03ac07500ed01d844a52cb9128491006e00dd01b9036e02cd31801bc037607140e201c3052c25c1364998f259248290fd9206465848090fd1203037e8ed9304262a240e66691d3113303b, 0xdc61b9037296fc2e005bf8b7e96ff2e1696692d98436086a10fc21f043728aa8864a28a5040d129aa8343068d2d501120223846708cc112ca3aa22028ba948c34024102d1e5a98b5125260d36135427284e409ae137034f84dd0d2299401b39df849dc0e801cf83e207440e84028805004e809e91e193e4496292d525b24a649704ad09ee221727b6266c30c06170c28184d35d1614448e66dcb55a25629d253bd11896b70dcc1a3034586762d0e8954b8086e80dce1bac37506e92e065c10b8417062e0a5c1cb8517092e041b8437106e0066c0cd419b937226e65ce925ca5b24b36923927224e506880d0c1a3034526fe4e009c1138126fc10e021a0473086010c535806770cf0347833c868e0d3c9b501b88370070c0dcc1b9004b06ec0ddc1bc13b900108cd5245a48c491a93a527524eb47c04e8c9d1221227429ac422696a7466c923d24824914974947d1a596a945bc5a20a27a22528a08d2928293710bc, 0x14fe2a0d225268a30de61c8c38987030dc2144428086146e035046a01d7030ec61a113fa28035342a005430a7d14fc9aa5320075b0ebc1d743ac87282eda8984bb7071d1a7a974909b9d6f13e4686d297253810d675d529b88643d8894b469f09f113e62d841ad803706ae6ddd1501d6e3ada6a611561a99040 ] def policySharedUnitFixed1HintLeaf79 : PackedNatTable.Table Nat := .leaf #[ 0x79a41b60d8c1b1036110f40d801af835c47be0d681ac139545064e59296879100761cd839b872e008c1cac39626754d3a9b5c34d0740093a12a025394bd44585d48250a3f20946129048e04a50e825d4d14894b9296c5d2d1b297b2031, 0x105520a819803309cf42cdc842482b210d4218842d085225039e45ccce799729011, 0x38c07170de41bc437686ef0de01bb8b86170d2e225c3cb8717104dac0fa813d23c327c892e095a26994cac97c0b32a4a9495492b1263a4cf499614e029b856e0abc1574014855f0ac01584ac524b1496a92d925325194a34946d20095752ae888dcaa6866c08d459e4b8906f30e2c5cd929386fa0df21c1c37e06fb00e801c8224971b44b65c6838487080e2a1c2838626d90d0c1a34b54068048205a3cb53070d0e1e1c403870d80390c1120223846708cc112ca3aa22028ba1b6cb7ca50518b8720cedfa4152e565ca882ba10f086c10d421f843e086e10d0239843008629ac0a27a22528a0515510c94514a089489291a5b90dcc1a3034586760cee19e068f06790d1c1a7936a02fc4018931926424c949949339285a50f4aca0dc41b8038606e60dc8025837606ee0de09dca335491a93a527524eb085411e423c0428084a6de1244a48b491892e52472349288e889ca2423e027464e8910913a11cc0397c7360e6b1cc47b4c00424c14984931525e250d4a1c9441269a50c4ac88e58f5ea2fd3d6a9ac422696a7466c923d24824914974947d1a596a945bc5a20b43a2552e028438b94172744b85c98b89a25d0e6, 0x82a69022a0453c8a7115322a445448a6a1ef43e004c48b726d5138490ec8c48008466c921809e0150029e0418084013a4c6206f00dd81c50388070c14b09704d92663c964920a43f648180dfa3b64c1098a8903a333228a87d88bc248f4920924524999da036, 0xf301f20410081805a01a2034806700d801b48cc088c232f228803d0079097c2286002124280eb01d403b407611294b2e44a124401b8037406e40db80b34c6006f00dd81c50388070c90521fb240c8cb090121fa240606fd1db01c1038c07240e5262a038e078073a096c3d9a48a52d6120e052c25c0cc792c9240e66691d31133045, 0x8862e146c0070e0e201c3c386a6d920ae843d19aa5220dcc1a3034586762d0e8954b80a10e0e185ca0b9524152e5676fd1c3044408e011c422316964bb497642bc05770ae6900cac825b928b85210a41948229028884234846a0cd89aa8343068d2d501120223846708cc112c22696a7466c923d248249149748d2ca3aa22028ba947cb5306893e96923525da4c149849311269042a08f211e0214042408f611f021106dc3aa80021244a48b491892a1255a4b9491c10e11a525052df488a0a491447444e512021b0435087e10f821b843408e610c0218a6b0289e8894a2814554432514528225230d009040b4796a22cf251e9112145b084, 0x233844708905a580040446088a1a14234947a28b897692ec85780aee15cd20195904a4696e4a2e846608961134b53a336491e9241248a4ba4a3e8d2ca3aa220022, 0x1d7e7ce47610ec13e647ce07601f3c00103b147640ec31d8c3b1c7621f343e6e7cd8f9a9f331d927ce8f9d9f31018, 0x6c90d8c1b2cb7400084cc41b211b116df0d941b1cb70225800d, 0x24714aa09181234a5114a9294c1254f2c00084c4a38191a614a300e, 0x38b07168f761eea7bd87120e231c50389c2059e7645e879cc7450e8c1d161314a6ba3013dea7fdcffe9ffc3ff638ac7170f771ef03de50042500097e8fcc26084c21f12130c7468e8e3df494047c2246d4c4c9afd0088e29212442447151e7b464479e87478488090e120c241048047e29adc6f68dec1be037b8f1ca5a93c7037646ec0dde1bb4376d35b0f181e343c6478b8e5e3f2c8c14fcba6df1da23b407e28fcc1f8e3f182098412005850ed0ba905949fe3f247e40fcb1f94140c015050640b68c4102d205940bc81607698414005a105420c04170836107535a04fe09fa140427f950f4b3c543827b04f509f813dc27c83f207e00fa931e03673bf093b81d0039f07c40e881d0805100a009d09ee221727b6266c30c06170c28184d35d1614448e66dc13d23c327c892e095a1421468c8d48a8422332a0e8d20a1f23473e928e6537023923c4a8bb4f1226e14d705258a4ca22a3df67be518614d329a09425285a5651cd07ae47c00f7f1f043e04286200b4a1a9439288250c4ac839b47350e691ccc39947358e6c1cbe398136a02fc3b84931926424c9499493392450d2047da109023d847c08441b70eaa2489495092ad25ca48e18ba721526ba4d506744e1126a24d649b0936926e24dd42e69341268a4de49b2936d2a4891436f292ed260a4c2498895292a8a5534aa895550cea4d24ac095852ab255249c4937d271a5044a0a5be911414923aa60dc41b8038606e60dc8025837606ee0de09dca33549169231246a4e9497493a9275a3e027464e8910913a13d6a8bf4f5e9eb845f87b01285235440148c2d004a58e40028000fff9ffe3ff48bd47c18dcf1c6238c829b05352aa293f41ff142b0a74554029a154f0a7014dc2b7055e0aba00a42af85600ac25629258a4b5496c929928ca51a4a369004aba9574446e55342b783fd081810001ff8030005e102429f23fb2ac8002119b250f4a22944d28aa5162aa450b110c158e49fc5530f431e8540208c28f401e7c183, 0x38b07168f761eea7bd87120e231c50389c2059e7645e879cc7450e8c1d161314a6ba3013dea7fdcffe9ffc3ff638ac7170f771ef03de500424bb4982930926224d24a0012fd1f984c109843e242618e8d1d1c7be92808f8448da989935fa0111c5242488488e2a3cf68c88f3d0e8f0910121c241848209008fc535b8ded1bd837c06f71e394b5278e06ec8dd81bbc37686eda6b61e303c6878c8f171cbc7e591829f974dbe3b447680fc51f983f1c7e30413082400b0a1da05940bc81607698414005a105420c0417468e7d251cca6e0472478951769e244dc29ae0a4b149944547becf7ca30c29a65341284a50b4a1a94392b2a58e40028000fff9ffe3ff48bd47c18dcf1c6238c829b05352aa293f41ff142b0a68553c2b783fd081810001ff8030005e102429f23fb2ac8002119b250f4a22944d28aa5162aa450b110c158e49fc5530f431e8540208c28f401e7c0b3, 0x4fe09fa140427f950f4b3c9ad027b04f509f813dc27ca3522a1088cca83950e011, 0x341014302872d6c9295292a526257e0a1412426ae06d00f901f18052283c9ab435183e500a60f981f5027a47864f900042336496292d525b24a649704ad01f803f2468c5084b5e86be0d801afc35e83f42dae967cb6c099b0c30185c30a06134d74585112399b70d201a3c35286a409f013e91a916be44ae5aa895f22d9043, 0xe6e1cce39a1371a17520b23f247e40fcb1f94816d188205a1f003dfc7c10f8140148c2d0049eb91ccc39947358e6c1cbe3980a99a49a0a1c8fd82838508081614251fa85040a0a14cc1fb03f70a0485c927f8413082400b020a8418082e14f91fd9564466c9445289a5154a2c55491a3943b284888d4a8c151e0a407b2924ca4c54978936126d217349a0934526f24d949b6952448a1b79001092ed260a4c2498895292a8a5534aa895550cea4d24ac095852ab255249be9425285a50d4a1c943cf5aa2fd3d7a7ae0f60a2fb06d, 0x10c0239843408707551244a48b491892a1255a4b9491c1b70211047c08f610902140908085210a93711448451e511ca4922282df494151a51450444a10c5372869109c2138026e04d709c8139426a869b2df0266c30c06170c28184d35d1614448e66dd29325242d6e88c4a7794e944605aad37226cd0b001610acda6b1089a5a9d247a490492292e928fa34b083a106d373053a2aa014e029b856e0abc1574014855f0ac01584ac50008466c92c525aa4b6494c946528d251b480255d4aba22372a9a50f91a4144f06b ] def policySharedUnitFixed1HintLeaf80 : PackedNatTable.Table Nat := .leaf #[ 0x42a83090614721d25da4c14984931126824d149a4936526da5d94a4696e529a0a42148e29185200a3f154697bd354264f4ce428e851c0a3334a88ddd1be1a58454a69646258a9f153c2a6cd59a2ae38de4d1c185830c10a421504298a85353c94c8541a44a14fe2a005430a7d14fc9b0c5b01cb518da31b063a8c6f18dc00845171c94459e724d2ae8c7818ee322063d0c79003e31ec63e0c7f3962002119b24b1496a92d926f25194a3495ed2301ca0393e8b40e4f002714609b305f20be317b42f9c3ca003c381070151c48d601ac435846661cf745c87648d4c22ac35326a68d4e986f30d24d20c38186e10a2214042f888c10ca1ec83cd079100765ec8c3c989b30ee61a113fa28008e, 0x9a6839b873646ca1cc0023a6e814cc35146a2084630b69690d3e84a147e4128c252091c094a1d04ba9a291297252d852287fd0ff81f08bf4227534ba1cec39e874c0e921d283a707450e8c9a60baea25e2ebc8da11b3174f02f, 0x14822ab05200a3f147c31a05240a4934fc958853890de21ba29c8d4525a53512296052d0a5914ae69b11539a6d14ec29d453a0a7914f0008cd4a8a5618d232246358c6a191429e80111cb7392472d8e489a9246f4959c5340a6714e029b05358a6d489228e851c0a3334a88ddcd4022aa34fe69851671a5734b08abc5211c874976930526124c449a09345269030a10ae2158185830c10a421504298a85353c94c8541a44a35346a74c379869269061c8c38987030dc2144c34227f45004d1d26ca4db4bb2948d2dca53418962a7c54f0a9b14fe2a005430a7d14fc9b0c5b01cb518da31b063a8c6f18dc00845171c94459e724d2ae8c7818ee322063d0c79003e31ec63e0c7f3962002119b24b1496a92d926f25194a3495ed2301ca0393e8b40e4f0a661a8a3510423185b4b4869f452287fd0ff81f083a5873c0e741ccc39780480ec499dd1b4974f46cc8da0bf4227534ba009c51826cc17c82f8c5ed0be70f2800f0e041c05471235806b10d611998214042f888c10ca1ec83cd079100761cd839b872e008a1cb4668264d10e234f439407591a941d683ad976e45c45db4eb6988239fc8d94bd91879313661dce7ba2e43b246a611561a9935668ab8e379a590f0, 0xa3f147c31a05240a4934fc00212b1256734c28b38d2b8a40155829045211c874976930526124c449a0934526924d949b69765291a5b94a6869651579a58021, 0x72c4cea9a603a107c40f861d0c39f17554b445d503a307450e9c1d283a4874800c20004baf225e2eba1cac023004906ac1ccc39d174f0e721cf11b3174b021, 0x6180c2c42a830906149bac250a3f20946129048e04a50e825d4d14894b9296c29986a28d44108c616d2d21a7d148a1ff43fe07c20e969bb0397804846d05fa113a9a5d268e61c09a4085210a861bcc37085110a0217c44608650f641e683c8803b2f6461e4c4d987730d089fd140186903c, 0x7c40f861d0c39f073d0e769a6839800472e9e8d98baa87424dd299d4396072b008c1cb839b873646ca5d2cbaa25a2019, 0x296052d0a5914ae69b1153a6ed10a62a14d4f253215069128d4d1a9d14d0299c5380a6c14d629b52249a80455469fc53b0a7514e829e453c0023352a29586348c8918d631a86450a7a004472dce491cb639226a491bd0a7121bc43745390a3a147028ccd2a237735149694d448c4b153e2a7854d8a7f15002a1853e8a7e4d862d80e5a8c6d18d831d46378c6e004228b8e4a22cf3926957463c0c77191031e863c801f18f631f063f9cb100108cd9258a4b5496c937928ca51a4af69180e501c9f45a072785330d451a882118c2da5a434fa29143fe87fc0f841d2d376072f00908da0bf4227534ba009c51826cc17c82f8c5ed0be70f2800f0e041c05471235806b10d611998214042f888c10ca1ec83cd079100765ec8c3c989b30ee73dd1721d9235308ab0d4c9ab3455c71bd37726ea09428fc825184a4123812943a09753452252e4a5b1a6d0af, 0x99d4396072b008c01241ab07390e788d98ba5a6980e841f103e187430e7c5d552d117544cee1d8931ca3690e8c1d143a7074a0e921d3131c268b16922d4c5a90b1636468af8dae0b46163c2c745a40b47163e6d6515e1b29164032cd2310cae195e32b46560019196091846550cab1fac32a06548ca742b43298588001a39a69648e6a231139aa8e105488a9015fa2a4c549003535588ad8d558b1316242c5458a0a9515b82b68d71a380363c96a0d8e8aff15fc2c045801b0c456e6c2d2e00b0f161c006c566a6484d38855c8451034206c40e081a80161598838918e21584b289aa057da44e15122a285af8a8715109bbc4321ec44a5a34f84f889f316c20d6c01c035106a47b50193136549ce8d08dbba2a03adc27e086f89fd214268f9285a50d4a1c958d2afa44242f491050ee077e0f1e1e38194032706548d049b3226b2f2a2170d51a2bf35486c18d8d84a147e4128c252091c094a1d04ba9a291297252d91b4175e44bc5d753738f1d1e383dbc78f8f201e483c880020f271e503db8ff68f2a1e523cb07958f581e5c3cb479a24761e663cc879c24771e767ed12b50ce93a2495ac7a10f411e8e3d107a18f45473c7ed91831fb54b168e74fd2a3073f487e8d2c69fa247388e6cfcea3083f383dc47b98f721ee07fc51849ff21d263a487488ff81ffa3fe87fca0991ff63fb87f88ff01fde00285d7a08b4628825d2c98ff21fe63a5c005a08f412c826904a8e901d2c3a54006000f17642eccf7f9efc472e3aa07830f051d527c512d51f131d38301c6068c0a18162eb45daa5c817862f2122b0bcb37ea938d29c8bd217a22fa45ea0bd317ac915c9c224d449ac936126d24dc49ba85cd26824d149bc936526da54912286de525da4c1498493112a525514aa695512aaa19d49a495812b0a5564aa4938926f9bf837ee8b10dfb257747106f791c3a38b38568b20f820227044c0e60112839027940021252a4a7495292a925624c84992933d265a4ec468649a11099269183, 0x26d81116626843e087b111421f843e8041007e0d40c47a284311c296052d0a5914ae69b11539a6d14e2437886e8a7235149694d44834f14ec29d453a0a7914f0008cd4a8a5618d232246358c6a191429e80111cb716c072d46368c6c18ea31bc637002139288b3ce49a55d392472d8e489a9246f429a05338a7014d829ac536a449147428e05198a2f005028d451b0a2d004c28ac51621de13dc27b44f809ef13d827ac4fca44013ee27d84fe2441140068cd286a50e14066de525da4c44a94954448a217349b695252a9a5544aac95492aaa5614abc94312b0256246e827d44fa0024145c685914f9a184acc31e063b8c8818f431e400f8c7b18f831fce58a4b1496a92d928ca51a4af69180e501c9f45a07278d28a37634a88ddcd4022aa34fe0d641aa23de27188cd526f24d906940d243c8034806524e1126824d149a8935926c24da06747215246a4dc49ba935d26aa4e3085451212820c5f47dc10dc21f043f086a3170e4306db08f211e0214042536f09225245a48c49729305261248e498a92f11a49447444e5be5282a4d339068864a2a9c8449c4937d1a0938544d84e19273138d4db40e3c1130398044a0e409e524a5494e92a525524ac49909325267a4cb49d88d0c934221327889b342c007bd0f781efc3df05ef01065f8113717df0f8034d869a87c10b3216602cb058f0b1490142c58d2f0b0e34e12339d6a4bb4976434516a40cd45aa00040448088e119c233044b089a5a9d19b248f4920924525d234b28ea8880a2ea5234a3e1a346c0866d0cd811a8b3c9dc13b80754112816a64b72759c2c309991a661c2038a870a4dbc5a69112169928f05a602220443170a8e18a2d972744b8758ccdb05820b08566ceb095a346b25f912d097e3155, 0x4cea1cb0395804600920d5839c873c46cc5d2d34c07420f881f0c3a1873e2eaa9688baa26770ec498e51b487460e8a1d383a507490e9898e13458b4916a62d4858b1b23457c6d705a30b1e163a2d205a38b1f36b28af0d948b20196691886570caf195a32b000c8cb048c232a86558fd6195032a4653a15a194c2c4000d1cd34b2473511889cd547082a445480afd15262a4801a9aac456c6aac5898b12162a2c5054a8adc15b46b8d1c01b1e4b506c7457f8afe16022c00d8622b7361697005878b0e00362b35324269c42ae422881a1036207040d400b0acc41c48c710ac25944d502bed2270a8915142d7c5438a884dde2190f62252d1a7c27c44f98b6106b600e01a883523da89321264a4cf49969360193136549b4937d27624e746846ddd1501d6e0efc1e3c3c70328064e0ca90b9a4d049a2937926ca4db4a922450dbc80084976930526124c44a9495452a9a5544aaa867442da4d24ac095852ab255246824d99135979535468afcd521b06363612851f904a30948247025287412ea68a44a5c94b646d05d7912f175d0d4, 0xe371c6c395cf579e8c1cee3f1102b9ed2009, 0x1c9639287260e481c9281387290e471c8c7a70f4e9ea13d407a787298e541caa42ec85e219f1c9c39347288e501c9e7a8cf521ea53d4e7a98f51219e3d547aa4f4f9ea8024, 0x7068e0c002, 0xf181e343c6478b8e5e3f2c8c1535b26df1da23b407e28fcc1f8e3f190ba90591f923f207e58fca0a08141429983f607ee14090b924ff08261048016143b284888d4a8c205b4620816902ca05e40b03b4c20a002d3e928e653701f97031, 0x7fc6810d001a029ab0b5b099b0c30185c30a06134d74585112399b70d201a3c35286a409f013e91a916be44ae5aa835f06c00d7e1af41fa16d74b3e5b6135686a307ca014c1f303ea04f48f0c9f22336496292d525b24a649704ad01f803f2468c5084b5ea5254a4c74cd16b820127a29295254a4aa495892b817e1dc2491a931926424c94994933925d248a1a408fb4212047b08f8108836e1d5400109225245a48c495092ad25ca48e087010d0239843008629b94a27a22528a08d2928296fa44505248ea9a4c7499e932d19e123f06f ] def policySharedUnitFixed1HintLeaf81 : PackedNatTable.Table Nat := .leaf #[ 0x4dea382c00a0e101c1e3844f2e9e5c008, 0xc597de4922966524f0629478a0a4022c863308b418a0b158008491e924124a8158492e926524da49c4924927525ca51e2c58892ca34962d4974946528d07b44ba294c12d711d6026, 0x2d305a50ad416308e0cdae8b4d1696971cda99b5736a42cac5850b2c165c2cbc5969b3745706cd8d9aa2b9457422f90eba51015be232446408c51186634c0042495492e926d24e25154a2c945d28a24d34a7e2305361237131ac8a30d73a5404a7c2a3cdaf22bd037, 0x12fe9b2849e2438038425f9362097d052a3a0136e097802968dc8082a69022a0453c8a7115322a445448a6a1ef43e004c48b71ee9331e4b24ccd999f020, 0x1bd03829b1416d02db05b88f30989131105524b705f20be317b42f9c3ca003c381070151c487c01a6c34d43e085992fc89684bf18d601ac435846661cf745c876483a0049d0950129ca5ea22c2ea42004400080910062008402a63d4d228274f739ee63dca7b902d315ac44708b451b6981f44ec60784b1a64a019825dc0a626fb038c07240e5262a038e078919d123303da079c91624a403ec07d44b201f803ee022004301f924788a5091d92284b5848390b225984b5e928849d8937126c24bcca4a29232b08dc862c1c7c43c829812238a191444288c5078a10347628004fe244113ec27dc4fa8d4b48d227e522009eb13d827bc4f809ed13dc87792b30a2c145600985168a36146a9b0c5b01cb518da31b063a8c6f18dc00845170cb941ca945d28a0cbc14ba297c52f0a4f20786dc527c24fb4ac691210731a73455273892be238c39288b3ce49a55d14cc35146a2084630b69690d3e8a7e14fa2a185400a7f15069129320986f30e061b8428885010be223043288643d8894b469f09f113e62d841ad803706ae6ddd1501d6e0f641e683c8803b2f6461e4c4d987730d089fd1401a9a35328ab0d4c0a450ffa1ff03e1074b0e781ce8399872f00901cd839b872e008a1cb4668264d10e29918193136516b87f10edf2495492e359c6b48e7e1ad435acf7123364afe35d52358b8e171a01f8ed6a5813b3c8bfcecea38f4b0096083b9178543ce95c92bb188239fc8d94ba7a36646d05fa113a9a5d15102a1c5af8a8a15122bed22726470ec4619d25024a110821dd03b987700ede212520c18602f088990c2ba53546d29be82ada1954a26945528b251815e82bd857a8af215dc32e10a12540489a737cd7fa2b536001e883d087b10f481e8c01b07a50f4c1ea10a3012b025405480a88107031a8e9c8ec118f43ee45a128ca51a4a5e9068bdd97ba44da5ee53541b0635488afcd51a37634a231e063b8c8818f431e40100c7d18fc42910c724ea49d61df83c7878e06500c9c195234126cc89acbcaa595490285f4e4fa2d0393c686114f9a1646e895792b11a3445466918d3b0c5218b431646288c50189c9178f65249949b093690b9a4d049a2936526da54912286de525da4c44aa2954d2aa2555433a216cf69a4c14984931525e251049a694312b2200c4a169435287250f49a495812b0a5564aa471c4e3a22cc38ea95e52b2892a05500b3c15692dd441a651806c80d54c9812851f904a30948247025287414ca2996480a20b511fa404880b1015202638fc8172473322a952d2a625504a94953906a20b4463082cc218843008e610d021c1d54491292a1255a4b9491c1b70211047c08f610906901dc249169231246a4c605f84cfc157259a49909325263a4cf497c932d2d9a4ca499c92e924523ed3aa6524911416fa4a0a8d28a282225289e04e41b88370070c0dcc1b9004a06e80dd46cfa5c448d8779c9d122122742266c30c06170c28184d35d059d0b3816b02d585a31a3e25cccc99d522b6688e8ad305a0480c996c4b31dc31b0636086c28d841b1436243218642481c190415602b2479097900f192de03f677251741dc53b8894846c301ef03dc07980f2922b4400771933499832b50585112399b703c82eac0f8262f03fa8cec8eca486491e9241248a5fa1304668d26fa4f349ea93d927ba4b210906640004249b4938926924b2498496292d525b24de49e8938527e2599494696c124f22c324545d4d14894b9296c8cc0cbf233829d, 0xd601ac435846661cf745c89b305f20be317b42f9c3ca003c3810214042f888c10ca1ec83cd079100765ec8c3c989b30ee70151c49d9201d, 0xebc1d743ac87281a7a21c53268cd00e5a0114e7f18823ada5db43ada6980e841f103e187430e7c5d552d117544cea1cb039580460e5c5d2c3a307450e9c1d283a4874c0e7a1ced34d07370e6c8d9439800472e9e8d991b4175e44bc5d74bb72261034, 0xe8c5eb000424df4bb2948d2dca5294cea1cb0395804600920d5839a87342e981ce4ba587420f881f0c3a1873e2eaa9688baa07450e9c1d283a4874c0e7a1cecba7a36646d05d7912f175d028, 0x4dae1a683a0049d0950129ca5ea22c2ea4296052d0a5914ae69b11539a6d14e2437886e8a7235149694d448a7614ea29d053c8a7800466a5452b0c69191231ac6350c8a14f40088e5b8b60396a31b46360c7518de31b80109c94459e724d2ae9c92396c7244d49237a14d0299c5380a6c14d629b52248a3a147028cc5178028146a28d85168026145628b10ef09ee13da27c04f789ec13d627e522009f713ec27f12208a003466931525e250d4a1c280cdbca4bb49829309262254a4aa224510b9832a064e0ca042d0325064c7b5126424c9499e932d26c24da49be0d491a124ec49ce4d95140936646829341268a4d949b695252a9a5544aac95492aaa5614abc94312b0256246e827d44fa0024145c685914f9a184acc31e063b8c8818f431e400f8c7b18f831fce588008466c92c525aa4b649bc946528d257b48c07280e4fa2d0393c69451bb1a5446ee6a011551a7f09428fc825184a4123812943a09753452252e4a5b035806b40d641ae23df06be0d8043d036106c40d8d06d879a0f2200ed37f17b24a5a4e5914193950d4, 0x2bc05770ae6839d245a48c491a9341268a4d849b41104338066f08d251e8a2ca5040fd29080c0425b74b6c96d5201959001a, 0x6760cfa19d033a968644a819f8b5200084b721a291b0168700d, 0x8c61140226162b492a925d24ca49b4938924924ea4b94a3c18a0b16234b28c01190229211000108cd9247a49049229279281845b28d4948ca30a21f020, 0x133f3d8a92f52d9259b4ac42860e4083923da8936126d24df069e4e3119a834a06921e401a4032946824e15136138649cc93b1273a4ed4ac6966817e200c3da6931525e251010b68674dbc80084976930526124c44a94954448a217349a0934526f24d949b695252a9a5544aac95492aaa56149a49581269a50c4ac8931926424c949949339285a50d4a1c943d2b2a4c7499e92f9265a5b3051, 0x2db05b49b144bf897e4d8825f4ccd999f26220b711e6131200d, 0x2606025604a80a90151020e042409ca333231e87dc8b401b8037406e40db80b3465848090fd120301d603a807680ec2252965c894010402060168032806822882501306130e3da07b3cf67130d441c0b8498ea20f1300982c0de01bb038a07100e1920a43f648180dfa3b603829c1406c80d546601f0069b0d350f821664bf225a12fc62004400080910062008402a36d303e89d8c0f1207051, 0x9818095812a02a40544083810902728ccc8c7a1f722d02501306130e3da07b3cf67130d441c0b8498ea20f037806ec0e281c4038648290fd9206020406f40e0a338023 ] def policySharedUnitFixed1HintLeaf82 : PackedNatTable.Table Nat := .leaf #[ 0x4df8992414b8299053007580eb81d816c6076414d21dd053a0a6c967249912c2039407200e101c00370e47809b013a027004c8098012c8e8d319198b33146624cc41987330c6615107a21044220b8098e10e821d687a4876248349be94703e00d361a6a1f042cc97e44b425f8c40088001012200c401080546da607d13b181e4a688cc488f21ed32f89211260a4c24b34931525e24be4b6624f121c01c24e0e95e8966a2c0243a487110592ca05c, 0x7100e281bb0378982c4c0120643f6070c4bea6c412fc25fd38402da05b60b711e6131226220410081805a01a2034806700d82230033138302a925b835806b10d61199873dd1721d9217c82f8c5ed0be70f2800f0e041c0547121d0024e84a8094e52f5116175242c896612d7a4a2127624dc49b092f32928a48cac01c60392072931501c703c48ce891981ed03ce48b125212284b58483931ea32f228803ac07500ed01d844a52cb9128037006e80dc81b701660365198232c240487e8901a1e44976930526124c414c0911c50c8a221446283c5081a3b140027f122089f613ee27d46a5a46913f291004f589ec13de27c04f689ee43bc95985160a2b004c28b451b0a354d862d80e5a8c6d18d831d46378c6e004228b865ca0e54a2e945065e0a5d14be2978527903c36e293e127da5134a2a94592b1a51848908398d39a2a939c495f11c61c94459e724d2ae8a661a8a3510423185b4b4869f453f0a7d150c2a0053f8a83489499045ae1fc449ea93d927ba4fc4ac276f924aa4974ac0359c6b48e7e1ad435acf7123364afe35d52358b8e171a01f8ed6a5813b3c8bfcecea38f4b0096083b9178517442e805d50b9e173e6f2d19a8b9248a62e445c80080376e95c92ba1bcc45846f345d19bce379e61bcc38186e10a2214042f888c10ca2190f62252d1a7c27c44f98b6106b600dc1ab9b77454075b83d9079a0f2200ecbd91879313661dcc34227f45006a68d4ca2ac353029143fe87fc0f841d2c39e073a0e661cbc02426fe2e9e8d991b417e844ea69745440a8716be2a285448afb489c991c3b118674940928526fa4f3496421043ba07730ee01dbc4249990496292d525b24f448306180bc2226430ae94d51b4a6fa15e82bd857a8af215dc32e10a125104a8095452a9a5544aaa8031285a50d4a1c943d2269cdf35fe8ad4d8007a20f421ec43d207a3006c1e943d307a8428c9218095812a02a40544083810902728ccc8c7a1f722d0923d24824914936927124d24964930927928ca51a4a5e9068bdd97ba44da5ee53541b0635488afcd51a37634a231e063b8c8818f431e40100c7d18fc42910c724d049a2937926ca4db49d493ad2caa48142fa727d1681c9e34308a7cd0b23744abc94312b1256434688a8cd231a764af2959449502a8059e0ab496ea20d328c264c37c87070df85c6d12d99b10890111c233846608961c1120a06fd0dfe1bf8818247e08707551244a4a8495692e524706dc084411f023d84241a407709245a48c491a931817e133f055c966926424c9498e933d25f24cb4b66932926724ba49148fb4ea9949244505be9282a34a0e00904c3808994132c26544cb902f41ac227044d88a0113a1bb003506de0dbe2279359a41b315a62b114398ab4a5026602c280774c0a266c30c06170c28184c30da40b4cba035532604a147e4128c252091c094a1d04ba9a291297252d8b0d9614448e66dd04e85a0480c996cad41ee73dcc7b94f7205a62b5888e1168859d0b3816b02d585a31a3e25cc4b31dc30010360c6c10d851b0836286c486430c84903832082ac05648f212f201e325bc77251741dc53b8894846c301ef03dc07980f2922b44007719334998333267548ad9a23a2b4c9a44cdb19b5452e66c8a3aa22028ba667cccd920a277, 0x26544cb09940e021c0120986ff0dfa1c1120a058f0b1266c914b8997205e835929409980b0a01dccdb19b5017, 0x1322877d26fa4ba1a6890102b885840b0434bc2c38d3848ce75a800425da4bb29c08eb38586133266d8eb0959b3ac894d0237846e08d611a8385871420fc404106b89930df21c1c37e0701132826584ca8997205e8358cdaa29733645c6d12d99b14a5034c50a397342e4e51ed11199af03c, 0x32e065b1a2e3458026a66a3a98197432d265c07d2994c8018d091a1020ac416082d211e20b88012654113204e484a0c6518ce3198402236d39188b350b4088f111c2258446880b10729089344184e31388a18c4e85f71010201c2fc15f84b4057dc4b100e601d203a007000e112ca03884b0a5d6128098304c0260b0378481814d01dc03b607600eb81d62446075014ba62f259487fc90e121d43fc4b349871ed03d9e7b38986a20e05c24c7510781bf476c9821315120732f88a5488f112443dc65f5051a3213086610916da0a607e20fcd33386d00d9e1b5836886d346c65bb112c96eb0db01b5c36d06d90838106933585380a6e15b82af055d0052157c2b005614d8c24c049b8936125e6525149194a037607140e201c3052c25c1364998f259248290fda4012aea55d111b954d080640e523f850c401639b47350e691ccc3994731a3963d708bf0f60250a46a814f10ca2495492e945d28a218f0d068fbc224807200e81bec37e07070df21be8eb325271160179803818c44a76229c45308aa115222a0036043331728a20c5c0d304e16162c2c524050b109c2837f103048fc10e0eaa2489495092ad25ca48e0db8108823e047b08483480ee1248b4918923525d248a47da754ca4922282df494151a5089c1136228044e86ec00d41b7836f889e41a696612d7a5314a9295352a79012416698f88130e381c7c38e871c8e3c48e47a38f46a2f841902450dbca4bb498895452a9a5544aaa867442d9ed349829309262a4bc4a20934d28625644018931817e133f4d64266c30c06170c28184c30da40b4cba035532604a147e452d8b0d9614448e66dd2cd24c84992931d267a4be499696cd26524ce4a169435287256549a495812b09014202c40548098e3f205c91cd06a20b4463082d531188fd322a952d2a625504a94953920d98ad31588a1cc5590b70e80127425404a70946129048e04a50e825d4d14894b9297a88b0ba90d601ac435846661cf745c876485f20be317b42f9c3ca003c3810214042f888c10ca2190f62252d1a7c27c44f98b6106b600dc1ab9b77454075b83d9079a0f2200ecbd91879313661dce02a38914cc35146a2084630b69690d3e8a450ffa1ff03e1074b0e781ce8399872f00909bf83d107a10f621e903d180360f4a1e983d42146025604a80a90151020e06351d391d8231e87dc8b425194a3494bd20d17bb2f7489b4bdc876230ce928125088410ee81dcc3b8076f10929060c30178444c8615d29aa3692e9e8d991b417e844ea6974b8d225b2e365a5128fa51220fa38947178e260aa041f11ffa1403cea8bd90a0a35546905bcd2ce96f24d22174d2f005e40bc401c532b85960b309a9c0fa01f303c89c240fd81f603ea25900fc01f7011002180fc81fd467648f114a123b23b29219247a4904922927822d845d08b811641480629478a58b4a34a21b28d40a39339855b432a9665251a5b04a1e944d28aa5164a3048a910123592b46579d1ada66e468c5084b34166a4cac0dc41b8038606e60dc8025037406ea367d2e209823346937d279a4f549ec93dd25908483320002124da49c4934925924c24b1496a92d926f24f449c293f12361de7274488489d0966926a, 0x442148c112022324ce88d0681a1b9072008941cc0226044e7e550e524a5495c93cd25910810c9a8d7d0a48fff413e92a525524ad495e49a510992684686195c32a06530c9e192c32a965c20fe42010dc03c41b3836786ce8d9907620ecd1a21de145d4778d0a4224d449c5968b2816592cb0595cb2896552cac1948b2a166620b697ac833105c20bc4174831a65c20063424684082b105820b4847882e2004994822d845d08b811641480629478a99ccb169469443651a8c91909418ca319c633080446da7231166a168111e223844b088d101620e5211260e0208040c02d006500d003304bb9b7e492893884bd812a02a40544083818d474e47608c7a1f733322d88dbea4e346e44510c27189c450c627509ea13c4276648911f09090b8c647d148096201cc03a407400e001c2259407109614bac250130609804c160a680ee01db03b0075c0eb122303a80a5d31792ca43fe487090ea1fe259a4c38f681ecf3d9c4c3510702e1263a883ccbe2295223c44910f7197d41468c84c21984245b682982fb8808100e17e0afc25a02bee06f090301bf476c9821315120704ee989c2ada33e20ce3460027266a07e20fcd1a31421423e920108a211e4cce1b4036786d60da21b4d1b196ec44b25bac36c06d70db41b6420e041a4cd614e029b856e0abc1574014855f0ac015853630930126e24d849781fb32928a48ca501bb038a07100e1829612e09b240fa896403f007dc044008603f207f519d923c4528663c964920a43f69004aba9574446e5534201903948fe1431005a4a8495694312b20e6d1cd439a47330e651cc6803017e133f4d64266c30c06170c28184c30da40b4cba035532604a147e4128c252091c094a1d04ba9a291297252d8b0d9614448e66dd2cd24c84992933d25f24cb4b669329267250b4a1a94392b2a3963d708bf0f60250a46a814f10ca251049a62304c6924d24a2441f47128e2f1c4c154083e21954a1e8ffd0a01e7545ec85051aaa3482de69674b7926910ba6174803785c4113022b844d0899318022acc5ea53c115a62fd059089c1136228044e86ec00d41b7836f889e4ba2906cc5698ac450e62ad29d88a7114c22a845488a800d6112822626f93c26921409c91d9490c92452cca4a34b609279247a49049249275258a4b5496c929927a234b31728a20c5c18aa318262a4038a6570b2c166135381f403e607900f1807e171a2e386baa46b3dc48cd928ca51a1ad635e46bc0d691ace76f8fe224964930931d27ba4fc4ac22d70db8a4c649ea93d927c24fb4a26958d28c0b5b42947a5c00401584e1892652a6a54f4ad6945528b25174a28952d2a625504a9c95892b52495492e926d24e25604b0096091c79d9d45ce76792bfa5813b5a48a910123592b468d6d3371d37218, 0x45d08b81164148146908b6980814884580b86117822fa68c4d22266c30c06170c28184d35d1614448e66dca37223d28d08cfc4b100e601d203a007000e112ca03884b0a66832f88a5488f112443dc65f4a35221b02d, 0x130800cd00ca0348068a32f006, 0x26db4b760410081805a4e1e036088c114401d603a807680ec2252965c89401b8037406e40db80b301b2035532604a147e4128c252091c094a1d04ba9a291297252d9198232c240487e8901829705320a600eb01d703b02d8c0ec829a4e1c4c3510702e1263a883cf739ee63dca16746618cc20b5656cd16915a60b40901932d95a8413a7b902d305a31a3e25cd2f18972332418f831e86460c8018fc04081fa03f88cecb21a24c2c84664cea915ac44708b440de01bb038a07100e1829612e09b24cc792c9241487ec90301bf476c982131501f403e607900f1807e171a2e386baa46b3dc48cd928ca51a1ad635e46bc0d691ace76f8fe20b5c36e293e127da5134ac694605ada14a3d2e0560cc8249a492c9261258a4f41090668d25aa4b649e693d527b24f74964938527e09824bf49c343bf078f0f1c0ca0193832a46824d99135979518a471d462c0c5a18b231446280c4e48bc7b2926c24da42e69341268a4de49b2936d2a4891436f292ed262254a4aa2954d2aa2555433a216cf69a4c14984931525e251049a694312b2200c498c0bf099f80084b349321264a4c7499e92f9265a5b349949339285a50d4a1c943d2b2a4d24ac295592a924df38e271d11661c7c493295352a7a56b4a2a945928ba5144a9695312a8254e4ac495a924aa497493692712b025804b048e3cecea2e73b3c95fd2c09dad2454880890392cd4580487490e220b259407d44b201f803ee022404382aa05608d0091e2294121, 0x8a18008490a04153481150229e45388a9915222a245350f7a1f0026245b9244097c01e403d007980f94b768e98899999a01a, 0xd1f00084976930526124c410b69349285a50d4a1c428522109fd21be91044fc26f243b885e92b1a55f016, 0x7624cee9bfc399a369005, 0x13da27b90ef2566145828ac0130a2d146c28d51bb1a5113e027bc4f609eb13f2910137e88643d8834f84f889f316c20d7c1b0087a06c20d881b1a0db0f341e4401d97b24a5a4e59141939536ee8a80eb70a30004e9b0c5b01cb518da31b063a8c6f18dc00845171c94459e724d2ae8c7818ee322063d0c79003e31ec63e0c7f396293792bda4603940727d1681c9e14cc35146a2084630b69690d3e8a450ffa1ff03e1074b0e781ce9389872f00901a683a0049d0950129ca5ea22c2ea45d3d1b323682fd089d4d2e8a88150e2d7c5450a8915f6913934d82fc40187b4d288250c4ac89321264a4ca499c942d286a50e4a1e95946568cac00322b31354214c390a923526e24dd49ae935421514484a081b6c23c847808501094dbc24894916923125ca4c149849239262a4bc4e243a8475221d9494c0f0d37c96a708be1184230045805220a3d19f9468443a51b928fa4f41b6236cc6d90db01b7e6df5263a4e349ee93f05ae1b71498c93d527b24f849f694605ada3903c048bacf01a58947303c207838f161e143c240048f0b1e183c34fc825134ac62950d35258a48ea7dfcfbf23043efa3f607eb8fe61fb43f6400a8fdb1fb83f7503fa336496293c46d60d4e1aa635406a8a16a496a92d9279a4f249648e38ebe22e33bf6946528d259148f881b9036a31240d82b7c46488c8118a230cc69a53f11826349269237131ac8a30d738cb941aa826d247a4904922927925d25494a9432f452e0a5b14a629410a51e97001092540ac24974932926d24e254d4a9e95ad28aa5164a2e94512a5a54c4aa095392b1256a46f069a51541ce34af88e31269a349288e889cb7ca5054a8095452a9a5544aaa6c18d5222bf354612851f904a30948247025287412ea68a44a5c94b64dfc685914f9a1815c, 0x1da89a9876b8ed61db23b60534803900107d491811f514d96435886a8ed514787d352d31f4c014, 0x28c451b0a3546ec28c85180027007, 0x52c0a5a14b2295cd3622a74d5229c486f10dd14e46a292d29a8914ec29d453a0a7914f0008cd4a8a5618d232246358c6a16c072d46368c6c18ea31bc63910a2215c42bc85190ad4320322853d00224e2c28e451da37734a872dd0be232642f672511679c934aba31e063b8c8818f431e400f8c7b18f831fce58a57b48c07280e4fa2d0393c7248e5b1c9135248de85340a6714e029b05358a6d48929c545f20be317b42f9c3ca003c381070151c48d601ac43584666085010be223043288643d8834f84f889f316c20d7c1b0087a06c20d881b1a0db4a5a4e59141939536ee8a80eb707b20f341e4401d97b230f2626cc3b9cf745c876485d68bb54b903c207838f161e143c240048f0b1e183c34fc80a5414b8296c5298a5046f069a51541a6a4b1491d4fbf9f7e46087df47508ea443b2929935d838f044c0e60112839027949295253a4a9495492b126424c9499e932d276234324d0884c9e2043b4c00116c22e845c08b20a40314a3c52c5a51a510d946a051c9c503b6876c0eea1db83bb236a2f068994bc10db11b6636c86d80dbf36fa931d2718b5c36e2931927c24fb4a26958d28c0b5b42947a5d2a6a54f4ad6952d2a625504a9c95892b523903c048bacf01a58947306f791c39a80455469fc7ec0fd71fcc3f687ec80151fb63f707eea07f466c93c46d60d4e1aa635406a8a16a49e48e38ebe22e33bf6946528d259148f881b9036a31240d82b7c46488c8118a230cc69a495492e945528b25174a28934d29f88c131a40560cc8249b4938926924b24984962937927a08483346002125aa4b649be93cd27aa4f649ee92c9270a4fc130497e924ca4d246e263591461ae70e781ce9389872f00909bf834d0740093a12a025394bd44585d48ba7a36609428fc825184a4123812943a09753452252e4a5b1a6d162 ] def policySharedUnitFixed1HintLeaf83 : PackedNatTable.Table Nat := .leaf #[ 0xb1e168c9a2c5a48b5316a42c58d91a2be36b82c811c2263815222a4057e8a93152400d4d5622b635562c4c5890b1516282a5456e0ada35c68e00d8f25a8363a2bfc57f0b0116006c3115b9b0b4b802c3c587001b36362c745a40b47163e32cd2310cae195e32b46560019196091846550cab1fac32a06548ca742b43298588001a159a992134e21570010422881a1036207040d400b0acc41c48c710ac25944d502bed2271b0639a69648e6a231139aa6d6515e1b29061, 0x269e19d8748119aa50b4a1a9438e8a0cef3a3e002119b25134a2a94592bc1d1e011, 0x30c46240c4918863fb507a025747804a5d2718c2b185430b46161c4f38a07148e289c4e41148b2ce350c32208e30cc61a20f200109869258266418949170e370e5a48ca7ac4823025d04b8096894da20741e6715d18e9c5602f, 0x112e986482704f009e813c827714fe4b3883f0825904a209a413036906d4083a106c20b943e46908d8d07ca31e41f038c084910911c5479ed1911e840bbc901c2ef85e50bc617a530505e711626310af395e61ba237406e70dcc1b8a00c820b1e1b3c388e442e585ca0b8e171844c08ae11342264c6008ab1136228044e86f10de41c5c38c06f30e2c4304808a1a72e268974b8918ac450e62f529e20b2001094ecc5518c13152573112018a805c, 0x8e0111022184422cf459ecb4096822d069c04a3c145a28b611c422316974972940d2ed25d90af015dc2b9a4032b20948d2dc945c2908520ca411481444211a4a3d2224024, 0x26160ba88d6c46688cc427c17002df88cf4856647519aa48b4918923446b21a94b3096bd25124ed16ba6dc92a425424a88950c48089031204237046d88de485c63ed25fa4ec49f093ed2a0a5454a8c951cc7718ed451c6458c6f95c4447c2424c8fa29031bc177920385df0bca178c2f4a60a0bce22c4c6215e72bcc225c2e585ca0b8e171844c08ae11342264c6008ab317a94f1059253b31546304c5495cc448062a08010832106220b4416082b309220a4801a71b114e62e045688a6115422a4454006b31728a20c5f85ea4810164403d007d089433f4e980e5904bc098012a82544e34090c12282440484090411fa3bc4c3609f8140027f04fa09f013d23c327c88cd925324b825684add10492b811d263f814192c6496892cd260127b24fc881493f929644107ac044e089b1140227437886f20e2e1c6037987162e6c949c38487080e2a1c2938e046208a411902318450089858ad247a490492a0560cc8249a492c9261258a4de49e82120cd18008496a92d926fa4f349ea93d927ba4b249c293f04c125fa492e926524da49c4924927525ca51e0c5058b11a59460443e518422d845d08b811641480292051c8cfca34a21b28d45c9d12e17262e268974b8918ac450e62ad053227d3084610d13e20a30f9, 0x19b0b4d969f2d405a8434406714442894023527012d065a08b40a2242cf651e0b3d1679013, 0x22fa6f10dbe1ecd20d97de4b3296c12980cb941aa826d247a490492292792a4a54a197a738d2be238c1fb03f5c7f30fda1fb200547ed8fdc1fba81fd2788dac1a9c354c6a80d5142d493c91c71d7c45c677ed2c8a47c40dc81b5189206c15be232446408c51186634d29f88c131a493491b898d645186b9c3b6876c0eea1db83bb236a2f068994bc1046108c01160148828f4e3a089c9348cf704900d9832f836906d00f901f1805207cc0fa81f803f2468c5084a0f03673bf00dc41b8038606e60dc8025837606ee0de09dca335491a93a525d24ea49d68f809d193a244244e8527703a0073e0f881d103a100a2014013a027a47864f901d783ae07c20ec01d903c446884f9910b13e549704ad09ee221727b64e64b3693983a523aa07830f051d527c512d51f131ee23dcc7b90f703fe28c24ff90e931d243a447fc0ffd1ff43fc87f98e970016823d04b209a412a3a4074b0e950018003c5d90bb33dfe7bf11cb8bf017de2fd85f90bf117e691645d68bb54b903c207838f161e143c240048f0b1e183c34fc823364a32946852a0a5c14b6294c528237834d28aa0d35258a48ea7dfcfbf23043efa3a8475221d9494c9aec1c78226073008941c813ca494a929d254a4aa49589321264a4cf499693b11a1926844264f106d88db31b6436c06df9b7d498e938c5ae1b71498c93e127da5134ac694605ada14a3d2e92540ac19904934925924c24b149bc93d042419a3496a92d926fa4f349ea93d927ba4b249c293f04c125fa492e926524da49c4a9a953d2b5a5154a2c945d28a254b4a9895412a725624ad48e40f0122eb3c0696251cc1bde470e704d1629c12085411e423c0428084a6de1244a48b491892e5260a4c2491c931525e24d34692511d1139448209234286898d0e1a1801b40041d4145b883dc35f06c00d7e1af41fa26e4083a106c20b943e46905b5d2cf96d8467e51a110e946e172, 0x45d08b81164148146908b6980014884580b86117822f96a7089a9ac51a5a336491e9241248a4ba4a3e51b911e9468467e10eca35221b01d, 0x51f0c6814902924d3f25234b7229c486f10dd14e46a292d29a8914b0296852c8a5734d88a9cd368a7614ea29d053c8a7800466a5452b0c69191231ac6350c8a14f4008938b0a3914768ddcd2a1cb716c072d46368c6c18ea31bc6370021145c72511679c934aba31e063b8c8818f431e400f8c7b18f831fce58a4de4af69180e501c9f45a07278e491cb639226a491bd256714d0299c5380a6c14d629b5224a71517c82f8c5ed0be70f2800f0e041c05471235806b10d61199873dd1721d92175a2ed52e40bc3179091585e59bf54a722f485e88be917a82f4c5eb245737f06fdd1621bf64aee8e20def238735008aa8d3f9a61459c28fc5200aac14822908e41030a268e936526da5d94e041b6cb7ca5050efc1e3c3c70328064e0ca91a0936644d65e5529a0a88150e2d7c5450a894e3012851f914b635488afcd518a4534ba2998d3e8bac4e3c10d8a2888451a8a3510423185b4b48616824f14b40f8a1ff43fe07c20e961cf039d27130e5e012034d0740093a12a025384a30948247025287412ea68a44a5c94bd44585d48ba7a36646d05fa113a97ea109e212842b885606160c30429085410a62a14d4f253215069128d4d1a9d30de61a49a4187230e261c0c37085110a0217c446086510c87b112968d3e13e227cc5b0835b00700d441a91ed449909325267a4cb49d8939d1a11b77454075b83d9079a0f2200ed37f17b230f2626cc3b986844fe8a00c309bdb18b810d421f843e086e317ce42a48d49ae9355271842a08f211e0214042536f09225245a48c49729305261248e498a92f13890f081e0e3c587850f0900123c2c7860f0d3f20944d2b18a5434d4962923a9f7f3efc8c10fbe8fd81fae3f987ed0fd9002a3f6c7ee0fdd40fe8cd9258a4f11b5835386a98d501aa285a925aa4b649e693c9259238e3af88b8cefda5194a34964523e206e40da8c490360adf1192232046288c331a694fc46098d249a48dc4c6b228c35ce32e506aa09b491e9241248a49e497495252a50cbd14b8296c5298a5042947a5d24a8158492e926524da49c4a9a953d2b5a5154a2c945d28a254b4a9895412a725624ad48de0d34a2a839c695f11c624d34692511d11394484a088fb8e4214554432720c6258a9f153c2a6c53f8a80150c29f453f271406744e1000424d049a2935126b24d849b4937126ea70449c4937cd4c22ac35326acd1571c6f34b28abcd2c1a571d2, 0x27001116626843e087b111421f843e8041007e0d40c47a284311c0d511ef138c466a9341268a4de49b20d281a4879006900c9c194085a064a0c99390844217089bc436f87b348365f792cca5b04a60117c230846008b051a110e946e4e243c207838f161e143c240048f0b1e183c34fc825134ac62950d35258a48ea7dfcfbf23043efa3f607eb8fe61fb43f6400a8fdb1fb83f7503fa336496293c46d60d4e1aa635406a8a16a496a92d9279a4f249648e38ebe22e33bf6946528d259148f881b9036a31240d82b7c46488c8118a230cc69a4d34a7e2304c6924d246e263591461ae71972835504da48f4920924524f0629478a58b525d25494a9432f452e0a5b14a629410a51e97001092540ac24974932926d24e254d4a9e95ad28aa5164a2e94512a5a54c4aa095392b1256a46f069a51541ce34af88e311c3145a26ca8a049b3138544d84e19273138d0b1, 0x4cf22b20563801815942b54566801a162032990ad0ca7195232a07eb0cab195432c12308caf195c32cd2310b204ba031751c20cad1fa691ece6aa31139a89648e69a37f35c0734933d214c4aa2954d2aa25554cbe95e061ca45d187630f07f60c3d19189c7d36683a5201891f47fca0991ff63fb87f88ff01fde00285d7a08b4628825d2c98d011a0034080ff820127a292b817e21e74cfc95c92bb233c247e8b5ce998cf017ee30146020bf9180c9c64e8ba2a61a4e756916b245a385070951639d211cb633606700cdc19bc8e34e8222d53d641be837c87070df81bec03a807308645c6d12d971a1b9e38c471905360a6a554527e83fe285614e8aa805342a9e15bc1fe840c08000ffc018002f081250b110c158e49fc5530f431e85083010540160412082685c828103f707ec14cc28285040a128fd428405070a1c8fd8a99a4bb49881480f6525091cc0397c7360e6b1cc47b4d1cb1ebd45fa7ad4a8f040b2a3088d4a1224ff0a7014dc2b7055e0aba00a42af85600ac2562928da4012aea55d111b954d28768d1c5c204424e3c2eb0e4124db4e041b6cb7ca5051484291c5230a40147e28f86340a48149269f92eca5234b7294d12b39a61459c695cd2c22a534b23170e419bdb086c10d421f843e086e317ce42a48d497494111f71c8428aa8864a28832626ca2114c2d042a08f211e0214042536f09225245a48c4982930924724c549788d24a23a22728901278a5a07c52fd4213c425186128b48e193758a6814ce29c05360a6b14da9124d4022aa34fe29d853a8a7414f229e00119a9535248de852c0a5a14b2295c52b0c69191231ac6350b60396a31b46360c7518de31c885110ae215e428c856a190191429e80112716147228ed1bb9a54396e85f1193217b39288b3ce49a55d18f031dc6440c7a18f2007c63d8c7c18fe72c52bda4603940727d1681c9e392472d8e489a6c454e69b453890de21ba29c938a8be417c62f685f3879400787020e02a3891ac035886b08ccc39ee8b90ec90bad176a97207840f071e2c3c2878480091e163c307869f9014a8297052d8a5314a08de0d34a2a834d4962923a9f7f3efc8c10fbe9bde470e6a292d29a8918962a7c54f0a9b35668ab8e37830a10ae2158185830c10a421504298a85353c94c8541a44a14fe2a005430a7d14fc9c5c19d0bc3179091585e59bf54a722f485e88be917a82f4c5eb24572708935126b24d849b40ca51a09bf837ee8b10dfb257747106a611561a9935346a74c379869269061c8c38987030dc2144428085f111821944321ec41a7c27c44f98b6136ee8a80eb707b230f2626cc3b986844fe8a009a38a88150e2d7c5450a894e303f607eb8fe61fb43f6400a8fdb1fb83f7503fa4f11b5835386a98d501aa285a9279238e3af88b8cefda59148f881b9036a31240d86a9115f9aa30efc1e3c3c70328064e0d203c8034906944e3119aa4d049a29365273035447bc0d641ad03580ec6837125c82914e440ebc1d703e107600ec81e2234427cc88589f285ba0bf817ec2dc05b60b6e18c82fe85fe4bc2581512515be2b7e8910ae0053e47f65591287a5110a9c15342ae054f0aa2875d2880adf35ce950129f23562acc88d8ab2955214aa69ac43a9f9449b8937526ba4d54a743a8475221d9494c9aec4cc058500ee66d8447888e112c2234405883948449a3c0a6184e31388a18c4e8db11b6636c86d80dbf472078091759e034b128e602c1858100f098144cd86180c2e1850309a6ba2c28891ccdba09d0b40901932d15a83dce7b98f729ee40b4c56b111c22d10b3a330c66105ab0b4656cd16915a64d22566c50f8a211440287450d237534828a88d210b1742c40425199a49e4a7a231c46488c8118a230cc69a4d34a7e2304c6924d246e2635914618d747068cfc3b6876c0eea1db83bb236a2f068994bc1253646d20d711ef835f06c021e81b0836206c6836c3cd079100765ec9296939645064e549c6938644d84e149b3226b2f2a29986a28d44108c616d2d21a7d148a1ff43fe07c20e961cf039d27130e5e012137f07a20f421ec43d207a3006c1e943d307a82f988cd9243013c02a0053c083010702a20548095097b36fc92144bb80cc4c2a275d21f00d946600e3c1130398044a0e409e524a5494e92a525524ac499e932d276234324d0884c9e206020c6c8d78b2081f203e248dd290063e2c8458e468f89734cda18f432306400c7e020815582af4680590d12619933aa40410081805a4e1e036006aa64c09428fc8a5b111822888dc924a2492493a93885b11b7d498e938c5ae1b71498c93e127da5134a302d6d0a51e97492a0560cc8249a492c9261258a4de49e82120cd1a4b5496c937d279a4f549ec93dd25924e149f826092fd26a703e807cc0f201e34bc80ab89152202492e926524da49c4a9a953d2b5a5154a2c945d28a254b4a9895412a7256a333287dc8c7914543ec45e1247a4904922946528d252f48345eecbdd226d2f721a683a0049d0950129c25184a4123812943a09753452252e4a5ea22c2ea40e48e4080084990932526524ce49da942d2b18a183d8a9c4125ea5b24b369435287250c4ac495912b2974f46cc8da0bf4227534ba9c802ca059746b272e11899c5d38b4988531026603f0, 0x59d198633082d585a31a3e25cccc99d522b668b4935d05a0480c996d33695a80c2618506970615133699540fa01f303c8078c03f0b8d171c35d52359ee2466c946528d0d6b1af235e06b48d673b7c7f11263a56116b86dc526324f849f6944d2b1a51816b68528f4b81583320926924b24984962937927a08483346002125aa4b649be93cd27aa4f649ee92c9270a4fc130497e924ca54d4a9e95ad28aa5164a2e94512a5a54c4aa095392b1256a492a925d24da49c4ac096012c1238f3b3a8b9cecf257f4b0276b491522024cb29a442e9a5e00bc81788038a6570b2c16611ac95a32bce8d6c31e86460c8018fc04081fa03f88cecb21a24c336e8b84b0a15a6089, 0x1386877e0f1e1e38194032706548d049b3226b2f2a3148e3a8c5818b431646288c50189c9178f65249949b093690b9a4d049a2937926ca4db4a922450dbca4bb498895292a8a5534aa895550ce885b3da6930526124c549789441269a50c4ac8803126302fc267e9ac82e9a5e00bc81788038a6570b2c16611ac95a32bce8d6c4cd86180c2e1850309861b481699748ec8008490c923d24824914b32928d2d8249e01aa9930250a3f20946129048e04a50e825d4d14894b9296c586cb0a2247336e966926424c9498e933d25f24cb4b669329267250b4a1a9439287a56549a495812b0a5564aa4937ce389c74459871f13922723082, 0x265103f607f519da659202882d447e9012202c40548098e3f205c91ccc8aa54b4a9895412a5254e41a882d118c20b313261be438386fc2e36896ccd88431086011cc21a1450444a513c224044708ce1198225870448281bf437f86fe206091f821c1d54491292a1255a4b9491c1b70211047c08f610906901dc249169231246a4c605f84cfc15725e44b349321264a4c7499e92f9265a5b34994933925d248a47da754ca4922282df494151a5070048261c044ca0996132a265c817a0d61138226c450089d0dd801a836f06df113c9acd20d98ad31588a1cc55a5281330161403ba605336c66d514b99b228ea8880a2ea72506e20dc01c3037306e401281ba03751b3e97104c119a349be93cd27aa4f649ee92c8424199002b0989cef324b81ace35a473f0d6a1ad67b8919b25194a3495fc6baa46b171c2e3403f01e33b5a9604ecf22ff3b3a8e3d2c025821b3836786ce8d9907620eccf09a485027247652432491493c923d2482492493a92991a21de145d4778c2ada19500109665251a5b04a1e944d28aa5164a30926d24e249a492c9261258a4b5496c937927a24e149f891b0ef393a244244e840f20bab03e09a9d31e899b0c30185c30a06134d74585112399b74d228274f739ee63dca7b902d315ac44708b442ce8cc3198416ac2d18d1f12e6664cea915b345a456982cd859e4cb68d69161922a10d, 0x6c20d8a1b12190c321240e0c820ab015923c84bc8078c96f1dc945d036146c10d833b8600204b32669330694846c301ef03dc07980f2922b44007718ee21dc5022 ] def policySharedUnitFixed1HintLeaf84 : PackedNatTable.Table Nat := .leaf #[ 0xb0f4b808535339264f10b094fd37d0af415ec2bd45790aee15de2bdd1c09aff456a6c005488a9015fa2a4cd5622b6355695a05898b12162a2c5054a9b1e4b506c7457f8afe16022c00d8622b73616997d2bc26864c42336466c0ce019b833791c69d0445aa740d2be903321bc43745391a8a4b4a8374587001b159a992056c8adb1528912d3228afb489c2a245450b5f150e2a213448a3a147028cc5178028146a28d85168026145628b10ef09ee13da27c04f789ec13d627e522009f713ec27f12208a00347695792860a10141e288c5110a1914c0911ce40a50b4a1a94392b29a76348c8a8cd1a256446e827d46a5a469342c8a7cd0c256634a28dd865ca0e54a2e94512b10cbc14ba297c52f0a4f20786dc526324f849f6944d28aa5164ac6946122420e634e68aa4e71257c471869511bb8fd140c81d08baa0ccd17ca8e252dc1cfa199635886b08ccc39ee8b90e7b206514881f103e187430e7c1cf439d87320e60011cba7a3662eaa9688d2e26750e581cac023174b0eb61d783ae87590e5034f443898823ada5db5130976e14fa2a185400a7f150691293208b5c36fa931d271a4f549ec93dd27e254d4a9e2d88dbf09770198016c02f094f12a02544cb6894c129a42590b6255912b2032403180ca01a4034402d0103020898388a2232f32ea65a5149996a00ba261c4c51d5d490a922525424ab491c933469601210240047408e011a47504f35245a48c491a932926703923da89321264a4cf49969341268a4d849b40d486a3a468110222084400887484e220d213234249d8939d276a48a22ac45650f91d5e46e68dc924a2492493a93892a5a54c4aa095384bd99990ee45e14c37987030dc2144428086146e0350486e08704c9a8ca4eb821373ade27c8d0d888b313494b843e087b111421f84420cd11d0233486698cd442e894dc668072d008a1cb839b87364d102190f62252d0f441e843d887a40f4600d83d287a60f508519243012b025405480a88107021204e5199918f43ee45a1247a4904922927928ca51a4a5e9068bdd97ba44da5ee51b29cfe3a008c00e7f988f4508623929c0d3e13e227cc5b0835b006e0d5c3b118674940928526fa4f3496421043ba07730ee01dbc42499900010926d24e249a492c9261258a4b5496c937927a241830c05e1113218574a6a8da4dbba2a03adc61d8c34227f45006a68d4ca2ac35468afcd521b064d508e00d719b1b1d5, 0x36806cf0dac1b44369a3632dd88964e9fa6654cc8940128326614cc6998836c06d70db41b6420e041a4cd614f1336069d0d36135427284e409ae19c90a1a4b94a0e9a442e9a5e00bc81788038a6572bce8d6d291a5b90d201a3c35286a409f013e91a916be44ae5aa929284da46a05a10a77a2312d6e9c951aaa3482de69674b79266e4c12342c6850d131a1c343003680083a828b70ea00d140d801afc35e83f42dae967cea516eb05a, 0x442148c112022324ce88d0681a1b9072008941cc0226044e7e550e50008494a92b925aa4b649e692c9289a5154a2c4204326a35f4292958d28c0fff1b3c36746cc83b107668d10ef0a2ea413e92a525524a64b3492f92d9a4ad495e49a510992684686195c32a06530c9e192c32a965c20fe42012faa148449a8938b2d16502cb25960b2b96512caa5958b331d3704c, 0x21c1d54491292a1255a4b9491c1b70211047c08f610906901dc249169231246a4c605f84cfd2cd24c84992931d267a4be499696cd26524ce497492291f69d53292488a0b7d2505086601b045408a911542298453a654200420c8418882d105820acc2488292006859400424a54a4a9499053227d3084610d13e20a331708a20c5ca34a046, 0xada15b899e03ea241d0f961f3083b87cd20d29a09340268642428c7cbf817f447002b4056a8aca00302b1c56426794d0a2b2c58c23834df42bd057b0af515e42bb865c244d39be6bfd15a9b004cf4850881e87e40fc61f803ef87dd483e9a044408d4748d01e003c6078b0f020d48f6a24d8064c1e3c3c70328064e0ca91a0936644d64d9526d24e746845e5d1349796219e87200959168492292785ab9b6d4a7a231cc6ba5704ae242550b480fd026604c807f80fe135a256d2e3098f335a26104c1898e130c261402b99a6452c6694cbb19c7227a87d089e17fc2ffe89c90748ce93a2493b041e883c107e20f8407805930a689f8c2907420f881f0c3a1873e2eaa9688baa10b04d0e875c56f88c91190231446198d34a7e2304c69237131ac8a30d73a5404a7c918d0c98c7818ee322063d0c79003e31ec63e0c7f39628cd928ca51a4af69180e501c9f45a0727852a0a5c14b6294c528237834d28aa0d3526750e581cac023004906ac1ce439e268442e69341268a4d949b6952448a1b79497693112a525514aa695512aaa19d10b67b4d260a4c2498a92f128824d34a18959100602fc267e9669267a4be499696cd285a50d4a1c943d2b2a4d24ac095852ab25520ec68da51b3174b4cee837125c828e4ce61db43b607750edc1dd91b5178344ca5e0929b0392279a04691d4011c023a34b408f0d2c3aba922525424ab491c26284c3805d00bc253c4a8095132da25304a6909642d895644ac80c900c6032806900d100b4040c082260e10729088c271144465e65d45b21b8432d28a4ccb5005b019825dcdbf249449c425ec095015202a2041c084a333231e87dcccc8b6236fa931d2718b5c36e2931927c24fb4a26958d28c237246e69334eaf22e022b24559243248b4918923526424c949949339276a48a0ffe1ff8406080a1016223444b088e111e9cac82da72a3c26921409ca48f4920924924ea4a60ca459505ada14a3d2e92540ac19904934925924c24b149bc93d042419a3001092d525b24df49e693d527b24f74964938527e09824b88367d236037506e801281b90373070c0dc01b8a6560cb8197432d16682cd459a49d0a2122744779d24ba499493692712a6a54f4ad6945528b25174a28952d2a625504a9c95892b5106620b8417882e90634900845108f189d450c6270c132277303a6b811bf9ae31c9, 0x2b6856e26780fa890743e587cc20ee1f34834a6824d009a19090a31f2fe05fd11c00ad015aa2b2800c0ac7159099e53428acb207a1f903f187e00fbe1f7520fa6812ff85ffd13920e9107a20f041f883e101e0164c29a27e30a41d083e207c30e861cf8baaa5a22ea899d4396072b008c01241ab07390e789a110b9a4d049a2936526da54912286de400424bb49829309262254a4aa2954d2aa2555433a93492b025614aac95483b1a0dc491e9241249249d496292d525b24b949bc94d91b4a3662e966b811bf9ae306b, 0x78f0f1c0ca0193832a42e693792a4891436f295292a8a5534aa895550cea5604ac295592a9234126cc1df90dfa4bb4982930926224d049a2934926ca4db49cc94b073c25c51cf239f10e18008496292d525b24ed4a5694c927a25454a8c95212a125443dbe7b54bcaa26b039, 0x15b42b7133c07d4483a1f2c3e610770f9a41a534126804d0c848518f97f02fe88e005680ad5159400605638ac84cf29a14565903d0fc81f8c3f007df0fba907d39707660ef41de43b2977a44cc5dec73e87281a7a21c46a30cd7436e21b8431886210e621bc3d387a40f621e843d1217419a8334039680450e5c1cdc39b00480e5e1ccc39d073c46cc5d3d1b29cfe2f7289b4bdd1881450461e129b9d74310475b4f7017fc2ffe89c9074883d107820fc41f080f00b20020c29a27e30a41d083e207c30e861cf8baaa5a22ea86b811bf9ae3070, 0x1859d961ac6359109a077e0f1e1e38194032706548d049b3226b2f2a322d3691d940618214883c0d5d1abc859c00424b1496a92d9276a5234a5220384068815102220404092421305689e0c1525b44ba893d12a2a5464a9095092a20a661a8a3510423185b4b4869f45f10bdc17bc2f745ec8be70f2800f0e04245837f87010ec82131426089fc6af88504bbe011c39807320e761cf51b3174f3b228b94c349348056, 0xe5c0118395872c4cea9cbc6698cd619aa33444420883484c22084400887484e73fd16a1d002e961cdc39b00480e5e1ccc39d073c4e601d88c33a4a049422104c2ba53546d22d74db907720ee81dcc3b8076f2f088990bc2a17349a0934526f24d949b6952448a1b794976930526124c44a9495452a9a5544aaa867526925604ac295592a908d63348950c48089031204237046d88de485c73a527024ec49f093ed2a0a5454a8c951cc7718ed451c64584c119a3001092d525b24df49e693d527b24f749641dd83b707750ed81db5396978244ca5e0d1b524e149f88d98ba7a365078, 0x10de21cc431086310dc86dc6a30cd710e234f439407591a941d683ad976e45c45db4eb698823ae861e114107a70f481ec43d087a242e833506698cd619aa33444420883484c22084400887484e73fd16a1d004a6e334039680450e5c1cdc39b00480e5e1ccc39d073c4e601d891b48b5d36e41dc83ba07730ee01dbcbc222642f0a2358cd224e04a862404481890211b8236c46f242e31f692fd2a088e931fc925924c0283258c92d1259a4c04a8a95192a398ee31da8a38c8b0982334693cd25907760edc1dd43b6076d41b899dd3989e13494c93d0867a1c8025645a05ab9b6d4a7a231cc6ba5704ae242550b480fd026604c807f80fe135a256d2e3098f335a26104c1898e130c261402b99a6452c6694cbb19c7227a87d089e08811a8e91a03c0078c0f161e041a91ed449b0936926fa4e746845e5d13497964cf433a4e890392279a04691d4011c023a34b408f0d2c3aba26284c3805d00bc253c4a8095132da25304a6909642d895644ac80c900c6032806900d100b4040c082260e22888cbccba9969452665a802d80cc12ee6df9242a49449c425ec095015202a2041c0c6a3a723b0463d0fb999916c46df5271a4f716b86dc527aa4f649f093ed2b18b5b46e48dcd2669d5e45c045648ab24ed49d89be857a0af615ea2bc85770cb8489a737cd7fa2b5360042c13438a5414b8296c5298a5042947a5d2b5a5624ad48de0d34a2a834d4918d0c987ff0ffc2030405182644ee607458c21d715be232446408c51186634d24aa4974936927128ba5144a7e2304c6901584e502d90dc2032626ca879d2b9257618f031dc6440c7a18f2008063e8c7e2148863927524eb0efc1e3c3c70328064e0ca90b9a4d049a2936526da5564aa48d049b3226b2f2a9655240a17d393e8b40e4f214210729088405888d112c2238447a72b027241a032c065e0cb21940b33a24f42404190831272c0cb6345c68b004d3a98426c4af0946128601585b28b6616ce984d2291b8532c48c9444c88b00bcc01c132b98c4200a82a082d211321a6401080790061a20343d23320a9462e871c27f04fd0a0213fca87a59e2a1c42506328c6718cc20111b69c8c459a85a02fb8808100e17e0afc25a02bee258807300e901d00380070896501c4258533401bf476c98213151207261a8838170931d441e65f114a911e224887b8cbe81bc240c0a680ee01db03b0075c0eb122303a80a5d31791d9490c924524f12ca43fe487090ea1fe259a419c68c004e4cd40fc41f9a7291138226c450089d0dd801a836f06df113c834d2cc25af4a329469298a5494a9a953c80920b34c7c409871c0e3e1c7438e471e24723d1c7a3517c20c812286de525da4c44aa2954d2aa2555433a95812b09014202c40548098e3f205c91cd06a20b4463082d531188fd322a952d2a625504a94953920d98ad31588a1cc5588a7114c22a845488a800d810ccc5ca2883170108ca22045b08ba117022c82900c528f14b169469443651a842d9ed349829309262a4bc49a610c42180473086810e0eaa2489491c1b70211047c08f610906901dc249169231246a4ba49148fb4ea9949244505be9282a34a28a08894a27907d1c4a38bc713055020f88ffd0a01e7545ec85042cb05984d4e8d64ad185380a6e15b82af055d0052157c2b005614d8c24c049b8936125e6525149194a037607140e201c3052c25c136481f512c807e00fb8088010c07e491e2294331e4b2490521fb480255d4aba22372a9a100c81ca47f0a18802d25424ab4a2094312b20e6d1cd439a47330e651cc6803126302fc267e0abc15580820c7e1900323063d4cda07d00f981e44e4e9c980fd81fd467648a9101224c2c868d012cd24c84992931d267a4be499696cd26524ce4a1694352872565472c7ae117e1ec04a148d511a31421423e8e84c4ea2863138613924ca4d246e263591461ae74a8094f91c1a48f4920924924ea4b1496a92d925c828e4ce6156d0ca80084b32928d2d8250f4a26945528b251849bc94d8bc122652f068da9270a4fc46cc5d3d1b29cfe2f7289b4bdd1881310, 0x13922732002, 0x668c00424b5496c937d279a4f549ec93dd25924e149f826092fd273200f, 0xb28165d399a359004, 0x13902735002, 0xcc800084936927124d2496493092c525aa4b649bc93d0424273400e ] def policySharedUnitFixed1HintLeaf85 : PackedNatTable.Table Nat := .leaf #[ 0xac2737002, 0x7c01a6c34d43e085994e665f912d097e3009, 0x18f432306400c7e02040fd01fc4e648cecb21a24c00b, 0x1e970010925539c24974932926d24e254b4a9895352a7a56b00d, 0x1ef43de07bf0f7c17bc04180084e665f8113717df00b, 0x3b6876c0eea1db83bb273446d45e0d132978200a, 0x42949ced28aa5164a2e94512a5a54c4aa095392b1256a00c, 0xdb88008498c93d527b24f849f6944d28aa5164ac694605ada73e00e, 0x5ae273f002, 0x5a70b3c16762ce85a7a73b16a06d94db31b4736946d24da41b6400e, 0x14b8296c5298a504e7c8de0d34a2a8008, 0x1fc40010926d24e24964930931d27aa4f649ee93f12b0a74000d, 0x1192232046288c331a6925524ba49b4938945528b25174a28934d29f88c131a4002139c249949a48dc4c6b228c018, 0x29513a11a6a003, 0x231d3a218d7003, 0x2b7d3a21ae7003 ] def policySharedUnitFixed1HintLeaf86 : PackedNatTable.Table Nat := .leaf #[ 0x7c00f7c1ee8b594e7e8e14a09a215008, 0xf793a41414003, 0x2d793a41b73003, 0x6d88db31b6436c06df9b7d0010931d271a4f549ec93dd27e254b4a9895352a7a740472078091759e03016, 0x7a70f4d1ea43d3c7a827431ea27f08fe19fc13f8e7f18fe29fc000e, 0x3d787b68f611ec000087b10f631ec87fa400423364a3294692a5a54c4aa095a93a08f691ed03db07b58f6a3fc27f88ff31fe43fc67f94ff41fe73fc03d987b38f653fb27f74fed9fda3fb87f7cfef1fd83fae7fb0ff59fea02f, 0x3f607eb8fe61fb43f6400a8fdb1fb83f7503f8008466c92c52788dac1a9c354c6a80d5142d49cdd24aa4974932926d24e24b5496c93cd27924b2471c75f11719dfb4a3294692c8a47c40dc81b5189206c02b, 0x3d7d3a69fd6003, 0x3e793a6a028003, 0xf081e0e3c587850f0900123c2c7860f0d3f20002119b25134a2a945928ca51a4ac69d152c524753efe7df91821f7d019, 0x1f403e607900f1807e171a2e386baa46b3dc4002119b25194a3435ac6bc8d781ad2359cedf2743492a925d24da49c4ac096012c1238f3b3a8b9cecf257f4b0276b49152202025, 0x978c4b919920c7c9ce8b212752007, 0x5a0480c996d3a995a8005, 0x2d18d1f12e69d4ccc99d52006, 0xf7205a64eaa56b111c22d1006, 0x104ea756002 ] def policySharedUnitFixed1HintLeaf87 : PackedNatTable.Table Nat := .leaf #[ 0xb3a16702d605ab4eaa56cd11d15a6008, 0x3dce7b98f72a756004, 0x266c30c06170c28184d35d27584ea8585112399b700b, 0x98153ad27574ea89d653ac2691007, 0xbfc97853ac27544eae9d653ad1605008, 0x3ba75b002, 0x3c275b002, 0x1366a75e002, 0x133016153ae99b6004, 0xb0616053af159b004, 0x2db86320bfa9d7112515be006, 0x2ba2761002, 0x5ba0bf817ec2dc05b64ec456fd12215c0009, 0x2312002119b2486027805400a78106021004e9318a333228a87d88bc248f49209245249a7110208040c02d270f01b003691981118228806e00dd01b9036e02cd196120243f4480c07580ea01da03b131811294b2e44a014b8299053007580eb81d816c6076414d270e261a8838170931d441e9d653ac27544eae06f00dd81c50388070c90521fb240c9ccc0dfa3b6038207180e481ca4c54071c0f00e7412d87b34914a5ac241c0a584b8198f2592481c966a2c0243a487110592ca064, 0x7b1415802aa010e02240fb81f812c807d5364a7524eca8a5091e2340497a96c92cda50d4a1c94312b12564017, 0x50c2766002 ] def policySharedUnitFixed1HintLeaf88 : PackedNatTable.Table Nat := .leaf #[ 0x1c91c8100109321264a4ca499c93b5285a50d4a1c958d3b3a56500e, 0x43a9f940010937126ea4d749aa942d286a50e4a74958d3b3a56500e, 0x1d1200109321264a4cf49969da127625534aa895592a9256b00d, 0x1442288050e8a1a4ecc8dd4d20a2a2008, 0x674a76a002, 0x29553b59a6b003, 0x44c0e60112839027940021252a4a7495292a925624c84992933d265a76849d88d0c9342213014, 0x89d3b71269003, 0xe3d3b713c4003, 0x7390ce51ce23398673a76a19d07440e889d0f3d907b1cf459ec900e, 0x13c485ad263833441b039847310e6b1cd8397c7301533493414391fb05070a1014251fa85040a0a14cc1fb03f70a0485c927f8413082400b0a1d9424446a5460a8f05203d949265262a4bc4a12942cf5aa2fd3d7a8e59267a4cb4a1a943928824e14a1895912700fce40c2957103009e413cc27944f18fcf3b84923526324c849929329267248a120e876d244a48b491892e524723a034188a78d06a55b4ee238112381e521f9a38d53798fc21f8681553a08fbe1bf638086fe8dfe1bfe40047000fbf1f8281507de8de01bd437a46f10de51bce37a07411ef21ce07b0c7c2246d4c4c9afd008a6241f5a3ee87dc80071e463c950260f8d1f183e887c78f8e1f203e847c98f9240523e5500ea58f4ea03e450160f9f1f283e607cb8f96000a000c7978f30403c8c350152590403880b500da01a461c80647d20fa31f543e987d28fa748f480c9187a0311f5637d86fa8df21be237e1237a03d4d40961d34fa6a13c8e7909178a03b4b0c96107440e081c0e1238247849009261250744a6f04eda9da050fa76b348432e506aa09b491e9241248a49e051c92e92a6a54f4a28952d2a625504a9c958865ea74239c695f11c6273d4e9c9d1cf7a222b2948528d1799ef31d1e12202438483090412011f8a6b71d503c187828ea93e2896a8f898e9c180e30346050c0b175a2ed4def2387471670ad1641f041ee23dcc7b90f703fe28c24ff90e931d243a447fc0ffd1ff43fe504c8ffb1fdc3fc47f80fef00142ebd045a314412e964c7f90ff31d2e002d047a096413482547480e961d2a00300078bb2176697213a88bc3179091585e59bf549c69da529c8bd217a22fa45ea0bd317ac915c9c224d449ac936126d24dc49ba85cd26824d149bc936526da54912286de52a525564aa4938926f9bf837ee8b10dfb257747107bfcf7e23971bda37b06f80dee3c7296a4f1c0dd93c489b8535c1496293288a8f7d8fbb1bb037786ed0ddb47247895176a04d3dd68bb8f171e3345de81412c42052462a7930f25a2f240a28158f5722f91c88390c7228e564de8384c7090e341c2a38500088e161c2e3860f390e303d0894487199e871c4479d029d8e241c4638a0713840b3cec8bd0f398e29212442447150dcf1c6238c829b05352aa293f41ff142b0a74554029a154f0ade0ff4206040007fe00c0017840928588860ac724fe2a987a18f429e7b464479e92c2a4713cc0797d17b9e5e1f78396000926f81c1c382537b05380a6e15b82af055d0052157c2b005612b1492c525aa4b6494c946528d251b480255d4aba22372a9a3c7478e0f6f1e3e3c807920f2200083c9c7940f6e3fda3ca87948f2c1e563d607970f2d1e6891d87998f321e7091dc79d9fb44976930526124c44aa2954d2aa25554ac295a93b60f421e823d1c7a20f431e8a86752692560473c7ed91831fb54b168e74fd2a3073f487e8d2c6a74f3f448e711cd9f9d46107e7020a8418082e106c20ea6e44ebe9cd937b869109c2138026e04d709c8139426a869b2df01a78347067c0cf619e033ba6dd4ec2117c230846008b00a4519f9468443a51b8b4422522d529d513ad27394a4c9490b5ba23129de53a511816ab4ec89cf1392a7584ede9dc11a4143e0a7c8fecab20008466c943d288a5134a2a9458aa923474728796d0279eab3d367a6917d205f280, 0x9e242d6931c19a20d81cc239887358e6c1cbe3980a99a49a0a1c8fd828385080a128fd428205050a660fd81fb850242e493fc2098412005850eca1222352a3054782901eca4932931525e24d849b485cd26824d149bc936526da54912286de52a525564aa4937d284a50b3d6a8bf4f5ea396499e932d286a50e4a209385286256449c03f39030a55c40c027904f309e513c63f3cee1248d498c9321264a4ca499c92e9245090743b69225245a48c497292391d01a0c453c68352ada7711c0891c0f290fcd1c6a9bcc7e10fc340aa952d2a625504e823ef86fd8e021bfa37f86ff90011c003efc7e0a0541f7a37806f50de91bc437946f38de81d047bc87381ec31f0891b531326bf40223e347c60fa21f1e3e387c80fa11f263e490148f95403a963d3a80f9140589d3c7cf8f941f303e5c7cb00061e6e3cecfda24bb4982930926225514aa695512aaa5614ad49db07a10f411e8e3d107a18f45433a93492b0239e3f6c8c18fdaa58b473a8079186a02a4b208071016a01b40348c3900c8fab1bec37d46f90df11bf091bd01ea4e34d40961d34fa6a13c8e7909178a03b4b0c96107440e081c0e1238247849009261250744a6e63de888aca5214a345e67bcc7478488090e120c241048047e29adc6f68dec1be037b8f1ca5a93c703764f1226e14d705258a4ca22a3df63eec6ec0dde1bb4376d1c91e2545da8134f75a2ee3c5c78cd177a0504b10814918a9e4c3c968bc9028a0563d5c8be47220e431c8a395937a0e131c2438d070a8e140022385870b8e183ce4946528d0e303d0894487199e871c4479d029d8e241c4638a0713840b3cec8bd0f398e29212442447150dcf1c6238c829b05352aa293f41ff142b0a68553c2b783fd081810001ff8030005e1024a1622182b1c93f8aa61e863d0a79ed1911e7a4b0a91c4f301e5f45ee79787de0e5800249be07070e094dec105420c04170a7c8fecab20008466c943d288a5134a2a9458aa923474728796d0279eab3d367a6917d205f185, 0x110c221047208801104b52866b4e045164a42945a088811c023884462d2e1188229046408c61140226162b491e924124aa4974932926d24e2492493a9478314162c4696518110f94614972940c22d946a4bb497642bc05770aea9d8cac7a4032b2096e4a2e148429065208a40a22108d211a833626aa0d0c1a35381a73808ba117022c829005248cfca34a21b2d4c1a24fa58436086a10fc21f043718be7215245a48c491a935d26a833a2708935126b24d849b4937126ea17349a0934526f24d949b6952448a1b79001092ed260a4c2498895292a8a5534aa895550cea4d24ac095852ab255249c4937d271a4ba47dc7210a2aa21928a2941129196a22cf251e9112145b08b, 0x110c221047208801104b52866b4e045164a42945a088811c023884462d2e1188229046408c61140226162b491e924124aa4974932926d24e2492493a9478314162c4696518110f94614a06116ca3525da4bb215e02bb85754ec6563d20195904b725170a42148329045205110846908d419b135506860d1a9c0d39c045d08b811641480292467e51a510d96a60d127d29246a4bb4982930926224d24914108ca222502086210c023984340870755000424894916923125424ab4972923836e042208f811ec2120428121010a421527740dcc1a3034586762d0e8954b809448451e511ca4922282df494151a51450444a513d28225230d009040b4796a22cf251e9112145b08b, 0x430085f90bd0400868485f21a6040207fc6810d001a029ab13b79d3345ae48fd19e02280454355c6ab022b045808b41420d55048c760813f028004fe09f413e027a47864f900042336496292d525b12b4256e882495c24a649703550ec192833b0e7618ec2926c24d67628ec49d883b08091c12402851a080a1814392bf45b24af8942220645b049a90d1232704b, 0x5b60b70188c2dc85ba2d6c0021252a7544eb09d68348068f0d4a1a9027c04fa46a45af912b96aa4e721af836006bf0d7a0fd0b6ba59f2db09ab435183e500a60f981f503f007e48d18a1096bd4a4a9c9539e25262b808924adfa762031 ] def policySharedUnitFixed1HintLeaf89 : PackedNatTable.Table Nat := .leaf #[ 0x7d20fa31f543e987d28fa748f480c9187a7731e3a3c707b78f1f1e3c004c0009f9d46107e713120fad1f743ee40038f231e4a8e71026203101e, 0x16144cc20d6205e265c4ca899613281c0437e07070df2264d06b99b144b65c6ccd92297336a94a0cdb275d017, 0x41b083a9b913afa7364eee09e91e193e449704ad13bb069109c2138026e04d709c8139426a869b2df01a78347067c0cf619e033ba7754ee45a2112916a94ea89d613ad27644e729c9539e25264a485add11894ef29d288c0b55a3484ef014e8aa805380a6e15b82af055d0052157c2b005612b148cd9258a4b5496c929928ca51a4a369004aba9574446e55347b88f731ee43dc0ff8a3093fe43a4c7490e911ff03ff47fd0ff941323fec7f70ff11fe03fbc0050baf41168c5104ba5931fe43fcc74b800b411e825904d20951d203a5874a800c001e2ec85d99eff3df88e5c7540f061e0a3aa4f8a25aa3e263a706038c0d1814302c5d68bb54b909d445e18bc848ac2f2cdfaa4e34ed294e45e90bd117d22f505e98bd648ae4e1126a24d649b0936926e24dd42e69341268a4de49b2936d2a4891436f295292ab255249c4937cdfc1bf745886fd92bba38837bc8e1d1c59c2b45907c107920f2200083c9c7940f6e3fda3ca87948f2c1e563d607970f2d1e6891d87998f321e7091dc79d9fb4001092ed260a4c2498895452a9a5544aaa95852b5276c1e843d047a38f441e863d150cea4d24ac08e78fdb23063f6a962d1ce9fa5460e7e90fd1a58d4e9e7e891ce143e0f1, 0x2e0213e1198233530b05d446b6177920385df0bca178c2f4a60a0bce22c4c6205ea4810164403d007d2bce579844b85cb0b94171cae622403150116ca351002106420c4416882c1056612441490034c2e9d7d3bb827a47864f9119b24b825689dd834884e109c0137026b84e409ca135434d96f80d3c1a3833e067b0cf019dd3ba968844a45aa53aa27584eb49d9139ca7254e78949929216b7446253bca74a2302d56829913e9842308689f105198de447c24242e30898115c226844c98c0115662f529e08ad317e82c929d88a7114c22a845488a800d61128c5ca288317062a8c6098a9323e8a402df88cf4856647519aa48d085411e423c0428084811ec23e04220db87551244a48b491892a1255a48e087040c123f06fe0dfe1bf43822414089858ad39c24994a3c8d2c38024130e0226504cb0995132e40bd06b089c1136228044e86ec00d41b7836f889e483662b4c562287315694a0cdaa29733648d2928296fa44505248a23a227289018a022e845c08b20a40314a3c52c5a51a510d962c11ac86a525124ed16ba6dc92a425424a88950c48089031204237046d88de485c63ed25fa4ec49f6950447498fe49300a0c9632495492e924924ea4b449720a38bef248f492092452cca5b0493c92e83da18af001096612d7a4c6079c87687ab8f4b1e9091e0798a77a075e0eb81f083b007640f111a213e6442c4f947508ea443b292c525aa4b6494c938d35da7604e6a9cc93b0a7704e6c93d12a5a54c4a9e9d2d2c4a398473e926d24e2496498e9d2927ca5614e98963127c24fa4e92946528d25314a6092cd27aa4f649ee93f126025454a8c951cc7718ed451c6458c6f95c4146, 0x4c2c17511ad88cd119884f911f0909323e8a40c6f05de480e177c2f285e30bd298282f388b1318817a9204059100f401f539a95e72bcc225c2e585ca0b8e171844c08ae11342264c6008ab317a94f045698bf41642270c55a53b114e229845508a9115001ac225044c2c560021247a490492a9ce124ba49949369271249249d49729478314162c469662e514418b831546304c5495cc448062a022d845d08b811641480292467e51a510d946a05c, 0x2e14221844408e011c4223169708c41148232046308a0518110f94614a06116ca3525da4bb215e02bb85734ec2900cac8145c2908520ca411481444211a4a3d222428b6360038707100e1e1c3536c9057421e8cd5245a48c491a10d821a843f087c10dc818247e0dfc1bfc37e870448281130b158008491e924124aa738492e926524da49c4924927525ca51e0c50117422e045905200a4919f9469443658b11a587004826515510c94514a089489291a5b9421c1c3038521110e101c24b9b25270df4423884686fc2e36857112d171a2e4c5c9cb94172a482a5cacedfa386077, 0x110c2210472088011053499459290a5168222047008e21118b4b846208a411902318450089858ad247a490492a925d24ca49b4938924924ea51e0c5058b11a59460443e518525ca50308b651a92ed25d90af015dc2b9a761480656412dc945c2908520ca411481444211a4235066c4d541a18346a7034e70117422e045905200a4919f946944365a98344967800108cd5245a48c491a940928225230d009040b4796a22cf251e9112145b05b, 0x52b0c69191231ac6350b60396a31b46360c7518de31c885110ae215e428c856a190191429e80112716147228ed1bb9a54396e85f1193217b39288b3ce49a55d18f031dc6440c7a18f2007c63d8c7c18fe72c52bda4603940727d1681c9e392472d8e488d273a2e9c653b6a745180c91685fc8c04180a2fdc678271a1d503c187828ea93e2896a8f898f711ee63dc87b81ff146127fc87498e921d223fe07fe8ffa1ff282647fd8fee1fe23fc07f7800a175e822d18a20974b263fc87f98e970016823d04b209a412a3a4074b0e950018003c5d90bb33dfe7bf11cb8bf017de2fd85f90bf117e69164e09a2c53824396c66c0ce019b833791c69d0445aa7ac853890de21ba29c938a8be417c62f685f3879400781cd839b872e008c1cac39626754d9c19b0235070b0e2841f88080d31428e5cd0b9396792e968d94e041c05471235806b10d6119982140430a3701a8235012e9086b3aea2190f621d70426e75bc4f91a1b4a5a94dc445989a4a5c21f043d888a10fc21f4020003e06ac623d142188e4a7034f84f889f316c20d7c1b0087a06c20d881b1a6d34ef24e59141939536ee8a80eb7187639ee8b90ec90bad176a97213a88bc3179091585e59bf54ed294e45e90bd117d22f505e98bd648ae4e1126824d149a8935926c24da49b8937535e03580ec68da533ba0dc4e7a937929b2768112e172c2e505c70b8c573112018a80bbc901c2ef85e50bc617a530505e711626310af38898115c226844c98c0115662f529e20b24a7662a8c6098a92bcc938926f9bf837ee8b10dfb257747103a8475221d949c693d12a5a54c4a9e9d2d2c4a39837bc8e1cd4525a5351232306200c3f187830ec61ca45d39a499e45640ac700302b2856a8acd00342c40653215a194e32a46540fd6195632a86582461195e32b8659a462164097411c20cad1fa691ece6aa31139a89d392c91cd346fe6b8133d214c18bc95452a9a5544aaa997d2bc26214c409980e2d1c5d459472e0121927f04a80954130025e1cb29c6c45398b8115a229845508a9115001acc5ca288317e17a9204059100f401f42250dcf1c6238c829b05352aa293f41ff142b0a74554029a154f0ade0ff4206040007fe00c0017840928588860ac724fe2a987a18f4290491a14344c6870d0c00da750516e20f719fa09141220242048208fd1de261b4ede34046800d0203fe08049e8a4a5495c8cf091fa2d73a6609f8140027f04fa09f095ba209257033dc12403660cbe0da41b403e407c601481f303ea283c0d9cefc24ee07400e7c1f103a207420144028027404f48f0c9f224a649704ad09ee221727b64e64b3693983a5249ec93f22053a601af836006bf0d7a0fd01f983f14d3299592f81665495292a925624b1496a92d9263a4cf499650851a316d74b3e5b6020c041500581048209a1720a040fdc1fb05330a0a1410284a3f50a10141c28723f62a66926925da4c40a407b8421c234a0db65be5282a5092a3c102ca8c2235284893fc29c05370adc15782ae80290abe15802b0a6c84e6614ed20095752ae888dcaa6943b468e400c6848d08105620b0416908f105c40093be05c00b7e233d215991d11ac86a52cc25af494493b45ae9b724a9095092a225431202240c48108dc11b6237921718fb497e93b127c24fb4a8223a4c7f249649300a0c96324b4496693d527b24f749f893012a2a5464a8e63b8c76a28e322c637cae220a34642610cc2122db414c227044d88a0113a1bc437907170e301bcc38b277d0dcc1a3034586762d0e8954b8086860d1a8440229046408c61140226162b492a9ce124ba49949369271249249d4a3c18a0b16234b28c0887ca30a50308b6117422e045905200a4919f9469443651a9291868048205a3cb5306fb00ea01cc219043408e610c0218a77e0cee19e068f06790d1c1a7936a02fc4018931926424c949949339285a56506e20dc01c3037306e4012c1bb037706f04ee519aa48d49d292e927524eb085411e423c0428084a6de1244a48b491892e52472349288e889ca2423e027464e8910913a10a7c8fecab2250f4a22944caa90e601cbe39b07358e623da6930526124c549789435287085b4ef61e883d087b10f481e8c01b07a50f4c1ea0be60008466c04f00a8014f020c45150fb11784a329469297a41a2f765ee913697b9162e8e0c2a7054d0ab8153c2a8a1d742c40425199a486491e9241248a49e4a2a945928a253d4a7e9d1928ba5104e8e950129f23562acc88d8ab2a4d34a1895911cb1ebd45fa7ad53afa7644e729cf13aa27584e4a0ebc1d703e107600ec81e226bb4ec09cd539927614ee09cd91a213e6442c4f94b54a2de2d10513d11294502e268974b8918ac450e62acf582208252c74851639c2538508a9916b1d5a392, 0x17fc2db85b60b70188c2dc85ba4db49dc042da7721d423a910eca4b1496a92d925324e3078693d12a5a54c4a9e9d2d2c4a3980f441e843d887a40f4600d83d287a60f505f3009e0150029e04188a2a1f622f094bd20d17bb2f7489b4bdc8b1742c40424083815102a404a84bda674333287dc8c7a333490c945129ea53f4e8c8e0c7988f4848f03d2c7aba1da4936927124b24c74e9493dc1e718af4b3096bd26324f549ec93e127d27490f6894c527ca5614e9896311cf853e47f65591287a5110a9c15342ae054f0aa299cd1ab1566446c5595289a5154a2c55493af83af075c0f841d803b24df25a9d19b251f4e6e8d109f3221627ca9d85392a7584e789ce53aa06df0f66906cbef0008491e9241248a5994b60927814724ba4a329469298045f08c2118022c0291467e51a110e946e2b808924adf95be0c009d70b03a2450ab, 0x20dc491e9241249249d496292d525b24b94f009cf526f253600d, 0x1d8d3c0a369003, 0x99dd3c0a768003, 0x1ab2782002, 0x45d08b8116414802924f008cfca34a21b009, 0x18a13c2962c003, 0x44c2c560021247a490492a9ce124ba49949369271249249d497294793c3234b011 ] def policySharedUnitFixed1HintLeaf90 : PackedNatTable.Table Nat := .leaf #[ 0x2252787002, 0x481890211b8236c46f242e31f692fd27624f849f6950447498fe492c926014192c60010923d2482495492e926d24e2492493a92d125ca780496693d527b24f749f893012a2a5464a8e63b8c76a28e02a, 0x17a9204059100f401f53c42735007, 0x114c22a845488a800d69e20c5ca288008, 0x229d3c598b8003, 0x22b53c598bf003, 0x1b7c36f006a0dd82274450089b4d9e9e313c6a78a0e841f103e187430e7c5d552d117544f0699d4396072b008c01253c207390e788d98ba5883d107820fc41f080f00b29a1139ea17349a0934526f24d949b6952448a1b794976930526124c44a9495452a9a5544aaa867526925604aac95493c1083948446138c29a27e30a41ffc3ff080c1014202c4468896111c223d3bfa780313a8a18c4e182644ee607514398ac113c62bd2cc25af498c0f390ed0f571e963d2123c0f314ef43a8475221d949c636681da1de24a9695312a7a74b4b128e603d107a10f621e903d180360f4a1e983d417cc027805400a7810602108ccc8a2a1f622f094bd20d17bb2f7489b4bdc8b1742c4784c1d983b11b3237046cd8fff413c929525ba4f3496493f13a0209f45d877851a224854924927527a2486491e9241248a49e4a2a945928a253d4a7e9d191c1854e0a9a15702a785514c4e09d89f20008466c92c525aa4b6494c92e139c23562acc88d8ab2a39f4936927124b24c749ea93d93a524f749f295853a6258c49f093e93a4a5194a3494c520d98ad0d7, 0x4cea1cb0395804600929e1039c873c46cc5d2d36787420f881f0c3a1873e2eaa9688baa2783107a20f041f883e101e0165342273d06520d203c8034906944e3126824d149bc9365273035447bc0d641ad035806b88f7c1af836010f40d841b103634da61b6cb7c85c00b7e233d215991d49d89e192a088d643529cc92cc25af494493b45ae9b724a9095092a225434a8a95192a389014f126458c6f95c44f14116ca35045208c8118c228278728c0887ca30a78d4ec09d85399a78c4ef22270c55939645064e549c6938644d84e151a0a78210729088c27185344fc61483ff87fe10182028405888d112c2238447a77f0210784c1d983b11b3237046cd8fff413c929525ba4f349ea93d927ba4b249f89d0104fa2ec3bc28d11242a48f4920924924ea4f446666275143189c304c89dcc0e889b1140227437886f20e2e1c6037987164efa1b98346068b0cec5a1d12a97010d0c1a35381868048205a3d3c296a60df601d40398432086811cc21804314efc19dc33c0d1e0cf21a3834f16f84ea89d613ad27644e729c9539e25260d36135427284e409ae137034f84dd0d229ddc13d23c325689dd81f983f14d3299581b88370070c0dcc1b9004b06ec0ddc1bc13b9466a9235274a4ba49d493ac215047908f010a02129b784912922d24624b9491c8d24a23a22728908f809d193a244244e852f81665495292a925602fc4018931926424c949949339285a565498e933d265a7704ebe14e029b856e0abc1574014855f0ac01584ac525194a34946d20095752ae888dcaa6853e47f65591287a5110a9c15342ae054f0aa2989c13b13e4466c92c525aa4b6494c92e139c23562acc88d8ab2a5134a2a9458aa927361cc0397c7360e6b1cc47b4c00424c14984931525e250d4a1c944042da78e49a694312b223963d7a8bf4f5a9421468c5aad12b14e929de88c4b5ba5242d528b78b442780289e8894a28171344ba5c48c562287178, 0x1d903b007c20eb81d7a78f27ca88589f3234400a, 0x223d35da7604e6a9cc93b0a7704e6c0f113c8189d00b, 0x41ca4221016223444b088e4f228a18c4e184e00a, 0x4470896111a202c405080c0ffc1ffd367a78c4f1a9e283a107c40f861d0c39f17554b445d513c1a6750e581cac02300494f081ce439e23662e9620f441e083f107c203c02c800830a689f8c29089b11402274376006a0dbc1b7c44f25d14f209cdd20d98ad31588a1cc0ea277304c6271143279103e, 0x14cc211042388464f26616d2d19a7d008, 0x203840688151022204040924214f2660ad13c182a00b, 0x5f3879400781cd839b87310e761cf53c9a3662e9e9e091b29c0800e, 0x21413378bda4f2c9e513c92795007 ] def policySharedUnitFixed1HintLeaf91 : PackedNatTable.Table Nat := .leaf #[ 0x357d3cb9d91003, 0xc8b420e002126fa5234a529e553c925b44ba89e505f10bdc17bc2f745eca7974f2c9160dfe1c04015, 0x6180c2cecb0d631ac884c89c6233549a0934526c834a06921e401a403294d089e093c9279346824e15136138649cc939ceca134810a441e06ae8d5e3b2e002119b24b1496a92d939ea4de4f327641098a13044fe9e611729869030 ] def policySharedUnitFixed1HintTable : PackedNatTable.Table Nat := (.branch 0x2e0 ((.branch 0x170 ((.branch 0xb0 ((.branch 80 ((.branch 32 ((.branch 16 (policySharedUnitFixed1HintLeaf0) (policySharedUnitFixed1HintLeaf1))) ((.branch 16 (policySharedUnitFixed1HintLeaf2) ((.branch 16 (policySharedUnitFixed1HintLeaf3) (policySharedUnitFixed1HintLeaf4))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf5) ((.branch 16 (policySharedUnitFixed1HintLeaf6) (policySharedUnitFixed1HintLeaf7))))) ((.branch 16 (policySharedUnitFixed1HintLeaf8) ((.branch 16 (policySharedUnitFixed1HintLeaf9) (policySharedUnitFixed1HintLeaf10))))))))) ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf11) ((.branch 16 (policySharedUnitFixed1HintLeaf12) (policySharedUnitFixed1HintLeaf13))))) ((.branch 16 (policySharedUnitFixed1HintLeaf14) ((.branch 16 (policySharedUnitFixed1HintLeaf15) (policySharedUnitFixed1HintLeaf16))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf17) ((.branch 16 (policySharedUnitFixed1HintLeaf18) (policySharedUnitFixed1HintLeaf19))))) ((.branch 16 (policySharedUnitFixed1HintLeaf20) ((.branch 16 (policySharedUnitFixed1HintLeaf21) (policySharedUnitFixed1HintLeaf22))))))))))) ((.branch 0xb0 ((.branch 80 ((.branch 32 ((.branch 16 (policySharedUnitFixed1HintLeaf23) (policySharedUnitFixed1HintLeaf24))) ((.branch 16 (policySharedUnitFixed1HintLeaf25) ((.branch 16 (policySharedUnitFixed1HintLeaf26) (policySharedUnitFixed1HintLeaf27))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf28) ((.branch 16 (policySharedUnitFixed1HintLeaf29) (policySharedUnitFixed1HintLeaf30))))) ((.branch 16 (policySharedUnitFixed1HintLeaf31) ((.branch 16 (policySharedUnitFixed1HintLeaf32) (policySharedUnitFixed1HintLeaf33))))))))) ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf34) ((.branch 16 (policySharedUnitFixed1HintLeaf35) (policySharedUnitFixed1HintLeaf36))))) ((.branch 16 (policySharedUnitFixed1HintLeaf37) ((.branch 16 (policySharedUnitFixed1HintLeaf38) (policySharedUnitFixed1HintLeaf39))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf40) ((.branch 16 (policySharedUnitFixed1HintLeaf41) (policySharedUnitFixed1HintLeaf42))))) ((.branch 16 (policySharedUnitFixed1HintLeaf43) ((.branch 16 (policySharedUnitFixed1HintLeaf44) (policySharedUnitFixed1HintLeaf45))))))))))))) ((.branch 0x170 ((.branch 0xb0 ((.branch 80 ((.branch 32 ((.branch 16 (policySharedUnitFixed1HintLeaf46) (policySharedUnitFixed1HintLeaf47))) ((.branch 16 (policySharedUnitFixed1HintLeaf48) ((.branch 16 (policySharedUnitFixed1HintLeaf49) (policySharedUnitFixed1HintLeaf50))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf51) ((.branch 16 (policySharedUnitFixed1HintLeaf52) (policySharedUnitFixed1HintLeaf53))))) ((.branch 16 (policySharedUnitFixed1HintLeaf54) ((.branch 16 (policySharedUnitFixed1HintLeaf55) (policySharedUnitFixed1HintLeaf56))))))))) ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf57) ((.branch 16 (policySharedUnitFixed1HintLeaf58) (policySharedUnitFixed1HintLeaf59))))) ((.branch 16 (policySharedUnitFixed1HintLeaf60) ((.branch 16 (policySharedUnitFixed1HintLeaf61) (policySharedUnitFixed1HintLeaf62))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf63) ((.branch 16 (policySharedUnitFixed1HintLeaf64) (policySharedUnitFixed1HintLeaf65))))) ((.branch 16 (policySharedUnitFixed1HintLeaf66) ((.branch 16 (policySharedUnitFixed1HintLeaf67) (policySharedUnitFixed1HintLeaf68))))))))))) ((.branch 0xb0 ((.branch 80 ((.branch 32 ((.branch 16 (policySharedUnitFixed1HintLeaf69) (policySharedUnitFixed1HintLeaf70))) ((.branch 16 (policySharedUnitFixed1HintLeaf71) ((.branch 16 (policySharedUnitFixed1HintLeaf72) (policySharedUnitFixed1HintLeaf73))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf74) ((.branch 16 (policySharedUnitFixed1HintLeaf75) (policySharedUnitFixed1HintLeaf76))))) ((.branch 16 (policySharedUnitFixed1HintLeaf77) ((.branch 16 (policySharedUnitFixed1HintLeaf78) (policySharedUnitFixed1HintLeaf79))))))))) ((.branch 96 ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf80) ((.branch 16 (policySharedUnitFixed1HintLeaf81) (policySharedUnitFixed1HintLeaf82))))) ((.branch 16 (policySharedUnitFixed1HintLeaf83) ((.branch 16 (policySharedUnitFixed1HintLeaf84) (policySharedUnitFixed1HintLeaf85))))))) ((.branch 48 ((.branch 16 (policySharedUnitFixed1HintLeaf86) ((.branch 16 (policySharedUnitFixed1HintLeaf87) (policySharedUnitFixed1HintLeaf88))))) ((.branch 16 (policySharedUnitFixed1HintLeaf89) ((.branch 16 (policySharedUnitFixed1HintLeaf90) (policySharedUnitFixed1HintLeaf91)))))))))))))) def policySharedUnitFixed1Hints (i : Nat) : List Nat := policyFixedHintDecode (policySharedUnitFixed1HintTable.get 0 (i - 0x21e8)) def policySharedUnitFixed1_root_empty : policySharedUnitFixed1Db 0x279a = [] := by decide +kernel end Bounty end PolicySubmissionPart56 /- Component PolicyBitsetBatch; SHA256 d823e5d2e4dd6ccfe7af5540e6aef9bbc36157ff744622d7cdcb2b838678d93f. -/ section PolicySubmissionPart57 /- Bounded finite batches of the proved Boolean propagation checker. -/ namespace Bounty def policyBitActionIntervalGood (db : Nat → List Int) (hints : Nat → List Nat) (lo hi : Nat) : Bool := (List.range' lo (hi - lo)).all (fun i => policyBitActionGood db i (hints i)) def policyBitActionIntervalGood_sound db hints lo hi (h : policyBitActionIntervalGood db hints lo hi = true) : ∀ i, lo ≤ i → i < hi → policyBitActionGood db i (hints i) = true := by simp only [policyBitActionIntervalGood, List.all_eq_true] at h intro i hli hih apply h i rw [List.mem_range'] exact ⟨i - lo, by omega, by omega⟩ end Bounty end PolicySubmissionPart57 /- Component PolicySharedUnitFixedTrace0; SHA256 d880cf80779e5d0325db75d6b15c4f9d264573f65319c52320ec465fb3a34c55. -/ section PolicySubmissionPart58 /- Complete ordinary kernel replay with shared units and fixed15 hints. -/ namespace Bounty def policySharedUnitFixed0Check (lo hi : Nat) : Bool := policyBitActionIntervalGood policySharedUnitFixed0Db policySharedUnitFixed0Hints lo hi def policySharedUnitFixed0_check9009 : policySharedUnitFixed0Check 0x2331 0x2351 = true := by decide +kernel def policySharedUnitFixed0_range9009_9041 : ∀ i, 0x2331 ≤ i → i < 0x2351 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9009 def policySharedUnitFixed0_check9041 : policySharedUnitFixed0Check 0x2351 0x2371 = true := by decide +kernel def policySharedUnitFixed0_range9041_9073 : ∀ i, 0x2351 ≤ i → i < 0x2371 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9041 def policySharedUnitFixed0_check9073 : policySharedUnitFixed0Check 0x2371 0x2391 = true := by decide +kernel def policySharedUnitFixed0_range9073_9105 : ∀ i, 0x2371 ≤ i → i < 0x2391 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9073 def policySharedUnitFixed0_check9105 : policySharedUnitFixed0Check 0x2391 0x23b1 = true := by decide +kernel def policySharedUnitFixed0_range9105_9137 : ∀ i, 0x2391 ≤ i → i < 0x23b1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9105 def policySharedUnitFixed0_check9137 : policySharedUnitFixed0Check 0x23b1 0x23d1 = true := by decide +kernel def policySharedUnitFixed0_range9137_9169 : ∀ i, 0x23b1 ≤ i → i < 0x23d1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9137 def policySharedUnitFixed0_check9169 : policySharedUnitFixed0Check 0x23d1 0x23f1 = true := by decide +kernel def policySharedUnitFixed0_range9169_9201 : ∀ i, 0x23d1 ≤ i → i < 0x23f1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9169 def policySharedUnitFixed0_check9201 : policySharedUnitFixed0Check 0x23f1 0x2411 = true := by decide +kernel def policySharedUnitFixed0_range9201_9233 : ∀ i, 0x23f1 ≤ i → i < 0x2411 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9201 def policySharedUnitFixed0_check9233 : policySharedUnitFixed0Check 0x2411 0x2431 = true := by decide +kernel def policySharedUnitFixed0_range9233_9265 : ∀ i, 0x2411 ≤ i → i < 0x2431 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9233 def policySharedUnitFixed0_check9265 : policySharedUnitFixed0Check 0x2431 0x2451 = true := by decide +kernel def policySharedUnitFixed0_range9265_9297 : ∀ i, 0x2431 ≤ i → i < 0x2451 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9265 def policySharedUnitFixed0_check9297 : policySharedUnitFixed0Check 0x2451 0x2471 = true := by decide +kernel def policySharedUnitFixed0_range9297_9329 : ∀ i, 0x2451 ≤ i → i < 0x2471 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9297 def policySharedUnitFixed0_check9329 : policySharedUnitFixed0Check 0x2471 0x2491 = true := by decide +kernel def policySharedUnitFixed0_range9329_9361 : ∀ i, 0x2471 ≤ i → i < 0x2491 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9329 def policySharedUnitFixed0_check9361 : policySharedUnitFixed0Check 0x2491 0x24b1 = true := by decide +kernel def policySharedUnitFixed0_range9361_9393 : ∀ i, 0x2491 ≤ i → i < 0x24b1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9361 def policySharedUnitFixed0_check9393 : policySharedUnitFixed0Check 0x24b1 0x24d1 = true := by decide +kernel def policySharedUnitFixed0_range9393_9425 : ∀ i, 0x24b1 ≤ i → i < 0x24d1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9393 def policySharedUnitFixed0_check9425 : policySharedUnitFixed0Check 0x24d1 0x24f1 = true := by decide +kernel def policySharedUnitFixed0_range9425_9457 : ∀ i, 0x24d1 ≤ i → i < 0x24f1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9425 def policySharedUnitFixed0_check9457 : policySharedUnitFixed0Check 0x24f1 0x2511 = true := by decide +kernel def policySharedUnitFixed0_range9457_9489 : ∀ i, 0x24f1 ≤ i → i < 0x2511 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9457 def policySharedUnitFixed0_check9489 : policySharedUnitFixed0Check 0x2511 0x2531 = true := by decide +kernel def policySharedUnitFixed0_range9489_9521 : ∀ i, 0x2511 ≤ i → i < 0x2531 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9489 def policySharedUnitFixed0_check9521 : policySharedUnitFixed0Check 0x2531 0x2551 = true := by decide +kernel def policySharedUnitFixed0_range9521_9553 : ∀ i, 0x2531 ≤ i → i < 0x2551 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9521 def policySharedUnitFixed0_check9553 : policySharedUnitFixed0Check 0x2551 0x2571 = true := by decide +kernel def policySharedUnitFixed0_range9553_9585 : ∀ i, 0x2551 ≤ i → i < 0x2571 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9553 def policySharedUnitFixed0_check9585 : policySharedUnitFixed0Check 0x2571 0x2591 = true := by decide +kernel def policySharedUnitFixed0_range9585_9617 : ∀ i, 0x2571 ≤ i → i < 0x2591 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9585 def policySharedUnitFixed0_check9617 : policySharedUnitFixed0Check 0x2591 0x25b1 = true := by decide +kernel def policySharedUnitFixed0_range9617_9649 : ∀ i, 0x2591 ≤ i → i < 0x25b1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9617 def policySharedUnitFixed0_check9649 : policySharedUnitFixed0Check 0x25b1 0x25d1 = true := by decide +kernel def policySharedUnitFixed0_range9649_9681 : ∀ i, 0x25b1 ≤ i → i < 0x25d1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9649 def policySharedUnitFixed0_check9681 : policySharedUnitFixed0Check 0x25d1 0x25f1 = true := by decide +kernel def policySharedUnitFixed0_range9681_9713 : ∀ i, 0x25d1 ≤ i → i < 0x25f1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9681 def policySharedUnitFixed0_check9713 : policySharedUnitFixed0Check 0x25f1 0x2611 = true := by decide +kernel def policySharedUnitFixed0_range9713_9745 : ∀ i, 0x25f1 ≤ i → i < 0x2611 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9713 def policySharedUnitFixed0_check9745 : policySharedUnitFixed0Check 0x2611 0x2631 = true := by decide +kernel def policySharedUnitFixed0_range9745_9777 : ∀ i, 0x2611 ≤ i → i < 0x2631 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9745 def policySharedUnitFixed0_check9777 : policySharedUnitFixed0Check 0x2631 0x2651 = true := by decide +kernel def policySharedUnitFixed0_range9777_9809 : ∀ i, 0x2631 ≤ i → i < 0x2651 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9777 def policySharedUnitFixed0_check9809 : policySharedUnitFixed0Check 0x2651 0x2671 = true := by decide +kernel def policySharedUnitFixed0_range9809_9841 : ∀ i, 0x2651 ≤ i → i < 0x2671 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9809 def policySharedUnitFixed0_check9841 : policySharedUnitFixed0Check 0x2671 0x2691 = true := by decide +kernel def policySharedUnitFixed0_range9841_9873 : ∀ i, 0x2671 ≤ i → i < 0x2691 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9841 def policySharedUnitFixed0_check9873 : policySharedUnitFixed0Check 0x2691 0x26b1 = true := by decide +kernel def policySharedUnitFixed0_range9873_9905 : ∀ i, 0x2691 ≤ i → i < 0x26b1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9873 def policySharedUnitFixed0_check9905 : policySharedUnitFixed0Check 0x26b1 0x26d1 = true := by decide +kernel def policySharedUnitFixed0_range9905_9937 : ∀ i, 0x26b1 ≤ i → i < 0x26d1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9905 def policySharedUnitFixed0_check9937 : policySharedUnitFixed0Check 0x26d1 0x26f1 = true := by decide +kernel def policySharedUnitFixed0_range9937_9969 : ∀ i, 0x26d1 ≤ i → i < 0x26f1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9937 def policySharedUnitFixed0_check9969 : policySharedUnitFixed0Check 0x26f1 0x2711 = true := by decide +kernel def policySharedUnitFixed0_range9969_10001 : ∀ i, 0x26f1 ≤ i → i < 0x2711 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check9969 def policySharedUnitFixed0_check10001 : policySharedUnitFixed0Check 0x2711 0x2731 = true := by decide +kernel def policySharedUnitFixed0_range10001_10033 : ∀ i, 0x2711 ≤ i → i < 0x2731 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10001 def policySharedUnitFixed0_check10033 : policySharedUnitFixed0Check 0x2731 0x2751 = true := by decide +kernel def policySharedUnitFixed0_range10033_10065 : ∀ i, 0x2731 ≤ i → i < 0x2751 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10033 def policySharedUnitFixed0_check10065 : policySharedUnitFixed0Check 0x2751 0x2771 = true := by decide +kernel def policySharedUnitFixed0_range10065_10097 : ∀ i, 0x2751 ≤ i → i < 0x2771 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10065 def policySharedUnitFixed0_check10097 : policySharedUnitFixed0Check 0x2771 0x2791 = true := by decide +kernel def policySharedUnitFixed0_range10097_10129 : ∀ i, 0x2771 ≤ i → i < 0x2791 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10097 def policySharedUnitFixed0_check10129 : policySharedUnitFixed0Check 0x2791 0x27b1 = true := by decide +kernel def policySharedUnitFixed0_range10129_10161 : ∀ i, 0x2791 ≤ i → i < 0x27b1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10129 def policySharedUnitFixed0_check10161 : policySharedUnitFixed0Check 0x27b1 0x27d1 = true := by decide +kernel def policySharedUnitFixed0_range10161_10193 : ∀ i, 0x27b1 ≤ i → i < 0x27d1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10161 def policySharedUnitFixed0_check10193 : policySharedUnitFixed0Check 0x27d1 0x27f1 = true := by decide +kernel def policySharedUnitFixed0_range10193_10225 : ∀ i, 0x27d1 ≤ i → i < 0x27f1 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10193 def policySharedUnitFixed0_check10225 : policySharedUnitFixed0Check 0x27f1 0x280d = true := by decide +kernel def policySharedUnitFixed0_range10225_10253 : ∀ i, 0x27f1 ≤ i → i < 0x280d → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10225 def policySharedUnitFixed0_check10253 : policySharedUnitFixed0Check 0x280d 0x2821 = true := by decide +kernel def policySharedUnitFixed0_range10253_10273 : ∀ i, 0x280d ≤ i → i < 0x2821 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10253 def policySharedUnitFixed0_check10273 : policySharedUnitFixed0Check 0x2821 0x283a = true := by decide +kernel def policySharedUnitFixed0_range10273_10298 : ∀ i, 0x2821 ≤ i → i < 0x283a → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10273 def policySharedUnitFixed0_check10298 : policySharedUnitFixed0Check 0x283a 0x2845 = true := by decide +kernel def policySharedUnitFixed0_range10298_10309 : ∀ i, 0x283a ≤ i → i < 0x2845 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10298 def policySharedUnitFixed0_check10309 : policySharedUnitFixed0Check 0x2845 0x2865 = true := by decide +kernel def policySharedUnitFixed0_range10309_10341 : ∀ i, 0x2845 ≤ i → i < 0x2865 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10309 def policySharedUnitFixed0_check10341 : policySharedUnitFixed0Check 0x2865 0x2885 = true := by decide +kernel def policySharedUnitFixed0_range10341_10373 : ∀ i, 0x2865 ≤ i → i < 0x2885 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10341 def policySharedUnitFixed0_check10373 : policySharedUnitFixed0Check 0x2885 0x28a5 = true := by decide +kernel def policySharedUnitFixed0_range10373_10405 : ∀ i, 0x2885 ≤ i → i < 0x28a5 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10373 def policySharedUnitFixed0_check10405 : policySharedUnitFixed0Check 0x28a5 0x28c5 = true := by decide +kernel def policySharedUnitFixed0_range10405_10437 : ∀ i, 0x28a5 ≤ i → i < 0x28c5 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10405 def policySharedUnitFixed0_check10437 : policySharedUnitFixed0Check 0x28c5 0x28e5 = true := by decide +kernel def policySharedUnitFixed0_range10437_10469 : ∀ i, 0x28c5 ≤ i → i < 0x28e5 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10437 def policySharedUnitFixed0_check10469 : policySharedUnitFixed0Check 0x28e5 0x2904 = true := by decide +kernel def policySharedUnitFixed0_range10469_10500 : ∀ i, 0x28e5 ≤ i → i < 0x2904 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed0_check10469 def policySharedUnitFixed0_all_checked : ∀ i, 0x2331 ≤ i → i < 0x2904 → policyBitActionGood policySharedUnitFixed0Db i (policySharedUnitFixed0Hints i) = true := (policyIntervalJoin _ 0x2331 0x2631 0x2904 (policyIntervalJoin _ 0x2331 0x24b1 0x2631 (policyIntervalJoin _ 0x2331 0x23f1 0x24b1 (policyIntervalJoin _ 0x2331 0x2391 0x23f1 (policyIntervalJoin _ 0x2331 0x2351 0x2391 policySharedUnitFixed0_range9009_9041 (policyIntervalJoin _ 0x2351 0x2371 0x2391 policySharedUnitFixed0_range9041_9073 policySharedUnitFixed0_range9073_9105)) (policyIntervalJoin _ 0x2391 0x23b1 0x23f1 policySharedUnitFixed0_range9105_9137 (policyIntervalJoin _ 0x23b1 0x23d1 0x23f1 policySharedUnitFixed0_range9137_9169 policySharedUnitFixed0_range9169_9201))) (policyIntervalJoin _ 0x23f1 0x2451 0x24b1 (policyIntervalJoin _ 0x23f1 0x2411 0x2451 policySharedUnitFixed0_range9201_9233 (policyIntervalJoin _ 0x2411 0x2431 0x2451 policySharedUnitFixed0_range9233_9265 policySharedUnitFixed0_range9265_9297)) (policyIntervalJoin _ 0x2451 0x2471 0x24b1 policySharedUnitFixed0_range9297_9329 (policyIntervalJoin _ 0x2471 0x2491 0x24b1 policySharedUnitFixed0_range9329_9361 policySharedUnitFixed0_range9361_9393)))) (policyIntervalJoin _ 0x24b1 0x2571 0x2631 (policyIntervalJoin _ 0x24b1 0x2511 0x2571 (policyIntervalJoin _ 0x24b1 0x24d1 0x2511 policySharedUnitFixed0_range9393_9425 (policyIntervalJoin _ 0x24d1 0x24f1 0x2511 policySharedUnitFixed0_range9425_9457 policySharedUnitFixed0_range9457_9489)) (policyIntervalJoin _ 0x2511 0x2531 0x2571 policySharedUnitFixed0_range9489_9521 (policyIntervalJoin _ 0x2531 0x2551 0x2571 policySharedUnitFixed0_range9521_9553 policySharedUnitFixed0_range9553_9585))) (policyIntervalJoin _ 0x2571 0x25d1 0x2631 (policyIntervalJoin _ 0x2571 0x2591 0x25d1 policySharedUnitFixed0_range9585_9617 (policyIntervalJoin _ 0x2591 0x25b1 0x25d1 policySharedUnitFixed0_range9617_9649 policySharedUnitFixed0_range9649_9681)) (policyIntervalJoin _ 0x25d1 0x25f1 0x2631 policySharedUnitFixed0_range9681_9713 (policyIntervalJoin _ 0x25f1 0x2611 0x2631 policySharedUnitFixed0_range9713_9745 policySharedUnitFixed0_range9745_9777))))) (policyIntervalJoin _ 0x2631 0x27b1 0x2904 (policyIntervalJoin _ 0x2631 0x26f1 0x27b1 (policyIntervalJoin _ 0x2631 0x2691 0x26f1 (policyIntervalJoin _ 0x2631 0x2651 0x2691 policySharedUnitFixed0_range9777_9809 (policyIntervalJoin _ 0x2651 0x2671 0x2691 policySharedUnitFixed0_range9809_9841 policySharedUnitFixed0_range9841_9873)) (policyIntervalJoin _ 0x2691 0x26b1 0x26f1 policySharedUnitFixed0_range9873_9905 (policyIntervalJoin _ 0x26b1 0x26d1 0x26f1 policySharedUnitFixed0_range9905_9937 policySharedUnitFixed0_range9937_9969))) (policyIntervalJoin _ 0x26f1 0x2751 0x27b1 (policyIntervalJoin _ 0x26f1 0x2711 0x2751 policySharedUnitFixed0_range9969_10001 (policyIntervalJoin _ 0x2711 0x2731 0x2751 policySharedUnitFixed0_range10001_10033 policySharedUnitFixed0_range10033_10065)) (policyIntervalJoin _ 0x2751 0x2771 0x27b1 policySharedUnitFixed0_range10065_10097 (policyIntervalJoin _ 0x2771 0x2791 0x27b1 policySharedUnitFixed0_range10097_10129 policySharedUnitFixed0_range10129_10161)))) (policyIntervalJoin _ 0x27b1 0x2845 0x2904 (policyIntervalJoin _ 0x27b1 0x280d 0x2845 (policyIntervalJoin _ 0x27b1 0x27d1 0x280d policySharedUnitFixed0_range10161_10193 (policyIntervalJoin _ 0x27d1 0x27f1 0x280d policySharedUnitFixed0_range10193_10225 policySharedUnitFixed0_range10225_10253)) (policyIntervalJoin _ 0x280d 0x2821 0x2845 policySharedUnitFixed0_range10253_10273 (policyIntervalJoin _ 0x2821 0x283a 0x2845 policySharedUnitFixed0_range10273_10298 policySharedUnitFixed0_range10298_10309))) (policyIntervalJoin _ 0x2845 0x28a5 0x2904 (policyIntervalJoin _ 0x2845 0x2865 0x28a5 policySharedUnitFixed0_range10309_10341 (policyIntervalJoin _ 0x2865 0x2885 0x28a5 policySharedUnitFixed0_range10341_10373 policySharedUnitFixed0_range10373_10405)) (policyIntervalJoin _ 0x28a5 0x28c5 0x2904 policySharedUnitFixed0_range10405_10437 (policyIntervalJoin _ 0x28c5 0x28e5 0x2904 policySharedUnitFixed0_range10437_10469 policySharedUnitFixed0_range10469_10500)))))) def policySharedUnit0_false_compact (P : Nat → Prop) (hi : ∀ i, 0 < i → i < 0x2331 → policySignedClauseHolds P (policyFixedCompact0Db i)) : False := by apply policyBitGraph_false policySharedUnitFixed0Db 0x2331 0x2904 0x2903 policySharedUnitFixed0Hints P policySharedUnitFixed0_all_checked ?_ (by decide) (by decide) policySharedUnitFixed0_root_empty intro i hip hib simpa only [policySharedUnitFixed0Db, if_pos hib] using hi i hip hib end Bounty end PolicySubmissionPart58 /- Component PolicyMappedCircuitChecked1; SHA256 7f1d9f077e1dae6d0bc117e08be8f89e3783a1a2eab16dcaa2ee917b360fc035. -/ section PolicySubmissionPart59 namespace PolicyMappedCircuitChecked1 open ClosureCircuit ClosureSemantics Bounty def test (start count : Nat) : Bool := checkCircuitBlock (boundedProgram ClosureFixedWidthData1.program) policyMappedDatabase1 PolicyCircuitPacked1.records start count def checked0 : test 0 32 = true := by decide +kernel def checked1 : test 32 32 = true := by decide +kernel def checked2 : test 64 32 = true := by decide +kernel def checked3 : test 96 32 = true := by decide +kernel def checked4 : test 0x80 32 = true := by decide +kernel def checked5 : test 0xa0 32 = true := by decide +kernel def checked6 : test 0xc0 32 = true := by decide +kernel def checked7 : test 0xe0 32 = true := by decide +kernel def checked8 : test 0x100 32 = true := by decide +kernel def checked9 : test 0x120 32 = true := by decide +kernel def checked10 : test 0x140 32 = true := by decide +kernel def checked11 : test 0x160 32 = true := by decide +kernel def checked12 : test 0x180 32 = true := by decide +kernel def checked13 : test 0x1a0 32 = true := by decide +kernel def checked14 : test 0x1c0 32 = true := by decide +kernel def checked15 : test 0x1e0 32 = true := by decide +kernel def checked16 : test 0x200 32 = true := by decide +kernel def checked17 : test 0x220 32 = true := by decide +kernel def checked18 : test 0x240 32 = true := by decide +kernel def checked19 : test 0x260 32 = true := by decide +kernel def checked20 : test 0x280 32 = true := by decide +kernel def checked21 : test 0x2a0 32 = true := by decide +kernel def checked22 : test 0x2c0 32 = true := by decide +kernel def checked23 : test 0x2e0 32 = true := by decide +kernel def checked24 : test 0x300 32 = true := by decide +kernel def checked25 : test 0x320 32 = true := by decide +kernel def checked26 : test 0x340 32 = true := by decide +kernel def checked27 : test 0x360 32 = true := by decide +kernel def checked28 : test 0x380 32 = true := by decide +kernel def checked29 : test 0x3a0 32 = true := by decide +kernel def checked30 : test 0x3c0 32 = true := by decide +kernel def checked31 : test 0x3e0 32 = true := by decide +kernel def checked32 : test 0x400 32 = true := by decide +kernel def checked33 : test 0x420 32 = true := by decide +kernel def checked34 : test 0x440 32 = true := by decide +kernel def checked35 : test 0x460 32 = true := by decide +kernel def checked36 : test 0x480 32 = true := by decide +kernel def checked37 : test 0x4a0 32 = true := by decide +kernel def checked38 : test 0x4c0 32 = true := by decide +kernel def checked39 : test 0x4e0 32 = true := by decide +kernel def checked40 : test 0x500 32 = true := by decide +kernel def checked41 : test 0x520 32 = true := by decide +kernel def checked42 : test 0x540 32 = true := by decide +kernel def checked43 : test 0x560 32 = true := by decide +kernel def checked44 : test 0x580 32 = true := by decide +kernel def checked45 : test 0x5a0 32 = true := by decide +kernel def checked46 : test 0x5c0 32 = true := by decide +kernel def checked47 : test 0x5e0 32 = true := by decide +kernel def checked48 : test 0x600 32 = true := by decide +kernel def checked49 : test 0x620 32 = true := by decide +kernel def checked50 : test 0x640 32 = true := by decide +kernel def checked51 : test 0x660 32 = true := by decide +kernel def checked52 : test 0x680 32 = true := by decide +kernel def checked53 : test 0x6a0 32 = true := by decide +kernel def checked54 : test 0x6c0 32 = true := by decide +kernel def checked55 : test 0x6e0 32 = true := by decide +kernel def checked56 : test 0x700 32 = true := by decide +kernel def checked57 : test 0x720 32 = true := by decide +kernel def checked58 : test 0x740 32 = true := by decide +kernel def checked59 : test 0x760 32 = true := by decide +kernel def checked60 : test 0x780 32 = true := by decide +kernel def checked61 : test 0x7a0 32 = true := by decide +kernel def checked62 : test 0x7c0 32 = true := by decide +kernel def checked63 : test 0x7e0 32 = true := by decide +kernel def checked64 : test 0x800 32 = true := by decide +kernel def checked65 : test 0x820 32 = true := by decide +kernel def checked66 : test 0x840 32 = true := by decide +kernel def checked67 : test 0x860 32 = true := by decide +kernel def checked68 : test 0x880 32 = true := by decide +kernel def checked69 : test 0x8a0 32 = true := by decide +kernel def checked70 : test 0x8c0 32 = true := by decide +kernel def checked71 : test 0x8e0 32 = true := by decide +kernel def checked72 : test 0x900 32 = true := by decide +kernel def checked73 : test 0x920 32 = true := by decide +kernel def checked74 : test 0x940 32 = true := by decide +kernel def checked75 : test 0x960 32 = true := by decide +kernel def checked76 : test 0x980 32 = true := by decide +kernel def checked77 : test 0x9a0 32 = true := by decide +kernel def checked78 : test 0x9c0 32 = true := by decide +kernel def checked79 : test 0x9e0 32 = true := by decide +kernel def checked80 : test 0xa00 32 = true := by decide +kernel def checked81 : test 0xa20 32 = true := by decide +kernel def checked82 : test 0xa40 32 = true := by decide +kernel def checked83 : test 0xa60 32 = true := by decide +kernel def checked84 : test 0xa80 32 = true := by decide +kernel def checked85 : test 0xaa0 32 = true := by decide +kernel def checked86 : test 0xac0 32 = true := by decide +kernel def checked87 : test 0xae0 32 = true := by decide +kernel def checked88 : test 0xb00 32 = true := by decide +kernel def checked89 : test 0xb20 32 = true := by decide +kernel def checked90 : test 0xb40 32 = true := by decide +kernel def checked91 : test 0xb60 32 = true := by decide +kernel def checked92 : test 0xb80 32 = true := by decide +kernel def checked93 : test 0xba0 32 = true := by decide +kernel def checked94 : test 0xbc0 32 = true := by decide +kernel def checked95 : test 0xbe0 32 = true := by decide +kernel def checked96 : test 0xc00 32 = true := by decide +kernel def checked97 : test 0xc20 32 = true := by decide +kernel def checked98 : test 0xc40 32 = true := by decide +kernel def checked99 : test 0xc60 32 = true := by decide +kernel def checked100 : test 0xc80 32 = true := by decide +kernel def checked101 : test 0xca0 32 = true := by decide +kernel def checked102 : test 0xcc0 32 = true := by decide +kernel def checked103 : test 0xce0 32 = true := by decide +kernel def checked104 : test 0xd00 32 = true := by decide +kernel def checked105 : test 0xd20 32 = true := by decide +kernel def checked106 : test 0xd40 32 = true := by decide +kernel def checked107 : test 0xd60 32 = true := by decide +kernel def checked108 : test 0xd80 32 = true := by decide +kernel def checked109 : test 0xda0 32 = true := by decide +kernel def checked110 : test 0xdc0 32 = true := by decide +kernel def checked111 : test 0xde0 32 = true := by decide +kernel def checked112 : test 0xe00 32 = true := by decide +kernel def checked113 : test 0xe20 32 = true := by decide +kernel def checked114 : test 0xe40 32 = true := by decide +kernel def checked115 : test 0xe60 32 = true := by decide +kernel def checked116 : test 0xe80 32 = true := by decide +kernel def checked117 : test 0xea0 32 = true := by decide +kernel def checked118 : test 0xec0 32 = true := by decide +kernel def checked119 : test 0xee0 32 = true := by decide +kernel def checked120 : test 0xf00 32 = true := by decide +kernel def checked121 : test 0xf20 32 = true := by decide +kernel def checked122 : test 0xf40 32 = true := by decide +kernel def checked123 : test 0xf60 32 = true := by decide +kernel def checked124 : test 0xf80 32 = true := by decide +kernel def checked125 : test 0xfa0 32 = true := by decide +kernel def checked126 : test 0xfc0 32 = true := by decide +kernel def checked127 : test 0xfe0 32 = true := by decide +kernel def checked128 : test 0x1000 32 = true := by decide +kernel def checked129 : test 0x1020 32 = true := by decide +kernel def checked130 : test 0x1040 32 = true := by decide +kernel def checked131 : test 0x1060 32 = true := by decide +kernel def checked132 : test 0x1080 32 = true := by decide +kernel def checked133 : test 0x10a0 32 = true := by decide +kernel def checked134 : test 0x10c0 32 = true := by decide +kernel def checked135 : test 0x10e0 1 = true := by decide +kernel def checkedRange0 : ∀ i : Nat, 0 ≤ i → i < 32 → test (32 * i) (min 32 (0x10e1 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked0 · exact checked1 · exact checked2 · exact checked3 · exact checked4 · exact checked5 · exact checked6 · exact checked7 · exact checked8 · exact checked9 · exact checked10 · exact checked11 · exact checked12 · exact checked13 · exact checked14 · exact checked15 · exact checked16 · exact checked17 · exact checked18 · exact checked19 · exact checked20 · exact checked21 · exact checked22 · exact checked23 · exact checked24 · exact checked25 · exact checked26 · exact checked27 · exact checked28 · exact checked29 · exact checked30 · exact checked31 def checkedRange32 : ∀ i : Nat, 32 ≤ i → i < 64 → test (32 * i) (min 32 (0x10e1 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked32 · exact checked33 · exact checked34 · exact checked35 · exact checked36 · exact checked37 · exact checked38 · exact checked39 · exact checked40 · exact checked41 · exact checked42 · exact checked43 · exact checked44 · exact checked45 · exact checked46 · exact checked47 · exact checked48 · exact checked49 · exact checked50 · exact checked51 · exact checked52 · exact checked53 · exact checked54 · exact checked55 · exact checked56 · exact checked57 · exact checked58 · exact checked59 · exact checked60 · exact checked61 · exact checked62 · exact checked63 def checkedRange64 : ∀ i : Nat, 64 ≤ i → i < 96 → test (32 * i) (min 32 (0x10e1 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked64 · exact checked65 · exact checked66 · exact checked67 · exact checked68 · exact checked69 · exact checked70 · exact checked71 · exact checked72 · exact checked73 · exact checked74 · exact checked75 · exact checked76 · exact checked77 · exact checked78 · exact checked79 · exact checked80 · exact checked81 · exact checked82 · exact checked83 · exact checked84 · exact checked85 · exact checked86 · exact checked87 · exact checked88 · exact checked89 · exact checked90 · exact checked91 · exact checked92 · exact checked93 · exact checked94 · exact checked95 def checkedRange96 : ∀ i : Nat, 96 ≤ i → i < 0x80 → test (32 * i) (min 32 (0x10e1 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked96 · exact checked97 · exact checked98 · exact checked99 · exact checked100 · exact checked101 · exact checked102 · exact checked103 · exact checked104 · exact checked105 · exact checked106 · exact checked107 · exact checked108 · exact checked109 · exact checked110 · exact checked111 · exact checked112 · exact checked113 · exact checked114 · exact checked115 · exact checked116 · exact checked117 · exact checked118 · exact checked119 · exact checked120 · exact checked121 · exact checked122 · exact checked123 · exact checked124 · exact checked125 · exact checked126 · exact checked127 def checkedRange128 : ∀ i : Nat, 0x80 ≤ i → i < 0x88 → test (32 * i) (min 32 (0x10e1 - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked128 · exact checked129 · exact checked130 · exact checked131 · exact checked132 · exact checked133 · exact checked134 · exact checked135 def checkedAll : ∀ i : Nat, 0 ≤ i → i < 0x88 → test (32 * i) (min 32 (0x10e1 - 32 * i)) = true := (Bounty.policyIntervalJoin _ 0 64 0x88 (Bounty.policyIntervalJoin _ 0 32 64 checkedRange0 checkedRange32) (Bounty.policyIntervalJoin _ 64 96 0x88 checkedRange64 (Bounty.policyIntervalJoin _ 96 0x80 0x88 checkedRange96 checkedRange128))) def checked (i : Fin 0x88) : test (32 * i.val) (min 32 (0x10e1 - 32 * i.val)) = true := by exact checkedAll i.val (Nat.zero_le _) i.isLt def sound (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData1.program) input values) (i : Nat) (hi : i < 0x10e1) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase1 ((PolicyCircuitPacked1.records i).headD 0)) := by have hb : i / 32 < 0x88 := by omega have hw : i % 32 < min 32 (0x10e1 - 32 * (i / 32)) := by omega have h := checkCircuitBlock_sound (boundedProgram ClosureFixedWidthData1.program) input values he policyMappedDatabase1 PolicyCircuitPacked1.records (32 * (i / 32)) (min 32 (0x10e1 - 32 * (i / 32))) (checked ⟨i / 32, hb⟩) (i % 32) hw have hid : 32 * (i / 32) + i % 32 = i := by omega simpa only [hid] using h end PolicyMappedCircuitChecked1 end PolicySubmissionPart59 /- Component PolicyMappedRewriteParametricChecked1; SHA256 424c4f5cc0a68c7bd2355f781f3fdf7a9cbf38f084dc5b9c388ae5e244cf7f5a. -/ section PolicySubmissionPart60 namespace PolicyMappedRewriteParametricChecked1 open ClosurePattern ClosureSemantics Bounty def test (start count : Nat) : Bool := checkSchemaBlock (boundedProgram ClosureFixedWidthData1.program) policyMappedDatabase1 PolicyRewriteParametricPacked1.records start count def checked0 : test 0 32 = true := by decide +kernel def checked1 : test 32 32 = true := by decide +kernel def checked2 : test 64 32 = true := by decide +kernel def checked3 : test 96 32 = true := by decide +kernel def checked4 : test 0x80 32 = true := by decide +kernel def checked5 : test 0xa0 32 = true := by decide +kernel def checked6 : test 0xc0 32 = true := by decide +kernel def checked7 : test 0xe0 32 = true := by decide +kernel def checked8 : test 0x100 32 = true := by decide +kernel def checked9 : test 0x120 32 = true := by decide +kernel def checked10 : test 0x140 32 = true := by decide +kernel def checked11 : test 0x160 32 = true := by decide +kernel def checked12 : test 0x180 32 = true := by decide +kernel def checked13 : test 0x1a0 32 = true := by decide +kernel def checked14 : test 0x1c0 32 = true := by decide +kernel def checked15 : test 0x1e0 32 = true := by decide +kernel def checked16 : test 0x200 32 = true := by decide +kernel def checked17 : test 0x220 32 = true := by decide +kernel def checked18 : test 0x240 32 = true := by decide +kernel def checked19 : test 0x260 32 = true := by decide +kernel def checked20 : test 0x280 32 = true := by decide +kernel def checked21 : test 0x2a0 32 = true := by decide +kernel def checked22 : test 0x2c0 32 = true := by decide +kernel def checked23 : test 0x2e0 32 = true := by decide +kernel def checked24 : test 0x300 32 = true := by decide +kernel def checked25 : test 0x320 32 = true := by decide +kernel def checked26 : test 0x340 32 = true := by decide +kernel def checked27 : test 0x360 32 = true := by decide +kernel def checked28 : test 0x380 32 = true := by decide +kernel def checked29 : test 0x3a0 32 = true := by decide +kernel def checked30 : test 0x3c0 32 = true := by decide +kernel def checked31 : test 0x3e0 32 = true := by decide +kernel def checked32 : test 0x400 32 = true := by decide +kernel def checked33 : test 0x420 32 = true := by decide +kernel def checked34 : test 0x440 32 = true := by decide +kernel def checked35 : test 0x460 32 = true := by decide +kernel def checked36 : test 0x480 32 = true := by decide +kernel def checked37 : test 0x4a0 32 = true := by decide +kernel def checked38 : test 0x4c0 32 = true := by decide +kernel def checked39 : test 0x4e0 32 = true := by decide +kernel def checked40 : test 0x500 32 = true := by decide +kernel def checked41 : test 0x520 32 = true := by decide +kernel def checked42 : test 0x540 32 = true := by decide +kernel def checked43 : test 0x560 32 = true := by decide +kernel def checked44 : test 0x580 32 = true := by decide +kernel def checked45 : test 0x5a0 32 = true := by decide +kernel def checked46 : test 0x5c0 32 = true := by decide +kernel def checked47 : test 0x5e0 32 = true := by decide +kernel def checked48 : test 0x600 32 = true := by decide +kernel def checked49 : test 0x620 32 = true := by decide +kernel def checked50 : test 0x640 32 = true := by decide +kernel def checked51 : test 0x660 32 = true := by decide +kernel def checked52 : test 0x680 32 = true := by decide +kernel def checked53 : test 0x6a0 32 = true := by decide +kernel def checked54 : test 0x6c0 32 = true := by decide +kernel def checked55 : test 0x6e0 32 = true := by decide +kernel def checked56 : test 0x700 32 = true := by decide +kernel def checked57 : test 0x720 32 = true := by decide +kernel def checked58 : test 0x740 32 = true := by decide +kernel def checked59 : test 0x760 32 = true := by decide +kernel def checked60 : test 0x780 32 = true := by decide +kernel def checked61 : test 0x7a0 32 = true := by decide +kernel def checked62 : test 0x7c0 32 = true := by decide +kernel def checked63 : test 0x7e0 32 = true := by decide +kernel def checked64 : test 0x800 32 = true := by decide +kernel def checked65 : test 0x820 32 = true := by decide +kernel def checked66 : test 0x840 32 = true := by decide +kernel def checked67 : test 0x860 32 = true := by decide +kernel def checked68 : test 0x880 32 = true := by decide +kernel def checked69 : test 0x8a0 32 = true := by decide +kernel def checked70 : test 0x8c0 32 = true := by decide +kernel def checked71 : test 0x8e0 32 = true := by decide +kernel def checked72 : test 0x900 32 = true := by decide +kernel def checked73 : test 0x920 32 = true := by decide +kernel def checked74 : test 0x940 32 = true := by decide +kernel def checked75 : test 0x960 32 = true := by decide +kernel def checked76 : test 0x980 32 = true := by decide +kernel def checked77 : test 0x9a0 32 = true := by decide +kernel def checked78 : test 0x9c0 32 = true := by decide +kernel def checked79 : test 0x9e0 32 = true := by decide +kernel def checked80 : test 0xa00 32 = true := by decide +kernel def checked81 : test 0xa20 32 = true := by decide +kernel def checked82 : test 0xa40 32 = true := by decide +kernel def checked83 : test 0xa60 32 = true := by decide +kernel def checked84 : test 0xa80 32 = true := by decide +kernel def checked85 : test 0xaa0 32 = true := by decide +kernel def checked86 : test 0xac0 32 = true := by decide +kernel def checked87 : test 0xae0 32 = true := by decide +kernel def checked88 : test 0xb00 32 = true := by decide +kernel def checked89 : test 0xb20 32 = true := by decide +kernel def checked90 : test 0xb40 32 = true := by decide +kernel def checked91 : test 0xb60 32 = true := by decide +kernel def checked92 : test 0xb80 32 = true := by decide +kernel def checked93 : test 0xba0 32 = true := by decide +kernel def checked94 : test 0xbc0 32 = true := by decide +kernel def checked95 : test 0xbe0 32 = true := by decide +kernel def checked96 : test 0xc00 32 = true := by decide +kernel def checked97 : test 0xc20 27 = true := by decide +kernel def checkedRange0 : ∀ i : Nat, 0 ≤ i → i < 32 → test (32 * i) (min 32 (0xc3b - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked0 · exact checked1 · exact checked2 · exact checked3 · exact checked4 · exact checked5 · exact checked6 · exact checked7 · exact checked8 · exact checked9 · exact checked10 · exact checked11 · exact checked12 · exact checked13 · exact checked14 · exact checked15 · exact checked16 · exact checked17 · exact checked18 · exact checked19 · exact checked20 · exact checked21 · exact checked22 · exact checked23 · exact checked24 · exact checked25 · exact checked26 · exact checked27 · exact checked28 · exact checked29 · exact checked30 · exact checked31 def checkedRange32 : ∀ i : Nat, 32 ≤ i → i < 64 → test (32 * i) (min 32 (0xc3b - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked32 · exact checked33 · exact checked34 · exact checked35 · exact checked36 · exact checked37 · exact checked38 · exact checked39 · exact checked40 · exact checked41 · exact checked42 · exact checked43 · exact checked44 · exact checked45 · exact checked46 · exact checked47 · exact checked48 · exact checked49 · exact checked50 · exact checked51 · exact checked52 · exact checked53 · exact checked54 · exact checked55 · exact checked56 · exact checked57 · exact checked58 · exact checked59 · exact checked60 · exact checked61 · exact checked62 · exact checked63 def checkedRange64 : ∀ i : Nat, 64 ≤ i → i < 96 → test (32 * i) (min 32 (0xc3b - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked64 · exact checked65 · exact checked66 · exact checked67 · exact checked68 · exact checked69 · exact checked70 · exact checked71 · exact checked72 · exact checked73 · exact checked74 · exact checked75 · exact checked76 · exact checked77 · exact checked78 · exact checked79 · exact checked80 · exact checked81 · exact checked82 · exact checked83 · exact checked84 · exact checked85 · exact checked86 · exact checked87 · exact checked88 · exact checked89 · exact checked90 · exact checked91 · exact checked92 · exact checked93 · exact checked94 · exact checked95 def checkedRange96 : ∀ i : Nat, 96 ≤ i → i < 98 → test (32 * i) (min 32 (0xc3b - 32 * i)) = true := by intro i hlo hhi interval_cases i · exact checked96 · exact checked97 def checkedAll : ∀ i : Nat, 0 ≤ i → i < 98 → test (32 * i) (min 32 (0xc3b - 32 * i)) = true := (Bounty.policyIntervalJoin _ 0 64 98 (Bounty.policyIntervalJoin _ 0 32 64 checkedRange0 checkedRange32) (Bounty.policyIntervalJoin _ 64 96 98 checkedRange64 checkedRange96)) def checked (i : Fin 98) : test (32 * i.val) (min 32 (0xc3b - 32 * i.val)) = true := by exact checkedAll i.val (Nat.zero_le _) i.isLt def sound (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData1.program) input values) (i : Nat) (hi : i < 0xc3b) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase1 ((PolicyRewriteParametricPacked1.records i).headD 0)) := by have hb : i / 32 < 98 := by omega have hw : i % 32 < min 32 (0xc3b - 32 * (i / 32)) := by omega have h := checkSchemaBlock_sound (boundedProgram ClosureFixedWidthData1.program) input values he policyMappedDatabase1 PolicyRewriteParametricPacked1.records (32 * (i / 32)) (min 32 (0xc3b - 32 * (i / 32))) (checked ⟨i / 32, hb⟩) (i % 32) hw have hid : 32 * (i / 32) + i % 32 = i := by omega simpa only [hid] using h end PolicyMappedRewriteParametricChecked1 end PolicySubmissionPart60 /- Component PolicyClosedConstantData1; SHA256 c3584300e27067840ad7f5bf7b3bfbeee7e3c40bdfe283b8d3fe04af8047c7ac. -/ section PolicySubmissionPart61 /- Every cache leaf contains its original node ID, closed-evaluation fuel, and claimed full rational Value. The table is untrusted until checked. -/ namespace PolicyClosedConstantData1 open ClosureSemantics PolicyClosedConstantCache def certificate : Cache := (.branch 0x1258 3 PolicyClosedConstantValues.q46 (.branch 0xdfb 3 PolicyClosedConstantValues.q22 (.branch 0xb02 3 PolicyClosedConstantValues.q1 (.branch 0xa43 3 PolicyClosedConstantValues.q5 (.branch 0x80a 3 PolicyClosedConstantValues.q36 (.branch 0x804 3 PolicyClosedConstantValues.q3 .empty .empty) (.branch 0xa1b 3 PolicyClosedConstantValues.q4 .empty .empty)) (.branch 0xa9b 3 PolicyClosedConstantValues.q25 (.branch 0xa89 3 PolicyClosedConstantValues.q27 .empty .empty) .empty)) (.branch 0xd1a 3 PolicyClosedConstantValues.q7 (.branch 0xcda 3 PolicyClosedConstantValues.q6 (.branch 0xba5 3 PolicyClosedConstantValues.q38 .empty .empty) (.branch 0xd00 3 PolicyClosedConstantValues.q0 .empty .empty)) (.branch 0xdea 3 PolicyClosedConstantValues.q10 (.branch 0xda8 3 PolicyClosedConstantValues.q39 .empty .empty) .empty))) (.branch 0x1080 3 PolicyClosedConstantValues.q11 (.branch 0x1026 3 PolicyClosedConstantValues.q31 (.branch 0xf01 3 PolicyClosedConstantValues.q29 (.branch 0xeb1 3 PolicyClosedConstantValues.q2 .empty .empty) (.branch 0xf22 3 PolicyClosedConstantValues.q28 .empty .empty)) (.branch 0x107d 3 PolicyClosedConstantValues.q50 (.branch 0x102f 3 PolicyClosedConstantValues.q34 .empty .empty) .empty)) (.branch 0x1126 3 PolicyClosedConstantValues.q30 (.branch 0x110f 3 PolicyClosedConstantValues.q8 (.branch 0x10c1 3 PolicyClosedConstantValues.q24 .empty .empty) .empty) (.branch 0x1194 3 PolicyClosedConstantValues.q51 (.branch 0x117a 3 PolicyClosedConstantValues.q20 .empty .empty) .empty)))) (.branch 0x2513 3 PolicyClosedConstantValues.q35 (.branch 0x181d 3 PolicyClosedConstantValues.q16 (.branch 0x14a2 3 PolicyClosedConstantValues.q41 (.branch 0x1320 3 PolicyClosedConstantValues.q9 (.branch 0x12a5 3 PolicyClosedConstantValues.q33 .empty .empty) (.branch 0x1342 3 PolicyClosedConstantValues.q32 .empty .empty)) (.branch 0x177d 3 PolicyClosedConstantValues.q14 (.branch 0x175f 3 PolicyClosedConstantValues.q12 .empty .empty) .empty)) (.branch 0x215a 3 PolicyClosedConstantValues.q40 (.branch 0x1c99 3 PolicyClosedConstantValues.q37 (.branch 0x189e 3 PolicyClosedConstantValues.q47 .empty .empty) .empty) (.branch 0x24b3 3 PolicyClosedConstantValues.q15 (.branch 0x23c1 3 PolicyClosedConstantValues.q23 .empty .empty) .empty))) (.branch 0x2f5f 3 PolicyClosedConstantValues.q49 (.branch 0x2a1a 3 PolicyClosedConstantValues.q13 (.branch 0x2573 3 PolicyClosedConstantValues.q21 (.branch 0x256a 3 PolicyClosedConstantValues.q17 .empty .empty) (.branch 0x25ed 3 PolicyClosedConstantValues.q19 .empty .empty)) (.branch 0x2e6a 3 PolicyClosedConstantValues.q18 (.branch 0x2a27 3 PolicyClosedConstantValues.q26 .empty .empty) .empty)) (.branch 0x4196 3 PolicyClosedConstantValues.q43 (.branch 0x321e 3 PolicyClosedConstantValues.q42 (.branch 0x2fd6 3 PolicyClosedConstantValues.q48 .empty .empty) .empty) (.branch 0x498a 3 PolicyClosedConstantValues.q45 (.branch 0x4881 3 PolicyClosedConstantValues.q44 .empty .empty) .empty))))) def checked : certificate.check (boundedProgram ClosureFixedWidthData1.program) = true := by decide +kernel def program : ℕ → Node := foldedProgram (boundedProgram ClosureFixedWidthData1.program) certificate def equations (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData1.program) input values) : Equations program input values := by exact foldedProgram_equations (boundedProgram ClosureFixedWidthData1.program) certificate input values he checked end PolicyClosedConstantData1 end PolicySubmissionPart61 /- Component PolicyCachedHotLiteralData1; SHA256 cffb197e7b6fdc6509d7d3c6231bb7a3765c2f2e2fc1c3923e9c10992c8b9b07. -/ section PolicySubmissionPart62 /- Full-Value certificates at the original bounded nodes, each with fuel 1. -/ namespace PolicyCachedHotLiteralData1 open ClosureSemantics PolicyClosedConstantCache def zeroChecked : checkClosedRatValue (boundedProgram ClosureFixedWidthData1.program) 1 0x7f5 (0) = true := by decide +kernel def negativeChecked : checkClosedRatValue (boundedProgram ClosureFixedWidthData1.program) 1 0x7f6 (-1) = true := by decide +kernel def oneChecked : checkClosedRatValue (boundedProgram ClosureFixedWidthData1.program) 1 0 (1) = true := by decide +kernel def program : ℕ → Node := PolicyHotLiteralOverrides.program PolicyClosedConstantData1.program 0x7f5 0x7f6 0 def equations (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData1.program) input values) : Equations program input values := by exact PolicyHotLiteralOverrides.equations PolicyClosedConstantData1.program 0x7f5 0x7f6 0 input values (PolicyClosedConstantData1.equations input values he) (checkClosedRatValue_sound (boundedProgram ClosureFixedWidthData1.program) input values he 1 0x7f5 (0) zeroChecked) (checkClosedRatValue_sound (boundedProgram ClosureFixedWidthData1.program) input values he 1 0x7f6 (-1) negativeChecked) (checkClosedRatValue_sound (boundedProgram ClosureFixedWidthData1.program) input values he 1 0 (1) oneChecked) end PolicyCachedHotLiteralData1 end PolicySubmissionPart62 /- Component PolicyCachedHotArithmeticChecked1; SHA256 6a1fbeebcda7023c66774f46dfb2bc5246fe0e2c9b601fb0a2d225c26d911e52. -/ section PolicySubmissionPart63 /- Every required arithmetic initial clause, checked by ordinary kernel reduction. -/ namespace PolicyCachedHotArithmeticChecked1 open ClosureLinear ClosureSemantics Bounty def checked0 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0 32 = true := by decide +kernel def checked1 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 32 32 = true := by decide +kernel def checked2 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 64 32 = true := by decide +kernel def checked3 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 96 32 = true := by decide +kernel def checked4 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x80 32 = true := by decide +kernel def checked5 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0xa0 32 = true := by decide +kernel def checked6 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0xc0 32 = true := by decide +kernel def checked7 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0xe0 32 = true := by decide +kernel def checked8 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x100 32 = true := by decide +kernel def checked9 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x120 32 = true := by decide +kernel def checked10 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x140 32 = true := by decide +kernel def checked11 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x160 32 = true := by decide +kernel def checked12 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x180 32 = true := by decide +kernel def checked13 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x1a0 32 = true := by decide +kernel def checked14 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x1c0 32 = true := by decide +kernel def checked15 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x1e0 32 = true := by decide +kernel def checked16 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x200 32 = true := by decide +kernel def checked17 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x220 32 = true := by decide +kernel def checked18 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x240 32 = true := by decide +kernel def checked19 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x260 32 = true := by decide +kernel def checked20 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x280 32 = true := by decide +kernel def checked21 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x2a0 32 = true := by decide +kernel def checked22 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x2c0 32 = true := by decide +kernel def checked23 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x2e0 32 = true := by decide +kernel def checked24 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x300 32 = true := by decide +kernel def checked25 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x320 32 = true := by decide +kernel def checked26 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x340 32 = true := by decide +kernel def checked27 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x360 32 = true := by decide +kernel def checked28 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x380 32 = true := by decide +kernel def checked29 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x3a0 32 = true := by decide +kernel def checked30 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x3c0 32 = true := by decide +kernel def checked31 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x3e0 32 = true := by decide +kernel def checked32 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x400 32 = true := by decide +kernel def checked33 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x420 32 = true := by decide +kernel def checked34 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x440 32 = true := by decide +kernel def checked35 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x460 32 = true := by decide +kernel def checked36 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x480 32 = true := by decide +kernel def checked37 : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records 0x4a0 9 = true := by decide +kernel def checked (i : Fin 38) : checkArithmeticBlock PolicyCachedHotLiteralData1.program policyMappedDatabase1 PolicyArithmeticPacked1.records (32 * i.val) (min 32 (0x4a9 - 32 * i.val)) = true := by rcases i with ⟨i, hi⟩ interval_cases i · exact checked0 · exact checked1 · exact checked2 · exact checked3 · exact checked4 · exact checked5 · exact checked6 · exact checked7 · exact checked8 · exact checked9 · exact checked10 · exact checked11 · exact checked12 · exact checked13 · exact checked14 · exact checked15 · exact checked16 · exact checked17 · exact checked18 · exact checked19 · exact checked20 · exact checked21 · exact checked22 · exact checked23 · exact checked24 · exact checked25 · exact checked26 · exact checked27 · exact checked28 · exact checked29 · exact checked30 · exact checked31 · exact checked32 · exact checked33 · exact checked34 · exact checked35 · exact checked36 · exact checked37 def sound (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData1.program) input values) (i : ℕ) (hi : i < 0x4a9) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase1 ((PolicyArithmeticPacked1.records i).headD 0)) := by have hblock : i / 32 < 38 := by omega have hwithin : i % 32 < min 32 (0x4a9 - 32 * (i / 32)) := by omega have h := checkArithmeticBlock_sound PolicyCachedHotLiteralData1.program input values (PolicyCachedHotLiteralData1.equations input values he) policyMappedDatabase1 PolicyArithmeticPacked1.records (32 * (i / 32)) (min 32 (0x4a9 - 32 * (i / 32))) (checked ⟨i / 32, hblock⟩) (i % 32) hwithin have hid : 32 * (i / 32) + i % 32 = i := by omega simpa only [hid] using h end PolicyCachedHotArithmeticChecked1 end PolicySubmissionPart63 /- Component PolicyInitialFastCoverageChecked1; SHA256 20679ea648bf68c397881e2640a75ec9a2c0f48237209363fbbe6f45d03ed0ab. -/ section PolicySubmissionPart64 namespace PolicyInitialFastCoverage1 open ClosureCoverage def test (start count : Nat) : Bool := checkBlock limits targets records start count def checked0 : test 1 0x80 = true := by decide +kernel def checked1 : test 0x81 0x80 = true := by decide +kernel def checked2 : test 0x101 0x80 = true := by decide +kernel def checked3 : test 0x181 0x80 = true := by decide +kernel def checked4 : test 0x201 0x80 = true := by decide +kernel def checked5 : test 0x281 0x80 = true := by decide +kernel def checked6 : test 0x301 0x80 = true := by decide +kernel def checked7 : test 0x381 0x80 = true := by decide +kernel def checked8 : test 0x401 0x80 = true := by decide +kernel def checked9 : test 0x481 0x80 = true := by decide +kernel def checked10 : test 0x501 0x80 = true := by decide +kernel def checked11 : test 0x581 0x80 = true := by decide +kernel def checked12 : test 0x601 0x80 = true := by decide +kernel def checked13 : test 0x681 0x80 = true := by decide +kernel def checked14 : test 0x701 0x80 = true := by decide +kernel def checked15 : test 0x781 0x80 = true := by decide +kernel def checked16 : test 0x801 0x80 = true := by decide +kernel def checked17 : test 0x881 0x80 = true := by decide +kernel def checked18 : test 0x901 0x80 = true := by decide +kernel def checked19 : test 0x981 0x80 = true := by decide +kernel def checked20 : test 0xa01 0x80 = true := by decide +kernel def checked21 : test 0xa81 0x80 = true := by decide +kernel def checked22 : test 0xb01 0x80 = true := by decide +kernel def checked23 : test 0xb81 0x80 = true := by decide +kernel def checked24 : test 0xc01 0x80 = true := by decide +kernel def checked25 : test 0xc81 0x80 = true := by decide +kernel def checked26 : test 0xd01 0x80 = true := by decide +kernel def checked27 : test 0xd81 0x80 = true := by decide +kernel def checked28 : test 0xe01 0x80 = true := by decide +kernel def checked29 : test 0xe81 0x80 = true := by decide +kernel def checked30 : test 0xf01 0x80 = true := by decide +kernel def checked31 : test 0xf81 0x80 = true := by decide +kernel def checked32 : test 0x1001 0x80 = true := by decide +kernel def checked33 : test 0x1081 0x80 = true := by decide +kernel def checked34 : test 0x1101 0x80 = true := by decide +kernel def checked35 : test 0x1181 0x80 = true := by decide +kernel def checked36 : test 0x1201 0x80 = true := by decide +kernel def checked37 : test 0x1281 0x80 = true := by decide +kernel def checked38 : test 0x1301 0x80 = true := by decide +kernel def checked39 : test 0x1381 0x80 = true := by decide +kernel def checked40 : test 0x1401 0x80 = true := by decide +kernel def checked41 : test 0x1481 0x80 = true := by decide +kernel def checked42 : test 0x1501 0x80 = true := by decide +kernel def checked43 : test 0x1581 0x80 = true := by decide +kernel def checked44 : test 0x1601 0x80 = true := by decide +kernel def checked45 : test 0x1681 0x80 = true := by decide +kernel def checked46 : test 0x1701 0x80 = true := by decide +kernel def checked47 : test 0x1781 0x80 = true := by decide +kernel def checked48 : test 0x1801 0x80 = true := by decide +kernel def checked49 : test 0x1881 0x80 = true := by decide +kernel def checked50 : test 0x1901 0x80 = true := by decide +kernel def checked51 : test 0x1981 0x80 = true := by decide +kernel def checked52 : test 0x1a01 0x80 = true := by decide +kernel def checked53 : test 0x1a81 0x80 = true := by decide +kernel def checked54 : test 0x1b01 0x80 = true := by decide +kernel def checked55 : test 0x1b81 0x80 = true := by decide +kernel def checked56 : test 0x1c01 0x80 = true := by decide +kernel def checked57 : test 0x1c81 0x80 = true := by decide +kernel def checked58 : test 0x1d01 0x80 = true := by decide +kernel def checked59 : test 0x1d81 0x80 = true := by decide +kernel def checked60 : test 0x1e01 0x80 = true := by decide +kernel def checked61 : test 0x1e81 0x80 = true := by decide +kernel def checked62 : test 0x1f01 0x80 = true := by decide +kernel def checked63 : test 0x1f81 0x80 = true := by decide +kernel def checked64 : test 0x2001 0x80 = true := by decide +kernel def checked65 : test 0x2081 0x80 = true := by decide +kernel def checked66 : test 0x2101 0x80 = true := by decide +kernel def checked67 : test 0x2181 0x67 = true := by decide +kernel def checkedRange0 : ∀ i : Nat, 0 ≤ i → i < 32 → test (1 + 0x80 * i) (min 0x80 (0x21e7 - 0x80 * i)) = true := by intro i hlo hhi interval_cases i · exact checked0 · exact checked1 · exact checked2 · exact checked3 · exact checked4 · exact checked5 · exact checked6 · exact checked7 · exact checked8 · exact checked9 · exact checked10 · exact checked11 · exact checked12 · exact checked13 · exact checked14 · exact checked15 · exact checked16 · exact checked17 · exact checked18 · exact checked19 · exact checked20 · exact checked21 · exact checked22 · exact checked23 · exact checked24 · exact checked25 · exact checked26 · exact checked27 · exact checked28 · exact checked29 · exact checked30 · exact checked31 def checkedRange32 : ∀ i : Nat, 32 ≤ i → i < 64 → test (1 + 0x80 * i) (min 0x80 (0x21e7 - 0x80 * i)) = true := by intro i hlo hhi interval_cases i · exact checked32 · exact checked33 · exact checked34 · exact checked35 · exact checked36 · exact checked37 · exact checked38 · exact checked39 · exact checked40 · exact checked41 · exact checked42 · exact checked43 · exact checked44 · exact checked45 · exact checked46 · exact checked47 · exact checked48 · exact checked49 · exact checked50 · exact checked51 · exact checked52 · exact checked53 · exact checked54 · exact checked55 · exact checked56 · exact checked57 · exact checked58 · exact checked59 · exact checked60 · exact checked61 · exact checked62 · exact checked63 def checkedRange64 : ∀ i : Nat, 64 ≤ i → i < 68 → test (1 + 0x80 * i) (min 0x80 (0x21e7 - 0x80 * i)) = true := by intro i hlo hhi interval_cases i · exact checked64 · exact checked65 · exact checked66 · exact checked67 def checkedAll : ∀ i : Nat, 0 ≤ i → i < 68 → test (1 + 0x80 * i) (min 0x80 (0x21e7 - 0x80 * i)) = true := (Bounty.policyIntervalJoin _ 0 32 68 checkedRange0 (Bounty.policyIntervalJoin _ 32 64 68 checkedRange32 checkedRange64)) def checked (i : Fin 68) : test (1 + 0x80 * i.val) (min 0x80 (0x21e7 - 0x80 * i.val)) = true := by exact checkedAll i.val (Nat.zero_le _) i.isLt def covers (P : Nat → Prop) (hs : ∀ k, k < 4 → ∀ i, i < limits k → P (targets k i)) (cid : Nat) (hp : 0 < cid) (hi : cid < 0x21e8) : P cid := by have hb : (cid - 1) / 0x80 < 68 := by omega have hw : (cid - 1) % 0x80 < min 0x80 (0x21e7 - 0x80 * ((cid - 1) / 0x80)) := by omega have h := checkBlock_sound P limits targets hs records (1 + 0x80 * ((cid - 1) / 0x80)) (min 0x80 (0x21e7 - 0x80 * ((cid - 1) / 0x80))) (checked ⟨(cid - 1) / 0x80, hb⟩) ((cid - 1) % 0x80) hw have hid : 1 + 0x80 * ((cid - 1) / 0x80) + (cid - 1) % 0x80 = cid := by omega simpa only [hid] using h def covers_original (P : Nat → Prop) (hs : ∀ k, k < 4 → ∀ i, i < PolicyInitialCoverage1.limits k → P (PolicyInitialCoverage1.targets k i)) (cid : Nat) (hp : 0 < cid) (hi : cid < 0x21e8) : P cid := by apply covers P ?_ cid hp hi intro k hk i hi rw [targets_eq] exact hs k hk i hi end PolicyInitialFastCoverage1 end PolicySubmissionPart64 /- Component PolicySharedUnitFixedTrace1; SHA256 1f3f2c3a5ed28fff0fcd1e3743ac5257b0bc481dc00acee815cd388a8c461d13. -/ section PolicySubmissionPart65 /- Complete ordinary kernel replay with shared units and fixed15 hints. -/ namespace Bounty def policySharedUnitFixed1Check (lo hi : Nat) : Bool := policyBitActionIntervalGood policySharedUnitFixed1Db policySharedUnitFixed1Hints lo hi def policySharedUnitFixed1_check8680 : policySharedUnitFixed1Check 0x21e8 0x2208 = true := by decide +kernel def policySharedUnitFixed1_range8680_8712 : ∀ i, 0x21e8 ≤ i → i < 0x2208 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8680 def policySharedUnitFixed1_check8712 : policySharedUnitFixed1Check 0x2208 0x2228 = true := by decide +kernel def policySharedUnitFixed1_range8712_8744 : ∀ i, 0x2208 ≤ i → i < 0x2228 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8712 def policySharedUnitFixed1_check8744 : policySharedUnitFixed1Check 0x2228 0x2248 = true := by decide +kernel def policySharedUnitFixed1_range8744_8776 : ∀ i, 0x2228 ≤ i → i < 0x2248 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8744 def policySharedUnitFixed1_check8776 : policySharedUnitFixed1Check 0x2248 0x2268 = true := by decide +kernel def policySharedUnitFixed1_range8776_8808 : ∀ i, 0x2248 ≤ i → i < 0x2268 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8776 def policySharedUnitFixed1_check8808 : policySharedUnitFixed1Check 0x2268 0x2288 = true := by decide +kernel def policySharedUnitFixed1_range8808_8840 : ∀ i, 0x2268 ≤ i → i < 0x2288 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8808 def policySharedUnitFixed1_check8840 : policySharedUnitFixed1Check 0x2288 0x22a8 = true := by decide +kernel def policySharedUnitFixed1_range8840_8872 : ∀ i, 0x2288 ≤ i → i < 0x22a8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8840 def policySharedUnitFixed1_check8872 : policySharedUnitFixed1Check 0x22a8 0x22c8 = true := by decide +kernel def policySharedUnitFixed1_range8872_8904 : ∀ i, 0x22a8 ≤ i → i < 0x22c8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8872 def policySharedUnitFixed1_check8904 : policySharedUnitFixed1Check 0x22c8 0x22e8 = true := by decide +kernel def policySharedUnitFixed1_range8904_8936 : ∀ i, 0x22c8 ≤ i → i < 0x22e8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8904 def policySharedUnitFixed1_check8936 : policySharedUnitFixed1Check 0x22e8 0x2308 = true := by decide +kernel def policySharedUnitFixed1_range8936_8968 : ∀ i, 0x22e8 ≤ i → i < 0x2308 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8936 def policySharedUnitFixed1_check8968 : policySharedUnitFixed1Check 0x2308 0x2328 = true := by decide +kernel def policySharedUnitFixed1_range8968_9000 : ∀ i, 0x2308 ≤ i → i < 0x2328 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check8968 def policySharedUnitFixed1_check9000 : policySharedUnitFixed1Check 0x2328 0x2348 = true := by decide +kernel def policySharedUnitFixed1_range9000_9032 : ∀ i, 0x2328 ≤ i → i < 0x2348 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9000 def policySharedUnitFixed1_check9032 : policySharedUnitFixed1Check 0x2348 0x2368 = true := by decide +kernel def policySharedUnitFixed1_range9032_9064 : ∀ i, 0x2348 ≤ i → i < 0x2368 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9032 def policySharedUnitFixed1_check9064 : policySharedUnitFixed1Check 0x2368 0x2388 = true := by decide +kernel def policySharedUnitFixed1_range9064_9096 : ∀ i, 0x2368 ≤ i → i < 0x2388 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9064 def policySharedUnitFixed1_check9096 : policySharedUnitFixed1Check 0x2388 0x23a8 = true := by decide +kernel def policySharedUnitFixed1_range9096_9128 : ∀ i, 0x2388 ≤ i → i < 0x23a8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9096 def policySharedUnitFixed1_check9128 : policySharedUnitFixed1Check 0x23a8 0x23c8 = true := by decide +kernel def policySharedUnitFixed1_range9128_9160 : ∀ i, 0x23a8 ≤ i → i < 0x23c8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9128 def policySharedUnitFixed1_check9160 : policySharedUnitFixed1Check 0x23c8 0x23e8 = true := by decide +kernel def policySharedUnitFixed1_range9160_9192 : ∀ i, 0x23c8 ≤ i → i < 0x23e8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9160 def policySharedUnitFixed1_check9192 : policySharedUnitFixed1Check 0x23e8 0x2408 = true := by decide +kernel def policySharedUnitFixed1_range9192_9224 : ∀ i, 0x23e8 ≤ i → i < 0x2408 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9192 def policySharedUnitFixed1_check9224 : policySharedUnitFixed1Check 0x2408 0x2428 = true := by decide +kernel def policySharedUnitFixed1_range9224_9256 : ∀ i, 0x2408 ≤ i → i < 0x2428 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9224 def policySharedUnitFixed1_check9256 : policySharedUnitFixed1Check 0x2428 0x2448 = true := by decide +kernel def policySharedUnitFixed1_range9256_9288 : ∀ i, 0x2428 ≤ i → i < 0x2448 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9256 def policySharedUnitFixed1_check9288 : policySharedUnitFixed1Check 0x2448 0x2468 = true := by decide +kernel def policySharedUnitFixed1_range9288_9320 : ∀ i, 0x2448 ≤ i → i < 0x2468 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9288 def policySharedUnitFixed1_check9320 : policySharedUnitFixed1Check 0x2468 0x2488 = true := by decide +kernel def policySharedUnitFixed1_range9320_9352 : ∀ i, 0x2468 ≤ i → i < 0x2488 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9320 def policySharedUnitFixed1_check9352 : policySharedUnitFixed1Check 0x2488 0x24a8 = true := by decide +kernel def policySharedUnitFixed1_range9352_9384 : ∀ i, 0x2488 ≤ i → i < 0x24a8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9352 def policySharedUnitFixed1_check9384 : policySharedUnitFixed1Check 0x24a8 0x24c8 = true := by decide +kernel def policySharedUnitFixed1_range9384_9416 : ∀ i, 0x24a8 ≤ i → i < 0x24c8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9384 def policySharedUnitFixed1_check9416 : policySharedUnitFixed1Check 0x24c8 0x24e8 = true := by decide +kernel def policySharedUnitFixed1_range9416_9448 : ∀ i, 0x24c8 ≤ i → i < 0x24e8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9416 def policySharedUnitFixed1_check9448 : policySharedUnitFixed1Check 0x24e8 0x2508 = true := by decide +kernel def policySharedUnitFixed1_range9448_9480 : ∀ i, 0x24e8 ≤ i → i < 0x2508 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9448 def policySharedUnitFixed1_check9480 : policySharedUnitFixed1Check 0x2508 0x2528 = true := by decide +kernel def policySharedUnitFixed1_range9480_9512 : ∀ i, 0x2508 ≤ i → i < 0x2528 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9480 def policySharedUnitFixed1_check9512 : policySharedUnitFixed1Check 0x2528 0x2548 = true := by decide +kernel def policySharedUnitFixed1_range9512_9544 : ∀ i, 0x2528 ≤ i → i < 0x2548 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9512 def policySharedUnitFixed1_check9544 : policySharedUnitFixed1Check 0x2548 0x2568 = true := by decide +kernel def policySharedUnitFixed1_range9544_9576 : ∀ i, 0x2548 ≤ i → i < 0x2568 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9544 def policySharedUnitFixed1_check9576 : policySharedUnitFixed1Check 0x2568 0x2588 = true := by decide +kernel def policySharedUnitFixed1_range9576_9608 : ∀ i, 0x2568 ≤ i → i < 0x2588 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9576 def policySharedUnitFixed1_check9608 : policySharedUnitFixed1Check 0x2588 0x25a8 = true := by decide +kernel def policySharedUnitFixed1_range9608_9640 : ∀ i, 0x2588 ≤ i → i < 0x25a8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9608 def policySharedUnitFixed1_check9640 : policySharedUnitFixed1Check 0x25a8 0x25c8 = true := by decide +kernel def policySharedUnitFixed1_range9640_9672 : ∀ i, 0x25a8 ≤ i → i < 0x25c8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9640 def policySharedUnitFixed1_check9672 : policySharedUnitFixed1Check 0x25c8 0x25e8 = true := by decide +kernel def policySharedUnitFixed1_range9672_9704 : ∀ i, 0x25c8 ≤ i → i < 0x25e8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9672 def policySharedUnitFixed1_check9704 : policySharedUnitFixed1Check 0x25e8 0x2608 = true := by decide +kernel def policySharedUnitFixed1_range9704_9736 : ∀ i, 0x25e8 ≤ i → i < 0x2608 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9704 def policySharedUnitFixed1_check9736 : policySharedUnitFixed1Check 0x2608 0x2628 = true := by decide +kernel def policySharedUnitFixed1_range9736_9768 : ∀ i, 0x2608 ≤ i → i < 0x2628 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9736 def policySharedUnitFixed1_check9768 : policySharedUnitFixed1Check 0x2628 0x2648 = true := by decide +kernel def policySharedUnitFixed1_range9768_9800 : ∀ i, 0x2628 ≤ i → i < 0x2648 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9768 def policySharedUnitFixed1_check9800 : policySharedUnitFixed1Check 0x2648 0x2668 = true := by decide +kernel def policySharedUnitFixed1_range9800_9832 : ∀ i, 0x2648 ≤ i → i < 0x2668 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9800 def policySharedUnitFixed1_check9832 : policySharedUnitFixed1Check 0x2668 0x2688 = true := by decide +kernel def policySharedUnitFixed1_range9832_9864 : ∀ i, 0x2668 ≤ i → i < 0x2688 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9832 def policySharedUnitFixed1_check9864 : policySharedUnitFixed1Check 0x2688 0x26a8 = true := by decide +kernel def policySharedUnitFixed1_range9864_9896 : ∀ i, 0x2688 ≤ i → i < 0x26a8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9864 def policySharedUnitFixed1_check9896 : policySharedUnitFixed1Check 0x26a8 0x26c8 = true := by decide +kernel def policySharedUnitFixed1_range9896_9928 : ∀ i, 0x26a8 ≤ i → i < 0x26c8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9896 def policySharedUnitFixed1_check9928 : policySharedUnitFixed1Check 0x26c8 0x26e8 = true := by decide +kernel def policySharedUnitFixed1_range9928_9960 : ∀ i, 0x26c8 ≤ i → i < 0x26e8 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9928 def policySharedUnitFixed1_check9960 : policySharedUnitFixed1Check 0x26e8 0x2708 = true := by decide +kernel def policySharedUnitFixed1_range9960_9992 : ∀ i, 0x26e8 ≤ i → i < 0x2708 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9960 def policySharedUnitFixed1_check9992 : policySharedUnitFixed1Check 0x2708 0x2721 = true := by decide +kernel def policySharedUnitFixed1_range9992_10017 : ∀ i, 0x2708 ≤ i → i < 0x2721 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check9992 def policySharedUnitFixed1_check10017 : policySharedUnitFixed1Check 0x2721 0x2732 = true := by decide +kernel def policySharedUnitFixed1_range10017_10034 : ∀ i, 0x2721 ≤ i → i < 0x2732 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check10017 def policySharedUnitFixed1_check10034 : policySharedUnitFixed1Check 0x2732 0x2752 = true := by decide +kernel def policySharedUnitFixed1_range10034_10066 : ∀ i, 0x2732 ≤ i → i < 0x2752 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check10034 def policySharedUnitFixed1_check10066 : policySharedUnitFixed1Check 0x2752 0x2772 = true := by decide +kernel def policySharedUnitFixed1_range10066_10098 : ∀ i, 0x2752 ≤ i → i < 0x2772 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check10066 def policySharedUnitFixed1_check10098 : policySharedUnitFixed1Check 0x2772 0x2792 = true := by decide +kernel def policySharedUnitFixed1_range10098_10130 : ∀ i, 0x2772 ≤ i → i < 0x2792 → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check10098 def policySharedUnitFixed1_check10130 : policySharedUnitFixed1Check 0x2792 0x279b = true := by decide +kernel def policySharedUnitFixed1_range10130_10139 : ∀ i, 0x2792 ≤ i → i < 0x279b → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := policyBitActionIntervalGood_sound _ _ _ _ policySharedUnitFixed1_check10130 def policySharedUnitFixed1_all_checked : ∀ i, 0x21e8 ≤ i → i < 0x279b → policyBitActionGood policySharedUnitFixed1Db i (policySharedUnitFixed1Hints i) = true := (policyIntervalJoin _ 0x21e8 0x24c8 0x279b (policyIntervalJoin _ 0x21e8 0x2348 0x24c8 (policyIntervalJoin _ 0x21e8 0x2288 0x2348 (policyIntervalJoin _ 0x21e8 0x2228 0x2288 (policyIntervalJoin _ 0x21e8 0x2208 0x2228 policySharedUnitFixed1_range8680_8712 policySharedUnitFixed1_range8712_8744) (policyIntervalJoin _ 0x2228 0x2248 0x2288 policySharedUnitFixed1_range8744_8776 (policyIntervalJoin _ 0x2248 0x2268 0x2288 policySharedUnitFixed1_range8776_8808 policySharedUnitFixed1_range8808_8840))) (policyIntervalJoin _ 0x2288 0x22e8 0x2348 (policyIntervalJoin _ 0x2288 0x22a8 0x22e8 policySharedUnitFixed1_range8840_8872 (policyIntervalJoin _ 0x22a8 0x22c8 0x22e8 policySharedUnitFixed1_range8872_8904 policySharedUnitFixed1_range8904_8936)) (policyIntervalJoin _ 0x22e8 0x2308 0x2348 policySharedUnitFixed1_range8936_8968 (policyIntervalJoin _ 0x2308 0x2328 0x2348 policySharedUnitFixed1_range8968_9000 policySharedUnitFixed1_range9000_9032)))) (policyIntervalJoin _ 0x2348 0x2408 0x24c8 (policyIntervalJoin _ 0x2348 0x23a8 0x2408 (policyIntervalJoin _ 0x2348 0x2368 0x23a8 policySharedUnitFixed1_range9032_9064 (policyIntervalJoin _ 0x2368 0x2388 0x23a8 policySharedUnitFixed1_range9064_9096 policySharedUnitFixed1_range9096_9128)) (policyIntervalJoin _ 0x23a8 0x23c8 0x2408 policySharedUnitFixed1_range9128_9160 (policyIntervalJoin _ 0x23c8 0x23e8 0x2408 policySharedUnitFixed1_range9160_9192 policySharedUnitFixed1_range9192_9224))) (policyIntervalJoin _ 0x2408 0x2468 0x24c8 (policyIntervalJoin _ 0x2408 0x2428 0x2468 policySharedUnitFixed1_range9224_9256 (policyIntervalJoin _ 0x2428 0x2448 0x2468 policySharedUnitFixed1_range9256_9288 policySharedUnitFixed1_range9288_9320)) (policyIntervalJoin _ 0x2468 0x2488 0x24c8 policySharedUnitFixed1_range9320_9352 (policyIntervalJoin _ 0x2488 0x24a8 0x24c8 policySharedUnitFixed1_range9352_9384 policySharedUnitFixed1_range9384_9416))))) (policyIntervalJoin _ 0x24c8 0x2648 0x279b (policyIntervalJoin _ 0x24c8 0x2588 0x2648 (policyIntervalJoin _ 0x24c8 0x2528 0x2588 (policyIntervalJoin _ 0x24c8 0x24e8 0x2528 policySharedUnitFixed1_range9416_9448 (policyIntervalJoin _ 0x24e8 0x2508 0x2528 policySharedUnitFixed1_range9448_9480 policySharedUnitFixed1_range9480_9512)) (policyIntervalJoin _ 0x2528 0x2548 0x2588 policySharedUnitFixed1_range9512_9544 (policyIntervalJoin _ 0x2548 0x2568 0x2588 policySharedUnitFixed1_range9544_9576 policySharedUnitFixed1_range9576_9608))) (policyIntervalJoin _ 0x2588 0x25e8 0x2648 (policyIntervalJoin _ 0x2588 0x25a8 0x25e8 policySharedUnitFixed1_range9608_9640 (policyIntervalJoin _ 0x25a8 0x25c8 0x25e8 policySharedUnitFixed1_range9640_9672 policySharedUnitFixed1_range9672_9704)) (policyIntervalJoin _ 0x25e8 0x2608 0x2648 policySharedUnitFixed1_range9704_9736 (policyIntervalJoin _ 0x2608 0x2628 0x2648 policySharedUnitFixed1_range9736_9768 policySharedUnitFixed1_range9768_9800)))) (policyIntervalJoin _ 0x2648 0x2708 0x279b (policyIntervalJoin _ 0x2648 0x26a8 0x2708 (policyIntervalJoin _ 0x2648 0x2668 0x26a8 policySharedUnitFixed1_range9800_9832 (policyIntervalJoin _ 0x2668 0x2688 0x26a8 policySharedUnitFixed1_range9832_9864 policySharedUnitFixed1_range9864_9896)) (policyIntervalJoin _ 0x26a8 0x26c8 0x2708 policySharedUnitFixed1_range9896_9928 (policyIntervalJoin _ 0x26c8 0x26e8 0x2708 policySharedUnitFixed1_range9928_9960 policySharedUnitFixed1_range9960_9992))) (policyIntervalJoin _ 0x2708 0x2752 0x279b (policyIntervalJoin _ 0x2708 0x2721 0x2752 policySharedUnitFixed1_range9992_10017 (policyIntervalJoin _ 0x2721 0x2732 0x2752 policySharedUnitFixed1_range10017_10034 policySharedUnitFixed1_range10034_10066)) (policyIntervalJoin _ 0x2752 0x2772 0x279b policySharedUnitFixed1_range10066_10098 (policyIntervalJoin _ 0x2772 0x2792 0x279b policySharedUnitFixed1_range10098_10130 policySharedUnitFixed1_range10130_10139)))))) def policySharedUnit1_false_compact (P : Nat → Prop) (hi : ∀ i, 0 < i → i < 0x21e8 → policySignedClauseHolds P (policyFixedCompact1Db i)) : False := by apply policyBitGraph_false policySharedUnitFixed1Db 0x21e8 0x279b 0x279a policySharedUnitFixed1Hints P policySharedUnitFixed1_all_checked ?_ (by decide) (by decide) policySharedUnitFixed1_root_empty intro i hip hib simpa only [policySharedUnitFixed1Db, if_pos hib] using hi i hip hib end Bounty end PolicySubmissionPart65 /- Component PolicyCachedHotClosureFalse; SHA256 1f992bbee3b767c02029cd1ccf49dfce363d77f6377ceb57469921ca388ff90b. -/ section PolicySubmissionPart66 /- Complete finite contradiction, conditional only on asserted input facts. -/ namespace PolicyCachedHotClosure open ClosureSemantics Bounty def contradiction0 (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData0.program) input values) (ha : ∀ i : Nat, i < 36 → policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase0 ((PolicyAssertedPacked0.records i).headD 0))) : False := by apply policySharedUnit0_false_compact (fun v => (values (policyFixedCompact0Rename v - 1)).b = true) intro cid hp hi apply policyMappedDatabase0_model (fun v => (values (v - 1)).b = true) cid apply PolicyInitialFastCoverage0.covers_original (fun j => policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase0 j)) ?_ cid hp hi intro k hk i hi interval_cases k · exact PolicyMappedCircuitChecked0.sound input values he i hi · exact PolicyMappedRewriteParametricChecked0.sound input values he i hi · exact PolicyCachedHotArithmeticChecked0.sound input values he i hi · exact ha i hi def contradiction1 (input values : Valuation) (he : Equations (boundedProgram ClosureFixedWidthData1.program) input values) (ha : ∀ i : Nat, i < 34 → policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase1 ((PolicyAssertedPacked1.records i).headD 0))) : False := by apply policySharedUnit1_false_compact (fun v => (values (policyFixedCompact1Rename v - 1)).b = true) intro cid hp hi apply policyMappedDatabase1_model (fun v => (values (v - 1)).b = true) cid apply PolicyInitialFastCoverage1.covers_original (fun j => policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase1 j)) ?_ cid hp hi intro k hk i hi interval_cases k · exact PolicyMappedCircuitChecked1.sound input values he i hi · exact PolicyMappedRewriteParametricChecked1.sound input values he i hi · exact PolicyCachedHotArithmeticChecked1.sound input values he i hi · exact ha i hi end PolicyCachedHotClosure end PolicySubmissionPart66 /- Component ClosureAssertedCheck; SHA256 b1b31b6c0c15606432c29c9ab888a88faa693174539af829c27a55b07c55227d. -/ section PolicySubmissionPart67 /- A checked unit clause connects a semantic input fact to the SAT database. -/ namespace ClosureAssertedCheck open ClosureSemantics Bounty def checkEntry (clauses : Nat → List Int) (record : List Nat) : Bool := decide (clauses (record.headD 0) = [((record.getD 1 0 + 1 : Nat) : Int)]) def checkEntry_sound (clauses : Nat → List Int) (record : List Nat) (values : Valuation) (hc : checkEntry clauses record = true) (ht : (values (record.getD 1 0)).b = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (clauses (record.headD 0)) := by have hshape : clauses (record.headD 0) = [((record.getD 1 0 + 1 : Nat) : Int)] := of_decide_eq_true hc rw [hshape] refine ⟨((record.getD 1 0 + 1 : Nat) : Int), by simp, ?_⟩ apply (ClosureCircuit.signed_pos (fun v => (values (v - 1)).b) (Nat.succ_pos (record.getD 1 0))).mpr simpa using ht def checkBlock (clauses : Nat → List Int) (records : Nat → List Nat) (start count : Nat) : Bool := (List.range count).all fun i => checkEntry clauses (records (start + i)) def checkBlock_sound (clauses : Nat → List Int) (records : Nat → List Nat) (start count : Nat) (hc : checkBlock clauses records start count = true) (i : Nat) (hi : i < count) (values : Valuation) (ht : (values ((records (start + i)).getD 1 0)).b = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (clauses ((records (start + i)).headD 0)) := by have h : ∀ j ∈ List.range count, checkEntry clauses (records (start + j)) = true := by simpa only [checkBlock, List.all_eq_true] using hc exact checkEntry_sound clauses (records (start + i)) values (h i (List.mem_range.mpr hi)) ht end ClosureAssertedCheck end PolicySubmissionPart67 /- Component PolicyMappedAssertedChecked0; SHA256 7618dd4aa58eb215c6dc6f4d5d0cb197963c993bd2295d241dd644c16f25ffa3. -/ section PolicySubmissionPart68 namespace PolicyMappedAssertedChecked0 open ClosureSemantics Bounty ClosureAssertedCheck def test (start count : Nat) : Bool := checkBlock policyMappedDatabase0 PolicyAssertedPacked0.records start count def checked0 : test 0 16 = true := by decide +kernel def checked1 : test 16 16 = true := by decide +kernel def checked2 : test 32 4 = true := by decide +kernel def checked (i : Fin 3) : test (16*i.val) (min 16 (36-16*i.val)) = true := by fin_cases i · exact checked0 · exact checked1 · exact checked2 def sound (values : Valuation) (i : Nat) (hi : i < 36) (ht : (values ((PolicyAssertedPacked0.records i).getD 1 0)).b = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase0 ((PolicyAssertedPacked0.records i).headD 0)) := by have hb : i / 16 < 3 := by omega have hw : i % 16 < min 16 (36 - 16 * (i / 16)) := by omega have hid : 16 * (i / 16) + i % 16 = i := by omega have h := checkBlock_sound policyMappedDatabase0 PolicyAssertedPacked0.records (16 * (i / 16)) (min 16 (36 - 16 * (i / 16))) (checked ⟨i / 16, hb⟩) (i % 16) hw values (by simpa only [hid] using ht) simpa only [hid] using h end PolicyMappedAssertedChecked0 end PolicySubmissionPart68 /- Component PolicyMappedAssertedChecked1; SHA256 6882df2edffc9ff33352184dabb3dc0de7d2b0bbcb442d76b038eb0085bab67d. -/ section PolicySubmissionPart69 namespace PolicyMappedAssertedChecked1 open ClosureSemantics Bounty ClosureAssertedCheck def test (start count : Nat) : Bool := checkBlock policyMappedDatabase1 PolicyAssertedPacked1.records start count def checked0 : test 0 16 = true := by decide +kernel def checked1 : test 16 16 = true := by decide +kernel def checked2 : test 32 2 = true := by decide +kernel def checked (i : Fin 3) : test (16*i.val) (min 16 (34-16*i.val)) = true := by fin_cases i · exact checked0 · exact checked1 · exact checked2 def sound (values : Valuation) (i : Nat) (hi : i < 34) (ht : (values ((PolicyAssertedPacked1.records i).getD 1 0)).b = true) : policySignedClauseHolds (fun v => (values (v - 1)).b = true) (policyMappedDatabase1 ((PolicyAssertedPacked1.records i).headD 0)) := by have hb : i / 16 < 3 := by omega have hw : i % 16 < min 16 (34 - 16 * (i / 16)) := by omega have hid : 16 * (i / 16) + i % 16 = i := by omega have h := checkBlock_sound policyMappedDatabase1 PolicyAssertedPacked1.records (16 * (i / 16)) (min 16 (34 - 16 * (i / 16))) (checked ⟨i / 16, hb⟩) (i % 16) hw values (by simpa only [hid] using ht) simpa only [hid] using h end PolicyMappedAssertedChecked1 end PolicySubmissionPart69 /- Component ClosureInputModel; SHA256 3aaafcaf11f9c588d0552d8a0dda8bec88297a92528ac1d84f674aafb612ba85. -/ section PolicySubmissionPart70 /- Input slots and local semantic bridges for the original assertion prefix. -/ namespace ClosureInputModel open ClosureSemantics noncomputable def inputValuation (X Y : Rat) (p : Nat → Prop) (r : Nat → Rat) : Valuation := fun slot => if slot = 0 then ratValue X else if slot = 1 then ratValue Y else if slot % 2 = 0 then boolValue (@decide (p ((slot - 2) / 2)) (Classical.propDecidable _)) else ratValue (r ((slot - 3) / 2)) def programModel_eq_raw (raw : Nat → Node) (input : Valuation) (i : Nat) (h : ∀ j ∈ (raw i).children, j < i) : programModel raw input i = evalNode input (programModel raw input) (raw i) := by simpa only [boundedProgram_eq raw i h] using programModel_equations raw input i def programModel_agrees_below (raw : Nat → Node) (input values : Valuation) (N : Nat) (h : ∀ i < N, values i = evalNode input values (boundedProgram raw i)) : ∀ i < N, programModel raw input i = values i := by intro i induction i using Nat.strong_induction_on with | h i ih => intro hi calc programModel raw input i = evalNode input (programModel raw input) (boundedProgram raw i) := programModel_equations raw input i _ = evalNode input values (boundedProgram raw i) := by apply evalNode_congr intro j hj have hji := boundedProgram_children raw i j hj exact ih j hji (hji.trans hi) _ = values i := (h i hi).symm end ClosureInputModel end PolicySubmissionPart70 /- Component ClosurePrefixAdapter; SHA256 7955e120dba069fa5b9136f79741f570bbedf0ed6857d55001eaa9978a189e4a. -/ section PolicySubmissionPart71 /- A short-record prefix adapter, whose records can be checked against packed data. -/ namespace ClosurePrefixAdapter open ClosureSemantics ClosurePackedProgram PackedNatTable abbrev Pattern := Op × List Nat def interval_from_fin {P : Nat → Prop} (a n : Nat) (h : ∀ i : Fin n, P (a + i.val)) : ∀ i, a ≤ i → i < a+n → P i := by intro i ha hi simpa only [Nat.add_sub_of_le ha] using h ⟨i-a, by omega⟩ def interval_join {P : Nat → Prop} (a b c : Nat) (left : ∀ i, a ≤ i → i < b → P i) (right : ∀ i, b ≤ i → i < c → P i) : ∀ i, a ≤ i → i < c → P i := by intro i ha hc by_cases hb : i < b · exact left i ha hb · exact right i (by omega) hc def zigzag : Int → Nat | .ofNat n => 2 * n | .negSucc n => 2 * n + 1 def Pattern.record (p : Pattern) : List Nat := match p.1 with | .input k => [2,k] | .qConst q => [3,zigzag q.num,q.den] | .zConst z => [4,zigzag z] | .bConst false => [0] | .bConst true => [1] | .alias => 5 :: p.2 | .bNot => 6 :: p.2 | .bOr => 7 :: p.2 | .bAnd => 8 :: p.2 | .bEq => 9 :: p.2 | .ite => 10 :: p.2 | .qEq => 11 :: p.2 | .zEq => 12 :: p.2 | .qLe => 13 :: p.2 | .zLe => 14 :: p.2 | .qLt => 15 :: p.2 | .zLt => 16 :: p.2 | .qAdd => 17 :: p.2 | .zAdd => 18 :: p.2 | .qMul => 19 :: p.2 | .zMul => 20 :: p.2 | .qNeg => 21 :: p.2 | .zNeg => 22 :: p.2 | .qSub => 23 :: p.2 | .zSub => 24 :: p.2 | .qDiv => 25 :: p.2 def Pattern.node (p : Pattern) (i : Nat) : Node := match p.1 with | .input k => ⟨.input k, []⟩ | .qConst q => ⟨.qConst q, []⟩ | .zConst z => ⟨.zConst z, []⟩ | .bConst b => ⟨.bConst b, []⟩ | op => ⟨op, p.2.map (fun d => i - d)⟩ def indexAt (indices : Table Nat) (i : Nat) : Nat := (indices.get 0 (i / 4) >>> (12 * (i % 4))) &&& 0xfff def patternAt (dictionary : Table Pattern) (indices : Table Nat) (i : Nat) : Pattern := dictionary.get ⟨.bConst false, []⟩ (indexAt indices i) def program (dictionary : Table Pattern) (indices : Table Nat) (i : Nat) : Node := (patternAt dictionary indices i).node i def check (source : Nat → Node) (dictionary : Table Pattern) (indices : Table Nat) (N i : Nat) : Bool := if 0 < indexAt indices i then (ClosurePattern.sameOp (source i).op (program dictionary indices i).op && ((source i).children == (program dictionary indices i).children)) && (program dictionary indices i).children.all (fun j => decide (j < N ∧ 0 < indexAt indices j)) else true def check_sound (source : Nat → Node) (dictionary : Table Pattern) (indices : Table Nat) (N i : Nat) (h : check source dictionary indices N i = true) (hi : 0 < indexAt indices i) : source i = program dictionary indices i ∧ ∀ j ∈ (program dictionary indices i).children, j < N ∧ 0 < indexAt indices j := by simp only [check, if_pos hi, Bool.and_eq_true, List.all_eq_true, decide_eq_true_eq] at h have ho := ClosurePattern.sameOp_sound _ _ h.1.1 have hc : (source i).children = (program dictionary indices i).children := by simpa using h.1.2 refine ⟨?_, h.2⟩ have he : source i = ⟨(source i).op, (source i).children⟩ := rfl rw [he, ho, hc] def model_eq_on_raw (source target : Nat → Node) (input : Valuation) (N : Nat) (S : Nat → Prop) (hshape : ∀ i < N, S i → source i = target i) (hclosed : ∀ i < N, S i → ∀ j ∈ (target i).children, j < N ∧ S j) : ∀ i < N, S i → programModel source input i = programModel target input i := by intro i induction i using Nat.strong_induction_on with | h i ih => intro hi hs rw [programModel_equations source input i, programModel_equations target input i] have hb : boundedProgram source i = boundedProgram target i := by unfold boundedProgram rw [hshape i hi hs] rw [hb] apply evalNode_congr intro j hj have hji := boundedProgram_children target i j hj have hjraw : j ∈ (target i).children := List.mem_of_mem_filter hj have hjc := hclosed i hi hs j hjraw exact ih j hji hjc.1 hjc.2 def checked_model_eq (source : Nat → Node) (dictionary : Table Pattern) (indices : Table Nat) (input : Valuation) (N : Nat) (h : ∀ i < N, check source dictionary indices N i = true) : ∀ i < N, 0 < indexAt indices i → programModel source input i = programModel (program dictionary indices) input i := by apply model_eq_on_raw source (program dictionary indices) input N (fun i => 0 < indexAt indices i) · intro i hi hs exact (check_sound source dictionary indices N i (h i hi) hs).1 · intro i hi hs exact (check_sound source dictionary indices N i (h i hi) hs).2 end ClosurePrefixAdapter end PolicySubmissionPart71 /- Component ClosurePrefixAdapterData; SHA256 a517da09d06a3a19f526e3971aa63d97bf8792658f79b62361ec41fc0fa2cb16. -/ section PolicySubmissionPart72 /- Shared short-record dictionary for the exact original input prefixes. -/ namespace ClosurePrefixAdapterData open ClosurePrefixAdapter PackedNatTable def dictionaryLLLLL : Table Pattern := .leaf #[ ⟨.bConst false, []⟩, ⟨.qConst (1), []⟩, ⟨.qConst (4), []⟩, ⟨.qDiv, [2, 1]⟩, ⟨.input 0, []⟩, ⟨.qLt, [2, 1]⟩, ⟨.qLe, [2, 5]⟩, ⟨.qConst (3), []⟩, ⟨.qDiv, [7, 1]⟩, ⟨.input 1, []⟩, ⟨.qLe, [2, 10]⟩, ⟨.bConst false, []⟩, ⟨.qConst (5), []⟩, ⟨.qDiv, [3, 19]⟩, ⟨.qConst (0x1000), []⟩, ⟨.qDiv, [22, 1]⟩, ⟨.qMul, [1, 20]⟩, ⟨.qMul, [1, 23]⟩, ⟨.qConst (10), []⟩, ⟨.qConst (9), []⟩, ⟨.qConst (0x19a1), []⟩, ⟨.qDiv, [33, 1]⟩, ⟨.qMul, [1, 26]⟩, ⟨.qMul, [1, 29]⟩, ⟨.qDiv, [39, 34]⟩] def dictionaryLLLLR : Table Pattern := .leaf #[ ⟨.zConst (1), []⟩, ⟨.zConst (0), []⟩, ⟨.qConst (2), []⟩, ⟨.bConst true, []⟩, ⟨.input 37, []⟩, ⟨.input 36, []⟩, ⟨.qConst (0x88b), []⟩, ⟨.qDiv, [0xd5, 1]⟩, ⟨.qMul, [1, 0xce]⟩, ⟨.qMul, [1, 0xd1]⟩, ⟨.input 39, []⟩, ⟨.input 38, []⟩, ⟨.qConst (0x4c9), []⟩, ⟨.qDiv, [0x123, 1]⟩, ⟨.qLe, [0x10c, 1]⟩, ⟨.ite, [1, 0x10d, 0x10e]⟩, ⟨.qLe, [81, 5]⟩, ⟨.ite, [1, 82, 83]⟩, ⟨.input 41, []⟩, ⟨.input 40, []⟩, ⟨.qConst (0x36b), []⟩, ⟨.qDiv, [0x173, 1]⟩, ⟨.qConst (0x400), []⟩, ⟨.qDiv, [0x175, 1]⟩, ⟨.qMul, [1, 0x173]⟩, ⟨.qMul, [1, 0x176]⟩] def dictionaryLLLL : Table Pattern := .branch 25 dictionaryLLLLL dictionaryLLLLR def dictionaryLLLRL : Table Pattern := .leaf #[ ⟨.qLe, [1, 5]⟩, ⟨.ite, [1, 2, 3]⟩, ⟨.qLe, [0xa5, 9]⟩, ⟨.ite, [1, 0xa6, 0xa7]⟩, ⟨.input 43, []⟩, ⟨.input 42, []⟩, ⟨.qConst (0x271), []⟩, ⟨.qDiv, [0x1c7, 1]⟩, ⟨.qLe, [81, 1]⟩, ⟨.qMul, [0x1b6, 1]⟩, ⟨.qLt, [4, 1]⟩, ⟨.qConst (0x2d9), []⟩, ⟨.qDiv, [0x1cd, 1]⟩, ⟨.qMul, [1, 0x1c6]⟩, ⟨.qMul, [1, 0x1c9]⟩, ⟨.qLe, [1, 9]⟩, ⟨.qMul, [0x1b3, 1]⟩, ⟨.qLe, [1, 12]⟩, ⟨.qMul, [0x1ac, 3]⟩, ⟨.qLt, [14, 1]⟩, ⟨.bAnd, [0x15d, 11, 3, 1]⟩, ⟨.ite, [1, 0x1ab, 0x1aa]⟩, ⟨.qConst (0xc35), []⟩, ⟨.qDiv, [0x1d9, 1]⟩, ⟨.qLe, [0x1c2, 1]⟩, ⟨.ite, [1, 0x1c3, 0x1c4]⟩] def dictionaryLLLRR : Table Pattern := .leaf #[ ⟨.qMul, [0x1ac, 1]⟩, ⟨.qLe, [1, 4]⟩, ⟨.bNot, [1]⟩, ⟨.qLe, [0x1bc, 6]⟩, ⟨.ite, [1, 0x1bd, 0x1be]⟩, ⟨.qMul, [0x1b1, 1]⟩, ⟨.bAnd, [6, 1]⟩, ⟨.ite, [1, 0x1b9, 0x1b8]⟩, ⟨.zSub, [15, 1]⟩, ⟨.zLe, [0x1ba, 1]⟩, ⟨.zEq, [2, 0x1bb]⟩, ⟨.qDiv, [14, 0x1b9]⟩, ⟨.ite, [13, 14, 1]⟩, ⟨.qDiv, [10, 0x1e5]⟩, ⟨.ite, [10, 11, 1]⟩, ⟨.qLe, [1, 3]⟩, ⟨.ite, [1, 4, 2]⟩, ⟨.qLt, [3, 5]⟩, ⟨.qDiv, [6, 0x1ef]⟩, ⟨.qLe, [5, 1]⟩, ⟨.ite, [1, 2, 6]⟩, ⟨.qDiv, [7, 0x1ed]⟩, ⟨.qLe, [1, 10]⟩, ⟨.ite, [1, 11, 2]⟩, ⟨.ite, [7, 4, 1]⟩, ⟨.ite, [15, 9, 1]⟩] def dictionaryLLLR : Table Pattern := .branch 26 dictionaryLLLRL dictionaryLLLRR def dictionaryLLL : Table Pattern := .branch 51 dictionaryLLLL dictionaryLLLR def dictionaryLLRLL : Table Pattern := .leaf #[ ⟨.qLe, [1, 53]⟩, ⟨.ite, [17, 32, 11]⟩, ⟨.qLe, [55, 1]⟩, ⟨.qLt, [56, 2]⟩, ⟨.ite, [20, 2, 1]⟩, ⟨.bAnd, [22, 5, 1]⟩, ⟨.bAnd, [33, 28]⟩, ⟨.ite, [1, 0x1d3, 0x1d2]⟩, ⟨.zSub, [41, 1]⟩, ⟨.zLe, [0x1d4, 1]⟩, ⟨.zEq, [2, 0x1d5]⟩, ⟨.qLe, [35, 40]⟩, ⟨.ite, [1, 41, 36]⟩, ⟨.qLt, [37, 42]⟩, ⟨.qDiv, [43, 0x205]⟩, ⟨.qLe, [39, 1]⟩, ⟨.ite, [1, 2, 40]⟩, ⟨.qDiv, [41, 0x203]⟩, ⟨.qLe, [1, 47]⟩, ⟨.ite, [1, 48, 2]⟩, ⟨.ite, [11, 9, 1]⟩, ⟨.qLe, [1, 75]⟩, ⟨.ite, [13, 54, 11]⟩, ⟨.qLe, [77, 1]⟩, ⟨.qLt, [78, 2]⟩] def dictionaryLLRLR : Table Pattern := .leaf #[ ⟨.ite, [16, 2, 1]⟩, ⟨.bAnd, [18, 5, 1]⟩, ⟨.ite, [79, 23, 1]⟩, ⟨.qConst (6), []⟩, ⟨.bEq, [0x1d4, 0x291]⟩, ⟨.qMul, [0x2a1, 0x1d7]⟩, ⟨.qMul, [0x67, 0x1d8]⟩, ⟨.ite, [3, 2, 1]⟩, ⟨.bEq, [0x1fa, 0x24e]⟩, ⟨.ite, [1, 38, 37]⟩, ⟨.input 24, []⟩, ⟨.input 25, []⟩, ⟨.qConst (0xf5), []⟩, ⟨.qDiv, [0x2dc, 1]⟩, ⟨.qConst (0x100), []⟩, ⟨.qDiv, [0x2de, 1]⟩, ⟨.qMul, [1, 0x2dc]⟩, ⟨.qMul, [1, 0x2df]⟩, ⟨.qMul, [0x2cf, 1]⟩, ⟨.qLt, [8, 1]⟩, ⟨.qLe, [0x116, 9]⟩, ⟨.ite, [1, 0x117, 0x118]⟩, ⟨.qMul, [0x2c8, 1]⟩, ⟨.qMul, [0x2c1, 3]⟩, ⟨.bAnd, [0x272, 7, 3, 1]⟩, ⟨.ite, [1, 0x2c0, 0x2bf]⟩] def dictionaryLLRL : Table Pattern := .branch 25 dictionaryLLRLL dictionaryLLRLR def dictionaryLLRRL : Table Pattern := .leaf #[ ⟨.qMul, [0x2bd, 0x1c8]⟩, ⟨.qLe, [1, 0x1cb]⟩, ⟨.qMul, [0x2bf, 0x1c6]⟩, ⟨.qLe, [1, 0x1cd]⟩, ⟨.bAnd, [3, 1]⟩, ⟨.ite, [1, 0x2c6, 0x2c5]⟩, ⟨.zSub, [7, 1]⟩, ⟨.zLe, [0x2c7, 1]⟩, ⟨.qConst (0x1324), []⟩, ⟨.qDiv, [0x2f0, 1]⟩, ⟨.zEq, [4, 0x2ca]⟩, ⟨.qLe, [0x1cf, 0x1d3]⟩, ⟨.ite, [1, 0x1d4, 0x1d0]⟩, ⟨.qLt, [0x1d1, 0x1d5]⟩, ⟨.qDiv, [0x1d6, 0x2fa]⟩, ⟨.qLe, [0x1d3, 1]⟩, ⟨.ite, [1, 2, 0x1d4]⟩, ⟨.qDiv, [0x1d5, 0x2f8]⟩, ⟨.qLe, [1, 0x1da]⟩, ⟨.ite, [1, 0x1db, 2]⟩, ⟨.qLe, [1, 13]⟩, ⟨.ite, [1, 14, 2]⟩, ⟨.bEq, [0x1e4, 0x2f5]⟩, ⟨.qMul, [0x305, 0x1e7]⟩, ⟨.qMul, [0xcb, 0x1e8]⟩, ⟨.ite, [1, 6, 2]⟩] def dictionaryLLRRR : Table Pattern := .leaf #[ ⟨.qLe, [0x67, 1]⟩, ⟨.ite, [1, 2, 0x68]⟩, ⟨.qLe, [11, 1]⟩, ⟨.ite, [23, 0x1eb, 21]⟩, ⟨.qLe, [3, 1]⟩, ⟨.qLt, [4, 2]⟩, ⟨.ite, [26, 2, 1]⟩, ⟨.bAnd, [30, 5, 1]⟩, ⟨.bNot, [37]⟩, ⟨.bNot, [36]⟩, ⟨.bAnd, [2, 1]⟩, ⟨.ite, [1, 0x2ea, 0x2e9]⟩, ⟨.zSub, [43, 1]⟩, ⟨.zLe, [0x2eb, 1]⟩, ⟨.zEq, [2, 0x2ec]⟩, ⟨.qDiv, [0x1f5, 0x2ea]⟩, ⟨.ite, [45, 46, 1]⟩, ⟨.qDiv, [45, 0x316]⟩, ⟨.qDiv, [6, 0x320]⟩, ⟨.qDiv, [7, 0x31e]⟩, ⟨.qLe, [1, 51]⟩, ⟨.ite, [1, 52, 2]⟩, ⟨.bEq, [0x20a, 0x2b2]⟩, ⟨.qLe, [9, 1]⟩, ⟨.ite, [25, 0x20f, 19]⟩, ⟨.ite, [28, 2, 1]⟩] def dictionaryLLRR : Table Pattern := .branch 26 dictionaryLLRRL dictionaryLLRRR def dictionaryLLR : Table Pattern := .branch 51 dictionaryLLRL dictionaryLLRR def dictionaryLL : Table Pattern := .branch 0x67 dictionaryLLL dictionaryLLR def dictionaryLRLLL : Table Pattern := .leaf #[ ⟨.bOr, [37, 1]⟩, ⟨.input 26, []⟩, ⟨.bNot, [39]⟩, ⟨.ite, [76, 4, 1]⟩, ⟨.bEq, [3, 1]⟩, ⟨.input 27, []⟩, ⟨.ite, [5, 13, 49]⟩, ⟨.qEq, [2, 1]⟩, ⟨.qConst (0xaf), []⟩, ⟨.qDiv, [0x340, 1]⟩, ⟨.qLe, [97, 1]⟩, ⟨.ite, [1, 98, 99]⟩, ⟨.qMul, [0x32f, 1]⟩, ⟨.qConst (0xf3), []⟩, ⟨.qDiv, [0x346, 1]⟩, ⟨.qMul, [1, 0x33f]⟩, ⟨.qMul, [1, 0x342]⟩, ⟨.qMul, [0x32c, 1]⟩, ⟨.qMul, [0x325, 3]⟩, ⟨.bAnd, [0x2d6, 11, 3, 1]⟩, ⟨.ite, [1, 0x324, 0x323]⟩, ⟨.qMul, [0x321, 0x1d8]⟩, ⟨.qLe, [1, 0x1df]⟩, ⟨.qMul, [0x323, 0x1d6]⟩, ⟨.qLe, [1, 0x1e1]⟩] def dictionaryLRLLR : Table Pattern := .leaf #[ ⟨.ite, [1, 0x32a, 0x329]⟩, ⟨.zLe, [0x32b, 1]⟩, ⟨.qConst (0xdac), []⟩, ⟨.qDiv, [0x354, 1]⟩, ⟨.zEq, [4, 0x32e]⟩, ⟨.qLe, [0x1df, 0x1e3]⟩, ⟨.ite, [1, 0x1e4, 0x1e0]⟩, ⟨.qLt, [0x1e1, 0x1e5]⟩, ⟨.qDiv, [0x1e6, 0x35e]⟩, ⟨.qLe, [0x1e3, 1]⟩, ⟨.ite, [1, 2, 0x1e4]⟩, ⟨.qDiv, [0x1e5, 0x35c]⟩, ⟨.qLe, [1, 0x1ea]⟩, ⟨.ite, [1, 0x1eb, 2]⟩, ⟨.bEq, [0x1f8, 0x359]⟩, ⟨.qMul, [0x369, 0x1fb]⟩, ⟨.qMul, [0x12f, 0x1fc]⟩, ⟨.ite, [23, 0x1ff, 21]⟩, ⟨.ite, [1, 0x34e, 0x34d]⟩, ⟨.zLe, [0x34f, 1]⟩, ⟨.zEq, [2, 0x350]⟩, ⟨.qDiv, [0x205, 0x34e]⟩, ⟨.qDiv, [45, 0x37a]⟩, ⟨.qDiv, [6, 0x384]⟩, ⟨.qDiv, [7, 0x382]⟩, ⟨.bEq, [0x21e, 0x316]⟩] def dictionaryLRLL : Table Pattern := .branch 25 dictionaryLRLLL dictionaryLRLLR def dictionaryLRLRL : Table Pattern := .leaf #[ ⟨.ite, [25, 0x223, 19]⟩, ⟨.input 28, []⟩, ⟨.input 29, []⟩, ⟨.qConst (0x7d), []⟩, ⟨.qDiv, [0x3a4, 1]⟩, ⟨.qLe, [0xc5, 1]⟩, ⟨.ite, [1, 0xc6, 0xc7]⟩, ⟨.qMul, [0x393, 1]⟩, ⟨.qLe, [97, 5]⟩, ⟨.qMul, [0x38c, 1]⟩, ⟨.qLe, [1, 8]⟩, ⟨.qMul, [0x385, 3]⟩, ⟨.qLt, [10, 1]⟩, ⟨.bAnd, [0x336, 7, 3, 1]⟩, ⟨.ite, [1, 0x384, 0x383]⟩, ⟨.qMul, [0x381, 0x1e8]⟩, ⟨.qLe, [1, 0x1eb]⟩, ⟨.qMul, [0x383, 0x1e2]⟩, ⟨.qLe, [1, 0x1ed]⟩, ⟨.ite, [1, 0x38a, 0x389]⟩, ⟨.zLe, [0x38b, 1]⟩, ⟨.qConst (0x9c4), []⟩, ⟨.qDiv, [0x3b4, 1]⟩, ⟨.zEq, [4, 0x38e]⟩, ⟨.qLe, [0x1eb, 0x1f3]⟩, ⟨.ite, [1, 0x1f4, 0x1ec]⟩] def dictionaryLRLRR : Table Pattern := .leaf #[ ⟨.qLt, [0x1ed, 0x1f5]⟩, ⟨.qDiv, [0x1f6, 0x3be]⟩, ⟨.qLe, [0x1ef, 1]⟩, ⟨.ite, [1, 2, 0x1f0]⟩, ⟨.qDiv, [0x1f1, 0x3bc]⟩, ⟨.qLe, [1, 0x1fa]⟩, ⟨.ite, [1, 0x1fb, 2]⟩, ⟨.bEq, [0x204, 0x3b9]⟩, ⟨.qMul, [0x3c9, 0x207]⟩, ⟨.qMul, [0x18f, 0x208]⟩, ⟨.qLe, [99, 1]⟩, ⟨.ite, [1, 2, 0x64]⟩, ⟨.ite, [23, 0x20b, 21]⟩, ⟨.ite, [1, 0x3ae, 0x3ad]⟩, ⟨.zLe, [0x3af, 1]⟩, ⟨.zEq, [2, 0x3b0]⟩, ⟨.qDiv, [0x215, 0x3ae]⟩, ⟨.qDiv, [45, 0x3da]⟩, ⟨.qDiv, [6, 0x3e4]⟩, ⟨.qDiv, [7, 0x3e2]⟩, ⟨.bEq, [0x22a, 0x376]⟩, ⟨.ite, [25, 0x22f, 19]⟩, ⟨.input 30, []⟩, ⟨.input 31, []⟩, ⟨.qConst (81), []⟩, ⟨.qDiv, [0x409, 1]⟩] def dictionaryLRLR : Table Pattern := .branch 26 dictionaryLRLRL dictionaryLRLRR def dictionaryLRL : Table Pattern := .branch 51 dictionaryLRLL dictionaryLRLR def dictionaryLRRLL : Table Pattern := .leaf #[ ⟨.qMul, [1, 0x402]⟩, ⟨.qMul, [1, 0x405]⟩, ⟨.bEq, [0x158, 0x41c]⟩, ⟨.qMul, [0x42c, 0x155]⟩, ⟨.qMul, [0x1f2, 0x156]⟩, ⟨.bEq, [0x182, 0x3dd]⟩, ⟨.ite, [1, 42, 41]⟩, ⟨.qConst (49), []⟩, ⟨.qDiv, [0x46d, 1]⟩, ⟨.qConst (64), []⟩, ⟨.qDiv, [0x46f, 1]⟩, ⟨.qMul, [1, 0x46d]⟩, ⟨.qMul, [1, 0x470]⟩, ⟨.qMul, [0x460, 1]⟩, ⟨.qLe, [0x6b, 9]⟩, ⟨.ite, [1, 0x6c, 0x6d]⟩, ⟨.qMul, [0x459, 1]⟩, ⟨.qMul, [0x452, 3]⟩, ⟨.bAnd, [0x403, 7, 3, 1]⟩, ⟨.ite, [1, 0x451, 0x450]⟩, ⟨.qMul, [0x44e, 0x19c]⟩, ⟨.qLe, [1, 0x1a3]⟩, ⟨.qMul, [0x450, 0x19a]⟩, ⟨.qLe, [1, 0x1a5]⟩, ⟨.ite, [1, 0x457, 0x456]⟩, ⟨.zLe, [0x458, 1]⟩] def dictionaryLRRLR : Table Pattern := .leaf #[ ⟨.qConst (0x3d4), []⟩, ⟨.qDiv, [0x481, 1]⟩, ⟨.zEq, [4, 0x45b]⟩, ⟨.qLe, [0x1a3, 0x1a7]⟩, ⟨.ite, [1, 0x1a8, 0x1a4]⟩, ⟨.qLt, [0x1a5, 0x1a9]⟩, ⟨.qDiv, [0x1aa, 0x48b]⟩, ⟨.qLe, [0x1a7, 1]⟩, ⟨.ite, [1, 2, 0x1a8]⟩, ⟨.qDiv, [0x1a9, 0x489]⟩, ⟨.qLe, [1, 0x1ae]⟩, ⟨.ite, [1, 0x1af, 2]⟩, ⟨.bEq, [0x15e, 0x486]⟩, ⟨.qMul, [0x496, 0x15b]⟩, ⟨.qMul, [0x25c, 0x15c]⟩, ⟨.qLe, [0x6d, 1]⟩, ⟨.ite, [1, 2, 0x6e]⟩, ⟨.ite, [23, 0x1c3, 21]⟩, ⟨.ite, [1, 0x47b, 0x47a]⟩, ⟨.zLe, [0x47c, 1]⟩, ⟨.zEq, [2, 0x47d]⟩, ⟨.qDiv, [0x1c9, 0x47b]⟩, ⟨.qDiv, [45, 0x4a7]⟩, ⟨.qDiv, [6, 0x4b1]⟩, ⟨.qDiv, [7, 0x4af]⟩, ⟨.bEq, [0x184, 0x443]⟩] def dictionaryLRRL : Table Pattern := .branch 26 dictionaryLRRLL dictionaryLRRLR def dictionaryLRRRL : Table Pattern := .leaf #[ ⟨.qLe, [0x69, 1]⟩, ⟨.ite, [1, 2, 0x6a]⟩, ⟨.ite, [25, 0x1e7, 19]⟩, ⟨.input 16, []⟩, ⟨.input 17, []⟩, ⟨.qConst (35), []⟩, ⟨.qDiv, [0x4d1, 1]⟩, ⟨.qMul, [0x4c0, 1]⟩, ⟨.qLe, [0xcb, 5]⟩, ⟨.ite, [1, 0xcc, 0xcd]⟩, ⟨.qMul, [0x4b9, 1]⟩, ⟨.qMul, [0x4b2, 3]⟩, ⟨.bAnd, [0x463, 7, 3, 1]⟩, ⟨.ite, [1, 0x4b1, 0x4b0]⟩, ⟨.qMul, [0x4ae, 0x19c]⟩, ⟨.qLe, [1, 0x19f]⟩, ⟨.qMul, [0x4b0, 0x196]⟩, ⟨.qLe, [1, 0x1a1]⟩, ⟨.ite, [1, 0x4b7, 0x4b6]⟩, ⟨.zLe, [0x4b8, 1]⟩, ⟨.qConst (0x2bc), []⟩, ⟨.qDiv, [0x4e1, 1]⟩, ⟨.zEq, [4, 0x4bb]⟩, ⟨.qLe, [0x19f, 0x1a7]⟩, ⟨.ite, [1, 0x1a8, 0x1a0]⟩, ⟨.qLt, [0x1a1, 0x1a9]⟩] def dictionaryLRRRR : Table Pattern := .leaf #[ ⟨.qDiv, [0x1aa, 0x4eb]⟩, ⟨.qLe, [0x1a3, 1]⟩, ⟨.ite, [1, 2, 0x1a4]⟩, ⟨.qDiv, [0x1a5, 0x4e9]⟩, ⟨.bEq, [0x15a, 0x4e6]⟩, ⟨.qMul, [0x4f6, 0x157]⟩, ⟨.qMul, [0x2bc, 0x158]⟩, ⟨.ite, [23, 0x1bf, 21]⟩, ⟨.ite, [1, 0x4db, 0x4da]⟩, ⟨.zLe, [0x4dc, 1]⟩, ⟨.zEq, [2, 0x4dd]⟩, ⟨.qDiv, [0x1c9, 0x4db]⟩, ⟨.qDiv, [45, 0x507]⟩, ⟨.qDiv, [6, 0x511]⟩, ⟨.qDiv, [7, 0x50f]⟩, ⟨.bEq, [0x180, 0x4a3]⟩, ⟨.ite, [25, 0x1e3, 19]⟩, ⟨.input 18, []⟩, ⟨.input 19, []⟩, ⟨.qConst (25), []⟩, ⟨.qDiv, [0x531, 1]⟩, ⟨.qLe, [0xc1, 1]⟩, ⟨.ite, [1, 0xc2, 0xc3]⟩, ⟨.qMul, [0x520, 1]⟩, ⟨.qConst (27), []⟩, ⟨.qDiv, [0x537, 1]⟩] def dictionaryLRRR : Table Pattern := .branch 26 dictionaryLRRRL dictionaryLRRRR def dictionaryLRR : Table Pattern := .branch 52 dictionaryLRRL dictionaryLRRR def dictionaryLR : Table Pattern := .branch 0x67 dictionaryLRL dictionaryLRR def dictionaryL : Table Pattern := .branch 0xce dictionaryLL dictionaryLR def dictionaryRLLLL : Table Pattern := .leaf #[ ⟨.qMul, [1, 0x530]⟩, ⟨.qMul, [1, 0x533]⟩, ⟨.qMul, [0x51d, 1]⟩, ⟨.qMul, [0x516, 3]⟩, ⟨.bAnd, [0x4c7, 11, 3, 1]⟩, ⟨.ite, [1, 0x515, 0x514]⟩, ⟨.qMul, [0x512, 0x19c]⟩, ⟨.qMul, [0x514, 0x19a]⟩, ⟨.ite, [1, 0x51b, 0x51a]⟩, ⟨.zLe, [0x51c, 1]⟩, ⟨.qConst (0x1f4), []⟩, ⟨.qDiv, [0x545, 1]⟩, ⟨.zEq, [4, 0x51f]⟩, ⟨.qDiv, [0x1aa, 0x54f]⟩, ⟨.qDiv, [0x1a9, 0x54d]⟩, ⟨.bEq, [0x15e, 0x54a]⟩, ⟨.qMul, [0x55a, 0x15b]⟩, ⟨.qMul, [0x320, 0x15c]⟩, ⟨.ite, [1, 0x53f, 0x53e]⟩, ⟨.zLe, [0x540, 1]⟩, ⟨.zEq, [2, 0x541]⟩, ⟨.qDiv, [0x1c9, 0x53f]⟩, ⟨.qDiv, [45, 0x56b]⟩, ⟨.qDiv, [6, 0x575]⟩, ⟨.qDiv, [7, 0x573]⟩] def dictionaryRLLLR : Table Pattern := .leaf #[ ⟨.bEq, [0x184, 0x507]⟩, ⟨.input 20, []⟩, ⟨.input 21, []⟩, ⟨.qConst (16), []⟩, ⟨.qDiv, [0x596, 1]⟩, ⟨.qMul, [1, 0x594]⟩, ⟨.qMul, [1, 0x597]⟩, ⟨.bEq, [0xf4, 0x5ad]⟩, ⟨.qMul, [0x5bd, 0xf1]⟩, ⟨.qMul, [0x383, 0xf2]⟩, ⟨.bEq, [0x11e, 0x56e]⟩, ⟨.input 8, []⟩, ⟨.input 9, []⟩, ⟨.qConst (7), []⟩, ⟨.qDiv, [0x5fe, 1]⟩, ⟨.ite, [1, 0x68, 0x69]⟩, ⟨.qMul, [0x5ed, 1]⟩, ⟨.qDiv, [0x603, 0x5e5]⟩, ⟨.qMul, [1, 0x5fc]⟩, ⟨.qMul, [1, 0x5ff]⟩, ⟨.qMul, [0x5e9, 1]⟩, ⟨.qLe, [1, 11]⟩, ⟨.qMul, [0x5e2, 3]⟩, ⟨.qLt, [13, 1]⟩, ⟨.bAnd, [0x593, 10, 3, 1]⟩, ⟨.ite, [1, 0x5e1, 0x5e0]⟩] def dictionaryRLLL : Table Pattern := .branch 25 dictionaryRLLLL dictionaryRLLLR def dictionaryRLLRL : Table Pattern := .leaf #[ ⟨.qMul, [0x5de, 0x13b]⟩, ⟨.qLe, [1, 0x13e]⟩, ⟨.qMul, [0x5e0, 0x139]⟩, ⟨.qLe, [1, 0x140]⟩, ⟨.ite, [1, 0x5e7, 0x5e6]⟩, ⟨.zLe, [0x5e8, 1]⟩, ⟨.qConst (0x8c), []⟩, ⟨.qDiv, [0x611, 1]⟩, ⟨.zEq, [4, 0x5eb]⟩, ⟨.qLe, [0x142, 0x146]⟩, ⟨.ite, [1, 0x147, 0x143]⟩, ⟨.qLt, [0x144, 0x148]⟩, ⟨.qDiv, [0x149, 0x61b]⟩, ⟨.qLe, [0x146, 1]⟩, ⟨.ite, [1, 2, 0x147]⟩, ⟨.qDiv, [0x148, 0x619]⟩, ⟨.qLe, [1, 0x14d]⟩, ⟨.ite, [1, 0x14e, 2]⟩, ⟨.bEq, [0xfd, 0x616]⟩, ⟨.qMul, [0x626, 0xfa]⟩, ⟨.qMul, [0x3ec, 0xfb]⟩, ⟨.qLe, [0x6c, 1]⟩, ⟨.ite, [1, 2, 0x6d]⟩, ⟨.ite, [23, 0x15e, 21]⟩, ⟨.ite, [1, 0x60b, 0x60a]⟩, ⟨.zLe, [0x60c, 1]⟩] def dictionaryRLLRR : Table Pattern := .leaf #[ ⟨.zEq, [2, 0x60d]⟩, ⟨.qDiv, [0x168, 0x60b]⟩, ⟨.qDiv, [45, 0x637]⟩, ⟨.qDiv, [6, 0x641]⟩, ⟨.qDiv, [7, 0x63f]⟩, ⟨.bEq, [0x123, 0x5d3]⟩, ⟨.qLe, [0x68, 1]⟩, ⟨.ite, [1, 2, 0x69]⟩, ⟨.ite, [25, 0x182, 19]⟩, ⟨.input 10, []⟩, ⟨.input 11, []⟩, ⟨.qDiv, [0x660, 0x64f]⟩, ⟨.qLe, [0xc9, 1]⟩, ⟨.ite, [1, 0xca, 0xcb]⟩, ⟨.qMul, [0x64f, 1]⟩, ⟨.qLe, [96, 5]⟩, ⟨.ite, [1, 97, 98]⟩, ⟨.qMul, [0x648, 1]⟩, ⟨.qMul, [0x641, 3]⟩, ⟨.bAnd, [0x5f2, 7, 3, 1]⟩, ⟨.ite, [1, 0x640, 0x63f]⟩, ⟨.qMul, [0x63d, 0x13a]⟩, ⟨.qLe, [1, 0x13d]⟩, ⟨.qMul, [0x63f, 0x134]⟩, ⟨.qLe, [1, 0x13f]⟩, ⟨.ite, [1, 0x646, 0x645]⟩] def dictionaryRLLR : Table Pattern := .branch 26 dictionaryRLLRL dictionaryRLLRR def dictionaryRLL : Table Pattern := .branch 51 dictionaryRLLL dictionaryRLLR def dictionaryRLRLL : Table Pattern := .leaf #[ ⟨.zLe, [0x647, 1]⟩, ⟨.qConst (0x64), []⟩, ⟨.qDiv, [0x670, 1]⟩, ⟨.zEq, [4, 0x64a]⟩, ⟨.qLe, [0x13d, 0x145]⟩, ⟨.ite, [1, 0x146, 0x13e]⟩, ⟨.qLt, [0x13f, 0x147]⟩, ⟨.qDiv, [0x148, 0x67a]⟩, ⟨.qLe, [0x141, 1]⟩, ⟨.ite, [1, 2, 0x142]⟩, ⟨.qDiv, [0x143, 0x678]⟩, ⟨.qLe, [1, 0x14c]⟩, ⟨.ite, [1, 0x14d, 2]⟩, ⟨.bEq, [0xf8, 0x675]⟩, ⟨.qMul, [0x685, 0xf5]⟩, ⟨.qMul, [0x44b, 0xf6]⟩, ⟨.qLe, [98, 1]⟩, ⟨.ite, [1, 2, 99]⟩, ⟨.ite, [23, 0x15d, 21]⟩, ⟨.ite, [1, 0x66a, 0x669]⟩, ⟨.zLe, [0x66b, 1]⟩, ⟨.zEq, [2, 0x66c]⟩, ⟨.qDiv, [0x167, 0x66a]⟩, ⟨.qDiv, [45, 0x696]⟩, ⟨.qDiv, [6, 0x6a0]⟩] def dictionaryRLRLR : Table Pattern := .leaf #[ ⟨.qDiv, [7, 0x69e]⟩, ⟨.bEq, [0x11e, 0x632]⟩, ⟨.ite, [25, 0x181, 19]⟩, ⟨.input 12, []⟩, ⟨.input 13, []⟩, ⟨.qDiv, [0x6ae, 0xc2]⟩, ⟨.qMul, [0x6be, 0x6bd]⟩, ⟨.qMul, [1, 0x6c0]⟩, ⟨.qMul, [0x6b0, 1]⟩, ⟨.qLt, [6, 1]⟩, ⟨.qMul, [0x6bf, 0x6be]⟩, ⟨.qMul, [1, 0x6c1]⟩, ⟨.qMul, [0x6ab, 1]⟩, ⟨.qMul, [0x6a4, 3]⟩, ⟨.bAnd, [0x6be, 9, 3, 1]⟩, ⟨.ite, [1, 0x6a3, 0x6a2]⟩, ⟨.qMul, [0x6a0, 0xd0]⟩, ⟨.qLe, [1, 0xd3]⟩, ⟨.qMul, [0x6a2, 0xcb]⟩, ⟨.qLe, [1, 0xd5]⟩, ⟨.ite, [1, 0x6a9, 0x6a8]⟩, ⟨.zLe, [0x6aa, 1]⟩, ⟨.qConst (28), []⟩, ⟨.qDiv, [0x6d3, 1]⟩, ⟨.zEq, [4, 0x6ad]⟩, ⟨.qLe, [0xd4, 0xdb]⟩] def dictionaryRLRL : Table Pattern := .branch 25 dictionaryRLRLL dictionaryRLRLR def dictionaryRLRRL : Table Pattern := .leaf #[ ⟨.ite, [1, 0xdc, 0xd5]⟩, ⟨.qLt, [0xd6, 0xdd]⟩, ⟨.qDiv, [0xde, 0x6dd]⟩, ⟨.qLe, [0xd8, 1]⟩, ⟨.ite, [1, 2, 0xd9]⟩, ⟨.qDiv, [0xda, 0x6db]⟩, ⟨.qLe, [1, 0xe2]⟩, ⟨.ite, [1, 0xe3, 2]⟩, ⟨.bEq, [0x8f, 0x6d8]⟩, ⟨.qMul, [0x6e8, 0x8c]⟩, ⟨.qMul, [0x4ae, 0x8d]⟩, ⟨.bEq, [0xf8, 0x6de]⟩, ⟨.qMul, [0x6ee, 0xf5]⟩, ⟨.qMul, [0x4b4, 0xf6]⟩, ⟨.qLe, [15, 1]⟩, ⟨.ite, [27, 0xf7, 25]⟩, ⟨.ite, [30, 2, 1]⟩, ⟨.bAnd, [34, 5, 1]⟩, ⟨.bNot, [41]⟩, ⟨.bNot, [40]⟩, ⟨.ite, [1, 0x6d1, 0x6d0]⟩, ⟨.zSub, [47, 1]⟩, ⟨.zLe, [0x6d2, 1]⟩, ⟨.zEq, [2, 0x6d3]⟩, ⟨.qDiv, [0x101, 0x6d1]⟩, ⟨.ite, [49, 50, 1]⟩] def dictionaryRLRRR : Table Pattern := .leaf #[ ⟨.qDiv, [49, 0x6fd]⟩, ⟨.qDiv, [6, 0x707]⟩, ⟨.qDiv, [7, 0x705]⟩, ⟨.qLe, [1, 55]⟩, ⟨.ite, [1, 56, 2]⟩, ⟨.bEq, [0xb9, 0x699]⟩, ⟨.bEq, [0x120, 0x69d]⟩, ⟨.ite, [1, 40, 39]⟩, ⟨.ite, [27, 0x11d, 21]⟩, ⟨.bAnd, [32, 5, 1]⟩, ⟨.bOr, [39, 1]⟩, ⟨.input 4, []⟩, ⟨.ite, [82, 4, 1]⟩, ⟨.input 5, []⟩, ⟨.ite, [5, 13, 51]⟩, ⟨.qMul, [0x728, 0x725]⟩, ⟨.qMul, [1, 0x728]⟩, ⟨.qLe, [1, 0x72a]⟩, ⟨.qMul, [0x718, 1]⟩, ⟨.qLt, [0x72d, 1]⟩, ⟨.qMul, [0x72e, 0x726]⟩, ⟨.qMul, [1, 0x729]⟩, ⟨.qLe, [1, 0x730]⟩, ⟨.qMul, [0x713, 1]⟩, ⟨.qLe, [1, 0x733]⟩, ⟨.qMul, [0x70c, 3]⟩] def dictionaryRLRR : Table Pattern := .branch 26 dictionaryRLRRL dictionaryRLRRR def dictionaryRLR : Table Pattern := .branch 51 dictionaryRLRL dictionaryRLRR def dictionaryRL : Table Pattern := .branch 0x67 dictionaryRLL dictionaryRLR def dictionaryRRLLL : Table Pattern := .leaf #[ ⟨.qLt, [0x735, 1]⟩, ⟨.bAnd, [0x6bd, 9, 3, 1]⟩, ⟨.ite, [1, 0x70b, 0x70a]⟩, ⟨.qMul, [0x708, 0xd6]⟩, ⟨.qLe, [1, 0xd9]⟩, ⟨.qMul, [0x70a, 0xd4]⟩, ⟨.qLe, [1, 0xdb]⟩, ⟨.ite, [1, 0x711, 0x710]⟩, ⟨.zLe, [0x712, 1]⟩, ⟨.qConst (20), []⟩, ⟨.qDiv, [0x73b, 1]⟩, ⟨.zEq, [4, 0x715]⟩, ⟨.qLe, [0xdd, 0xe1]⟩, ⟨.ite, [1, 0xe2, 0xde]⟩, ⟨.qLt, [0xdf, 0xe3]⟩, ⟨.qDiv, [0xe4, 0x745]⟩, ⟨.qLe, [0xe1, 1]⟩, ⟨.ite, [1, 2, 0xe2]⟩, ⟨.qDiv, [0xe3, 0x743]⟩, ⟨.qLe, [1, 0xe8]⟩, ⟨.ite, [1, 0xe9, 2]⟩, ⟨.bEq, [0x98, 0x740]⟩, ⟨.qMul, [0x750, 0x95]⟩, ⟨.qMul, [0x516, 0x96]⟩, ⟨.qLe, [0x6b, 1]⟩] def dictionaryRRLLR : Table Pattern := .leaf #[ ⟨.ite, [1, 2, 0x6c]⟩, ⟨.ite, [23, 0xf9, 21]⟩, ⟨.ite, [1, 0x735, 0x734]⟩, ⟨.zLe, [0x736, 1]⟩, ⟨.zEq, [2, 0x737]⟩, ⟨.qDiv, [0x103, 0x735]⟩, ⟨.qDiv, [45, 0x761]⟩, ⟨.qDiv, [6, 0x76b]⟩, ⟨.qDiv, [7, 0x769]⟩, ⟨.bEq, [0xbe, 0x6fd]⟩, ⟨.ite, [25, 0x11d, 19]⟩, ⟨.input 6, []⟩, ⟨.input 7, []⟩, ⟨.qMul, [0x789, 0x787]⟩, ⟨.qMul, [1, 0x78a]⟩, ⟨.qLe, [1, 0x77b]⟩, ⟨.qMul, [0x77a, 1]⟩, ⟨.qLt, [0x77e, 1]⟩, ⟨.qMul, [0x78a, 0x788]⟩, ⟨.qMul, [1, 0x78b]⟩, ⟨.qLe, [1, 0x781]⟩, ⟨.qMul, [0x775, 1]⟩, ⟨.qLe, [1, 0x784]⟩, ⟨.qMul, [0x76e, 3]⟩, ⟨.qLt, [0x786, 1]⟩, ⟨.bAnd, [0x788, 9, 3, 1]⟩] def dictionaryRRLL : Table Pattern := .branch 25 dictionaryRRLLL dictionaryRRLLR def dictionaryRRLRL : Table Pattern := .leaf #[ ⟨.ite, [1, 0x76d, 0x76c]⟩, ⟨.qMul, [0x76a, 0x6f]⟩, ⟨.qLe, [1, 0x79b]⟩, ⟨.qMul, [0x76c, 0x6b]⟩, ⟨.qLe, [1, 0x79d]⟩, ⟨.ite, [1, 0x773, 0x772]⟩, ⟨.zLe, [0x774, 1]⟩, ⟨.qDiv, [0x79c, 0x7a1]⟩, ⟨.zEq, [3, 0x776]⟩, ⟨.qLe, [0x73, 0x79]⟩, ⟨.ite, [1, 0x7a, 0x74]⟩, ⟨.qLt, [0x75, 0x7b]⟩, ⟨.qDiv, [0x7c, 0x7a6]⟩, ⟨.qLe, [0x77, 1]⟩, ⟨.ite, [1, 2, 0x78]⟩, ⟨.qDiv, [0x79, 0x7a4]⟩, ⟨.qLe, [1, 0x80]⟩, ⟨.ite, [1, 0x81, 2]⟩, ⟨.bEq, [46, 0x7a1]⟩, ⟨.qMul, [0x7b1, 43]⟩, ⟨.qMul, [0x577, 44]⟩, ⟨.bEq, [0x96, 0x7a7]⟩, ⟨.qMul, [0x7b7, 0x93]⟩, ⟨.qMul, [0x57d, 0x94]⟩, ⟨.ite, [27, 0x7be, 25]⟩, ⟨.bAnd, [33, 5, 1]⟩] def dictionaryRRLRR : Table Pattern := .leaf #[ ⟨.ite, [1, 0x79b, 0x79a]⟩, ⟨.zLe, [0x79c, 1]⟩, ⟨.zEq, [2, 0x79d]⟩, ⟨.qDiv, [0xa0, 0x79b]⟩, ⟨.qDiv, [49, 0x7c7]⟩, ⟨.qDiv, [6, 0x7d1]⟩, ⟨.qDiv, [7, 0x7cf]⟩, ⟨.qLe, [1, 56]⟩, ⟨.ite, [1, 57, 2]⟩, ⟨.bEq, [89, 0x763]⟩, ⟨.ite, [1, 43, 42]⟩, ⟨.bEq, [0xbf, 0x767]⟩, ⟨.ite, [1, 41, 40]⟩, ⟨.ite, [27, 0x7e5, 21]⟩, ⟨.bAnd, [40, 1]⟩, ⟨.qDiv, [0xd4, 1]⟩, ⟨.qMul, [1, 0xcd]⟩, ⟨.qMul, [1, 0xd0]⟩, ⟨.qDiv, [0x172, 1]⟩, ⟨.qDiv, [0x174, 1]⟩, ⟨.qMul, [1, 0x172]⟩, ⟨.qMul, [1, 0x175]⟩, ⟨.qConst (0x30d4), []⟩, ⟨.qDiv, [0x1bb, 1]⟩, ⟨.qLe, [2, 1]⟩, ⟨.qDiv, [0x1c6, 1]⟩] def dictionaryRRLR : Table Pattern := .branch 26 dictionaryRRLRL dictionaryRRLRR def dictionaryRRL : Table Pattern := .branch 51 dictionaryRRLL dictionaryRRLR def dictionaryRRRLL : Table Pattern := .leaf #[ ⟨.qMul, [0x1b5, 1]⟩, ⟨.qDiv, [0x1cc, 1]⟩, ⟨.qMul, [1, 0x1c5]⟩, ⟨.qMul, [1, 0x1c8]⟩, ⟨.qMul, [0x1b2, 1]⟩, ⟨.qMul, [0x1ab, 3]⟩, ⟨.bAnd, [0x1c5, 11, 3, 1]⟩, ⟨.ite, [1, 0x1aa, 0x1a9]⟩, ⟨.qDiv, [0x1d8, 1]⟩, ⟨.qLe, [0x1c1, 1]⟩, ⟨.ite, [1, 0x1c2, 0x1c3]⟩, ⟨.qMul, [0x1ab, 1]⟩, ⟨.qLe, [0x1bb, 6]⟩, ⟨.ite, [1, 0x1bc, 0x1bd]⟩, ⟨.qMul, [0x1b0, 1]⟩, ⟨.ite, [1, 0x1b8, 0x1b7]⟩, ⟨.zLe, [0x1b9, 1]⟩, ⟨.zEq, [2, 0x1ba]⟩, ⟨.qDiv, [14, 0x1b8]⟩, ⟨.qDiv, [10, 0x1e4]⟩, ⟨.qDiv, [6, 0x1ee]⟩, ⟨.qDiv, [7, 0x1ec]⟩, ⟨.ite, [1, 0x1d2, 0x1d1]⟩, ⟨.zLe, [0x1d3, 1]⟩, ⟨.zEq, [2, 0x1d4]⟩, ⟨.qDiv, [43, 0x204]⟩] def dictionaryRRRLR : Table Pattern := .leaf #[ ⟨.qDiv, [41, 0x202]⟩, ⟨.qLe, [0x117, 9]⟩, ⟨.ite, [1, 0x118, 0x119]⟩, ⟨.bEq, [0x1e5, 0xcc]⟩, ⟨.qMul, [0x305, 0x1e8]⟩, ⟨.qMul, [0xcb, 0x1e9]⟩, ⟨.bEq, [0x20b, 0x31b]⟩, ⟨.bAnd, [0x33f, 11, 3, 1]⟩, ⟨.qMul, [0x321, 0x1d9]⟩, ⟨.qLe, [1, 0x1e0]⟩, ⟨.qMul, [0x323, 0x1d7]⟩, ⟨.qLe, [1, 0x1e2]⟩, ⟨.qLe, [0x1e0, 0x1e4]⟩, ⟨.ite, [1, 0x1e5, 0x1e1]⟩, ⟨.qLt, [0x1e2, 0x1e6]⟩, ⟨.qDiv, [0x1e7, 0x35e]⟩, ⟨.qLe, [0x1e4, 1]⟩, ⟨.ite, [1, 2, 0x1e5]⟩, ⟨.qDiv, [0x1e6, 0x35c]⟩, ⟨.ite, [1, 0x1ec, 2]⟩, ⟨.bEq, [0x1f9, 0x130]⟩, ⟨.qMul, [0x369, 0x1fc]⟩, ⟨.qMul, [0x12f, 0x1fd]⟩, ⟨.ite, [23, 0x200, 21]⟩, ⟨.qDiv, [0x206, 0x34e]⟩, ⟨.bEq, [0x21f, 0x37f]⟩] def dictionaryRRRL : Table Pattern := .branch 26 dictionaryRRRLL dictionaryRRRLR def dictionaryRRRRL : Table Pattern := .leaf #[ ⟨.ite, [25, 0x224, 19]⟩, ⟨.bAnd, [0x39f, 7, 3, 1]⟩, ⟨.qMul, [0x381, 0x1e9]⟩, ⟨.qLe, [1, 0x1ec]⟩, ⟨.qMul, [0x383, 0x1e3]⟩, ⟨.qLe, [1, 0x1ee]⟩, ⟨.qLe, [0x1ec, 0x1f4]⟩, ⟨.ite, [1, 0x1f5, 0x1ed]⟩, ⟨.qLt, [0x1ee, 0x1f6]⟩, ⟨.qDiv, [0x1f7, 0x3be]⟩, ⟨.qLe, [0x1f0, 1]⟩, ⟨.ite, [1, 2, 0x1f1]⟩, ⟨.qDiv, [0x1f2, 0x3bc]⟩, ⟨.qLe, [1, 0x1fb]⟩, ⟨.ite, [1, 0x1fc, 2]⟩, ⟨.bEq, [0x205, 0x190]⟩, ⟨.qMul, [0x3c9, 0x208]⟩, ⟨.qMul, [0x18f, 0x209]⟩, ⟨.ite, [23, 0x20c, 21]⟩, ⟨.qDiv, [0x216, 0x3ae]⟩, ⟨.bEq, [0x22b, 0x3df]⟩, ⟨.ite, [25, 0x230, 19]⟩, ⟨.bEq, [0x158, 0x1f3]⟩, ⟨.bEq, [0x182, 0x446]⟩, ⟨.bAnd, [0x46c, 7, 3, 1]⟩, ⟨.bEq, [0x15e, 0x25d]⟩] def dictionaryRRRRR : Table Pattern := .leaf #[ ⟨.bEq, [0x184, 0x4ac]⟩, ⟨.bAnd, [0x4cc, 7, 3, 1]⟩, ⟨.bEq, [0x15a, 0x2bd]⟩, ⟨.bEq, [0x180, 0x50c]⟩, ⟨.bAnd, [0x530, 11, 3, 1]⟩, ⟨.bEq, [0x15e, 0x321]⟩, ⟨.bEq, [0x184, 0x570]⟩, ⟨.bEq, [0xf4, 0x384]⟩, ⟨.bEq, [0x11e, 0x5d7]⟩, ⟨.bAnd, [0x5fc, 10, 3, 1]⟩, ⟨.bEq, [0xfd, 0x3ed]⟩, ⟨.bEq, [0x123, 0x63c]⟩, ⟨.bAnd, [0x65b, 7, 3, 1]⟩, ⟨.bEq, [0xf8, 0x44c]⟩, ⟨.bEq, [0x11e, 0x69b]⟩, ⟨.bEq, [0x8f, 0x4af]⟩, ⟨.bEq, [0xf8, 0x4b5]⟩, ⟨.bEq, [0xb9, 0x702]⟩, ⟨.bEq, [0x120, 0x706]⟩, ⟨.bAnd, [0x726, 9, 3, 1]⟩, ⟨.bEq, [0x98, 0x517]⟩, ⟨.bEq, [0xbe, 0x766]⟩, ⟨.bEq, [46, 0x578]⟩, ⟨.bEq, [0x96, 0x57e]⟩, ⟨.bEq, [89, 0x7cc]⟩, ⟨.bEq, [0xbf, 0x7d0]⟩] def dictionaryRRRR : Table Pattern := .branch 26 dictionaryRRRRL dictionaryRRRRR def dictionaryRRR : Table Pattern := .branch 52 dictionaryRRRL dictionaryRRRR def dictionaryRR : Table Pattern := .branch 0x67 dictionaryRRL dictionaryRRR def dictionaryR : Table Pattern := .branch 0xce dictionaryRL dictionaryRR def dictionary : Table Pattern := .branch 0x19d dictionaryL dictionaryR def indices0LLLL : Table Nat := .leaf #[ 0x4003002001, 0x8007006005, 0xa005009, 0x0, 0xc00b, 0x1000f00e00d, 0x11, 0x3013012000, 0x17016015014, 0x0, 0x18, 0x1a019, 0x1b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c000] def indices0LLLR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d000000000, 0x1e000, 0x0, 0x2202102001f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices0LLL : Table Nat := .branch 31 indices0LLLL indices0LLLR def indices0LLRL : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x23000000000, 0x26025024000, 0x28027, 0x2a029, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b000000000, 0x2e02d02c000, 0x3203103002f] def indices0LLRR : Table Nat := .leaf #[ 0x34033, 0x36035, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37000000000, 0x3a039038000, 0x3d03c02a03b, 0x4104003f03e, 0x44043034042, 0x48047046045, 0x4c04b04a049, 0x5004f04e04d, 0x4f042052051, 0x56055054053, 0x5a059058057, 0x5e05d05c05b, 0x6206106005f, 0x66065064063] def indices0LLR : Table Nat := .branch 31 indices0LLRL indices0LLRR def indices0LL : Table Nat := .branch 63 indices0LLL indices0LLR def indices0LRLL : Table Nat := .leaf #[ 0x6a069068067, 0x6e06d06c06b, 0x7207107006f, 0x76075074073, 0x7a079078077, 0x7d07c07b065, 0x8108007f07e, 0x82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x83, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices0LRLR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x86085084000, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88000000000, 0x89, 0x0, 0x0, 0x8a, 0x8c00000008b, 0x9008f08e08d, 0x92034033091, 0x96095094093, 0x98046097044, 0x9c09b09a099, 0xa009f09e09d] def indices0LRL : Table Nat := .branch 31 indices0LRLL indices0LRLR def indices0LRRL : Table Nat := .leaf #[ 0xa40a30a20a1, 0xa80a70a60a5, 0xac0ab0aa0a9, 0xae07b0650ad, 0xb20b10b00af, 0xb40b3033087, 0xb80b70b60b5, 0xbc0bb0ba0b9, 0xc00bf0be0bd, 0xc40c30c20c1, 0x5d05c0c40c5, 0x610600c605e, 0x650640630c7, 0xca0c90c8066, 0xb405d05c089, 0xb80cc0cb0b5, 0xce0bb0cd0b9, 0xd20d10d00cf, 0xd60d50d40d3, 0xda0d90d80d7, 0xdd0dc0db03d, 0xdf0340420de, 0xe10460e0044, 0xe50e40e30e2, 0xa00e709e0e6, 0xeb0ea0e90e8, 0xef0ee0ed0ec, 0xf30f20f10f0, 0xae07b0650f4, 0xf70f60f50af, 0xb40b3033087, 0xb80f80b60b5] def indices0LRRR : Table Nat := .leaf #[ 0xbc0bb0ba0b9, 0xc00f90be0bd, 0xc40fc0fb0fa, 0x5d05c0c40fd, 0x610600fe05e, 0x650640630ff, 0x1000c90c8066, 0xb405d05c089, 0xb81010cb0b5, 0xce0bb0cd0b9, 0xd20d10d0102, 0x1040d50d4103, 0x108107106105, 0x10a0d910903d, 0x10e10d10c10b, 0x11211111010f, 0xa011409e113, 0x118117116115, 0x11c11b11a119, 0x12011f11e11d, 0xae07b065121, 0x1241231220af, 0x1250b3033087, 0xb81270b6126, 0xbc0bb0ba0b9, 0xc01280be0bd, 0xc412b12a129, 0x5d05c0c412c, 0x6106012d05e, 0x6506406312e, 0x12f0c90c8066, 0x12505d05c089] def indices0LRR : Table Nat := .branch 32 indices0LRRL indices0LRRR def indices0LR : Table Nat := .branch 63 indices0LRL indices0LRR def indices0L : Table Nat := .branch 0x7e indices0LL indices0LR def indices0RLLL : Table Nat := .leaf #[ 0xb81300cb126, 0xce0bb0cd0b9, 0xd20d10d0131, 0xd50d4132, 0x0, 0x136135134133, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x87139138137, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13b13a000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13f13e13d13c] def indices0RLLR : Table Nat := .leaf #[ 0x34033141140, 0x144143093142, 0x46146044145, 0x14a149148147, 0x14d09e14c14b, 0x15014f14e0a0, 0x154153152151, 0x158157156155, 0x7b06515a159, 0x15c15b0af0ae, 0xb303308715d, 0x1600b615f15e, 0xbb0ba0b90b8, 0x1610be0bd0bc, 0x1641631620c0, 0x5c0c41650c4, 0x6016605e05d, 0x64063167061, 0xc90c8066065, 0x5d05c089168, 0x16b0cb16a169, 0xbb0cd0b90b8, 0xd10d016c0ce, 0xd50d416d0d2, 0xd90d816f16e, 0x17217103d170, 0x10d17410b173, 0x178177176175, 0x17b09e17a179, 0x17e17d17c0a0, 0x18218118017f, 0x186185184183] def indices0RLL : Table Nat := .branch 31 indices0RLLL indices0RLLR def indices0RLRL : Table Nat := .leaf #[ 0x7b06515a159, 0x1881870af0ae, 0xb3033087189, 0x18a0b6126125, 0xbb0ba0b90b8, 0x18b0be0bd0bc, 0x18e18d18c0c0, 0x5c0c418f0c4, 0x6019005e05d, 0x64063191061, 0xc90c8066065, 0x5d05c089192, 0x1930cb126125, 0xbb0cd0b90b8, 0xd10d01940ce, 0xd50d41950d2, 0x199198197196, 0x19c19b03d19a, 0x3404219e19d, 0x461a004419f, 0x1781a31a21a1, 0x1a509e17a1a4, 0x1a81a71a60a0, 0x1541531521a9, 0x1ab1571561aa, 0x7b06515a159, 0x1ad1ac0af0ae, 0xb30330871ae, 0x18a0b60b50b4, 0xbb0ba0b90b8, 0x1af0be0bd0bc, 0x1b21b11b00c0] def indices0RLRR : Table Nat := .leaf #[ 0x5c0c41b30c4, 0x601b405e05d, 0x640631b5061, 0xc90c8066065, 0x5d05c0891b6, 0x1930cb0b50b4, 0xbb0cd0b90b8, 0xd10d01b70ce, 0xd50d41b80d2, 0x1bb1ba1b9000, 0x1bc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bf1be1bd000, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c0000000000, 0x13b, 0x0] def indices0RLR : Table Nat := .branch 32 indices0RLRL indices0RLRR def indices0RL : Table Nat := .branch 63 indices0RLL indices0RLR def indices0RRLL : Table Nat := .leaf #[ 0x0, 0x1c1000000, 0x1c2000000, 0xb41c41c3000, 0x1c703d1c61c5, 0x3410b1c91c8, 0x1cd1cc1cb1ca, 0x1d11d01cf1ce, 0x1d409e1d31d2, 0x1d71d61d50a0, 0x1db1da1d91d8, 0x1df1de1dd1dc, 0x7b0651e11e0, 0x1e31e20af0ae, 0xb30330871e4, 0x1e70b61e61e5, 0xbb0ba0b90b8, 0x1e80be0bd0bc, 0x1eb1ea1e90c0, 0x5c0c41ec0c4, 0x601ed05e05d, 0x640631ee061, 0xc90c8066065, 0x5d05c0891ef, 0x1f20cb1f11f0, 0xbb0cd0b90b8, 0xd10d01f30ce, 0xd50d41f40d2, 0x1f81f71f61f5, 0x1fb1fa1f903d, 0x1fd10d1fc10b] def indices0RRLR : Table Nat := .leaf #[ 0x2012001ff1fe, 0xa020309e202, 0x207206205204, 0x20b20a209208, 0x20f20e20d20c, 0xae07b065210, 0x2132122110af, 0x2140b3033087, 0xb82160b6215, 0xbc0bb0ba0b9, 0xc02170be0bd, 0xc421a219218, 0x5d05c0c421b, 0x6106021c05e, 0x6506406321d, 0x21e0c90c8066, 0x21405d05c089, 0xb821f0cb215, 0xce0bb0cd0b9, 0xd20d10d0220, 0x2220d50d4221, 0x3405c224223, 0x228227226225, 0x44229034042, 0x22c22b04622a, 0x23022f22e22d, 0x2320a023109e, 0x236235234233, 0x23a239238237, 0x23e23d23c23b, 0xaf0ae07b065, 0x8724124023f] def indices0RRL : Table Nat := .branch 31 indices0RRLL indices0RRLR def indices0RRRL : Table Nat := .leaf #[ 0x2432420b3033, 0xb3033087244, 0xb90b8246245, 0x24a249248247, 0x24d24c24b0be, 0x25125024f24e, 0x5e05d05c250, 0x253061060252, 0x66065064063, 0x13b256255254, 0x25825705d05c, 0x2590b605d05c, 0x25a2470b90b8, 0x25d24925c25b, 0xd525f25e0d2, 0x34262261260, 0x266265264263, 0x269268034267, 0x26d26c26b26a, 0x27127026f26e, 0x2730a027209e, 0x277276275274, 0x27b27a279278, 0x27f27e27d27c, 0xaf0ae07b065, 0x87282281280, 0x2842830b3033, 0xb90b82850b6, 0xbd0bc0bb0ba, 0x2870c02860be, 0x28a0c4289288, 0x5e05d05c0c4] def indices0RRRR : Table Nat := .leaf #[ 0x28c06106028b, 0x66065064063, 0x8928d0c90c8, 0xb50b405d05c, 0xb90b828e0cb, 0x28f0ce0bb0cd, 0x2900d20d10d0, 0x2922910d50d4, 0x295294034293, 0x34298297296, 0x29c29b29a299, 0x2a029f29e29d, 0x2a309e2a22a1, 0x2a62a52a40a0, 0x2aa2a92a82a7, 0x2ae2ad2ac2ab, 0xae07b0652af, 0x2b22b12b00af, 0x2b30b3033087, 0x330872b52b4, 0xb82b62450b3, 0x4f2b72470b9, 0x2b80be24a249, 0x2bb2ba2b924c, 0x5c2502bc250, 0x602bd05e05d, 0x640632be061, 0x2c02bf066065, 0x5d05c2c22c1, 0x5d05c2c42c3, 0xb90b82c50b6, 0x2c604f25a247] def indices0RRR : Table Nat := .branch 32 indices0RRRL indices0RRRR def indices0RR : Table Nat := .branch 63 indices0RRL indices0RRR def indices0R : Table Nat := .branch 0x7f indices0RL indices0RR def indices0 : Table Nat := .branch 0xfd indices0L indices0R def program0 : Nat → ClosureSemantics.Node := program dictionary indices0 def indices1LLLL : Table Nat := .leaf #[ 0x4003002001, 0x8007006005, 0xa005009, 0x0, 0xc01c, 0x1000f00e00d, 0x11, 0x3013012000, 0x17016015014, 0x0, 0x18, 0x1a019, 0x1b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1LLLR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f000000000, 0x2c92c82c7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1LLL : Table Nat := .branch 31 indices1LLLL indices1LLLR def indices1LLRL : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x23000000, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b000000, 0x2f2ca02d02c, 0x332cd2cc2cb] def indices1LLRR : Table Nat := .leaf #[ 0x35000000034, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2d00372cf2ce, 0x3b2d1039038, 0x3e03d2d202a, 0x422d52d42d3, 0x2d70442d6034, 0x492d92d8046, 0x2dd2dc2db2da, 0x2df2de04f04e, 0x5304f0422e0, 0x2e32e20552e1, 0x5b2e50592e4, 0x2e605e05d05c, 0x632e7061060, 0x67066065064] def indices1LLR : Table Nat := .branch 31 indices1LLRL indices1LLRR def indices1LL : Table Nat := .branch 63 indices1LLL indices1LLR def indices1LRLL : Table Nat := .leaf #[ 0x6b06a069068, 0x6f2e806d06c, 0x730722ea2e9, 0x770762eb074, 0x6507a0792ec, 0x7e07d07c07b, 0x8208108007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb000, 0x83, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1LRLR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8a, 0x8c00000008b, 0x9008f08e08d, 0x34033091, 0x2ee2ed000, 0x0, 0x0, 0x0] def indices1LRL : Table Nat := .branch 31 indices1LRLL indices1LRLR def indices1LRRL : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x2f12f02ef000, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f2000000000, 0x89, 0x0, 0x0, 0xcf, 0xd60000000d3, 0xda0d90d80d7, 0xdd0dc0db03d, 0xdf0340420de, 0x2f30460e0044, 0x2f62f52f40e2, 0xa00e709e2f7, 0xeb0ea0e90e8, 0x2fb2fa2f92f8, 0x1112fe2fd2fc, 0xae07b0652ff, 0x3023013000af, 0xb40b3033087, 0xb83030b60b5] def indices1LRRR : Table Nat := .leaf #[ 0xbc0bb0ba0b9, 0xc00f90be0bd, 0xc43040fb0fa, 0x5d05c0c40fd, 0x610600fe05e, 0x650640630ff, 0x3050c90c8066, 0xb405d05c089, 0xb83060cb0b5, 0xce0bb0cd0b9, 0xd20d10d0102, 0x1040d50d4103, 0x108107106105, 0x10a0d910903d, 0x30710d10c10b, 0x30a30930810f, 0xa011409e30b, 0x118117116115, 0x30f30e30d30c, 0x313312311310, 0xae07b065314, 0x3173163150af, 0x1250b3033087, 0xb83180b6126, 0xbc0bb0ba0b9, 0xc01280be0bd, 0xc431912a129, 0x5d05c0c412c, 0x6106012d05e, 0x6506406312e, 0x31a0c90c8066, 0x12505d05c089] def indices1LRR : Table Nat := .branch 32 indices1LRRL indices1LRRR def indices1LR : Table Nat := .branch 63 indices1LRL indices1LRR def indices1L : Table Nat := .branch 0x7e indices1LL indices1LR def indices1RLLL : Table Nat := .leaf #[ 0xb831b0cb126, 0xce0bb0cd0b9, 0xd20d10d0131, 0xd50d4132, 0x0, 0x136135134133, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8713913831c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13b31d000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13f13e13d13c] def indices1RLLR : Table Nat := .leaf #[ 0x34033141140, 0x144143093142, 0x46146044145, 0x14a14914831e, 0x14d09e14c14b, 0x15014f14e0a0, 0x154153152151, 0x158157156155, 0x7b06515a159, 0x15c31f0af0ae, 0xb303308715d, 0x1600b615f15e, 0xbb0ba0b90b8, 0x1610be0bd0bc, 0x1641631620c0, 0x5c0c41650c4, 0x6016605e05d, 0x64063167061, 0xc90c8066065, 0x5d05c089320, 0x16b0cb16a169, 0xbb0cd0b90b8, 0xd10d016c0ce, 0xd50d416d0d2, 0xd90d816f16e, 0x17217103d170, 0x10d17410b173, 0x178177176321, 0x17b09e17a179, 0x17e17d17c0a0, 0x18218118017f, 0x186185184183] def indices1RLL : Table Nat := .branch 31 indices1RLLL indices1RLLR def indices1RLRL : Table Nat := .leaf #[ 0x7b06515a159, 0x1883220af0ae, 0xb3033087189, 0x18a0b6126125, 0xbb0ba0b90b8, 0x18b0be0bd0bc, 0x18e18d18c0c0, 0x5c0c418f0c4, 0x6019005e05d, 0x64063191061, 0xc90c8066065, 0x5d05c089323, 0x1930cb126125, 0xbb0cd0b90b8, 0xd10d01940ce, 0xd50d41950d2, 0x199198197196, 0x19c19b03d19a, 0x3404219e19d, 0x461a004419f, 0x1781a31a2324, 0x1a509e17a1a4, 0x1a81a71a60a0, 0x1541531521a9, 0x1ab1571561aa, 0x7b06515a159, 0x1ad3250af0ae, 0xb30330871ae, 0x18a0b60b50b4, 0xbb0ba0b90b8, 0x1af0be0bd0bc, 0x1b21b11b00c0] def indices1RLRR : Table Nat := .leaf #[ 0x5c0c41b30c4, 0x601b405e05d, 0x640631b5061, 0xc90c8066065, 0x5d05c089326, 0x1930cb0b50b4, 0xbb0cd0b90b8, 0xd10d01b70ce, 0xd50d41b80d2, 0x1bb1ba1b9000, 0x1bc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bf1be327000, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x328000000000, 0x13b, 0x0] def indices1RLR : Table Nat := .branch 32 indices1RLRL indices1RLRR def indices1RL : Table Nat := .branch 63 indices1RLL indices1RLR def indices1RRLL : Table Nat := .leaf #[ 0x0, 0x1c1000000, 0x1c2000000, 0xb41c41c3000, 0x1c703d1c61c5, 0x3410b1c91c8, 0x1cd1cc1cb1ca, 0x1d11d01cf329, 0x1d409e1d31d2, 0x1d71d61d50a0, 0x1db1da1d91d8, 0x1df1de1dd1dc, 0x7b0651e11e0, 0x1e332a0af0ae, 0xb30330871e4, 0x1e70b61e61e5, 0xbb0ba0b90b8, 0x1e80be0bd0bc, 0x1eb1ea1e90c0, 0x5c0c41ec0c4, 0x601ed05e05d, 0x640631ee061, 0xc90c8066065, 0x5d05c08932b, 0x1f20cb1f11f0, 0xbb0cd0b90b8, 0xd10d01f30ce, 0xd50d41f40d2, 0x1f81f71f61f5, 0x1fb1fa1f903d, 0x32c10d1fc10b] def indices1RRLR : Table Nat := .leaf #[ 0x2012001ff1fe, 0xa020309e202, 0x207206205204, 0x20b20a209208, 0x20f20e20d20c, 0xae07b065210, 0x21321232d0af, 0x2140b3033087, 0xb82160b6215, 0xbc0bb0ba0b9, 0xc02170be0bd, 0xc421a219218, 0x5d05c0c421b, 0x6106021c05e, 0x6506406321d, 0x32e0c90c8066, 0x21405d05c089, 0xb821f0cb215, 0xce0bb0cd0b9, 0xd20d10d0220, 0x2220d50d4221, 0x3405c224223, 0x228227226225, 0x44229034042, 0x22c22b04622a, 0x23022f22e22d, 0x2320a023109e, 0x236235234233, 0x23a239238237, 0x23e23d23c23b, 0xaf0ae07b065, 0x8724124032f] def indices1RRL : Table Nat := .branch 31 indices1RRLL indices1RRLR def indices1RRRL : Table Nat := .leaf #[ 0x2433300b3033, 0xb3033087244, 0xb90b8246245, 0x24a249248247, 0x24d24c24b0be, 0x25125024f24e, 0x5e05d05c250, 0x253061060252, 0x66065064063, 0x13b331255254, 0x25833205d05c, 0x2590b605d05c, 0x25a2470b90b8, 0x25d24925c25b, 0xd525f25e0d2, 0x34262261260, 0x266265264263, 0x269268034267, 0x26d33326b26a, 0x27127026f26e, 0x2730a027209e, 0x277276275274, 0x27b27a279278, 0x27f27e27d27c, 0xaf0ae07b065, 0x87282281334, 0x2842830b3033, 0xb90b82850b6, 0xbd0bc0bb0ba, 0x2870c02860be, 0x28a0c4289288, 0x5e05d05c0c4] def indices1RRRR : Table Nat := .leaf #[ 0x28c06106028b, 0x66065064063, 0x893350c90c8, 0xb50b405d05c, 0xb90b828e0cb, 0x28f0ce0bb0cd, 0x2900d20d10d0, 0x2922910d50d4, 0x295294034293, 0x34298297296, 0x29c29b29a299, 0x2a029f29e29d, 0x2a309e2a22a1, 0x2a62a52a40a0, 0x2aa2a92a82a7, 0x2ae2ad2ac2ab, 0xae07b0652af, 0x2b22b13360af, 0x3370b3033087, 0x330872b52b4, 0xb82b62450b3, 0x4f2b72470b9, 0x2b80be24a249, 0x2bb2ba2b924c, 0x5c2502bc250, 0x602bd05e05d, 0x640632be061, 0x2c02bf066065, 0x5d05c2c2338, 0x5d05c2c4339, 0xb90b82c50b6, 0x2c604f25a247] def indices1RRR : Table Nat := .branch 32 indices1RRRL indices1RRRR def indices1RR : Table Nat := .branch 63 indices1RRL indices1RRR def indices1R : Table Nat := .branch 0x7f indices1RL indices1RR def indices1 : Table Nat := .branch 0xfd indices1L indices1R def program1 : Nat → ClosureSemantics.Node := program dictionary indices1 end ClosurePrefixAdapterData end PolicySubmissionPart72 /- Component ClosureAdapterChecks0; SHA256 6bb201a26b5d4704314ad02e581db6ce4cf0e89178262b25f0080dfaef2c6527. -/ section PolicySubmissionPart73 /- Checked equality and child closure for a finite input adapter. -/ namespace ClosureAdapterChecks0 open ClosurePrefixAdapter ClosurePrefixAdapterData abbrev Good (i : Nat) : Prop := check ClosureFixedWidthData0.program dictionary indices0 0x7ec i = true def c0 : ∀ i : Fin 64, Good (0+i.val) := by decide +kernel def c1 : ∀ i : Fin 64, Good (64+i.val) := by decide +kernel def c2 : ∀ i : Fin 64, Good (0x80+i.val) := by decide +kernel def c3 : ∀ i : Fin 64, Good (0xc0+i.val) := by decide +kernel def c4 : ∀ i : Fin 64, Good (0x100+i.val) := by decide +kernel def c5 : ∀ i : Fin 64, Good (0x140+i.val) := by decide +kernel def c6 : ∀ i : Fin 64, Good (0x180+i.val) := by decide +kernel def c7 : ∀ i : Fin 64, Good (0x1c0+i.val) := by decide +kernel def c8 : ∀ i : Fin 64, Good (0x200+i.val) := by decide +kernel def c9 : ∀ i : Fin 64, Good (0x240+i.val) := by decide +kernel def c10 : ∀ i : Fin 64, Good (0x280+i.val) := by decide +kernel def c11 : ∀ i : Fin 64, Good (0x2c0+i.val) := by decide +kernel def c12 : ∀ i : Fin 64, Good (0x300+i.val) := by decide +kernel def c13 : ∀ i : Fin 64, Good (0x340+i.val) := by decide +kernel def c14 : ∀ i : Fin 64, Good (0x380+i.val) := by decide +kernel def c15 : ∀ i : Fin 64, Good (0x3c0+i.val) := by decide +kernel def c16 : ∀ i : Fin 64, Good (0x400+i.val) := by decide +kernel def c17 : ∀ i : Fin 64, Good (0x440+i.val) := by decide +kernel def c18 : ∀ i : Fin 64, Good (0x480+i.val) := by decide +kernel def c19 : ∀ i : Fin 64, Good (0x4c0+i.val) := by decide +kernel def c20 : ∀ i : Fin 64, Good (0x500+i.val) := by decide +kernel def c21 : ∀ i : Fin 64, Good (0x540+i.val) := by decide +kernel def c22 : ∀ i : Fin 64, Good (0x580+i.val) := by decide +kernel def c23 : ∀ i : Fin 64, Good (0x5c0+i.val) := by decide +kernel def c24 : ∀ i : Fin 64, Good (0x600+i.val) := by decide +kernel def c25 : ∀ i : Fin 64, Good (0x640+i.val) := by decide +kernel def c26 : ∀ i : Fin 64, Good (0x680+i.val) := by decide +kernel def c27 : ∀ i : Fin 64, Good (0x6c0+i.val) := by decide +kernel def c28 : ∀ i : Fin 64, Good (0x700+i.val) := by decide +kernel def c29 : ∀ i : Fin 64, Good (0x740+i.val) := by decide +kernel def c30 : ∀ i : Fin 64, Good (0x780+i.val) := by decide +kernel def c31 : ∀ i : Fin 44, Good (0x7c0+i.val) := by decide +kernel def checked : ∀ i < 0x7ec, Good i := by intro i hi exact (interval_join 0 0x400 0x7ec (interval_join 0 0x200 0x400 (interval_join 0 0x100 0x200 (interval_join 0 0x80 0x100 (interval_join 0 64 0x80 (interval_from_fin 0 64 c0) (interval_from_fin 64 64 c1)) (interval_join 0x80 0xc0 0x100 (interval_from_fin 0x80 64 c2) (interval_from_fin 0xc0 64 c3))) (interval_join 0x100 0x180 0x200 (interval_join 0x100 0x140 0x180 (interval_from_fin 0x100 64 c4) (interval_from_fin 0x140 64 c5)) (interval_join 0x180 0x1c0 0x200 (interval_from_fin 0x180 64 c6) (interval_from_fin 0x1c0 64 c7)))) (interval_join 0x200 0x300 0x400 (interval_join 0x200 0x280 0x300 (interval_join 0x200 0x240 0x280 (interval_from_fin 0x200 64 c8) (interval_from_fin 0x240 64 c9)) (interval_join 0x280 0x2c0 0x300 (interval_from_fin 0x280 64 c10) (interval_from_fin 0x2c0 64 c11))) (interval_join 0x300 0x380 0x400 (interval_join 0x300 0x340 0x380 (interval_from_fin 0x300 64 c12) (interval_from_fin 0x340 64 c13)) (interval_join 0x380 0x3c0 0x400 (interval_from_fin 0x380 64 c14) (interval_from_fin 0x3c0 64 c15))))) (interval_join 0x400 0x600 0x7ec (interval_join 0x400 0x500 0x600 (interval_join 0x400 0x480 0x500 (interval_join 0x400 0x440 0x480 (interval_from_fin 0x400 64 c16) (interval_from_fin 0x440 64 c17)) (interval_join 0x480 0x4c0 0x500 (interval_from_fin 0x480 64 c18) (interval_from_fin 0x4c0 64 c19))) (interval_join 0x500 0x580 0x600 (interval_join 0x500 0x540 0x580 (interval_from_fin 0x500 64 c20) (interval_from_fin 0x540 64 c21)) (interval_join 0x580 0x5c0 0x600 (interval_from_fin 0x580 64 c22) (interval_from_fin 0x5c0 64 c23)))) (interval_join 0x600 0x700 0x7ec (interval_join 0x600 0x680 0x700 (interval_join 0x600 0x640 0x680 (interval_from_fin 0x600 64 c24) (interval_from_fin 0x640 64 c25)) (interval_join 0x680 0x6c0 0x700 (interval_from_fin 0x680 64 c26) (interval_from_fin 0x6c0 64 c27))) (interval_join 0x700 0x780 0x7ec (interval_join 0x700 0x740 0x780 (interval_from_fin 0x700 64 c28) (interval_from_fin 0x740 64 c29)) (interval_join 0x780 0x7c0 0x7ec (interval_from_fin 0x780 64 c30) (interval_from_fin 0x7c0 44 c31)))))) i (Nat.zero_le i) hi def model_agrees (input : ClosureSemantics.Valuation) : ∀ i < 0x7ec, 0 < indexAt indices0 i → ClosureSemantics.programModel ClosureFixedWidthData0.program input i = ClosureSemantics.programModel program0 input i := checked_model_eq ClosureFixedWidthData0.program dictionary indices0 input 0x7ec checked end ClosureAdapterChecks0 end PolicySubmissionPart73 /- Component ClosureAdapterChecks1; SHA256 5ebb7c3a6e4cd2d88ffcca206b2299c7e2c8c54606b54bcc976dc9302ffbdb47. -/ section PolicySubmissionPart74 /- Checked equality and child closure for a finite input adapter. -/ namespace ClosureAdapterChecks1 open ClosurePrefixAdapter ClosurePrefixAdapterData abbrev Good (i : Nat) : Prop := check ClosureFixedWidthData1.program dictionary indices1 0x7ec i = true def c0 : ∀ i : Fin 64, Good (0+i.val) := by decide +kernel def c1 : ∀ i : Fin 64, Good (64+i.val) := by decide +kernel def c2 : ∀ i : Fin 64, Good (0x80+i.val) := by decide +kernel def c3 : ∀ i : Fin 64, Good (0xc0+i.val) := by decide +kernel def c4 : ∀ i : Fin 64, Good (0x100+i.val) := by decide +kernel def c5 : ∀ i : Fin 64, Good (0x140+i.val) := by decide +kernel def c6 : ∀ i : Fin 64, Good (0x180+i.val) := by decide +kernel def c7 : ∀ i : Fin 64, Good (0x1c0+i.val) := by decide +kernel def c8 : ∀ i : Fin 64, Good (0x200+i.val) := by decide +kernel def c9 : ∀ i : Fin 64, Good (0x240+i.val) := by decide +kernel def c10 : ∀ i : Fin 64, Good (0x280+i.val) := by decide +kernel def c11 : ∀ i : Fin 64, Good (0x2c0+i.val) := by decide +kernel def c12 : ∀ i : Fin 64, Good (0x300+i.val) := by decide +kernel def c13 : ∀ i : Fin 64, Good (0x340+i.val) := by decide +kernel def c14 : ∀ i : Fin 64, Good (0x380+i.val) := by decide +kernel def c15 : ∀ i : Fin 64, Good (0x3c0+i.val) := by decide +kernel def c16 : ∀ i : Fin 64, Good (0x400+i.val) := by decide +kernel def c17 : ∀ i : Fin 64, Good (0x440+i.val) := by decide +kernel def c18 : ∀ i : Fin 64, Good (0x480+i.val) := by decide +kernel def c19 : ∀ i : Fin 64, Good (0x4c0+i.val) := by decide +kernel def c20 : ∀ i : Fin 64, Good (0x500+i.val) := by decide +kernel def c21 : ∀ i : Fin 64, Good (0x540+i.val) := by decide +kernel def c22 : ∀ i : Fin 64, Good (0x580+i.val) := by decide +kernel def c23 : ∀ i : Fin 64, Good (0x5c0+i.val) := by decide +kernel def c24 : ∀ i : Fin 64, Good (0x600+i.val) := by decide +kernel def c25 : ∀ i : Fin 64, Good (0x640+i.val) := by decide +kernel def c26 : ∀ i : Fin 64, Good (0x680+i.val) := by decide +kernel def c27 : ∀ i : Fin 64, Good (0x6c0+i.val) := by decide +kernel def c28 : ∀ i : Fin 64, Good (0x700+i.val) := by decide +kernel def c29 : ∀ i : Fin 64, Good (0x740+i.val) := by decide +kernel def c30 : ∀ i : Fin 64, Good (0x780+i.val) := by decide +kernel def c31 : ∀ i : Fin 44, Good (0x7c0+i.val) := by decide +kernel def checked : ∀ i < 0x7ec, Good i := by intro i hi exact (interval_join 0 0x400 0x7ec (interval_join 0 0x200 0x400 (interval_join 0 0x100 0x200 (interval_join 0 0x80 0x100 (interval_join 0 64 0x80 (interval_from_fin 0 64 c0) (interval_from_fin 64 64 c1)) (interval_join 0x80 0xc0 0x100 (interval_from_fin 0x80 64 c2) (interval_from_fin 0xc0 64 c3))) (interval_join 0x100 0x180 0x200 (interval_join 0x100 0x140 0x180 (interval_from_fin 0x100 64 c4) (interval_from_fin 0x140 64 c5)) (interval_join 0x180 0x1c0 0x200 (interval_from_fin 0x180 64 c6) (interval_from_fin 0x1c0 64 c7)))) (interval_join 0x200 0x300 0x400 (interval_join 0x200 0x280 0x300 (interval_join 0x200 0x240 0x280 (interval_from_fin 0x200 64 c8) (interval_from_fin 0x240 64 c9)) (interval_join 0x280 0x2c0 0x300 (interval_from_fin 0x280 64 c10) (interval_from_fin 0x2c0 64 c11))) (interval_join 0x300 0x380 0x400 (interval_join 0x300 0x340 0x380 (interval_from_fin 0x300 64 c12) (interval_from_fin 0x340 64 c13)) (interval_join 0x380 0x3c0 0x400 (interval_from_fin 0x380 64 c14) (interval_from_fin 0x3c0 64 c15))))) (interval_join 0x400 0x600 0x7ec (interval_join 0x400 0x500 0x600 (interval_join 0x400 0x480 0x500 (interval_join 0x400 0x440 0x480 (interval_from_fin 0x400 64 c16) (interval_from_fin 0x440 64 c17)) (interval_join 0x480 0x4c0 0x500 (interval_from_fin 0x480 64 c18) (interval_from_fin 0x4c0 64 c19))) (interval_join 0x500 0x580 0x600 (interval_join 0x500 0x540 0x580 (interval_from_fin 0x500 64 c20) (interval_from_fin 0x540 64 c21)) (interval_join 0x580 0x5c0 0x600 (interval_from_fin 0x580 64 c22) (interval_from_fin 0x5c0 64 c23)))) (interval_join 0x600 0x700 0x7ec (interval_join 0x600 0x680 0x700 (interval_join 0x600 0x640 0x680 (interval_from_fin 0x600 64 c24) (interval_from_fin 0x640 64 c25)) (interval_join 0x680 0x6c0 0x700 (interval_from_fin 0x680 64 c26) (interval_from_fin 0x6c0 64 c27))) (interval_join 0x700 0x780 0x7ec (interval_join 0x700 0x740 0x780 (interval_from_fin 0x700 64 c28) (interval_from_fin 0x740 64 c29)) (interval_join 0x780 0x7c0 0x7ec (interval_from_fin 0x780 64 c30) (interval_from_fin 0x7c0 44 c31)))))) i (Nat.zero_le i) hi def model_agrees (input : ClosureSemantics.Valuation) : ∀ i < 0x7ec, 0 < indexAt indices1 i → ClosureSemantics.programModel ClosureFixedWidthData1.program input i = ClosureSemantics.programModel program1 input i := checked_model_eq ClosureFixedWidthData1.program dictionary indices1 input 0x7ec checked end ClosureAdapterChecks1 end PolicySubmissionPart74 /- Component ClosureSharedAnchorPatternDataExplicit; SHA256 41d2bc6f88ec02918d92865b567e98a7d477c7a36fb10d8583404ab44d500f5b. -/ section PolicySubmissionPart75 /- Explicit, hash-consed anchor patterns. Same interface as the packed module: `patterns : Nat → Pattern`. Generated by `prepare_explicit_anchor_patterns.py` from the packed decoder's own output. -/ namespace ClosureSharedAnchorPatternData open ClosureSemantics ClosurePattern def s0 := Pattern.node (Op.qConst (Int.cast 1)) [] def s1 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x271)) [])] def s2 := Pattern.node (Op.qConst (Int.cast 5)) [] def s3 := Pattern.node (Op.qConst (Int.cast 4)) [] def s4 := Pattern.node Op.qDiv [s2, s3] def s5 := Pattern.node (Op.input 0) [] def s6 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x400)) [])]), s5] def s7 := Pattern.node Op.qMul [s6, s3] def s8 := Pattern.node Op.ite [(Pattern.node Op.qLe [s7, s1]), s7, s6] def s9 := Pattern.node Op.qLt [s1, (Pattern.node Op.qMul [s4, s8])] def s10 := Pattern.node (Op.qConst (Int.cast 9)) [] def s11 := Pattern.node Op.qDiv [(Pattern.node (Op.qConst (Int.cast 10)) []), s10] def s12 := Pattern.node (Op.input 1) [] def s13 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x2d9)) [])]), s12] def s14 := Pattern.node (Op.qConst (Int.cast 3)) [] def s15 := Pattern.node Op.qMul [s13, s14] def s16 := Pattern.node Op.ite [(Pattern.node Op.qLe [s15, s1]), s15, s13] def s17 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s16]), s1] def s18 := Pattern.node Op.qDiv [s3, s14] def s19 := Pattern.node Op.qLt [s1, (Pattern.node Op.qMul [s18, s16])] def s20 := Pattern.node (Op.qConst (Int.cast 2)) [] def s21 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x1000)) [])]), s5] def s22 := Pattern.node Op.qMul [s21, s3] def s23 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0xc35)) [])] def s24 := Pattern.node Op.ite [(Pattern.node Op.qLe [s22, s23]), s22, s21] def s25 := Pattern.node Op.qMul [s20, s24] def s26 := Pattern.node Op.qLe [s25, s23] def s27 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x19a1)) [])]), s12] def s28 := Pattern.node Op.qMul [s27, s14] def s29 := Pattern.node Op.ite [(Pattern.node Op.qLe [s28, s23]), s28, s27] def s30 := Pattern.node Op.qMul [s20, s29] def s31 := Pattern.node Op.qLe [s30, s23] def s32 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s26]), (Pattern.node Op.bNot [s31])] def s33 := Pattern.node Op.ite [s26, s25, (Pattern.node Op.qDiv [s24, s20])] def s34 := Pattern.node Op.ite [s31, s30, (Pattern.node Op.qDiv [s30, s14])] def s35 := Pattern.node (Op.bConst true) [] def s36 := Pattern.node (Op.zConst 1) [] def s37 := Pattern.node (Op.zConst 0) [] def s38 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 0), (Pattern.hole 1), (Pattern.hole 2)]), s36, s37] def s39 := Pattern.node Op.zSub [s38, (Pattern.node Op.ite [(Pattern.hole 3), s36, s37])] def s40 := Pattern.node Op.zEq [s39, s37] def s41 := Pattern.hole 5 def s42 := Pattern.hole 4 def s43 := Pattern.node Op.ite [(Pattern.node Op.qLe [s41, s42]), s42, s41] def s44 := Pattern.node Op.qDiv [s42, s3] def s45 := Pattern.node Op.qDiv [s41, s14] def s46 := Pattern.node Op.ite [s40, s43, (Pattern.node Op.ite [(Pattern.node Op.qLt [s41, s42]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s41, s44]), s44, s41]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s45, s42]), s42, s45])])] def s47 := Pattern.node (Op.input 43) [] def s48 := Pattern.node Op.ite [s40, s23, s43] def s49 := Pattern.node Op.ite [s40, (Pattern.node Op.qLe [s47, s48]), (Pattern.node Op.qLt [s47, s48])] def s50 := Pattern.node Op.bAnd [s26, s31] def s51 := Pattern.node Op.qLe [s29, s24] def s52 := Pattern.node Op.ite [(Pattern.hole 9), s24, s29] def s53 := Pattern.node Op.qLt [s29, s24] def s54 := Pattern.node Op.qDiv [s24, s3] def s55 := Pattern.node Op.qLe [s29, s54] def s56 := Pattern.node Op.ite [(Pattern.hole 12), s54, s29] def s57 := Pattern.node Op.qDiv [s29, s14] def s58 := Pattern.node Op.qLe [s57, s24] def s59 := Pattern.node Op.ite [(Pattern.hole 14), s24, s57] def s60 := Pattern.node Op.zSub [s38, (Pattern.node Op.ite [(Pattern.hole 8), s36, s37])] def s61 := Pattern.node Op.zEq [s60, s37] def s62 := Pattern.node Op.ite [s61, s23, (Pattern.hole 10)] def s63 := Pattern.node Op.ite [s61, (Pattern.node Op.qLe [s47, s62]), (Pattern.node Op.qLt [s47, s62])] def s64 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s60]), (Pattern.node Op.qLe [(Pattern.node Op.ite [s61, (Pattern.hole 10), (Pattern.node Op.ite [(Pattern.hole 11), (Pattern.hole 13), (Pattern.hole 15)])]), s47]), (Pattern.hole 16)] def s65 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0xf5)) [])] def s66 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x100)) [])]), s5] def s67 := Pattern.node Op.qMul [s66, s3] def s68 := Pattern.node Op.ite [(Pattern.node Op.qLe [s67, s65]), s67, s66] def s69 := Pattern.node Op.qLt [s65, (Pattern.node Op.qMul [s4, s68])] def s70 := Pattern.node Op.ite [(Pattern.node Op.qLe [s15, s65]), s15, s13] def s71 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s70]), s65] def s72 := Pattern.node Op.qLt [s65, (Pattern.node Op.qMul [s18, s70])] def s73 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x4c9)) [])] def s74 := Pattern.node Op.ite [(Pattern.node Op.qLe [s22, s73]), s22, s21] def s75 := Pattern.node Op.qMul [s20, s74] def s76 := Pattern.node Op.qLe [s75, s73] def s77 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x88b)) [])]), s12] def s78 := Pattern.node Op.qMul [s77, s14] def s79 := Pattern.node Op.ite [(Pattern.node Op.qLe [s78, s73]), s78, s77] def s80 := Pattern.node Op.qMul [s20, s79] def s81 := Pattern.node Op.qLe [s80, s73] def s82 := Pattern.node Op.bAnd [s76, s81] def s83 := Pattern.node Op.qLe [s79, s74] def s84 := Pattern.node Op.ite [(Pattern.hole 22), s74, s79] def s85 := Pattern.node Op.qLt [s79, s74] def s86 := Pattern.node Op.qDiv [s74, s3] def s87 := Pattern.node Op.qLe [s79, s86] def s88 := Pattern.node Op.ite [(Pattern.hole 25), s86, s79] def s89 := Pattern.node Op.qDiv [s79, s14] def s90 := Pattern.node Op.qLe [s89, s74] def s91 := Pattern.node Op.ite [(Pattern.hole 27), s74, s89] def s92 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 18), (Pattern.hole 19), (Pattern.hole 20)]), s36, s37] def s93 := Pattern.node Op.zSub [s92, (Pattern.node Op.ite [(Pattern.hole 21), s36, s37])] def s94 := Pattern.node Op.zEq [s93, s37] def s95 := Pattern.node Op.ite [s94, (Pattern.hole 23), (Pattern.node Op.ite [(Pattern.hole 24), (Pattern.hole 26), (Pattern.hole 28)])] def s96 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0x1324)) [])] def s97 := Pattern.node Op.ite [(Pattern.node Op.qLe [s95, s96]), s96, s95] def s98 := Pattern.node (Op.input 36) [] def s99 := Pattern.node (Op.bConst false) [] def s100 := Pattern.node (Op.input 37) [] def s101 := Pattern.node Op.qMul [s3, s100] def s102 := Pattern.node (Op.qConst (Int.cast 6)) [] def s103 := Pattern.node Op.qMul [s102, s100] def s104 := Pattern.node Op.ite [(Pattern.node Op.bEq [s98, s99]), s101, s103] def s105 := Pattern.node (Op.input 38) [] def s106 := Pattern.node (Op.input 39) [] def s107 := Pattern.node Op.qMul [s3, s106] def s108 := Pattern.node Op.qMul [s102, s106] def s109 := Pattern.node Op.ite [(Pattern.node Op.bEq [s105, s99]), s107, s108] def s110 := Pattern.node Op.ite [(Pattern.node Op.qLe [s109, (Pattern.hole 29)]), (Pattern.hole 29), s109] def s111 := Pattern.node Op.qLe [s104, s110] def s112 := Pattern.node Op.ite [(Pattern.hole 30), s110, s104] def s113 := Pattern.hole 31 def s114 := Pattern.node Op.ite [s94, s73, (Pattern.hole 23)] def s115 := Pattern.node Op.ite [s94, (Pattern.node Op.qLe [s113, s114]), (Pattern.node Op.qLt [s113, s114])] def s116 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s93]), (Pattern.node Op.qLe [s95, s113]), (Pattern.hole 32)] def s117 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s76]), (Pattern.node Op.bNot [s81])] def s118 := Pattern.node Op.ite [s76, s75, (Pattern.node Op.qDiv [s74, s20])] def s119 := Pattern.node Op.ite [s81, s80, (Pattern.node Op.qDiv [s80, s14])] def s120 := Pattern.node Op.zSub [s92, (Pattern.node Op.ite [(Pattern.hole 34), s36, s37])] def s121 := Pattern.node Op.zEq [s120, s37] def s122 := Pattern.hole 36 def s123 := Pattern.hole 35 def s124 := Pattern.node Op.ite [(Pattern.node Op.qLe [s122, s123]), s123, s122] def s125 := Pattern.node Op.qDiv [s123, s3] def s126 := Pattern.node Op.qDiv [s122, s14] def s127 := Pattern.node Op.ite [s121, s124, (Pattern.node Op.ite [(Pattern.node Op.qLt [s122, s123]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s122, s125]), s125, s122]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s126, s123]), s123, s126])])] def s128 := Pattern.node Op.ite [(Pattern.node Op.bEq [s105, s35]), s107, s108] def s129 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 37), s96]), s96, (Pattern.hole 37)] def s130 := Pattern.node Op.ite [(Pattern.node Op.qLe [s128, s129]), s129, s128] def s131 := Pattern.node Op.ite [(Pattern.node Op.bEq [s98, s35]), s101, s103] def s132 := Pattern.node Op.ite [(Pattern.node Op.qLe [s131, (Pattern.hole 38)]), (Pattern.hole 38), s131] def s133 := Pattern.node Op.ite [s121, s73, s124] def s134 := Pattern.node Op.qLe [s132, s133] def s135 := Pattern.node Op.qLt [s132, s133] def s136 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s120]), (Pattern.node Op.qLe [(Pattern.hole 37), s132]), (Pattern.node Op.ite [s121, (Pattern.hole 39), (Pattern.hole 40)])] def s137 := Pattern.node Op.ite [s76, (Pattern.hole 41), (Pattern.node Op.bNot [(Pattern.hole 33)])] def s138 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0xaf)) [])] def s139 := Pattern.node Op.ite [(Pattern.node Op.qLe [s67, s138]), s67, s66] def s140 := Pattern.node Op.qLt [s138, (Pattern.node Op.qMul [s4, s139])] def s141 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0xf3)) [])]), s12] def s142 := Pattern.node Op.qMul [s141, s14] def s143 := Pattern.node Op.ite [(Pattern.node Op.qLe [s142, s138]), s142, s141] def s144 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s143]), s138] def s145 := Pattern.node Op.qLt [s138, (Pattern.node Op.qMul [s18, s143])] def s146 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x36b)) [])] def s147 := Pattern.node Op.ite [(Pattern.node Op.qLe [s7, s146]), s7, s6] def s148 := Pattern.node Op.qMul [s20, s147] def s149 := Pattern.node Op.qLe [s148, s146] def s150 := Pattern.node Op.ite [(Pattern.node Op.qLe [s78, s146]), s78, s77] def s151 := Pattern.node Op.qMul [s20, s150] def s152 := Pattern.node Op.qLe [s151, s146] def s153 := Pattern.node Op.bAnd [s149, s152] def s154 := Pattern.node Op.qLe [s150, s147] def s155 := Pattern.node Op.ite [(Pattern.hole 47), s147, s150] def s156 := Pattern.node Op.qLt [s150, s147] def s157 := Pattern.node Op.qDiv [s147, s3] def s158 := Pattern.node Op.qLe [s150, s157] def s159 := Pattern.node Op.ite [(Pattern.hole 50), s157, s150] def s160 := Pattern.node Op.qDiv [s150, s14] def s161 := Pattern.node Op.qLe [s160, s147] def s162 := Pattern.node Op.ite [(Pattern.hole 52), s147, s160] def s163 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 43), (Pattern.hole 44), (Pattern.hole 45)]), s36, s37] def s164 := Pattern.node Op.zSub [s163, (Pattern.node Op.ite [(Pattern.hole 46), s36, s37])] def s165 := Pattern.node Op.zEq [s164, s37] def s166 := Pattern.node Op.ite [s165, (Pattern.hole 48), (Pattern.node Op.ite [(Pattern.hole 49), (Pattern.hole 51), (Pattern.hole 53)])] def s167 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0xdac)) [])] def s168 := Pattern.node Op.ite [(Pattern.node Op.qLe [s166, s167]), s167, s166] def s169 := Pattern.node (Op.input 40) [] def s170 := Pattern.node (Op.input 41) [] def s171 := Pattern.node Op.qMul [s3, s170] def s172 := Pattern.node Op.qMul [s102, s170] def s173 := Pattern.node Op.ite [(Pattern.node Op.bEq [s169, s99]), s171, s172] def s174 := Pattern.node Op.ite [(Pattern.node Op.qLe [s173, (Pattern.hole 54)]), (Pattern.hole 54), s173] def s175 := Pattern.node Op.qLe [s109, s174] def s176 := Pattern.node Op.ite [(Pattern.hole 55), s174, s109] def s177 := Pattern.hole 56 def s178 := Pattern.node Op.ite [s165, s146, (Pattern.hole 48)] def s179 := Pattern.node Op.ite [s165, (Pattern.node Op.qLe [s177, s178]), (Pattern.node Op.qLt [s177, s178])] def s180 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s164]), (Pattern.node Op.qLe [s166, s177]), (Pattern.hole 57)] def s181 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s149]), (Pattern.node Op.bNot [s152])] def s182 := Pattern.node Op.ite [s149, s148, (Pattern.node Op.qDiv [s147, s20])] def s183 := Pattern.node Op.ite [s152, s151, (Pattern.node Op.qDiv [s151, s14])] def s184 := Pattern.node Op.zSub [s163, (Pattern.node Op.ite [(Pattern.hole 59), s36, s37])] def s185 := Pattern.node Op.zEq [s184, s37] def s186 := Pattern.hole 61 def s187 := Pattern.hole 60 def s188 := Pattern.node Op.ite [(Pattern.node Op.qLe [s186, s187]), s187, s186] def s189 := Pattern.node Op.qDiv [s187, s3] def s190 := Pattern.node Op.qDiv [s186, s14] def s191 := Pattern.node Op.ite [s185, s188, (Pattern.node Op.ite [(Pattern.node Op.qLt [s186, s187]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s186, s189]), s189, s186]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s190, s187]), s187, s190])])] def s192 := Pattern.node Op.ite [(Pattern.node Op.bEq [s169, s35]), s171, s172] def s193 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 62), s167]), s167, (Pattern.hole 62)] def s194 := Pattern.node Op.ite [(Pattern.node Op.qLe [s192, s193]), s193, s192] def s195 := Pattern.node Op.ite [(Pattern.node Op.qLe [s128, (Pattern.hole 63)]), (Pattern.hole 63), s128] def s196 := Pattern.node Op.ite [s185, s146, s188] def s197 := Pattern.node Op.qLe [s195, s196] def s198 := Pattern.node Op.qLt [s195, s196] def s199 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s184]), (Pattern.node Op.qLe [(Pattern.hole 62), s195]), (Pattern.node Op.ite [s185, (Pattern.hole 64), (Pattern.hole 65)])] def s200 := Pattern.node Op.ite [s149, (Pattern.hole 66), (Pattern.node Op.bNot [(Pattern.hole 58)])] def s201 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 0x7d)) [])] def s202 := Pattern.node Op.ite [(Pattern.node Op.qLe [s67, s201]), s67, s66] def s203 := Pattern.node Op.qLt [s201, (Pattern.node Op.qMul [s4, s202])] def s204 := Pattern.node Op.ite [(Pattern.node Op.qLe [s142, s201]), s142, s141] def s205 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s204]), s201] def s206 := Pattern.node Op.qLt [s201, (Pattern.node Op.qMul [s18, s204])] def s207 := Pattern.node Op.qMul [s20, s8] def s208 := Pattern.node Op.qLe [s207, s1] def s209 := Pattern.node Op.qMul [s20, s16] def s210 := Pattern.node Op.qLe [s209, s1] def s211 := Pattern.node Op.bAnd [s208, s210] def s212 := Pattern.node Op.qLe [s16, s8] def s213 := Pattern.node Op.ite [(Pattern.hole 72), s8, s16] def s214 := Pattern.node Op.qLt [s16, s8] def s215 := Pattern.node Op.qDiv [s8, s3] def s216 := Pattern.node Op.qLe [s16, s215] def s217 := Pattern.node Op.ite [(Pattern.hole 75), s215, s16] def s218 := Pattern.node Op.qDiv [s16, s14] def s219 := Pattern.node Op.qLe [s218, s8] def s220 := Pattern.node Op.ite [(Pattern.hole 77), s8, s218] def s221 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 68), (Pattern.hole 69), (Pattern.hole 70)]), s36, s37] def s222 := Pattern.node Op.zSub [s221, (Pattern.node Op.ite [(Pattern.hole 71), s36, s37])] def s223 := Pattern.node Op.zEq [s222, s37] def s224 := Pattern.node Op.ite [s223, (Pattern.hole 73), (Pattern.node Op.ite [(Pattern.hole 74), (Pattern.hole 76), (Pattern.hole 78)])] def s225 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0x9c4)) [])] def s226 := Pattern.node Op.ite [(Pattern.node Op.qLe [s224, s225]), s225, s224] def s227 := Pattern.node (Op.input 42) [] def s228 := Pattern.node Op.qMul [s3, s47] def s229 := Pattern.node Op.qMul [s102, s47] def s230 := Pattern.node Op.ite [(Pattern.node Op.bEq [s227, s99]), s228, s229] def s231 := Pattern.node Op.ite [(Pattern.node Op.qLe [s230, (Pattern.hole 79)]), (Pattern.hole 79), s230] def s232 := Pattern.node Op.qLe [s173, s231] def s233 := Pattern.node Op.ite [(Pattern.hole 80), s231, s173] def s234 := Pattern.hole 81 def s235 := Pattern.node Op.ite [s223, s1, (Pattern.hole 73)] def s236 := Pattern.node Op.ite [s223, (Pattern.node Op.qLe [s234, s235]), (Pattern.node Op.qLt [s234, s235])] def s237 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s222]), (Pattern.node Op.qLe [s224, s234]), (Pattern.hole 82)] def s238 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s208]), (Pattern.node Op.bNot [s210])] def s239 := Pattern.node Op.ite [s208, s207, (Pattern.node Op.qDiv [s8, s20])] def s240 := Pattern.node Op.ite [s210, s209, (Pattern.node Op.qDiv [s209, s14])] def s241 := Pattern.node Op.zSub [s221, (Pattern.node Op.ite [(Pattern.hole 84), s36, s37])] def s242 := Pattern.node Op.zEq [s241, s37] def s243 := Pattern.hole 86 def s244 := Pattern.hole 85 def s245 := Pattern.node Op.ite [(Pattern.node Op.qLe [s243, s244]), s244, s243] def s246 := Pattern.node Op.qDiv [s244, s3] def s247 := Pattern.node Op.qDiv [s243, s14] def s248 := Pattern.node Op.ite [s242, s245, (Pattern.node Op.ite [(Pattern.node Op.qLt [s243, s244]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s243, s246]), s246, s243]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s247, s244]), s244, s247])])] def s249 := Pattern.node Op.ite [(Pattern.node Op.bEq [s227, s35]), s228, s229] def s250 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 87), s225]), s225, (Pattern.hole 87)] def s251 := Pattern.node Op.ite [(Pattern.node Op.qLe [s249, s250]), s250, s249] def s252 := Pattern.node Op.ite [(Pattern.node Op.qLe [s192, (Pattern.hole 88)]), (Pattern.hole 88), s192] def s253 := Pattern.node Op.ite [s242, s1, s245] def s254 := Pattern.node Op.qLe [s252, s253] def s255 := Pattern.node Op.qLt [s252, s253] def s256 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s241]), (Pattern.node Op.qLe [(Pattern.hole 87), s252]), (Pattern.node Op.ite [s242, (Pattern.hole 89), (Pattern.hole 90)])] def s257 := Pattern.node Op.ite [s208, (Pattern.hole 91), (Pattern.node Op.bNot [(Pattern.hole 83)])] def s258 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 49)) [])] def s259 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 64)) [])]), s5] def s260 := Pattern.node Op.qMul [s259, s3] def s261 := Pattern.node Op.qLt [s258, (Pattern.node Op.qMul [s4, (Pattern.node Op.ite [(Pattern.node Op.qLe [s260, s258]), s260, s259])])] def s262 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 81)) [])]), s12] def s263 := Pattern.node Op.qMul [s262, s14] def s264 := Pattern.node Op.ite [(Pattern.node Op.qLe [s263, s258]), s263, s262] def s265 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s264]), s258] def s266 := Pattern.node Op.qLt [s258, (Pattern.node Op.qMul [s18, s264])] def s267 := Pattern.node Op.qMul [s20, s68] def s268 := Pattern.node Op.qLe [s267, s65] def s269 := Pattern.node Op.qMul [s20, s70] def s270 := Pattern.node Op.qLe [s269, s65] def s271 := Pattern.node Op.bAnd [s268, s270] def s272 := Pattern.node Op.qLe [s70, s68] def s273 := Pattern.node Op.ite [(Pattern.hole 97), s68, s70] def s274 := Pattern.node Op.qLt [s70, s68] def s275 := Pattern.node Op.qDiv [s68, s3] def s276 := Pattern.node Op.qLe [s70, s275] def s277 := Pattern.node Op.ite [(Pattern.hole 0x64), s275, s70] def s278 := Pattern.node Op.qDiv [s70, s14] def s279 := Pattern.node Op.qLe [s278, s68] def s280 := Pattern.node Op.ite [(Pattern.hole 0x66), s68, s278] def s281 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 93), (Pattern.hole 94), (Pattern.hole 95)]), s36, s37] def s282 := Pattern.node Op.zSub [s281, (Pattern.node Op.ite [(Pattern.hole 96), s36, s37])] def s283 := Pattern.node Op.zEq [s282, s37] def s284 := Pattern.node Op.ite [s283, (Pattern.hole 98), (Pattern.node Op.ite [(Pattern.hole 99), (Pattern.hole 0x65), (Pattern.hole 0x67)])] def s285 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0x3d4)) [])] def s286 := Pattern.node Op.ite [(Pattern.node Op.qLe [s284, s285]), s285, s284] def s287 := Pattern.node (Op.input 24) [] def s288 := Pattern.node (Op.input 25) [] def s289 := Pattern.node Op.qMul [s3, s288] def s290 := Pattern.node Op.qMul [s102, s288] def s291 := Pattern.node Op.ite [(Pattern.node Op.bEq [s287, s99]), s289, s290] def s292 := Pattern.node (Op.input 26) [] def s293 := Pattern.node (Op.input 27) [] def s294 := Pattern.node Op.qMul [s3, s293] def s295 := Pattern.node Op.qMul [s102, s293] def s296 := Pattern.node Op.ite [(Pattern.node Op.bEq [s292, s99]), s294, s295] def s297 := Pattern.node Op.ite [(Pattern.node Op.qLe [s296, (Pattern.hole 0x68)]), (Pattern.hole 0x68), s296] def s298 := Pattern.node Op.qLe [s291, s297] def s299 := Pattern.node Op.ite [(Pattern.hole 0x69), s297, s291] def s300 := Pattern.hole 0x6a def s301 := Pattern.node Op.ite [s283, s65, (Pattern.hole 98)] def s302 := Pattern.node Op.ite [s283, (Pattern.node Op.qLe [s300, s301]), (Pattern.node Op.qLt [s300, s301])] def s303 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s282]), (Pattern.node Op.qLe [s284, s300]), (Pattern.hole 0x6b)] def s304 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s268]), (Pattern.node Op.bNot [s270])] def s305 := Pattern.node Op.ite [s268, s267, (Pattern.node Op.qDiv [s68, s20])] def s306 := Pattern.node Op.ite [s270, s269, (Pattern.node Op.qDiv [s269, s14])] def s307 := Pattern.node Op.zSub [s281, (Pattern.node Op.ite [(Pattern.hole 0x6d), s36, s37])] def s308 := Pattern.node Op.zEq [s307, s37] def s309 := Pattern.hole 0x6f def s310 := Pattern.hole 0x6e def s311 := Pattern.node Op.ite [(Pattern.node Op.qLe [s309, s310]), s310, s309] def s312 := Pattern.node Op.qDiv [s310, s3] def s313 := Pattern.node Op.qDiv [s309, s14] def s314 := Pattern.node Op.ite [s308, s311, (Pattern.node Op.ite [(Pattern.node Op.qLt [s309, s310]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s309, s312]), s312, s309]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s313, s310]), s310, s313])])] def s315 := Pattern.node Op.ite [(Pattern.node Op.bEq [s292, s35]), s294, s295] def s316 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0x70), s285]), s285, (Pattern.hole 0x70)] def s317 := Pattern.node Op.ite [(Pattern.node Op.qLe [s315, s316]), s316, s315] def s318 := Pattern.node Op.ite [(Pattern.node Op.bEq [s287, s35]), s289, s290] def s319 := Pattern.node Op.ite [(Pattern.node Op.qLe [s318, (Pattern.hole 0x71)]), (Pattern.hole 0x71), s318] def s320 := Pattern.node Op.ite [s308, s65, s311] def s321 := Pattern.node Op.qLe [s319, s320] def s322 := Pattern.node Op.qLt [s319, s320] def s323 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s307]), (Pattern.node Op.qLe [(Pattern.hole 0x70), s319]), (Pattern.node Op.ite [s308, (Pattern.hole 0x72), (Pattern.hole 0x73)])] def s324 := Pattern.node Op.ite [s268, (Pattern.hole 0x74), (Pattern.node Op.bNot [(Pattern.hole 0x6c)])] def s325 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 35)) [])] def s326 := Pattern.node Op.ite [(Pattern.node Op.qLe [s260, s325]), s260, s259] def s327 := Pattern.node Op.qLt [s325, (Pattern.node Op.qMul [s4, s326])] def s328 := Pattern.node Op.ite [(Pattern.node Op.qLe [s263, s325]), s263, s262] def s329 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s328]), s325] def s330 := Pattern.node Op.qLt [s325, (Pattern.node Op.qMul [s18, s328])] def s331 := Pattern.node Op.qMul [s20, s139] def s332 := Pattern.node Op.qLe [s331, s138] def s333 := Pattern.node Op.qMul [s20, s143] def s334 := Pattern.node Op.qLe [s333, s138] def s335 := Pattern.node Op.bAnd [s332, s334] def s336 := Pattern.node Op.qLe [s143, s139] def s337 := Pattern.node Op.ite [(Pattern.hole 0x7a), s139, s143] def s338 := Pattern.node Op.qLt [s143, s139] def s339 := Pattern.node Op.qDiv [s139, s3] def s340 := Pattern.node Op.qLe [s143, s339] def s341 := Pattern.node Op.ite [(Pattern.hole 0x7d), s339, s143] def s342 := Pattern.node Op.qDiv [s143, s14] def s343 := Pattern.node Op.qLe [s342, s139] def s344 := Pattern.node Op.ite [(Pattern.hole 0x7f), s139, s342] def s345 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 0x76), (Pattern.hole 0x77), (Pattern.hole 0x78)]), s36, s37] def s346 := Pattern.node Op.zSub [s345, (Pattern.node Op.ite [(Pattern.hole 0x79), s36, s37])] def s347 := Pattern.node Op.zEq [s346, s37] def s348 := Pattern.node Op.ite [s347, (Pattern.hole 0x7b), (Pattern.node Op.ite [(Pattern.hole 0x7c), (Pattern.hole 0x7e), (Pattern.hole 0x80)])] def s349 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0x2bc)) [])] def s350 := Pattern.node Op.ite [(Pattern.node Op.qLe [s348, s349]), s349, s348] def s351 := Pattern.node (Op.input 28) [] def s352 := Pattern.node (Op.input 29) [] def s353 := Pattern.node Op.qMul [s3, s352] def s354 := Pattern.node Op.qMul [s102, s352] def s355 := Pattern.node Op.ite [(Pattern.node Op.bEq [s351, s99]), s353, s354] def s356 := Pattern.node Op.ite [(Pattern.node Op.qLe [s355, (Pattern.hole 0x81)]), (Pattern.hole 0x81), s355] def s357 := Pattern.node Op.qLe [s296, s356] def s358 := Pattern.node Op.ite [(Pattern.hole 0x82), s356, s296] def s359 := Pattern.hole 0x83 def s360 := Pattern.node Op.ite [s347, s138, (Pattern.hole 0x7b)] def s361 := Pattern.node Op.ite [s347, (Pattern.node Op.qLe [s359, s360]), (Pattern.node Op.qLt [s359, s360])] def s362 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s346]), (Pattern.node Op.qLe [s348, s359]), (Pattern.hole 0x84)] def s363 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s332]), (Pattern.node Op.bNot [s334])] def s364 := Pattern.node Op.ite [s332, s331, (Pattern.node Op.qDiv [s139, s20])] def s365 := Pattern.node Op.ite [s334, s333, (Pattern.node Op.qDiv [s333, s14])] def s366 := Pattern.node Op.zSub [s345, (Pattern.node Op.ite [(Pattern.hole 0x86), s36, s37])] def s367 := Pattern.node Op.zEq [s366, s37] def s368 := Pattern.hole 0x88 def s369 := Pattern.hole 0x87 def s370 := Pattern.node Op.ite [(Pattern.node Op.qLe [s368, s369]), s369, s368] def s371 := Pattern.node Op.qDiv [s369, s3] def s372 := Pattern.node Op.qDiv [s368, s14] def s373 := Pattern.node Op.ite [s367, s370, (Pattern.node Op.ite [(Pattern.node Op.qLt [s368, s369]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s368, s371]), s371, s368]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s372, s369]), s369, s372])])] def s374 := Pattern.node Op.ite [(Pattern.node Op.bEq [s351, s35]), s353, s354] def s375 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0x89), s349]), s349, (Pattern.hole 0x89)] def s376 := Pattern.node Op.ite [(Pattern.node Op.qLe [s374, s375]), s375, s374] def s377 := Pattern.node Op.ite [(Pattern.node Op.qLe [s315, (Pattern.hole 0x8a)]), (Pattern.hole 0x8a), s315] def s378 := Pattern.node Op.ite [s367, s138, s370] def s379 := Pattern.node Op.qLe [s377, s378] def s380 := Pattern.node Op.qLt [s377, s378] def s381 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s366]), (Pattern.node Op.qLe [(Pattern.hole 0x89), s377]), (Pattern.node Op.ite [s367, (Pattern.hole 0x8b), (Pattern.hole 0x8c)])] def s382 := Pattern.node Op.ite [s332, (Pattern.hole 0x8d), (Pattern.node Op.bNot [(Pattern.hole 0x85)])] def s383 := Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 25)) [])] def s384 := Pattern.node Op.ite [(Pattern.node Op.qLe [s260, s383]), s260, s259] def s385 := Pattern.node Op.qLt [s383, (Pattern.node Op.qMul [s4, s384])] def s386 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 27)) [])]), s12] def s387 := Pattern.node Op.qMul [s386, s14] def s388 := Pattern.node Op.ite [(Pattern.node Op.qLe [s387, s383]), s387, s386] def s389 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s388]), s383] def s390 := Pattern.node Op.qLt [s383, (Pattern.node Op.qMul [s18, s388])] def s391 := Pattern.node Op.qMul [s20, s202] def s392 := Pattern.node Op.qLe [s391, s201] def s393 := Pattern.node Op.qMul [s20, s204] def s394 := Pattern.node Op.qLe [s393, s201] def s395 := Pattern.node Op.bAnd [s392, s394] def s396 := Pattern.node Op.qLe [s204, s202] def s397 := Pattern.node Op.ite [(Pattern.hole 0x93), s202, s204] def s398 := Pattern.node Op.qLt [s204, s202] def s399 := Pattern.node Op.qDiv [s202, s3] def s400 := Pattern.node Op.qLe [s204, s399] def s401 := Pattern.node Op.ite [(Pattern.hole 0x96), s399, s204] def s402 := Pattern.node Op.qDiv [s204, s14] def s403 := Pattern.node Op.qLe [s402, s202] def s404 := Pattern.node Op.ite [(Pattern.hole 0x98), s202, s402] def s405 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 0x8f), (Pattern.hole 0x90), (Pattern.hole 0x91)]), s36, s37] def s406 := Pattern.node Op.zSub [s405, (Pattern.node Op.ite [(Pattern.hole 0x92), s36, s37])] def s407 := Pattern.node Op.zEq [s406, s37] def s408 := Pattern.node Op.ite [s407, (Pattern.hole 0x94), (Pattern.node Op.ite [(Pattern.hole 0x95), (Pattern.hole 0x97), (Pattern.hole 0x99)])] def s409 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0x1f4)) [])] def s410 := Pattern.node Op.ite [(Pattern.node Op.qLe [s408, s409]), s409, s408] def s411 := Pattern.node (Op.input 30) [] def s412 := Pattern.node (Op.input 31) [] def s413 := Pattern.node Op.qMul [s3, s412] def s414 := Pattern.node Op.qMul [s102, s412] def s415 := Pattern.node Op.ite [(Pattern.node Op.bEq [s411, s99]), s413, s414] def s416 := Pattern.node Op.ite [(Pattern.node Op.qLe [s415, (Pattern.hole 0x9a)]), (Pattern.hole 0x9a), s415] def s417 := Pattern.node Op.qLe [s355, s416] def s418 := Pattern.node Op.ite [(Pattern.hole 0x9b), s416, s355] def s419 := Pattern.hole 0x9c def s420 := Pattern.node Op.ite [s407, s201, (Pattern.hole 0x94)] def s421 := Pattern.node Op.ite [s407, (Pattern.node Op.qLe [s419, s420]), (Pattern.node Op.qLt [s419, s420])] def s422 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s406]), (Pattern.node Op.qLe [s408, s419]), (Pattern.hole 0x9d)] def s423 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s392]), (Pattern.node Op.bNot [s394])] def s424 := Pattern.node Op.ite [s392, s391, (Pattern.node Op.qDiv [s202, s20])] def s425 := Pattern.node Op.ite [s394, s393, (Pattern.node Op.qDiv [s393, s14])] def s426 := Pattern.node Op.zSub [s405, (Pattern.node Op.ite [(Pattern.hole 0x9f), s36, s37])] def s427 := Pattern.node Op.zEq [s426, s37] def s428 := Pattern.hole 0xa1 def s429 := Pattern.hole 0xa0 def s430 := Pattern.node Op.ite [(Pattern.node Op.qLe [s428, s429]), s429, s428] def s431 := Pattern.node Op.qDiv [s429, s3] def s432 := Pattern.node Op.qDiv [s428, s14] def s433 := Pattern.node Op.ite [s427, s430, (Pattern.node Op.ite [(Pattern.node Op.qLt [s428, s429]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s428, s431]), s431, s428]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s432, s429]), s429, s432])])] def s434 := Pattern.node Op.ite [(Pattern.node Op.bEq [s411, s35]), s413, s414] def s435 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0xa2), s409]), s409, (Pattern.hole 0xa2)] def s436 := Pattern.node Op.ite [(Pattern.node Op.qLe [s434, s435]), s435, s434] def s437 := Pattern.node Op.ite [(Pattern.node Op.qLe [s374, (Pattern.hole 0xa3)]), (Pattern.hole 0xa3), s374] def s438 := Pattern.node Op.ite [s427, s201, s430] def s439 := Pattern.node Op.qLe [s437, s438] def s440 := Pattern.node Op.qLt [s437, s438] def s441 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s426]), (Pattern.node Op.qLe [(Pattern.hole 0xa2), s437]), (Pattern.node Op.ite [s427, (Pattern.hole 0xa4), (Pattern.hole 0xa5)])] def s442 := Pattern.node Op.ite [s392, (Pattern.hole 0xa6), (Pattern.node Op.bNot [(Pattern.hole 0x9e)])] def s443 := Pattern.node (Op.qConst (Int.cast 7)) [] def s444 := Pattern.node Op.qDiv [s0, s443] def s445 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, (Pattern.node (Op.qConst (Int.cast 16)) [])]), s5] def s446 := Pattern.node Op.qMul [s445, s3] def s447 := Pattern.node Op.ite [(Pattern.node Op.qLe [s446, s444]), s446, s445] def s448 := Pattern.node Op.qLt [s444, (Pattern.node Op.qMul [s4, s447])] def s449 := Pattern.node Op.qMul [(Pattern.node Op.qDiv [s0, s10]), s12] def s450 := Pattern.node Op.qMul [s449, s14] def s451 := Pattern.node Op.ite [(Pattern.node Op.qLe [s450, s444]), s450, s449] def s452 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s451]), s444] def s453 := Pattern.node Op.qLt [s444, (Pattern.node Op.qMul [s18, s451])] def s454 := Pattern.node Op.qMul [s20, s326] def s455 := Pattern.node Op.qLe [s454, s325] def s456 := Pattern.node Op.qMul [s20, s328] def s457 := Pattern.node Op.qLe [s456, s325] def s458 := Pattern.node Op.bAnd [s455, s457] def s459 := Pattern.node Op.qLe [s328, s326] def s460 := Pattern.node Op.ite [(Pattern.hole 0xac), s326, s328] def s461 := Pattern.node Op.qLt [s328, s326] def s462 := Pattern.node Op.qDiv [s326, s3] def s463 := Pattern.node Op.qLe [s328, s462] def s464 := Pattern.node Op.ite [(Pattern.hole 0xaf), s462, s328] def s465 := Pattern.node Op.qDiv [s328, s14] def s466 := Pattern.node Op.qLe [s465, s326] def s467 := Pattern.node Op.ite [(Pattern.hole 0xb1), s326, s465] def s468 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 0xa8), (Pattern.hole 0xa9), (Pattern.hole 0xaa)]), s36, s37] def s469 := Pattern.node Op.zSub [s468, (Pattern.node Op.ite [(Pattern.hole 0xab), s36, s37])] def s470 := Pattern.node Op.zEq [s469, s37] def s471 := Pattern.node Op.ite [s470, (Pattern.hole 0xad), (Pattern.node Op.ite [(Pattern.hole 0xae), (Pattern.hole 0xb0), (Pattern.hole 0xb2)])] def s472 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0x8c)) [])] def s473 := Pattern.node Op.ite [(Pattern.node Op.qLe [s471, s472]), s472, s471] def s474 := Pattern.node (Op.input 16) [] def s475 := Pattern.node (Op.input 17) [] def s476 := Pattern.node Op.qMul [s3, s475] def s477 := Pattern.node Op.qMul [s102, s475] def s478 := Pattern.node Op.ite [(Pattern.node Op.bEq [s474, s99]), s476, s477] def s479 := Pattern.node (Op.input 18) [] def s480 := Pattern.node (Op.input 19) [] def s481 := Pattern.node Op.qMul [s3, s480] def s482 := Pattern.node Op.qMul [s102, s480] def s483 := Pattern.node Op.ite [(Pattern.node Op.bEq [s479, s99]), s481, s482] def s484 := Pattern.node Op.ite [(Pattern.node Op.qLe [s483, (Pattern.hole 0xb3)]), (Pattern.hole 0xb3), s483] def s485 := Pattern.node Op.qLe [s478, s484] def s486 := Pattern.node Op.ite [(Pattern.hole 0xb4), s484, s478] def s487 := Pattern.hole 0xb5 def s488 := Pattern.node Op.ite [s470, s325, (Pattern.hole 0xad)] def s489 := Pattern.node Op.ite [s470, (Pattern.node Op.qLe [s487, s488]), (Pattern.node Op.qLt [s487, s488])] def s490 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s469]), (Pattern.node Op.qLe [s471, s487]), (Pattern.hole 0xb6)] def s491 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s455]), (Pattern.node Op.bNot [s457])] def s492 := Pattern.node Op.ite [s455, s454, (Pattern.node Op.qDiv [s326, s20])] def s493 := Pattern.node Op.ite [s457, s456, (Pattern.node Op.qDiv [s456, s14])] def s494 := Pattern.node Op.zSub [s468, (Pattern.node Op.ite [(Pattern.hole 0xb8), s36, s37])] def s495 := Pattern.node Op.zEq [s494, s37] def s496 := Pattern.hole 0xba def s497 := Pattern.hole 0xb9 def s498 := Pattern.node Op.ite [(Pattern.node Op.qLe [s496, s497]), s497, s496] def s499 := Pattern.node Op.qDiv [s497, s3] def s500 := Pattern.node Op.qDiv [s496, s14] def s501 := Pattern.node Op.ite [s495, s498, (Pattern.node Op.ite [(Pattern.node Op.qLt [s496, s497]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s496, s499]), s499, s496]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s500, s497]), s497, s500])])] def s502 := Pattern.node Op.ite [(Pattern.node Op.bEq [s479, s35]), s481, s482] def s503 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0xbb), s472]), s472, (Pattern.hole 0xbb)] def s504 := Pattern.node Op.ite [(Pattern.node Op.qLe [s502, s503]), s503, s502] def s505 := Pattern.node Op.ite [(Pattern.node Op.bEq [s474, s35]), s476, s477] def s506 := Pattern.node Op.ite [(Pattern.node Op.qLe [s505, (Pattern.hole 0xbc)]), (Pattern.hole 0xbc), s505] def s507 := Pattern.node Op.ite [s495, s325, s498] def s508 := Pattern.node Op.qLe [s506, s507] def s509 := Pattern.node Op.qLt [s506, s507] def s510 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s494]), (Pattern.node Op.qLe [(Pattern.hole 0xbb), s506]), (Pattern.node Op.ite [s495, (Pattern.hole 0xbd), (Pattern.hole 0xbe)])] def s511 := Pattern.node Op.ite [s455, (Pattern.hole 0xbf), (Pattern.node Op.bNot [(Pattern.hole 0xb7)])] def s512 := Pattern.node Op.qDiv [s0, s2] def s513 := Pattern.node Op.ite [(Pattern.node Op.qLe [s446, s512]), s446, s445] def s514 := Pattern.node Op.qLt [s512, (Pattern.node Op.qMul [s4, s513])] def s515 := Pattern.node Op.ite [(Pattern.node Op.qLe [s450, s512]), s450, s449] def s516 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s515]), s512] def s517 := Pattern.node Op.qLt [s512, (Pattern.node Op.qMul [s18, s515])] def s518 := Pattern.node Op.qMul [s20, s384] def s519 := Pattern.node Op.qLe [s518, s383] def s520 := Pattern.node Op.qMul [s20, s388] def s521 := Pattern.node Op.qLe [s520, s383] def s522 := Pattern.node Op.bAnd [s519, s521] def s523 := Pattern.node Op.qLe [s388, s384] def s524 := Pattern.node Op.ite [(Pattern.hole 0xc5), s384, s388] def s525 := Pattern.node Op.qLt [s388, s384] def s526 := Pattern.node Op.qDiv [s384, s3] def s527 := Pattern.node Op.qLe [s388, s526] def s528 := Pattern.node Op.ite [(Pattern.hole 0xc8), s526, s388] def s529 := Pattern.node Op.qDiv [s388, s14] def s530 := Pattern.node Op.qLe [s529, s384] def s531 := Pattern.node Op.ite [(Pattern.hole 0xca), s384, s529] def s532 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 0xc1), (Pattern.hole 0xc2), (Pattern.hole 0xc3)]), s36, s37] def s533 := Pattern.node Op.zSub [s532, (Pattern.node Op.ite [(Pattern.hole 0xc4), s36, s37])] def s534 := Pattern.node Op.zEq [s533, s37] def s535 := Pattern.node Op.ite [s534, (Pattern.hole 0xc6), (Pattern.node Op.ite [(Pattern.hole 0xc7), (Pattern.hole 0xc9), (Pattern.hole 0xcb)])] def s536 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0x64)) [])] def s537 := Pattern.node Op.ite [(Pattern.node Op.qLe [s535, s536]), s536, s535] def s538 := Pattern.node (Op.input 20) [] def s539 := Pattern.node (Op.input 21) [] def s540 := Pattern.node Op.qMul [s3, s539] def s541 := Pattern.node Op.qMul [s102, s539] def s542 := Pattern.node Op.ite [(Pattern.node Op.bEq [s538, s99]), s540, s541] def s543 := Pattern.node Op.ite [(Pattern.node Op.qLe [s542, (Pattern.hole 0xcc)]), (Pattern.hole 0xcc), s542] def s544 := Pattern.node Op.qLe [s483, s543] def s545 := Pattern.node Op.ite [(Pattern.hole 0xcd), s543, s483] def s546 := Pattern.hole 0xce def s547 := Pattern.node Op.ite [s534, s383, (Pattern.hole 0xc6)] def s548 := Pattern.node Op.ite [s534, (Pattern.node Op.qLe [s546, s547]), (Pattern.node Op.qLt [s546, s547])] def s549 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s533]), (Pattern.node Op.qLe [s535, s546]), (Pattern.hole 0xcf)] def s550 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s519]), (Pattern.node Op.bNot [s521])] def s551 := Pattern.node Op.ite [s519, s518, (Pattern.node Op.qDiv [s384, s20])] def s552 := Pattern.node Op.ite [s521, s520, (Pattern.node Op.qDiv [s520, s14])] def s553 := Pattern.node Op.zSub [s532, (Pattern.node Op.ite [(Pattern.hole 0xd1), s36, s37])] def s554 := Pattern.node Op.zEq [s553, s37] def s555 := Pattern.hole 0xd3 def s556 := Pattern.hole 0xd2 def s557 := Pattern.node Op.ite [(Pattern.node Op.qLe [s555, s556]), s556, s555] def s558 := Pattern.node Op.qDiv [s556, s3] def s559 := Pattern.node Op.qDiv [s555, s14] def s560 := Pattern.node Op.ite [s554, s557, (Pattern.node Op.ite [(Pattern.node Op.qLt [s555, s556]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s555, s558]), s558, s555]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s559, s556]), s556, s559])])] def s561 := Pattern.node Op.ite [(Pattern.node Op.bEq [s538, s35]), s540, s541] def s562 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0xd4), s536]), s536, (Pattern.hole 0xd4)] def s563 := Pattern.node Op.ite [(Pattern.node Op.qLe [s561, s562]), s562, s561] def s564 := Pattern.node Op.ite [(Pattern.node Op.qLe [s502, (Pattern.hole 0xd5)]), (Pattern.hole 0xd5), s502] def s565 := Pattern.node Op.ite [s554, s383, s557] def s566 := Pattern.node Op.qLe [s564, s565] def s567 := Pattern.node Op.qLt [s564, s565] def s568 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s553]), (Pattern.node Op.qLe [(Pattern.hole 0xd4), s564]), (Pattern.node Op.ite [s554, (Pattern.hole 0xd6), (Pattern.hole 0xd7)])] def s569 := Pattern.node Op.ite [s519, (Pattern.hole 0xd8), (Pattern.node Op.bNot [(Pattern.hole 0xd0)])] def s570 := Pattern.node Op.qDiv [s2, s443] def s571 := Pattern.node Op.qDiv [s0, s3] def s572 := Pattern.node Op.qMul [s571, s5] def s573 := Pattern.node Op.qMul [s572, s3] def s574 := Pattern.node Op.qLt [s570, (Pattern.node Op.qMul [s4, (Pattern.node Op.ite [(Pattern.node Op.qLe [s573, s570]), s573, s572])])] def s575 := Pattern.node Op.qDiv [s0, s14] def s576 := Pattern.node Op.qMul [s575, s12] def s577 := Pattern.node Op.qMul [s576, s14] def s578 := Pattern.node Op.ite [(Pattern.node Op.qLe [s577, s570]), s577, s576] def s579 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s578]), s570] def s580 := Pattern.node Op.qLt [s570, (Pattern.node Op.qMul [s18, s578])] def s581 := Pattern.node Op.qMul [s20, s447] def s582 := Pattern.node Op.qLe [s581, s444] def s583 := Pattern.node Op.qMul [s20, s451] def s584 := Pattern.node Op.qLe [s583, s444] def s585 := Pattern.node Op.bAnd [s582, s584] def s586 := Pattern.node Op.qLe [s451, s447] def s587 := Pattern.node Op.ite [(Pattern.hole 0xde), s447, s451] def s588 := Pattern.node Op.qLt [s451, s447] def s589 := Pattern.node Op.qDiv [s447, s3] def s590 := Pattern.node Op.qLe [s451, s589] def s591 := Pattern.node Op.ite [(Pattern.hole 0xe1), s589, s451] def s592 := Pattern.node Op.qDiv [s451, s14] def s593 := Pattern.node Op.qLe [s592, s447] def s594 := Pattern.node Op.ite [(Pattern.hole 0xe3), s447, s592] def s595 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s99, (Pattern.hole 0xda), (Pattern.hole 0xdb), (Pattern.hole 0xdc)]), s36, s37] def s596 := Pattern.node Op.ite [(Pattern.hole 0xdd), s36, s37] def s597 := Pattern.node Op.zSub [s595, s596] def s598 := Pattern.node Op.zEq [s597, s37] def s599 := Pattern.hole 0xdf def s600 := Pattern.node Op.ite [(Pattern.hole 0xe0), (Pattern.hole 0xe2), (Pattern.hole 0xe4)] def s601 := Pattern.node Op.ite [s598, s599, s600] def s602 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 28)) [])] def s603 := Pattern.node Op.ite [(Pattern.node Op.qLe [s601, s602]), s602, s601] def s604 := Pattern.node (Op.input 8) [] def s605 := Pattern.node (Op.input 9) [] def s606 := Pattern.node Op.qMul [s3, s605] def s607 := Pattern.node Op.qMul [s102, s605] def s608 := Pattern.node Op.ite [(Pattern.node Op.bEq [s604, s99]), s606, s607] def s609 := Pattern.node (Op.input 10) [] def s610 := Pattern.node (Op.input 11) [] def s611 := Pattern.node Op.qMul [s3, s610] def s612 := Pattern.node Op.qMul [s102, s610] def s613 := Pattern.node Op.ite [(Pattern.node Op.bEq [s609, s99]), s611, s612] def s614 := Pattern.node Op.ite [(Pattern.node Op.qLe [s613, (Pattern.hole 0xe5)]), (Pattern.hole 0xe5), s613] def s615 := Pattern.node Op.qLe [s608, s614] def s616 := Pattern.node Op.ite [(Pattern.hole 0xe6), s614, s608] def s617 := Pattern.hole 0xe7 def s618 := Pattern.node Op.ite [s598, s444, s599] def s619 := Pattern.node Op.ite [s598, (Pattern.node Op.qLe [s617, s618]), (Pattern.node Op.qLt [s617, s618])] def s620 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s597]), (Pattern.node Op.qLe [s601, s617]), (Pattern.hole 0xe8)] def s621 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s582]), (Pattern.node Op.bNot [s584])] def s622 := Pattern.node Op.ite [s582, s581, (Pattern.node Op.qDiv [s447, s20])] def s623 := Pattern.node Op.ite [s584, s583, (Pattern.node Op.qDiv [s583, s14])] def s624 := Pattern.node Op.ite [(Pattern.hole 0xea), s36, s37] def s625 := Pattern.node Op.zSub [s595, s624] def s626 := Pattern.node Op.zEq [s625, s37] def s627 := Pattern.hole 0xec def s628 := Pattern.hole 0xeb def s629 := Pattern.node Op.ite [(Pattern.node Op.qLe [s627, s628]), s628, s627] def s630 := Pattern.node Op.qDiv [s628, s3] def s631 := Pattern.node Op.qDiv [s627, s14] def s632 := Pattern.node Op.ite [(Pattern.node Op.qLt [s627, s628]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s627, s630]), s630, s627]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s631, s628]), s628, s631])] def s633 := Pattern.node Op.ite [s626, s629, s632] def s634 := Pattern.node Op.ite [(Pattern.node Op.bEq [s609, s35]), s611, s612] def s635 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0xed), s602]), s602, (Pattern.hole 0xed)] def s636 := Pattern.node Op.ite [(Pattern.node Op.qLe [s634, s635]), s635, s634] def s637 := Pattern.node Op.ite [(Pattern.node Op.bEq [s604, s35]), s606, s607] def s638 := Pattern.node Op.ite [(Pattern.node Op.qLe [s637, (Pattern.hole 0xee)]), (Pattern.hole 0xee), s637] def s639 := Pattern.node Op.ite [s626, s444, s629] def s640 := Pattern.node Op.qLe [s638, s639] def s641 := Pattern.node Op.qLt [s638, s639] def s642 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s625]), (Pattern.node Op.qLe [(Pattern.hole 0xed), s638]), (Pattern.node Op.ite [s626, (Pattern.hole 0xef), (Pattern.hole 0xf0)])] def s643 := Pattern.node Op.ite [s582, (Pattern.hole 0xf1), (Pattern.node Op.bNot [(Pattern.hole 0xe9)])] def s644 := Pattern.node Op.qMul [s0, s5] def s645 := Pattern.node Op.qMul [s644, s3] def s646 := Pattern.node Op.ite [(Pattern.node Op.qLe [s645, s0]), s645, s644] def s647 := Pattern.node Op.qMul [s0, s12] def s648 := Pattern.node Op.qMul [s647, s14] def s649 := Pattern.node Op.ite [(Pattern.node Op.qLe [s648, s0]), s648, s647] def s650 := Pattern.node Op.bAnd [s35, (Pattern.node Op.qLt [s0, (Pattern.node Op.qMul [s4, s646])]), (Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s649]), s0]), (Pattern.node Op.qLt [s0, (Pattern.node Op.qMul [s18, s649])])] def s651 := Pattern.node Op.qMul [s20, s513] def s652 := Pattern.node Op.qLe [s651, s512] def s653 := Pattern.node Op.qMul [s20, s515] def s654 := Pattern.node Op.qLe [s653, s512] def s655 := Pattern.node Op.bAnd [s652, s654] def s656 := Pattern.node Op.qLe [s515, s513] def s657 := Pattern.node Op.ite [(Pattern.hole 0xf5), s513, s515] def s658 := Pattern.node Op.qLt [s515, s513] def s659 := Pattern.node Op.qDiv [s513, s3] def s660 := Pattern.node Op.qLe [s515, s659] def s661 := Pattern.node Op.ite [(Pattern.hole 0xf8), s659, s515] def s662 := Pattern.node Op.qDiv [s515, s14] def s663 := Pattern.node Op.qLe [s662, s513] def s664 := Pattern.node Op.ite [(Pattern.hole 0xfa), s513, s662] def s665 := Pattern.node Op.ite [(Pattern.hole 0xf3), s36, s37] def s666 := Pattern.node Op.zSub [s665, (Pattern.node Op.ite [(Pattern.hole 0xf4), s36, s37])] def s667 := Pattern.node Op.zEq [s666, s37] def s668 := Pattern.node Op.ite [s667, (Pattern.hole 0xf6), (Pattern.node Op.ite [(Pattern.hole 0xf7), (Pattern.hole 0xf9), (Pattern.hole 0xfb)])] def s669 := Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 20)) [])] def s670 := Pattern.node Op.ite [(Pattern.node Op.qLe [s668, s669]), s669, s668] def s671 := Pattern.node (Op.input 12) [] def s672 := Pattern.node (Op.input 13) [] def s673 := Pattern.node Op.qMul [s3, s672] def s674 := Pattern.node Op.qMul [s102, s672] def s675 := Pattern.node Op.ite [(Pattern.node Op.bEq [s671, s99]), s673, s674] def s676 := Pattern.node Op.ite [(Pattern.node Op.qLe [s675, (Pattern.hole 0xfc)]), (Pattern.hole 0xfc), s675] def s677 := Pattern.node Op.qLe [s613, s676] def s678 := Pattern.node Op.ite [(Pattern.hole 0xfd), s676, s613] def s679 := Pattern.hole 0xfe def s680 := Pattern.node Op.ite [s667, s512, (Pattern.hole 0xf6)] def s681 := Pattern.node Op.ite [s667, (Pattern.node Op.qLe [s679, s680]), (Pattern.node Op.qLt [s679, s680])] def s682 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s666]), (Pattern.node Op.qLe [s668, s679]), (Pattern.hole 0xff)] def s683 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s652]), (Pattern.node Op.bNot [s654])] def s684 := Pattern.node Op.ite [s652, s651, (Pattern.node Op.qDiv [s513, s20])] def s685 := Pattern.node Op.ite [s654, s653, (Pattern.node Op.qDiv [s653, s14])] def s686 := Pattern.node Op.zSub [s665, (Pattern.node Op.ite [(Pattern.hole 0x101), s36, s37])] def s687 := Pattern.node Op.zEq [s686, s37] def s688 := Pattern.hole 0x103 def s689 := Pattern.hole 0x102 def s690 := Pattern.node Op.ite [(Pattern.node Op.qLe [s688, s689]), s689, s688] def s691 := Pattern.node Op.qDiv [s689, s3] def s692 := Pattern.node Op.qDiv [s688, s14] def s693 := Pattern.node Op.ite [s687, s690, (Pattern.node Op.ite [(Pattern.node Op.qLt [s688, s689]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s688, s691]), s691, s688]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s692, s689]), s689, s692])])] def s694 := Pattern.node Op.ite [(Pattern.node Op.bEq [s671, s35]), s673, s674] def s695 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0x104), s669]), s669, (Pattern.hole 0x104)] def s696 := Pattern.node Op.ite [(Pattern.node Op.qLe [s694, s695]), s695, s694] def s697 := Pattern.node Op.ite [(Pattern.node Op.qLe [s634, (Pattern.hole 0x105)]), (Pattern.hole 0x105), s634] def s698 := Pattern.node Op.ite [s687, s512, s690] def s699 := Pattern.node Op.qLe [s697, s698] def s700 := Pattern.node Op.qLt [s697, s698] def s701 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s686]), (Pattern.node Op.qLe [(Pattern.hole 0x104), s697]), (Pattern.node Op.ite [s687, (Pattern.hole 0x106), (Pattern.hole 0x107)])] def s702 := Pattern.node Op.ite [s652, (Pattern.hole 0x108), (Pattern.node Op.bNot [(Pattern.hole 0x100)])] def s703 := Pattern.node Op.qMul [s3, s5] def s704 := Pattern.node Op.qMul [s703, s3] def s705 := Pattern.node Op.qLt [s2, (Pattern.node Op.qMul [s4, (Pattern.node Op.ite [(Pattern.node Op.qLe [s704, s2]), s704, s703])])] def s706 := Pattern.node Op.qMul [s14, s12] def s707 := Pattern.node Op.qMul [s706, s14] def s708 := Pattern.node Op.ite [(Pattern.node Op.qLe [s707, s2]), s707, s706] def s709 := Pattern.node Op.qLe [(Pattern.node Op.qMul [s11, s708]), s2] def s710 := Pattern.node Op.qLt [s2, (Pattern.node Op.qMul [s18, s708])] def s711 := Pattern.node Op.bAnd [s99, s705, s709, s710] def s712 := Pattern.node Op.qMul [s20, s646] def s713 := Pattern.node Op.qLe [s712, s0] def s714 := Pattern.node Op.qMul [s20, s649] def s715 := Pattern.node Op.qLe [s714, s0] def s716 := Pattern.node Op.bAnd [s713, s715] def s717 := Pattern.node Op.qLe [s649, s646] def s718 := Pattern.node Op.ite [(Pattern.hole 0x10c), s646, s649] def s719 := Pattern.node Op.qLt [s649, s646] def s720 := Pattern.node Op.qDiv [s646, s3] def s721 := Pattern.node Op.qLe [s649, s720] def s722 := Pattern.node Op.ite [(Pattern.hole 0x10f), s720, s649] def s723 := Pattern.node Op.qDiv [s649, s14] def s724 := Pattern.node Op.qLe [s723, s646] def s725 := Pattern.node Op.ite [(Pattern.hole 0x111), s646, s723] def s726 := Pattern.node Op.ite [(Pattern.hole 0x10a), s36, s37] def s727 := Pattern.node Op.ite [(Pattern.hole 0x10b), s36, s37] def s728 := Pattern.node Op.zSub [s726, s727] def s729 := Pattern.node Op.zEq [s728, s37] def s730 := Pattern.hole 0x10d def s731 := Pattern.node Op.ite [(Pattern.hole 0x10e), (Pattern.hole 0x110), (Pattern.hole 0x112)] def s732 := Pattern.node Op.ite [s729, s730, s731] def s733 := Pattern.node Op.qDiv [s14, s3] def s734 := Pattern.node Op.ite [(Pattern.node Op.qLe [s732, s733]), s733, s732] def s735 := Pattern.node (Op.input 4) [] def s736 := Pattern.node (Op.input 5) [] def s737 := Pattern.node Op.qMul [s3, s736] def s738 := Pattern.node Op.qMul [s102, s736] def s739 := Pattern.node Op.ite [(Pattern.node Op.bEq [s735, s99]), s737, s738] def s740 := Pattern.node (Op.input 6) [] def s741 := Pattern.node (Op.input 7) [] def s742 := Pattern.node Op.qMul [s3, s741] def s743 := Pattern.node Op.qMul [s102, s741] def s744 := Pattern.node Op.ite [(Pattern.node Op.bEq [s740, s99]), s742, s743] def s745 := Pattern.node Op.ite [(Pattern.node Op.qLe [s744, (Pattern.hole 0x113)]), (Pattern.hole 0x113), s744] def s746 := Pattern.node Op.qLe [s739, s745] def s747 := Pattern.node Op.ite [(Pattern.hole 0x114), s745, s739] def s748 := Pattern.node Op.ite [s729, s0, s730] def s749 := Pattern.node Op.ite [s729, (Pattern.node Op.qLe [(Pattern.hole 0x115), s748]), (Pattern.node Op.qLt [(Pattern.hole 0x115), s748])] def s750 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s728]), (Pattern.node Op.qLe [s732, (Pattern.hole 0x115)]), (Pattern.hole 0x116)] def s751 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [s713]), (Pattern.node Op.bNot [s715])] def s752 := Pattern.node Op.ite [s713, s712, (Pattern.node Op.qDiv [s646, s20])] def s753 := Pattern.node Op.ite [s715, s714, (Pattern.node Op.qDiv [s714, s14])] def s754 := Pattern.node Op.ite [(Pattern.hole 0x118), s36, s37] def s755 := Pattern.node Op.zSub [s726, s754] def s756 := Pattern.node Op.zEq [s755, s37] def s757 := Pattern.hole 0x11a def s758 := Pattern.hole 0x119 def s759 := Pattern.node Op.ite [(Pattern.node Op.qLe [s757, s758]), s758, s757] def s760 := Pattern.node Op.qDiv [s758, s3] def s761 := Pattern.node Op.qDiv [s757, s14] def s762 := Pattern.node Op.ite [(Pattern.node Op.qLt [s757, s758]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s757, s760]), s760, s757]), (Pattern.node Op.ite [(Pattern.node Op.qLe [s761, s758]), s758, s761])] def s763 := Pattern.node Op.ite [s756, s759, s762] def s764 := Pattern.node Op.ite [(Pattern.node Op.bEq [s740, s35]), s742, s743] def s765 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0x11b), s733]), s733, (Pattern.hole 0x11b)] def s766 := Pattern.node Op.ite [(Pattern.node Op.qLe [s764, s765]), s765, s764] def s767 := Pattern.node Op.ite [(Pattern.node Op.bEq [s735, s35]), s737, s738] def s768 := Pattern.node Op.ite [(Pattern.node Op.qLe [s767, (Pattern.hole 0x11c)]), (Pattern.hole 0x11c), s767] def s769 := Pattern.node Op.ite [s756, s0, s759] def s770 := Pattern.node Op.qLe [s768, s769] def s771 := Pattern.node Op.qLt [s768, s769] def s772 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s755]), (Pattern.node Op.qLe [(Pattern.hole 0x11b), s768]), (Pattern.node Op.ite [s756, (Pattern.hole 0x11d), (Pattern.hole 0x11e)])] def s773 := Pattern.node Op.bEq [s609, (Pattern.hole 0xc0)] def s774 := Pattern.node Op.qEq [s610, (Pattern.node Op.ite [s609, s506, s487])] def s775 := Pattern.node Op.qLt [s571, s5] def s776 := Pattern.node Op.qLe [s12, s0] def s777 := Pattern.node Op.qLe [s5, s0] def s778 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [(Pattern.hole 0x117)]), (Pattern.node Op.bNot [(Pattern.hole 0x11f)])] def s779 := Pattern.node Op.bEq [s735, (Pattern.hole 0xf2)] def s780 := Pattern.node Op.qEq [s736, (Pattern.node Op.ite [s735, s638, s617])] def s781 := Pattern.node Op.bOr [(Pattern.hole 0xe9), (Pattern.hole 0xf1)] def s782 := Pattern.node Op.qLt [s575, s12] def s783 := Pattern.node Op.bOr [(Pattern.hole 0x100), (Pattern.hole 0x108)] def s784 := Pattern.node Op.bEq [s740, (Pattern.hole 0x109)] def s785 := Pattern.node Op.qEq [s741, (Pattern.node Op.ite [s740, s697, s679])] def s786 := Pattern.node Op.qEq [s475, (Pattern.node Op.ite [s474, s319, s300])] def s787 := Pattern.node Op.bOr [(Pattern.hole 0x6c), (Pattern.hole 0x74)] def s788 := Pattern.node Op.bEq [s474, (Pattern.hole 0x75)] def s789 := Pattern.node Op.qEq [s480, (Pattern.node Op.ite [s479, s377, s359])] def s790 := Pattern.node Op.qEq [s352, (Pattern.node Op.ite [s351, s195, s177])] def s791 := Pattern.node Op.bOr [(Pattern.hole 0x85), (Pattern.hole 0x8d)] def s792 := Pattern.node Op.bEq [s479, (Pattern.hole 0x8e)] def s793 := Pattern.node Op.bEq [s292, (Pattern.hole 42)] def s794 := Pattern.node Op.bOr [(Pattern.hole 33), (Pattern.hole 41)] def s795 := Pattern.node Op.qEq [s293, (Pattern.node Op.ite [s292, s132, s113])] def s796 := Pattern.node Op.bOr [(Pattern.hole 0xb7), (Pattern.hole 0xbf)] def s797 := Pattern.node Op.qEq [s539, (Pattern.node Op.ite [s538, s437, s419])] def s798 := Pattern.node Op.bOr [(Pattern.hole 0xd0), (Pattern.hole 0xd8)] def s799 := Pattern.node Op.bEq [s671, (Pattern.hole 0xd9)] def s800 := Pattern.node Op.qEq [s672, (Pattern.node Op.ite [s671, s564, s546])] def s801 := Pattern.node Op.bEq [s538, (Pattern.hole 0xa7)] def s802 := Pattern.node Op.bOr [(Pattern.hole 0x9e), (Pattern.hole 0xa6)] def s803 := Pattern.node Op.ite [s227, (Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s39]), (Pattern.node Op.qLe [(Pattern.hole 6), s47]), (Pattern.hole 7)]), (Pattern.hole 17)] def s804 := Pattern.node Op.bEq [s351, (Pattern.hole 67)] def s805 := Pattern.node Op.bOr [(Pattern.hole 58), (Pattern.hole 66)] def s806 := Pattern.node Op.bEq [s411, (Pattern.hole 92)] def s807 := Pattern.node Op.qEq [s412, (Pattern.node Op.ite [s411, s252, s234])] def s808 := Pattern.node Op.bOr [(Pattern.hole 83), (Pattern.hole 91)] def s809 := Pattern.node Op.ite [(Pattern.node Op.bAnd [s35, (Pattern.hole 0xda), (Pattern.hole 0xdb), (Pattern.hole 0xdc)]), s36, s37] def s810 := Pattern.node Op.zSub [s809, s596] def s811 := Pattern.node Op.zEq [s810, s37] def s812 := Pattern.node Op.ite [s811, s599, s600] def s813 := Pattern.node Op.ite [(Pattern.node Op.qLe [s812, s602]), s602, s812] def s814 := Pattern.node Op.ite [(Pattern.node Op.qLe [s613, (Pattern.hole 0x144)]), (Pattern.hole 0x144), s613] def s815 := Pattern.node Op.qLe [s608, s814] def s816 := Pattern.node Op.ite [(Pattern.hole 0x145), s814, s608] def s817 := Pattern.hole 0x146 def s818 := Pattern.node Op.ite [s811, s444, s599] def s819 := Pattern.node Op.ite [s811, (Pattern.node Op.qLe [s817, s818]), (Pattern.node Op.qLt [s817, s818])] def s820 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s810]), (Pattern.node Op.qLe [s812, s817]), (Pattern.hole 0x147)] def s821 := Pattern.node Op.zSub [s809, s624] def s822 := Pattern.node Op.zEq [s821, s37] def s823 := Pattern.node Op.ite [s822, s629, s632] def s824 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0x149), s602]), s602, (Pattern.hole 0x149)] def s825 := Pattern.node Op.ite [(Pattern.node Op.qLe [s634, s824]), s824, s634] def s826 := Pattern.node Op.ite [(Pattern.node Op.qLe [s637, (Pattern.hole 0x14a)]), (Pattern.hole 0x14a), s637] def s827 := Pattern.node Op.ite [s822, s444, s629] def s828 := Pattern.node Op.qLe [s826, s827] def s829 := Pattern.node Op.qLt [s826, s827] def s830 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s821]), (Pattern.node Op.qLe [(Pattern.hole 0x149), s826]), (Pattern.node Op.ite [s822, (Pattern.hole 0x14b), (Pattern.hole 0x14c)])] def s831 := Pattern.node Op.ite [s582, (Pattern.hole 0x14d), (Pattern.node Op.bNot [(Pattern.hole 0x148)])] def s832 := Pattern.node Op.bAnd [s35, s705, s709, s710] def s833 := Pattern.node Op.ite [(Pattern.hole 0x14f), s36, s37] def s834 := Pattern.node Op.zSub [s833, s727] def s835 := Pattern.node Op.zEq [s834, s37] def s836 := Pattern.node Op.ite [s835, s730, s731] def s837 := Pattern.node Op.ite [(Pattern.node Op.qLe [s836, s733]), s733, s836] def s838 := Pattern.node Op.ite [(Pattern.node Op.qLe [s744, (Pattern.hole 0x150)]), (Pattern.hole 0x150), s744] def s839 := Pattern.node Op.qLe [s739, s838] def s840 := Pattern.node Op.ite [(Pattern.hole 0x151), s838, s739] def s841 := Pattern.node Op.ite [s835, s0, s730] def s842 := Pattern.node Op.ite [s835, (Pattern.node Op.qLe [(Pattern.hole 0x152), s841]), (Pattern.node Op.qLt [(Pattern.hole 0x152), s841])] def s843 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s834]), (Pattern.node Op.qLe [s836, (Pattern.hole 0x152)]), (Pattern.hole 0x153)] def s844 := Pattern.node Op.zSub [s833, s754] def s845 := Pattern.node Op.zEq [s844, s37] def s846 := Pattern.node Op.ite [s845, s759, s762] def s847 := Pattern.node Op.ite [(Pattern.node Op.qLe [(Pattern.hole 0x155), s733]), s733, (Pattern.hole 0x155)] def s848 := Pattern.node Op.ite [(Pattern.node Op.qLe [s764, s847]), s847, s764] def s849 := Pattern.node Op.ite [(Pattern.node Op.qLe [s767, (Pattern.hole 0x156)]), (Pattern.hole 0x156), s767] def s850 := Pattern.node Op.ite [s845, s0, s759] def s851 := Pattern.node Op.qLe [s849, s850] def s852 := Pattern.node Op.qLt [s849, s850] def s853 := Pattern.node Op.bAnd [(Pattern.node Op.zLe [s37, s844]), (Pattern.node Op.qLe [(Pattern.hole 0x155), s849]), (Pattern.node Op.ite [s845, (Pattern.hole 0x157), (Pattern.hole 0x158)])] def s854 := Pattern.node Op.qEq [s736, (Pattern.node Op.ite [s735, s826, s817])] def s855 := Pattern.node Op.bOr [(Pattern.hole 0x148), (Pattern.hole 0x14d)] def s856 := Pattern.node Op.bEq [s735, (Pattern.hole 0x14e)] def s857 := Pattern.node Op.bAnd [(Pattern.node Op.bNot [(Pattern.hole 0x154)]), (Pattern.node Op.bNot [(Pattern.hole 0x159)])] def s858 := Pattern.node Op.qLe [(Pattern.node Op.qDiv [s14, (Pattern.node (Op.qConst (Int.cast 0x30d4)) [])]), s47] def patternTableLLLLL : PackedNatTable.Table Pattern := .leaf #[s9, s17, s19, s32, s33, s34, s46, s49, s50, s51, s52] def patternTableLLLLR : PackedNatTable.Table Pattern := .leaf #[s53, s55, s56, s58, s59, s63, s64, s69, s71, s72, s82, s83] def patternTableLLLL : PackedNatTable.Table Pattern := .branch 11 patternTableLLLLL patternTableLLLLR def patternTableLLLRL : PackedNatTable.Table Pattern := .leaf #[s84, s85, s87, s88, s90, s91, s97, s111, s112, s115, s116, s117] def patternTableLLLRR : PackedNatTable.Table Pattern := .leaf #[s118, s119, s127, s130, s134, s135, s136, s137, s140, s144, s145, s153] def patternTableLLLR : PackedNatTable.Table Pattern := .branch 12 patternTableLLLRL patternTableLLLRR def patternTableLLL : PackedNatTable.Table Pattern := .branch 23 patternTableLLLL patternTableLLLR def patternTableLLRLL : PackedNatTable.Table Pattern := .leaf #[s154, s155, s156, s158, s159, s161, s162, s168, s175, s176, s179, s180] def patternTableLLRLR : PackedNatTable.Table Pattern := .leaf #[s181, s182, s183, s191, s194, s197, s198, s199, s200, s203, s205, s206] def patternTableLLRL : PackedNatTable.Table Pattern := .branch 12 patternTableLLRLL patternTableLLRLR def patternTableLLRRL : PackedNatTable.Table Pattern := .leaf #[s211, s212, s213, s214, s216, s217, s219, s220, s226, s232, s233, s236] def patternTableLLRRR : PackedNatTable.Table Pattern := .leaf #[s237, s238, s239, s240, s248, s251, s254, s255, s256, s257, s261, s265] def patternTableLLRR : PackedNatTable.Table Pattern := .branch 12 patternTableLLRRL patternTableLLRRR def patternTableLLR : PackedNatTable.Table Pattern := .branch 24 patternTableLLRL patternTableLLRR def patternTableLL : PackedNatTable.Table Pattern := .branch 47 patternTableLLL patternTableLLR def patternTableLRLLL : PackedNatTable.Table Pattern := .leaf #[s266, s271, s272, s273, s274, s276, s277, s279, s280, s286, s298] def patternTableLRLLR : PackedNatTable.Table Pattern := .leaf #[s299, s302, s303, s304, s305, s306, s314, s317, s321, s322, s323, s324] def patternTableLRLL : PackedNatTable.Table Pattern := .branch 11 patternTableLRLLL patternTableLRLLR def patternTableLRLRL : PackedNatTable.Table Pattern := .leaf #[s327, s329, s330, s335, s336, s337, s338, s340, s341, s343, s344, s350] def patternTableLRLRR : PackedNatTable.Table Pattern := .leaf #[s357, s358, s361, s362, s363, s364, s365, s373, s376, s379, s380, s381] def patternTableLRLR : PackedNatTable.Table Pattern := .branch 12 patternTableLRLRL patternTableLRLRR def patternTableLRL : PackedNatTable.Table Pattern := .branch 23 patternTableLRLL patternTableLRLR def patternTableLRRLL : PackedNatTable.Table Pattern := .leaf #[s382, s385, s389, s390, s395, s396, s397, s398, s400, s401, s403, s404] def patternTableLRRLR : PackedNatTable.Table Pattern := .leaf #[s410, s417, s418, s421, s422, s423, s424, s425, s433, s436, s439, s440] def patternTableLRRL : PackedNatTable.Table Pattern := .branch 12 patternTableLRRLL patternTableLRRLR def patternTableLRRRL : PackedNatTable.Table Pattern := .leaf #[s441, s442, s448, s452, s453, s458, s459, s460, s461, s463, s464, s466] def patternTableLRRRR : PackedNatTable.Table Pattern := .leaf #[s467, s473, s485, s486, s489, s490, s491, s492, s493, s501, s504, s508] def patternTableLRRR : PackedNatTable.Table Pattern := .branch 12 patternTableLRRRL patternTableLRRRR def patternTableLRR : PackedNatTable.Table Pattern := .branch 24 patternTableLRRL patternTableLRRR def patternTableLR : PackedNatTable.Table Pattern := .branch 47 patternTableLRL patternTableLRR def patternTableL : PackedNatTable.Table Pattern := .branch 95 patternTableLL patternTableLR def patternTableRLLLL : PackedNatTable.Table Pattern := .leaf #[s509, s510, s511, s514, s516, s517, s522, s523, s524, s525, s527] def patternTableRLLLR : PackedNatTable.Table Pattern := .leaf #[s528, s530, s531, s537, s544, s545, s548, s549, s550, s551, s552, s560] def patternTableRLLL : PackedNatTable.Table Pattern := .branch 11 patternTableRLLLL patternTableRLLLR def patternTableRLLRL : PackedNatTable.Table Pattern := .leaf #[s563, s566, s567, s568, s569, s574, s579, s580, s585, s586, s587, s588] def patternTableRLLRR : PackedNatTable.Table Pattern := .leaf #[s590, s591, s593, s594, s603, s615, s616, s619, s620, s621, s622, s623] def patternTableRLLR : PackedNatTable.Table Pattern := .branch 12 patternTableRLLRL patternTableRLLRR def patternTableRLL : PackedNatTable.Table Pattern := .branch 23 patternTableRLLL patternTableRLLR def patternTableRLRLL : PackedNatTable.Table Pattern := .leaf #[s633, s636, s640, s641, s642, s643, s650, s655, s656, s657, s658, s660] def patternTableRLRLR : PackedNatTable.Table Pattern := .leaf #[s661, s663, s664, s670, s677, s678, s681, s682, s683, s684, s685, s693] def patternTableRLRL : PackedNatTable.Table Pattern := .branch 12 patternTableRLRLL patternTableRLRLR def patternTableRLRRL : PackedNatTable.Table Pattern := .leaf #[s696, s699, s700, s701, s702, s711, s716, s717, s718, s719, s721, s722] def patternTableRLRRR : PackedNatTable.Table Pattern := .leaf #[s724, s725, s734, s746, s747, s749, s750, s751, s752, s753, s763, s766] def patternTableRLRR : PackedNatTable.Table Pattern := .branch 12 patternTableRLRRL patternTableRLRRR def patternTableRLR : PackedNatTable.Table Pattern := .branch 24 patternTableRLRL patternTableRLRR def patternTableRL : PackedNatTable.Table Pattern := .branch 47 patternTableRLL patternTableRLR def patternTableRRLLL : PackedNatTable.Table Pattern := .leaf #[s770, s771, s772, s773, s774, s775, s776, s777, s778, s779, s780] def patternTableRRLLR : PackedNatTable.Table Pattern := .leaf #[s781, s782, s783, s784, s785, s786, s787, s788, s789, s790, s791, s792] def patternTableRRLL : PackedNatTable.Table Pattern := .branch 11 patternTableRRLLL patternTableRRLLR def patternTableRRLRL : PackedNatTable.Table Pattern := .leaf #[s793, s794, s795, s796, s797, s798, s799, s800, s801, s802, s803, s804] def patternTableRRLRR : PackedNatTable.Table Pattern := .leaf #[s805, s806, s807, s808, s813, s815, s816, s819, s820, s823, s825, s828] def patternTableRRLR : PackedNatTable.Table Pattern := .branch 12 patternTableRRLRL patternTableRRLRR def patternTableRRL : PackedNatTable.Table Pattern := .branch 23 patternTableRRLL patternTableRRLR def patternTableRRRLL : PackedNatTable.Table Pattern := .leaf #[s829, s830, s831, s832, s837, s839, s840, s842, s843, s846, s848, s851] def patternTableRRRLR : PackedNatTable.Table Pattern := .leaf #[s852, s853, s854, s855, s856, s776, s777, s775, s857, s782, s798, s799] def patternTableRRRL : PackedNatTable.Table Pattern := .branch 12 patternTableRRRLL patternTableRRRLR def patternTableRRRRL : PackedNatTable.Table Pattern := .leaf #[s802, s801, s797, s800, s783, s784, s785, s796, s773, s774, s791, s792] def patternTableRRRRR : PackedNatTable.Table Pattern := .leaf #[s789, s786, s787, s788, s804, s805, s807, s806, s808, s790, s858, s803] def patternTableRRRR : PackedNatTable.Table Pattern := .branch 12 patternTableRRRRL patternTableRRRRR def patternTableRRR : PackedNatTable.Table Pattern := .branch 24 patternTableRRRL patternTableRRRR def patternTableRR : PackedNatTable.Table Pattern := .branch 47 patternTableRRL patternTableRRR def patternTableR : PackedNatTable.Table Pattern := .branch 95 patternTableRL patternTableRR def patternTable : PackedNatTable.Table Pattern := .branch 0xbe patternTableL patternTableR def fallback : Pattern := .node (.qConst 0) [] def patterns (j : Nat) : Pattern := patternTable.get fallback j end ClosureSharedAnchorPatternData end PolicySubmissionPart75 /- Component ClosureInputReflection; SHA256 a5517fb0181f57c4cd2d8371bffac0d6c1f389424d7cbe0501df7664e2ae866a. -/ section PolicySubmissionPart76 /- Decision-instance independent elementary input reflection. -/ namespace ClosureInputReflection open ClosureSemantics def boolValue_decide_irrel (p : Prop) (d e : Decidable p) : boolValue (@decide p d) = boolValue (@decide p e) := congrArg (fun dec : Decidable p => boolValue (@decide p dec)) (Subsingleton.elim _ _) end ClosureInputReflection end PolicySubmissionPart76 /- Component ClosureAnchorSemantics; SHA256 552d19ff89828981d9491ed37b2fd0da82b202f012875ff5af8f90cd9cfb336e. -/ section PolicySubmissionPart77 /- A mathematical, typed interpretation with sparse formula anchors. -/ namespace ClosureAnchorSemantics open ClosureSemantics ClosureInputModel inductive SValue where | prop : Prop → SValue | int : Int → SValue | rat : Rat → SValue def SValue.p : SValue → Prop | .prop p => p | _ => False def SValue.z : SValue → Int | .int z => z | _ => 0 def SValue.q : SValue → Rat | .rat q => q | _ => 0 abbrev SValuation := Nat → SValue def conjunction : List Prop → Prop | [] => True | [p] => p | p :: q :: ps => p ∧ conjunction (q :: ps) def disjunction : List Prop → Prop | [] => False | [p] => p | p :: q :: ps => p ∨ disjunction (q :: ps) noncomputable def sIte (p : Prop) (a b : SValue) : SValue := by letI : (a : Prop) → Decidable a := Classical.propDecidable exact match a, b with | .prop a, .prop b => .prop (if p then a else b) | .int a, .int b => .int (if p then a else b) | .rat a, .rat b => .rat (if p then a else b) | a, b => if p then a else b noncomputable def evalSOp (input : SValuation) : Op → List SValue → SValue | .input k, _ => input k | .qConst c, _ => .rat c | .zConst c, _ => .int c | .bConst true, _ => .prop True | .bConst false, _ => .prop False | .alias, [a] => a | .bNot, [a] => .prop (¬a.p) | .bOr, xs => .prop (disjunction (xs.map SValue.p)) | .bAnd, xs => .prop (conjunction (xs.map SValue.p)) | .bEq, [a,b] => .prop (a.p ↔ b.p) | .ite, [c,a,b] => sIte c.p a b | .qEq, [a,b] => .prop (a.q = b.q) | .zEq, [a,b] => .prop (a.z = b.z) | .qLe, [a,b] => .prop (a.q ≤ b.q) | .zLe, [a,b] => .prop (a.z ≤ b.z) | .qLt, [a,b] => .prop (a.q < b.q) | .zLt, [a,b] => .prop (a.z < b.z) | .qAdd, a :: rest => .rat ((rest.map SValue.q).foldl (· + ·) a.q) | .zAdd, a :: rest => .int ((rest.map SValue.z).foldl (· + ·) a.z) | .qMul, a :: rest => .rat ((rest.map SValue.q).foldl (· * ·) a.q) | .zMul, a :: rest => .int ((rest.map SValue.z).foldl (· * ·) a.z) | .qAdd, [] => .rat 0 | .zAdd, [] => .int 0 | .qMul, [] => .rat 1 | .zMul, [] => .int 1 | .qNeg, [a] => .rat (-a.q) | .zNeg, [a] => .int (-a.z) | .qSub, a :: rest => .rat ((rest.map SValue.q).foldl (· - ·) a.q) | .zSub, a :: rest => .int ((rest.map SValue.z).foldl (· - ·) a.z) | .qDiv, [a,b] => .rat (a.q / b.q) | _, _ => .rat 0 noncomputable def evalSNode (input values : SValuation) (n : Node) : SValue := evalSOp input n.op (n.children.map values) def evalSNode_congr (input values other : SValuation) (n : Node) (h : ∀ j ∈ n.children, values j = other j) : evalSNode input values n = evalSNode input other n := by unfold evalSNode congr 1 exact List.map_congr_left h noncomputable def sInput (X Y : Rat) (p : Nat → Prop) (r : Nat → Rat) : SValuation := fun slot => if slot = 0 then .rat X else if slot = 1 then .rat Y else if slot % 2 = 0 then .prop (p ((slot - 2) / 2)) else .rat (r ((slot - 3) / 2)) noncomputable def evalAnchored (raw : Nat → Node) (input : SValuation) (anchor : Nat → Option SValue) : Nat → SValuation | 0, _ => .rat 0 | fuel + 1, i => match anchor i with | some a => a | none => evalSNode input (evalAnchored raw input anchor fuel) (boundedProgram raw i) noncomputable def anchoredValues (raw : Nat → Node) (input : SValuation) (anchor : Nat → Option SValue) : SValuation := fun i => evalAnchored raw input anchor (i + 1) i noncomputable def anchorBody (raw : Nat → Node) (input : SValuation) (anchor : Nat → Option SValue) (i : Nat) : SValue := evalSNode input (evalAnchored raw input anchor i) (boundedProgram raw i) def evalAnchored_stable (raw : Nat → Node) (input : SValuation) (anchor : Nat → Option SValue) (i fuel : Nat) (hi : i < fuel) : evalAnchored raw input anchor fuel i = anchoredValues raw input anchor i := by induction i using Nat.strong_induction_on generalizing fuel with | h i ih => cases fuel with | zero => omega | succ fuel => unfold anchoredValues cases ha : anchor i with | some a => simp only [evalAnchored, ha] | none => simp only [evalAnchored, ha] apply evalSNode_congr intro j hj have hji := boundedProgram_children raw i j hj rw [ih j hji fuel (by omega), ih j hji i hji] def anchorBody_eq (raw : Nat → Node) (input : SValuation) (anchor : Nat → Option SValue) (i : Nat) : anchorBody raw input anchor i = evalSNode input (anchoredValues raw input anchor) (boundedProgram raw i) := by apply evalSNode_congr intro j hj exact evalAnchored_stable raw input anchor j i (boundedProgram_children raw i j hj) def anchoredValues_equation (raw : Nat → Node) (input : SValuation) (anchor : Nat → Option SValue) (i : Nat) (h : ∀ a, anchor i = some a → a = anchorBody raw input anchor i) : anchoredValues raw input anchor i = evalSNode input (anchoredValues raw input anchor) (boundedProgram raw i) := by rw [← anchorBody_eq] unfold anchoredValues cases ha : anchor i with | none => simp only [evalAnchored, ha, anchorBody] | some a => simpa only [evalAnchored, ha] using h a ha end ClosureAnchorSemantics end PolicySubmissionPart77 /- Component ClosureAnchorEncoding; SHA256 c657aefdacd54976d9493b5fa69fe70a71e26dc611944ff67fa2f1d568f728a8. -/ section PolicySubmissionPart78 /- Boolean encoding of the mathematical anchored interpreter. -/ namespace ClosureAnchorSemantics open ClosureSemantics ClosureInputModel ClosureInputReflection noncomputable def encode : SValue → Value | .prop p => boolValue (@decide p (Classical.propDecidable p)) | .int z => intValue z | .rat q => ratValue q def encode_prop (p : Prop) : encode (.prop p) = boolValue (@decide p (Classical.propDecidable p)) := rfl def encode_int (z : Int) : encode (.int z) = intValue z := rfl def encode_rat (q : Rat) : encode (.rat q) = ratValue q := rfl def encode_b (a : SValue) : (encode a).b = @decide a.p (Classical.propDecidable _) := by cases a with | prop p => rfl | int z => exact (decide_false (Classical.propDecidable False)).symm | rat q => exact (decide_false (Classical.propDecidable False)).symm def encode_z (a : SValue) : (encode a).z = a.z := by cases a <;> rfl def encode_q (a : SValue) : (encode a).q = a.q := by cases a <;> rfl def decide_conjunction (ps : List Prop) : @decide (conjunction ps) (Classical.propDecidable _) = (ps.map (fun p => @decide p (Classical.propDecidable _))).all id := by induction ps with | nil => exact decide_true _ | cons p ps ih => cases ps with | nil => exact (Bool.and_true _).symm | cons q qs => exact (@Bool.decide_and p (conjunction (q :: qs)) (Classical.propDecidable _) (Classical.propDecidable _) (Classical.propDecidable _)).trans (congrArg (fun b => @decide p (Classical.propDecidable _) && b) ih) def decide_disjunction (ps : List Prop) : @decide (disjunction ps) (Classical.propDecidable _) = (ps.map (fun p => @decide p (Classical.propDecidable _))).any id := by induction ps with | nil => exact decide_false _ | cons p ps ih => cases ps with | nil => exact (Bool.or_false _).symm | cons q qs => exact (@Bool.decide_or p (disjunction (q :: qs)) (Classical.propDecidable _) (Classical.propDecidable _) (Classical.propDecidable _)).trans (congrArg (fun b => @decide p (Classical.propDecidable _) || b) ih) def encode_conjunction (xs : List SValue) : encode (.prop (conjunction (xs.map SValue.p))) = boolValue (((xs.map encode).map Value.b).all id) := by simp only [encode_prop, decide_conjunction, List.map_map, Function.comp_def, encode_b] def encode_disjunction (xs : List SValue) : encode (.prop (disjunction (xs.map SValue.p))) = boolValue (((xs.map encode).map Value.b).any id) := by simp only [encode_prop, decide_disjunction, List.map_map, Function.comp_def, encode_b] def encode_sIte (p : Prop) (a b : SValue) : encode (sIte p a b) = if @decide p (Classical.propDecidable _) then encode a else encode b := by letI : (a : Prop) → Decidable a := Classical.propDecidable by_cases h : p <;> cases a <;> cases b <;> simp [sIte, encode, h] def encode_evalSOp (input : SValuation) (op : Op) (xs : List SValue) : encode (evalSOp input op xs) = evalOp (fun i => encode (input i)) op (xs.map encode) := by letI : (a : Prop) → Decidable a := Classical.propDecidable cases op case bConst b => cases b <;> simp only [evalSOp, evalOp, encode_prop, decide_true, decide_false] case bOr => exact encode_disjunction xs case bAnd => exact encode_conjunction xs all_goals rcases xs with _ | ⟨a, _ | ⟨b, _ | ⟨c, _ | ⟨d, xs⟩⟩⟩⟩ <;> simp only [evalSOp, evalOp, List.map_cons, List.map_nil, encode_conjunction, encode_disjunction, encode_sIte, List.map_map, Function.comp_def, encode_q, encode_z, encode_b, encode_prop, encode_int, encode_rat, decide_true, decide_false, Bool.decide_iff_dist, decide_not] all_goals first | rfl | exact boolValue_decide_irrel _ _ _ | split_ifs <;> rfl def encode_evalSNode (input values : SValuation) (n : Node) : encode (evalSNode input values n) = evalNode (fun i => encode (input i)) (fun i => encode (values i)) n := by simpa only [evalSNode, evalNode, List.map_map, Function.comp_def] using encode_evalSOp input n.op (n.children.map values) def encode_sInput (X Y : Rat) (p : Nat → Prop) (r : Nat → Rat) : (fun i => encode (sInput X Y p r i)) = inputValuation X Y p r := by funext i unfold sInput inputValuation split_ifs <;> rfl def anchored_model_agrees (raw : Nat → Node) (X Y : Rat) (p : Nat → Prop) (r : Nat → Rat) (anchor : Nat → Option SValue) (N : Nat) (h : ∀ i < N, ∀ a, anchor i = some a → a = anchorBody raw (sInput X Y p r) anchor i) : ∀ i < N, programModel raw (inputValuation X Y p r) i = encode (anchoredValues raw (sInput X Y p r) anchor i) := by apply programModel_agrees_below intro i hi rw [anchoredValues_equation raw (sInput X Y p r) anchor i (h i hi), encode_evalSNode, encode_sInput] end ClosureAnchorSemantics end PolicySubmissionPart78 /- Component ClosureAnchorAssertions; SHA256 a0b8f91e5defe8e9a444158460affe53955faa6e01ef8d278f9c3858055ce65c. -/ section PolicySubmissionPart79 /- From checked mathematical anchors to actual asserted SAT unit clauses. -/ namespace ClosureAnchorSemantics open ClosureSemantics ClosureInputModel def anchoredValues_of_some (raw : Nat → Node) (input : SValuation) (anchor : Nat → Option SValue) (i : Nat) (a : SValue) (ha : anchor i = some a) : anchoredValues raw input anchor i = a := by simp only [anchoredValues, evalAnchored, ha] def anchor_model_true (raw : Nat → Node) (X Y : Rat) (p : Nat → Prop) (r : Nat → Rat) (anchor : Nat → Option SValue) (N i : Nat) (a : Prop) (hcheck : ∀ j < N, ∀ v, anchor j = some v → v = anchorBody raw (sInput X Y p r) anchor j) (hi : i < N) (ha : anchor i = some (.prop a)) (htruth : a) : (programModel raw (inputValuation X Y p r) i).b = true := by rw [anchored_model_agrees raw X Y p r anchor N hcheck i hi, anchoredValues_of_some raw (sInput X Y p r) anchor i (.prop a) ha] exact @decide_eq_true a (Classical.propDecidable a) htruth def alias_model (raw : Nat → Node) (input : Valuation) (i j : Nat) (hnode : raw i = ⟨.alias, [j]⟩) (hback : j < i) : programModel raw input i = programModel raw input j := by rw [programModel_eq_raw raw input i (by simpa [hnode] using hback), hnode] rfl end ClosureAnchorSemantics end PolicySubmissionPart79 /- Component ClosureAnchorFuelPatternCheck; SHA256 46448ae0600e0a3d99dd721ad7dce7739b5bd5dc41612d760ec7b21231a7e9b1. -/ section PolicySubmissionPart80 /- Experimental anchor matching with an evaluator structurally recursive on fuel. -/ namespace ClosureAnchorFuelPatternCheck open ClosureSemantics ClosureAnchorSemantics ClosurePattern noncomputable def eval (input env : SValuation) (fuel : Nat) (pattern : Pattern) : SValue := match fuel, pattern with | 0, _ => .rat 0 | _ + 1, .hole k => env k | fuel + 1, .node op children => evalSOp input op (children.map (eval input env fuel)) termination_by structural fuel def check (program : Nat → Node) (indices : Nat → Nat) : Nat → Pattern → Nat → Bool | 0, _, _ => false | _ + 1, .hole k, i => indices i == k + 1 | fuel + 1, .node op children, i => (indices i == 0) && sameOp op (program i).op && allPairs (check program indices fuel) children (program i).children def check_sound (raw : Nat → Node) (input env : SValuation) (anchor : Nat → Option SValue) (indices : Nat → Nat) (hanchor : ∀ i, anchor i = if indices i = 0 then none else some (env (indices i - 1))) (fuel : Nat) (pattern : Pattern) (i : Nat) (hc : check (boundedProgram raw) indices fuel pattern i = true) : eval input env fuel pattern = anchoredValues raw input anchor i := by induction fuel generalizing pattern i with | zero => simp [check] at hc | succ fuel ih => cases pattern with | hole k => have hk : indices i = k + 1 := by simpa only [check, beq_iff_eq] using hc have ha : anchor i = some (env k) := by rw [hanchor, hk] simp simpa only [eval] using (anchoredValues_of_some raw input anchor i (env k) ha).symm | node op children => have hh : (indices i = 0 ∧ sameOp op (boundedProgram raw i).op = true) ∧ allPairs (check (boundedProgram raw) indices fuel) children (boundedProgram raw i).children = true := by simpa only [check, Bool.and_eq_true, beq_iff_eq] using hc have hn : anchor i = none := by rw [hanchor, hh.1.1] <;> rfl have hop := sameOp_sound op (boundedProgram raw i).op hh.1.2 have hchildren := allPairs_map_eq (check (boundedProgram raw) indices fuel) (eval input env fuel) (anchoredValues raw input anchor) (fun p j hp => ih p j hp) children (boundedProgram raw i).children hh.2 have hv : eval input env (fuel + 1) (.node op children) = evalSNode input (anchoredValues raw input anchor) (boundedProgram raw i) := by simp only [eval, evalSNode, hchildren, hop] have he := anchoredValues_equation raw input anchor i (by intro a ha rw [hn] at ha cases ha) exact hv.trans he.symm def checkBody (program : Nat → Node) (indices : Nat → Nat) (fuel : Nat) (pattern : Pattern) (i : Nat) : Bool := match pattern with | .hole _ => false | .node op children => sameOp op (program i).op && allPairs (check program indices fuel) children (program i).children def checkBody_sound (raw : Nat → Node) (input env : SValuation) (anchor : Nat → Option SValue) (indices : Nat → Nat) (hanchor : ∀ i, anchor i = if indices i = 0 then none else some (env (indices i - 1))) (fuel : Nat) (pattern : Pattern) (i : Nat) (hc : checkBody (boundedProgram raw) indices fuel pattern i = true) : eval input env (fuel + 1) pattern = anchorBody raw input anchor i := by cases pattern with | hole k => simp [checkBody] at hc | node op children => have hh : sameOp op (boundedProgram raw i).op = true ∧ allPairs (check (boundedProgram raw) indices fuel) children (boundedProgram raw i).children = true := by simpa only [checkBody, Bool.and_eq_true] using hc have hop := sameOp_sound op (boundedProgram raw i).op hh.1 have hchildren := allPairs_map_eq (check (boundedProgram raw) indices fuel) (eval input env fuel) (anchoredValues raw input anchor) (fun p j hp => check_sound raw input env anchor indices hanchor fuel p j hp) children (boundedProgram raw i).children hh.2 rw [anchorBody_eq] simp only [eval, evalSNode, hchildren, hop] def checkAnchor (program : Nat → Node) (indices : Nat → Nat) (patterns : Nat → Pattern) (N fuel i : Nat) : Bool := if indices i = 0 then true else decide (indices i - 1 < N) && checkBody program indices fuel (patterns (indices i - 1)) i def anchor_good (raw : Nat → Node) (input env : SValuation) (anchor : Nat → Option SValue) (indices : Nat → Nat) (hanchor : ∀ i, anchor i = if indices i = 0 then none else some (env (indices i - 1))) (patterns : Nat → Pattern) (N fuel i : Nat) (hsemantic : ∀ j < N, env j = eval input env (fuel + 1) (patterns j)) (hc : checkAnchor (boundedProgram raw) indices patterns N fuel i = true) : ∀ a, anchor i = some a → a = anchorBody raw input anchor i := by intro a ha by_cases hz : indices i = 0 · have hn : anchor i = none := by rw [hanchor, hz] <;> rfl rw [hn] at ha cases ha · have hh : indices i - 1 < N ∧ checkBody (boundedProgram raw) indices fuel (patterns (indices i - 1)) i = true := by simpa only [checkAnchor, if_neg hz, Bool.and_eq_true, decide_eq_true_eq] using hc have he : env (indices i - 1) = a := by apply Option.some.inj simpa only [hanchor i, if_neg hz] using ha exact he.symm.trans ((hsemantic (indices i - 1) hh.1).trans (checkBody_sound raw input env anchor indices hanchor fuel _ i hh.2)) end ClosureAnchorFuelPatternCheck end PolicySubmissionPart80 /- Component ClosureAnchorData; SHA256 74f4f17411abe6e46ba3076712fa959369dbe7ddd987f9997fdf060d5a52604d. -/ section PolicySubmissionPart81 /- Sparse mathematical anchors for the actual asserted clauses. -/ namespace ClosureAnchorData open ClosureAnchorSemantics PackedNatTable def indexAt (indices : Table Nat) (i : Nat) : Nat := (indices.get 0 (i / 4) >>> (12 * (i % 4))) &&& 0xfff noncomputable def valuesLLLL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q90 X), .prop (SelectiveSharedInputs.q91 Y), .prop (SelectiveSharedInputs.q92 Y), .prop (SelectiveSharedInputs.q93 X Y), .rat (SelectiveSharedInputs.q94 X), .rat (SelectiveSharedInputs.q95 Y), .rat (SelectiveSharedInputs.q96 X Y), .prop (SelectiveSharedInputs.q97 X Y r), .prop (SelectiveSharedInputs.q98 X Y), .prop (SelectiveSharedInputs.q99 X Y), .rat (SelectiveSharedInputs.q100 X Y), .prop (SelectiveSharedInputs.q101 X Y), .prop (SelectiveSharedInputs.q102 X Y), .rat (SelectiveSharedInputs.q103 X Y), .prop (SelectiveSharedInputs.q104 X Y), .rat (SelectiveSharedInputs.q105 X Y), .prop (SelectiveSharedInputs.q106 X Y r), .prop (SelectiveSharedInputs.q107 X Y r), .prop (SelectiveSharedInputs.q158 X), .prop (SelectiveSharedInputs.q159 Y), .prop (SelectiveSharedInputs.q160 Y), .prop (SelectiveSharedInputs.q161 X Y), .prop (SelectiveSharedInputs.q162 X Y)] noncomputable def valuesLLLR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .rat (SelectiveSharedInputs.q163 X Y), .prop (SelectiveSharedInputs.q164 X Y), .prop (SelectiveSharedInputs.q165 X Y), .rat (SelectiveSharedInputs.q166 X Y), .prop (SelectiveSharedInputs.q167 X Y), .rat (SelectiveSharedInputs.q168 X Y), .rat (SelectiveSharedInputs.q169 X Y), .prop (SelectiveSharedInputs.q170 X Y p r), .rat (SelectiveSharedInputs.q171 X Y p r), .prop (SelectiveSharedInputs.q172 X Y p r), .prop (SelectiveSharedInputs.q173 X Y p r), .prop (SelectiveSharedInputs.q174 X Y), .rat (SelectiveSharedInputs.q175 X), .rat (SelectiveSharedInputs.q176 Y), .rat (SelectiveSharedInputs.q177 X Y), .rat (SelectiveSharedInputs.q178 X Y p r), .prop (SelectiveSharedInputs.q179 X Y p r), .prop (SelectiveSharedInputs.q180 X Y p r), .prop (SelectiveSharedInputs.q181 X Y p r), .prop (SelectiveSharedInputs.q182 X Y p r), .prop (SelectiveSharedInputs.q183 X), .prop (SelectiveSharedInputs.q184 Y), .prop (SelectiveSharedInputs.q185 Y), .prop (SelectiveSharedInputs.q186 X Y)] noncomputable def valuesLLL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 23 (valuesLLLL X Y p r) (valuesLLLR X Y p r) noncomputable def valuesLLRL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q187 X Y), .rat (SelectiveSharedInputs.q188 X Y), .prop (SelectiveSharedInputs.q189 X Y), .prop (SelectiveSharedInputs.q190 X Y), .rat (SelectiveSharedInputs.q191 X Y), .prop (SelectiveSharedInputs.q192 X Y), .rat (SelectiveSharedInputs.q193 X Y), .rat (SelectiveSharedInputs.q194 X Y), .prop (SelectiveSharedInputs.q195 X Y p r), .rat (SelectiveSharedInputs.q196 X Y p r), .prop (SelectiveSharedInputs.q197 X Y p r), .prop (SelectiveSharedInputs.q198 X Y p r), .prop (SelectiveSharedInputs.q199 X Y), .rat (SelectiveSharedInputs.q200 X), .rat (SelectiveSharedInputs.q201 Y), .rat (SelectiveSharedInputs.q202 X Y), .rat (SelectiveSharedInputs.q203 X Y p r), .prop (SelectiveSharedInputs.q204 X Y p r), .prop (SelectiveSharedInputs.q205 X Y p r), .prop (SelectiveSharedInputs.q206 X Y p r), .prop (SelectiveSharedInputs.q207 X Y p r), .prop (SelectiveSharedInputs.q208 X), .prop (SelectiveSharedInputs.q209 Y), .prop (SelectiveSharedInputs.q210 Y)] noncomputable def valuesLLRR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q211 X Y), .prop (SelectiveSharedInputs.q212 X Y), .rat (SelectiveSharedInputs.q213 X Y), .prop (SelectiveSharedInputs.q214 X Y), .prop (SelectiveSharedInputs.q215 X Y), .rat (SelectiveSharedInputs.q216 X Y), .prop (SelectiveSharedInputs.q217 X Y), .rat (SelectiveSharedInputs.q218 X Y), .rat (SelectiveSharedInputs.q219 X Y), .prop (SelectiveSharedInputs.q220 X Y p r), .rat (SelectiveSharedInputs.q221 X Y p r), .prop (SelectiveSharedInputs.q222 X Y p r), .prop (SelectiveSharedInputs.q223 X Y p r), .prop (SelectiveSharedInputs.q224 X Y), .rat (SelectiveSharedInputs.q225 X), .rat (SelectiveSharedInputs.q226 Y), .rat (SelectiveSharedInputs.q227 X Y), .rat (SelectiveSharedInputs.q228 X Y p r), .prop (SelectiveSharedInputs.q229 X Y p r), .prop (SelectiveSharedInputs.q230 X Y p r), .prop (SelectiveSharedInputs.q231 X Y p r), .prop (SelectiveSharedInputs.q232 X Y p r), .prop (SelectiveSharedInputs.q258 X), .prop (SelectiveSharedInputs.q259 Y)] noncomputable def valuesLLR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 24 (valuesLLRL X Y p r) (valuesLLRR X Y p r) noncomputable def valuesLL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 47 (valuesLLL X Y p r) (valuesLLR X Y p r) noncomputable def valuesLRLL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q260 Y), .prop (SelectiveSharedInputs.q261 X Y), .prop (SelectiveSharedInputs.q262 X Y), .rat (SelectiveSharedInputs.q263 X Y), .prop (SelectiveSharedInputs.q264 X Y), .prop (SelectiveSharedInputs.q265 X Y), .rat (SelectiveSharedInputs.q266 X Y), .prop (SelectiveSharedInputs.q267 X Y), .rat (SelectiveSharedInputs.q268 X Y), .rat (SelectiveSharedInputs.q269 X Y), .prop (SelectiveSharedInputs.q270 X Y p r), .rat (SelectiveSharedInputs.q271 X Y p r), .prop (SelectiveSharedInputs.q272 X Y p r), .prop (SelectiveSharedInputs.q273 X Y p r), .prop (SelectiveSharedInputs.q274 X Y), .rat (SelectiveSharedInputs.q275 X), .rat (SelectiveSharedInputs.q276 Y), .rat (SelectiveSharedInputs.q277 X Y), .rat (SelectiveSharedInputs.q278 X Y p r), .prop (SelectiveSharedInputs.q279 X Y p r), .prop (SelectiveSharedInputs.q280 X Y p r), .prop (SelectiveSharedInputs.q281 X Y p r), .prop (SelectiveSharedInputs.q282 X Y p r)] noncomputable def valuesLRLR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q283 X), .prop (SelectiveSharedInputs.q284 Y), .prop (SelectiveSharedInputs.q285 Y), .prop (SelectiveSharedInputs.q286 X Y), .prop (SelectiveSharedInputs.q287 X Y), .rat (SelectiveSharedInputs.q288 X Y), .prop (SelectiveSharedInputs.q289 X Y), .prop (SelectiveSharedInputs.q290 X Y), .rat (SelectiveSharedInputs.q291 X Y), .prop (SelectiveSharedInputs.q292 X Y), .rat (SelectiveSharedInputs.q293 X Y), .rat (SelectiveSharedInputs.q294 X Y), .prop (SelectiveSharedInputs.q295 X Y p r), .rat (SelectiveSharedInputs.q296 X Y p r), .prop (SelectiveSharedInputs.q297 X Y p r), .prop (SelectiveSharedInputs.q298 X Y p r), .prop (SelectiveSharedInputs.q299 X Y), .rat (SelectiveSharedInputs.q300 X), .rat (SelectiveSharedInputs.q301 Y), .rat (SelectiveSharedInputs.q302 X Y), .rat (SelectiveSharedInputs.q303 X Y p r), .prop (SelectiveSharedInputs.q304 X Y p r), .prop (SelectiveSharedInputs.q305 X Y p r), .prop (SelectiveSharedInputs.q306 X Y p r)] noncomputable def valuesLRL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 23 (valuesLRLL X Y p r) (valuesLRLR X Y p r) noncomputable def valuesLRRL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q307 X Y p r), .prop (SelectiveSharedInputs.q308 X), .prop (SelectiveSharedInputs.q309 Y), .prop (SelectiveSharedInputs.q310 Y), .prop (SelectiveSharedInputs.q311 X Y), .prop (SelectiveSharedInputs.q312 X Y), .rat (SelectiveSharedInputs.q313 X Y), .prop (SelectiveSharedInputs.q314 X Y), .prop (SelectiveSharedInputs.q315 X Y), .rat (SelectiveSharedInputs.q316 X Y), .prop (SelectiveSharedInputs.q317 X Y), .rat (SelectiveSharedInputs.q318 X Y), .rat (SelectiveSharedInputs.q319 X Y), .prop (SelectiveSharedInputs.q320 X Y p r), .rat (SelectiveSharedInputs.q321 X Y p r), .prop (SelectiveSharedInputs.q322 X Y p r), .prop (SelectiveSharedInputs.q323 X Y p r), .prop (SelectiveSharedInputs.q324 X Y), .rat (SelectiveSharedInputs.q325 X), .rat (SelectiveSharedInputs.q326 Y), .rat (SelectiveSharedInputs.q327 X Y), .rat (SelectiveSharedInputs.q328 X Y p r), .prop (SelectiveSharedInputs.q329 X Y p r), .prop (SelectiveSharedInputs.q330 X Y p r)] noncomputable def valuesLRRR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q331 X Y p r), .prop (SelectiveSharedInputs.q332 X Y p r), .prop (SelectiveSharedInputs.q358 X), .prop (SelectiveSharedInputs.q359 Y), .prop (SelectiveSharedInputs.q360 Y), .prop (SelectiveSharedInputs.q361 X Y), .prop (SelectiveSharedInputs.q362 X Y), .rat (SelectiveSharedInputs.q363 X Y), .prop (SelectiveSharedInputs.q364 X Y), .prop (SelectiveSharedInputs.q365 X Y), .rat (SelectiveSharedInputs.q366 X Y), .prop (SelectiveSharedInputs.q367 X Y), .rat (SelectiveSharedInputs.q368 X Y), .rat (SelectiveSharedInputs.q369 X Y), .prop (SelectiveSharedInputs.q370 X Y p r), .rat (SelectiveSharedInputs.q371 X Y p r), .prop (SelectiveSharedInputs.q372 X Y p r), .prop (SelectiveSharedInputs.q373 X Y p r), .prop (SelectiveSharedInputs.q374 X Y), .rat (SelectiveSharedInputs.q375 X), .rat (SelectiveSharedInputs.q376 Y), .rat (SelectiveSharedInputs.q377 X Y), .rat (SelectiveSharedInputs.q378 X Y p r), .prop (SelectiveSharedInputs.q379 X Y p r)] noncomputable def valuesLRR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 24 (valuesLRRL X Y p r) (valuesLRRR X Y p r) noncomputable def valuesLR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 47 (valuesLRL X Y p r) (valuesLRR X Y p r) noncomputable def valuesL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 95 (valuesLL X Y p r) (valuesLR X Y p r) noncomputable def valuesRLLL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q380 X Y p r), .prop (SelectiveSharedInputs.q381 X Y p r), .prop (SelectiveSharedInputs.q382 X Y p r), .prop (SelectiveSharedInputs.q383 X), .prop (SelectiveSharedInputs.q384 Y), .prop (SelectiveSharedInputs.q385 Y), .prop (SelectiveSharedInputs.q386 X Y), .prop (SelectiveSharedInputs.q387 X Y), .rat (SelectiveSharedInputs.q388 X Y), .prop (SelectiveSharedInputs.q389 X Y), .prop (SelectiveSharedInputs.q390 X Y), .rat (SelectiveSharedInputs.q391 X Y), .prop (SelectiveSharedInputs.q392 X Y), .rat (SelectiveSharedInputs.q393 X Y), .rat (SelectiveSharedInputs.q394 X Y), .prop (SelectiveSharedInputs.q395 X Y p r), .rat (SelectiveSharedInputs.q396 X Y p r), .prop (SelectiveSharedInputs.q397 X Y p r), .prop (SelectiveSharedInputs.q398 X Y p r), .prop (SelectiveSharedInputs.q399 X Y), .rat (SelectiveSharedInputs.q400 X), .rat (SelectiveSharedInputs.q401 Y), .rat (SelectiveSharedInputs.q402 X Y)] noncomputable def valuesRLLR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .rat (SelectiveSharedInputs.q403 X Y p r), .prop (SelectiveSharedInputs.q404 X Y p r), .prop (SelectiveSharedInputs.q405 X Y p r), .prop (SelectiveSharedInputs.q406 X Y p r), .prop (SelectiveSharedInputs.q407 X Y p r), .prop (SelectiveSharedInputs.q408 X), .prop (SelectiveSharedInputs.q409 Y), .prop (SelectiveSharedInputs.q410 Y), .prop (SelectiveSharedInputs.q411 X Y), .prop (SelectiveSharedInputs.q412 X Y), .rat (SelectiveSharedInputs.q413 X Y), .prop (SelectiveSharedInputs.q414 X Y), .prop (SelectiveSharedInputs.q415 X Y), .rat (SelectiveSharedInputs.q416 X Y), .prop (SelectiveSharedInputs.q417 X Y), .rat (SelectiveSharedInputs.q418 X Y), .rat (SelectiveSharedInputs.q419 X Y), .prop (SelectiveSharedInputs.q420 X Y p r), .rat (SelectiveSharedInputs.q421 X Y p r), .prop (SelectiveSharedInputs.q422 X Y p r), .prop (SelectiveSharedInputs.q423 X Y p r), .prop (SelectiveSharedInputs.q424 X Y), .rat (SelectiveSharedInputs.q425 X), .rat (SelectiveSharedInputs.q426 Y)] noncomputable def valuesRLL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 23 (valuesRLLL X Y p r) (valuesRLLR X Y p r) noncomputable def valuesRLRL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .rat (SelectiveSharedInputs.q427 X Y), .rat (SelectiveSharedInputs.q428 X Y p r), .prop (SelectiveSharedInputs.q429 X Y p r), .prop (SelectiveSharedInputs.q430 X Y p r), .prop (SelectiveSharedInputs.q431 X Y p r), .prop (SelectiveSharedInputs.q432 X Y p r), .prop (SelectiveSharedInputs.q433 X Y), .prop (SelectiveSharedInputs.q434 X Y), .prop (SelectiveSharedInputs.q435 X Y), .rat (SelectiveSharedInputs.q436 X Y), .prop (SelectiveSharedInputs.q437 X Y), .prop (SelectiveSharedInputs.q438 X Y), .rat (SelectiveSharedInputs.q439 X Y), .prop (SelectiveSharedInputs.q440 X Y), .rat (SelectiveSharedInputs.q441 X Y), .rat (SelectiveSharedInputs.q442 X Y), .prop (SelectiveSharedInputs.q443 X Y p r), .rat (SelectiveSharedInputs.q444 X Y p r), .prop (SelectiveSharedInputs.q445 X Y p r), .prop (SelectiveSharedInputs.q446 X Y p r), .prop (SelectiveSharedInputs.q447 X Y), .rat (SelectiveSharedInputs.q448 X), .rat (SelectiveSharedInputs.q449 Y), .rat (SelectiveSharedInputs.q450 X Y)] noncomputable def valuesRLRR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .rat (SelectiveSharedInputs.q451 X Y p r), .prop (SelectiveSharedInputs.q452 X Y p r), .prop (SelectiveSharedInputs.q453 X Y p r), .prop (SelectiveSharedInputs.q454 X Y p r), .prop (SelectiveSharedInputs.q455 X Y p r), .prop (SelectiveSharedInputs.q456 X Y), .prop (SelectiveSharedInputs.q457 X Y), .prop (SelectiveSharedInputs.q458 X Y), .rat (SelectiveSharedInputs.q459 X Y), .prop (SelectiveSharedInputs.q460 X Y), .prop (SelectiveSharedInputs.q461 X Y), .rat (SelectiveSharedInputs.q462 X Y), .prop (SelectiveSharedInputs.q463 X Y), .rat (SelectiveSharedInputs.q464 X Y), .rat (SelectiveSharedInputs.q465 X Y), .prop (SelectiveSharedInputs.q466 X Y p r), .rat (SelectiveSharedInputs.q467 X Y p r), .prop (SelectiveSharedInputs.q468 X Y p r), .prop (SelectiveSharedInputs.q469 X Y p r), .prop (SelectiveSharedInputs.q470 X Y), .rat (SelectiveSharedInputs.q471 X), .rat (SelectiveSharedInputs.q472 Y), .rat (SelectiveSharedInputs.q473 X Y), .rat (SelectiveSharedInputs.q474 X Y p r)] noncomputable def valuesRLR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 24 (valuesRLRL X Y p r) (valuesRLRR X Y p r) noncomputable def valuesRL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 47 (valuesRLL X Y p r) (valuesRLR X Y p r) noncomputable def valuesRRLL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q475 X Y p r), .prop (SelectiveSharedInputs.q476 X Y p r), .prop (SelectiveSharedInputs.q477 X Y p r), .prop (ClosureOriginalInputs0.input_47 X Y p r), .prop (ClosureOriginalInputs0.input_48 X Y p r), .prop (ClosureOriginalInputs0.input_0 X Y p r), .prop (ClosureOriginalInputs0.input_3 X Y p r), .prop (ClosureOriginalInputs0.input_1 X Y p r), .prop (ClosureOriginalInputs0.input_58 X Y p r), .prop (ClosureOriginalInputs0.input_53 X Y p r), .prop (ClosureOriginalInputs0.input_54 X Y p r), .prop (ClosureOriginalInputs0.input_52 X Y p r), .prop (ClosureOriginalInputs0.input_2 X Y p r), .prop (ClosureOriginalInputs0.input_55 X Y p r), .prop (ClosureOriginalInputs0.input_56 X Y p r), .prop (ClosureOriginalInputs0.input_57 X Y p r), .prop (ClosureOriginalInputs0.input_36 X Y p r), .prop (ClosureOriginalInputs0.input_34 X Y p r), .prop (ClosureOriginalInputs0.input_35 X Y p r), .prop (ClosureOriginalInputs0.input_39 X Y p r), .prop (ClosureOriginalInputs0.input_27 X Y p r), .prop (ClosureOriginalInputs0.input_37 X Y p r), .prop (ClosureOriginalInputs0.input_38 X Y p r)] noncomputable def valuesRRLR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (ClosureOriginalInputs0.input_23 X Y p r), .prop (ClosureOriginalInputs0.input_22 X Y p r), .prop (ClosureOriginalInputs0.input_24 X Y p r), .prop (ClosureOriginalInputs0.input_46 X Y p r), .prop (ClosureOriginalInputs0.input_42 X Y p r), .prop (ClosureOriginalInputs0.input_49 X Y p r), .prop (ClosureOriginalInputs0.input_50 X Y p r), .prop (ClosureOriginalInputs0.input_51 X Y p r), .prop (ClosureOriginalInputs0.input_41 X Y p r), .prop (ClosureOriginalInputs0.input_40 X Y p r), .prop (ClosureOriginalInputs0.input_15 X Y p r), .prop (ClosureOriginalInputs0.input_26 X Y p r), .prop (ClosureOriginalInputs0.input_25 X Y p r), .prop (ClosureOriginalInputs0.input_29 X Y p r), .prop (ClosureOriginalInputs0.input_30 X Y p r), .prop (ClosureOriginalInputs0.input_28 X Y p r), .rat (SelectiveSharedInputs.q515 X Y), .prop (SelectiveSharedInputs.q516 X Y p r), .rat (SelectiveSharedInputs.q517 X Y p r), .prop (SelectiveSharedInputs.q518 X Y p r), .prop (SelectiveSharedInputs.q519 X Y p r), .rat (SelectiveSharedInputs.q520 X Y), .rat (SelectiveSharedInputs.q521 X Y p r), .prop (SelectiveSharedInputs.q522 X Y p r)] noncomputable def valuesRRL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 23 (valuesRRLL X Y p r) (valuesRRLR X Y p r) noncomputable def valuesRRRL (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (SelectiveSharedInputs.q523 X Y p r), .prop (SelectiveSharedInputs.q524 X Y p r), .prop (SelectiveSharedInputs.q525 X Y p r), .prop (SelectiveSharedInputs.q526 X Y), .rat (SelectiveSharedInputs.q527 X Y), .prop (SelectiveSharedInputs.q528 X Y p r), .rat (SelectiveSharedInputs.q529 X Y p r), .prop (SelectiveSharedInputs.q530 X Y p r), .prop (SelectiveSharedInputs.q531 X Y p r), .rat (SelectiveSharedInputs.q532 X Y), .rat (SelectiveSharedInputs.q533 X Y p r), .prop (SelectiveSharedInputs.q534 X Y p r), .prop (SelectiveSharedInputs.q535 X Y p r), .prop (SelectiveSharedInputs.q536 X Y p r), .prop (ClosureOriginalInputs1.input_54 X Y p r), .prop (ClosureOriginalInputs1.input_52 X Y p r), .prop (ClosureOriginalInputs1.input_53 X Y p r), .prop (ClosureOriginalInputs1.input_3 X Y p r), .prop (ClosureOriginalInputs1.input_1 X Y p r), .prop (ClosureOriginalInputs1.input_0 X Y p r), .prop (ClosureOriginalInputs1.input_58 X Y p r), .prop (ClosureOriginalInputs1.input_2 X Y p r), .prop (ClosureOriginalInputs1.input_49 X Y p r), .prop (ClosureOriginalInputs1.input_50 X Y p r)] noncomputable def valuesRRRR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .leaf #[ .prop (ClosureOriginalInputs1.input_40 X Y p r), .prop (ClosureOriginalInputs1.input_41 X Y p r), .prop (ClosureOriginalInputs1.input_42 X Y p r), .prop (ClosureOriginalInputs1.input_51 X Y p r), .prop (ClosureOriginalInputs1.input_55 X Y p r), .prop (ClosureOriginalInputs1.input_56 X Y p r), .prop (ClosureOriginalInputs1.input_57 X Y p r), .prop (ClosureOriginalInputs1.input_46 X Y p r), .prop (ClosureOriginalInputs1.input_47 X Y p r), .prop (ClosureOriginalInputs1.input_48 X Y p r), .prop (ClosureOriginalInputs1.input_37 X Y p r), .prop (ClosureOriginalInputs1.input_38 X Y p r), .prop (ClosureOriginalInputs1.input_39 X Y p r), .prop (ClosureOriginalInputs1.input_36 X Y p r), .prop (ClosureOriginalInputs1.input_34 X Y p r), .prop (ClosureOriginalInputs1.input_35 X Y p r), .prop (ClosureOriginalInputs1.input_26 X Y p r), .prop (ClosureOriginalInputs1.input_25 X Y p r), .prop (ClosureOriginalInputs1.input_30 X Y p r), .prop (ClosureOriginalInputs1.input_29 X Y p r), .prop (ClosureOriginalInputs1.input_28 X Y p r), .prop (ClosureOriginalInputs1.input_27 X Y p r), .prop (ClosureOriginalInputs1.input_14 X Y p r), .prop (ClosureOriginalInputs1.input_15 X Y p r)] noncomputable def valuesRRR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 24 (valuesRRRL X Y p r) (valuesRRRR X Y p r) noncomputable def valuesRR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 47 (valuesRRL X Y p r) (valuesRRR X Y p r) noncomputable def valuesR (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 95 (valuesRL X Y p r) (valuesRR X Y p r) noncomputable def values (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : Table SValue := .branch 0xbe (valuesL X Y p r) (valuesR X Y p r) def indices0LLLL : Table Nat := .leaf #[ 0x0, 0x125123, 0x12412a000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices0LLLR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices0LLL : Table Nat := .branch 31 (indices0LLLL) (indices0LLLR) def indices0LLRL : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices0LLRR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000000000, 0x0, 0x2000000000, 0x3000, 0x0, 0x0, 0x0, 0x4, 0x5000000, 0x6, 0x0, 0x7000000000] def indices0LLR : Table Nat := .branch 31 (indices0LLRL) (indices0LLRR) def indices0LL : Table Nat := .branch 63 (indices0LLL) (indices0LLR) def indices0LRLL : Table Nat := .leaf #[ 0x0, 0x9000008, 0xa000000000, 0xd00000c00b, 0x1000f00000e, 0x0, 0x12011000000, 0x13f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices0LRLR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13, 0x15000014, 0x0, 0x16000] def indices0LRL : Table Nat := .branch 31 (indices0LRLL) (indices0LRLR) def indices0LRRL : Table Nat := .leaf #[ 0x0, 0x19018017, 0x1c00001b01a, 0x1d, 0x1e, 0x1f000000000, 0x20, 0x22021000, 0x23000, 0x24000000000, 0x25000, 0x0, 0x0, 0x26, 0x27000000, 0x28000000000, 0x13602a000029, 0x13502b000000, 0x137000000, 0x0, 0x2c, 0x0, 0x2e00002d, 0x0, 0x2f000, 0x0, 0x32031030, 0x35000034033, 0x36, 0x37, 0x38000000000, 0x39] def indices0LRRR : Table Nat := .leaf #[ 0x3b03a000, 0x3c000, 0x3d000000000, 0x3e000, 0x0, 0x0, 0x3f, 0x40000000, 0x41000000000, 0x141043000042, 0x140044000000, 0x132000000, 0x0, 0x45, 0x47000046, 0x0, 0x48000, 0x0, 0x4b04a049, 0x4e00004d04c, 0x4f, 0x50, 0x51000000000, 0x52, 0x54053000, 0x55000, 0x56000000000, 0x57000, 0x0, 0x0, 0x58, 0x59000000] def indices0LRR : Table Nat := .branch 32 (indices0LRRL) (indices0LRRR) def indices0LR : Table Nat := .branch 63 (indices0LRL) (indices0LRR) def indices0L : Table Nat := .branch 0x7e (indices0LL) (indices0LR) def indices0RLLL : Table Nat := .leaf #[ 0x5a000000000, 0x14405c00005b, 0x14205d000000, 0x143000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices0RLLR : Table Nat := .leaf #[ 0x0, 0x5e000, 0x6000005f000, 0x0, 0x61000000, 0x0, 0x64063062000, 0x66065000, 0x68067, 0x69000, 0x0, 0x6b06a, 0x6d06c000000, 0x6e000000, 0x0, 0x7000006f, 0x0, 0x0, 0x71000, 0x72000000000, 0x0, 0x75000074073, 0x7600000012f, 0x12e000000130, 0x0, 0x77000, 0x79000078000, 0x0, 0x7a000000, 0x0, 0x7d07c07b000, 0x7f07e000] def indices0RLL : Table Nat := .branch 31 (indices0RLLL) (indices0RLLR) def indices0RLRL : Table Nat := .leaf #[ 0x81080, 0x82000, 0x0, 0x84083, 0x86085000000, 0x87000000, 0x0, 0x89000088, 0x0, 0x0, 0x8a000, 0x8b000000000, 0x0, 0x8e00008d08c, 0x8f000000133, 0x131000000134, 0x0, 0x90000, 0x0, 0x92000091000, 0x0, 0x93000000, 0x0, 0x96095094000, 0x98097000, 0x9a099, 0x9b000, 0x0, 0x9d09c, 0x9f09e000000, 0xa0000000, 0x0] def indices0RLRR : Table Nat := .leaf #[ 0xa20000a1, 0x0, 0x0, 0xa3000, 0xa4000000000, 0x0, 0xa70000a60a5, 0xa800000013e, 0x13900000013d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices0RLR : Table Nat := .branch 32 (indices0RLRL) (indices0RLRR) def indices0RL : Table Nat := .branch 63 (indices0RLL) (indices0RLR) def indices0RRLL : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0xa9000000, 0x0, 0xab0000aa000, 0x0, 0xac000000, 0x0, 0xaf0ae0ad000, 0xb10b0000, 0xb30b2, 0xb4000, 0x0, 0xb60b5, 0xb80b7000000, 0xb9000000, 0x0, 0xbb0000ba, 0x0, 0x0, 0xbc000, 0xbd000000000, 0x0, 0xc00000bf0be, 0xc1000000138, 0x122000000121, 0x0, 0xc2, 0xc40000c3] def indices0RRLR : Table Nat := .leaf #[ 0x0, 0xc5000, 0x0, 0xc80c70c6, 0xcb0000ca0c9, 0xcc, 0xcd, 0xce000000000, 0xcf, 0xd10d0000, 0xd2000, 0xd3000000000, 0xd4000, 0x0, 0x0, 0xd5, 0xd6000000, 0xd7000000000, 0x13a0d90000d8, 0x13b0da000000, 0x13c000000, 0x0, 0xdb000, 0xdc000000000, 0xdd000, 0x0, 0xde, 0xdf000000000, 0xe20000e10e0, 0xe50e40000e3, 0xe6000000000, 0x0] def indices0RRL : Table Nat := .branch 31 (indices0RRLL) (indices0RRLR) def indices0RRRL : Table Nat := .leaf #[ 0x0, 0xe80e7000000, 0x0, 0xea0e9, 0xeb, 0xec000000, 0xed, 0x0, 0xee000000000, 0x0, 0xef000, 0x0, 0xf20000f10f0, 0xf3000000129, 0x128000000127, 0x0, 0x0, 0x0, 0xf4000000, 0x0, 0xf5, 0xf6000000000, 0xf90000f80f7, 0xfc0fb0000fa, 0xfd000000000, 0x0, 0xff0fe000000, 0x0, 0x101100, 0x102, 0x103000000, 0x104] def indices0RRRR : Table Nat := .leaf #[ 0x0, 0x105000000000, 0x0, 0x106000, 0x108107000000, 0x12b109000, 0x12c10a000, 0x12d000, 0x0, 0x0, 0x0, 0x10b, 0x10c000000, 0x0, 0x10f10e10d, 0x112000111110, 0x113, 0x114, 0x0, 0x115000000000, 0x116, 0x118117000, 0x119000000, 0x0, 0x11b00011a, 0x0, 0x0, 0x11c000, 0x11d000000000, 0x0, 0x11f11e000000, 0x126000120000] def indices0RRR : Table Nat := .branch 32 (indices0RRRL) (indices0RRRR) def indices0RR : Table Nat := .branch 63 (indices0RRL) (indices0RRR) def indices0R : Table Nat := .branch 0x7f (indices0RL) (indices0RR) def indices0 : Table Nat := .branch 0xfd (indices0L) (indices0R) noncomputable def anchor0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (i : Nat) : Option SValue := let j := indexAt indices0 i if j = 0 then none else some ((values X Y p r).get (.rat 0) (j-1)) def indices1LLLL : Table Nat := .leaf #[ 0x0, 0x15f160, 0x15e162000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1LLLR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1LLL : Table Nat := .branch 31 (indices1LLLL) (indices1LLLR) def indices1LLRL : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1LLRR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17b000000000, 0x0, 0x1000000, 0x0, 0x2000000, 0x3, 0x0, 0x0, 0x4000000000, 0x0, 0x6000005000, 0x0, 0x0, 0x7000000] def indices1LLR : Table Nat := .branch 31 (indices1LLRL) (indices1LLRR) def indices1LL : Table Nat := .branch 63 (indices1LLL) (indices1LLR) def indices1LRLL : Table Nat := .leaf #[ 0x8000000000, 0x9000, 0xb00a000000, 0xe00d00000c, 0x1000f000, 0x0, 0x17c012011000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1LRLR : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1LRL : Table Nat := .branch 31 (indices1LRLL) (indices1LRLR) def indices1LRRL : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0x0, 0x2e00002d, 0x0, 0x2f000, 0x0, 0x32031030, 0x35000034033, 0x36, 0x37, 0x38000000000, 0x39] def indices1LRRR : Table Nat := .leaf #[ 0x3b03a000, 0x3c000, 0x3d000000000, 0x3e000, 0x0, 0x0, 0x3f, 0x40000000, 0x41000000000, 0x176043000042, 0x175044000000, 0x17a000000, 0x0, 0x45, 0x47000046, 0x0, 0x48000, 0x0, 0x4b04a049, 0x4e00004d04c, 0x4f, 0x50, 0x51000000000, 0x52, 0x54053000, 0x55000, 0x56000000000, 0x57000, 0x0, 0x0, 0x58, 0x59000000] def indices1LRR : Table Nat := .branch 32 (indices1LRRL) (indices1LRRR) def indices1LR : Table Nat := .branch 63 (indices1LRL) (indices1LRR) def indices1L : Table Nat := .branch 0x7e (indices1LL) (indices1LR) def indices1RLLL : Table Nat := .leaf #[ 0x5a000000000, 0x17905c00005b, 0x17805d000000, 0x177000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1RLLR : Table Nat := .leaf #[ 0x0, 0x5e000, 0x6000005f000, 0x0, 0x61000000, 0x0, 0x64063062000, 0x66065000, 0x68067, 0x69000, 0x0, 0x6b06a, 0x6d06c000000, 0x6e000000, 0x0, 0x7000006f, 0x0, 0x0, 0x71000, 0x72000000000, 0x0, 0x75000074073, 0x76000000173, 0x172000000174, 0x0, 0x77000, 0x79000078000, 0x0, 0x7a000000, 0x0, 0x7d07c07b000, 0x7f07e000] def indices1RLL : Table Nat := .branch 31 (indices1RLLL) (indices1RLLR) def indices1RLRL : Table Nat := .leaf #[ 0x81080, 0x82000, 0x0, 0x84083, 0x86085000000, 0x87000000, 0x0, 0x89000088, 0x0, 0x0, 0x8a000, 0x8b000000000, 0x0, 0x8e00008d08c, 0x8f00000016f, 0x171000000170, 0x0, 0x90000, 0x0, 0x92000091000, 0x0, 0x93000000, 0x0, 0x96095094000, 0x98097000, 0x9a099, 0x9b000, 0x0, 0x9d09c, 0x9f09e000000, 0xa0000000, 0x0] def indices1RLRR : Table Nat := .leaf #[ 0xa20000a1, 0x0, 0x0, 0xa3000, 0xa4000000000, 0x0, 0xa70000a60a5, 0xa8000000165, 0x167000000166, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0] def indices1RLR : Table Nat := .branch 32 (indices1RLRL) (indices1RLRR) def indices1RL : Table Nat := .branch 63 (indices1RLL) (indices1RLR) def indices1RRLL : Table Nat := .leaf #[ 0x0, 0x0, 0x0, 0x0, 0xa9000000, 0x0, 0xab0000aa000, 0x0, 0xac000000, 0x0, 0xaf0ae0ad000, 0xb10b0000, 0xb30b2, 0xb4000, 0x0, 0xb60b5, 0xb80b7000000, 0xb9000000, 0x0, 0xbb0000ba, 0x0, 0x0, 0xbc000, 0xbd000000000, 0x0, 0xc00000bf0be, 0xc100000016c, 0x16e00000016d, 0x0, 0xc2, 0xc40000c3] def indices1RRLR : Table Nat := .leaf #[ 0x0, 0xc5000, 0x0, 0xc80c70c6, 0xcb0000ca0c9, 0xcc, 0xcd, 0xce000000000, 0xcf, 0xd10d0000, 0xd2000, 0xd3000000000, 0xd4000, 0x0, 0x0, 0xd5, 0xd6000000, 0xd7000000000, 0x1630d90000d8, 0x1640da000000, 0x168000000, 0x0, 0xdb000, 0xdc000000000, 0xdd000, 0x0, 0xde, 0xdf000000000, 0xe20000e10e0, 0xe50e40000e3, 0x145000000000, 0x0] def indices1RRL : Table Nat := .branch 31 (indices1RRLL) (indices1RRLR) def indices1RRRL : Table Nat := .leaf #[ 0x0, 0x147146000000, 0x0, 0x149148, 0xeb, 0xec000000, 0xed, 0x0, 0x14a000000000, 0x0, 0x14b000, 0x0, 0x14e00014d14c, 0x14f00000015c, 0x15b00000015d, 0x0, 0x0, 0x0, 0xf4000000, 0x0, 0xf5, 0xf6000000000, 0xf90000f80f7, 0xfc0fb0000fa, 0xfd000000000, 0x0, 0xff0fe000000, 0x0, 0x101100, 0x102, 0x103000000, 0x104] def indices1RRRR : Table Nat := .leaf #[ 0x0, 0x105000000000, 0x0, 0x106000, 0x108107000000, 0x169109000, 0x16a10a000, 0x16b000, 0x0, 0x0, 0x0, 0x150, 0x10c000000, 0x0, 0x10f10e10d, 0x112000111110, 0x113, 0x151, 0x0, 0x152000000000, 0x153, 0x155154000, 0x119000000, 0x0, 0x11b00011a, 0x0, 0x0, 0x156000, 0x157000000000, 0x0, 0x159158000000, 0x16100015a000] def indices1RRR : Table Nat := .branch 32 (indices1RRRL) (indices1RRRR) def indices1RR : Table Nat := .branch 63 (indices1RRL) (indices1RRR) def indices1R : Table Nat := .branch 0x7f (indices1RL) (indices1RR) def indices1 : Table Nat := .branch 0xfd (indices1L) (indices1R) noncomputable def anchor1 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (i : Nat) : Option SValue := let j := indexAt indices1 i if j = 0 then none else some ((values X Y p r).get (.rat 0) (j-1)) end ClosureAnchorData end PolicySubmissionPart81 /- Component ClosureSharedAnchorFuelSemanticsExplicit; SHA256 4e610f6358c6937b5792f6477085cf33d40cb26640eb3b86cbbfd42a5df4649e. -/ section PolicySubmissionPart82 /- Experimental fuel-recursive anchor route; shared root semantics use fuel 11. All auxiliary proof declarations are synchronous proof-valued definitions. -/ namespace ClosureSharedAnchorFuelSemantics open ClosureAnchorSemantics noncomputable def env (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (j : Nat) : SValue := (ClosureAnchorData.values X Y p r).get (.rat 0) j def Good (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (j : Nat) : Prop := env X Y p r j = ClosureAnchorFuelPatternCheck.eval (sInput X Y p r) (env X Y p r) 11 (ClosureSharedAnchorPatternData.patterns j) def c0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0+j.val) := by intro j fin_cases j <;> rfl def c8 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (8+j.val) := by intro j fin_cases j <;> rfl def c16 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (16+j.val) := by intro j fin_cases j <;> rfl def c24 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (24+j.val) := by intro j fin_cases j <;> rfl def c32 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (32+j.val) := by intro j fin_cases j <;> rfl def c40 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (40+j.val) := by intro j fin_cases j <;> rfl def c48 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (48+j.val) := by intro j fin_cases j <;> rfl def c56 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (56+j.val) := by intro j fin_cases j <;> rfl def c64 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (64+j.val) := by intro j fin_cases j <;> rfl def c72 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (72+j.val) := by intro j fin_cases j <;> rfl def c80 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (80+j.val) := by intro j fin_cases j <;> rfl def c88 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (88+j.val) := by intro j fin_cases j <;> rfl def c96 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (96+j.val) := by intro j fin_cases j <;> rfl def c104 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x68+j.val) := by intro j fin_cases j <;> rfl def c112 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x70+j.val) := by intro j fin_cases j <;> rfl def c120 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x78+j.val) := by intro j fin_cases j <;> rfl def c128 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x80+j.val) := by intro j fin_cases j <;> rfl def c136 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x88+j.val) := by intro j fin_cases j <;> rfl def c144 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x90+j.val) := by intro j fin_cases j <;> rfl def c152 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x98+j.val) := by intro j fin_cases j <;> rfl def c160 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xa0+j.val) := by intro j fin_cases j <;> rfl def c168 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xa8+j.val) := by intro j fin_cases j <;> rfl def c176 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xb0+j.val) := by intro j fin_cases j <;> rfl def c184 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xb8+j.val) := by intro j fin_cases j <;> rfl def c192 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xc0+j.val) := by intro j fin_cases j <;> rfl def c200 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xc8+j.val) := by intro j fin_cases j <;> rfl def c208 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xd0+j.val) := by intro j fin_cases j <;> rfl def c216 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xd8+j.val) := by intro j fin_cases j <;> rfl def c224 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xe0+j.val) := by intro j fin_cases j <;> rfl def c232 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xe8+j.val) := by intro j fin_cases j <;> rfl def c240 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xf0+j.val) := by intro j fin_cases j <;> rfl def c248 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0xf8+j.val) := by intro j fin_cases j <;> rfl def c256 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x100+j.val) := by intro j fin_cases j <;> rfl def c264 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x108+j.val) := by intro j fin_cases j <;> rfl def c272 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x110+j.val) := by intro j fin_cases j <;> rfl def c280 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x118+j.val) := by intro j fin_cases j <;> rfl def c288 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x120+j.val) := by intro j fin_cases j <;> rfl def c296 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x128+j.val) := by intro j fin_cases j <;> rfl def c304 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x130+j.val) := by intro j fin_cases j <;> rfl def c312 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x138+j.val) := by intro j fin_cases j <;> rfl def c320 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x140+j.val) := by intro j fin_cases j <;> rfl def c328 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x148+j.val) := by intro j fin_cases j <;> rfl def c336 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x150+j.val) := by intro j fin_cases j <;> rfl def c344 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x158+j.val) := by intro j fin_cases j <;> rfl def c352 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x160+j.val) := by intro j fin_cases j <;> rfl def c360 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x168+j.val) := by intro j fin_cases j <;> rfl def c368 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 8, Good X Y p r (0x170+j.val) := by intro j fin_cases j <;> rfl def c376 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j : Fin 4, Good X Y p r (0x178+j.val) := by intro j fin_cases j <;> rfl def checked (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ j < 0x17c, Good X Y p r j := by intro j hj exact (ClosurePrefixAdapter.interval_join 0 0xc0 0x17c (ClosurePrefixAdapter.interval_join 0 96 0xc0 (ClosurePrefixAdapter.interval_join 0 48 96 (ClosurePrefixAdapter.interval_join 0 24 48 (ClosurePrefixAdapter.interval_join 0 8 24 (ClosurePrefixAdapter.interval_from_fin 0 8 (c0 X Y p r)) (ClosurePrefixAdapter.interval_join 8 16 24 (ClosurePrefixAdapter.interval_from_fin 8 8 (c8 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 16 8 (c16 X Y p r)))) (ClosurePrefixAdapter.interval_join 24 32 48 (ClosurePrefixAdapter.interval_from_fin 24 8 (c24 X Y p r)) (ClosurePrefixAdapter.interval_join 32 40 48 (ClosurePrefixAdapter.interval_from_fin 32 8 (c32 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 40 8 (c40 X Y p r))))) (ClosurePrefixAdapter.interval_join 48 72 96 (ClosurePrefixAdapter.interval_join 48 56 72 (ClosurePrefixAdapter.interval_from_fin 48 8 (c48 X Y p r)) (ClosurePrefixAdapter.interval_join 56 64 72 (ClosurePrefixAdapter.interval_from_fin 56 8 (c56 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 64 8 (c64 X Y p r)))) (ClosurePrefixAdapter.interval_join 72 80 96 (ClosurePrefixAdapter.interval_from_fin 72 8 (c72 X Y p r)) (ClosurePrefixAdapter.interval_join 80 88 96 (ClosurePrefixAdapter.interval_from_fin 80 8 (c80 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 88 8 (c88 X Y p r)))))) (ClosurePrefixAdapter.interval_join 96 0x90 0xc0 (ClosurePrefixAdapter.interval_join 96 0x78 0x90 (ClosurePrefixAdapter.interval_join 96 0x68 0x78 (ClosurePrefixAdapter.interval_from_fin 96 8 (c96 X Y p r)) (ClosurePrefixAdapter.interval_join 0x68 0x70 0x78 (ClosurePrefixAdapter.interval_from_fin 0x68 8 (c104 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0x70 8 (c112 X Y p r)))) (ClosurePrefixAdapter.interval_join 0x78 0x80 0x90 (ClosurePrefixAdapter.interval_from_fin 0x78 8 (c120 X Y p r)) (ClosurePrefixAdapter.interval_join 0x80 0x88 0x90 (ClosurePrefixAdapter.interval_from_fin 0x80 8 (c128 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0x88 8 (c136 X Y p r))))) (ClosurePrefixAdapter.interval_join 0x90 0xa8 0xc0 (ClosurePrefixAdapter.interval_join 0x90 0x98 0xa8 (ClosurePrefixAdapter.interval_from_fin 0x90 8 (c144 X Y p r)) (ClosurePrefixAdapter.interval_join 0x98 0xa0 0xa8 (ClosurePrefixAdapter.interval_from_fin 0x98 8 (c152 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0xa0 8 (c160 X Y p r)))) (ClosurePrefixAdapter.interval_join 0xa8 0xb0 0xc0 (ClosurePrefixAdapter.interval_from_fin 0xa8 8 (c168 X Y p r)) (ClosurePrefixAdapter.interval_join 0xb0 0xb8 0xc0 (ClosurePrefixAdapter.interval_from_fin 0xb0 8 (c176 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0xb8 8 (c184 X Y p r))))))) (ClosurePrefixAdapter.interval_join 0xc0 0x120 0x17c (ClosurePrefixAdapter.interval_join 0xc0 0xf0 0x120 (ClosurePrefixAdapter.interval_join 0xc0 0xd8 0xf0 (ClosurePrefixAdapter.interval_join 0xc0 0xc8 0xd8 (ClosurePrefixAdapter.interval_from_fin 0xc0 8 (c192 X Y p r)) (ClosurePrefixAdapter.interval_join 0xc8 0xd0 0xd8 (ClosurePrefixAdapter.interval_from_fin 0xc8 8 (c200 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0xd0 8 (c208 X Y p r)))) (ClosurePrefixAdapter.interval_join 0xd8 0xe0 0xf0 (ClosurePrefixAdapter.interval_from_fin 0xd8 8 (c216 X Y p r)) (ClosurePrefixAdapter.interval_join 0xe0 0xe8 0xf0 (ClosurePrefixAdapter.interval_from_fin 0xe0 8 (c224 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0xe8 8 (c232 X Y p r))))) (ClosurePrefixAdapter.interval_join 0xf0 0x108 0x120 (ClosurePrefixAdapter.interval_join 0xf0 0xf8 0x108 (ClosurePrefixAdapter.interval_from_fin 0xf0 8 (c240 X Y p r)) (ClosurePrefixAdapter.interval_join 0xf8 0x100 0x108 (ClosurePrefixAdapter.interval_from_fin 0xf8 8 (c248 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0x100 8 (c256 X Y p r)))) (ClosurePrefixAdapter.interval_join 0x108 0x110 0x120 (ClosurePrefixAdapter.interval_from_fin 0x108 8 (c264 X Y p r)) (ClosurePrefixAdapter.interval_join 0x110 0x118 0x120 (ClosurePrefixAdapter.interval_from_fin 0x110 8 (c272 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0x118 8 (c280 X Y p r)))))) (ClosurePrefixAdapter.interval_join 0x120 0x150 0x17c (ClosurePrefixAdapter.interval_join 0x120 0x138 0x150 (ClosurePrefixAdapter.interval_join 0x120 0x128 0x138 (ClosurePrefixAdapter.interval_from_fin 0x120 8 (c288 X Y p r)) (ClosurePrefixAdapter.interval_join 0x128 0x130 0x138 (ClosurePrefixAdapter.interval_from_fin 0x128 8 (c296 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0x130 8 (c304 X Y p r)))) (ClosurePrefixAdapter.interval_join 0x138 0x140 0x150 (ClosurePrefixAdapter.interval_from_fin 0x138 8 (c312 X Y p r)) (ClosurePrefixAdapter.interval_join 0x140 0x148 0x150 (ClosurePrefixAdapter.interval_from_fin 0x140 8 (c320 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0x148 8 (c328 X Y p r))))) (ClosurePrefixAdapter.interval_join 0x150 0x168 0x17c (ClosurePrefixAdapter.interval_join 0x150 0x158 0x168 (ClosurePrefixAdapter.interval_from_fin 0x150 8 (c336 X Y p r)) (ClosurePrefixAdapter.interval_join 0x158 0x160 0x168 (ClosurePrefixAdapter.interval_from_fin 0x158 8 (c344 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0x160 8 (c352 X Y p r)))) (ClosurePrefixAdapter.interval_join 0x168 0x170 0x17c (ClosurePrefixAdapter.interval_from_fin 0x168 8 (c360 X Y p r)) (ClosurePrefixAdapter.interval_join 0x170 0x178 0x17c (ClosurePrefixAdapter.interval_from_fin 0x170 8 (c368 X Y p r)) (ClosurePrefixAdapter.interval_from_fin 0x178 4 (c376 X Y p r)))))))) j (Nat.zero_le j) hj end ClosureSharedAnchorFuelSemantics end PolicySubmissionPart82 /- Component ClosureSharedAnchorFuelChecks0Explicit; SHA256 cc0cfa5e4a88959f52f02d79fc597d3fd1480986cd7bdc1bdb72c3502f5469c1. -/ section PolicySubmissionPart83 /- Experimental fuel-recursive anchor route; shared root semantics use fuel 11. All auxiliary proof declarations are synchronous proof-valued definitions. -/ namespace ClosureSharedAnchorFuelChecks0 open ClosureAnchorSemantics def Good (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (i : Nat) : Prop := ∀ a, ClosureAnchorData.anchor0 X Y p r i = some a → a = anchorBody ClosurePrefixAdapterData.program0 (sInput X Y p r) (ClosureAnchorData.anchor0 X Y p r) i abbrev NumericallyGood (i : Nat) : Prop := ClosureAnchorFuelPatternCheck.checkAnchor (ClosureSemantics.boundedProgram ClosurePrefixAdapterData.program0) (ClosureAnchorData.indexAt ClosureAnchorData.indices0) ClosureSharedAnchorPatternData.patterns 0x17c 10 i = true def c0 : ∀ i : Fin 32, NumericallyGood (0+i.val) := by decide +kernel def c32 : ∀ i : Fin 32, NumericallyGood (32+i.val) := by decide +kernel def c64 : ∀ i : Fin 32, NumericallyGood (64+i.val) := by decide +kernel def c96 : ∀ i : Fin 32, NumericallyGood (96+i.val) := by decide +kernel def c128 : ∀ i : Fin 32, NumericallyGood (0x80+i.val) := by decide +kernel def c160 : ∀ i : Fin 32, NumericallyGood (0xa0+i.val) := by decide +kernel def c192 : ∀ i : Fin 32, NumericallyGood (0xc0+i.val) := by decide +kernel def c224 : ∀ i : Fin 32, NumericallyGood (0xe0+i.val) := by decide +kernel def c256 : ∀ i : Fin 32, NumericallyGood (0x100+i.val) := by decide +kernel def c288 : ∀ i : Fin 32, NumericallyGood (0x120+i.val) := by decide +kernel def c320 : ∀ i : Fin 32, NumericallyGood (0x140+i.val) := by decide +kernel def c352 : ∀ i : Fin 32, NumericallyGood (0x160+i.val) := by decide +kernel def c384 : ∀ i : Fin 32, NumericallyGood (0x180+i.val) := by decide +kernel def c416 : ∀ i : Fin 32, NumericallyGood (0x1a0+i.val) := by decide +kernel def c448 : ∀ i : Fin 32, NumericallyGood (0x1c0+i.val) := by decide +kernel def c480 : ∀ i : Fin 32, NumericallyGood (0x1e0+i.val) := by decide +kernel def c512 : ∀ i : Fin 32, NumericallyGood (0x200+i.val) := by decide +kernel def c544 : ∀ i : Fin 32, NumericallyGood (0x220+i.val) := by decide +kernel def c576 : ∀ i : Fin 32, NumericallyGood (0x240+i.val) := by decide +kernel def c608 : ∀ i : Fin 32, NumericallyGood (0x260+i.val) := by decide +kernel def c640 : ∀ i : Fin 32, NumericallyGood (0x280+i.val) := by decide +kernel def c672 : ∀ i : Fin 32, NumericallyGood (0x2a0+i.val) := by decide +kernel def c704 : ∀ i : Fin 32, NumericallyGood (0x2c0+i.val) := by decide +kernel def c736 : ∀ i : Fin 32, NumericallyGood (0x2e0+i.val) := by decide +kernel def c768 : ∀ i : Fin 32, NumericallyGood (0x300+i.val) := by decide +kernel def c800 : ∀ i : Fin 32, NumericallyGood (0x320+i.val) := by decide +kernel def c832 : ∀ i : Fin 32, NumericallyGood (0x340+i.val) := by decide +kernel def c864 : ∀ i : Fin 32, NumericallyGood (0x360+i.val) := by decide +kernel def c896 : ∀ i : Fin 32, NumericallyGood (0x380+i.val) := by decide +kernel def c928 : ∀ i : Fin 32, NumericallyGood (0x3a0+i.val) := by decide +kernel def c960 : ∀ i : Fin 32, NumericallyGood (0x3c0+i.val) := by decide +kernel def c992 : ∀ i : Fin 32, NumericallyGood (0x3e0+i.val) := by decide +kernel def c1024 : ∀ i : Fin 32, NumericallyGood (0x400+i.val) := by decide +kernel def c1056 : ∀ i : Fin 32, NumericallyGood (0x420+i.val) := by decide +kernel def c1088 : ∀ i : Fin 32, NumericallyGood (0x440+i.val) := by decide +kernel def c1120 : ∀ i : Fin 32, NumericallyGood (0x460+i.val) := by decide +kernel def c1152 : ∀ i : Fin 32, NumericallyGood (0x480+i.val) := by decide +kernel def c1184 : ∀ i : Fin 32, NumericallyGood (0x4a0+i.val) := by decide +kernel def c1216 : ∀ i : Fin 32, NumericallyGood (0x4c0+i.val) := by decide +kernel def c1248 : ∀ i : Fin 32, NumericallyGood (0x4e0+i.val) := by decide +kernel def c1280 : ∀ i : Fin 32, NumericallyGood (0x500+i.val) := by decide +kernel def c1312 : ∀ i : Fin 32, NumericallyGood (0x520+i.val) := by decide +kernel def c1344 : ∀ i : Fin 32, NumericallyGood (0x540+i.val) := by decide +kernel def c1376 : ∀ i : Fin 32, NumericallyGood (0x560+i.val) := by decide +kernel def c1408 : ∀ i : Fin 32, NumericallyGood (0x580+i.val) := by decide +kernel def c1440 : ∀ i : Fin 32, NumericallyGood (0x5a0+i.val) := by decide +kernel def c1472 : ∀ i : Fin 32, NumericallyGood (0x5c0+i.val) := by decide +kernel def c1504 : ∀ i : Fin 32, NumericallyGood (0x5e0+i.val) := by decide +kernel def c1536 : ∀ i : Fin 32, NumericallyGood (0x600+i.val) := by decide +kernel def c1568 : ∀ i : Fin 32, NumericallyGood (0x620+i.val) := by decide +kernel def c1600 : ∀ i : Fin 32, NumericallyGood (0x640+i.val) := by decide +kernel def c1632 : ∀ i : Fin 32, NumericallyGood (0x660+i.val) := by decide +kernel def c1664 : ∀ i : Fin 32, NumericallyGood (0x680+i.val) := by decide +kernel def c1696 : ∀ i : Fin 32, NumericallyGood (0x6a0+i.val) := by decide +kernel def c1728 : ∀ i : Fin 32, NumericallyGood (0x6c0+i.val) := by decide +kernel def c1760 : ∀ i : Fin 32, NumericallyGood (0x6e0+i.val) := by decide +kernel def c1792 : ∀ i : Fin 32, NumericallyGood (0x700+i.val) := by decide +kernel def c1824 : ∀ i : Fin 32, NumericallyGood (0x720+i.val) := by decide +kernel def c1856 : ∀ i : Fin 32, NumericallyGood (0x740+i.val) := by decide +kernel def c1888 : ∀ i : Fin 32, NumericallyGood (0x760+i.val) := by decide +kernel def c1920 : ∀ i : Fin 32, NumericallyGood (0x780+i.val) := by decide +kernel def c1952 : ∀ i : Fin 32, NumericallyGood (0x7a0+i.val) := by decide +kernel def c1984 : ∀ i : Fin 32, NumericallyGood (0x7c0+i.val) := by decide +kernel def c2016 : ∀ i : Fin 12, NumericallyGood (0x7e0+i.val) := by decide +kernel def numeric_checked : ∀ i < 0x7ec, NumericallyGood i := by intro i hi exact (ClosurePrefixAdapter.interval_join 0 0x400 0x7ec (ClosurePrefixAdapter.interval_join 0 0x200 0x400 (ClosurePrefixAdapter.interval_join 0 0x100 0x200 (ClosurePrefixAdapter.interval_join 0 0x80 0x100 (ClosurePrefixAdapter.interval_join 0 64 0x80 (ClosurePrefixAdapter.interval_join 0 32 64 (ClosurePrefixAdapter.interval_from_fin 0 32 (c0)) (ClosurePrefixAdapter.interval_from_fin 32 32 (c32))) (ClosurePrefixAdapter.interval_join 64 96 0x80 (ClosurePrefixAdapter.interval_from_fin 64 32 (c64)) (ClosurePrefixAdapter.interval_from_fin 96 32 (c96)))) (ClosurePrefixAdapter.interval_join 0x80 0xc0 0x100 (ClosurePrefixAdapter.interval_join 0x80 0xa0 0xc0 (ClosurePrefixAdapter.interval_from_fin 0x80 32 (c128)) (ClosurePrefixAdapter.interval_from_fin 0xa0 32 (c160))) (ClosurePrefixAdapter.interval_join 0xc0 0xe0 0x100 (ClosurePrefixAdapter.interval_from_fin 0xc0 32 (c192)) (ClosurePrefixAdapter.interval_from_fin 0xe0 32 (c224))))) (ClosurePrefixAdapter.interval_join 0x100 0x180 0x200 (ClosurePrefixAdapter.interval_join 0x100 0x140 0x180 (ClosurePrefixAdapter.interval_join 0x100 0x120 0x140 (ClosurePrefixAdapter.interval_from_fin 0x100 32 (c256)) (ClosurePrefixAdapter.interval_from_fin 0x120 32 (c288))) (ClosurePrefixAdapter.interval_join 0x140 0x160 0x180 (ClosurePrefixAdapter.interval_from_fin 0x140 32 (c320)) (ClosurePrefixAdapter.interval_from_fin 0x160 32 (c352)))) (ClosurePrefixAdapter.interval_join 0x180 0x1c0 0x200 (ClosurePrefixAdapter.interval_join 0x180 0x1a0 0x1c0 (ClosurePrefixAdapter.interval_from_fin 0x180 32 (c384)) (ClosurePrefixAdapter.interval_from_fin 0x1a0 32 (c416))) (ClosurePrefixAdapter.interval_join 0x1c0 0x1e0 0x200 (ClosurePrefixAdapter.interval_from_fin 0x1c0 32 (c448)) (ClosurePrefixAdapter.interval_from_fin 0x1e0 32 (c480)))))) (ClosurePrefixAdapter.interval_join 0x200 0x300 0x400 (ClosurePrefixAdapter.interval_join 0x200 0x280 0x300 (ClosurePrefixAdapter.interval_join 0x200 0x240 0x280 (ClosurePrefixAdapter.interval_join 0x200 0x220 0x240 (ClosurePrefixAdapter.interval_from_fin 0x200 32 (c512)) (ClosurePrefixAdapter.interval_from_fin 0x220 32 (c544))) (ClosurePrefixAdapter.interval_join 0x240 0x260 0x280 (ClosurePrefixAdapter.interval_from_fin 0x240 32 (c576)) (ClosurePrefixAdapter.interval_from_fin 0x260 32 (c608)))) (ClosurePrefixAdapter.interval_join 0x280 0x2c0 0x300 (ClosurePrefixAdapter.interval_join 0x280 0x2a0 0x2c0 (ClosurePrefixAdapter.interval_from_fin 0x280 32 (c640)) (ClosurePrefixAdapter.interval_from_fin 0x2a0 32 (c672))) (ClosurePrefixAdapter.interval_join 0x2c0 0x2e0 0x300 (ClosurePrefixAdapter.interval_from_fin 0x2c0 32 (c704)) (ClosurePrefixAdapter.interval_from_fin 0x2e0 32 (c736))))) (ClosurePrefixAdapter.interval_join 0x300 0x380 0x400 (ClosurePrefixAdapter.interval_join 0x300 0x340 0x380 (ClosurePrefixAdapter.interval_join 0x300 0x320 0x340 (ClosurePrefixAdapter.interval_from_fin 0x300 32 (c768)) (ClosurePrefixAdapter.interval_from_fin 0x320 32 (c800))) (ClosurePrefixAdapter.interval_join 0x340 0x360 0x380 (ClosurePrefixAdapter.interval_from_fin 0x340 32 (c832)) (ClosurePrefixAdapter.interval_from_fin 0x360 32 (c864)))) (ClosurePrefixAdapter.interval_join 0x380 0x3c0 0x400 (ClosurePrefixAdapter.interval_join 0x380 0x3a0 0x3c0 (ClosurePrefixAdapter.interval_from_fin 0x380 32 (c896)) (ClosurePrefixAdapter.interval_from_fin 0x3a0 32 (c928))) (ClosurePrefixAdapter.interval_join 0x3c0 0x3e0 0x400 (ClosurePrefixAdapter.interval_from_fin 0x3c0 32 (c960)) (ClosurePrefixAdapter.interval_from_fin 0x3e0 32 (c992))))))) (ClosurePrefixAdapter.interval_join 0x400 0x600 0x7ec (ClosurePrefixAdapter.interval_join 0x400 0x500 0x600 (ClosurePrefixAdapter.interval_join 0x400 0x480 0x500 (ClosurePrefixAdapter.interval_join 0x400 0x440 0x480 (ClosurePrefixAdapter.interval_join 0x400 0x420 0x440 (ClosurePrefixAdapter.interval_from_fin 0x400 32 (c1024)) (ClosurePrefixAdapter.interval_from_fin 0x420 32 (c1056))) (ClosurePrefixAdapter.interval_join 0x440 0x460 0x480 (ClosurePrefixAdapter.interval_from_fin 0x440 32 (c1088)) (ClosurePrefixAdapter.interval_from_fin 0x460 32 (c1120)))) (ClosurePrefixAdapter.interval_join 0x480 0x4c0 0x500 (ClosurePrefixAdapter.interval_join 0x480 0x4a0 0x4c0 (ClosurePrefixAdapter.interval_from_fin 0x480 32 (c1152)) (ClosurePrefixAdapter.interval_from_fin 0x4a0 32 (c1184))) (ClosurePrefixAdapter.interval_join 0x4c0 0x4e0 0x500 (ClosurePrefixAdapter.interval_from_fin 0x4c0 32 (c1216)) (ClosurePrefixAdapter.interval_from_fin 0x4e0 32 (c1248))))) (ClosurePrefixAdapter.interval_join 0x500 0x580 0x600 (ClosurePrefixAdapter.interval_join 0x500 0x540 0x580 (ClosurePrefixAdapter.interval_join 0x500 0x520 0x540 (ClosurePrefixAdapter.interval_from_fin 0x500 32 (c1280)) (ClosurePrefixAdapter.interval_from_fin 0x520 32 (c1312))) (ClosurePrefixAdapter.interval_join 0x540 0x560 0x580 (ClosurePrefixAdapter.interval_from_fin 0x540 32 (c1344)) (ClosurePrefixAdapter.interval_from_fin 0x560 32 (c1376)))) (ClosurePrefixAdapter.interval_join 0x580 0x5c0 0x600 (ClosurePrefixAdapter.interval_join 0x580 0x5a0 0x5c0 (ClosurePrefixAdapter.interval_from_fin 0x580 32 (c1408)) (ClosurePrefixAdapter.interval_from_fin 0x5a0 32 (c1440))) (ClosurePrefixAdapter.interval_join 0x5c0 0x5e0 0x600 (ClosurePrefixAdapter.interval_from_fin 0x5c0 32 (c1472)) (ClosurePrefixAdapter.interval_from_fin 0x5e0 32 (c1504)))))) (ClosurePrefixAdapter.interval_join 0x600 0x700 0x7ec (ClosurePrefixAdapter.interval_join 0x600 0x680 0x700 (ClosurePrefixAdapter.interval_join 0x600 0x640 0x680 (ClosurePrefixAdapter.interval_join 0x600 0x620 0x640 (ClosurePrefixAdapter.interval_from_fin 0x600 32 (c1536)) (ClosurePrefixAdapter.interval_from_fin 0x620 32 (c1568))) (ClosurePrefixAdapter.interval_join 0x640 0x660 0x680 (ClosurePrefixAdapter.interval_from_fin 0x640 32 (c1600)) (ClosurePrefixAdapter.interval_from_fin 0x660 32 (c1632)))) (ClosurePrefixAdapter.interval_join 0x680 0x6c0 0x700 (ClosurePrefixAdapter.interval_join 0x680 0x6a0 0x6c0 (ClosurePrefixAdapter.interval_from_fin 0x680 32 (c1664)) (ClosurePrefixAdapter.interval_from_fin 0x6a0 32 (c1696))) (ClosurePrefixAdapter.interval_join 0x6c0 0x6e0 0x700 (ClosurePrefixAdapter.interval_from_fin 0x6c0 32 (c1728)) (ClosurePrefixAdapter.interval_from_fin 0x6e0 32 (c1760))))) (ClosurePrefixAdapter.interval_join 0x700 0x780 0x7ec (ClosurePrefixAdapter.interval_join 0x700 0x740 0x780 (ClosurePrefixAdapter.interval_join 0x700 0x720 0x740 (ClosurePrefixAdapter.interval_from_fin 0x700 32 (c1792)) (ClosurePrefixAdapter.interval_from_fin 0x720 32 (c1824))) (ClosurePrefixAdapter.interval_join 0x740 0x760 0x780 (ClosurePrefixAdapter.interval_from_fin 0x740 32 (c1856)) (ClosurePrefixAdapter.interval_from_fin 0x760 32 (c1888)))) (ClosurePrefixAdapter.interval_join 0x780 0x7c0 0x7ec (ClosurePrefixAdapter.interval_join 0x780 0x7a0 0x7c0 (ClosurePrefixAdapter.interval_from_fin 0x780 32 (c1920)) (ClosurePrefixAdapter.interval_from_fin 0x7a0 32 (c1952))) (ClosurePrefixAdapter.interval_join 0x7c0 0x7e0 0x7ec (ClosurePrefixAdapter.interval_from_fin 0x7c0 32 (c1984)) (ClosurePrefixAdapter.interval_from_fin 0x7e0 12 (c2016)))))))) i (Nat.zero_le i) hi def checked (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ i, 0 ≤ i → i < 0x7ec → Good X Y p r i := by intro i _ hi exact ClosureAnchorFuelPatternCheck.anchor_good ClosurePrefixAdapterData.program0 (sInput X Y p r) (ClosureSharedAnchorFuelSemantics.env X Y p r) (ClosureAnchorData.anchor0 X Y p r) (ClosureAnchorData.indexAt ClosureAnchorData.indices0) (by intro j; rfl) ClosureSharedAnchorPatternData.patterns 0x17c 10 i (ClosureSharedAnchorFuelSemantics.checked X Y p r) (numeric_checked i hi) def model_agrees (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ i < 0x7ec, ClosureSemantics.programModel ClosurePrefixAdapterData.program0 (ClosureInputModel.inputValuation X Y p r) i = encode (anchoredValues ClosurePrefixAdapterData.program0 (sInput X Y p r) (ClosureAnchorData.anchor0 X Y p r) i) := anchored_model_agrees ClosurePrefixAdapterData.program0 X Y p r (ClosureAnchorData.anchor0 X Y p r) 0x7ec (fun i hi => checked X Y p r i (Nat.zero_le i) hi) end ClosureSharedAnchorFuelChecks0 end PolicySubmissionPart83 /- Component ClosureSharedAnchorFuelChecks1Explicit; SHA256 d22c37b075145e38a6f06b7576497f7ff22e99df0a5b2f5bc8c2bf75e85da902. -/ section PolicySubmissionPart84 /- Experimental fuel-recursive anchor route; shared root semantics use fuel 11. All auxiliary proof declarations are synchronous proof-valued definitions. -/ namespace ClosureSharedAnchorFuelChecks1 open ClosureAnchorSemantics def Good (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (i : Nat) : Prop := ∀ a, ClosureAnchorData.anchor1 X Y p r i = some a → a = anchorBody ClosurePrefixAdapterData.program1 (sInput X Y p r) (ClosureAnchorData.anchor1 X Y p r) i abbrev NumericallyGood (i : Nat) : Prop := ClosureAnchorFuelPatternCheck.checkAnchor (ClosureSemantics.boundedProgram ClosurePrefixAdapterData.program1) (ClosureAnchorData.indexAt ClosureAnchorData.indices1) ClosureSharedAnchorPatternData.patterns 0x17c 10 i = true def c0 : ∀ i : Fin 32, NumericallyGood (0+i.val) := by decide +kernel def c32 : ∀ i : Fin 32, NumericallyGood (32+i.val) := by decide +kernel def c64 : ∀ i : Fin 32, NumericallyGood (64+i.val) := by decide +kernel def c96 : ∀ i : Fin 32, NumericallyGood (96+i.val) := by decide +kernel def c128 : ∀ i : Fin 32, NumericallyGood (0x80+i.val) := by decide +kernel def c160 : ∀ i : Fin 32, NumericallyGood (0xa0+i.val) := by decide +kernel def c192 : ∀ i : Fin 32, NumericallyGood (0xc0+i.val) := by decide +kernel def c224 : ∀ i : Fin 32, NumericallyGood (0xe0+i.val) := by decide +kernel def c256 : ∀ i : Fin 32, NumericallyGood (0x100+i.val) := by decide +kernel def c288 : ∀ i : Fin 32, NumericallyGood (0x120+i.val) := by decide +kernel def c320 : ∀ i : Fin 32, NumericallyGood (0x140+i.val) := by decide +kernel def c352 : ∀ i : Fin 32, NumericallyGood (0x160+i.val) := by decide +kernel def c384 : ∀ i : Fin 32, NumericallyGood (0x180+i.val) := by decide +kernel def c416 : ∀ i : Fin 32, NumericallyGood (0x1a0+i.val) := by decide +kernel def c448 : ∀ i : Fin 32, NumericallyGood (0x1c0+i.val) := by decide +kernel def c480 : ∀ i : Fin 32, NumericallyGood (0x1e0+i.val) := by decide +kernel def c512 : ∀ i : Fin 32, NumericallyGood (0x200+i.val) := by decide +kernel def c544 : ∀ i : Fin 32, NumericallyGood (0x220+i.val) := by decide +kernel def c576 : ∀ i : Fin 32, NumericallyGood (0x240+i.val) := by decide +kernel def c608 : ∀ i : Fin 32, NumericallyGood (0x260+i.val) := by decide +kernel def c640 : ∀ i : Fin 32, NumericallyGood (0x280+i.val) := by decide +kernel def c672 : ∀ i : Fin 32, NumericallyGood (0x2a0+i.val) := by decide +kernel def c704 : ∀ i : Fin 32, NumericallyGood (0x2c0+i.val) := by decide +kernel def c736 : ∀ i : Fin 32, NumericallyGood (0x2e0+i.val) := by decide +kernel def c768 : ∀ i : Fin 32, NumericallyGood (0x300+i.val) := by decide +kernel def c800 : ∀ i : Fin 32, NumericallyGood (0x320+i.val) := by decide +kernel def c832 : ∀ i : Fin 32, NumericallyGood (0x340+i.val) := by decide +kernel def c864 : ∀ i : Fin 32, NumericallyGood (0x360+i.val) := by decide +kernel def c896 : ∀ i : Fin 32, NumericallyGood (0x380+i.val) := by decide +kernel def c928 : ∀ i : Fin 32, NumericallyGood (0x3a0+i.val) := by decide +kernel def c960 : ∀ i : Fin 32, NumericallyGood (0x3c0+i.val) := by decide +kernel def c992 : ∀ i : Fin 32, NumericallyGood (0x3e0+i.val) := by decide +kernel def c1024 : ∀ i : Fin 32, NumericallyGood (0x400+i.val) := by decide +kernel def c1056 : ∀ i : Fin 32, NumericallyGood (0x420+i.val) := by decide +kernel def c1088 : ∀ i : Fin 32, NumericallyGood (0x440+i.val) := by decide +kernel def c1120 : ∀ i : Fin 32, NumericallyGood (0x460+i.val) := by decide +kernel def c1152 : ∀ i : Fin 32, NumericallyGood (0x480+i.val) := by decide +kernel def c1184 : ∀ i : Fin 32, NumericallyGood (0x4a0+i.val) := by decide +kernel def c1216 : ∀ i : Fin 32, NumericallyGood (0x4c0+i.val) := by decide +kernel def c1248 : ∀ i : Fin 32, NumericallyGood (0x4e0+i.val) := by decide +kernel def c1280 : ∀ i : Fin 32, NumericallyGood (0x500+i.val) := by decide +kernel def c1312 : ∀ i : Fin 32, NumericallyGood (0x520+i.val) := by decide +kernel def c1344 : ∀ i : Fin 32, NumericallyGood (0x540+i.val) := by decide +kernel def c1376 : ∀ i : Fin 32, NumericallyGood (0x560+i.val) := by decide +kernel def c1408 : ∀ i : Fin 32, NumericallyGood (0x580+i.val) := by decide +kernel def c1440 : ∀ i : Fin 32, NumericallyGood (0x5a0+i.val) := by decide +kernel def c1472 : ∀ i : Fin 32, NumericallyGood (0x5c0+i.val) := by decide +kernel def c1504 : ∀ i : Fin 32, NumericallyGood (0x5e0+i.val) := by decide +kernel def c1536 : ∀ i : Fin 32, NumericallyGood (0x600+i.val) := by decide +kernel def c1568 : ∀ i : Fin 32, NumericallyGood (0x620+i.val) := by decide +kernel def c1600 : ∀ i : Fin 32, NumericallyGood (0x640+i.val) := by decide +kernel def c1632 : ∀ i : Fin 32, NumericallyGood (0x660+i.val) := by decide +kernel def c1664 : ∀ i : Fin 32, NumericallyGood (0x680+i.val) := by decide +kernel def c1696 : ∀ i : Fin 32, NumericallyGood (0x6a0+i.val) := by decide +kernel def c1728 : ∀ i : Fin 32, NumericallyGood (0x6c0+i.val) := by decide +kernel def c1760 : ∀ i : Fin 32, NumericallyGood (0x6e0+i.val) := by decide +kernel def c1792 : ∀ i : Fin 32, NumericallyGood (0x700+i.val) := by decide +kernel def c1824 : ∀ i : Fin 32, NumericallyGood (0x720+i.val) := by decide +kernel def c1856 : ∀ i : Fin 32, NumericallyGood (0x740+i.val) := by decide +kernel def c1888 : ∀ i : Fin 32, NumericallyGood (0x760+i.val) := by decide +kernel def c1920 : ∀ i : Fin 32, NumericallyGood (0x780+i.val) := by decide +kernel def c1952 : ∀ i : Fin 32, NumericallyGood (0x7a0+i.val) := by decide +kernel def c1984 : ∀ i : Fin 32, NumericallyGood (0x7c0+i.val) := by decide +kernel def c2016 : ∀ i : Fin 12, NumericallyGood (0x7e0+i.val) := by decide +kernel def numeric_checked : ∀ i < 0x7ec, NumericallyGood i := by intro i hi exact (ClosurePrefixAdapter.interval_join 0 0x400 0x7ec (ClosurePrefixAdapter.interval_join 0 0x200 0x400 (ClosurePrefixAdapter.interval_join 0 0x100 0x200 (ClosurePrefixAdapter.interval_join 0 0x80 0x100 (ClosurePrefixAdapter.interval_join 0 64 0x80 (ClosurePrefixAdapter.interval_join 0 32 64 (ClosurePrefixAdapter.interval_from_fin 0 32 (c0)) (ClosurePrefixAdapter.interval_from_fin 32 32 (c32))) (ClosurePrefixAdapter.interval_join 64 96 0x80 (ClosurePrefixAdapter.interval_from_fin 64 32 (c64)) (ClosurePrefixAdapter.interval_from_fin 96 32 (c96)))) (ClosurePrefixAdapter.interval_join 0x80 0xc0 0x100 (ClosurePrefixAdapter.interval_join 0x80 0xa0 0xc0 (ClosurePrefixAdapter.interval_from_fin 0x80 32 (c128)) (ClosurePrefixAdapter.interval_from_fin 0xa0 32 (c160))) (ClosurePrefixAdapter.interval_join 0xc0 0xe0 0x100 (ClosurePrefixAdapter.interval_from_fin 0xc0 32 (c192)) (ClosurePrefixAdapter.interval_from_fin 0xe0 32 (c224))))) (ClosurePrefixAdapter.interval_join 0x100 0x180 0x200 (ClosurePrefixAdapter.interval_join 0x100 0x140 0x180 (ClosurePrefixAdapter.interval_join 0x100 0x120 0x140 (ClosurePrefixAdapter.interval_from_fin 0x100 32 (c256)) (ClosurePrefixAdapter.interval_from_fin 0x120 32 (c288))) (ClosurePrefixAdapter.interval_join 0x140 0x160 0x180 (ClosurePrefixAdapter.interval_from_fin 0x140 32 (c320)) (ClosurePrefixAdapter.interval_from_fin 0x160 32 (c352)))) (ClosurePrefixAdapter.interval_join 0x180 0x1c0 0x200 (ClosurePrefixAdapter.interval_join 0x180 0x1a0 0x1c0 (ClosurePrefixAdapter.interval_from_fin 0x180 32 (c384)) (ClosurePrefixAdapter.interval_from_fin 0x1a0 32 (c416))) (ClosurePrefixAdapter.interval_join 0x1c0 0x1e0 0x200 (ClosurePrefixAdapter.interval_from_fin 0x1c0 32 (c448)) (ClosurePrefixAdapter.interval_from_fin 0x1e0 32 (c480)))))) (ClosurePrefixAdapter.interval_join 0x200 0x300 0x400 (ClosurePrefixAdapter.interval_join 0x200 0x280 0x300 (ClosurePrefixAdapter.interval_join 0x200 0x240 0x280 (ClosurePrefixAdapter.interval_join 0x200 0x220 0x240 (ClosurePrefixAdapter.interval_from_fin 0x200 32 (c512)) (ClosurePrefixAdapter.interval_from_fin 0x220 32 (c544))) (ClosurePrefixAdapter.interval_join 0x240 0x260 0x280 (ClosurePrefixAdapter.interval_from_fin 0x240 32 (c576)) (ClosurePrefixAdapter.interval_from_fin 0x260 32 (c608)))) (ClosurePrefixAdapter.interval_join 0x280 0x2c0 0x300 (ClosurePrefixAdapter.interval_join 0x280 0x2a0 0x2c0 (ClosurePrefixAdapter.interval_from_fin 0x280 32 (c640)) (ClosurePrefixAdapter.interval_from_fin 0x2a0 32 (c672))) (ClosurePrefixAdapter.interval_join 0x2c0 0x2e0 0x300 (ClosurePrefixAdapter.interval_from_fin 0x2c0 32 (c704)) (ClosurePrefixAdapter.interval_from_fin 0x2e0 32 (c736))))) (ClosurePrefixAdapter.interval_join 0x300 0x380 0x400 (ClosurePrefixAdapter.interval_join 0x300 0x340 0x380 (ClosurePrefixAdapter.interval_join 0x300 0x320 0x340 (ClosurePrefixAdapter.interval_from_fin 0x300 32 (c768)) (ClosurePrefixAdapter.interval_from_fin 0x320 32 (c800))) (ClosurePrefixAdapter.interval_join 0x340 0x360 0x380 (ClosurePrefixAdapter.interval_from_fin 0x340 32 (c832)) (ClosurePrefixAdapter.interval_from_fin 0x360 32 (c864)))) (ClosurePrefixAdapter.interval_join 0x380 0x3c0 0x400 (ClosurePrefixAdapter.interval_join 0x380 0x3a0 0x3c0 (ClosurePrefixAdapter.interval_from_fin 0x380 32 (c896)) (ClosurePrefixAdapter.interval_from_fin 0x3a0 32 (c928))) (ClosurePrefixAdapter.interval_join 0x3c0 0x3e0 0x400 (ClosurePrefixAdapter.interval_from_fin 0x3c0 32 (c960)) (ClosurePrefixAdapter.interval_from_fin 0x3e0 32 (c992))))))) (ClosurePrefixAdapter.interval_join 0x400 0x600 0x7ec (ClosurePrefixAdapter.interval_join 0x400 0x500 0x600 (ClosurePrefixAdapter.interval_join 0x400 0x480 0x500 (ClosurePrefixAdapter.interval_join 0x400 0x440 0x480 (ClosurePrefixAdapter.interval_join 0x400 0x420 0x440 (ClosurePrefixAdapter.interval_from_fin 0x400 32 (c1024)) (ClosurePrefixAdapter.interval_from_fin 0x420 32 (c1056))) (ClosurePrefixAdapter.interval_join 0x440 0x460 0x480 (ClosurePrefixAdapter.interval_from_fin 0x440 32 (c1088)) (ClosurePrefixAdapter.interval_from_fin 0x460 32 (c1120)))) (ClosurePrefixAdapter.interval_join 0x480 0x4c0 0x500 (ClosurePrefixAdapter.interval_join 0x480 0x4a0 0x4c0 (ClosurePrefixAdapter.interval_from_fin 0x480 32 (c1152)) (ClosurePrefixAdapter.interval_from_fin 0x4a0 32 (c1184))) (ClosurePrefixAdapter.interval_join 0x4c0 0x4e0 0x500 (ClosurePrefixAdapter.interval_from_fin 0x4c0 32 (c1216)) (ClosurePrefixAdapter.interval_from_fin 0x4e0 32 (c1248))))) (ClosurePrefixAdapter.interval_join 0x500 0x580 0x600 (ClosurePrefixAdapter.interval_join 0x500 0x540 0x580 (ClosurePrefixAdapter.interval_join 0x500 0x520 0x540 (ClosurePrefixAdapter.interval_from_fin 0x500 32 (c1280)) (ClosurePrefixAdapter.interval_from_fin 0x520 32 (c1312))) (ClosurePrefixAdapter.interval_join 0x540 0x560 0x580 (ClosurePrefixAdapter.interval_from_fin 0x540 32 (c1344)) (ClosurePrefixAdapter.interval_from_fin 0x560 32 (c1376)))) (ClosurePrefixAdapter.interval_join 0x580 0x5c0 0x600 (ClosurePrefixAdapter.interval_join 0x580 0x5a0 0x5c0 (ClosurePrefixAdapter.interval_from_fin 0x580 32 (c1408)) (ClosurePrefixAdapter.interval_from_fin 0x5a0 32 (c1440))) (ClosurePrefixAdapter.interval_join 0x5c0 0x5e0 0x600 (ClosurePrefixAdapter.interval_from_fin 0x5c0 32 (c1472)) (ClosurePrefixAdapter.interval_from_fin 0x5e0 32 (c1504)))))) (ClosurePrefixAdapter.interval_join 0x600 0x700 0x7ec (ClosurePrefixAdapter.interval_join 0x600 0x680 0x700 (ClosurePrefixAdapter.interval_join 0x600 0x640 0x680 (ClosurePrefixAdapter.interval_join 0x600 0x620 0x640 (ClosurePrefixAdapter.interval_from_fin 0x600 32 (c1536)) (ClosurePrefixAdapter.interval_from_fin 0x620 32 (c1568))) (ClosurePrefixAdapter.interval_join 0x640 0x660 0x680 (ClosurePrefixAdapter.interval_from_fin 0x640 32 (c1600)) (ClosurePrefixAdapter.interval_from_fin 0x660 32 (c1632)))) (ClosurePrefixAdapter.interval_join 0x680 0x6c0 0x700 (ClosurePrefixAdapter.interval_join 0x680 0x6a0 0x6c0 (ClosurePrefixAdapter.interval_from_fin 0x680 32 (c1664)) (ClosurePrefixAdapter.interval_from_fin 0x6a0 32 (c1696))) (ClosurePrefixAdapter.interval_join 0x6c0 0x6e0 0x700 (ClosurePrefixAdapter.interval_from_fin 0x6c0 32 (c1728)) (ClosurePrefixAdapter.interval_from_fin 0x6e0 32 (c1760))))) (ClosurePrefixAdapter.interval_join 0x700 0x780 0x7ec (ClosurePrefixAdapter.interval_join 0x700 0x740 0x780 (ClosurePrefixAdapter.interval_join 0x700 0x720 0x740 (ClosurePrefixAdapter.interval_from_fin 0x700 32 (c1792)) (ClosurePrefixAdapter.interval_from_fin 0x720 32 (c1824))) (ClosurePrefixAdapter.interval_join 0x740 0x760 0x780 (ClosurePrefixAdapter.interval_from_fin 0x740 32 (c1856)) (ClosurePrefixAdapter.interval_from_fin 0x760 32 (c1888)))) (ClosurePrefixAdapter.interval_join 0x780 0x7c0 0x7ec (ClosurePrefixAdapter.interval_join 0x780 0x7a0 0x7c0 (ClosurePrefixAdapter.interval_from_fin 0x780 32 (c1920)) (ClosurePrefixAdapter.interval_from_fin 0x7a0 32 (c1952))) (ClosurePrefixAdapter.interval_join 0x7c0 0x7e0 0x7ec (ClosurePrefixAdapter.interval_from_fin 0x7c0 32 (c1984)) (ClosurePrefixAdapter.interval_from_fin 0x7e0 12 (c2016)))))))) i (Nat.zero_le i) hi def checked (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ i, 0 ≤ i → i < 0x7ec → Good X Y p r i := by intro i _ hi exact ClosureAnchorFuelPatternCheck.anchor_good ClosurePrefixAdapterData.program1 (sInput X Y p r) (ClosureSharedAnchorFuelSemantics.env X Y p r) (ClosureAnchorData.anchor1 X Y p r) (ClosureAnchorData.indexAt ClosureAnchorData.indices1) (by intro j; rfl) ClosureSharedAnchorPatternData.patterns 0x17c 10 i (ClosureSharedAnchorFuelSemantics.checked X Y p r) (numeric_checked i hi) def model_agrees (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ∀ i < 0x7ec, ClosureSemantics.programModel ClosurePrefixAdapterData.program1 (ClosureInputModel.inputValuation X Y p r) i = encode (anchoredValues ClosurePrefixAdapterData.program1 (sInput X Y p r) (ClosureAnchorData.anchor1 X Y p r) i) := anchored_model_agrees ClosurePrefixAdapterData.program1 X Y p r (ClosureAnchorData.anchor1 X Y p r) 0x7ec (fun i hi => checked X Y p r i (Nat.zero_le i) hi) end ClosureSharedAnchorFuelChecks1 end PolicySubmissionPart84 /- Component ClosureAliasCheck; SHA256 ca109b348bb954ac0598042ad2551ff362ad46be27a436f642f05bb85c06b72a. -/ section PolicySubmissionPart85 /- Reflect closed alias-node lookups without expanding them in the elaborator. -/ namespace ClosureAliasCheck open ClosureSemantics def check (node : Node) (target : Nat) : Bool := match node.op with | .alias => decide (node.children = [target]) | _ => false def sound (node : Node) (target : Nat) (h : check node target = true) : node = ⟨.alias, [target]⟩ := by cases node with | mk op children => cases op <;> simp_all [check] end ClosureAliasCheck end PolicySubmissionPart85 /- Component PolicyAssertedSemanticsAnchorRoute; SHA256 91276a467a5705edcb62c3fea903b722aec207819888a9b6dfcdf4dd846d4bb7. -/ section PolicySubmissionPart86 /- Actual mathematical truth of every asserted unit in the two certificates. -/ namespace PolicyAssertedPacked0 open ClosureSemantics ClosureAnchorSemantics def prefix_true (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (i : Nat) (a : Prop) (hi : i < 0x7ec) (hactive : 0 < ClosurePrefixAdapter.indexAt ClosurePrefixAdapterData.indices0 i) (ha : ClosureAnchorData.anchor0 X Y p r i = some (.prop a)) (htruth : a) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) i).b = true := by rw [ClosureAdapterChecks0.model_agrees (ClosureInputModel.inputValuation X Y p r) i hi hactive] exact anchor_model_true ClosurePrefixAdapterData.program0 X Y p r (ClosureAnchorData.anchor0 X Y p r) 0x7ec i a (fun j hj => ClosureSharedAnchorFuelChecks0.checked X Y p r j (Nat.zero_le j) hj) hi ha htruth def value_0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x903).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x903 0x65c (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x65c (ClosureOriginalInputs0.input_47 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_47 X Y p r h) def value_1 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x9a4).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x9a4 0x65f (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x65f (ClosureOriginalInputs0.input_48 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_48 X Y p r h) def value_2 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xa38).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xa38 4 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 4 (ClosureOriginalInputs0.input_0 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_0 X Y p r h) def value_3 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xaa1).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xaa1 10 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 10 (ClosureOriginalInputs0.input_3 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_3 X Y p r h) def value_4 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xb1a).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xb1a 5 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 5 (ClosureOriginalInputs0.input_1 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_1 X Y p r h) def value_5 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xbce).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xbce 0x7eb (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x7eb (ClosureOriginalInputs0.input_58 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_58 X Y p r h) def value_6 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xc49).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xc49 0x724 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x724 (ClosureOriginalInputs0.input_53 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_53 X Y p r h) def value_7 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xc5c).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xc5c 0x727 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x727 (ClosureOriginalInputs0.input_54 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_54 X Y p r h) def value_8 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xdb7).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xdb7 0x720 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x720 (ClosureOriginalInputs0.input_52 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_52 X Y p r h) def value_9 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xeea).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0xeea 9 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 9 (ClosureOriginalInputs0.input_2 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_2 X Y p r h) def value_10 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x105e).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x105e 0x782 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x782 (ClosureOriginalInputs0.input_55 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_55 X Y p r h) def value_11 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1071).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1071 0x786 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x786 (ClosureOriginalInputs0.input_56 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_56 X Y p r h) def value_12 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x109c).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x109c 0x789 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x789 (ClosureOriginalInputs0.input_57 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_57 X Y p r h) def value_13 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x170c).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x170c 0x4cf (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x4cf (ClosureOriginalInputs0.input_36 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_36 X Y p r h) def value_14 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1755).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1755 0x4c8 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x4c8 (ClosureOriginalInputs0.input_34 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_34 X Y p r h) def value_15 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1770).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1770 0x4cc (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x4cc (ClosureOriginalInputs0.input_35 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_35 X Y p r h) def value_16 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1a60).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1a60 0x52f (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x52f (ClosureOriginalInputs0.input_39 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_39 X Y p r h) def value_17 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1b37).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1b37 0x3a2 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x3a2 (ClosureOriginalInputs0.input_27 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_27 X Y p r h) def value_18 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1c0d).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1c0d 0x528 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x528 (ClosureOriginalInputs0.input_37 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_37 X Y p r h) def value_19 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1c22).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1c22 0x52c (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x52c (ClosureOriginalInputs0.input_38 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_38 X Y p r h) def value_20 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1ffe).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x1ffe 0x33b (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x33b (ClosureOriginalInputs0.input_23 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_23 X Y p r h) def value_21 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x2020).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x2020 0x337 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x337 (ClosureOriginalInputs0.input_22 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_22 X Y p r h) def value_22 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x20a7).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x20a7 0x33e (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x33e (ClosureOriginalInputs0.input_24 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_24 X Y p r h) def value_23 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x2465).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x2465 0x658 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x658 (ClosureOriginalInputs0.input_46 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_46 X Y p r h) def value_24 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x2611).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x2611 0x593 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x593 (ClosureOriginalInputs0.input_42 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_42 X Y p r h) def value_25 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x2852).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x2852 0x6b7 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x6b7 (ClosureOriginalInputs0.input_49 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_49 X Y p r h) def value_26 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x286d).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x286d 0x6bb (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x6bb (ClosureOriginalInputs0.input_50 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_50 X Y p r h) def value_27 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x28c4).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x28c4 0x6be (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x6be (ClosureOriginalInputs0.input_51 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_51 X Y p r h) def value_28 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x29d7).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x29d7 0x590 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x590 (ClosureOriginalInputs0.input_41 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_41 X Y p r h) def value_29 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x29f9).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x29f9 0x58c (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x58c (ClosureOriginalInputs0.input_40 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_40 X Y p r h) def value_30 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x31cc).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x31cc 0x214 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x214 (ClosureOriginalInputs0.input_15 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_15 X Y p r h) def value_31 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x3417).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x3417 0x39f (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x39f (ClosureOriginalInputs0.input_26 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_26 X Y p r h) def value_32 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x343c).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x343c 0x39b (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x39b (ClosureOriginalInputs0.input_25 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_25 X Y p r h) def value_33 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x3852).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x3852 0x3ff (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x3ff (ClosureOriginalInputs0.input_29 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_29 X Y p r h) def value_34 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x399b).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x399b 0x402 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x402 (ClosureOriginalInputs0.input_30 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_30 X Y p r h) def value_35 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x3cc3).b = true := by rw [alias_model ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) 0x3cc3 0x3fb (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x3fb (ClosureOriginalInputs0.input_28 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs0.raw_input_28 X Y p r h) def Good (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (i : Nat) : Prop := (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) ((records i).getD 1 0)).b = true def s0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : ∀ i : Fin 32, Good X Y p r (0+i.val) := by intro i fin_cases i · exact value_0 X Y p r h · exact value_1 X Y p r h · exact value_2 X Y p r h · exact value_3 X Y p r h · exact value_4 X Y p r h · exact value_5 X Y p r h · exact value_6 X Y p r h · exact value_7 X Y p r h · exact value_8 X Y p r h · exact value_9 X Y p r h · exact value_10 X Y p r h · exact value_11 X Y p r h · exact value_12 X Y p r h · exact value_13 X Y p r h · exact value_14 X Y p r h · exact value_15 X Y p r h · exact value_16 X Y p r h · exact value_17 X Y p r h · exact value_18 X Y p r h · exact value_19 X Y p r h · exact value_20 X Y p r h · exact value_21 X Y p r h · exact value_22 X Y p r h · exact value_23 X Y p r h · exact value_24 X Y p r h · exact value_25 X Y p r h · exact value_26 X Y p r h · exact value_27 X Y p r h · exact value_28 X Y p r h · exact value_29 X Y p r h · exact value_30 X Y p r h · exact value_31 X Y p r h def s32 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) : ∀ i : Fin 4, Good X Y p r (32+i.val) := by intro i fin_cases i · exact value_32 X Y p r h · exact value_33 X Y p r h · exact value_34 X Y p r h · exact value_35 X Y p r h def sound (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 false X Y p r) (i : Nat) (hi : i < 36) : (programModel ClosureFixedWidthData0.program (ClosureInputModel.inputValuation X Y p r) ((records i).getD 1 0)).b = true := (ClosurePrefixAdapter.interval_join 0 32 36 (ClosurePrefixAdapter.interval_from_fin 0 32 (s0 X Y p r h)) (ClosurePrefixAdapter.interval_from_fin 32 4 (s32 X Y p r h))) i (Nat.zero_le i) hi end PolicyAssertedPacked0 namespace PolicyAssertedPacked1 open ClosureSemantics ClosureAnchorSemantics def prefix_true (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (i : Nat) (a : Prop) (hi : i < 0x7ec) (hactive : 0 < ClosurePrefixAdapter.indexAt ClosurePrefixAdapterData.indices1 i) (ha : ClosureAnchorData.anchor1 X Y p r i = some (.prop a)) (htruth : a) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) i).b = true := by rw [ClosureAdapterChecks1.model_agrees (ClosureInputModel.inputValuation X Y p r) i hi hactive] exact anchor_model_true ClosurePrefixAdapterData.program1 X Y p r (ClosureAnchorData.anchor1 X Y p r) 0x7ec i a (fun j hj => ClosureSharedAnchorFuelChecks1.checked X Y p r j (Nat.zero_le j) hj) hi ha htruth def value_0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x86f).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x86f 0x727 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x727 (ClosureOriginalInputs1.input_54 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_54 X Y p r h) def value_1 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x8d5).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x8d5 0x720 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x720 (ClosureOriginalInputs1.input_52 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_52 X Y p r h) def value_2 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x8ea).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x8ea 0x724 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x724 (ClosureOriginalInputs1.input_53 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_53 X Y p r h) def value_3 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xa13).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xa13 10 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 10 (ClosureOriginalInputs1.input_3 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_3 X Y p r h) def value_4 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xa5e).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xa5e 5 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 5 (ClosureOriginalInputs1.input_1 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_1 X Y p r h) def value_5 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xb06).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xb06 4 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 4 (ClosureOriginalInputs1.input_0 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_0 X Y p r h) def value_6 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xc22).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xc22 0x7eb (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x7eb (ClosureOriginalInputs1.input_58 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_58 X Y p r h) def value_7 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xd04).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0xd04 9 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 9 (ClosureOriginalInputs1.input_2 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_2 X Y p r h) def value_8 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x13e1).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x13e1 0x6b7 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x6b7 (ClosureOriginalInputs1.input_49 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_49 X Y p r h) def value_9 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x13f6).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x13f6 0x6bb (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x6bb (ClosureOriginalInputs1.input_50 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_50 X Y p r h) def value_10 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1486).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1486 0x58c (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x58c (ClosureOriginalInputs1.input_40 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_40 X Y p r h) def value_11 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1499).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1499 0x590 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x590 (ClosureOriginalInputs1.input_41 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_41 X Y p r h) def value_12 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1707).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1707 0x593 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x593 (ClosureOriginalInputs1.input_42 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_42 X Y p r h) def value_13 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1734).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1734 0x6be (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x6be (ClosureOriginalInputs1.input_51 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_51 X Y p r h) def value_14 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1916).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1916 0x782 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x782 (ClosureOriginalInputs1.input_55 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_55 X Y p r h) def value_15 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x192b).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x192b 0x786 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x786 (ClosureOriginalInputs1.input_56 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_56 X Y p r h) def value_16 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1ad9).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1ad9 0x789 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x789 (ClosureOriginalInputs1.input_57 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_57 X Y p r h) def value_17 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1f46).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1f46 0x658 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x658 (ClosureOriginalInputs1.input_46 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_46 X Y p r h) def value_18 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1f5b).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1f5b 0x65c (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x65c (ClosureOriginalInputs1.input_47 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_47 X Y p r h) def value_19 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1f71).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x1f71 0x65f (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x65f (ClosureOriginalInputs1.input_48 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_48 X Y p r h) def value_20 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2ae1).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2ae1 0x528 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x528 (ClosureOriginalInputs1.input_37 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_37 X Y p r h) def value_21 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2af5).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2af5 0x52c (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x52c (ClosureOriginalInputs1.input_38 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_38 X Y p r h) def value_22 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2bcf).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2bcf 0x52f (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x52f (ClosureOriginalInputs1.input_39 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_39 X Y p r h) def value_23 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2d02).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2d02 0x4cf (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x4cf (ClosureOriginalInputs1.input_36 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_36 X Y p r h) def value_24 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2d69).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2d69 0x4c8 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x4c8 (ClosureOriginalInputs1.input_34 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_34 X Y p r h) def value_25 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2d84).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x2d84 0x4cc (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x4cc (ClosureOriginalInputs1.input_35 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_35 X Y p r h) def value_26 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x30f6).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x30f6 0x39f (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x39f (ClosureOriginalInputs1.input_26 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_26 X Y p r h) def value_27 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x3118).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x3118 0x39b (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x39b (ClosureOriginalInputs1.input_25 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_25 X Y p r h) def value_28 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x4155).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x4155 0x402 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x402 (ClosureOriginalInputs1.input_30 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_30 X Y p r h) def value_29 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x41cb).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x41cb 0x3ff (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x3ff (ClosureOriginalInputs1.input_29 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_29 X Y p r h) def value_30 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x41ed).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x41ed 0x3fb (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x3fb (ClosureOriginalInputs1.input_28 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_28 X Y p r h) def value_31 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x47be).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x47be 0x3a2 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x3a2 (ClosureOriginalInputs1.input_27 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_27 X Y p r h) def value_32 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x4993).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x4993 0x1c3 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x1c3 (ClosureOriginalInputs1.input_14 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_14 X Y p r h) def value_33 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x4bd6).b = true := by rw [alias_model ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) 0x4bd6 0x213 (ClosureAliasCheck.sound _ _ (by decide +kernel)) (by omega)] exact prefix_true X Y p r 0x213 (ClosureOriginalInputs1.input_15 X Y p r) (by omega) (by decide +kernel) (by rfl) (ClosureOriginalInputs1.raw_input_15 X Y p r h) def Good (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (i : Nat) : Prop := (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) ((records i).getD 1 0)).b = true def s0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : ∀ i : Fin 32, Good X Y p r (0+i.val) := by intro i fin_cases i · exact value_0 X Y p r h · exact value_1 X Y p r h · exact value_2 X Y p r h · exact value_3 X Y p r h · exact value_4 X Y p r h · exact value_5 X Y p r h · exact value_6 X Y p r h · exact value_7 X Y p r h · exact value_8 X Y p r h · exact value_9 X Y p r h · exact value_10 X Y p r h · exact value_11 X Y p r h · exact value_12 X Y p r h · exact value_13 X Y p r h · exact value_14 X Y p r h · exact value_15 X Y p r h · exact value_16 X Y p r h · exact value_17 X Y p r h · exact value_18 X Y p r h · exact value_19 X Y p r h · exact value_20 X Y p r h · exact value_21 X Y p r h · exact value_22 X Y p r h · exact value_23 X Y p r h · exact value_24 X Y p r h · exact value_25 X Y p r h · exact value_26 X Y p r h · exact value_27 X Y p r h · exact value_28 X Y p r h · exact value_29 X Y p r h · exact value_30 X Y p r h · exact value_31 X Y p r h def s32 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) : ∀ i : Fin 2, Good X Y p r (32+i.val) := by intro i fin_cases i · exact value_32 X Y p r h · exact value_33 X Y p r h def sound (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) (h : Bounty.ClosureRawHypothesis5 true X Y p r) (i : Nat) (hi : i < 34) : (programModel ClosureFixedWidthData1.program (ClosureInputModel.inputValuation X Y p r) ((records i).getD 1 0)).b = true := (ClosurePrefixAdapter.interval_join 0 32 34 (ClosurePrefixAdapter.interval_from_fin 0 32 (s0 X Y p r h)) (ClosurePrefixAdapter.interval_from_fin 32 2 (s32 X Y p r h))) i (Nat.zero_le i) hi end PolicyAssertedPacked1 end PolicySubmissionPart86 /- Component PolicyDepth5ClosureBridge; SHA256 2fee1d7114b20485fdeb67b4b73f5c79de3dd3641420b8295fbbafa427b78eb2. -/ section PolicySubmissionPart87 /- Both finite depth-5 contradictions, lifted to the original depth-7 hypotheses. -/ namespace Bounty open ClosureSemantics ClosureInputModel def closureRaw5_false_0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ¬ClosureRawHypothesis5 false X Y p r := by intro h apply PolicyCachedHotClosure.contradiction0 (inputValuation X Y p r) (programModel ClosureFixedWidthData0.program (inputValuation X Y p r)) (programModel_equations ClosureFixedWidthData0.program (inputValuation X Y p r)) intro i hi exact PolicyMappedAssertedChecked0.sound _ i hi (PolicyAssertedPacked0.sound X Y p r h i hi) def closureRaw5_false_1 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ¬ClosureRawHypothesis5 true X Y p r := by intro h apply PolicyCachedHotClosure.contradiction1 (inputValuation X Y p r) (programModel ClosureFixedWidthData1.program (inputValuation X Y p r)) (programModel_equations ClosureFixedWidthData1.program (inputValuation X Y p r)) intro i hi exact PolicyMappedAssertedChecked1.sound _ i hi (PolicyAssertedPacked1.sound X Y p r h i hi) def closureRaw_false_0 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ¬ClosureRawHypothesis false X Y p r := fun h => closureRaw5_false_0 X Y p r (closureRawHypothesis5_of_raw false X Y p r h) def closureRaw_false_1 (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ¬ClosureRawHypothesis true X Y p r := fun h => closureRaw5_false_1 X Y p r (closureRawHypothesis5_of_raw true X Y p r h) end Bounty end PolicySubmissionPart87 /- Component PolicyClosureMath; SHA256 9d7b36812fbb4ac8dfe45961ec13f92d1c90a901f03adc5bb5df750c6de6fcad. -/ section PolicySubmissionPart88 /- Component StateProfile; SHA256 f32ea7c4e33d95846c55792a52f76f2166e7e9921870f1694468ecc883d8c9e7 -/ section SubmissionComponent_StateProfile /- A local successful recursive choice gives the profile required at a leaf. -/ namespace Bounty def cutoffState_profile_of_local {eps : Bool} {u : ℚ} (hu : 2 ≤ u) (h : cutoffAvailable u (quotaValue eps u) 0 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) ∨ cutoffAvailable u (quotaValue eps u) 1 (cutoffState true (u / 5)) (cutoffState eps (u / 7))) : cutoffProfileValid eps (cutoffState eps u).1 u (cutoffState eps u).2 := by have hu1 : 1 ≤ u := by linarith have ha : cutoffAvailable u (quotaValue eps u) (cutoffState eps u).1 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) := by simpa only [cutoffState_of_large hu1] using cutoffCandidate_available h have hlo := (cutoffState_bounds (eps := eps) hu1).1 apply (cutoffProfileValid_iff (cutoffState_parity eps u) hu (by linarith)).mpr constructor · have hh := ha.1 rwa [← cutoffState_eq_trial hu1] at hh · have hh := cutoffTrial_size (by linarith : 0 ≤ u) ha rwa [← cutoffState_eq_trial hu1] at hh def cutoffState_normalized_profile_of_local {eps : Bool} {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) (h : cutoffAvailable (v * u) (quotaValue eps (v * u)) 0 (cutoffState true (v * u / 5)) (cutoffState eps (v * u / 7)) ∨ cutoffAvailable (v * u) (quotaValue eps (v * u)) 1 (cutoffState true (v * u / 5)) (cutoffState eps (v * u / 7))) : normalizedStateValid eps (cutoffState eps (v * u)).1 v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) ((cutoffState eps (v * u)).2 / u) := by apply (cutoffProfileValid_iff_normalizedState eps (cutoffState eps (v * u)).1 hu hv).mp rw [div_mul_cancel₀ _ (ne_of_gt hu)] exact cutoffState_profile_of_local hv h def cutoffState_normalized_lower {eps : Bool} {u v : ℚ} (hu : 0 < u) (hv : 1 ≤ v * u) : 3 * v / 4 ≤ (cutoffState eps (v * u)).2 / u := by apply (le_div_iff₀ hu).mpr have hh := (cutoffState_bounds (eps := eps) hv).1 calc (3 * v / 4) * u = 3 * (v * u) / 4 := by ring _ ≤ (cutoffState eps (v * u)).2 := hh end Bounty end SubmissionComponent_StateProfile /- Component NormalizedPairs; SHA256 b722ed568e2d9fe1651568d96404fe21ff3ddaf31fef32611d3144d35a01fe72 -/ section SubmissionComponent_NormalizedPairs /- Normalized rules with arbitrary actual child states. -/ namespace Bounty def cutoffAvailable_iff_normalized_pair {eps : Bool} {p : ℕ} (hp : p < 2) (c5 c7 : ℕ × ℚ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffAvailable (v * u) (quotaValue eps (v * u)) p c5 c7 ↔ normalizedTrialAvailable eps p c5.1 c7.1 v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) (c5.2 / u) (c7.2 / u) := by have hh := cutoffAvailable_iff_normalizedTrial (eps := eps) hp c5.1 c7.1 (c5.2 / u) (c7.2 / u) hu hv simpa only [div_mul_cancel₀ _ (ne_of_gt hu), Prod.eta] using hh def cutoffProfileTrial_normalized_pair (eps : Bool) (p : ℕ) (c5 c7 : ℕ × ℚ) {u v : ℚ} (hu : 0 < u) (hv : 2 ≤ v * u) : cutoffProfileTrial eps (v * u) p c5 c7 / u = normalizedTrialValue eps p c5.1 c7.1 v ((4 : ℚ) ^ Nat.log 4 ⌊v * u⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊v * u⌋₊ / u) ((4 : ℚ) ^ Nat.log 4 ⌊5 * (v * u)⌋₊ / u) ((3 : ℚ) ^ Nat.log 3 ⌊5 * (v * u)⌋₊ / u) (c5.2 / u) (c7.2 / u) := by have hh := cutoffProfileTrial_normalized eps p c5.1 c7.1 (c5.2 / u) (c7.2 / u) hu hv simp only [div_mul_cancel₀ _ (ne_of_gt hu), Prod.eta, cutoffDelta_normalized eps p hu hv] at hh exact hh end Bounty end SubmissionComponent_NormalizedPairs /- Component ClosureGeometry; SHA256 0a383fca754322abcb396923852fc4043b6509f8f65c8e92ca177dd03976e8fe -/ section SubmissionComponent_ClosureGeometry /- Uniform facts for the explicit thirty-six-node dependency table. -/ namespace Bounty def closureNode_v_bounds {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 36) : 0 < (closureNode k).v ∧ (closureNode k).v ≤ 1 ∧ 2 ≤ (closureNode k).v * u := by interval_cases k <;> norm_num [closureNode] <;> linarith def closureNode_v_shrink {k : ℕ} (hk0 : 0 < k) (hk : k < 36) : (closureNode k).v ≤ 1 / 5 := by interval_cases k <;> norm_num [closureNode] def closureNode_floor_lt_root {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk0 : 0 < k) (hk : k < 36) : ⌊(closureNode k).v * u⌋₊ < ⌊u⌋₊ := by have hv := closureNode_v_shrink hk0 hk have hle : (closureNode k).v * u ≤ u / 5 := by nlinarith exact (Nat.floor_mono hle).trans_lt (floor_div_lt_floor (d := 5) (by linarith) (by norm_num)) def closureNode_children {k : ℕ} (hk : k < 28) : (closureNode k).child5 < 36 ∧ (closureNode k).child7 < 36 ∧ (closureNode (closureNode k).child5).v * 5 = (closureNode k).v ∧ (closureNode (closureNode k).child7).v * 7 = (closureNode k).v := by interval_cases k <;> norm_num [closureNode] def closureNode_child_types (eps : Bool) {k : ℕ} (hk : k < 28) : closureNodeType eps (closureNode k).child5 = true ∧ closureNodeType eps (closureNode k).child7 = closureNodeType eps k := by interval_cases k <;> simp [closureNodeType, closureNode] def closureNode_leaf_iff {k : ℕ} (hk : k < 36) : (closureNode k).leaf = true ↔ 28 ≤ k := by interval_cases k <;> norm_num [closureNode] def closureNodeFour_coordinate {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 36) : (4 : ℚ) ^ Nat.log 4 ⌊(closureNode k).v * u⌋₊ / u = closureNodeFour k ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by interval_cases k · simpa only [closureNodeFour, closureNode] using closurePower4_node_0_0 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_0_1 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_1_0 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_0_2 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_1_1 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_2_0 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_0_3 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_1_2 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_2_1 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_3_0 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_0_4 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_1_3 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_2_2 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_3_1 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_4_0 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_0_5 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_1_4 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_2_3 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_3_2 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_4_1 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_5_0 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_0_6 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_1_5 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_2_4 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_3_3 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_4_2 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_5_1 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_6_0 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_0_7 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_1_6 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_2_5 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_3_4 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_4_3 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_5_2 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_6_1 hu · simpa only [closureNodeFour, closureNode] using closurePower4_node_7_0 hu def closureLossFour_coordinate {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 36) : (4 : ℚ) ^ Nat.log 4 ⌊5 * ((closureNode k).v * u)⌋₊ / u = closureLossFour k ((4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u) := by interval_cases k · have hh := closurePower4_loss_0_0 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_0_1 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_1_0 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_0_2 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_1_1 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_2_0 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_0_3 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_1_2 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_2_1 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_3_0 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_0_4 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_1_3 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_2_2 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_3_1 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_4_0 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_0_5 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_1_4 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_2_3 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_3_2 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_4_1 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_5_0 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_0_6 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_1_5 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_2_4 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_3_3 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_4_2 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_5_1 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_6_0 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_0_7 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_1_6 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_2_5 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_3_4 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_4_3 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_5_2 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_6_1 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower4_loss_7_0 hu norm_num only [closureLossFour, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh def closureNodeThree_coordinate {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 36) : (3 : ℚ) ^ Nat.log 3 ⌊(closureNode k).v * u⌋₊ / u = closureNodeThree k ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by interval_cases k · simpa only [closureNodeThree, closureNode] using closurePower3_node_0_0 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_0_1 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_1_0 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_0_2 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_1_1 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_2_0 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_0_3 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_1_2 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_2_1 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_3_0 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_0_4 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_1_3 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_2_2 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_3_1 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_4_0 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_0_5 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_1_4 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_2_3 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_3_2 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_4_1 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_5_0 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_0_6 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_1_5 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_2_4 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_3_3 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_4_2 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_5_1 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_6_0 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_0_7 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_1_6 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_2_5 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_3_4 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_4_3 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_5_2 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_6_1 hu · simpa only [closureNodeThree, closureNode] using closurePower3_node_7_0 hu def closureLossThree_coordinate {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 36) : (3 : ℚ) ^ Nat.log 3 ⌊5 * ((closureNode k).v * u)⌋₊ / u = closureLossThree k ((3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u) := by interval_cases k · have hh := closurePower3_loss_0_0 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_0_1 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_1_0 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_0_2 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_1_1 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_2_0 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_0_3 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_1_2 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_2_1 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_3_0 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_0_4 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_1_3 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_2_2 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_3_1 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_4_0 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_0_5 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_1_4 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_2_3 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_3_2 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_4_1 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_5_0 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_0_6 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_1_5 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_2_4 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_3_3 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_4_2 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_5_1 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_6_0 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_0_7 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_1_6 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_2_5 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_3_4 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_4_3 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_5_2 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_6_1 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh · have hh := closurePower3_loss_7_0 hu norm_num only [closureLossThree, closureNode, ← mul_assoc, one_mul, mul_one] at hh ⊢ exact hh end Bounty end SubmissionComponent_ClosureGeometry /- Component ClosureActual; SHA256 330a72a33df1a785353687135798a08c3d9a644dcc0c03c31c2cc912f8664182 -/ section SubmissionComponent_ClosureActual /- Interpret the finite dependency table by actual recursive cutoff states. -/ namespace Bounty noncomputable def closureActualState (eps : Bool) (u : ℚ) (k : ℕ) : ℕ × ℚ := cutoffState (closureNodeType eps k) ((closureNode k).v * u) noncomputable def closureActualPhase (eps : Bool) (u : ℚ) (k : ℕ) : Prop := (closureActualState eps u k).1 = 1 noncomputable def closureActualValue (eps : Bool) (u : ℚ) (k : ℕ) : ℚ := (closureActualState eps u k).2 / u def closureRootFour (u : ℚ) : ℚ := (4 : ℚ) ^ Nat.log 4 ⌊u⌋₊ / u def closureRootThree (u : ℚ) : ℚ := (3 : ℚ) ^ Nat.log 3 ⌊u⌋₊ / u def closureActual_parity (eps : Bool) (u : ℚ) (k : ℕ) : (closureActualState eps u k).1 < 2 := cutoffState_parity _ _ def closureActual_phase (eps : Bool) (u : ℚ) (k : ℕ) : closurePhase (closureActualPhase eps u k) = (closureActualState eps u k).1 := closurePhase_of_nat (closureActual_parity eps u k) def closureActual_child_five (eps : Bool) (u : ℚ) {k : ℕ} (hk : k < 28) : closureActualState eps u (closureNode k).child5 = cutoffState true ((closureNode k).v * u / 5) := by unfold closureActualState rw [(closureNode_child_types eps hk).1] congr 1 apply (eq_div_iff (by norm_num : (5 : ℚ) ≠ 0)).mpr calc (closureNode (closureNode k).child5).v * u * 5 = ((closureNode (closureNode k).child5).v * 5) * u := by ring _ = (closureNode k).v * u := by rw [(closureNode_children hk).2.2.1] def closureActual_child_seven (eps : Bool) (u : ℚ) {k : ℕ} (hk : k < 28) : closureActualState eps u (closureNode k).child7 = cutoffState (closureNodeType eps k) ((closureNode k).v * u / 7) := by unfold closureActualState rw [(closureNode_child_types eps hk).2] congr 1 apply (eq_div_iff (by norm_num : (7 : ℚ) ≠ 0)).mpr calc (closureNode (closureNode k).child7).v * u * 7 = ((closureNode (closureNode k).child7).v * 7) * u := by ring _ = (closureNode k).v * u := by rw [(closureNode_children hk).2.2.2] def closureActual_available {eps : Bool} {u : ℚ} (hu : 0x1921ee ≤ u) {k phase : ℕ} (hk : k < 28) (hp : phase < 2) : cutoffAvailable ((closureNode k).v * u) (quotaValue (closureNodeType eps k) ((closureNode k).v * u)) phase (cutoffState true ((closureNode k).v * u / 5)) (cutoffState (closureNodeType eps k) ((closureNode k).v * u / 7)) ↔ closureNodeAvailable eps k phase (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) := by have hk36 : k < 36 := by omega have hu0 : 0 < u := by linarith have hv := (closureNode_v_bounds hu hk36).2.2 have hh := cutoffAvailable_iff_normalized_pair (eps := closureNodeType eps k) hp (closureActualState eps u (closureNode k).child5) (closureActualState eps u (closureNode k).child7) hu0 hv rw [closureNodeFour_coordinate hu hk36, closureNodeThree_coordinate hu hk36, closureLossFour_coordinate hu hk36, closureLossThree_coordinate hu hk36] at hh simpa only [closureNodeAvailable, closureNodeTrial, closureRootFour, closureRootThree, normalizedTrialAvailable, closureActual_phase, closureActualValue, closureActual_child_five eps u hk, closureActual_child_seven eps u hk] using hh def closureActual_trial {eps : Bool} {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 28) (phase : ℕ) : closureNodeTrial eps k phase (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) = cutoffProfileTrial (closureNodeType eps k) ((closureNode k).v * u) phase (cutoffState true ((closureNode k).v * u / 5)) (cutoffState (closureNodeType eps k) ((closureNode k).v * u / 7)) / u := by have hk36 : k < 36 := by omega have hu0 : 0 < u := by linarith have hv := (closureNode_v_bounds hu hk36).2.2 have hh := cutoffProfileTrial_normalized_pair (closureNodeType eps k) phase (closureActualState eps u (closureNode k).child5) (closureActualState eps u (closureNode k).child7) hu0 hv rw [closureNodeFour_coordinate hu hk36, closureNodeThree_coordinate hu hk36, closureLossFour_coordinate hu hk36, closureLossThree_coordinate hu hk36] at hh simpa only [closureNodeTrial, closureRootFour, closureRootThree, closureActual_phase, closureActualValue, closureActual_child_five eps u hk, closureActual_child_seven eps u hk] using hh.symm end Bounty end SubmissionComponent_ClosureActual /- Component ClosureActualRules; SHA256 5f343a1defcd4fbfac1fdfde11ebdff5da92ee787c4d7374fdce3cab02466780 -/ section SubmissionComponent_ClosureActualRules /- The recursive states obey the phase, value, and leaf rules of the finite model. -/ namespace Bounty def closureActual_phase_rule {eps : Bool} {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 28) : closureActualPhase eps u k ↔ if 2 * closureNodeFour k (closureRootFour u) ≤ (closureNode k).v then closureNodeAvailable eps k 1 (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) else ¬closureNodeAvailable eps k 0 (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) := by have hk36 : k < 36 := by omega have hv := (closureNode_v_bounds hu hk36).2.2 change (cutoffState (closureNodeType eps k) ((closureNode k).v * u)).1 = 1 ↔ _ rw [cutoffState_of_large (by linarith : 1 ≤ (closureNode k).v * u), cutoffCandidate_phase_one_iff] simp only [preferred_phase_normalized (by linarith : 0 < u) (by linarith : 1 ≤ (closureNode k).v * u), closureNodeFour_coordinate hu hk36, closureActual_available hu hk (by norm_num : 0 < 2), closureActual_available hu hk (by norm_num : 1 < 2), closureRootFour] rfl def closureActual_value_rule {eps : Bool} {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 28) (ha : cutoffAvailable ((closureNode k).v * u) (quotaValue (closureNodeType eps k) ((closureNode k).v * u)) 0 (cutoffState true ((closureNode k).v * u / 5)) (cutoffState (closureNodeType eps k) ((closureNode k).v * u / 7)) ∨ cutoffAvailable ((closureNode k).v * u) (quotaValue (closureNodeType eps k) ((closureNode k).v * u)) 1 (cutoffState true ((closureNode k).v * u / 5)) (cutoffState (closureNodeType eps k) ((closureNode k).v * u / 7))) : closureActualValue eps u k = if (closureActualState eps u k).1 = 1 then closureNodeTrial eps k 1 (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) else closureNodeTrial eps k 0 (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) := by have hv := (closureNode_v_bounds hu (show k < 36 by omega)).2.2 simp only [closureActual_trial hu hk, closureActualValue, closureActualState, cutoffState_of_large (by linarith : 1 ≤ (closureNode k).v * u)] have hh := congrArg (fun r : ℚ => r / u) (cutoffCandidate_value_profile hv ha) split_ifs at hh ⊢ <;> exact hh def closureActual_valid {eps : Bool} {u : ℚ} (hu : 0x1921ee ≤ u) {k : ℕ} (hk : k < 36) (ha : cutoffAvailable ((closureNode k).v * u) (quotaValue (closureNodeType eps k) ((closureNode k).v * u)) 0 (cutoffState true ((closureNode k).v * u / 5)) (cutoffState (closureNodeType eps k) ((closureNode k).v * u / 7)) ∨ cutoffAvailable ((closureNode k).v * u) (quotaValue (closureNodeType eps k) ((closureNode k).v * u)) 1 (cutoffState true ((closureNode k).v * u / 5)) (cutoffState (closureNodeType eps k) ((closureNode k).v * u / 7))) : normalizedStateValid (closureNodeType eps k) (closureActualState eps u k).1 (closureNode k).v (closureNodeFour k (closureRootFour u)) (closureNodeThree k (closureRootThree u)) (closureLossFour k (closureRootFour u)) (closureLossThree k (closureRootThree u)) (closureActualValue eps u k) := by have hh := cutoffState_normalized_profile_of_local (by linarith : 0 < u) (closureNode_v_bounds hu hk).2.2 ha rw [closureNodeFour_coordinate hu hk, closureNodeThree_coordinate hu hk, closureLossFour_coordinate hu hk, closureLossThree_coordinate hu hk] at hh exact hh end Bounty end SubmissionComponent_ClosureActualRules /- Component ClosureModel; SHA256 5c062851ec37e77d6a6dffa086e39111babd40f2acafea69306a9ab28482a639 -/ section SubmissionComponent_ClosureModel /- A hypothetical recursive failure produces the finite model ruled out by the certificates. -/ namespace Bounty def cutoffLocalAvailable (eps : Bool) (u : ℚ) : Prop := cutoffAvailable u (quotaValue eps u) 0 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) ∨ cutoffAvailable u (quotaValue eps u) 1 (cutoffState true (u / 5)) (cutoffState eps (u / 7)) def cutoffInductionHypothesis (u : ℚ) : Prop := ∀ eps v, 1 ≤ v → ⌊v⌋₊ < ⌊u⌋₊ → cutoffLocalAvailable eps v def closureActual_raw_of_failure {eps : Bool} {u : ℚ} (hu : 0x1921ee ≤ u) (hi : cutoffInductionHypothesis u) (hf : ¬cutoffLocalAvailable eps u) : ClosureRawHypothesis eps (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) := by classical have hu0 : 0 < u := by linarith have hu1 : 1 ≤ u := by linarith have hx : 1 / 4 < closureRootFour u ∧ closureRootFour u ≤ 1 := by simpa only [Nat.cast_ofNat, closureRootFour] using normalized_power_bounds (b := 4) (by norm_num) hu1 have hy : 1 / 3 < closureRootThree u ∧ closureRootThree u ≤ 1 := by simpa only [Nat.cast_ofNat, closureRootThree] using normalized_power_bounds (b := 3) (by norm_num) hu1 refine ⟨hx.1, hx.2, hy.1, hy.2, ?_⟩ intro k hk by_cases hk0 : k = 0 · subst k change ¬closureNodeAvailable eps 0 0 (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) ∧ ¬closureNodeAvailable eps 0 1 (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) have h0 := closureActual_available (eps := eps) hu (k := 0) (phase := 0) (by norm_num) (by norm_num) have h1 := closureActual_available (eps := eps) hu (k := 0) (phase := 1) (by norm_num) (by norm_num) simp only [closureNodeType, closureNode, ↓reduceIte, one_mul] at h0 h1 exact ⟨fun h => hf (Or.inl (h0.mpr h)), fun h => hf (Or.inr (h1.mpr h))⟩ · have hv := (closureNode_v_bounds hu hk).2.2 have ha := hi (closureNodeType eps k) ((closureNode k).v * u) (by linarith) (closureNode_floor_lt_root hu (by omega) hk) by_cases hleaf : (closureNode k).leaf = true · simp only [closureNodeConstraint, if_neg hk0, if_pos hleaf] refine ⟨cutoffState_normalized_lower hu0 (by linarith : 1 ≤ (closureNode k).v * u), ?_⟩ have hvld := closureActual_valid hu hk ha by_cases hp : closureActualPhase eps u k · rw [if_pos hp] have hp' : (closureActualState eps u k).1 = 1 := hp simpa only [hp'] using hvld · rw [if_neg hp] have hp' : (closureActualState eps u k).1 ≠ 1 := hp have hb := closureActual_parity eps u k have hz : (closureActualState eps u k).1 = 0 := by omega simpa only [hz] using hvld · have hk28 : k < 28 := by have hh : ¬28 ≤ k := fun h => hleaf ((closureNode_leaf_iff hk).mpr h) omega simp only [closureNodeConstraint, if_neg hk0, if_neg hleaf] refine ⟨?_, closureActual_phase_rule hu hk28, ?_⟩ · exact ha.imp (closureActual_available hu hk28 (by norm_num : 0 < 2)).mp (closureActual_available hu hk28 (by norm_num : 1 < 2)).mp · have hh := closureActual_value_rule hu hk28 ha by_cases hp : closureActualPhase eps u k · rw [if_pos hp] have hp' : (closureActualState eps u k).1 = 1 := hp simpa only [if_pos hp'] using hh · rw [if_neg hp] have hp' : (closureActualState eps u k).1 ≠ 1 := hp simpa only [if_neg hp'] using hh end Bounty end SubmissionComponent_ClosureModel /- Component ClosureInduction; SHA256 07be9ab9910c2a6d5134e25d9737358668863287c82893e314915b4c931c7444 -/ section SubmissionComponent_ClosureInduction /- Strong induction reduces universal availability to the two finite closure contradictions. -/ namespace Bounty def cutoffAvailability_of_closure (H : ∀ eps X Y p r, ¬ClosureRawHypothesis eps X Y p r) : CutoffAvailability := by have all : ∀ n : ℕ, ∀ eps u, ⌊u⌋₊ = n → 1 ≤ u → cutoffLocalAvailable eps u := by intro n induction n using Nat.strong_induction_on with | h n ih => intro eps u hn hu1 by_cases hb : u < 0x1921ee · exact cutoffAvailabilityBelow_base eps u hu1 hb · have hu : 0x1921ee ≤ u := le_of_not_gt hb by_contra hf have hi : cutoffInductionHypothesis u := by intro eps' v hv hsmall exact ih ⌊v⌋₊ (by omega) eps' v rfl hv exact H eps (closureRootFour u) (closureRootThree u) (closureActualPhase eps u) (closureActualValue eps u) (closureActual_raw_of_failure hu hi hf) intro eps u hu exact all ⌊u⌋₊ eps u rfl hu end Bounty end SubmissionComponent_ClosureInduction /- Component GlobalExact; SHA256 0bd823ef2311337b330cc11bab8cddfe89bbd5255a95713396924e76bfb38535 -/ section SubmissionComponent_GlobalExact /- Universal availability and the exact extremal formula, from both checked finite contradictions. -/ namespace Bounty def closureRaw_false (eps : Bool) (X Y : ℚ) (p : ℕ → Prop) (r : ℕ → ℚ) : ¬ClosureRawHypothesis eps X Y p r := by cases eps with | false => exact closureRaw_false_0 X Y p r | true => exact closureRaw_false_1 X Y p r def cutoffAvailability : CutoffAvailability := cutoffAvailability_of_closure closureRaw_false def f_eq_globalUpper (n : ℕ) : Erdos1062.f n = globalUpper n := f_eq_globalUpper_of_availability cutoffAvailability n end Bounty end SubmissionComponent_GlobalExact end PolicySubmissionPart88 /- Component PolicyMathDensity; SHA256 eeaf1f08fd54d7d7665239bb4f60425bc6e1891adf1f02d57e55bdd2cce633df. -/ section PolicySubmissionPart89 /- Standalone proof of an integer polynomial index lemma. This does not prove the Subspace Theorem or the Erdős1062(ii) target. -/ /- Component: PolynomialDegreeEchelon; SHA256 506fd270ae0af8512f5b657399384081a522482e4715dcb43bcef2af75b92760 -/ section RothComponent_PolynomialDegreeEchelon /- A constant invertible row transformation makes polynomial degrees distinct. -/ open Polynomial namespace Bounty noncomputable section def polynomialRowCombination {k : ℕ} (f : Fin k → ℚ[X]) (A : Matrix (Fin k) (Fin k) ℚ) (i : Fin k) : ℚ[X] := ∑ j, A i j • f j def polynomialRowCombination_ne_zero {k : ℕ} (f : Fin k → ℚ[X]) (hf : LinearIndependent ℚ f) (A : Matrix (Fin k) (Fin k) ℚ) (hA : A.det ≠ 0) (i : Fin k) : polynomialRowCombination f A i ≠ 0 := by intro hi have hrow : ∀ j, A i j = 0 := Fintype.linearIndependent_iff.mp hf (A i) hi exact hA (Matrix.det_eq_zero_of_row_eq_zero i hrow) def polynomialRowCombination_updateRow {k : ℕ} (f : Fin k → ℚ[X]) (A : Matrix (Fin k) (Fin k) ℚ) (i j : Fin k) (c : ℚ) : polynomialRowCombination f (A.updateRow i (A i + c • A j)) i = polynomialRowCombination f A i + c • polynomialRowCombination f A j := by simp only [polynomialRowCombination, Matrix.updateRow_self, Pi.add_apply, Pi.smul_apply, add_smul, Finset.sum_add_distrib, Finset.smul_sum, smul_smul, smul_eq_mul] /-- Cancel the leading coefficient of two equal-degree polynomials. A nonzero result has strictly smaller natural degree, including the degree-zero edge case. -/ def polynomial_natDegree_cancel_lead {p q : ℚ[X]} (hq : q ≠ 0) (hd : p.natDegree = q.natDegree) (hnew : p + (-(p.leadingCoeff / q.leadingCoeff)) • q ≠ 0) : (p + (-(p.leadingCoeff / q.leadingCoeff)) • q).natDegree < p.natDegree := by let c : ℚ := -(p.leadingCoeff / q.leadingCoeff) change (p + c • q).natDegree < p.natDegree have hle : (p + c • q).natDegree ≤ p.natDegree := by apply (Polynomial.natDegree_add_le _ _).trans apply max_le le_rfl exact (Polynomial.natDegree_smul_le c q).trans hd.symm.le have hc : (p + c • q).coeff p.natDegree = 0 := by rw [Polynomial.coeff_add, Polynomial.coeff_smul, Polynomial.coeff_natDegree, hd, Polynomial.coeff_natDegree] simp only [c, smul_eq_mul] field_simp [Polynomial.leadingCoeff_ne_zero.mpr hq] ring have hne : (p + c • q).natDegree ≠ p.natDegree := by intro he apply Polynomial.leadingCoeff_ne_zero.mpr hnew change (p + c • q).coeff (p + c • q).natDegree = 0 rw [he] exact hc omega /-- Every finite independent rational polynomial family has an invertible constant change of basis whose resulting polynomials have pairwise distinct natural degrees. The matrix acts on rows: `g i = ∑ j, A i j • f j`. -/ def polynomial_degree_echelon {k : ℕ} (f : Fin k → ℚ[X]) (hf : LinearIndependent ℚ f) : ∃ A : Matrix (Fin k) (Fin k) ℚ, ∃ g : Fin k → ℚ[X], A.det ≠ 0 ∧ (∀ i, g i = ∑ j, A i j • f j) ∧ (∀ i, g i ≠ 0) ∧ Function.Injective (fun i => (g i).natDegree) := by classical let measure : Matrix (Fin k) (Fin k) ℚ → ℕ := fun A => ∑ i, (polynomialRowCombination f A i).natDegree have hex : ∃ n : ℕ, ∃ A : Matrix (Fin k) (Fin k) ℚ, A.det = 1 ∧ measure A = n := ⟨measure 1, 1, by simp, rfl⟩ obtain ⟨A, hA, hmeasure⟩ := Nat.find_spec hex have hmin (B : Matrix (Fin k) (Fin k) ℚ) (hB : B.det = 1) : measure A ≤ measure B := by rw [hmeasure] exact Nat.find_min' hex ⟨B, hB, rfl⟩ have hA0 : A.det ≠ 0 := by rw [hA]; norm_num have hnonzero := polynomialRowCombination_ne_zero f hf A hA0 refine ⟨A, polynomialRowCombination f A, hA0, fun _ => rfl, hnonzero, ?_⟩ intro i j hd by_contra hij let c : ℚ := -((polynomialRowCombination f A i).leadingCoeff / (polynomialRowCombination f A j).leadingCoeff) let B : Matrix (Fin k) (Fin k) ℚ := A.updateRow i (A i + c • A j) have hB : B.det = 1 := (Matrix.det_updateRow_add_smul_self A hij c).trans hA have hBi : polynomialRowCombination f B i = polynomialRowCombination f A i + c • polynomialRowCombination f A j := polynomialRowCombination_updateRow f A i j c have hBnz : polynomialRowCombination f B i ≠ 0 := polynomialRowCombination_ne_zero f hf B (by rw [hB]; norm_num) i have hlt : (polynomialRowCombination f B i).natDegree < (polynomialRowCombination f A i).natDegree := by rw [hBi] at hBnz ⊢ exact polynomial_natDegree_cancel_lead (hnonzero j) hd hBnz have hBt (t : Fin k) (hti : t ≠ i) : polynomialRowCombination f B t = polynomialRowCombination f A t := by simp only [polynomialRowCombination, B, Matrix.updateRow_ne hti] have hdrop : measure B < measure A := by apply Finset.sum_lt_sum · intro t ht by_cases hti : t = i · subst t exact hlt.le · rw [hBt t hti] · exact ⟨i, Finset.mem_univ i, hlt⟩ exact (not_lt_of_ge (hmin B hB)) hdrop end end Bounty end RothComponent_PolynomialDegreeEchelon /- Component: UnivariateWronskian; SHA256 d13c46c193a9864197f28c3946420f6b1f105d08f4a4e66bde06ff2cb78f0c8f -/ section RothComponent_UnivariateWronskian /- Arbitrary finite polynomial Wronskians over the rationals. -/ noncomputable section open Polynomial Matrix Finset namespace Bounty def polynomialWronskian {n : ℕ} (f : Fin n → ℚ[X]) : ℚ[X] := Matrix.det (fun i j : Fin n => Polynomial.hasseDeriv i.val (f j)) def choose_matrix_det_ne_zero {n : ℕ} (d : Fin n → ℕ) (hd : Function.Injective d) : Matrix.det (fun i j : Fin n => (Nat.choose (d j) i.val : ℚ)) ≠ 0 := by have hv : Function.Injective (fun i : Fin n => (d i : ℚ)) := by intro i j hij apply hd change (d i : ℚ) = (d j : ℚ) at hij exact_mod_cast hij have hvdet := Matrix.det_vandermonde_ne_zero_iff.mpr hv have heval := Matrix.det_eval_matrixOfPolynomials_eq_det_vandermonde (fun i : Fin n => (d i : ℚ)) (fun j : Fin n => descPochhammer ℚ j.val) (fun j => descPochhammer_natDegree ℚ j.val) (fun j => monic_descPochhammer ℚ j.val) have hentry (i j : Fin n) : (descPochhammer ℚ j.val).eval (d i : ℚ) = (Nat.factorial j.val : ℚ) * (Nat.choose (d i) j.val : ℚ) := by rw [descPochhammer_eval_eq_descFactorial] exact_mod_cast Nat.descFactorial_eq_factorial_mul_choose (d i) j.val have hdet := Matrix.det_mul_row (fun j : Fin n => (Nat.factorial j.val : ℚ)) (fun i j : Fin n => (Nat.choose (d i) j.val : ℚ)) have heq : (Matrix.of fun i j : Fin n => (descPochhammer ℚ j.val).eval (d i : ℚ)) = (Matrix.of fun i j : Fin n => (Nat.factorial j.val : ℚ) * (Nat.choose (d i) j.val : ℚ)) := by ext i j exact hentry i j have hnot : Matrix.det (fun i j : Fin n => (Nat.choose (d i) j.val : ℚ)) ≠ 0 := by intro hzero apply hvdet rw [heval, heq, hdet, hzero, mul_zero] change (Matrix.transpose (fun i j : Fin n => (Nat.choose (d i) j.val : ℚ))).det ≠ 0 erw [Matrix.det_transpose] exact hnot def shifted_hasse_coeff (p : ℚ[X]) (i k : ℕ) : (X ^ i * Polynomial.hasseDeriv i p).coeff k = (Nat.choose k i : ℚ) * p.coeff k := by by_cases hik : i ≤ k · rw [Polynomial.coeff_X_pow_mul', if_pos hik, Polynomial.hasseDeriv_coeff, Nat.sub_add_cancel hik] · rw [Polynomial.coeff_X_pow_mul', if_neg hik, Nat.choose_eq_zero_of_lt (Nat.lt_of_not_ge hik)] simp def shifted_hasse_natDegree_le (p : ℚ[X]) (i : ℕ) : (X ^ i * Polynomial.hasseDeriv i p).natDegree ≤ p.natDegree := by apply Polynomial.natDegree_le_iff_coeff_eq_zero.mpr intro k hk rw [shifted_hasse_coeff, Polynomial.coeff_eq_zero_of_natDegree_lt hk, mul_zero] def coeff_prod_sum_of_natDegree_le {ι : Type*} [DecidableEq ι] (s : Finset ι) (f : ι → ℚ[X]) (d : ι → ℕ) (hd : ∀ i ∈ s, (f i).natDegree ≤ d i) : (∏ i ∈ s, f i).coeff (∑ i ∈ s, d i) = ∏ i ∈ s, (f i).coeff (d i) := by induction s using Finset.induction_on with | empty => simp | @insert a s ha ih => have hds : ∀ i ∈ s, (f i).natDegree ≤ d i := fun i hi => hd i (Finset.mem_insert_of_mem hi) have hprod : (∏ i ∈ s, f i).natDegree ≤ ∑ i ∈ s, d i := by exact (Polynomial.natDegree_prod_le _ _).trans (Finset.sum_le_sum hds) rw [Finset.prod_insert ha, Finset.sum_insert ha, Polynomial.coeff_mul_add_eq_of_natDegree_le (hd a (Finset.mem_insert_self _ _)) hprod, ih hds, Finset.prod_insert ha] def coeff_det_sum_of_column_natDegree_le {n : ℕ} (A : Matrix (Fin n) (Fin n) ℚ[X]) (d : Fin n → ℕ) (hd : ∀ i j, (A i j).natDegree ≤ d j) : A.det.coeff (∑ j, d j) = Matrix.det (fun i j => (A i j).coeff (d j)) := by classical erw [Matrix.det_apply, Matrix.det_apply] simp only [Polynomial.finsetSum_coeff, Polynomial.coeff_smul] apply Finset.sum_congr rfl intro σ hσ congr 1 exact coeff_prod_sum_of_natDegree_le Finset.univ (fun j => A (σ j) j) d (fun j _ => hd (σ j) j) def polynomialWronskian_ne_zero_of_injective_natDegree {n : ℕ} (f : Fin n → ℚ[X]) (hf : ∀ j, f j ≠ 0) (hd : Function.Injective (fun j => (f j).natDegree)) : polynomialWronskian f ≠ 0 := by classical let A : Matrix (Fin n) (Fin n) ℚ[X] := fun i j => X ^ i.val * Polynomial.hasseDeriv i.val (f j) have hAdeg : ∀ i j, (A i j).natDegree ≤ (f j).natDegree := fun i j => shifted_hasse_natDegree_le (f j) i.val have hcoeff := coeff_det_sum_of_column_natDegree_le A (fun j => (f j).natDegree) hAdeg have hentry (i j : Fin n) : (A i j).coeff (f j).natDegree = (f j).leadingCoeff * (Nat.choose (f j).natDegree i.val : ℚ) := by change (X ^ i.val * Polynomial.hasseDeriv i.val (f j)).coeff (f j).natDegree = _ rw [shifted_hasse_coeff, Polynomial.coeff_natDegree, mul_comm] have hmatrix : (fun i j : Fin n => (A i j).coeff (f j).natDegree) = (Matrix.of fun i j : Fin n => (f j).leadingCoeff * (Nat.choose (f j).natDegree i.val : ℚ)) := by funext i j exact hentry i j rw [hmatrix] at hcoeff have hcoeff := hcoeff.trans (Matrix.det_mul_row (fun j : Fin n => (f j).leadingCoeff) (fun i j : Fin n => (Nat.choose (f j).natDegree i.val : ℚ))) have hcoeff_ne : A.det.coeff (∑ j, (f j).natDegree) ≠ 0 := by rw [hcoeff] apply mul_ne_zero · exact Finset.prod_ne_zero_iff.mpr fun j _ => Polynomial.leadingCoeff_ne_zero.mpr (hf j) · exact choose_matrix_det_ne_zero (fun j => (f j).natDegree) hd have hA : A.det ≠ 0 := by intro hzero exact hcoeff_ne (by rw [hzero, Polynomial.coeff_zero]) have hscale : A.det = (∏ i : Fin n, (X : ℚ[X]) ^ i.val) * polynomialWronskian f := by exact Matrix.det_mul_column (fun i : Fin n => (X : ℚ[X]) ^ i.val) (fun i j : Fin n => Polynomial.hasseDeriv i.val (f j)) intro hzero apply hA rw [hscale, hzero, mul_zero] def polynomialWronskian_sum_smul {n : ℕ} (f g : Fin n → ℚ[X]) (A : Matrix (Fin n) (Fin n) ℚ) (hg : ∀ i, g i = ∑ j, A i j • f j) : polynomialWronskian g = polynomialWronskian f * Polynomial.C A.det := by classical have hmatrix : (fun i j : Fin n => Polynomial.hasseDeriv i.val (g j)) = (Matrix.of fun i j : Fin n => Polynomial.hasseDeriv i.val (f j)) * Polynomial.C.mapMatrix A.transpose := by funext i j change Polynomial.hasseDeriv i.val (g j) = ∑ k, Polynomial.hasseDeriv i.val (f k) * Polynomial.C (A j k) rw [hg j, map_sum] apply Finset.sum_congr rfl intro k hk rw [map_smul, Polynomial.smul_eq_C_mul, mul_comm] unfold polynomialWronskian rw [hmatrix, Matrix.det_mul, ← Polynomial.C.map_det, Matrix.det_transpose] rfl def polynomialWronskian_ne_zero {n : ℕ} (f : Fin n → ℚ[X]) (hf : LinearIndependent ℚ f) : polynomialWronskian f ≠ 0 := by obtain ⟨A, g, _, hg, hgne, hdeg⟩ := polynomial_degree_echelon f hf have hgnz := polynomialWronskian_ne_zero_of_injective_natDegree g hgne hdeg intro hzero apply hgnz rw [polynomialWronskian_sum_smul f g A hg, hzero, zero_mul] def iterated_derivative_matrix_det_ne_zero {n : ℕ} (f : Fin n → ℚ[X]) (hf : LinearIndependent ℚ f) : Matrix.det (fun i j : Fin n => (Polynomial.derivative^[i.val]) (f j)) ≠ 0 := by classical have hentry (i j : Fin n) : (Polynomial.derivative^[i.val]) (f j) = Polynomial.C (Nat.factorial i.val : ℚ) * Polynomial.hasseDeriv i.val (f j) := by rw [← Polynomial.factorial_smul_hasseDeriv] change Nat.factorial i.val • Polynomial.hasseDeriv i.val (f j) = _ simp only [nsmul_eq_mul, map_natCast] have hmatrix : (fun i j : Fin n => (Polynomial.derivative^[i.val]) (f j)) = (Matrix.of fun i j : Fin n => Polynomial.C (Nat.factorial i.val : ℚ) * Polynomial.hasseDeriv i.val (f j)) := by funext i j exact hentry i j erw [hmatrix, Matrix.det_mul_column] apply mul_ne_zero · apply Finset.prod_ne_zero_iff.mpr intro i hi exact Polynomial.C_ne_zero.mpr (by exact_mod_cast Nat.factorial_ne_zero i.val) · exact polynomialWronskian_ne_zero f hf end Bounty end end RothComponent_UnivariateWronskian /- Component: PolynomialKronecker; SHA256 3bcc5c80babd01f3df4f7edbb38072ba6017b49dcd8679b5734ed98cb90a582d -/ section RothComponent_PolynomialKronecker /- Kronecker substitution is injective on a bounded box of monomial exponents. -/ open Polynomial namespace Bounty noncomputable section def kroneckerExponent {m : ℕ} (M : ℕ) (e : Fin m →₀ ℕ) : ℕ := ∑ j, e j * M ^ j.val def polynomialKronecker (m M : ℕ) : MvPolynomial (Fin m) ℚ →ₐ[ℚ] ℚ[X] := MvPolynomial.aeval fun j => Polynomial.X ^ (M ^ j.val) def KroneckerBound {m : ℕ} (M : ℕ) (p : MvPolynomial (Fin m) ℚ) : Prop := ∀ e ∈ p.support, ∀ j, e j < M def kroneckerExponent_injective_on_digits {m M : ℕ} (hM : 1 < M) {e v : Fin m →₀ ℕ} (he : ∀ j, e j < M) (hv : ∀ j, v j < M) (h : kroneckerExponent M e = kroneckerExponent M v) : e = v := by refine Finsupp.ext <| congrFun <| List.ofFn_inj.mp ?_ apply Nat.ofDigits_inj_of_len_eq hM (by simp) · intro a ha obtain ⟨j, rfl⟩ := List.mem_ofFn.mp ha exact he j · intro a ha obtain ⟨j, rfl⟩ := List.mem_ofFn.mp ha exact hv j · simpa only [Nat.ofDigits_eq_sum_mapIdx, List.mapIdx_eq_ofFn, List.get_ofFn, List.length_ofFn, Fin.val_cast, List.sum_ofFn, kroneckerExponent] using! h def polynomialKronecker_monomial {m : ℕ} (M : ℕ) (e : Fin m →₀ ℕ) (a : ℚ) : polynomialKronecker m M (MvPolynomial.monomial e a) = Polynomial.monomial (kroneckerExponent M e) a := by rw [polynomialKronecker, MvPolynomial.aeval_monomial] rw [Finsupp.prod_fintype _ _ (fun _ => pow_zero _)] simp only [← pow_mul, Finset.prod_pow_eq_pow_sum, Polynomial.algebraMap_eq, Polynomial.C_mul_X_pow_eq_monomial] congr 1 simp only [kroneckerExponent, mul_comm] /-- On bounded support, the original coefficient is recovered at its encoded degree. -/ def polynomialKronecker_coeff {m M : ℕ} (hM : 1 < M) (p : MvPolynomial (Fin m) ℚ) (hp : KroneckerBound M p) (e : Fin m →₀ ℕ) (he : e ∈ p.support) : (polynomialKronecker m M p).coeff (kroneckerExponent M e) = MvPolynomial.coeff e p := by classical nth_rw 1 [MvPolynomial.as_sum p] rw [map_sum] simp only [polynomialKronecker_monomial, Polynomial.finsetSum_coeff] rw [Finset.sum_eq_single e] · exact Polynomial.coeff_monomial_same _ _ · intro v hv hve apply Polynomial.coeff_monomial_of_ne intro hh exact hve (kroneckerExponent_injective_on_digits hM (hp v hv) (hp e he) hh.symm) · exact fun hnot => False.elim (hnot he) def polynomialKronecker_eq_zero_iff {m M : ℕ} (hM : 1 < M) (p : MvPolynomial (Fin m) ℚ) (hp : KroneckerBound M p) : polynomialKronecker m M p = 0 ↔ p = 0 := by constructor · intro hzero by_contra hpzero obtain ⟨e, he⟩ := MvPolynomial.support_nonempty.mpr hpzero have hh := polynomialKronecker_coeff hM p hp e he rw [hzero, Polynomial.coeff_zero] at hh exact (MvPolynomial.mem_support_iff.mp he) hh.symm · rintro rfl exact map_zero _ def kroneckerBound_linearCombination {m k M : ℕ} (f : Fin k → MvPolynomial (Fin m) ℚ) (hf : ∀ i, KroneckerBound M (f i)) (c : Fin k → ℚ) : KroneckerBound M (∑ i, c i • f i) := by classical intro e he j obtain ⟨i, hi, hei⟩ := Finset.mem_biUnion.mp (MvPolynomial.support_sum he) exact hf i e (MvPolynomial.support_smul hei) j def polynomialKronecker_linearIndependent {m k M : ℕ} (hM : 1 < M) (f : Fin k → MvPolynomial (Fin m) ℚ) (hf : LinearIndependent ℚ f) (hbound : ∀ i, KroneckerBound M (f i)) : LinearIndependent ℚ (fun i => polynomialKronecker m M (f i)) := by apply Fintype.linearIndependent_iff.mpr intro c hc i have hmap : polynomialKronecker m M (∑ j, c j • f j) = 0 := by simpa only [map_sum, map_smul] using hc have hzero := (polynomialKronecker_eq_zero_iff hM _ (kroneckerBound_linearCombination f hbound c)).mp hmap exact Fintype.linearIndependent_iff.mp hf c hzero i /-- A common base can be chosen before taking any linear combinations. -/ def exists_polynomialKronecker_linearIndependent {m k : ℕ} (f : Fin k → MvPolynomial (Fin m) ℚ) (hf : LinearIndependent ℚ f) : ∃ M : ℕ, 2 ≤ M ∧ (∀ i, KroneckerBound M (f i)) ∧ LinearIndependent ℚ (fun i => polynomialKronecker m M (f i)) := by let M : ℕ := 2 + ∑ i, (f i).totalDegree have hM : 2 ≤ M := by dsimp only [M]; omega have hb (i : Fin k) : KroneckerBound M (f i) := by intro e he j have hi : (f i).totalDegree ≤ ∑ l, (f l).totalDegree := Finset.single_le_sum (f := fun l : Fin k => (f l).totalDegree) (fun _ _ => Nat.zero_le _) (Finset.mem_univ i) have hj := (MvPolynomial.monomial_le_degreeOf j he).trans (MvPolynomial.degreeOf_le_totalDegree (f i) j) dsimp only [M] omega exact ⟨M, hM, hb, polynomialKronecker_linearIndependent (by omega) f hf hb⟩ end end Bounty end RothComponent_PolynomialKronecker /- Component: WeightedPolynomialIndex; SHA256 e4a7e147839dcc158d4ca744ea00bea9e0820af99684b92047421d25752a2c12 -/ section RothComponent_WeightedPolynomialIndex /- Weighted Taylor orders of rational multivariate polynomials. The polynomial embedding into formal power series preserves every coefficient, allowing the existing weighted-order domain theorem to supply product additivity. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I : Type*} /-- Translation by the rational tuple `β`, so its coefficients are Taylor coefficients. -/ def weightedTaylor (β : I → ℚ) : MvPolynomial I ℚ →+* MvPolynomial I ℚ := MvPolynomial.eval₂Hom MvPolynomial.C (fun i => MvPolynomial.X i + MvPolynomial.C (β i)) def weightedTaylor_C (β : I → ℚ) (a : ℚ) : weightedTaylor β (MvPolynomial.C a) = MvPolynomial.C a := by simp [weightedTaylor] def weightedTaylor_X (β : I → ℚ) (i : I) : weightedTaylor β (MvPolynomial.X i) = MvPolynomial.X i + MvPolynomial.C (β i) := by simp [weightedTaylor] def weightedTaylor_comp (β γ : I → ℚ) (p : MvPolynomial I ℚ) : weightedTaylor β (weightedTaylor γ p) = weightedTaylor (β + γ) p := by induction p using MvPolynomial.induction_on with | C a => simp [weightedTaylor_C] | add p q hp hq => simp [map_add, hp, hq] | mul_X p i hp => simp [map_mul, map_add, hp, Pi.add_apply, add_assoc, weightedTaylor_X, weightedTaylor_C] def weightedTaylor_zero (p : MvPolynomial I ℚ) : weightedTaylor 0 p = p := by induction p using MvPolynomial.induction_on with | C a => simp [weightedTaylor_C] | add p q hp hq => simp [map_add, hp, hq] | mul_X p i hp => simp [map_mul, hp, weightedTaylor_X] def weightedTaylor_injective (β : I → ℚ) : Function.Injective (weightedTaylor β) := by intro p q h have hh := congrArg (weightedTaylor (-β)) h simpa only [weightedTaylor_comp, neg_add_cancel, weightedTaylor_zero] using hh def weightedTaylor_eq_zero (β : I → ℚ) (p : MvPolynomial I ℚ) : weightedTaylor β p = 0 ↔ p = 0 := (weightedTaylor_injective β).eq_iff' (map_zero _) /-- Minimum natural weight in the support, with value infinity for the zero polynomial. The laws below hold even for weights zero; positive Roth weights are a special case. -/ def weightedPolynomialOrder (w : I → ℕ) (p : MvPolynomial I ℚ) : ℕ∞ := MvPowerSeries.weightedOrder w (p : MvPowerSeries I ℚ) /-- The weighted Taylor-support index at `β`. -/ def weightedPolynomialIndex (w : I → ℕ) (β : I → ℚ) (p : MvPolynomial I ℚ) : ℕ∞ := weightedPolynomialOrder w (weightedTaylor β p) def weightedPolynomialOrder_eq_top (w : I → ℕ) (p : MvPolynomial I ℚ) : weightedPolynomialOrder w p = ⊤ ↔ p = 0 := by simp [weightedPolynomialOrder, MvPolynomial.coe_eq_zero_iff] def weightedPolynomialIndex_eq_top (w : I → ℕ) (β : I → ℚ) (p : MvPolynomial I ℚ) : weightedPolynomialIndex w β p = ⊤ ↔ p = 0 := by simp [weightedPolynomialIndex, weightedPolynomialOrder_eq_top, weightedTaylor_eq_zero] def weightedPolynomialIndex_finite (w : I → ℕ) (β : I → ℚ) {p : MvPolynomial I ℚ} (hp : p ≠ 0) : weightedPolynomialIndex w β p < ⊤ := by exact lt_top_iff_ne_top.mpr (fun h => hp ((weightedPolynomialIndex_eq_top w β p).mp h)) def weightedPolynomialOrder_le_of_coeff (w : I → ℕ) {p : MvPolynomial I ℚ} {d : I →₀ ℕ} (hd : MvPolynomial.coeff d p ≠ 0) : weightedPolynomialOrder w p ≤ (Finsupp.weight w d : ℕ∞) := by exact MvPowerSeries.weightedOrder_le w (by simpa only [MvPolynomial.coeff_coe] using hd) def weightedPolynomialOrder_le_iff (w : I → ℕ) (p : MvPolynomial I ℚ) (n : ℕ∞) : n ≤ weightedPolynomialOrder w p ↔ ∀ d, MvPolynomial.coeff d p ≠ 0 → n ≤ (Finsupp.weight w d : ℕ∞) := by constructor · intro hn d hd exact hn.trans (weightedPolynomialOrder_le_of_coeff w hd) · intro h apply MvPowerSeries.le_weightedOrder w intro d hd change MvPolynomial.coeff d p = 0 by_contra hc exact (not_le_of_gt hd) (h d hc) def weightedPolynomialOrder_attained (w : I → ℕ) {p : MvPolynomial I ℚ} (hp : p ≠ 0) : ∃ d, MvPolynomial.coeff d p ≠ 0 ∧ (Finsupp.weight w d : ℕ∞) = weightedPolynomialOrder w p := by have hp' : (p : MvPowerSeries I ℚ) ≠ 0 := by intro hz apply hp apply MvPolynomial.coe_injective I ℚ exact hz simpa only [MvPolynomial.coeff_coe, weightedPolynomialOrder] using MvPowerSeries.exists_coeff_ne_zero_and_weightedOrder w ((MvPowerSeries.ne_zero_iff_weightedOrder_finite w).mp hp') def weightedPolynomialIndex_attained (w : I → ℕ) (β : I → ℚ) {p : MvPolynomial I ℚ} (hp : p ≠ 0) : ∃ d ∈ (weightedTaylor β p).support, (Finsupp.weight w d : ℕ∞) = weightedPolynomialIndex w β p := by simpa only [MvPolynomial.mem_support_iff, weightedPolynomialIndex] using weightedPolynomialOrder_attained w (show weightedTaylor β p ≠ 0 by exact fun hz => hp ((weightedTaylor_eq_zero β p).mp hz)) def weightedPolynomialOrder_mul (w : I → ℕ) (p q : MvPolynomial I ℚ) : weightedPolynomialOrder w (p * q) = weightedPolynomialOrder w p + weightedPolynomialOrder w q := by simp only [weightedPolynomialOrder, MvPolynomial.coe_mul, MvPowerSeries.weightedOrder_mul] def weightedPolynomialIndex_mul (w : I → ℕ) (β : I → ℚ) (p q : MvPolynomial I ℚ) : weightedPolynomialIndex w β (p * q) = weightedPolynomialIndex w β p + weightedPolynomialIndex w β q := by simp only [weightedPolynomialIndex, map_mul, weightedPolynomialOrder_mul] def weightedPolynomialOrder_add (w : I → ℕ) (p q : MvPolynomial I ℚ) : min (weightedPolynomialOrder w p) (weightedPolynomialOrder w q) ≤ weightedPolynomialOrder w (p + q) := by exact MvPowerSeries.min_weightedOrder_le_add w (f := (p : MvPowerSeries I ℚ)) (g := (q : MvPowerSeries I ℚ)) def weightedPolynomialIndex_add (w : I → ℕ) (β : I → ℚ) (p q : MvPolynomial I ℚ) : min (weightedPolynomialIndex w β p) (weightedPolynomialIndex w β q) ≤ weightedPolynomialIndex w β (p + q) := by simpa only [weightedPolynomialIndex, map_add] using weightedPolynomialOrder_add w (weightedTaylor β p) (weightedTaylor β q) def weightedTaylor_pderiv (β : I → ℚ) (i : I) (p : MvPolynomial I ℚ) : weightedTaylor β (MvPolynomial.pderiv i p) = MvPolynomial.pderiv i (weightedTaylor β p) := by classical induction p using MvPolynomial.induction_on with | C a => simp [weightedTaylor_C] | add p q hp hq => simp [map_add, hp, hq] | mul_X p j hp => by_cases h : j = i · subst j simp [map_add, map_mul, hp, weightedTaylor_X] · simp [map_add, map_mul, hp, MvPolynomial.pderiv_X_of_ne h, weightedTaylor_X] /-- A coordinate derivative can lower the order by at most its coordinate weight. Writing the bound additively also covers zero polynomials and zero derivatives. -/ def weightedPolynomialOrder_pderiv (w : I → ℕ) (i : I) (p : MvPolynomial I ℚ) : weightedPolynomialOrder w p ≤ weightedPolynomialOrder w (MvPolynomial.pderiv i p) + (w i : ℕ∞) := by by_cases hd : MvPolynomial.pderiv i p = 0 · simp [hd, weightedPolynomialOrder] obtain ⟨d, hcoeff, hweight⟩ := weightedPolynomialOrder_attained w hd have hp : MvPolynomial.coeff (d + Finsupp.single i 1) p ≠ 0 := by rw [MvPolynomial.coeff_pderiv] at hcoeff exact left_ne_zero_of_mul hcoeff have hh := weightedPolynomialOrder_le_of_coeff w hp simpa only [map_add, Finsupp.weight_single, one_nsmul, Nat.cast_add, hweight] using hh def weightedPolynomialIndex_pderiv (w : I → ℕ) (β : I → ℚ) (i : I) (p : MvPolynomial I ℚ) : weightedPolynomialIndex w β p ≤ weightedPolynomialIndex w β (MvPolynomial.pderiv i p) + (w i : ℕ∞) := by simpa only [weightedPolynomialIndex, weightedTaylor_pderiv] using weightedPolynomialOrder_pderiv w i (weightedTaylor β p) end end Bounty end RothComponent_WeightedPolynomialIndex /- Component: WeightedIndexDeterminant; SHA256 c82bfb52fe2ad22ce0b1d32dde07300f80ce5aeeaa7dd4e31aa0a7e0907dc61a -/ section RothComponent_WeightedIndexDeterminant /- Finite-sum, mixed-derivative, and determinant calculus for the actual weighted Taylor index. Derivative words are shared with the generalized Wronskian proof. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I J : Type*} def weightedPolynomialIndex_zero (w : I → ℕ) (β : I → ℚ) : weightedPolynomialIndex w β (0 : MvPolynomial I ℚ) = ⊤ := by simp [weightedPolynomialIndex, weightedPolynomialOrder] def weightedPolynomialIndex_C (w : I → ℕ) (β : I → ℚ) {a : ℚ} (ha : a ≠ 0) : weightedPolynomialIndex w β (MvPolynomial.C a) = 0 := by simp only [weightedPolynomialIndex, weightedTaylor_C] apply le_antisymm · have h := weightedPolynomialOrder_le_of_coeff w (p := MvPolynomial.C a) (d := 0) (by simpa using ha) simpa only [map_zero, Nat.cast_zero] using h · exact bot_le def weightedPolynomialIndex_one (w : I → ℕ) (β : I → ℚ) : weightedPolynomialIndex w β (1 : MvPolynomial I ℚ) = 0 := by simpa using weightedPolynomialIndex_C w β (one_ne_zero : (1 : ℚ) ≠ 0) def weightedPolynomialIndex_C_mul (w : I → ℕ) (β : I → ℚ) {a : ℚ} (ha : a ≠ 0) (p : MvPolynomial I ℚ) : weightedPolynomialIndex w β (MvPolynomial.C a * p) = weightedPolynomialIndex w β p := by rw [weightedPolynomialIndex_mul, weightedPolynomialIndex_C w β ha, zero_add] def weightedPolynomialIndex_smul (w : I → ℕ) (β : I → ℚ) {a : ℚ} (ha : a ≠ 0) (p : MvPolynomial I ℚ) : weightedPolynomialIndex w β (a • p) = weightedPolynomialIndex w β p := by rw [MvPolynomial.smul_eq_C_mul] exact weightedPolynomialIndex_C_mul w β ha p def weightedPolynomialIndex_neg (w : I → ℕ) (β : I → ℚ) (p : MvPolynomial I ℚ) : weightedPolynomialIndex w β (-p) = weightedPolynomialIndex w β p := by simpa only [neg_one_smul] using weightedPolynomialIndex_smul w β (neg_ne_zero.mpr (one_ne_zero : (1 : ℚ) ≠ 0)) p def weightedPolynomialIndex_unit_smul (w : I → ℕ) (β : I → ℚ) (u : ℤˣ) (p : MvPolynomial I ℚ) : weightedPolynomialIndex w β (u • p) = weightedPolynomialIndex w β p := by rcases Int.units_eq_one_or u with rfl | rfl · simp · simp [weightedPolynomialIndex_neg] def weightedPolynomialIndex_sum_lower (w : I → ℕ) (β : I → ℚ) (s : Finset J) (p : J → MvPolynomial I ℚ) (b : ℕ∞) (h : ∀ j ∈ s, b ≤ weightedPolynomialIndex w β (p j)) : b ≤ weightedPolynomialIndex w β (∑ j ∈ s, p j) := by classical induction s using Finset.induction_on with | empty => simp [weightedPolynomialIndex_zero] | @insert a s ha ih => rw [Finset.sum_insert ha] exact (le_min (h a (by simp)) (ih (fun j hj => h j (by simp [hj])))).trans (weightedPolynomialIndex_add w β (p a) (∑ j ∈ s, p j)) def weightedPolynomialIndex_prod (w : I → ℕ) (β : I → ℚ) (s : Finset J) (p : J → MvPolynomial I ℚ) : weightedPolynomialIndex w β (∏ j ∈ s, p j) = ∑ j ∈ s, weightedPolynomialIndex w β (p j) := by classical induction s using Finset.induction_on with | empty => simp [weightedPolynomialIndex_one] | @insert a s ha ih => simp only [Finset.prod_insert ha, Finset.sum_insert ha, weightedPolynomialIndex_mul, ih] /-- A derivative word acts from the right: the head is the last derivative applied. -/ def wordPDeriv : List I → (MvPolynomial I ℚ →ₗ[ℚ] MvPolynomial I ℚ) | [] => LinearMap.id | i :: s => (MvPolynomial.pderiv i).toLinearMap.comp (wordPDeriv s) def wordPDeriv_nil (p : MvPolynomial I ℚ) : wordPDeriv [] p = p := rfl def wordPDeriv_cons (i : I) (s : List I) (p : MvPolynomial I ℚ) : wordPDeriv (i :: s) p = MvPolynomial.pderiv i (wordPDeriv s p) := rfl def wordPDeriv_append (s t : List I) (p : MvPolynomial I ℚ) : wordPDeriv (s ++ t) p = wordPDeriv s (wordPDeriv t p) := by induction s with | nil => rfl | cons i s ih => simp only [List.cons_append, wordPDeriv_cons, ih] def wordDerivativeWeight (w : I → ℕ) (s : List I) : ℕ := (s.map w).sum def wordDerivativeWeight_nil (w : I → ℕ) : wordDerivativeWeight w [] = 0 := rfl def wordDerivativeWeight_cons (w : I → ℕ) (i : I) (s : List I) : wordDerivativeWeight w (i :: s) = w i + wordDerivativeWeight w s := rfl def weightedPolynomialIndex_wordPDeriv (w : I → ℕ) (β : I → ℚ) (s : List I) (p : MvPolynomial I ℚ) : weightedPolynomialIndex w β p ≤ weightedPolynomialIndex w β (wordPDeriv s p) + (wordDerivativeWeight w s : ℕ∞) := by induction s with | nil => simp [wordPDeriv_nil, wordDerivativeWeight_nil] | cons i s ih => calc weightedPolynomialIndex w β p ≤ weightedPolynomialIndex w β (wordPDeriv s p) + (wordDerivativeWeight w s : ℕ∞) := ih _ ≤ (weightedPolynomialIndex w β (MvPolynomial.pderiv i (wordPDeriv s p)) + (w i : ℕ∞)) + (wordDerivativeWeight w s : ℕ∞) := add_le_add (weightedPolynomialIndex_pderiv w β i (wordPDeriv s p)) le_rfl _ = _ := by simp only [wordPDeriv_cons, wordDerivativeWeight_cons, Nat.cast_add, add_assoc] def weightedPolynomialIndex_det_lower [Fintype J] [DecidableEq J] (w : I → ℕ) (β : I → ℚ) (A : Matrix J J (MvPolynomial I ℚ)) (b : ℕ∞) (h : ∀ σ : Equiv.Perm J, b ≤ ∑ j, weightedPolynomialIndex w β (A (σ j) j)) : b ≤ weightedPolynomialIndex w β A.det := by rw [Matrix.det_apply] apply weightedPolynomialIndex_sum_lower intro σ _ rw [weightedPolynomialIndex_unit_smul, weightedPolynomialIndex_prod] exact h σ def weightedPolynomialIndex_det_row_loss [Fintype J] [DecidableEq J] (w : I → ℕ) (β : I → ℚ) (A : Matrix J J (MvPolynomial I ℚ)) (b : J → ℕ∞) (r : J → ℕ) (h : ∀ i j, b j ≤ weightedPolynomialIndex w β (A i j) + (r i : ℕ∞)) : (∑ j, b j) ≤ weightedPolynomialIndex w β A.det + (∑ i, r i : ℕ) := by have hb : (∑ j, b j) - (∑ i, r i : ℕ) ≤ weightedPolynomialIndex w β A.det := by apply weightedPolynomialIndex_det_lower intro σ apply tsub_le_iff_right.mpr have hh := Finset.sum_le_sum (fun j (_ : j ∈ Finset.univ) => h (σ j) j) simpa only [Finset.sum_add_distrib, ← Nat.cast_sum, Equiv.sum_comp σ r] using hh exact tsub_le_iff_right.mp hb /-- Row and column derivative losses, in the truncated form used in the Roth determinant bound. -/ def weightedPolynomialIndex_det_row_column_loss [Fintype J] [DecidableEq J] (w : I → ℕ) (β : I → ℚ) (A : Matrix J J (MvPolynomial I ℚ)) (b : ℕ∞) (r c : J → ℕ) (h : ∀ i j, b ≤ weightedPolynomialIndex w β (A i j) + (r i : ℕ∞) + (c j : ℕ∞)) : (∑ j : J, (b - (c j : ℕ∞))) ≤ weightedPolynomialIndex w β A.det + (∑ i : J, r i : ℕ) := by apply weightedPolynomialIndex_det_row_loss (J := J) w β A (fun j => b - (c j : ℕ∞)) r intro i j exact tsub_le_iff_right.mpr (h i j) end end Bounty end RothComponent_WeightedIndexDeterminant /- Component: GeneralizedWronskian; SHA256 fe9db46245ed4fe447e691295ad3976042dba63bf0b958848fcf1b9e81370dd9 -/ section RothComponent_GeneralizedWronskian /- Generalized polynomial Wronskians via finite chain-rule expansions. -/ noncomputable section open Polynomial MvPolynomial Matrix Finset namespace Bounty def derivative_aeval_eq_sum_pderiv {m : ℕ} (x : Fin m → ℚ[X]) (p : MvPolynomial (Fin m) ℚ) : Polynomial.derivative (MvPolynomial.aeval x p) = ∑ j, Polynomial.derivative (x j) * MvPolynomial.aeval x (MvPolynomial.pderiv j p) := by classical induction p using MvPolynomial.induction_on with | C a => simp | add p q hp hq => simp only [map_add, hp, hq, mul_add, Finset.sum_add_distrib] | mul_X p a hp => simp only [map_mul, MvPolynomial.aeval_X, Polynomial.derivative_mul, MvPolynomial.pderiv_mul, map_add, MvPolynomial.pderiv_X, Pi.single_apply, hp] simp only [mul_add, Finset.sum_add_distrib] have hfirst : ∑ j : Fin m, Polynomial.derivative (x j) * (MvPolynomial.aeval x (MvPolynomial.pderiv j p) * x a) = (∑ j : Fin m, Polynomial.derivative (x j) * MvPolynomial.aeval x (MvPolynomial.pderiv j p)) * x a := by rw [Finset.sum_mul] apply Finset.sum_congr rfl intro j hj ring rw [hfirst] congr 1 simp [mul_comm] def ChainLabel (m : ℕ) : ℕ → Type | 0 => Unit | n + 1 => Option (Fin m) × ChainLabel m n abbrev chainLabelFintype (m n : ℕ) : Fintype (ChainLabel m n) := by induction n with | zero => exact inferInstanceAs (Fintype Unit) | succ n ih => letI := ih exact inferInstanceAs (Fintype (Option (Fin m) × ChainLabel m n)) def chainWord (m : ℕ) : (n : ℕ) → ChainLabel m n → List (Fin m) | 0, _ => [] | n + 1, (none, a) => chainWord m n a | n + 1, (some j, a) => j :: chainWord m n a def chainCoefficient {m : ℕ} (x : Fin m → ℚ[X]) : (n : ℕ) → ChainLabel m n → ℚ[X] | 0, _ => 1 | n + 1, (none, a) => Polynomial.derivative (chainCoefficient x n a) | n + 1, (some j, a) => chainCoefficient x n a * Polynomial.derivative (x j) def chainWord_length_le (m n : ℕ) (a : ChainLabel m n) : (chainWord m n a).length ≤ n := by induction n with | zero => simp [chainWord] | succ n ih => rcases a with ⟨j, a⟩ cases j with | none => simpa only [chainWord] using (ih a).trans (Nat.le_succ n) | some j => simpa only [chainWord, List.length_cons] using Nat.succ_le_succ (ih a) def exists_det_summand_ne_zero {k : ℕ} {α : Fin k → Type*} [∀ i, Fintype (α i)] (v : ∀ i, α i → Fin k → ℚ[X]) (h : Matrix.det (fun i j => ∑ a, v i a j) ≠ 0) : ∃ a : ∀ i, α i, Matrix.det (fun i j => v i (a i) j) ≠ 0 := by classical by_contra hnone push Not at hnone apply h have hsum := (Matrix.detRowAlternating (R := ℚ[X]) (n := Fin k)).toMultilinearMap.map_sum v change Matrix.det (fun i => ∑ a, v i a) = ∑ a : ∀ i, α i, Matrix.det (fun i => v i (a i)) at hsum have heq : (fun i j => ∑ a, v i a j) = (fun i => ∑ a, v i a) := by funext i j simp only [Finset.sum_apply] rw [heq, hsum] exact Finset.sum_eq_zero (fun a _ => hnone a) def iterated_derivative_aeval_expansion {m : ℕ} (x : Fin m → ℚ[X]) (n : ℕ) (p : MvPolynomial (Fin m) ℚ) : letI := chainLabelFintype m n (Polynomial.derivative^[n]) (MvPolynomial.aeval x p) = ∑ a : ChainLabel m n, chainCoefficient x n a * MvPolynomial.aeval x (wordPDeriv (chainWord m n a) p) := by classical letI (t : ℕ) : Fintype (ChainLabel m t) := chainLabelFintype m t induction n with | zero => have hcard : Fintype.card (ChainLabel m 0) = 1 := (Fintype.card_congr (Equiv.refl Unit)).trans Fintype.card_unit simp only [Function.iterate_zero_apply, chainCoefficient, chainWord, wordPDeriv_nil, one_mul, Finset.sum_const, Finset.card_univ, hcard, one_nsmul] | succ n ih => rw [Function.iterate_succ_apply', ih, map_sum] change (∑ a : ChainLabel m n, Polynomial.derivative (chainCoefficient x n a * MvPolynomial.aeval x (wordPDeriv (chainWord m n a) p))) = ∑ a : Option (Fin m) × ChainLabel m n, chainCoefficient x (n + 1) a * MvPolynomial.aeval x (wordPDeriv (chainWord m (n + 1) a) p) rw [Fintype.sum_prod_type] simp only [Fintype.sum_option, chainCoefficient, chainWord, wordPDeriv_cons, Polynomial.derivative_mul, derivative_aeval_eq_sum_pderiv, Finset.sum_add_distrib] congr 1 simp_rw [Finset.mul_sum, mul_assoc] exact Finset.sum_comm def exists_generalizedWronskian_ne_zero {m k : ℕ} (f : Fin k → MvPolynomial (Fin m) ℚ) (hf : LinearIndependent ℚ f) : ∃ w : Fin k → List (Fin m), (∀ i, (w i).length ≤ i.val) ∧ Matrix.det (fun i j : Fin k => wordPDeriv (w i) (f j)) ≠ 0 := by classical letI (t : ℕ) : Fintype (ChainLabel m t) := chainLabelFintype m t obtain ⟨M, _, _, hli⟩ := exists_polynomialKronecker_linearIndependent f hf let x : Fin m → ℚ[X] := fun j => Polynomial.X ^ (M ^ j.val) change LinearIndependent ℚ (fun j => MvPolynomial.aeval x (f j)) at hli have huniv := iterated_derivative_matrix_det_ne_zero (fun j => MvPolynomial.aeval x (f j)) hli have hrows : (fun i j : Fin k => (Polynomial.derivative^[i.val]) (MvPolynomial.aeval x (f j))) = (fun i j : Fin k => ∑ a : ChainLabel m i.val, chainCoefficient x i.val a * MvPolynomial.aeval x (wordPDeriv (chainWord m i.val a) (f j))) := by funext i j exact iterated_derivative_aeval_expansion x i.val (f j) rw [hrows] at huniv obtain ⟨a, ha⟩ := exists_det_summand_ne_zero (fun (i : Fin k) (b : ChainLabel m i.val) (j : Fin k) => chainCoefficient x i.val b * MvPolynomial.aeval x (wordPDeriv (chainWord m i.val b) (f j))) huniv refine ⟨fun i => chainWord m i.val (a i), fun i => chainWord_length_le m i.val (a i), ?_⟩ intro hzero apply ha change (Matrix.of fun i j : Fin k => chainCoefficient x i.val (a i) * MvPolynomial.aeval x (wordPDeriv (chainWord m i.val (a i)) (f j))).det = 0 erw [Matrix.det_mul_column] have hmap : Matrix.det (fun i j : Fin k => MvPolynomial.aeval x (wordPDeriv (chainWord m i.val (a i)) (f j))) = MvPolynomial.aeval x (Matrix.det (fun i j : Fin k => wordPDeriv (chainWord m i.val (a i)) (f j))) := by exact ((MvPolynomial.aeval x).map_det (fun i j : Fin k => wordPDeriv (chainWord m i.val (a i)) (f j))).symm rw [hmap, hzero, map_zero, mul_zero] end Bounty end end RothComponent_GeneralizedWronskian /- Component: PolynomialSeparatedRank; SHA256 36b5d05b012fc760cf6429bd8884270afd4493e553d7822b6bfe9da8f1799212 -/ section RothComponent_PolynomialSeparatedRank /- Finite separated-variable rank decompositions obtained from selected coefficients. -/ open Polynomial Module namespace Bounty noncomputable section /-- Select a basis from a finite family, retaining the original indices. -/ def finite_family_basis_indices {V : Type*} [AddCommGroup V] [Module ℚ V] {N : ℕ} (v : Fin N → V) : ∃ k : ℕ, k ≤ N ∧ ∃ a : Fin k → Fin N, Function.Injective a ∧ LinearIndependent ℚ (fun j => v (a j)) ∧ Submodule.span ℚ (Set.range (fun j => v (a j))) = Submodule.span ℚ (Set.range v) := by classical obtain ⟨K, a, ha, hspan, hli⟩ := exists_linearIndependent' ℚ v let : Fintype K := Fintype.ofInjective a ha let e : Fin (Fintype.card K) ≃ K := (Fintype.equivFin K).symm refine ⟨Fintype.card K, ?_, a ∘ e, ha.comp e.injective, hli.comp e e.injective, ?_⟩ · simpa using Fintype.card_le_of_injective a ha · change Submodule.span ℚ (Set.range ((v ∘ a) ∘ e)) = _ rw [e.surjective.range_comp] exact hspan /-- Coordinates in that selected basis form an identity matrix on the selected rows. -/ def finite_family_coordinate_split {V : Type*} [AddCommGroup V] [Module ℚ V] {N : ℕ} (v : Fin N → V) : ∃ k : ℕ, k ≤ N ∧ ∃ a : Fin k → Fin N, Function.Injective a ∧ LinearIndependent ℚ (fun j => v (a j)) ∧ ∃ c : Fin N → Fin k → ℚ, (∀ i, v i = ∑ j, c i j • v (a j)) ∧ (∀ i j, c (a i) j = if i = j then 1 else 0) := by classical obtain ⟨k, hk, a, ha, hli, hspan⟩ := finite_family_basis_indices v let S := Submodule.span ℚ (Set.range (fun j => v (a j))) have hv (i : Fin N) : v i ∈ S := by change v i ∈ Submodule.span ℚ (Set.range (fun j => v (a j))) rw [hspan] exact Submodule.subset_span (Set.mem_range_self i) let b := Basis.span hli let c (i : Fin N) (j : Fin k) : ℚ := b.repr ⟨v i, hv i⟩ j refine ⟨k, hk, a, ha, hli, c, ?_, ?_⟩ · intro i have hh := congrArg (fun y : S => (y : V)) (b.sum_repr ⟨v i, hv i⟩) simpa only [Submodule.coe_sum, Submodule.coe_smul, b, Basis.coe_span_apply, c] using hh.symm · intro i j simp [c, b, Basis.span_repr_eq_single, Finsupp.single_apply] /-- A polynomial over a rational algebra has a separated decomposition of its exact coefficient rank. The left factors are distinct selected coefficients of the original polynomial, and the right factors have no greater degree than the original polynomial. -/ def polynomial_separated_rank {A : Type*} [CommRing A] [Algebra ℚ A] (P : A[X]) (hP : P ≠ 0) : ∃ k : ℕ, 1 ≤ k ∧ k ≤ P.natDegree + 1 ∧ ∃ a : Fin k → Fin (P.natDegree + 1), Function.Injective a ∧ ∃ ψ : Fin k → ℚ[X], LinearIndependent ℚ (fun j => P.coeff (a j)) ∧ LinearIndependent ℚ ψ ∧ (∀ j, (ψ j).natDegree ≤ P.natDegree) ∧ P = ∑ j, Polynomial.C (P.coeff (a j)) * (ψ j).map (algebraMap ℚ A) := by classical obtain ⟨k, hk, a, ha, hli, c, hc, hdelta⟩ := finite_family_coordinate_split (fun i : Fin (P.natDegree + 1) => P.coeff i) let ψ (j : Fin k) : ℚ[X] := Polynomial.ofFn (P.natDegree + 1) (fun i => c i j) have hcoeff (j : Fin k) (i : Fin (P.natDegree + 1)) : (ψ j).coeff i = c i j := by simp [ψ, Polynomial.ofFn_coeff_eq_val_of_lt, i.isLt] have hψ : LinearIndependent ℚ ψ := by apply Fintype.linearIndependent_iff.mpr intro d hd j have hh := congrArg (fun q : ℚ[X] => q.coeff (a j)) hd simpa only [Polynomial.finsetSum_coeff, Polynomial.coeff_smul, hcoeff, hdelta, smul_eq_mul, mul_ite, mul_one, mul_zero, Finset.sum_ite_eq, Finset.mem_univ, if_true, Polynomial.coeff_zero] using hh have hdeg (j : Fin k) : (ψ j).natDegree ≤ P.natDegree := by have hh := Polynomial.ofFn_natDegree_lt (by omega : 1 ≤ P.natDegree + 1) (fun i => c i j) exact Nat.lt_succ_iff.mp hh have hsplit : P = ∑ j, Polynomial.C (P.coeff (a j)) * (ψ j).map (algebraMap ℚ A) := by ext n simp only [Polynomial.finsetSum_coeff, Polynomial.coeff_C_mul, Polynomial.coeff_map] by_cases hn : n < P.natDegree + 1 · have hh := hc ⟨n, hn⟩ simp only [Algebra.smul_def, mul_comm] at hh simpa only [ψ, Polynomial.ofFn_coeff_eq_val_of_lt _ hn] using hh · have hpzero : P.coeff n = 0 := Polynomial.coeff_eq_zero_of_natDegree_lt (by omega) rw [hpzero] symm apply Finset.sum_eq_zero intro j hj have hqzero : (ψ j).coeff n = 0 := Polynomial.coeff_eq_zero_of_natDegree_lt (by have := hdeg j; omega) rw [hqzero, map_zero, mul_zero] have hkpos : 1 ≤ k := by by_contra hh have hkzero : k = 0 := by omega subst k simp only [Finset.univ_eq_empty, Finset.sum_empty] at hsplit exact hP hsplit exact ⟨k, hkpos, hk, a, ha, ψ, hli, hψ, hdeg, hsplit⟩ def mvPolynomial_separated_rank {m : ℕ} (P : (MvPolynomial (Fin m) ℚ)[X]) (hP : P ≠ 0) : ∃ k : ℕ, 1 ≤ k ∧ k ≤ P.natDegree + 1 ∧ ∃ φ : Fin k → MvPolynomial (Fin m) ℚ, ∃ ψ : Fin k → ℚ[X], LinearIndependent ℚ φ ∧ LinearIndependent ℚ ψ ∧ (∀ j, ∃ n ≤ P.natDegree, φ j = P.coeff n) ∧ (∀ j, (ψ j).natDegree ≤ P.natDegree) ∧ P = ∑ j, Polynomial.C (φ j) * (ψ j).map MvPolynomial.C := by obtain ⟨k, hkpos, hk, a, ha, ψ, hφ, hψ, hdeg, hsplit⟩ := polynomial_separated_rank P hP refine ⟨k, hkpos, hk, (fun j => P.coeff (a j)), ψ, hφ, hψ, ?_, hdeg, ?_⟩ · intro j exact ⟨a j, Nat.lt_succ_iff.mp (a j).isLt, rfl⟩ · exact hsplit end end Bounty end RothComponent_PolynomialSeparatedRank /- Component: RationalRootHeight; SHA256 5e47a2a77de45ae7abc1a312c125cb45978f4639e3fd60ab67ea32448faeab0f -/ section RothComponent_RationalRootHeight /- The one-variable height estimate for the rational polynomial-index argument. -/ namespace Bounty open Polynomial noncomputable section def integerPolynomialCoeffSum (P : ℤ[X]) : ℝ := (P.map (Int.castRingHom ℂ)).sum fun _ a => ‖a‖ def polynomial_mahlerMeasure_pow (P : ℂ[X]) (n : ℕ) : (P ^ n).mahlerMeasure = P.mahlerMeasure ^ n := by induction n with | zero => simp | succ n ih => rw [pow_succ, Polynomial.mahlerMeasure_mul, ih, pow_succ] def integer_linear_mahlerMeasure (p q : ℤ) (hq : q ≠ 0) : ((C q * X - C p).map (Int.castRingHom ℂ)).mahlerMeasure = max ‖(q : ℂ)‖ ‖(p : ℂ)‖ := by have hqc : (q : ℂ) ≠ 0 := by exact_mod_cast hq rw [Polynomial.map_sub, Polynomial.map_mul, Polynomial.map_C, Polynomial.map_X, Polynomial.map_C] change (C (q : ℂ) * X - C (p : ℂ)).mahlerMeasure = _ rw [sub_eq_add_neg, ← Polynomial.C_neg] rw [Polynomial.mahlerMeasure_C_mul_X_add_C hqc] simp only [norm_neg] def integer_linear_power_height_bound {P : ℤ[X]} (hP : P ≠ 0) (p q : ℤ) (hq : q ≠ 0) (n : ℕ) (hdiv : (C q * X - C p) ^ n ∣ P) : (max ‖(q : ℂ)‖ ‖(p : ℂ)‖) ^ n ≤ integerPolynomialCoeffSum P := by obtain ⟨Q, hPQ⟩ := hdiv have hQ : Q ≠ 0 := by intro hzero apply hP rw [hPQ, hzero, mul_zero] have hQ1 := Polynomial.one_le_mahlerMeasure_of_ne_zero hQ have hm : (P.map (Int.castRingHom ℂ)).mahlerMeasure = (max ‖(q : ℂ)‖ ‖(p : ℂ)‖) ^ n * (Q.map (Int.castRingHom ℂ)).mahlerMeasure := by rw [hPQ, Polynomial.map_mul, Polynomial.map_pow, Polynomial.mahlerMeasure_mul, polynomial_mahlerMeasure_pow, integer_linear_mahlerMeasure p q hq] calc _ ≤ (max ‖(q : ℂ)‖ ‖(p : ℂ)‖) ^ n * (Q.map (Int.castRingHom ℂ)).mahlerMeasure := le_mul_of_one_le_right (by positivity) hQ1 _ = (P.map (Int.castRingHom ℂ)).mahlerMeasure := hm.symm _ ≤ integerPolynomialCoeffSum P := Polynomial.mahlerMeasure_le_sum_norm_coeff _ def integer_linear_power_log_height_bound {P : ℤ[X]} (hP : P ≠ 0) (p q : ℤ) (hq : q ≠ 0) (n : ℕ) (hdiv : (C q * X - C p) ^ n ∣ P) : (n : ℝ) * Real.log (max ‖(q : ℂ)‖ ‖(p : ℂ)‖) ≤ Real.log (integerPolynomialCoeffSum P) := by have hqc : (q : ℂ) ≠ 0 := by exact_mod_cast hq have hb : 0 < max ‖(q : ℂ)‖ ‖(p : ℂ)‖ := (norm_pos_iff.mpr hqc).trans_le (le_max_left _ _) have hh := Real.log_le_log (pow_pos hb n) (integer_linear_power_height_bound hP p q hq n hdiv) simpa only [Real.log_pow] using hh end end Bounty end RothComponent_RationalRootHeight /- Component: RationalRootMultiplicityHeight; SHA256 f1a3f3c44217673bb3f2ce2b082df98020020d757fce49448b1557f555927f8d -/ section RothComponent_RationalRootMultiplicityHeight /- Rational root multiplicity, primitive linear factors, and coefficient height. -/ namespace Bounty open Polynomial noncomputable section def rationalRootFactor (β : ℚ) : ℤ[X] := C (β.den : ℤ) * X - C β.num def rationalRootFactor_primitive (β : ℚ) : (rationalRootFactor β).IsPrimitive := by intro a ha have hc := (Polynomial.C_dvd_iff_dvd_coeff a _).mp ha have hq : a ∣ (β.den : ℤ) := by simpa only [rationalRootFactor, Polynomial.coeff_sub, Polynomial.coeff_C_mul_X, Polynomial.coeff_C, if_pos, if_neg, Nat.one_ne_zero, ite_false, sub_zero] using hc 1 have hp : a ∣ β.num := by have hh : a ∣ -β.num := by simpa [rationalRootFactor] using hc 0 simpa using hh have hcop : IsCoprime β.num (β.den : ℤ) := by apply Int.isCoprime_iff_gcd_eq_one.mpr simpa only [Int.gcd_def, Int.natAbs_natCast] using β.reduced exact hcop.isUnit_of_dvd' hp hq def rationalRootFactor_pow_primitive (β : ℚ) (n : ℕ) : ((rationalRootFactor β) ^ n).IsPrimitive := by induction n with | zero => simp | succ n ih => simpa only [pow_succ] using ih.mul (rationalRootFactor_primitive β) def rationalRootFactor_map (β : ℚ) : (rationalRootFactor β).map (Int.castRingHom ℚ) = C (β.den : ℚ) * (X - C β) := by have hden : (β.den : ℚ) ≠ 0 := by exact_mod_cast β.den_ne_zero have hnum : (β.den : ℚ) * β = (β.num : ℚ) := by calc (β.den : ℚ) * β = (β.den : ℚ) * ((β.num : ℚ) / (β.den : ℚ)) := congrArg (fun x : ℚ => (β.den : ℚ) * x) β.num_div_den.symm _ = (β.num : ℚ) := by field_simp simp only [rationalRootFactor, Polynomial.map_sub, Polynomial.map_mul, Polynomial.map_C, Polynomial.map_X] change C (β.den : ℚ) * X - C (β.num : ℚ) = _ rw [mul_sub, ← Polynomial.C_mul, hnum] def rationalRootFactor_pow_dvd (P : ℤ[X]) (β : ℚ) (n : ℕ) (hdiv : (X - C β) ^ n ∣ P.map (Int.castRingHom ℚ)) : (rationalRootFactor β) ^ n ∣ P := by apply (Polynomial.IsPrimitive.Int.dvd_iff_map_cast_dvd_map_cast _ _ (rationalRootFactor_pow_primitive β n)).mpr rw [Polynomial.map_pow, rationalRootFactor_map, mul_pow] have hc : IsUnit (C (β.den : ℚ) ^ n : ℚ[X]) := (Polynomial.isUnit_C.mpr (isUnit_iff_ne_zero.mpr (by exact_mod_cast β.den_ne_zero))).pow n exact (hc.mul_left_dvd).mpr hdiv def rational_rootMultiplicity_height_bound {P : ℤ[X]} (hP : P ≠ 0) (β : ℚ) : (Polynomial.rootMultiplicity β (P.map (Int.castRingHom ℚ)) : ℝ) * Real.log (max ‖(β.den : ℂ)‖ ‖(β.num : ℂ)‖) ≤ Real.log (integerPolynomialCoeffSum P) := by apply integer_linear_power_log_height_bound hP β.num (β.den : ℤ) (by exact_mod_cast β.den_ne_zero) exact rationalRootFactor_pow_dvd P β _ (Polynomial.pow_rootMultiplicity_dvd _ β) end end Bounty end RothComponent_RationalRootMultiplicityHeight /- Component: RothIndexNormalization; SHA256 d5e8eae8f8d7c671604ec159d5dc9c64a65e8f32fbd166ec84330954f7532f43 -/ section RothComponent_RothIndexNormalization /- Real Roth indices obtained by normalizing the actual weighted Taylor order. The total real-valued definition sends the zero polynomial to zero; all minimum characterizations and degree bounds below explicitly assume a nonzero polynomial. -/ namespace Bounty noncomputable section open scoped BigOperators def rothDenominator {m : ℕ} (r : Fin m → ℕ) : ℕ := ∏ i, r i def rothWeight {m : ℕ} (r : Fin m → ℕ) (i : Fin m) : ℕ := ∏ j ∈ Finset.univ.erase i, r j def rothMonomialWeight {m : ℕ} (r : Fin m → ℕ) (d : Fin m →₀ ℕ) : ℝ := ∑ i, (d i : ℝ) / r i def rothPolynomialIndex {m : ℕ} (r : Fin m → ℕ) (β : Fin m → ℚ) (P : MvPolynomial (Fin m) ℚ) : ℝ := ((weightedPolynomialIndex (rothWeight r) β P).toNat : ℝ) / rothDenominator r def rothDenominator_pos {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) : 0 < rothDenominator r := Finset.prod_pos (fun i _ => hr i) def rothWeight_mul {m : ℕ} (r : Fin m → ℕ) (i : Fin m) : rothWeight r i * r i = rothDenominator r := Finset.prod_erase_mul Finset.univ r (Finset.mem_univ i) def rothWeight_div_denominator {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (i : Fin m) : (rothWeight r i : ℝ) / rothDenominator r = 1 / (r i : ℝ) := by have hD : (rothDenominator r : ℝ) ≠ 0 := by exact_mod_cast (rothDenominator_pos hr).ne' have hi : (r i : ℝ) ≠ 0 := by exact_mod_cast (hr i).ne' apply (div_eq_div_iff hD hi).mpr simpa only [one_mul, ← Nat.cast_mul] using congrArg (fun n : ℕ => (n : ℝ)) (rothWeight_mul r i) def rothMonomialWeight_eq_normalized_weight {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (d : Fin m →₀ ℕ) : (Finsupp.weight (rothWeight r) d : ℝ) / rothDenominator r = rothMonomialWeight r d := by rw [Finsupp.weight_eq_sum] simp only [smul_eq_mul, Nat.cast_sum, Nat.cast_mul, Finset.sum_div, rothMonomialWeight] apply Finset.sum_congr rfl intro i hi rw [mul_div_assoc, rothWeight_div_denominator hr] ring def rothPolynomialIndex_nonneg {m : ℕ} (r : Fin m → ℕ) (β : Fin m → ℚ) (P : MvPolynomial (Fin m) ℚ) : 0 ≤ rothPolynomialIndex r β P := by unfold rothPolynomialIndex positivity /-- Every nonzero Taylor coefficient supplies an upper bound on the normalized index. -/ def rothPolynomialIndex_le_support {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (β : Fin m → ℚ) (P : MvPolynomial (Fin m) ℚ) {d : Fin m →₀ ℕ} (hd : d ∈ (weightedTaylor β P).support) : rothPolynomialIndex r β P ≤ rothMonomialWeight r d := by have hh := weightedPolynomialOrder_le_of_coeff (rothWeight r) (MvPolynomial.mem_support_iff.mp hd) have hn : (weightedPolynomialIndex (rothWeight r) β P).toNat ≤ Finsupp.weight (rothWeight r) d := ENat.toNat_le_of_le_natCast hh rw [← rothMonomialWeight_eq_normalized_weight hr] exact div_le_div_of_nonneg_right (by exact_mod_cast hn) (Nat.cast_nonneg _) /-- The normalized index is attained by an actual nonzero Taylor coefficient. -/ def rothPolynomialIndex_attained {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (β : Fin m → ℚ) {P : MvPolynomial (Fin m) ℚ} (hP : P ≠ 0) : ∃ d ∈ (weightedTaylor β P).support, rothPolynomialIndex r β P = rothMonomialWeight r d := by obtain ⟨d, hd, hweight⟩ := weightedPolynomialIndex_attained (rothWeight r) β hP refine ⟨d, hd, ?_⟩ have hh := congrArg ENat.toNat hweight simp only [ENat.toNat_natCast] at hh rw [rothPolynomialIndex, ← hh] exact rothMonomialWeight_eq_normalized_weight hr d def weightedTaylor_monomial_degreeOf_le {m : ℕ} (β : Fin m → ℚ) (d : Fin m →₀ ℕ) (a : ℚ) (i : Fin m) : (weightedTaylor β (MvPolynomial.monomial d a)).degreeOf i ≤ d i := by classical rw [weightedTaylor, MvPolynomial.eval₂Hom_monomial, Finsupp.prod_fintype _ _ (fun _ => pow_zero _)] apply (MvPolynomial.degreeOf_C_mul_le _ i a).trans apply (MvPolynomial.degreeOf_prod_le i _ _).trans calc (∑ j, ((MvPolynomial.X j + MvPolynomial.C (β j)) ^ d j).degreeOf i) ≤ ∑ j, d j * (if i = j then 1 else 0) := by apply Finset.sum_le_sum intro j hj apply (MvPolynomial.degreeOf_pow_le i _ _).trans apply Nat.mul_le_mul_left simpa only [MvPolynomial.degreeOf_X, MvPolynomial.degreeOf_C, max_eq_left (Nat.zero_le _)] using MvPolynomial.degreeOf_add_le i (MvPolynomial.X j) (MvPolynomial.C (β j)) _ = d i := by simp def weightedTaylor_degreeOf_le {m : ℕ} (β : Fin m → ℚ) (P : MvPolynomial (Fin m) ℚ) (i : Fin m) : (weightedTaylor β P).degreeOf i ≤ P.degreeOf i := by classical nth_rw 1 [MvPolynomial.as_sum P] rw [map_sum] apply (MvPolynomial.degreeOf_sum_le i _ _).trans apply Finset.sup_le intro d hd exact (weightedTaylor_monomial_degreeOf_le β d (MvPolynomial.coeff d P) i).trans (MvPolynomial.monomial_le_degreeOf i hd) def weightedTaylor_degreeOf {m : ℕ} (β : Fin m → ℚ) (P : MvPolynomial (Fin m) ℚ) (i : Fin m) : (weightedTaylor β P).degreeOf i = P.degreeOf i := by apply le_antisymm (weightedTaylor_degreeOf_le β P i) simpa only [weightedTaylor_comp, neg_add_cancel, weightedTaylor_zero] using weightedTaylor_degreeOf_le (-β) (weightedTaylor β P) i def rothPolynomialIndex_le_dimension {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (β : Fin m → ℚ) {P : MvPolynomial (Fin m) ℚ} (hP : P ≠ 0) (hdegree : ∀ i, P.degreeOf i ≤ r i) : rothPolynomialIndex r β P ≤ m := by obtain ⟨d, hd, heq⟩ := rothPolynomialIndex_attained hr β hP rw [heq, rothMonomialWeight] calc (∑ i : Fin m, (d i : ℝ) / r i) ≤ ∑ _i : Fin m, (1 : ℝ) := by apply Finset.sum_le_sum intro i hi apply (div_le_one (by exact_mod_cast hr i)).mpr exact_mod_cast (MvPolynomial.monomial_le_degreeOf i hd).trans ((weightedTaylor_degreeOf β P i).le.trans (hdegree i)) _ = m := by simp def rothMonomialWeight_scale {m : ℕ} (r : Fin m → ℕ) (k : ℕ) (d : Fin m →₀ ℕ) : rothMonomialWeight (fun i => k * r i) d = rothMonomialWeight r d / k := by simp only [rothMonomialWeight, Nat.cast_mul, Finset.sum_div] apply Finset.sum_congr rfl intro i hi rw [div_div, mul_comm] def rothPolynomialIndex_scale {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (β : Fin m → ℚ) {P : MvPolynomial (Fin m) ℚ} (hP : P ≠ 0) {k : ℕ} (hk : 0 < k) : rothPolynomialIndex (fun i => k * r i) β P = rothPolynomialIndex r β P / k := by have hkr (i : Fin m) : 0 < k * r i := Nat.mul_pos hk (hr i) have hkreal : (0 : ℝ) ≤ k := Nat.cast_nonneg k obtain ⟨d, hd, heq⟩ := rothPolynomialIndex_attained hr β hP obtain ⟨e, he, heq'⟩ := rothPolynomialIndex_attained hkr β hP apply le_antisymm · calc _ ≤ rothMonomialWeight (fun i => k * r i) d := rothPolynomialIndex_le_support hkr β P hd _ = _ := by rw [rothMonomialWeight_scale, heq] · calc _ ≤ rothMonomialWeight r e / k := div_le_div_of_nonneg_right (rothPolynomialIndex_le_support hr β P he) hkreal _ = _ := by rw [heq', rothMonomialWeight_scale] def rothPolynomialIndex_mul {m : ℕ} (r : Fin m → ℕ) (β : Fin m → ℚ) {P Q : MvPolynomial (Fin m) ℚ} (hP : P ≠ 0) (hQ : Q ≠ 0) : rothPolynomialIndex r β (P * Q) = rothPolynomialIndex r β P + rothPolynomialIndex r β Q := by simp only [rothPolynomialIndex, weightedPolynomialIndex_mul, ENat.toNat_add (weightedPolynomialIndex_finite _ _ hP).ne (weightedPolynomialIndex_finite _ _ hQ).ne, Nat.cast_add, add_div] end end Bounty end RothComponent_RothIndexNormalization /- Component: RothUnivariateIndex; SHA256 8f7f621ecf9f8eb932902c07e9f454b1f4ffc64189fef0dc80602b18c0c6932c -/ section RothComponent_RothUnivariateIndex /- The normalized one-variable Taylor index is rational-root multiplicity divided by degree. -/ namespace Bounty noncomputable section open scoped BigOperators open Polynomial def unique_weightedTaylor (β : Fin 1 → ℚ) (P : MvPolynomial (Fin 1) ℚ) : MvPolynomial.uniqueAlgEquiv ℚ (Fin 1) (weightedTaylor β P) = (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1) P).comp (Polynomial.X + Polynomial.C (β 0)) := by induction P using MvPolynomial.induction_on with | C a => simp [MvPolynomial.uniqueAlgEquiv_apply, weightedTaylor_C] | add P Q hP hQ => simp [map_add, hP, hQ] | mul_X P i hP => have hi : i = 0 := Subsingleton.elim _ _ subst i simp [map_mul, map_add, hP, MvPolynomial.uniqueAlgEquiv_apply, weightedTaylor_X] def rothPolynomialIndex_eq_rootMultiplicity {r : Fin 1 → ℕ} (hr : ∀ i, 0 < r i) (β : Fin 1 → ℚ) {P : MvPolynomial (Fin 1) ℚ} (hP : P ≠ 0) : rothPolynomialIndex r β P = ((MvPolynomial.uniqueAlgEquiv ℚ (Fin 1) P).rootMultiplicity (β 0) : ℝ) / r 0 := by rw [Polynomial.rootMultiplicity_eq_natTrailingDegree, ← unique_weightedTaylor] let T := weightedTaylor β P let Q := MvPolynomial.uniqueAlgEquiv ℚ (Fin 1) T have hT : T ≠ 0 := fun hz => hP ((weightedTaylor_eq_zero β P).mp hz) have hQ : Q ≠ 0 := by intro hz apply hT exact (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).injective (hz.trans (map_zero _).symm) change rothPolynomialIndex r β P = (Q.natTrailingDegree : ℝ) / r 0 apply le_antisymm · have hc := Polynomial.coeff_natTrailingDegree_ne_zero.mpr hQ change (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1) T).coeff Q.natTrailingDegree ≠ 0 at hc rw [MvPolynomial.coeff_uniqueAlgEquiv] at hc have hu := rothPolynomialIndex_le_support hr β P (MvPolynomial.mem_support_iff.mpr hc) simpa [rothMonomialWeight] using hu · obtain ⟨d, hd, heq⟩ := rothPolynomialIndex_attained hr β hP have hd' : Q.coeff (d 0) ≠ 0 := by change (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1) T).coeff (d 0) ≠ 0 rw [MvPolynomial.coeff_uniqueAlgEquiv] have hdEq : Finsupp.single (0 : Fin 1) (d 0) = d := by simpa using (Finsupp.unique_single d).symm change MvPolynomial.coeff (Finsupp.single (0 : Fin 1) (d 0)) T ≠ 0 rw [hdEq] exact MvPolynomial.mem_support_iff.mp hd have hn := Polynomial.natTrailingDegree_le_of_ne_zero hd' rw [heq] simp only [rothMonomialWeight, Fin.sum_univ_one] exact div_le_div_of_nonneg_right (by exact_mod_cast hn) (Nat.cast_nonneg _) def rothUnivariate_integer_height_bound (r : Fin 1 → ℕ) (hr : ∀ i, 0 < r i) (β : Fin 1 → ℚ) {P : ℤ[X]} (hP : P ≠ 0) : rothPolynomialIndex r β ((MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm (P.map (Int.castRingHom ℚ))) * ((r 0 : ℝ) * Real.log (max ‖((β 0).den : ℂ)‖ ‖((β 0).num : ℂ)‖)) ≤ Real.log (integerPolynomialCoeffSum P) := by have hPQ : P.map (Int.castRingHom ℚ) ≠ 0 := by intro hz apply hP exact (Polynomial.map_injective (Int.castRingHom ℚ) Int.cast_injective) (hz.trans (Polynomial.map_zero _).symm) have hM : (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm (P.map (Int.castRingHom ℚ)) ≠ 0 := by intro hz apply hPQ exact (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm.injective (hz.trans (map_zero _).symm) rw [rothPolynomialIndex_eq_rootMultiplicity hr β hM, AlgEquiv.apply_symm_apply] have hr0 : (r 0 : ℝ) ≠ 0 := by exact_mod_cast (hr 0).ne' rw [div_mul_eq_mul_div, mul_div_assoc, mul_div_cancel_left₀ _ hr0] exact rational_rootMultiplicity_height_bound hP (β 0) end end Bounty end RothComponent_RothUnivariateIndex /- Component: PolynomialCoefficientNorm; SHA256 3121619c6ec30ab1ef03b1743098af5be37e6d61132039e91563bcb5a8c2cc04 -/ section RothComponent_PolynomialCoefficientNorm /- The coefficient sum norm needed in the rational Roth polynomial argument. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I R : Type*} [NormedCommRing R] def polynomialCoeffL1 (P : MvPolynomial I R) : ℝ := ∑ d ∈ P.support, ‖MvPolynomial.coeff d P‖ def polynomialCoeffL1_nonneg (P : MvPolynomial I R) : 0 ≤ polynomialCoeffL1 P := by exact Finset.sum_nonneg (fun _ _ => norm_nonneg _) def polynomialCoeffL1_zero : polynomialCoeffL1 (0 : MvPolynomial I R) = 0 := by simp [polynomialCoeffL1] def polynomialCoeffL1_sum_of_support_subset (P : MvPolynomial I R) (s : Finset (I →₀ ℕ)) (hs : P.support ⊆ s) : polynomialCoeffL1 P = ∑ d ∈ s, ‖MvPolynomial.coeff d P‖ := by classical apply Finset.sum_subset hs intro d _ hd rw [MvPolynomial.notMem_support_iff.mp hd, norm_zero] def polynomialCoeffL1_add (P Q : MvPolynomial I R) : polynomialCoeffL1 (P + Q) ≤ polynomialCoeffL1 P + polynomialCoeffL1 Q := by classical let s := P.support ∪ Q.support rw [polynomialCoeffL1_sum_of_support_subset (P + Q) s MvPolynomial.support_add, polynomialCoeffL1_sum_of_support_subset P s Finset.subset_union_left, polynomialCoeffL1_sum_of_support_subset Q s Finset.subset_union_right, ← Finset.sum_add_distrib] exact Finset.sum_le_sum (fun d _ => by simpa using norm_add_le (MvPolynomial.coeff d P) (MvPolynomial.coeff d Q)) def polynomialCoeffL1_sum {J : Type*} (s : Finset J) (P : J → MvPolynomial I R) : polynomialCoeffL1 (∑ j ∈ s, P j) ≤ ∑ j ∈ s, polynomialCoeffL1 (P j) := by classical induction s using Finset.induction_on with | empty => simp [polynomialCoeffL1_zero] | @insert a s ha ih => rw [Finset.sum_insert ha, Finset.sum_insert ha] exact (polynomialCoeffL1_add _ _).trans (add_le_add le_rfl ih) def polynomialCoeffL1_monomial (d : I →₀ ℕ) (a : R) : polynomialCoeffL1 (MvPolynomial.monomial d a) = ‖a‖ := by classical exact MvPolynomial.sum_monomial_eq (norm_zero : ‖(0 : R)‖ = 0) def polynomialCoeffL1_C (a : R) : polynomialCoeffL1 (MvPolynomial.C a : MvPolynomial I R) = ‖a‖ := by exact polynomialCoeffL1_monomial 0 a def polynomialCoeffL1_one [NormOneClass R] : polynomialCoeffL1 (1 : MvPolynomial I R) = 1 := by rw [← MvPolynomial.C_1, polynomialCoeffL1_C, norm_one] def polynomialCoeffL1_mul (P Q : MvPolynomial I R) : polynomialCoeffL1 (P * Q) ≤ polynomialCoeffL1 P * polynomialCoeffL1 Q := by classical have hprod : P * Q = ∑ d ∈ P.support, ∑ e ∈ Q.support, MvPolynomial.monomial (d + e) (MvPolynomial.coeff d P * MvPolynomial.coeff e Q) := by conv_lhs => rw [MvPolynomial.as_sum P, MvPolynomial.as_sum Q] simp only [Finset.sum_mul, Finset.mul_sum, MvPolynomial.monomial_mul] exact Finset.sum_comm rw [hprod] calc _ ≤ ∑ d ∈ P.support, polynomialCoeffL1 (∑ e ∈ Q.support, MvPolynomial.monomial (d + e) (MvPolynomial.coeff d P * MvPolynomial.coeff e Q)) := polynomialCoeffL1_sum _ _ _ ≤ ∑ d ∈ P.support, ∑ e ∈ Q.support, polynomialCoeffL1 (MvPolynomial.monomial (d + e) (MvPolynomial.coeff d P * MvPolynomial.coeff e Q)) := Finset.sum_le_sum (fun _ _ => polynomialCoeffL1_sum _ _) _ ≤ ∑ d ∈ P.support, ∑ e ∈ Q.support, ‖MvPolynomial.coeff d P‖ * ‖MvPolynomial.coeff e Q‖ := by apply Finset.sum_le_sum intro d _ apply Finset.sum_le_sum intro e _ rw [polynomialCoeffL1_monomial] exact norm_mul_le _ _ _ = polynomialCoeffL1 P * polynomialCoeffL1 Q := by simp only [polynomialCoeffL1, Finset.sum_mul, Finset.mul_sum] exact Finset.sum_comm def polynomialCoeffL1_prod [NormOneClass R] {J : Type*} (s : Finset J) (P : J → MvPolynomial I R) : polynomialCoeffL1 (∏ j ∈ s, P j) ≤ ∏ j ∈ s, polynomialCoeffL1 (P j) := by classical induction s using Finset.induction_on with | empty => simp [polynomialCoeffL1_one] | @insert a s ha ih => rw [Finset.prod_insert ha, Finset.prod_insert ha] exact (polynomialCoeffL1_mul _ _).trans (mul_le_mul_of_nonneg_left ih (polynomialCoeffL1_nonneg _)) def norm_coeff_le_polynomialCoeffL1 (P : MvPolynomial I R) (d : I →₀ ℕ) : ‖MvPolynomial.coeff d P‖ ≤ polynomialCoeffL1 P := by classical by_cases hd : d ∈ P.support · exact Finset.single_le_sum (fun _ _ => norm_nonneg _) hd · simp only [MvPolynomial.notMem_support_iff.mp hd, norm_zero] exact polynomialCoeffL1_nonneg _ def polynomialCoeffL1_pos {P : MvPolynomial I R} (hP : P ≠ 0) : 0 < polynomialCoeffL1 P := by classical obtain ⟨d, hd⟩ := MvPolynomial.exists_coeff_ne_zero hP exact (norm_pos_iff.mpr hd).trans_le (norm_coeff_le_polynomialCoeffL1 P d) end end Bounty end RothComponent_PolynomialCoefficientNorm /- Component: PolynomialCoefficientDeterminant; SHA256 3776cae0ad95603c49cc4dcafcbfaa27ed1e8adda8cb741bae810b1d716bcca1 -/ section RothComponent_PolynomialCoefficientDeterminant /- Coefficient norm bounds for determinant auxiliary polynomials. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I R J : Type*} [NormedCommRing R] def polynomialCoeffL1_neg (P : MvPolynomial I R) : polynomialCoeffL1 (-P) = polynomialCoeffL1 P := by classical simp [polynomialCoeffL1] def polynomialCoeffL1_unit_smul (u : ℤˣ) (P : MvPolynomial I R) : polynomialCoeffL1 (u • P) = polynomialCoeffL1 P := by rcases Int.units_eq_one_or u with rfl | rfl <;> simp [polynomialCoeffL1_neg] def polynomialCoeffL1_det [NormOneClass R] [Fintype J] [DecidableEq J] (A : Matrix J J (MvPolynomial I R)) : polynomialCoeffL1 A.det ≤ ∑ σ : Equiv.Perm J, ∏ j, polynomialCoeffL1 (A (σ j) j) := by rw [Matrix.det_apply] apply (polynomialCoeffL1_sum _ _).trans apply Finset.sum_le_sum intro σ _ rw [polynomialCoeffL1_unit_smul] exact polynomialCoeffL1_prod _ _ def polynomialCoeffL1_det_le [NormOneClass R] [Fintype J] [DecidableEq J] (A : Matrix J J (MvPolynomial I R)) (B : ℝ) (_hB : 0 ≤ B) (hA : ∀ i j, polynomialCoeffL1 (A i j) ≤ B) : polynomialCoeffL1 A.det ≤ (Fintype.card J).factorial * B ^ Fintype.card J := by calc _ ≤ ∑ σ : Equiv.Perm J, ∏ j, polynomialCoeffL1 (A (σ j) j) := polynomialCoeffL1_det A _ ≤ ∑ _σ : Equiv.Perm J, ∏ _j : J, B := by apply Finset.sum_le_sum intro σ _ exact Finset.prod_le_prod (fun j _ => polynomialCoeffL1_nonneg _) (fun j _ => hA (σ j) j) _ = (Fintype.card J).factorial * B ^ Fintype.card J := by simp [Fintype.card_perm] def polynomialCoeffL1_det_log_le [NormOneClass R] [Fintype J] [DecidableEq J] (A : Matrix J J (MvPolynomial I R)) (hdet : A.det ≠ 0) (B : ℝ) (hB : 0 < B) (hA : ∀ i j, polynomialCoeffL1 (A i j) ≤ B) : Real.log (polynomialCoeffL1 A.det) ≤ Real.log ((Fintype.card J).factorial : ℝ) + (Fintype.card J : ℝ) * Real.log B := by have hf : (0 : ℝ) < (Fintype.card J).factorial := by exact_mod_cast Nat.factorial_pos _ have h := Real.log_le_log (polynomialCoeffL1_pos hdet) (polynomialCoeffL1_det_le A B hB.le hA) rwa [Real.log_mul hf.ne' (pow_pos hB _).ne', Real.log_pow] at h end end Bounty end RothComponent_PolynomialCoefficientDeterminant /- Component: DividedWordDerivatives; SHA256 1e32467e609f852e2772902b0b2f850f42fa8b5371df2ba893b288b35f59e72f -/ section RothComponent_DividedWordDerivatives /- Exact coefficients of derivative words and their divided normalization. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I : Type*} [Fintype I] [DecidableEq I] /-- The multiplicity of each coordinate in a derivative word. -/ def wordDerivativeCounts (s : List I) : I →₀ ℕ := Finsupp.equivFunOnFinite.symm (fun i => s.count i) def wordDerivativeCounts_apply (s : List I) (i : I) : wordDerivativeCounts s i = s.count i := rfl def wordDerivativeCounts_nil : wordDerivativeCounts ([] : List I) = 0 := by ext i simp [wordDerivativeCounts_apply] def wordDerivativeCounts_cons (i : I) (s : List I) : wordDerivativeCounts (i :: s) = Finsupp.single i 1 + wordDerivativeCounts s := by ext j by_cases h : j = i · subst j simp [add_comm, wordDerivativeCounts_apply] · simp [List.count_cons_of_ne (Ne.symm h), h, wordDerivativeCounts_apply] def derivativeFallingProduct (a c : I →₀ ℕ) : ℚ := ∏ i, ((a i + c i).descFactorial (c i) : ℚ) private def descFactorial_step (a c : ℕ) : (a + (1 + c)).descFactorial (1 + c) = (a + 1 + c).descFactorial c * (a + 1) := by rw [Nat.add_comm 1 c, Nat.descFactorial_succ] have he : a + (c + 1) = a + 1 + c := by omega rw [he, Nat.add_sub_cancel] exact Nat.mul_comm _ _ private def derivativeFallingProduct_step (a c : I →₀ ℕ) (i : I) : derivativeFallingProduct a (Finsupp.single i 1 + c) = derivativeFallingProduct (a + Finsupp.single i 1) c * (a i + 1) := by have hfactor (j : I) : ((a j + (Finsupp.single i 1 + c : I →₀ ℕ) j).descFactorial ((Finsupp.single i 1 + c : I →₀ ℕ) j) : ℚ) = ((((a + Finsupp.single i 1 : I →₀ ℕ) j) + c j).descFactorial (c j) : ℚ) * (if j = i then (a i + 1 : ℚ) else 1) := by by_cases h : j = i · subst j simp only [Finsupp.add_apply, Finsupp.single_eq_same, if_pos rfl] exact_mod_cast descFactorial_step (a i) (c i) · simp [Finsupp.single_apply, h, Ne.symm h] simp only [derivativeFallingProduct, hfactor, Finset.prod_mul_distrib] simp def coeff_wordPDeriv (s : List I) (P : MvPolynomial I ℚ) (a : I →₀ ℕ) : MvPolynomial.coeff a (wordPDeriv s P) = MvPolynomial.coeff (a + wordDerivativeCounts s) P * derivativeFallingProduct a (wordDerivativeCounts s) := by induction s generalizing a with | nil => simp [derivativeFallingProduct, wordPDeriv_nil, wordDerivativeCounts_nil] | cons i s ih => rw [wordPDeriv_cons, MvPolynomial.coeff_pderiv, ih, wordDerivativeCounts_cons, derivativeFallingProduct_step] simp only [add_assoc, mul_assoc] def coeff_wordPDeriv_descFactorial (s : List I) (P : MvPolynomial I ℚ) (a : I →₀ ℕ) : MvPolynomial.coeff a (wordPDeriv s P) = MvPolynomial.coeff (a + wordDerivativeCounts s) P * ∏ i, ((a i + s.count i).descFactorial (s.count i) : ℚ) := by simpa only [derivativeFallingProduct, wordDerivativeCounts_apply] using coeff_wordPDeriv s P a /-- The nonzero rational product of the coordinate factorials. -/ def wordDerivativeFactorial (s : List I) : ℚ := ∏ i, ((s.count i).factorial : ℚ) def wordDerivativeFactorial_ne_zero (s : List I) : wordDerivativeFactorial s ≠ 0 := by apply Finset.prod_ne_zero_iff.mpr intro i _ exact Nat.cast_ne_zero.mpr (Nat.factorial_ne_zero _) def dividedWordPDeriv (s : List I) : MvPolynomial I ℚ →ₗ[ℚ] MvPolynomial I ℚ := (wordDerivativeFactorial s)⁻¹ • wordPDeriv s def coeff_dividedWordPDeriv (s : List I) (P : MvPolynomial I ℚ) (a : I →₀ ℕ) : MvPolynomial.coeff a (dividedWordPDeriv s P) = MvPolynomial.coeff (a + wordDerivativeCounts s) P * ∏ i, ((a i + s.count i).choose (s.count i) : ℚ) := by change MvPolynomial.coeff a ((wordDerivativeFactorial s)⁻¹ • wordPDeriv s P) = _ rw [MvPolynomial.coeff_smul, coeff_wordPDeriv_descFactorial, smul_eq_mul] simp_rw [Nat.descFactorial_eq_factorial_mul_choose, Nat.cast_mul] rw [Finset.prod_mul_distrib] change (wordDerivativeFactorial s)⁻¹ * (MvPolynomial.coeff (a + wordDerivativeCounts s) P * (wordDerivativeFactorial s * ∏ i, ((a i + s.count i).choose (s.count i) : ℚ))) = _ calc _ = ((wordDerivativeFactorial s)⁻¹ * wordDerivativeFactorial s) * (MvPolynomial.coeff (a + wordDerivativeCounts s) P * ∏ i, ((a i + s.count i).choose (s.count i) : ℚ)) := by ring _ = _ := by rw [inv_mul_cancel₀ (wordDerivativeFactorial_ne_zero s), one_mul] def dividedWordPDeriv_integral (s : List I) (P : MvPolynomial I ℚ) (hP : ∀ a, ∃ z : ℤ, MvPolynomial.coeff a P = (z : ℚ)) : ∀ a, ∃ z : ℤ, MvPolynomial.coeff a (dividedWordPDeriv s P) = (z : ℚ) := by intro a obtain ⟨z, hz⟩ := hP (a + wordDerivativeCounts s) refine ⟨z * ∏ i, ((a i + s.count i).choose (s.count i) : ℤ), ?_⟩ rw [coeff_dividedWordPDeriv, hz] simp def derivativeChooseProduct_le (s : List I) (a : I →₀ ℕ) (r : I → ℕ) (hr : ∀ i, a i + s.count i ≤ r i) : (∏ i, (a i + s.count i).choose (s.count i)) ≤ 2 ^ (∑ i, r i) := by calc _ ≤ ∏ i, 2 ^ r i := Finset.prod_le_prod' (fun i _ => (Nat.choose_le_two_pow _ _).trans (Nat.pow_le_pow_right (by decide) (hr i))) _ = _ := Finset.prod_pow_eq_pow_sum Finset.univ r 2 def weightedPolynomialIndex_dividedWordPDeriv (w : I → ℕ) (β : I → ℚ) (s : List I) (P : MvPolynomial I ℚ) : weightedPolynomialIndex w β (dividedWordPDeriv s P) = weightedPolynomialIndex w β (wordPDeriv s P) := by exact weightedPolynomialIndex_smul w β (inv_ne_zero (wordDerivativeFactorial_ne_zero s)) (wordPDeriv s P) end end Bounty end RothComponent_DividedWordDerivatives /- Component: DividedDerivativeCoefficientNorm; SHA256 a39c7c7bfbfcd4a15a0bef6ac1f673e7eb83c5c91c953956674649d9958d50e8 -/ section RothComponent_DividedDerivativeCoefficientNorm /- Divided derivatives have coefficient growth exponential in the total degree. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I : Type*} [Fintype I] [DecidableEq I] def PolynomialBoxBound (r : I → ℕ) (P : MvPolynomial I ℚ) : Prop := ∀ a ∈ P.support, ∀ i, a i ≤ r i def dividedWordPDeriv_support_shift (s : List I) (P : MvPolynomial I ℚ) {a : I →₀ ℕ} (ha : a ∈ (dividedWordPDeriv s P).support) : a + wordDerivativeCounts s ∈ P.support := by apply MvPolynomial.mem_support_iff.mpr have h := MvPolynomial.mem_support_iff.mp ha rw [coeff_dividedWordPDeriv] at h exact left_ne_zero_of_mul h def polynomialBoxBound_dividedWordPDeriv (s : List I) {r : I → ℕ} {P : MvPolynomial I ℚ} (hP : PolynomialBoxBound r P) : PolynomialBoxBound r (dividedWordPDeriv s P) := by intro a ha i exact (Nat.le_add_right (a i) (wordDerivativeCounts s i)).trans (hP _ (dividedWordPDeriv_support_shift s P ha) i) def polynomialCoeffL1_dividedWordPDeriv (s : List I) (r : I → ℕ) (P : MvPolynomial I ℚ) (hP : PolynomialBoxBound r P) : polynomialCoeffL1 (dividedWordPDeriv s P) ≤ (2 : ℝ) ^ (∑ i, r i) * polynomialCoeffL1 P := by classical let c := wordDerivativeCounts s have hentry (a : I →₀ ℕ) (ha : a ∈ (dividedWordPDeriv s P).support) : ‖MvPolynomial.coeff a (dividedWordPDeriv s P)‖ ≤ (2 : ℝ) ^ (∑ i, r i) * ‖MvPolynomial.coeff (a + c) P‖ := by have hr : ∀ i, a i + s.count i ≤ r i := fun i => hP _ (dividedWordPDeriv_support_shift s P ha) i have hchoose := derivativeChooseProduct_le s a r hr have hnorm : ‖(∏ i, ((a i + s.count i).choose (s.count i) : ℚ))‖ ≤ (2 : ℝ) ^ (∑ i, r i) := by rw [← Nat.cast_prod] rw [← Rat.norm_cast_real] push_cast rw [Real.norm_of_nonneg (by positivity)] exact (show ((∏ i, (a i + s.count i).choose (s.count i)) : ℝ) ≤ (2 : ℝ) ^ (∑ i, r i) from by exact_mod_cast hchoose) rw [coeff_dividedWordPDeriv, norm_mul, mul_comm] exact mul_le_mul_of_nonneg_right hnorm (norm_nonneg _) have hsum : (∑ a ∈ (dividedWordPDeriv s P).support, ‖MvPolynomial.coeff (a + c) P‖) ≤ polynomialCoeffL1 P := by rw [← Finset.sum_image (f := fun a : I →₀ ℕ => ‖MvPolynomial.coeff a P‖) (g := fun a : I →₀ ℕ => a + c) (s := (dividedWordPDeriv s P).support) (by intro a ha b hb hab; exact add_right_cancel hab)] apply Finset.sum_le_sum_of_subset_of_nonneg · intro b hb obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hb exact dividedWordPDeriv_support_shift s P ha · intro b _ _ exact norm_nonneg _ calc _ ≤ ∑ a ∈ (dividedWordPDeriv s P).support, (2 : ℝ) ^ (∑ i, r i) * ‖MvPolynomial.coeff (a + c) P‖ := Finset.sum_le_sum hentry _ = (2 : ℝ) ^ (∑ i, r i) * (∑ a ∈ (dividedWordPDeriv s P).support, ‖MvPolynomial.coeff (a + c) P‖) := (Finset.mul_sum ..).symm _ ≤ _ := mul_le_mul_of_nonneg_left hsum (by positivity) def polynomialCoeffL1_double_dividedWordPDeriv (s t : List I) (r : I → ℕ) (P : MvPolynomial I ℚ) (hP : PolynomialBoxBound r P) : polynomialCoeffL1 (dividedWordPDeriv s (dividedWordPDeriv t P)) ≤ (4 : ℝ) ^ (∑ i, r i) * polynomialCoeffL1 P := by calc _ ≤ (2 : ℝ) ^ (∑ i, r i) * polynomialCoeffL1 (dividedWordPDeriv t P) := polynomialCoeffL1_dividedWordPDeriv s r _ (polynomialBoxBound_dividedWordPDeriv t hP) _ ≤ (2 : ℝ) ^ (∑ i, r i) * ((2 : ℝ) ^ (∑ i, r i) * polynomialCoeffL1 P) := mul_le_mul_of_nonneg_left (polynomialCoeffL1_dividedWordPDeriv t r P hP) (by positivity) _ = _ := by rw [← mul_assoc, ← mul_pow]; norm_num end end Bounty end RothComponent_DividedDerivativeCoefficientNorm /- Component: IntegerRankOneFactors; SHA256 f8775fc8d0e76bdf1c7c6dc5e50b9844470bad72656928fd032690e50a3ac29d -/ section RothComponent_IntegerRankOneFactors /- Integer factors of a nonzero rank-one integer matrix, obtained by making a column primitive and using its integral Bezout coefficients. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I J : Type*} [Fintype I] [Fintype J] /-- Rank-one integer matrices admit integral outer factors, with primitive left factor. -/ def integer_rankOne_factors (A : I → J → ℤ) (hA : ∃ i j, A i j ≠ 0) (hminor : ∀ i k j l, A i j * A k l = A i l * A k j) : ∃ (a : I → ℤ) (b : J → ℤ), (∀ i j, A i j = a i * b j) ∧ Finset.univ.gcd a = 1 := by classical obtain ⟨i₀, j₀, hnonzero⟩ := hA obtain ⟨a, ha, hprimitive⟩ := Finset.extract_gcd (s := Finset.univ) (fun i => A i j₀) ⟨i₀, Finset.mem_univ i₀⟩ let g : ℤ := Finset.univ.gcd (fun i => A i j₀) have hscale (i : I) : A i j₀ = g * a i := ha i (Finset.mem_univ i) have hg : g ≠ 0 := Finset.gcd_ne_zero_iff.mpr ⟨i₀, Finset.mem_univ i₀, hnonzero⟩ have hcross (i k : I) (j : J) : a i * A k j = a k * A i j := by apply mul_left_cancel₀ hg have hm := hminor i k j₀ j rw [hscale i, hscale k] at hm calc g * (a i * A k j) = (g * a i) * A k j := by ring _ = A i j * (g * a k) := hm _ = g * (a k * A i j) := by ring obtain ⟨f, hf⟩ := Finset.gcd_eq_sum_mul Finset.univ a rw [hprimitive] at hf let b : J → ℤ := fun j => ∑ k, f k * A k j refine ⟨a, b, ?_, hprimitive⟩ intro i j symm change a i * (∑ k, f k * A k j) = A i j calc _ = ∑ k, a i * (f k * A k j) := Finset.mul_sum _ _ _ _ = ∑ k, (a k * f k) * A i j := by apply Finset.sum_congr rfl intro k _ calc a i * (f k * A k j) = f k * (a i * A k j) := by ring _ = f k * (a k * A i j) := by rw [hcross] _ = (a k * f k) * A i j := by ring _ = (∑ k, a k * f k) * A i j := (Finset.sum_mul _ _ _).symm _ = A i j := by rw [← hf, one_mul] def integer_rankOne_factors_of_ne_zero (A : I → J → ℤ) (hA : A ≠ 0) (hminor : ∀ i k j l, A i j * A k l = A i l * A k j) : ∃ (a : I → ℤ) (b : J → ℤ), (∀ i j, A i j = a i * b j) ∧ Finset.univ.gcd a = 1 := by apply integer_rankOne_factors A _ hminor by_contra! hh exact hA (funext fun i => funext fun j => hh i j) /-- A rational outer factorization of an integer matrix already forces integer factors. -/ def integer_rankOne_factors_of_rat (A : I → J → ℤ) (hA : A ≠ 0) (u : I → ℚ) (v : J → ℚ) (huv : ∀ i j, (A i j : ℚ) = u i * v j) : ∃ (a : I → ℤ) (b : J → ℤ), (∀ i j, A i j = a i * b j) ∧ Finset.univ.gcd a = 1 := by apply integer_rankOne_factors_of_ne_zero A hA intro i k j l have hh : (A i j : ℚ) * (A k l : ℚ) = (A i l : ℚ) * (A k j : ℚ) := by simp only [huv] ring exact_mod_cast hh /-- Nonzero rational outer factors differ from the integral ones by reciprocal scalars. -/ def integer_rankOne_factors_with_rat_scalars (A : I → J → ℤ) (hA : A ≠ 0) (u : I → ℚ) (v : J → ℚ) (huv : ∀ i j, (A i j : ℚ) = u i * v j) : ∃ (a : I → ℤ) (b : J → ℤ) (c : ℚ), c ≠ 0 ∧ (∀ i j, A i j = a i * b j) ∧ Finset.univ.gcd a = 1 ∧ (∀ i, (a i : ℚ) = c * u i) ∧ (∀ j, (b j : ℚ) = c⁻¹ * v j) := by obtain ⟨a, b, hab, hprimitive⟩ := integer_rankOne_factors_of_rat A hA u v huv have hex : ∃ i j, A i j ≠ 0 := by by_contra! hh exact hA (funext fun i => funext fun j => hh i j) obtain ⟨i₀, j₀, hnonzero⟩ := hex have hnrat : (A i₀ j₀ : ℚ) ≠ 0 := Int.cast_ne_zero.mpr hnonzero have hu : u i₀ ≠ 0 := left_ne_zero_of_mul (huv i₀ j₀ ▸ hnrat) have hv : v j₀ ≠ 0 := right_ne_zero_of_mul (huv i₀ j₀ ▸ hnrat) have ha : (a i₀ : ℚ) ≠ 0 := by exact_mod_cast left_ne_zero_of_mul (hab i₀ j₀ ▸ hnonzero) have hb : (b j₀ : ℚ) ≠ 0 := by exact_mod_cast right_ne_zero_of_mul (hab i₀ j₀ ▸ hnonzero) let c : ℚ := v j₀ / (b j₀ : ℚ) have hc : c ≠ 0 := div_ne_zero hv hb have haq (i : I) : (a i : ℚ) = c * u i := by apply (mul_right_cancel₀ hb) calc (a i : ℚ) * (b j₀ : ℚ) = (A i j₀ : ℚ) := by rw [hab]; norm_cast _ = u i * v j₀ := huv i j₀ _ = (c * u i) * (b j₀ : ℚ) := by dsimp [c] rw [mul_right_comm, div_mul_cancel₀ _ hb, mul_comm] have hbq (j : J) : (b j : ℚ) = c⁻¹ * v j := by apply (mul_left_cancel₀ ha) calc (a i₀ : ℚ) * (b j : ℚ) = (A i₀ j : ℚ) := by rw [hab]; norm_cast _ = u i₀ * v j := huv i₀ j _ = (a i₀ : ℚ) * (c⁻¹ * v j) := by rw [haq] calc u i₀ * v j = (c * c⁻¹) * (u i₀ * v j) := by rw [mul_inv_cancel₀ hc, one_mul] _ = _ := by ring exact ⟨a, b, c, hc, hab, hprimitive, haq, hbq⟩ end end Bounty end RothComponent_IntegerRankOneFactors /- Component: IntegerSeparatedPolynomialFactors; SHA256 dc689aa94900a5b76e9ec64ef87efd347952f4ca61318992055d148b467b33c3 -/ section RothComponent_IntegerSeparatedPolynomialFactors /- Integral separated factors of an integer polynomial known to split rationally. The finite coefficient matrix is indexed by the supports of the rational factors. -/ namespace Bounty noncomputable section open scoped BigOperators Polynomial variable {I : Type*} def separatedPolynomial_coeff {R : Type*} [CommSemiring R] (U₂ : MvPolynomial I R) (U₁ : Polynomial R) (d : I →₀ ℕ) (n : ℕ) : MvPolynomial.coeff d ((Polynomial.C U₂ * U₁.map MvPolynomial.C).coeff n) = MvPolynomial.coeff d U₂ * U₁.coeff n := by rw [Polynomial.coeff_C_mul, Polynomial.coeff_map, mul_comm U₂, MvPolynomial.coeff_C_mul, mul_comm] private def reconstruct_mv_rat (U : MvPolynomial I ℚ) (a : U.support → ℤ) (c : ℚ) (ha : ∀ d, (a d : ℚ) = c * MvPolynomial.coeff d.1 U) : MvPolynomial.map (Int.castRingHom ℚ) (∑ d : U.support, MvPolynomial.monomial d.1 (a d)) = c • U := by classical simp only [map_sum, MvPolynomial.map_monomial] calc (∑ d : U.support, MvPolynomial.monomial d.1 (a d : ℚ)) = ∑ d : U.support, c • MvPolynomial.monomial d.1 (MvPolynomial.coeff d.1 U) := by apply Finset.sum_congr rfl intro d _ rw [ha] simp only [MvPolynomial.smul_monomial, smul_eq_mul] _ = c • (∑ d : U.support, MvPolynomial.monomial d.1 (MvPolynomial.coeff d.1 U)) := Finset.smul_sum.symm _ = c • U := by congr 1 calc _ = ∑ d ∈ U.support, MvPolynomial.monomial d (MvPolynomial.coeff d U) := Finset.sum_coe_sort U.support (fun d => MvPolynomial.monomial d (MvPolynomial.coeff d U)) _ = U := MvPolynomial.support_sum_monomial_coeff U private def reconstruct_uni_rat (U : Polynomial ℚ) (a : U.support → ℤ) (c : ℚ) (ha : ∀ n, (a n : ℚ) = c * U.coeff n.1) : (∑ n : U.support, Polynomial.monomial n.1 (a n)).map (Int.castRingHom ℚ) = c • U := by classical simp only [Polynomial.map_sum, Polynomial.map_monomial] calc (∑ n : U.support, Polynomial.monomial n.1 (a n : ℚ)) = ∑ n : U.support, c • Polynomial.monomial n.1 (U.coeff n.1) := by apply Finset.sum_congr rfl intro n _ rw [ha] simp only [Polynomial.smul_monomial, smul_eq_mul] _ = c • (∑ n : U.support, Polynomial.monomial n.1 (U.coeff n.1)) := Finset.smul_sum.symm _ = c • U := by congr 1 calc _ = ∑ n ∈ U.support, Polynomial.monomial n (U.coeff n) := Finset.sum_coe_sort U.support (fun n => Polynomial.monomial n (U.coeff n)) _ = U := Polynomial.sum_monomial_eq U /-- An integer polynomial with a rational separated factorization has integer separated factors. Their rational images differ from the original factors by reciprocal scalars. -/ def integer_separated_polynomial_factors (V : Polynomial (MvPolynomial I ℤ)) (U₂ : MvPolynomial I ℚ) (U₁ : Polynomial ℚ) (hU₂ : U₂ ≠ 0) (hU₁ : U₁ ≠ 0) (hV : V.map (MvPolynomial.map (Int.castRingHom ℚ)) = Polynomial.C U₂ * U₁.map MvPolynomial.C) : ∃ (F₂ : MvPolynomial I ℤ) (F₁ : Polynomial ℤ) (c : ℚ), F₂ ≠ 0 ∧ F₁ ≠ 0 ∧ c ≠ 0 ∧ V = Polynomial.C F₂ * F₁.map MvPolynomial.C ∧ MvPolynomial.map (Int.castRingHom ℚ) F₂ = c • U₂ ∧ F₁.map (Int.castRingHom ℚ) = c⁻¹ • U₁ := by classical let A : U₂.support → U₁.support → ℤ := fun d n => MvPolynomial.coeff d.1 (V.coeff n.1) have hcoeff (d : I →₀ ℕ) (n : ℕ) : ((MvPolynomial.coeff d (V.coeff n) : ℤ) : ℚ) = MvPolynomial.coeff d U₂ * U₁.coeff n := by have hh := congrArg (fun W : Polynomial (MvPolynomial I ℚ) => MvPolynomial.coeff d (W.coeff n)) hV simpa only [Polynomial.coeff_map, MvPolynomial.coeff_map, Int.coe_castRingHom, separatedPolynomial_coeff] using hh have hA : A ≠ 0 := by obtain ⟨d, hd⟩ := MvPolynomial.support_nonempty.mpr hU₂ obtain ⟨n, hn⟩ := Polynomial.support_nonempty.mpr hU₁ intro hz have hh := hcoeff d n have haz : A ⟨d, hd⟩ ⟨n, hn⟩ = 0 := congrFun (congrFun hz ⟨d, hd⟩) ⟨n, hn⟩ change MvPolynomial.coeff d (V.coeff n) = 0 at haz rw [haz, Int.cast_zero] at hh exact (mul_ne_zero (MvPolynomial.mem_support_iff.mp hd) (Polynomial.mem_support_iff.mp hn)) hh.symm obtain ⟨a, b, c, hc, hab, _, ha, hb⟩ := integer_rankOne_factors_with_rat_scalars A hA (fun d => MvPolynomial.coeff d.1 U₂) (fun n => U₁.coeff n.1) (fun d n => hcoeff d.1 n.1) let F₂ : MvPolynomial I ℤ := ∑ d : U₂.support, MvPolynomial.monomial d.1 (a d) let F₁ : Polynomial ℤ := ∑ n : U₁.support, Polynomial.monomial n.1 (b n) have hF₂ : MvPolynomial.map (Int.castRingHom ℚ) F₂ = c • U₂ := reconstruct_mv_rat U₂ a c ha have hF₁ : F₁.map (Int.castRingHom ℚ) = c⁻¹ • U₁ := reconstruct_uni_rat U₁ b c⁻¹ hb have hF₂ne : F₂ ≠ 0 := by intro hz rw [hz, map_zero] at hF₂ exact (smul_ne_zero hc hU₂) hF₂.symm have hF₁ne : F₁ ≠ 0 := by intro hz rw [hz, Polynomial.map_zero] at hF₁ exact (smul_ne_zero (inv_ne_zero hc) hU₁) hF₁.symm refine ⟨F₂, F₁, c, hF₂ne, hF₁ne, hc, ?_, hF₂, hF₁⟩ apply Polynomial.ext intro n apply MvPolynomial.ext intro d apply (Int.cast_injective : Function.Injective (fun z : ℤ => (z : ℚ))) rw [separatedPolynomial_coeff, Int.cast_mul, hcoeff] have h₂ := congrArg (MvPolynomial.coeff d) hF₂ have h₁ := congrArg (fun Q : Polynomial ℚ => Q.coeff n) hF₁ simp only [MvPolynomial.coeff_map, Int.coe_castRingHom, MvPolynomial.coeff_smul, smul_eq_mul] at h₂ simp only [Polynomial.coeff_map, Int.coe_castRingHom, Polynomial.coeff_smul, smul_eq_mul] at h₁ rw [h₂, h₁] calc MvPolynomial.coeff d U₂ * U₁.coeff n = (c * c⁻¹) * (MvPolynomial.coeff d U₂ * U₁.coeff n) := by rw [mul_inv_cancel₀ hc, one_mul] _ = _ := by ring end end Bounty end RothComponent_IntegerSeparatedPolynomialFactors /- Component: SeparatedCoefficientNorm; SHA256 d7cff77cebfa685d57d33afcb03be5da94dc8ba82e823c0eeacbea75476bb77e -/ section RothComponent_SeparatedCoefficientNorm /- Exact coefficient-sum norms for separated products, integral lower bounds, and invariance under coefficient embeddings preserving the norm. -/ namespace Bounty noncomputable section open scoped BigOperators Polynomial variable {I R S : Type*} [NormedCommRing R] [NormedCommRing S] def univariateCoeffL1 (P : Polynomial R) : ℝ := ∑ n ∈ P.support, ‖P.coeff n‖ def iteratedCoeffL1 (V : Polynomial (MvPolynomial I R)) : ℝ := ∑ n ∈ V.support, polynomialCoeffL1 (V.coeff n) def univariateCoeffL1_nonneg (P : Polynomial R) : 0 ≤ univariateCoeffL1 P := Finset.sum_nonneg (fun _ _ => norm_nonneg _) def norm_coeff_le_univariateCoeffL1 (P : Polynomial R) (n : ℕ) : ‖P.coeff n‖ ≤ univariateCoeffL1 P := by classical by_cases hn : n ∈ P.support · exact Finset.single_le_sum (fun _ _ => norm_nonneg _) hn · simp only [Polynomial.notMem_support_iff.mp hn, norm_zero] exact univariateCoeffL1_nonneg P def iteratedCoeffL1_sum_of_support_subset (V : Polynomial (MvPolynomial I R)) (s : Finset ℕ) (hs : V.support ⊆ s) : iteratedCoeffL1 V = ∑ n ∈ s, polynomialCoeffL1 (V.coeff n) := by classical apply Finset.sum_subset hs intro n _ hn rw [Polynomial.notMem_support_iff.mp hn, polynomialCoeffL1_zero] def polynomialCoeffL1_smul_eq [NormMulClass R] (a : R) (P : MvPolynomial I R) : polynomialCoeffL1 (a • P) = ‖a‖ * polynomialCoeffL1 P := by rw [polynomialCoeffL1_sum_of_support_subset (a • P) P.support MvPolynomial.support_smul] simp only [MvPolynomial.coeff_smul, smul_eq_mul, norm_mul, polynomialCoeffL1, Finset.mul_sum] def iteratedCoeffL1_separated [NormMulClass R] (F₂ : MvPolynomial I R) (F₁ : Polynomial R) : iteratedCoeffL1 (Polynomial.C F₂ * F₁.map MvPolynomial.C) = polynomialCoeffL1 F₂ * univariateCoeffL1 F₁ := by classical have hs : (Polynomial.C F₂ * F₁.map MvPolynomial.C).support ⊆ F₁.support := by intro n hn by_contra hn' have hz : (Polynomial.C F₂ * F₁.map MvPolynomial.C).coeff n = 0 := by rw [Polynomial.coeff_C_mul, Polynomial.coeff_map, Polynomial.notMem_support_iff.mp hn', map_zero, mul_zero] exact Polynomial.mem_support_iff.mp hn hz rw [iteratedCoeffL1_sum_of_support_subset _ F₁.support hs] simp only [Polynomial.coeff_C_mul, Polynomial.coeff_map] have he (n : ℕ) : F₂ * MvPolynomial.C (F₁.coeff n) = (F₁.coeff n) • F₂ := by rw [MvPolynomial.smul_eq_C_mul, mul_comm] simp_rw [he, polynomialCoeffL1_smul_eq] rw [← Finset.sum_mul, mul_comm] rfl def one_le_polynomialCoeffL1_int {P : MvPolynomial I ℤ} (hP : P ≠ 0) : 1 ≤ polynomialCoeffL1 P := by obtain ⟨d, hd⟩ := MvPolynomial.exists_coeff_ne_zero hP have hnorm : (1 : ℝ) ≤ ‖MvPolynomial.coeff d P‖ := by rw [Int.norm_eq_abs] exact_mod_cast Int.one_le_abs hd exact hnorm.trans (norm_coeff_le_polynomialCoeffL1 P d) def one_le_univariateCoeffL1_int {P : Polynomial ℤ} (hP : P ≠ 0) : 1 ≤ univariateCoeffL1 P := by obtain ⟨n, hn⟩ := Polynomial.support_nonempty.mpr hP have hnorm : (1 : ℝ) ≤ ‖P.coeff n‖ := by rw [Int.norm_eq_abs] exact_mod_cast Int.one_le_abs (Polynomial.mem_support_iff.mp hn) exact hnorm.trans (norm_coeff_le_univariateCoeffL1 P n) def separated_factor_log_bounds (F₂ : MvPolynomial I ℤ) (F₁ : Polynomial ℤ) (hF₂ : F₂ ≠ 0) (hF₁ : F₁ ≠ 0) : 0 ≤ Real.log (polynomialCoeffL1 F₂) ∧ 0 ≤ Real.log (univariateCoeffL1 F₁) ∧ Real.log (polynomialCoeffL1 F₂) ≤ Real.log (iteratedCoeffL1 (Polynomial.C F₂ * F₁.map MvPolynomial.C)) ∧ Real.log (univariateCoeffL1 F₁) ≤ Real.log (iteratedCoeffL1 (Polynomial.C F₂ * F₁.map MvPolynomial.C)) := by have h₂ := one_le_polynomialCoeffL1_int hF₂ have h₁ := one_le_univariateCoeffL1_int hF₁ rw [iteratedCoeffL1_separated] refine ⟨Real.log_nonneg h₂, Real.log_nonneg h₁, ?_, ?_⟩ · apply Real.log_le_log (lt_of_lt_of_le zero_lt_one h₂) exact le_mul_of_one_le_right (polynomialCoeffL1_nonneg F₂) h₁ · apply Real.log_le_log (lt_of_lt_of_le zero_lt_one h₁) exact le_mul_of_one_le_left (univariateCoeffL1_nonneg F₁) h₂ def polynomialCoeffL1_map (f : R →+* S) (hf : Function.Injective f) (hnorm : ∀ a, ‖f a‖ = ‖a‖) (P : MvPolynomial I R) : polynomialCoeffL1 (MvPolynomial.map f P) = polynomialCoeffL1 P := by classical unfold polynomialCoeffL1 rw [MvPolynomial.support_map_of_injective P hf] simp only [MvPolynomial.coeff_map, hnorm] def univariateCoeffL1_map (f : R →+* S) (hf : Function.Injective f) (hnorm : ∀ a, ‖f a‖ = ‖a‖) (P : Polynomial R) : univariateCoeffL1 (P.map f) = univariateCoeffL1 P := by classical unfold univariateCoeffL1 rw [Polynomial.support_map_of_injective P hf] simp only [Polynomial.coeff_map, hnorm] def iteratedCoeffL1_map (f : R →+* S) (hf : Function.Injective f) (hnorm : ∀ a, ‖f a‖ = ‖a‖) (V : Polynomial (MvPolynomial I R)) : iteratedCoeffL1 (V.map (MvPolynomial.map f)) = iteratedCoeffL1 V := by classical unfold iteratedCoeffL1 rw [Polynomial.support_map_of_injective V (MvPolynomial.map_injective f hf)] simp only [Polynomial.coeff_map, polynomialCoeffL1_map f hf hnorm] def polynomialCoeffL1_map_int_rat (P : MvPolynomial I ℤ) : polynomialCoeffL1 (MvPolynomial.map (Int.castRingHom ℚ) P) = polynomialCoeffL1 P := polynomialCoeffL1_map (Int.castRingHom ℚ) Int.cast_injective Int.norm_cast_rat P def iteratedCoeffL1_map_int_rat (V : Polynomial (MvPolynomial I ℤ)) : iteratedCoeffL1 (V.map (MvPolynomial.map (Int.castRingHom ℚ))) = iteratedCoeffL1 V := iteratedCoeffL1_map (Int.castRingHom ℚ) Int.cast_injective Int.norm_cast_rat V end end Bounty end RothComponent_SeparatedCoefficientNorm /- Component: RothDerivativeFactorization; SHA256 ee5830d1622c5270be282fd3d302ac68f47984767bb609af5be794a2e1973992 -/ section RothComponent_RothDerivativeFactorization /- The actual mixed-derivative determinant in the rational Roth argument. -/ noncomputable section open Polynomial MvPolynomial Matrix Finset namespace Bounty def wordCoefficientDerivative {m : ℕ} (w : List (Fin m)) : (MvPolynomial (Fin m) ℚ)[X] →ₗ[ℚ] (MvPolynomial (Fin m) ℚ)[X] := Polynomial.lsum fun n => ((Polynomial.monomial n).restrictScalars ℚ).comp (wordPDeriv w) def wordCoefficientDerivative_coeff {m : ℕ} (w : List (Fin m)) (P : (MvPolynomial (Fin m) ℚ)[X]) (n : ℕ) : (wordCoefficientDerivative w P).coeff n = wordPDeriv w (P.coeff n) := by classical by_cases hn : n ∈ P.support · simp [wordCoefficientDerivative, Polynomial.lsum_apply, Polynomial.sum_def, Polynomial.coeff_monomial, hn] · have hz : P.coeff n = 0 := Polynomial.notMem_support_iff.mp hn simp [wordCoefficientDerivative, Polynomial.lsum_apply, Polynomial.sum_def, Polynomial.coeff_monomial, hn, hz] def wordCoefficientDerivative_C_mul_map {m : ℕ} (w : List (Fin m)) (a : MvPolynomial (Fin m) ℚ) (q : ℚ[X]) : wordCoefficientDerivative w (Polynomial.C a * q.map MvPolynomial.C) = Polynomial.C (wordPDeriv w a) * q.map MvPolynomial.C := by ext n simp only [wordCoefficientDerivative_coeff, Polynomial.coeff_C_mul, Polynomial.coeff_map] rw [mul_comm a, MvPolynomial.C_mul', map_smul, ← MvPolynomial.C_mul', mul_comm] def rothMixedDerivative {m : ℕ} (w : List (Fin m)) (n : ℕ) (P : (MvPolynomial (Fin m) ℚ)[X]) : (MvPolynomial (Fin m) ℚ)[X] := Polynomial.derivative^[n] (wordCoefficientDerivative w P) def rothMixedDerivative_separated_sum {m k : ℕ} (P : (MvPolynomial (Fin m) ℚ)[X]) (φ : Fin k → MvPolynomial (Fin m) ℚ) (ψ : Fin k → ℚ[X]) (hsplit : P = ∑ j, Polynomial.C (φ j) * (ψ j).map MvPolynomial.C) (w : List (Fin m)) (n : ℕ) : rothMixedDerivative w n P = ∑ j, Polynomial.C (wordPDeriv w (φ j)) * ((Polynomial.derivative^[n]) (ψ j)).map MvPolynomial.C := by unfold rothMixedDerivative rw [hsplit, map_sum, Polynomial.iterate_derivative_sum] apply Finset.sum_congr rfl intro j hj rw [wordCoefficientDerivative_C_mul_map, Polynomial.iterate_derivative_C_mul, Polynomial.iterate_derivative_map] def rothMixedDerivative_matrix_factorization {m k : ℕ} (P : (MvPolynomial (Fin m) ℚ)[X]) (φ : Fin k → MvPolynomial (Fin m) ℚ) (ψ : Fin k → ℚ[X]) (hsplit : P = ∑ j, Polynomial.C (φ j) * (ψ j).map MvPolynomial.C) (w : Fin k → List (Fin m)) : (Matrix.of fun i j : Fin k => rothMixedDerivative (w i) j.val P) = Polynomial.C.mapMatrix (fun i j : Fin k => wordPDeriv (w i) (φ j)) * (Polynomial.mapRingHom MvPolynomial.C).mapMatrix (Matrix.transpose (fun i j : Fin k => (Polynomial.derivative^[i.val]) (ψ j))) := by funext i j change rothMixedDerivative (w i) j.val P = ∑ s, Polynomial.C (wordPDeriv (w i) (φ s)) * ((Polynomial.derivative^[j.val]) (ψ s)).map MvPolynomial.C exact rothMixedDerivative_separated_sum P φ ψ hsplit (w i) j.val def rothMixedDerivative_det_factorization {m k : ℕ} (P : (MvPolynomial (Fin m) ℚ)[X]) (φ : Fin k → MvPolynomial (Fin m) ℚ) (ψ : Fin k → ℚ[X]) (hsplit : P = ∑ j, Polynomial.C (φ j) * (ψ j).map MvPolynomial.C) (w : Fin k → List (Fin m)) : Matrix.det (fun i j : Fin k => rothMixedDerivative (w i) j.val P) = Polynomial.C (Matrix.det (fun i j : Fin k => wordPDeriv (w i) (φ j))) * (Matrix.det (fun i j : Fin k => (Polynomial.derivative^[i.val]) (ψ j))).map MvPolynomial.C := by change (Matrix.of fun i j : Fin k => rothMixedDerivative (w i) j.val P).det = _ erw [rothMixedDerivative_matrix_factorization P φ ψ hsplit w, Matrix.det_mul, ← Polynomial.C.map_det] congr 1 exact ((Polynomial.mapRingHom MvPolynomial.C).map_det (Matrix.transpose (Matrix.of fun i j : Fin k => (Polynomial.derivative^[i.val]) (ψ j)))).symm.trans (by rw [Matrix.det_transpose]) def polynomial_det_natDegree_le {k r : ℕ} (A : Matrix (Fin k) (Fin k) ℚ[X]) (hA : ∀ i j, (A i j).natDegree ≤ r) : A.det.natDegree ≤ k * r := by classical rw [Matrix.det_apply] apply Polynomial.natDegree_sum_le_of_forall_le intro σ hσ calc (Equiv.Perm.sign σ • ∏ j, A (σ j) j).natDegree ≤ (∏ j, A (σ j) j).natDegree := Polynomial.natDegree_smul_le _ _ _ ≤ ∑ j, (A (σ j) j).natDegree := Polynomial.natDegree_prod_le _ _ _ ≤ ∑ _j : Fin k, r := Finset.sum_le_sum (fun j _ => hA (σ j) j) _ = k * r := by simp end Bounty end end RothComponent_RothDerivativeFactorization /- Component: RothDividedFactorization; SHA256 395032c6da3ecff164cf75cbcf9df74464ca9dfec1858d98e6fd31a5bd719441 -/ section RothComponent_RothDividedFactorization /- Divided derivative factorization with the last variable isolated. -/ noncomputable section open Polynomial MvPolynomial Matrix Finset namespace Bounty def lastVariableEquiv (m : ℕ) : MvPolynomial (Fin (m + 1)) ℚ ≃ₐ[ℚ] (MvPolynomial (Fin m) ℚ)[X] := (MvPolynomial.renameEquiv ℚ (finRotate (m + 1))).trans (MvPolynomial.finSuccEquiv ℚ m) def finRotate_castSucc {m : ℕ} (i : Fin m) : finRotate (m + 1) i.castSucc = i.succ := by exact finRotate_of_lt i.isLt def lastVariableEquiv_natDegree {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) : (lastVariableEquiv m P).natDegree = P.degreeOf (Fin.last m) := by change (MvPolynomial.finSuccEquiv ℚ m (MvPolynomial.rename (finRotate (m + 1)) P)).natDegree = _ rw [MvPolynomial.natDegree_finSuccEquiv, ← finRotate_last] exact MvPolynomial.degreeOf_rename_of_injective (finRotate (m + 1)).injective _ def lastVariableEquiv_coeff_degreeOf {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (i : Fin m) (n : ℕ) : ((lastVariableEquiv m P).coeff n).degreeOf i ≤ P.degreeOf i.castSucc := by change ((MvPolynomial.finSuccEquiv ℚ m (MvPolynomial.rename (finRotate (m + 1)) P)).coeff n).degreeOf i ≤ _ calc _ ≤ (MvPolynomial.rename (finRotate (m + 1)) P).degreeOf i.succ := MvPolynomial.degreeOf_coeff_finSuccEquiv _ _ _ _ = _ := by rw [← finRotate_castSucc i]; exact MvPolynomial.degreeOf_rename_of_injective (finRotate (m + 1)).injective i.castSucc def finSuccEquiv_pderiv_zero {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) : MvPolynomial.finSuccEquiv ℚ m (MvPolynomial.pderiv 0 P) = Polynomial.derivative (MvPolynomial.finSuccEquiv ℚ m P) := by apply Polynomial.ext intro n apply MvPolynomial.ext intro a have he : a.cons n + Finsupp.single 0 1 = a.cons (n + 1) := by ext j cases j using Fin.cases <;> simp simp only [MvPolynomial.finSuccEquiv_coeff_coeff, MvPolynomial.coeff_pderiv, Polynomial.coeff_derivative, he, Finsupp.cons_zero] rw [show (n : MvPolynomial (Fin m) ℚ) + 1 = MvPolynomial.C (n + 1 : ℚ) by simp, mul_comm (((MvPolynomial.finSuccEquiv ℚ m) P).coeff (n + 1)), MvPolynomial.coeff_C_mul, MvPolynomial.finSuccEquiv_coeff_coeff, mul_comm] def finSuccEquiv_pderiv_succ {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (i : Fin m) : MvPolynomial.finSuccEquiv ℚ m (MvPolynomial.pderiv i.succ P) = wordCoefficientDerivative [i] (MvPolynomial.finSuccEquiv ℚ m P) := by apply Polynomial.ext intro n apply MvPolynomial.ext intro a have he : a.cons n + Finsupp.single i.succ 1 = (a + Finsupp.single i 1).cons n := by ext j cases j using Fin.cases <;> simp [Finsupp.single_apply] simp only [wordCoefficientDerivative_coeff, wordPDeriv_cons, wordPDeriv_nil, MvPolynomial.finSuccEquiv_coeff_coeff, MvPolynomial.coeff_pderiv, he, Finsupp.cons_succ] def lastVariableEquiv_pderiv_last {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) : lastVariableEquiv m (MvPolynomial.pderiv (Fin.last m) P) = Polynomial.derivative (lastVariableEquiv m P) := by change MvPolynomial.finSuccEquiv ℚ m (MvPolynomial.rename (finRotate (m + 1)) (MvPolynomial.pderiv _ P)) = _ rw [← MvPolynomial.pderiv_rename (finRotate (m + 1)).injective, finRotate_last] exact finSuccEquiv_pderiv_zero _ def lastVariableEquiv_pderiv_castSucc {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (i : Fin m) : lastVariableEquiv m (MvPolynomial.pderiv i.castSucc P) = wordCoefficientDerivative [i] (lastVariableEquiv m P) := by change MvPolynomial.finSuccEquiv ℚ m (MvPolynomial.rename (finRotate (m + 1)) (MvPolynomial.pderiv _ P)) = _ rw [← MvPolynomial.pderiv_rename (finRotate (m + 1)).injective, finRotate_castSucc] exact finSuccEquiv_pderiv_succ _ _ def lastVariableEquiv_word_castSucc {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (w : List (Fin m)) : lastVariableEquiv m (wordPDeriv (w.map Fin.castSucc) P) = wordCoefficientDerivative w (lastVariableEquiv m P) := by induction w with | nil => apply Polynomial.ext intro n simp [wordCoefficientDerivative_coeff, wordPDeriv_nil] | cons i w hw => simp only [List.map_cons, wordPDeriv_cons, lastVariableEquiv_pderiv_castSucc, hw] apply Polynomial.ext intro n simp [wordCoefficientDerivative_coeff, wordPDeriv_cons, wordPDeriv_nil] def lastVariableEquiv_word_last {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (n : ℕ) : lastVariableEquiv m (wordPDeriv (List.replicate n (Fin.last m)) P) = (Polynomial.derivative^[n]) (lastVariableEquiv m P) := by induction n with | zero => simp [wordPDeriv_nil] | succ n hn => rw [List.replicate_succ, wordPDeriv_cons, lastVariableEquiv_pderiv_last, hn, Function.iterate_succ_apply'] def degreeOf_pderiv_le {I : Type*} (P : MvPolynomial I ℚ) (i j : I) : (MvPolynomial.pderiv j P).degreeOf i ≤ P.degreeOf i := by classical apply MvPolynomial.degreeOf_le_iff.mpr intro a ha have hc := MvPolynomial.mem_support_iff.mp ha rw [MvPolynomial.coeff_pderiv] at hc have hmem : a + Finsupp.single j 1 ∈ P.support := MvPolynomial.mem_support_iff.mpr (left_ne_zero_of_mul hc) exact (Nat.le_add_right _ _).trans (MvPolynomial.le_degreeOf_of_mem_support i hmem) def degreeOf_wordPDeriv_le {I : Type*} (P : MvPolynomial I ℚ) (w : List I) (i : I) : (wordPDeriv w P).degreeOf i ≤ P.degreeOf i := by induction w with | nil => simp [wordPDeriv_nil] | cons j w hw => exact (degreeOf_pderiv_le _ i j).trans hw def mvPolynomial_det_degreeOf_le {I : Type*} {k r : ℕ} (A : Matrix (Fin k) (Fin k) (MvPolynomial I ℚ)) (a : I) (hA : ∀ i j, (A i j).degreeOf a ≤ r) : A.det.degreeOf a ≤ k * r := by classical rw [Matrix.det_apply] apply (MvPolynomial.degreeOf_sum_le _ _ _).trans apply Finset.sup_le intro σ hσ have hs : (Equiv.Perm.sign σ • ∏ j, A (σ j) j).degreeOf a ≤ (∏ j, A (σ j) j).degreeOf a := by simp only [MvPolynomial.degreeOf_eq_sup] exact Finset.sup_mono MvPolynomial.support_smul calc _ ≤ _ := hs _ ≤ ∑ j, (A (σ j) j).degreeOf a := MvPolynomial.degreeOf_prod_le _ _ _ _ ≤ ∑ _j : Fin k, r := Finset.sum_le_sum (fun j _ => hA (σ j) j) _ = k * r := by simp def lastVariableEquiv_rename_castSucc {m : ℕ} (P : MvPolynomial (Fin m) ℚ) : lastVariableEquiv m (MvPolynomial.rename Fin.castSucc P) = Polynomial.C P := by induction P using MvPolynomial.induction_on with | C a => simp [lastVariableEquiv, MvPolynomial.finSuccEquiv_apply] | add p q hp hq => simp [hp, hq] | mul_X p i hp => rw [map_mul, map_mul, hp, map_mul] apply congrArg (fun q => Polynomial.C p * q) change MvPolynomial.finSuccEquiv ℚ m (MvPolynomial.rename (finRotate (m + 1)) (MvPolynomial.rename Fin.castSucc (MvPolynomial.X i))) = _ rw [MvPolynomial.rename_X, MvPolynomial.rename_X, finRotate_castSucc, MvPolynomial.finSuccEquiv_X_succ] def lastVariableEquiv_aeval_last {m : ℕ} (P : ℚ[X]) : lastVariableEquiv m (Polynomial.aeval (MvPolynomial.X (Fin.last m)) P) = P.map MvPolynomial.C := by induction P using Polynomial.induction_on' with | add p q hp hq => simp [hp, hq] | monomial n a => rw [← Polynomial.C_mul_X_pow_eq_monomial] simp [lastVariableEquiv, MvPolynomial.finSuccEquiv_apply] def rothDividedDerivative {m : ℕ} (w : List (Fin m)) (n : ℕ) (P : MvPolynomial (Fin (m + 1)) ℚ) : MvPolynomial (Fin (m + 1)) ℚ := dividedWordPDeriv (List.replicate n (Fin.last m)) (dividedWordPDeriv (w.map Fin.castSucc) P) def rothRowScalar {m : ℕ} (w : List (Fin m)) : ℚ := (wordDerivativeFactorial (w.map Fin.castSucc))⁻¹ def rothColumnScalar (m n : ℕ) : ℚ := (wordDerivativeFactorial (List.replicate n (Fin.last m)))⁻¹ def rothRowScalar_ne_zero {m : ℕ} (w : List (Fin m)) : rothRowScalar w ≠ 0 := inv_ne_zero (wordDerivativeFactorial_ne_zero _) def rothColumnScalar_ne_zero (m n : ℕ) : rothColumnScalar m n ≠ 0 := inv_ne_zero (wordDerivativeFactorial_ne_zero _) def lastVariableEquiv_rothDividedDerivative {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (w : List (Fin m)) (n : ℕ) : lastVariableEquiv m (rothDividedDerivative w n P) = rothColumnScalar m n • rothRowScalar w • rothMixedDerivative w n (lastVariableEquiv m P) := by unfold rothDividedDerivative dividedWordPDeriv simp only [LinearMap.smul_apply, map_smul] rw [lastVariableEquiv_word_last, lastVariableEquiv_word_castSucc] exact smul_comm _ _ _ def det_rational_row_smul {R : Type*} [CommRing R] [Algebra ℚ R] {k : ℕ} (c : Fin k → ℚ) (A : Matrix (Fin k) (Fin k) R) : Matrix.det (fun i j => c i • A i j) = (∏ i, c i) • A.det := by change (Matrix.of fun i j => c i • A i j).det = _ simp only [Algebra.smul_def] rw [Matrix.det_mul_column, ← map_prod] def det_rational_column_smul {R : Type*} [CommRing R] [Algebra ℚ R] {k : ℕ} (c : Fin k → ℚ) (A : Matrix (Fin k) (Fin k) R) : Matrix.det (fun i j => c j • A i j) = (∏ i, c i) • A.det := by change (Matrix.of fun i j => c j • A i j).det = _ simp only [Algebra.smul_def] rw [Matrix.det_mul_row, ← map_prod] def lastVariableEquiv_rothDivided_det {m k : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (w : Fin k → List (Fin m)) : lastVariableEquiv m (Matrix.det (fun i j : Fin k => rothDividedDerivative (w i) j.val P)) = (∏ j : Fin k, rothColumnScalar m j.val) • (∏ i : Fin k, rothRowScalar (w i)) • Matrix.det (fun i j : Fin k => rothMixedDerivative (w i) j.val (lastVariableEquiv m P)) := by change (lastVariableEquiv m).toRingHom ((Matrix.of fun i j : Fin k => rothDividedDerivative (w i) j.val P).det) = _ rw [(lastVariableEquiv m).toRingHom.map_det] change Matrix.det (fun i j : Fin k => lastVariableEquiv m (rothDividedDerivative (w i) j.val P)) = _ simp only [lastVariableEquiv_rothDividedDerivative] erw [det_rational_column_smul, det_rational_row_smul] def rational_smul_separated (m : ℕ) (c d : ℚ) (A : MvPolynomial (Fin m) ℚ) (B : ℚ[X]) : d • c • (Polynomial.C A * B.map MvPolynomial.C) = Polynomial.C (c • A) * (d • B).map MvPolynomial.C := by apply Polynomial.ext intro n simp only [Polynomial.coeff_smul, Polynomial.coeff_C_mul, Polynomial.coeff_map] simp only [← MvPolynomial.C_mul', smul_eq_mul, map_mul] ring def exists_rothDivided_factorization {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (hP : P ≠ 0) (r : Fin (m + 1) → ℕ) (hdegree : ∀ i, P.degreeOf i ≤ r i) : ∃ k : ℕ, 1 ≤ k ∧ k ≤ P.degreeOf (Fin.last m) + 1 ∧ k ≤ r (Fin.last m) + 1 ∧ ∃ w : Fin k → List (Fin m), (∀ i, (w i).length ≤ i.val) ∧ ∃ U₂ : MvPolynomial (Fin m) ℚ, ∃ U₁ : ℚ[X], U₂ ≠ 0 ∧ U₁ ≠ 0 ∧ (∀ a, U₂.degreeOf a ≤ k * r a.castSucc) ∧ U₁.natDegree ≤ k * r (Fin.last m) ∧ lastVariableEquiv m (Matrix.det (fun i j : Fin k => rothDividedDerivative (w i) j.val P)) = Polynomial.C U₂ * U₁.map MvPolynomial.C ∧ Matrix.det (fun i j : Fin k => rothDividedDerivative (w i) j.val P) = MvPolynomial.rename Fin.castSucc U₂ * Polynomial.aeval (MvPolynomial.X (Fin.last m)) U₁ ∧ Matrix.det (fun i j : Fin k => rothDividedDerivative (w i) j.val P) ≠ 0 := by classical let Q := lastVariableEquiv m P have hQ : Q ≠ 0 := (map_ne_zero_iff (lastVariableEquiv m) (lastVariableEquiv m).injective).mpr hP obtain ⟨k, hkpos, hk, φ, ψ, hφ, hψ, hφcoeff, hψdeg, hsplit⟩ := mvPolynomial_separated_rank Q hQ obtain ⟨w, hw, hW₂⟩ := exists_generalizedWronskian_ne_zero φ hφ let W₂ := Matrix.det (fun i j : Fin k => wordPDeriv (w i) (φ j)) let W₁ := Matrix.det (fun i j : Fin k => (Polynomial.derivative^[i.val]) (ψ j)) let c : ℚ := ∏ i : Fin k, rothRowScalar (w i) let d : ℚ := ∏ j : Fin k, rothColumnScalar m j.val have hc : c ≠ 0 := Finset.prod_ne_zero_iff.mpr fun i _ => rothRowScalar_ne_zero (w i) have hd : d ≠ 0 := Finset.prod_ne_zero_iff.mpr fun j _ => rothColumnScalar_ne_zero m j.val have hW₁ : W₁ ≠ 0 := iterated_derivative_matrix_det_ne_zero ψ hψ have hW₂deg (a : Fin m) : W₂.degreeOf a ≤ k * r a.castSucc := by apply mvPolynomial_det_degreeOf_le intro i j obtain ⟨n, _, hn⟩ := hφcoeff j exact (degreeOf_wordPDeriv_le _ _ _).trans (by rw [hn] exact (lastVariableEquiv_coeff_degreeOf P a n).trans (hdegree a.castSucc)) have hW₁deg : W₁.natDegree ≤ k * r (Fin.last m) := by apply polynomial_det_natDegree_le intro i j exact (Polynomial.natDegree_iterate_derivative (ψ j) i.val).trans ((Nat.sub_le _ _).trans ((hψdeg j).trans (by rw [lastVariableEquiv_natDegree] exact hdegree _))) let U₂ := c • W₂ let U₁ := d • W₁ have hU₂ : U₂ ≠ 0 := smul_ne_zero hc hW₂ have hU₁ : U₁ ≠ 0 := smul_ne_zero hd hW₁ have hU₂deg (a : Fin m) : U₂.degreeOf a ≤ k * r a.castSucc := by apply le_trans ?_ (hW₂deg a) change (c • W₂).degreeOf a ≤ W₂.degreeOf a simp only [MvPolynomial.degreeOf_eq_sup] exact Finset.sup_mono MvPolynomial.support_smul have hU₁deg : U₁.natDegree ≤ k * r (Fin.last m) := (Polynomial.natDegree_smul_le _ _).trans hW₁deg have hfactor : lastVariableEquiv m (Matrix.det (fun i j : Fin k => rothDividedDerivative (w i) j.val P)) = Polynomial.C U₂ * U₁.map MvPolynomial.C := by rw [lastVariableEquiv_rothDivided_det, rothMixedDerivative_det_factorization Q φ ψ hsplit w] exact rational_smul_separated m c d W₂ W₁ have hactual : Matrix.det (fun i j : Fin k => rothDividedDerivative (w i) j.val P) = MvPolynomial.rename Fin.castSucc U₂ * Polynomial.aeval (MvPolynomial.X (Fin.last m)) U₁ := by apply (lastVariableEquiv m).injective rw [map_mul, lastVariableEquiv_rename_castSucc, lastVariableEquiv_aeval_last] exact hfactor have hnonzero : Matrix.det (fun i j : Fin k => rothDividedDerivative (w i) j.val P) ≠ 0 := by intro hz have hh : Polynomial.C U₂ * U₁.map MvPolynomial.C ≠ 0 := mul_ne_zero (Polynomial.C_ne_zero.mpr hU₂) (Polynomial.map_ne_zero hU₁) apply hh rw [← hfactor, hz, map_zero] have hkactual : k ≤ P.degreeOf (Fin.last m) + 1 := by simpa only [Q, lastVariableEquiv_natDegree] using hk exact ⟨k, hkpos, hkactual, hkactual.trans (Nat.add_le_add_right (hdegree _) 1), w, hw, U₂, U₁, hU₂, hU₁, hU₂deg, hU₁deg, hfactor, hactual, hnonzero⟩ end Bounty end end RothComponent_RothDividedFactorization /- Component: RothDeterminantIndexBound; SHA256 6c3d0930fe3041099d66f0af82d20cac4e4232af12c025172bffeceec79692dc -/ section RothComponent_RothDeterminantIndexBound /- Real normalized determinant-index bounds and the finite triangular sum estimate. -/ namespace Bounty noncomputable section open scoped BigOperators def rothWordWeight {m : ℕ} (r : Fin m → ℕ) (s : List (Fin m)) : ℝ := (wordDerivativeWeight (rothWeight r) s : ℝ) / rothDenominator r def rothWordWeight_eq_sum {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (s : List (Fin m)) : rothWordWeight r s = (s.map (fun i => (1 : ℝ) / r i)).sum := by induction s with | nil => simp [rothWordWeight, wordDerivativeWeight_nil] | cons i s ih => simp only [rothWordWeight, wordDerivativeWeight_cons, Nat.cast_add, add_div, rothWeight_div_denominator hr, List.map_cons, List.sum_cons] at ih ⊢ rw [ih] def rothWordWeight_replicate {m : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (i : Fin m) (n : ℕ) : rothWordWeight r (List.replicate n i) = n / (r i : ℝ) := by rw [rothWordWeight_eq_sum hr] simp [List.map_replicate, List.sum_replicate, nsmul_eq_mul, div_eq_mul_inv] def enat_normalized_sub {a : ℕ∞} (_ha : a ≠ ⊤) (b : ℕ) {D : ℝ} (hD : 0 < D) : ((a - (b : ℕ∞)).toNat : ℝ) / D = max ((a.toNat : ℝ) / D - b / D) 0 := by rw [ENat.toNat_sub (by simp), ENat.toNat_natCast] by_cases hb : b ≤ a.toNat · rw [Nat.cast_sub hb, sub_div, max_eq_left] exact sub_nonneg.mpr (div_le_div_of_nonneg_right (by exact_mod_cast hb) hD.le) · have hab : a.toNat ≤ b := by omega rw [Nat.sub_eq_zero_of_le hab, Nat.cast_zero, zero_div, max_eq_right] exact sub_nonpos.mpr (div_le_div_of_nonneg_right (by exact_mod_cast hab) hD.le) def rothPolynomialIndex_det_row_column_loss {m : ℕ} {J : Type*} [Fintype J] [DecidableEq J] {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (β : Fin m → ℚ) (rows cols : J → List (Fin m)) (P : MvPolynomial (Fin m) ℚ) (hP : P ≠ 0) (A : Matrix J J (MvPolynomial (Fin m) ℚ)) (hdet : A.det ≠ 0) (hloss : ∀ i j, weightedPolynomialIndex (rothWeight r) β P ≤ weightedPolynomialIndex (rothWeight r) β (A i j) + (wordDerivativeWeight (rothWeight r) (rows i) : ℕ∞) + (wordDerivativeWeight (rothWeight r) (cols j) : ℕ∞)) : (∑ j : J, max (rothPolynomialIndex r β P - rothWordWeight r (cols j)) 0) ≤ rothPolynomialIndex r β A.det + ∑ i : J, rothWordWeight r (rows i) := by let a := weightedPolynomialIndex (rothWeight r) β P let V := A.det have ha : a ≠ ⊤ := (weightedPolynomialIndex_finite _ _ hP).ne have hV : weightedPolynomialIndex (rothWeight r) β V ≠ ⊤ := (weightedPolynomialIndex_finite _ _ hdet).ne have hb (j : J) : a - (wordDerivativeWeight (rothWeight r) (cols j) : ℕ∞) ≠ ⊤ := ne_top_of_le_ne_top ha tsub_le_self have hh := weightedPolynomialIndex_det_row_column_loss (rothWeight r) β A a (wordDerivativeWeight (rothWeight r) ∘ rows) (wordDerivativeWeight (rothWeight r) ∘ cols) hloss have hright : weightedPolynomialIndex (rothWeight r) β V + (∑ i, wordDerivativeWeight (rothWeight r) (rows i) : ℕ) ≠ ⊤ := by exact (ENat.add_lt_top.mpr ⟨lt_top_iff_ne_top.mpr hV, by simp⟩).ne have hn := ENat.toNat_le_toNat hh hright simp only [Function.comp_def] at hn rw [ENat.toNat_sum (fun j _ => hb j), ENat.toNat_add hV (by simp), ENat.toNat_natCast] at hn have hreal : ((∑ j : J, (a - (wordDerivativeWeight (rothWeight r) (cols j) : ℕ∞)).toNat : ℕ) : ℝ) ≤ ((weightedPolynomialIndex (rothWeight r) β V).toNat : ℝ) + (∑ i : J, wordDerivativeWeight (rothWeight r) (rows i) : ℕ) := by exact_mod_cast hn have hD : (0 : ℝ) < rothDenominator r := by exact_mod_cast rothDenominator_pos hr have hnorm := div_le_div_of_nonneg_right hreal hD.le simp only [Nat.cast_sum, Finset.sum_div, add_div, enat_normalized_sub ha _ hD] at hnorm exact hnorm def rothPolynomialIndex_divided_mixed_det {m : ℕ} {J : Type*} [Fintype J] [DecidableEq J] {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (β : Fin m → ℚ) (rows cols : J → List (Fin m)) (P : MvPolynomial (Fin m) ℚ) (hP : P ≠ 0) (hdet : Matrix.det (fun i j : J => dividedWordPDeriv (cols j) (dividedWordPDeriv (rows i) P)) ≠ 0) : (∑ j : J, max (rothPolynomialIndex r β P - rothWordWeight r (cols j)) 0) ≤ rothPolynomialIndex r β (Matrix.det (fun i j : J => dividedWordPDeriv (cols j) (dividedWordPDeriv (rows i) P))) + ∑ i : J, rothWordWeight r (rows i) := by apply rothPolynomialIndex_det_row_column_loss hr β rows cols P hP _ hdet intro i j have hrow : weightedPolynomialIndex (rothWeight r) β P ≤ weightedPolynomialIndex (rothWeight r) β (dividedWordPDeriv (rows i) P) + (wordDerivativeWeight (rothWeight r) (rows i) : ℕ∞) := by simpa only [weightedPolynomialIndex_dividedWordPDeriv] using weightedPolynomialIndex_wordPDeriv (rothWeight r) β (rows i) P have hcol : weightedPolynomialIndex (rothWeight r) β (dividedWordPDeriv (rows i) P) ≤ weightedPolynomialIndex (rothWeight r) β (dividedWordPDeriv (cols j) (dividedWordPDeriv (rows i) P)) + (wordDerivativeWeight (rothWeight r) (cols j) : ℕ∞) := by simpa only [weightedPolynomialIndex_dividedWordPDeriv] using weightedPolynomialIndex_wordPDeriv (rothWeight r) β (cols j) (dividedWordPDeriv (rows i) P) have hh := hrow.trans (add_le_add hcol le_rfl) simpa only [add_assoc, add_comm, add_left_comm] using hh def rothPolynomialIndex_divided_mixed_det_progression {m k : ℕ} {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (β : Fin m → ℚ) (rows : Fin k → List (Fin m)) (last : Fin m) (P : MvPolynomial (Fin m) ℚ) (hP : P ≠ 0) (hdet : Matrix.det (fun i j : Fin k => dividedWordPDeriv (List.replicate j.val last) (dividedWordPDeriv (rows i) P)) ≠ 0) (γ : ℝ) (hrows : ∀ i, rothWordWeight r (rows i) ≤ γ) : (∑ j : Fin k, max (rothPolynomialIndex r β P - j.val / (r last : ℝ)) 0) ≤ rothPolynomialIndex r β (Matrix.det (fun i j : Fin k => dividedWordPDeriv (List.replicate j.val last) (dividedWordPDeriv (rows i) P))) + k * γ := by have hh := rothPolynomialIndex_divided_mixed_det hr β rows (fun j : Fin k => List.replicate j.val last) P hP hdet simp only [rothWordWeight_replicate hr] at hh apply hh.trans apply add_le_add le_rfl simpa using Finset.sum_le_sum (fun i (_ : i ∈ Finset.univ) => hrows i) def fin_sum_real_val (k : ℕ) : (∑ j : Fin k, (j.val : ℝ)) = (k : ℝ) * (k - 1) / 2 := by induction k with | zero => simp | succ k ih => rw [Fin.sum_univ_castSucc] simp only [Fin.val_castSucc, Fin.val_last, ih, Nat.cast_add, Nat.cast_one] ring /-- The sum of a decreasing nonnegative arithmetic progression dominates its triangular area. This discrete induction avoids rounding or integration. -/ def arithmetic_max_sum_triangle (k : ℕ) (x : ℝ) (hx : 0 ≤ x) (hxk : x ≤ k) : x ^ 2 ≤ 2 * ∑ j : Fin k, max (x - j.val) 0 := by induction k generalizing x with | zero => simp only [Nat.cast_zero] at hxk; simp; nlinarith | succ k ih => rw [Fin.sum_univ_succ] simp only [Fin.val_zero, Nat.cast_zero, sub_zero, max_eq_left hx, Fin.val_succ, Nat.cast_add, Nat.cast_one] have htail : (∑ j : Fin k, max (x - ((j.val : ℝ) + 1)) 0) = ∑ j : Fin k, max ((x - 1) - j.val) 0 := by apply Finset.sum_congr rfl intro j hj congr 1 ring rw [htail] by_cases hsmall : x ≤ 1 · have hs : 0 ≤ ∑ j : Fin k, max ((x - 1) - j.val) 0 := Finset.sum_nonneg (fun _ _ => le_max_right _ _) nlinarith [mul_nonneg hx (sub_nonneg.mpr hsmall)] · have hx1 : 0 ≤ x - 1 := by linarith have hxk' : x - 1 ≤ (k : ℝ) := by simp only [Nat.cast_add, Nat.cast_one] at hxk linarith have hh := ih (x - 1) hx1 hxk' nlinarith /-- Estimate (E), with the exact constant `2*m`. -/ def roth_arithmetic_progression_lower {m r k : ℕ} (hm : 2 ≤ m) (hr : 1 ≤ r) (_hk : 1 ≤ k) (hkr : k ≤ r + 1) {I : ℝ} (hI : 0 ≤ I) (hIm : I ≤ m) : ((k : ℝ) / (2 * m)) * I ^ 2 ≤ ∑ j : Fin k, max (I - j.val / (r : ℝ)) 0 := by have hrpos : (0 : ℝ) < r := by exact_mod_cast (by omega : 0 < r) have hmpos : (0 : ℝ) < m := by exact_mod_cast (by omega : 0 < m) have hk0 : (0 : ℝ) ≤ k := Nat.cast_nonneg k let S : ℝ := ∑ j : Fin k, max (I - j.val / (r : ℝ)) 0 change ((k : ℝ) / (2 * m)) * I ^ 2 ≤ S rw [div_mul_eq_mul_div] apply (div_le_iff₀ (by positivity : (0 : ℝ) < 2 * m)).mpr by_cases hhigh : ((k : ℝ) - 1) / r ≤ I · have hraw : (k : ℝ) * I - ((k : ℝ) * (k - 1) / 2) / r ≤ S := by have hh := Finset.sum_le_sum (fun j (_ : j ∈ (Finset.univ : Finset (Fin k))) => le_max_left (I - j.val / (r : ℝ)) 0) simpa only [Finset.sum_sub_distrib, Finset.sum_const, Finset.card_univ, Fintype.card_fin, nsmul_eq_mul, ← Finset.sum_div, fin_sum_real_val] using hh have hcross : (k : ℝ) - 1 ≤ I * r := (div_le_iff₀ hrpos).mp hhigh have hhalf : ((k : ℝ) * (k - 1) / 2) / r ≤ (k : ℝ) * I / 2 := by apply (div_le_iff₀ hrpos).mpr nlinarith [mul_nonneg hk0 (sub_nonneg.mpr hcross)] have hlinear : (k : ℝ) * I ≤ 2 * S := by linarith have hquad : I ^ 2 ≤ (m : ℝ) * I := by nlinarith [mul_nonneg hI (sub_nonneg.mpr hIm)] have hh1 := mul_le_mul_of_nonneg_left hquad hk0 have hh2 := mul_le_mul_of_nonneg_left hlinear hmpos.le nlinarith · have hx : (r : ℝ) * I ≤ (k : ℝ) := by have hh := (lt_div_iff₀ hrpos).mp (lt_of_not_ge hhigh) nlinarith have htriangle := arithmetic_max_sum_triangle k ((r : ℝ) * I) (mul_nonneg hrpos.le hI) hx have hscale : (∑ j : Fin k, max ((r : ℝ) * I - j.val) 0) = (r : ℝ) * S := by dsimp only [S] rw [Finset.mul_sum] apply Finset.sum_congr rfl intro j hj rw [mul_max_of_nonneg _ _ hrpos.le, mul_zero, mul_sub, mul_div_cancel₀ _ hrpos.ne'] rw [hscale] at htriangle have htri : (r : ℝ) * I ^ 2 ≤ 2 * S := by nlinarith [sq_nonneg I] have hkmr : (k : ℝ) ≤ (m : ℝ) * r := by exact_mod_cast (by nlinarith : k ≤ m * r) have hh1 := mul_le_mul_of_nonneg_right hkmr (sq_nonneg I) have hh2 := mul_le_mul_of_nonneg_left htri hmpos.le nlinarith /-- The complete lower bound (E) for the actual divided mixed determinant. -/ def roth_divided_determinant_quadratic_lower {m k : ℕ} (hm : 2 ≤ m) {r : Fin m → ℕ} (hr : ∀ i, 0 < r i) (β : Fin m → ℚ) (rows : Fin k → List (Fin m)) (last : Fin m) (P : MvPolynomial (Fin m) ℚ) (hP : P ≠ 0) (hdegree : ∀ i, P.degreeOf i ≤ r i) (hk : 1 ≤ k) (hkr : k ≤ r last + 1) (hdet : Matrix.det (fun i j : Fin k => dividedWordPDeriv (List.replicate j.val last) (dividedWordPDeriv (rows i) P)) ≠ 0) (γ : ℝ) (hrows : ∀ i, rothWordWeight r (rows i) ≤ γ) : ((k : ℝ) / (2 * m)) * (rothPolynomialIndex r β P) ^ 2 ≤ rothPolynomialIndex r β (Matrix.det (fun i j : Fin k => dividedWordPDeriv (List.replicate j.val last) (dividedWordPDeriv (rows i) P))) + k * γ := by exact (roth_arithmetic_progression_lower hm (hr last) hk hkr (rothPolynomialIndex_nonneg r β P) (rothPolynomialIndex_le_dimension hr β hP hdegree)).trans (rothPolynomialIndex_divided_mixed_det_progression hr β rows last P hP hdet γ hrows) end end Bounty end RothComponent_RothDeterminantIndexBound /- Component: RothDeterminantHeightBound; SHA256 6785610d8460d9d15b0e55412a25afde9deb8d22603f26686339cc075b4e74d5 -/ section RothComponent_RothDeterminantHeightBound /- Conservative explicit constants for the Roth auxiliary determinant. -/ namespace Bounty noncomputable section open scoped BigOperators def roth_log_factorial_bound (k q : ℕ) (hk : k ≤ q + 1) : Real.log (k.factorial : ℝ) ≤ (k : ℝ) * q := by by_cases hk0 : k = 0 · subst k; simp have hkp : (0 : ℝ) < k := by exact_mod_cast Nat.pos_of_ne_zero hk0 have hfp : (0 : ℝ) < k.factorial := by exact_mod_cast Nat.factorial_pos k have hf : (k.factorial : ℝ) ≤ (k : ℝ) ^ k := by exact_mod_cast Nat.factorial_le_pow k have hlog := Real.log_le_log hfp hf rw [Real.log_pow] at hlog have hkq : (k : ℝ) - 1 ≤ q := by have hh : (k : ℝ) ≤ (q : ℝ) + 1 := by exact_mod_cast hk linarith exact hlog.trans (mul_le_mul_of_nonneg_left ((Real.log_le_sub_one_of_pos hkp).trans hkq) hkp.le) def roth_log_four_le_two : Real.log 4 ≤ 2 := by have h := Real.log_le_sub_one_of_pos (show (0 : ℝ) < 2 by norm_num) have heq : Real.log 4 = 2 * Real.log 2 := by simpa only [show (2 : ℝ) ^ 2 = 4 by norm_num, Nat.cast_ofNat] using (Real.log_pow (2 : ℝ) 2) rw [heq] linarith def roth_determinant_log_bound {I : Type*} [Fintype I] [DecidableEq I] {k : ℕ} (rows cols : Fin k → List I) (r : I → ℕ) (P : MvPolynomial I ℚ) (hP : P ≠ 0) (hbox : PolynomialBoxBound r P) (r₀ q : ℕ) (hk : k ≤ q + 1) (hR : ((∑ i, r i : ℕ) : ℝ) ≤ (4 / 3 : ℝ) * r₀) (hq : (q : ℝ) ≤ (r₀ : ℝ) / 4) (hdet : Matrix.det (fun i j : Fin k => dividedWordPDeriv (rows i) (dividedWordPDeriv (cols j) P)) ≠ 0) : Real.log (polynomialCoeffL1 (Matrix.det (fun i j : Fin k => dividedWordPDeriv (rows i) (dividedWordPDeriv (cols j) P)))) ≤ (k : ℝ) * (Real.log (polynomialCoeffL1 P) + 3 * r₀) := by have hL := polynomialCoeffL1_pos hP have hA := polynomialCoeffL1_det_log_le (fun i j : Fin k => dividedWordPDeriv (rows i) (dividedWordPDeriv (cols j) P)) hdet ((4 : ℝ) ^ (∑ i, r i) * polynomialCoeffL1 P) (mul_pos (by positivity) hL) (fun i j => polynomialCoeffL1_double_dividedWordPDeriv _ _ r P hbox) simp only [Fintype.card_fin] at hA rw [Real.log_mul (by positivity) hL.ne', Real.log_pow] at hA have hfact := roth_log_factorial_bound k q hk have hlog4 := roth_log_four_le_two have hR0 : (0 : ℝ) ≤ (∑ i, r i : ℕ) := Nat.cast_nonneg _ have hsmall : (q : ℝ) + (∑ i, r i : ℕ) * Real.log 4 ≤ 3 * r₀ := by have ht := mul_le_mul_of_nonneg_left hlog4 hR0 have hr₀ : (0 : ℝ) ≤ r₀ := Nat.cast_nonneg _ nlinarith have hmul := mul_le_mul_of_nonneg_left hsmall (Nat.cast_nonneg k : (0 : ℝ) ≤ k) nlinarith end end Bounty end RothComponent_RothDeterminantHeightBound /- Component: RothSeparatedIndex; SHA256 00b3c3db66b11d3832f066427d3e07bdcbf86da81a5f0fde6a0fe883df952929 -/ section RothComponent_RothSeparatedIndex /- Exact normalized index formulas for polynomials on separated variable sets. -/ namespace Bounty noncomputable section open scoped BigOperators open Polynomial def weightedTaylor_rename {m n : ℕ} (f : Fin m → Fin n) (β : Fin n → ℚ) (P : MvPolynomial (Fin m) ℚ) : weightedTaylor β (MvPolynomial.rename f P) = MvPolynomial.rename f (weightedTaylor (β ∘ f) P) := by induction P using MvPolynomial.induction_on with | C a => simp [weightedTaylor_C] | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp only [map_mul, MvPolynomial.rename_X, weightedTaylor_X, map_add, MvPolynomial.rename_C, hP, Function.comp_apply] def rothMonomialWeight_mapDomain {m n : ℕ} (f : Fin m → Fin n) (r : Fin n → ℕ) (d : Fin m →₀ ℕ) : rothMonomialWeight r (d.mapDomain f) = rothMonomialWeight (r ∘ f) d := by have hh := Finsupp.sum_mapDomain_index (f := f) (s := d) (h := fun i (v : ℕ) => (v : ℝ) / r i) (fun _ => by simp) (fun _ _ _ => by simp only [Nat.cast_add, add_div]) rw [(d.mapDomain f).sum_fintype (fun i (v : ℕ) => (v : ℝ) / r i) (fun _ => by simp), d.sum_fintype (fun i (v : ℕ) => (v : ℝ) / r (f i)) (fun _ => by simp)] at hh exact hh /-- Adding unused variables leaves the normalized index unchanged, with the degree bounds and evaluation point restricted along the injection. -/ def rothPolynomialIndex_rename {m n : ℕ} {r : Fin n → ℕ} (hr : ∀ i, 0 < r i) (β : Fin n → ℚ) (f : Fin m → Fin n) (hf : Function.Injective f) (P : MvPolynomial (Fin m) ℚ) (hP : P ≠ 0) : rothPolynomialIndex r β (MvPolynomial.rename f P) = rothPolynomialIndex (r ∘ f) (β ∘ f) P := by classical have hr' (i : Fin m) : 0 < (r ∘ f) i := hr (f i) have hQ : MvPolynomial.rename f P ≠ 0 := by intro hh exact hP ((MvPolynomial.rename_eq_zero_iff_of_injective P hf).mp hh) have hsupport : (weightedTaylor β (MvPolynomial.rename f P)).support = Finset.image (Finsupp.mapDomain f) (weightedTaylor (β ∘ f) P).support := by rw [weightedTaylor_rename, MvPolynomial.support_rename_of_injective hf] apply le_antisymm · obtain ⟨d, hd, heq⟩ := rothPolynomialIndex_attained hr' (β ∘ f) hP have hmem : d.mapDomain f ∈ (weightedTaylor β (MvPolynomial.rename f P)).support := by rw [hsupport] exact Finset.mem_image.mpr ⟨d, hd, rfl⟩ have hh := rothPolynomialIndex_le_support hr β (MvPolynomial.rename f P) hmem rw [rothMonomialWeight_mapDomain, ← heq] at hh exact hh · obtain ⟨e, he, heq⟩ := rothPolynomialIndex_attained hr β hQ rw [hsupport] at he obtain ⟨d, hd, rfl⟩ := Finset.mem_image.mp he rw [heq, rothMonomialWeight_mapDomain] exact rothPolynomialIndex_le_support hr' (β ∘ f) P hd def rothPolynomialIndex_first_embedding {m : ℕ} {r : Fin (m + 1) → ℕ} (hr : ∀ i, 0 < r i) (β : Fin (m + 1) → ℚ) (P : MvPolynomial (Fin m) ℚ) (hP : P ≠ 0) : rothPolynomialIndex r β (MvPolynomial.rename Fin.castSucc P) = rothPolynomialIndex (r ∘ Fin.castSucc) (β ∘ Fin.castSucc) P := rothPolynomialIndex_rename hr β Fin.castSucc (Fin.castSucc_injective m) P hP def roth_last_embedding_eq_rename {m : ℕ} (F : ℚ[X]) : Polynomial.aeval (MvPolynomial.X (Fin.last m)) F = MvPolynomial.rename (fun _ : Fin 1 => Fin.last m) ((MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm F) := by rw [Polynomial.aeval_def, MvPolynomial.rename_eq_aeval, MvPolynomial.aeval_def] change F.eval₂ MvPolynomial.C (MvPolynomial.X (Fin.last m)) = ((MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm F).eval₂ MvPolynomial.C (fun _ => MvPolynomial.X (Fin.last m)) exact MvPolynomial.eval₂_const_uniqueAlgEquiv_symm.symm def roth_last_embedding_ne_zero {m : ℕ} {F : ℚ[X]} (hF : F ≠ 0) : Polynomial.aeval (MvPolynomial.X (R := ℚ) (Fin.last m)) F ≠ 0 := by change F.toMvPolynomial (Fin.last m) ≠ 0 intro hh apply hF apply Polynomial.toMvPolynomial_injective (Fin.last m) exact hh.trans (map_zero _).symm def rothPolynomialIndex_last_embedding {m : ℕ} {r : Fin (m + 1) → ℕ} (hr : ∀ i, 0 < r i) (β : Fin (m + 1) → ℚ) (F : ℚ[X]) (hF : F ≠ 0) : rothPolynomialIndex r β (Polynomial.aeval (MvPolynomial.X (Fin.last m)) F) = (F.rootMultiplicity (β (Fin.last m)) : ℝ) / r (Fin.last m) := by let f : Fin 1 → Fin (m + 1) := fun _ => Fin.last m have hf : Function.Injective f := fun _ _ _ => Subsingleton.elim _ _ have hr' (i : Fin 1) : 0 < (r ∘ f) i := hr (f i) have hQ : (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm F ≠ 0 := by intro hh apply hF exact (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm.injective (hh.trans (map_zero _).symm) rw [roth_last_embedding_eq_rename] change rothPolynomialIndex r β (MvPolynomial.rename f ((MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm F)) = _ rw [rothPolynomialIndex_rename hr β f hf _ hQ, rothPolynomialIndex_eq_rootMultiplicity hr' (β ∘ f) hQ, AlgEquiv.apply_symm_apply] rfl /-- The exact separated-factor formula used in the induction on the number of variables. -/ def rothPolynomialIndex_separated_product {m : ℕ} {r : Fin (m + 1) → ℕ} (hr : ∀ i, 0 < r i) (β : Fin (m + 1) → ℚ) (F₂ : MvPolynomial (Fin m) ℚ) (hF₂ : F₂ ≠ 0) (F₁ : ℚ[X]) (hF₁ : F₁ ≠ 0) : rothPolynomialIndex r β (MvPolynomial.rename Fin.castSucc F₂ * Polynomial.aeval (MvPolynomial.X (Fin.last m)) F₁) = rothPolynomialIndex (r ∘ Fin.castSucc) (β ∘ Fin.castSucc) F₂ + (F₁.rootMultiplicity (β (Fin.last m)) : ℝ) / r (Fin.last m) := by have hleft : MvPolynomial.rename Fin.castSucc F₂ ≠ 0 := by intro hh exact hF₂ ((MvPolynomial.rename_eq_zero_iff_of_injective F₂ (Fin.castSucc_injective m)).mp hh) rw [rothPolynomialIndex_mul r β hleft (roth_last_embedding_ne_zero hF₁), rothPolynomialIndex_first_embedding hr β F₂ hF₂, rothPolynomialIndex_last_embedding hr β F₁ hF₁] end end Bounty end RothComponent_RothSeparatedIndex /- Component: IntegerPolynomialReification; SHA256 33472f3697cbca9b3a29d38c7a4772168ea8a575d55a97aadae0e1e2a8b17e20 -/ section RothComponent_IntegerPolynomialReification /- Reification of integral rational coefficients via polynomial map-range criteria, including divided derivative matrices and their ordinary determinants. -/ namespace Bounty noncomputable section open scoped BigOperators Polynomial variable {I J : Type*} def HasIntegerMvCoefficients (P : MvPolynomial I ℚ) : Prop := ∀ d, ∃ z : ℤ, MvPolynomial.coeff d P = (z : ℚ) def HasIntegerIteratedCoefficients (V : Polynomial (MvPolynomial I ℚ)) : Prop := ∀ n, HasIntegerMvCoefficients (V.coeff n) def hasIntegerMvCoefficients_map (P : MvPolynomial I ℤ) : HasIntegerMvCoefficients (MvPolynomial.map (Int.castRingHom ℚ) P) := by intro d exact ⟨MvPolynomial.coeff d P, by simp [MvPolynomial.coeff_map]⟩ /-- The existing coefficient-range criterion constructs an actual integer polynomial. -/ def exists_integer_mvPolynomial (P : MvPolynomial I ℚ) (hP : HasIntegerMvCoefficients P) : ∃ Q : MvPolynomial I ℤ, MvPolynomial.map (Int.castRingHom ℚ) Q = P := by apply MvPolynomial.mem_range_map_iff_coeffs_subset.mpr intro a ha obtain ⟨d, _, rfl⟩ := MvPolynomial.mem_coeffs_iff.mp ha obtain ⟨z, hz⟩ := hP d exact ⟨z, hz.symm⟩ def hasIntegerMvCoefficients_iff_exists (P : MvPolynomial I ℚ) : HasIntegerMvCoefficients P ↔ ∃ Q : MvPolynomial I ℤ, MvPolynomial.map (Int.castRingHom ℚ) Q = P := by constructor · exact exists_integer_mvPolynomial P · rintro ⟨Q, rfl⟩ exact hasIntegerMvCoefficients_map Q def exists_integer_iteratedPolynomial (V : Polynomial (MvPolynomial I ℚ)) (hV : HasIntegerIteratedCoefficients V) : ∃ W : Polynomial (MvPolynomial I ℤ), W.map (MvPolynomial.map (Int.castRingHom ℚ)) = V := by apply (Polynomial.mem_lifts V).mp apply (Polynomial.lifts_iff_coeff_lifts V).mpr intro n exact exists_integer_mvPolynomial (V.coeff n) (hV n) def hasIntegerMvCoefficients_dividedWordPDeriv [Fintype I] [DecidableEq I] (s : List I) (P : MvPolynomial I ℚ) (hP : HasIntegerMvCoefficients P) : HasIntegerMvCoefficients (dividedWordPDeriv s P) := dividedWordPDeriv_integral s P hP def exists_integer_dividedWordPDeriv [Fintype I] [DecidableEq I] (s : List I) (P : MvPolynomial I ℤ) : ∃ Q : MvPolynomial I ℤ, MvPolynomial.map (Int.castRingHom ℚ) Q = dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P) := exists_integer_mvPolynomial _ (hasIntegerMvCoefficients_dividedWordPDeriv s _ (hasIntegerMvCoefficients_map P)) /-- Reify the entries, then use the actual ring-homomorphism determinant identity. -/ def exists_integer_determinant [Fintype J] [DecidableEq J] (A : Matrix J J (MvPolynomial I ℚ)) (hA : ∀ i j, HasIntegerMvCoefficients (A i j)) : ∃ Q : MvPolynomial I ℤ, MvPolynomial.map (Int.castRingHom ℚ) Q = A.det := by classical choose B hB using fun i j => exists_integer_mvPolynomial (A i j) (hA i j) refine ⟨Matrix.det (Matrix.of B), ?_⟩ rw [RingHom.map_det] apply congrArg Matrix.det funext i j exact hB i j def hasIntegerMvCoefficients_det [Fintype J] [DecidableEq J] (A : Matrix J J (MvPolynomial I ℚ)) (hA : ∀ i j, HasIntegerMvCoefficients (A i j)) : HasIntegerMvCoefficients A.det := (hasIntegerMvCoefficients_iff_exists A.det).mpr (exists_integer_determinant A hA) def hasIntegerMvCoefficients_rename {K : Type*} (f : I → K) (P : MvPolynomial I ℚ) (hP : HasIntegerMvCoefficients P) : HasIntegerMvCoefficients (MvPolynomial.rename f P) := by obtain ⟨Q, rfl⟩ := exists_integer_mvPolynomial P hP rw [← MvPolynomial.map_rename] exact hasIntegerMvCoefficients_map (MvPolynomial.rename f Q) def hasIntegerIteratedCoefficients_finSuccEquiv {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (hP : HasIntegerMvCoefficients P) : HasIntegerIteratedCoefficients (MvPolynomial.finSuccEquiv ℚ m P) := by intro n d rw [MvPolynomial.finSuccEquiv_coeff_coeff] exact hP _ /-- This expression is definitionally the `lastVariableEquiv` used in the Roth factorization module; the bridge does not depend on that larger proof module. -/ def exists_integer_lastVariablePolynomial {m : ℕ} (P : MvPolynomial (Fin (m + 1)) ℚ) (hP : HasIntegerMvCoefficients P) : ∃ V : Polynomial (MvPolynomial (Fin m) ℤ), V.map (MvPolynomial.map (Int.castRingHom ℚ)) = MvPolynomial.finSuccEquiv ℚ m (MvPolynomial.rename (finRotate (m + 1)) P) := by apply exists_integer_iteratedPolynomial exact hasIntegerIteratedCoefficients_finSuccEquiv _ (hasIntegerMvCoefficients_rename (finRotate (m + 1)) P hP) end end Bounty end RothComponent_IntegerPolynomialReification /- Component: RothDegreeBounds; SHA256 fe90c59dad2ce4930b12b6d5010fc538c0c25fafee4d8b5732393941fe7f6a8a -/ section RothComponent_RothDegreeBounds /- Elementary consequences of the descending degree ratios in Roth's induction. -/ namespace Bounty noncomputable section open scoped BigOperators def roth_degree_decay_antitone {m : ℕ} (r : Fin (m + 1) → ℕ) (θ : ℝ) (hθ : θ ≤ 1) (hstep : ∀ i : Fin m, (r i.succ : ℝ) ≤ θ * r i.castSucc) : Antitone r := by apply Fin.antitone_iff_succ_le.mpr intro i have hh : (r i.succ : ℝ) ≤ r i.castSucc := (hstep i).trans (by nlinarith [Nat.cast_nonneg (r i.castSucc) (α := ℝ)]) exact_mod_cast hh def roth_degree_decay_sum {m : ℕ} (r : Fin (m + 1) → ℕ) (θ : ℝ) (hθ : θ ≤ (1 / 4 : ℝ)) (hstep : ∀ i : Fin m, (r i.succ : ℝ) ≤ θ * r i.castSucc) : ((∑ i, r i : ℕ) : ℝ) ≤ (4 / 3 : ℝ) * r 0 := by have ht : (∑ i : Fin m, (r i.succ : ℝ)) ≤ (1 / 4 : ℝ) * (∑ i : Fin m, (r i.castSucc : ℝ)) := by rw [Finset.mul_sum] apply Finset.sum_le_sum intro i _ exact (hstep i).trans (mul_le_mul_of_nonneg_right hθ (Nat.cast_nonneg _)) have hhead : (∑ i : Fin m, (r i.castSucc : ℝ)) ≤ ∑ i : Fin (m + 1), (r i : ℝ) := by rw [Fin.sum_univ_castSucc] exact le_add_of_nonneg_right (Nat.cast_nonneg _) have hs := Fin.sum_univ_succ (fun i : Fin (m + 1) => (r i : ℝ)) push_cast nlinarith def roth_degree_decay_last {m : ℕ} (r : Fin (m + 2) → ℕ) (θ : ℝ) (hθ : θ ≤ (1 / 4 : ℝ)) (hstep : ∀ i : Fin (m + 1), (r i.succ : ℝ) ≤ θ * r i.castSucc) : (r (Fin.last (m + 1)) : ℝ) ≤ (r 0 : ℝ) / 4 := by have hmono := roth_degree_decay_antitone r θ (by linarith) hstep have h0 : r (Fin.last (m + 1)) ≤ r (Fin.succ (0 : Fin (m + 1))) := hmono (Fin.le_last _) have hh := hstep 0 have hr0 : (0 : ℝ) ≤ r 0 := Nat.cast_nonneg _ have h0r : (r (Fin.last (m + 1)) : ℝ) ≤ r (Fin.succ (0 : Fin (m + 1))) := by exact_mod_cast h0 have hc : (0 : Fin (m + 1)).castSucc = (0 : Fin (m + 2)) := rfl rw [hc] at hh nlinarith def roth_first_word_weight_bound {m : ℕ} {r : Fin (m + 2) → ℕ} (hr : ∀ i, 0 < r i) (hmono : Antitone r) (s : List (Fin (m + 1))) (hlen : s.length ≤ r (Fin.last (m + 1))) : rothWordWeight r (s.map Fin.castSucc) ≤ (r (Fin.last (m + 1)) : ℝ) / r (Fin.castSucc (Fin.last m)) := by have hden : (0 : ℝ) < r (Fin.castSucc (Fin.last m)) := by exact_mod_cast hr _ have hterm (i : Fin (m + 1)) : (1 : ℝ) / r i.castSucc ≤ 1 / (r (Fin.castSucc (Fin.last m)) : ℝ) := by apply one_div_le_one_div_of_le hden have hi : i.castSucc ≤ (Fin.last m).castSucc := by change i.val ≤ m omega exact_mod_cast hmono hi have hsum : (s.map (fun i => (1 : ℝ) / r i.castSucc)).sum ≤ (s.length : ℝ) / r (Fin.castSucc (Fin.last m)) := by clear hlen induction s with | nil => simp | cons i s ih => simp only [List.map_cons, List.sum_cons, List.length_cons, Nat.cast_add, Nat.cast_one, add_div] have hh := hterm i linarith rw [rothWordWeight_eq_sum hr, List.map_map] exact hsum.trans (div_le_div_of_nonneg_right (by exact_mod_cast hlen) hden.le) end end Bounty end RothComponent_RothDegreeBounds /- Component: RothUnivariateHeight; SHA256 ee5ae1c3484f1c20eed69765f491ec5cc08358a397a09fb352173fee0bb9930c -/ section RothComponent_RothUnivariateHeight /- Standard rational height and raw integer coefficient norms for the Roth base case. -/ namespace Bounty noncomputable section open Polynomial open scoped BigOperators def rationalRoot_logHeight (β : ℚ) : Real.log (max ‖(β.den : ℂ)‖ ‖(β.num : ℂ)‖) = Height.logHeight₁ β := by rw [Rat.logHeight₁_eq_log_max] congr 1 have ha : ((β.num.natAbs : ℕ) : ℝ) = |(β.num : ℝ)| := by calc (β.num.natAbs : ℝ) = ((β.num.natAbs : ℤ) : ℝ) := (Int.cast_natCast _).symm _ = ((|β.num| : ℤ) : ℝ) := congrArg (fun z : ℤ => (z : ℝ)) (Int.natCast_natAbs β.num) _ = |(β.num : ℝ)| := Int.cast_abs simp only [Complex.norm_natCast, Complex.norm_intCast, Nat.cast_max, ha] exact max_comm _ _ def integerPolynomialCoeffSum_eq_univariateCoeffL1 (P : ℤ[X]) : integerPolynomialCoeffSum P = univariateCoeffL1 P := by change univariateCoeffL1 (P.map (Int.castRingHom ℂ)) = _ apply univariateCoeffL1_map (Int.castRingHom ℂ) Int.cast_injective intro a change ‖(a : ℂ)‖ = ‖a‖ simp only [Complex.norm_intCast, Int.norm_eq_abs] def univariateCoeffL1_uniqueAlgEquiv {R : Type*} [NormedCommRing R] (P : MvPolynomial (Fin 1) R) : univariateCoeffL1 (MvPolynomial.uniqueAlgEquiv R (Fin 1) P) = polynomialCoeffL1 P := by classical have hdEq (d : Fin 1 →₀ ℕ) : Finsupp.single (0 : Fin 1) (d 0) = d := by simpa using (Finsupp.unique_single d).symm have hs : (MvPolynomial.uniqueAlgEquiv R (Fin 1) P).support = P.support.image (fun d : Fin 1 →₀ ℕ => d 0) := by ext n simp only [Polynomial.mem_support_iff, Finset.mem_image, MvPolynomial.mem_support_iff, MvPolynomial.coeff_uniqueAlgEquiv] constructor · intro h exact ⟨Finsupp.single 0 n, h, by simp⟩ · rintro ⟨d, hd, rfl⟩ change MvPolynomial.coeff (Finsupp.single (0 : Fin 1) (d 0)) P ≠ 0 rwa [hdEq d] have hinj : Function.Injective (fun d : Fin 1 →₀ ℕ => d 0) := by intro a b hab rw [← hdEq a, ← hdEq b] exact congrArg (Finsupp.single (0 : Fin 1)) hab rw [univariateCoeffL1, hs, Finset.sum_image hinj.injOn] apply Finset.sum_congr rfl intro d hd rw [MvPolynomial.coeff_uniqueAlgEquiv] change ‖MvPolynomial.coeff (Finsupp.single (0 : Fin 1) (d 0)) P‖ = _ rw [hdEq d] def rational_rootMultiplicity_standard_height_bound {P : ℤ[X]} (hP : P ≠ 0) (β : ℚ) : ((P.map (Int.castRingHom ℚ)).rootMultiplicity β : ℝ) * Height.logHeight₁ β ≤ Real.log (univariateCoeffL1 P) := by simpa only [rationalRoot_logHeight, integerPolynomialCoeffSum_eq_univariateCoeffL1] using rational_rootMultiplicity_height_bound hP β def rothUnivariate_standard_height_bound (r : Fin 1 → ℕ) (hr : ∀ i, 0 < r i) (β : Fin 1 → ℚ) {P : ℤ[X]} (hP : P ≠ 0) : rothPolynomialIndex r β ((MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm (P.map (Int.castRingHom ℚ))) * ((r 0 : ℝ) * Height.logHeight₁ (β 0)) ≤ Real.log (univariateCoeffL1 P) := by simpa only [rationalRoot_logHeight, integerPolynomialCoeffSum_eq_univariateCoeffL1] using rothUnivariate_integer_height_bound r hr β hP def uniqueAlgEquiv_map_int_rat (P : MvPolynomial (Fin 1) ℤ) : (MvPolynomial.uniqueAlgEquiv ℤ (Fin 1) P).map (Int.castRingHom ℚ) = MvPolynomial.uniqueAlgEquiv ℚ (Fin 1) (MvPolynomial.map (Int.castRingHom ℚ) P) := by ext n simp only [Polynomial.coeff_map, MvPolynomial.coeff_uniqueAlgEquiv, MvPolynomial.coeff_map] def rothUnivariate_mv_integer_height_bound (r : Fin 1 → ℕ) (hr : ∀ i, 0 < r i) (β : Fin 1 → ℚ) {P : MvPolynomial (Fin 1) ℤ} (hP : P ≠ 0) : rothPolynomialIndex r β (MvPolynomial.map (Int.castRingHom ℚ) P) * ((r 0 : ℝ) * Height.logHeight₁ (β 0)) ≤ Real.log (polynomialCoeffL1 P) := by let U := MvPolynomial.uniqueAlgEquiv ℤ (Fin 1) P have hU : U ≠ 0 := by intro hz apply hP exact (MvPolynomial.uniqueAlgEquiv ℤ (Fin 1)).injective (hz.trans (map_zero _).symm) have hh := rothUnivariate_standard_height_bound r hr β hU have he : (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).symm (U.map (Int.castRingHom ℚ)) = MvPolynomial.map (Int.castRingHom ℚ) P := by apply (MvPolynomial.uniqueAlgEquiv ℚ (Fin 1)).injective rw [AlgEquiv.apply_symm_apply] exact uniqueAlgEquiv_map_int_rat P rw [he] at hh simpa only [U, univariateCoeffL1_uniqueAlgEquiv] using hh end end Bounty end RothComponent_RothUnivariateHeight /- Component: LastVariableCoefficientNorm; SHA256 650c5c9fbf2a06be3a1dd0191ee8740cad52c2204cd5b33968a9ad23777325f0 -/ section RothComponent_LastVariableCoefficientNorm /- Reindexing the coefficient sum by a variable injection or by separating one variable preserves the exact coefficient-sum norm. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I J R : Type*} [NormedCommRing R] def polynomialCoeffL1_rename_of_injective (f : I → J) (hf : Function.Injective f) (P : MvPolynomial I R) : polynomialCoeffL1 (MvPolynomial.rename f P) = polynomialCoeffL1 P := by classical unfold polynomialCoeffL1 rw [MvPolynomial.support_rename_of_injective hf, Finset.sum_image (Finsupp.mapDomain_injective hf).injOn] simp only [MvPolynomial.coeff_rename_mapDomain f hf] def polynomialCoeffL1_finSuccEquiv_coeff {m : ℕ} (P : MvPolynomial (Fin (m + 1)) R) (n : ℕ) : polynomialCoeffL1 ((MvPolynomial.finSuccEquiv R m P).coeff n) = ∑ d ∈ P.support with d 0 = n, ‖MvPolynomial.coeff d P‖ := by classical rw [← MvPolynomial.image_support_finSuccEquiv, Finset.sum_image (Finsupp.cons_right_injective n).injOn] simp only [polynomialCoeffL1, MvPolynomial.finSuccEquiv_coeff_coeff] def iteratedCoeffL1_finSuccEquiv {m : ℕ} (P : MvPolynomial (Fin (m + 1)) R) : iteratedCoeffL1 (MvPolynomial.finSuccEquiv R m P) = polynomialCoeffL1 P := by classical unfold iteratedCoeffL1 simp_rw [polynomialCoeffL1_finSuccEquiv_coeff] rw [MvPolynomial.support_finSuccEquiv] exact Finset.sum_fiberwise_of_maps_to (fun d hd => Finset.mem_image_of_mem (fun e : Fin (m + 1) →₀ ℕ => e 0) hd) (fun d => ‖MvPolynomial.coeff d P‖) def iteratedCoeffL1_lastVariable {m : ℕ} (P : MvPolynomial (Fin (m + 1)) R) : iteratedCoeffL1 (MvPolynomial.finSuccEquiv R m (MvPolynomial.rename (finRotate (m + 1)) P)) = polynomialCoeffL1 P := by rw [iteratedCoeffL1_finSuccEquiv, polynomialCoeffL1_rename_of_injective _ (finRotate (m + 1)).injective] end end Bounty end RothComponent_LastVariableCoefficientNorm /- Component: IntegerRothTheorem; SHA256 59757cc1d82c5d7a0860cc5bef1c0893107ce3982b6bee164e7823038ff2068e -/ section RothComponent_IntegerRothTheorem /- The integer coefficient-sum version of Roth's polynomial index lemma. The theorem is proved by induction on the number of variables, using actual nonzero divided derivative determinants and actual integer separated factors. -/ namespace Bounty noncomputable section open scoped BigOperators open Polynomial def integerMap_degreeOf {I : Type*} (P : MvPolynomial I ℤ) (i : I) : (MvPolynomial.map (Int.castRingHom ℚ) P).degreeOf i = P.degreeOf i := by classical simp only [MvPolynomial.degreeOf_def, MvPolynomial.degrees_map_of_injective P (f := Int.castRingHom ℚ) (Int.cast_injective : Function.Injective (Int.castRingHom ℚ))] def integerMap_ne_zero {I : Type*} {P : MvPolynomial I ℤ} (hP : P ≠ 0) : MvPolynomial.map (Int.castRingHom ℚ) P ≠ 0 := by intro hh apply hP exact (MvPolynomial.map_injective (Int.castRingHom ℚ) Int.cast_injective) (hh.trans (map_zero _).symm) def roth_theta_square (n : ℕ) (η : ℝ) : (η ^ 2) ^ (2 ^ n) = η ^ (2 ^ (n + 1)) := by rw [← pow_mul, pow_succ] congr 1 ring def roth_theta_step_bounds (n : ℕ) {η : ℝ} (hη : 0 < η) (hηhalf : η ≤ 1 / 2) : 0 < η ^ (2 ^ (n + 1)) ∧ η ^ (2 ^ (n + 1)) ≤ η ^ 2 ∧ η ^ (2 ^ (n + 1)) ≤ (1 / 4 : ℝ) := by have hηone : η ≤ 1 := by linarith have hpow : 2 ≤ 2 ^ (n + 1) := by rw [pow_succ] have := Nat.one_le_pow n 2 (by omega) omega have hh := pow_le_pow_of_le_one hη.le hηone hpow exact ⟨pow_pos hη _, hh, hh.trans (by nlinarith [mul_nonneg hη.le (sub_nonneg.mpr hηhalf)])⟩ /-- There are `n+1` variables, so this covers every positive dimension without casts in the adjacent-degree condition. All height assumptions are pointwise. -/ def integer_roth_index_bound (n : ℕ) : ∀ (P : MvPolynomial (Fin (n + 1)) ℤ), P ≠ 0 → ∀ (r : Fin (n + 1) → ℕ), (∀ i, 0 < r i) → (∀ i, P.degreeOf i ≤ r i) → ∀ (β : Fin (n + 1) → ℚ) (η : ℝ), 0 < η → η ≤ 1 / 2 → (∀ i : Fin n, (r i.succ : ℝ) ≤ η ^ (2 ^ n) * r i.castSucc) → (∀ i, Real.log (polynomialCoeffL1 P) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r i : ℝ) * Height.logHeight₁ (β i))) → rothPolynomialIndex r β (MvPolynomial.map (Int.castRingHom ℚ) P) ≤ 2 * (n + 1 : ℕ) * η := by induction n with | zero => intro P hP r hr hdegree β η hη hηhalf hstep hheight have hroot := rothUnivariate_mv_integer_height_bound r hr β hP have hh := hheight 0 simp only [Nat.zero_add, pow_zero, pow_one, Nat.cast_one] at hh ⊢ have hL : 0 ≤ Real.log (polynomialCoeffL1 P) := Real.log_nonneg (one_le_polynomialCoeffL1_int hP) have hr0 : (0 : ℝ) < r 0 := by exact_mod_cast hr 0 have hH : 0 < (r 0 : ℝ) * Height.logHeight₁ (β 0) := by by_contra hn have hneg := mul_nonpos_of_nonneg_of_nonpos hη.le (le_of_not_gt hn) nlinarith have hi : rothPolynomialIndex r β (MvPolynomial.map (Int.castRingHom ℚ) P) ≤ η := by apply (mul_le_mul_iff_left₀ hH).mp nlinarith linarith | succ n ih => intro P hP r hr hdegree β η hη hηhalf hstep hheight let Q : MvPolynomial (Fin (n + 2)) ℚ := MvPolynomial.map (Int.castRingHom ℚ) P let θ : ℝ := η ^ (2 ^ (n + 1)) have hQ : Q ≠ 0 := integerMap_ne_zero hP have hQdegree (i) : Q.degreeOf i ≤ r i := by simpa only [Q, integerMap_degreeOf] using hdegree i have hbox : PolynomialBoxBound r Q := fun d hd i => (MvPolynomial.monomial_le_degreeOf i hd).trans (hQdegree i) obtain ⟨hθpos, hθη, hθquarter⟩ := roth_theta_step_bounds n hη hηhalf change 0 < θ at hθpos change θ ≤ η ^ 2 at hθη change θ ≤ (1 / 4 : ℝ) at hθquarter have hmono : Antitone r := roth_degree_decay_antitone r θ (by linarith) hstep have hR := roth_degree_decay_sum r θ hθquarter hstep have hlast := roth_degree_decay_last r θ hθquarter hstep obtain ⟨k, hkpos, hkactual, hk, w, hw, U₂, U₁, hU₂, hU₁, hU₂deg, hU₁deg, hfactor, hactual, hV⟩ := exists_rothDivided_factorization Q hQ r hQdegree let rows (i : Fin k) := (w i).map Fin.castSucc let cols (j : Fin k) := List.replicate j.val (Fin.last (n + 1)) let A : Matrix (Fin k) (Fin k) (MvPolynomial (Fin (n + 2)) ℚ) := fun i j => dividedWordPDeriv (cols j) (dividedWordPDeriv (rows i) Q) let V := A.det change V ≠ 0 at hV have hVk : Real.log (polynomialCoeffL1 V) ≤ (k : ℝ) * (Real.log (polynomialCoeffL1 P) + 3 * (r 0 : ℝ)) := by have htranspose : Matrix.det (fun i j : Fin k => dividedWordPDeriv (cols i) (dividedWordPDeriv (rows j) Q)) ≠ 0 := by change A.transpose.det ≠ 0 rw [Matrix.det_transpose] exact hV have hh := roth_determinant_log_bound cols rows r Q hQ hbox (r 0) (r (Fin.last (n + 1))) hk hR hlast htranspose change Real.log (polynomialCoeffL1 A.transpose.det) ≤ _ at hh rw [Matrix.det_transpose] at hh simpa only [V, Q, polynomialCoeffL1_map_int_rat] using hh have hVint : HasIntegerMvCoefficients V := by apply hasIntegerMvCoefficients_det A intro i j exact hasIntegerMvCoefficients_dividedWordPDeriv (cols j) _ (hasIntegerMvCoefficients_dividedWordPDeriv (rows i) _ (hasIntegerMvCoefficients_map P)) obtain ⟨W, hW⟩ := exists_integer_lastVariablePolynomial V hVint have hWmap : W.map (MvPolynomial.map (Int.castRingHom ℚ)) = lastVariableEquiv (n + 1) V := hW obtain ⟨F₂, F₁, c, hF₂, hF₁, hc, hWfactor, hF₂map, hF₁map⟩ := integer_separated_polynomial_factors W U₂ U₁ hU₂ hU₁ (hWmap.trans hfactor) have hWnorm : iteratedCoeffL1 W = polynomialCoeffL1 V := by calc _ = iteratedCoeffL1 (W.map (MvPolynomial.map (Int.castRingHom ℚ))) := (iteratedCoeffL1_map_int_rat W).symm _ = iteratedCoeffL1 (lastVariableEquiv (n + 1) V) := congrArg iteratedCoeffL1 hWmap _ = _ := iteratedCoeffL1_lastVariable V obtain ⟨hF₂log0, hF₁log0, hF₂log, hF₁log⟩ := separated_factor_log_bounds F₂ F₁ hF₂ hF₁ rw [← hWfactor, hWnorm] at hF₂log hF₁log have hF₂bound := hF₂log.trans hVk have hF₁bound := hF₁log.trans hVk have hF₂degree (i : Fin (n + 1)) : F₂.degreeOf i ≤ k * r i.castSucc := by rw [← integerMap_degreeOf F₂ i, hF₂map] apply le_trans ?_ (hU₂deg i) simp only [MvPolynomial.degreeOf_eq_sup] exact Finset.sup_mono MvPolynomial.support_smul have hF₂Q : MvPolynomial.map (Int.castRingHom ℚ) F₂ ≠ 0 := integerMap_ne_zero hF₂ have hF₁Q : F₁.map (Int.castRingHom ℚ) ≠ 0 := by intro hz exact hF₁ ((Polynomial.map_injective (Int.castRingHom ℚ) Int.cast_injective) (hz.trans (Polynomial.map_zero _).symm)) have hVfactor : V = MvPolynomial.rename Fin.castSucc (MvPolynomial.map (Int.castRingHom ℚ) F₂) * Polynomial.aeval (MvPolynomial.X (Fin.last (n + 1))) (F₁.map (Int.castRingHom ℚ)) := by rw [hF₂map, hF₁map, map_smul, map_smul, smul_mul_smul, mul_inv_cancel₀ hc, one_smul] exact hactual have hVindex := rothPolynomialIndex_separated_product hr β _ hF₂Q _ hF₁Q rw [← hVfactor] at hVindex let r' : Fin (n + 1) → ℕ := fun i => k * r i.castSucc have hr' (i) : 0 < r' i := Nat.mul_pos hkpos (hr _) have hηsq : 0 < η ^ 2 := pow_pos hη _ have hηsqhalf : η ^ 2 ≤ (1 / 2 : ℝ) := by nlinarith [mul_nonneg hη.le (sub_nonneg.mpr hηhalf)] have hstep' (i : Fin n) : (r' i.succ : ℝ) ≤ (η ^ 2) ^ (2 ^ n) * r' i.castSucc := by have hh := mul_le_mul_of_nonneg_left (hstep i.castSucc) (Nat.cast_nonneg k : (0 : ℝ) ≤ k) rw [roth_theta_square] dsimp only [r'] push_cast have hi : i.succ.castSucc = i.castSucc.succ := by ext; rfl simpa only [hi, mul_assoc, mul_left_comm, mul_comm] using hh have hheight' (i : Fin (n + 1)) : Real.log (polynomialCoeffL1 F₂) + 4 * (n + 1 : ℕ) * (r' 0 : ℝ) ≤ (η ^ 2) ^ (2 ^ n) * ((r' i : ℝ) * Height.logHeight₁ (β i.castSucc)) := by have hh := mul_le_mul_of_nonneg_left (hheight i.castSucc) (Nat.cast_nonneg k : (0 : ℝ) ≤ k) rw [roth_theta_square] dsimp only [r'] push_cast at hh ⊢ have hr0 := Nat.cast_nonneg (r 0) (α := ℝ) have hk0 := Nat.cast_nonneg k (α := ℝ) rw [show (Fin.castSucc (0 : Fin (n + 1)) : Fin (n + 2)) = 0 from rfl] nlinarith only [hF₂bound, hh, mul_nonneg hk0 hr0] have hfirst := ih F₂ hF₂ r' hr' hF₂degree (β ∘ Fin.castSucc) (η ^ 2) hηsq hηsqhalf hstep' hheight' have hfirstscale := rothPolynomialIndex_scale (fun i : Fin (n + 1) => hr i.castSucc) (β ∘ Fin.castSucc) hF₂Q hkpos change rothPolynomialIndex r' (β ∘ Fin.castSucc) (MvPolynomial.map (Int.castRingHom ℚ) F₂) = _ at hfirstscale rw [hfirstscale] at hfirst have hkreal : (0 : ℝ) < k := by exact_mod_cast hkpos have hfirstbound : rothPolynomialIndex (r ∘ Fin.castSucc) (β ∘ Fin.castSucc) (MvPolynomial.map (Int.castRingHom ℚ) F₂) ≤ 2 * k * (n + 1 : ℕ) * η ^ 2 := by have hh := (div_le_iff₀ hkreal).mp hfirst simpa only [Function.comp_def, mul_assoc, mul_left_comm, mul_comm] using hh let H : ℝ := (r (Fin.last (n + 1)) : ℝ) * Height.logHeight₁ (β (Fin.last (n + 1))) have hL : 0 ≤ Real.log (polynomialCoeffL1 P) := Real.log_nonneg (one_le_polynomialCoeffL1_int hP) have hr0 : (0 : ℝ) < r 0 := by exact_mod_cast hr 0 have hH : 0 < H := by have hh := hheight (Fin.last (n + 1)) change Real.log (polynomialCoeffL1 P) + 4 * (n + 1 + 1 : ℕ) * (r 0 : ℝ) ≤ θ * H at hh by_contra hn have hneg := mul_nonpos_of_nonneg_of_nonpos hθpos.le (le_of_not_gt hn) have hn0 : (0 : ℝ) ≤ n := Nat.cast_nonneg n push_cast at hh nlinarith have hlastbound : ((F₁.map (Int.castRingHom ℚ)).rootMultiplicity (β (Fin.last (n + 1))) : ℝ) / r (Fin.last (n + 1)) ≤ (k : ℝ) * θ := by apply (mul_le_mul_iff_left₀ hH).mp have hroot := rational_rootMultiplicity_standard_height_bound hF₁ (β (Fin.last (n + 1))) have hh := mul_le_mul_of_nonneg_left (hheight (Fin.last (n + 1))) hkreal.le change (k : ℝ) * (Real.log (polynomialCoeffL1 P) + 4 * (n + 1 + 1 : ℕ) * (r 0 : ℝ)) ≤ (k : ℝ) * (θ * H) at hh have hrden : (r (Fin.last (n + 1)) : ℝ) ≠ 0 := by exact_mod_cast (hr _).ne' change _ * ((r (Fin.last (n + 1)) : ℝ) * Height.logHeight₁ (β (Fin.last (n + 1)))) ≤ _ rw [div_mul_eq_mul_div, mul_div_assoc, mul_div_cancel_left₀ _ hrden] change _ ≤ (k : ℝ) * θ * H push_cast at hh have hmargin : 3 * (r 0 : ℝ) ≤ 4 * ((n : ℝ) + 1 + 1) * (r 0 : ℝ) := mul_le_mul_of_nonneg_right (by nlinarith [Nat.cast_nonneg n (α := ℝ)]) hr0.le have hscaled : (k : ℝ) * (Real.log (polynomialCoeffL1 P) + 3 * (r 0 : ℝ)) ≤ (k : ℝ) * (Real.log (polynomialCoeffL1 P) + 4 * ((n : ℝ) + 1 + 1) * (r 0 : ℝ)) := mul_le_mul_of_nonneg_left (add_le_add le_rfl hmargin) hkreal.le have htotal := hroot.trans (hF₁bound.trans (hscaled.trans hh)) nlinarith only [htotal] let γ : ℝ := (r (Fin.last (n + 1)) : ℝ) / r (Fin.castSucc (Fin.last n)) have hγ : γ ≤ θ := by apply (div_le_iff₀ (by exact_mod_cast hr (Fin.castSucc (Fin.last n)))).mpr exact hstep (Fin.last n) have hrows (i : Fin k) : rothWordWeight r (rows i) ≤ γ := by apply roth_first_word_weight_bound hr hmono exact (hw i).trans (by have := i.isLt; omega) have hE := roth_divided_determinant_quadratic_lower (by omega : 2 ≤ n + 2) hr β rows (Fin.last (n + 1)) Q hQ hQdegree hkpos hk hV γ hrows change ((k : ℝ) / (2 * ((n + 2 : ℕ) : ℝ))) * (rothPolynomialIndex r β Q) ^ 2 ≤ rothPolynomialIndex r β V + k * γ at hE push_cast at hE rw [hVindex] at hE have hfinal : ((k : ℝ) / (2 * (n + 2))) * (rothPolynomialIndex r β Q) ^ 2 ≤ 2 * k * (n + 2) * η ^ 2 := by have hhγ := mul_le_mul_of_nonneg_left (hγ.trans hθη) hkreal.le have hhθ := mul_le_mul_of_nonneg_left hθη hkreal.le push_cast at hfirstbound nlinarith have hcoef : (0 : ℝ) < (k : ℝ) / (2 * (n + 2)) := by positivity have heq : ((k : ℝ) / (2 * (n + 2))) * (2 * (n + 2) * η) ^ 2 = 2 * k * (n + 2) * η ^ 2 := by field_simp rw [← heq] at hfinal have hsquare := (mul_le_mul_iff_right₀ hcoef).mp hfinal have hind : rothPolynomialIndex r β Q ≤ 2 * (n + 2) * η := by exact (sq_le_sq₀ (rothPolynomialIndex_nonneg r β Q) (by positivity)).mp hsquare change rothPolynomialIndex r β Q ≤ 2 * ((n + 1 + 1 : ℕ) : ℝ) * η push_cast nlinarith only [hind] end end Bounty end RothComponent_IntegerRothTheorem /- One-file proof candidate assembled from the actual local import graph. A complete ordinary-kernel check and target axiom audit are still required. -/ /- Component LatticeProjection; SHA256 d1a0038da17b12bf8f0006e6161546b542b4e9e016d1186f40f694cefe606fe7 -/ section SubmissionComponent_LatticeProjection /- Rounded lifts under projection away from one lattice vector. The proofs give finite bounded intersections of the projected lattice, the primitive kernel for a shortest vector, and the quantitative projected norm gap. -/ namespace Bounty noncomputable section open scoped InnerProductSpace variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] def latticeProjection (v : E) : E →L[ℝ] E := (ℝ ∙ v)ᗮ.starProjection def latticeProjectionCoefficient (v x : E) : ℝ := inner ℝ v x / ‖v‖ ^ 2 def roundedLatticeLift (v x : E) : E := x - (round (latticeProjectionCoefficient v x)) • v def projectedLattice (L : Submodule ℤ E) (v : E) : Submodule ℤ E := L.map ((latticeProjection v).toLinearMap.restrictScalars ℤ) def latticeProjection_self (v : E) : latticeProjection v v = 0 := Submodule.starProjection_orthogonalComplement_singleton_eq_zero v def latticeProjection_eq (v x : E) : latticeProjection v x = x - latticeProjectionCoefficient v x • v := by rw [latticeProjection, Submodule.starProjection_orthogonal_val, Submodule.starProjection_singleton] rfl def latticeProjection_inner (v x : E) : inner ℝ (latticeProjection v x) v = 0 := by apply Submodule.mem_orthogonal_singleton_iff_inner_left.mp exact Submodule.starProjection_apply_mem _ _ def roundedLatticeLift_mem (L : Submodule ℤ E) {v x : E} (hv : v ∈ L) (hx : x ∈ L) : roundedLatticeLift v x ∈ L := L.sub_mem hx (L.smul_mem _ hv) def latticeProjection_roundedLatticeLift (v x : E) : latticeProjection v (roundedLatticeLift v x) = latticeProjection v x := by simp only [roundedLatticeLift, map_sub, map_zsmul, latticeProjection_self, smul_zero, sub_zero] def roundedLatticeLift_eq (v x : E) : roundedLatticeLift v x = latticeProjection v x + (latticeProjectionCoefficient v x - (round (latticeProjectionCoefficient v x) : ℝ)) • v := by rw [roundedLatticeLift, latticeProjection_eq, sub_smul, Int.cast_smul_eq_zsmul] abel def roundedLatticeLift_norm_le (v x : E) : ‖roundedLatticeLift v x‖ ≤ ‖latticeProjection v x‖ + ‖v‖ / 2 := by rw [roundedLatticeLift_eq] apply (norm_add_le _ _).trans apply add_le_add_right rw [norm_smul, Real.norm_eq_abs] have hh := mul_le_mul_of_nonneg_right (abs_sub_round (latticeProjectionCoefficient v x)) (norm_nonneg v) nlinarith def roundedLatticeLift_norm_sq (v x : E) : ‖roundedLatticeLift v x‖ ^ 2 = ‖latticeProjection v x‖ ^ 2 + (latticeProjectionCoefficient v x - (round (latticeProjectionCoefficient v x) : ℝ)) ^ 2 * ‖v‖ ^ 2 := by rw [roundedLatticeLift_eq] have horth : inner ℝ (latticeProjection v x) ((latticeProjectionCoefficient v x - (round (latticeProjectionCoefficient v x) : ℝ)) • v) = 0 := by rw [inner_smul_right, latticeProjection_inner, mul_zero] have hh := norm_add_sq_eq_norm_sq_add_norm_sq_of_inner_eq_zero _ _ horth simpa only [← sq, norm_smul, Real.norm_eq_abs, mul_pow, sq_abs] using hh def roundedLatticeLift_norm_sq_le (v x : E) : ‖roundedLatticeLift v x‖ ^ 2 ≤ ‖latticeProjection v x‖ ^ 2 + ‖v‖ ^ 2 / 4 := by rw [roundedLatticeLift_norm_sq] have habs := abs_sub_round (latticeProjectionCoefficient v x) have hs : (latticeProjectionCoefficient v x - (round (latticeProjectionCoefficient v x) : ℝ)) ^ 2 ≤ (1 / 4 : ℝ) := by rcases abs_le.mp habs with ⟨hl, hu⟩ nlinarith have hh := mul_le_mul_of_nonneg_right hs (sq_nonneg ‖v‖) linarith /-- No primitivity or shortest-vector assumption is needed for finite bounded intersections of the image under projection along a lattice vector. -/ def projectedLattice_finite_inter [FiniteDimensional ℝ E] (L : Submodule ℤ E) [DiscreteTopology L] {v : E} (hv : v ∈ L) {s : Set E} (hs : Bornology.IsBounded s) : Set.Finite (s ∩ (projectedLattice L v : Set E)) := by obtain ⟨R, hR⟩ := hs.exists_norm_le have hclosed : IsClosed (L : Set E) := AddSubgroup.isClosed_of_discrete (H := L.toAddSubgroup) have hfinite : Set.Finite ((Metric.closedBall (0 : E) (R + ‖v‖ / 2)) ∩ (L : Set E)) := Metric.finite_isBounded_inter_isClosed DiscreteTopology.isDiscrete Metric.isBounded_closedBall hclosed apply (hfinite.image (latticeProjection v)).subset rintro y ⟨hy, hyL⟩ obtain ⟨x, hx, hxy⟩ := hyL change latticeProjection v x = y at hxy refine ⟨roundedLatticeLift v x, ⟨?_, roundedLatticeLift_mem L hv hx⟩, ?_⟩ · rw [Metric.mem_closedBall, dist_zero_right] exact (roundedLatticeLift_norm_le v x).trans (by rw [hxy]; linarith [hR y hy]) · rw [latticeProjection_roundedLatticeLift, hxy] /-- Projecting along any lattice vector has a discrete image. -/ def projectedLattice_discreteTopology [FiniteDimensional ℝ E] (L : Submodule ℤ E) [DiscreteTopology L] {v : E} (hv : v ∈ L) : DiscreteTopology (projectedLattice L v) := by have hfin := projectedLattice_finite_inter L hv (s := Metric.closedBall (0 : E) 1) Metric.isBounded_closedBall have hpre := Set.Finite.preimage (f := (Subtype.val : projectedLattice L v → E)) Subtype.val_injective.injOn hfin have hball : Set.Finite (Metric.closedBall (0 : projectedLattice L v) 1) := by rw [show Metric.closedBall (0 : projectedLattice L v) 1 = {x : projectedLattice L v | ‖(x : E)‖ ≤ 1} by ext x; simp] simpa [Set.preimage, Metric.mem_closedBall, dist_zero_right] using hpre exact discreteTopology_iff_isOpen_singleton_zero.mpr (isOpen_singleton_of_finite_mem_nhds 0 (Metric.closedBall_mem_nhds _ (by norm_num)) hball) /-- A shortest nonzero vector is obtained by minimizing on a finite ball. -/ def exists_shortest_lattice_vector [FiniteDimensional ℝ E] (L : Submodule ℤ E) [DiscreteTopology L] (hL : ∃ x ∈ L, x ≠ 0) : ∃ v ∈ L, v ≠ 0 ∧ ∀ x ∈ L, x ≠ 0 → ‖v‖ ≤ ‖x‖ := by obtain ⟨x₀, hx₀, hx₀ne⟩ := hL have hclosed : IsClosed (L : Set E) := AddSubgroup.isClosed_of_discrete (H := L.toAddSubgroup) have hfinite : Set.Finite (Metric.closedBall (0 : E) ‖x₀‖ ∩ (L : Set E)) := Metric.finite_isBounded_inter_isClosed DiscreteTopology.isDiscrete Metric.isBounded_closedBall hclosed let s : Set E := (Metric.closedBall 0 ‖x₀‖ ∩ (L : Set E)) \ {0} have hs : s.Finite := hfinite.subset (by intro x hx; exact hx.1) have hx₀s : x₀ ∈ s := by exact ⟨⟨by simp, hx₀⟩, hx₀ne⟩ obtain ⟨v, hv, hmin⟩ := Set.exists_min_image s (fun x => ‖x‖) hs ⟨x₀, hx₀s⟩ refine ⟨v, hv.1.2, hv.2, ?_⟩ intro x hx hxne by_cases hball : ‖x‖ ≤ ‖x₀‖ · exact hmin x ⟨⟨by simpa using hball, hx⟩, hxne⟩ · exact (hmin x₀ hx₀s).trans (le_of_lt (lt_of_not_ge hball)) /-- The exact primitive-kernel identity, deduced from shortestness by rounding. -/ def shortest_latticeProjection_eq_zero_iff (L : Submodule ℤ E) {v : E} (hvL : v ∈ L) (hv : v ≠ 0) (hshort : ∀ x ∈ L, x ≠ 0 → ‖v‖ ≤ ‖x‖) {x : E} (hx : x ∈ L) : latticeProjection v x = 0 ↔ ∃ z : ℤ, z • v = x := by constructor · intro hz have hred : roundedLatticeLift v x = 0 := by by_contra hne have hmin := hshort _ (roundedLatticeLift_mem L hvL hx) hne have hnorm := roundedLatticeLift_norm_le v x rw [hz, norm_zero, zero_add] at hnorm have hvpos := norm_pos_iff.mpr hv linarith exact ⟨round (latticeProjectionCoefficient v x), (sub_eq_zero.mp hred).symm⟩ · rintro ⟨z, rfl⟩ simp [latticeProjection_self] /-- The quantitative gap proves discreteness of the projected lattice before choosing its own shortest vector. -/ def shortest_latticeProjection_norm_sq_gap (L : Submodule ℤ E) {v : E} (hvL : v ∈ L) (hshort : ∀ x ∈ L, x ≠ 0 → ‖v‖ ≤ ‖x‖) {x : E} (hx : x ∈ L) (hproj : latticeProjection v x ≠ 0) : (3 / 4 : ℝ) * ‖v‖ ^ 2 ≤ ‖latticeProjection v x‖ ^ 2 := by have hred : roundedLatticeLift v x ≠ 0 := by intro hz apply hproj rw [← latticeProjection_roundedLatticeLift v x, hz, map_zero] have hmin := hshort _ (roundedLatticeLift_mem L hvL hx) hred have hsq := sq_le_sq₀ (norm_nonneg v) (norm_nonneg (roundedLatticeLift v x)) |>.mpr hmin have hbound := roundedLatticeLift_norm_sq_le v x linarith end end Bounty end SubmissionComponent_LatticeProjection /- Component ProjectedLatticeBasis; SHA256 054a2e44111522bfdd82c84aca2e9eb48fdf0c0dda3054fedb8cc4ba671a7560 -/ section SubmissionComponent_ProjectedLatticeBasis /- Projection into the actual orthogonal-complement subtype, and integer basis lifting using the shortest-vector kernel rather than a PID quotient. -/ namespace Bounty noncomputable section open scoped InnerProductSpace BigOperators open Module variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] def latticeProjectionToOrthogonal (v : E) : E →ₗ[ℤ] (ℝ ∙ v)ᗮ := (ℝ ∙ v)ᗮ.orthogonalProjectionOnto.toLinearMap.restrictScalars ℤ def orthogonalProjectedLattice (L : Submodule ℤ E) (v : E) : Submodule ℤ (ℝ ∙ v)ᗮ := L.map (latticeProjectionToOrthogonal v) def latticeProjectionMap (L : Submodule ℤ E) (v : E) : L →ₗ[ℤ] orthogonalProjectedLattice L v := ((latticeProjectionToOrthogonal v).comp L.subtype).codRestrict _ (fun x => ⟨x, x.property, rfl⟩) def latticeProjectionMap_self (L : Submodule ℤ E) {v : E} (hv : v ∈ L) : latticeProjectionMap L v ⟨v, hv⟩ = 0 := by apply Subtype.ext apply Subtype.ext exact latticeProjection_self v def latticeProjectionMap_surjective (L : Submodule ℤ E) (v : E) : Function.Surjective (latticeProjectionMap L v) := by rintro ⟨y, hy⟩ obtain ⟨x, hx, hxy⟩ := hy exact ⟨⟨x, hx⟩, Subtype.ext hxy⟩ def orthogonalProjectedLattice_discreteTopology [FiniteDimensional ℝ E] (L : Submodule ℤ E) [DiscreteTopology L] {v : E} (hv : v ∈ L) : DiscreteTopology (orthogonalProjectedLattice L v) := by let _ := projectedLattice_discreteTopology L hv let f : orthogonalProjectedLattice L v → projectedLattice L v := fun y => ⟨((y : (ℝ ∙ v)ᗮ) : E), by obtain ⟨x, hx, hxy⟩ := y.property exact ⟨x, hx, congrArg Subtype.val hxy⟩⟩ have hf : Continuous f := by apply Continuous.subtype_mk exact continuous_subtype_val.comp continuous_subtype_val apply DiscreteTopology.of_continuous_injective hf intro x y h apply Subtype.ext apply Subtype.ext exact congrArg (fun z : projectedLattice L v => (z : E)) h def orthogonalProjectedLattice_span (L : Submodule ℤ E) (v : E) (hspan : Submodule.span ℝ (L : Set E) = ⊤) : Submodule.span ℝ (orthogonalProjectedLattice L v : Set (ℝ ∙ v)ᗮ) = ⊤ := by have himage : (orthogonalProjectedLattice L v : Set (ℝ ∙ v)ᗮ) = (ℝ ∙ v)ᗮ.orthogonalProjectionOnto '' (L : Set E) := rfl rw [himage] change Submodule.span ℝ ((ℝ ∙ v)ᗮ.orthogonalProjectionOnto.toLinearMap '' (L : Set E)) = ⊤ rw [← Submodule.map_span, hspan, Submodule.map_top] apply LinearMap.range_eq_top.mpr intro y exact ⟨y, Submodule.orthogonalProjectionOnto_mem_subspace_eq_self y⟩ def orthogonalProjectedLattice_isZLattice (L : Submodule ℤ E) (v : E) [DiscreteTopology (orthogonalProjectedLattice L v)] (hspan : Submodule.span ℝ (L : Set E) = ⊤) : IsZLattice ℝ (orthogonalProjectedLattice L v) := ⟨orthogonalProjectedLattice_span L v hspan⟩ /-- A lift with both the projection and the half-unit reduction coefficient explicit. -/ def exists_rounded_orthogonal_lift (L : Submodule ℤ E) {v : E} (hv : v ∈ L) (y : orthogonalProjectedLattice L v) : ∃ x : L, latticeProjectionMap L v x = y ∧ ∃ a : ℝ, |a| ≤ 1 / 2 ∧ (x : E) = ((y : (ℝ ∙ v)ᗮ) : E) + a • v ∧ ‖(x : E)‖ ^ 2 ≤ ‖((y : (ℝ ∙ v)ᗮ) : E)‖ ^ 2 + ‖v‖ ^ 2 / 4 := by obtain ⟨z, hz⟩ := latticeProjectionMap_surjective L v y have hze : latticeProjection v (z : E) = ((y : (ℝ ∙ v)ᗮ) : E) := congrArg (fun q : orthogonalProjectedLattice L v => ((q : (ℝ ∙ v)ᗮ) : E)) hz refine ⟨⟨roundedLatticeLift v z, roundedLatticeLift_mem L hv z.property⟩, ?_, latticeProjectionCoefficient v z - (round (latticeProjectionCoefficient v z) : ℝ), abs_sub_round _, ?_, ?_⟩ · apply Subtype.ext apply Subtype.ext change latticeProjection v (roundedLatticeLift v z) = _ rw [latticeProjection_roundedLatticeLift, hze] · exact (roundedLatticeLift_eq v z).trans (by rw [hze]) · simpa only [hze] using roundedLatticeLift_norm_sq_le v z /-- Any chosen lifts of a projected basis, together with a shortest vector, form an integer basis. No assertion about a PID quotient is assumed. -/ def exists_lattice_basis_of_projection_lifts (L : Submodule ℤ E) {v : E} (hvL : v ∈ L) (hv : v ≠ 0) (hshort : ∀ x ∈ L, x ≠ 0 → ‖v‖ ≤ ‖x‖) {n : ℕ} (b : Basis (Fin n) ℤ (orthogonalProjectedLattice L v)) (u : Fin n → L) (hu : ∀ i, latticeProjectionMap L v (u i) = b i) : ∃ B : Basis (Fin (n + 1)) ℤ L, B 0 = ⟨v, hvL⟩ ∧ ∀ i : Fin n, B i.succ = u i := by classical let w : Fin (n + 1) → L := Fin.cons ⟨v, hvL⟩ u have hli : LinearIndependent ℤ w := by apply Fintype.linearIndependent_iff.mpr intro c hc i have hp := congrArg (latticeProjectionMap L v) hc simp only [map_sum, map_smul, map_add, map_zero, Fin.sum_univ_succ, w, Fin.cons_zero, Fin.cons_succ, latticeProjectionMap_self, hu, smul_zero, zero_add] at hp have htail (j : Fin n) : c j.succ = 0 := Fintype.linearIndependent_iff.mp b.linearIndependent _ hp j have hz : c 0 • (⟨v, hvL⟩ : L) = 0 := by simpa only [Fin.sum_univ_succ, w, Fin.cons_zero, Fin.cons_succ, htail, zero_smul, Finset.sum_const_zero, add_zero] using hc have hzero : c 0 = 0 := by have hzE : (c 0 : ℝ) • v = 0 := by rw [Int.cast_smul_eq_zsmul] exact congrArg Subtype.val hz have hzR : (c 0 : ℝ) = 0 := (smul_eq_zero.mp hzE).resolve_right hv exact_mod_cast hzR exact Fin.cases hzero htail i have hsp : ⊤ ≤ Submodule.span ℤ (Set.range w) := by intro x _ let z : L := ∑ i : Fin n, b.repr (latticeProjectionMap L v x) i • u i have hz : latticeProjectionMap L v z = latticeProjectionMap L v x := by dsimp only [z] rw [map_sum] simp only [map_smul, hu] exact b.sum_repr _ have hp : latticeProjectionMap L v (x - z) = 0 := by rw [map_sub, hz, sub_self] have hpe : latticeProjection v ((x - z : L) : E) = 0 := congrArg (fun y : orthogonalProjectedLattice L v => ((y : (ℝ ∙ v)ᗮ) : E)) hp obtain ⟨a, ha⟩ := (shortest_latticeProjection_eq_zero_iff L hvL hv hshort (x - z).property).mp hpe have hxrep : x = a • (⟨v, hvL⟩ : L) + z := by apply Subtype.ext change (x : E) = a • v + (z : E) change a • v = (x : E) - (z : E) at ha exact (sub_eq_iff_eq_add).mp ha.symm rw [hxrep] apply Submodule.add_mem · exact Submodule.smul_mem _ a (Submodule.subset_span ⟨0, rfl⟩) · apply Submodule.sum_mem intro i _ exact Submodule.smul_mem _ _ (Submodule.subset_span ⟨i.succ, rfl⟩) let B := Basis.mk hli hsp refine ⟨B, ?_, ?_⟩ · exact congrFun (Basis.coe_mk hli hsp) 0 · intro i exact congrFun (Basis.coe_mk hli hsp) i.succ /-- The induction interface: the lifted basis has the chosen shortest vector first, exact projected tail, and explicit nearest-integer reduction bounds. -/ def exists_reduced_lattice_basis_lift (L : Submodule ℤ E) {v : E} (hvL : v ∈ L) (hv : v ≠ 0) (hshort : ∀ x ∈ L, x ≠ 0 → ‖v‖ ≤ ‖x‖) {n : ℕ} (b : Basis (Fin n) ℤ (orthogonalProjectedLattice L v)) : ∃ B : Basis (Fin (n + 1)) ℤ L, B 0 = ⟨v, hvL⟩ ∧ ∀ i : Fin n, latticeProjectionMap L v (B i.succ) = b i ∧ ∃ a : ℝ, |a| ≤ 1 / 2 ∧ (B i.succ : E) = ((b i : (ℝ ∙ v)ᗮ) : E) + a • v ∧ ‖(B i.succ : E)‖ ^ 2 ≤ ‖((b i : (ℝ ∙ v)ᗮ) : E)‖ ^ 2 + ‖v‖ ^ 2 / 4 := by classical choose u hu using fun i : Fin n => exists_rounded_orthogonal_lift L hvL (b i) obtain ⟨B, hB0, hB⟩ := exists_lattice_basis_of_projection_lifts L hvL hv hshort b u (fun i => (hu i).1) refine ⟨B, hB0, ?_⟩ intro i rw [hB] exact hu i end end Bounty end SubmissionComponent_ProjectedLatticeBasis /- Component ReducedLatticeBasis; SHA256 cf044da05f2fa1ddd563749c15e84b308168c89fbb92013ab52eb9b1bd93eb51 -/ section SubmissionComponent_ReducedLatticeBasis /- A recursively reduced integer lattice basis. The recursion keeps the actual orthogonal projected lattice, its basis, and the rounding coefficient of every lift. Thus the reduction conditions are data about the constructed basis, rather than hypotheses about an unspecified Gram--Schmidt process. -/ namespace Bounty noncomputable section open scoped InnerProductSpace BigOperators open Module universe u /-- Recursive shortest-projection reduction, with its successive orthogonal lengths. At each stage the first vector is shortest, and each remaining basis vector is a half-unit-reduced lift of the recursively reduced projected basis. -/ def IsReducedLatticeBasis : (n : ℕ) → {E : Type u} → [NormedAddCommGroup E] → [InnerProductSpace ℝ E] → (L : Submodule ℤ E) → Basis (Fin n) ℤ L → (Fin n → ℝ) → Prop | 0, _, _, _, _, _, _ => True | n + 1, E, _, _, L, B, h => ∃ (v : E) (hvL : v ∈ L), v ≠ 0 ∧ (∀ x ∈ L, x ≠ 0 → ‖v‖ ≤ ‖x‖) ∧ B 0 = ⟨v, hvL⟩ ∧ h 0 = ‖v‖ ∧ ∃ b : Basis (Fin n) ℤ (orthogonalProjectedLattice L v), IsReducedLatticeBasis n (orthogonalProjectedLattice L v) b (fun i => h i.succ) ∧ ∀ i : Fin n, latticeProjectionMap L v (B i.succ) = b i ∧ ∃ a : ℝ, |a| ≤ 1 / 2 ∧ (B i.succ : E) = ((b i : (ℝ ∙ v)ᗮ) : E) + a • v ∧ ‖(B i.succ : E)‖ ^ 2 ≤ ‖((b i : (ℝ ∙ v)ᗮ) : E)‖ ^ 2 + ‖v‖ ^ 2 / 4 /-- Every full discrete lattice admits a recursively reduced integer basis. -/ def exists_reduced_lattice_basis (n : ℕ) : ∀ (E : Type u) [NormedAddCommGroup E] [InnerProductSpace ℝ E] [FiniteDimensional ℝ E] (L : Submodule ℤ E) [DiscreteTopology L] [IsZLattice ℝ L], finrank ℝ E = n → ∃ (B : Basis (Fin n) ℤ L) (h : Fin n → ℝ), IsReducedLatticeBasis n L B h := by induction n with | zero => intro E _ _ _ L _ _ hdim let _ : Subsingleton E := Module.finrank_zero_iff.mp hdim exact ⟨Basis.empty L, fun i => Fin.elim0 i, trivial⟩ | succ n ih => intro E _ _ _ L _ _ hdim have hspan : Submodule.span ℝ (L : Set E) = ⊤ := IsZLattice.span_top have hnonzero : ∃ x ∈ L, x ≠ 0 := by by_contra! h have hbot : Submodule.span ℝ (L : Set E) = ⊥ := by apply le_antisymm _ bot_le exact Submodule.span_le.mpr (fun x hx => by simpa using h x hx) let _ : Subsingleton E := ⟨fun x y => by have hz (z : E) : z = 0 := by have : z ∈ (⊥ : Submodule ℝ E) := by rw [← hbot, hspan] trivial exact this rw [hz x, hz y]⟩ have : finrank ℝ E = 0 := Module.finrank_eq_zero_of_subsingleton ℝ E omega obtain ⟨v, hvL, hv, hshort⟩ := exists_shortest_lattice_vector L hnonzero let _ := orthogonalProjectedLattice_discreteTopology L hvL let _ := orthogonalProjectedLattice_isZLattice L v hspan have hdim' : finrank ℝ (ℝ ∙ v)ᗮ = n := by apply Submodule.finrank_add_finrank_orthogonal' simpa [finrank_span_singleton hv, add_comm] using hdim.symm obtain ⟨b, h, hb⟩ := ih (ℝ ∙ v)ᗮ (orthogonalProjectedLattice L v) hdim' obtain ⟨B, hB0, hB⟩ := exists_reduced_lattice_basis_lift L hvL hv hshort b refine ⟨B, Fin.cons ‖v‖ h, v, hvL, hv, hshort, hB0, rfl, b, ?_, hB⟩ exact hb variable {E : Type u} [NormedAddCommGroup E] [InnerProductSpace ℝ E] def IsReducedLatticeBasis.length_pos {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) : ∀ i, 0 < h i := by induction n generalizing E with | zero => exact fun i => Fin.elim0 i | succ n ih => obtain ⟨v, hvL, hv, hshort, hB0, hh0, b, hb, hlift⟩ := hB exact Fin.cases (by rw [hh0]; exact norm_pos_iff.mpr hv) (ih hb) def IsReducedLatticeBasis.first_length {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin (n + 1)) ℤ L} {h : Fin (n + 1) → ℝ} (hB : IsReducedLatticeBasis (n + 1) L B h) : h 0 = ‖(B 0 : E)‖ := by obtain ⟨v, hvL, hv, hshort, hB0, hh0, b, hb, hlift⟩ := hB simpa [hB0] using hh0 def IsReducedLatticeBasis.first_gap {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin (n + 2)) ℤ L} {h : Fin (n + 2) → ℝ} (hB : IsReducedLatticeBasis (n + 2) L B h) : (3 / 4 : ℝ) * h 0 ^ 2 ≤ h (Fin.succ 0) ^ 2 := by obtain ⟨v, hvL, hv, hshort, hB0, hh0, b, hb, hlift⟩ := hB have hp : latticeProjection v (B (Fin.succ 0) : E) = ((b 0 : (ℝ ∙ v)ᗮ) : E) := congrArg (fun z : orthogonalProjectedLattice L v => ((z : (ℝ ∙ v)ᗮ) : E)) (hlift 0).1 have hn : ((b 0 : (ℝ ∙ v)ᗮ) : E) ≠ 0 := by intro hz exact b.ne_zero 0 (Subtype.ext (Subtype.ext hz)) have hg := shortest_latticeProjection_norm_sq_gap L hvL hshort (B (Fin.succ 0)).property (hp ▸ hn) rw [hp] at hg simpa only [hh0, hb.first_length, Submodule.norm_coe] using hg def IsReducedLatticeBasis.first_length_sq_le {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin (n + 1)) ℤ L} {h : Fin (n + 1) → ℝ} (hB : IsReducedLatticeBasis (n + 1) L B h) (i : Fin (n + 1)) : h 0 ^ 2 ≤ (4 / 3 : ℝ) ^ i.val * h i ^ 2 := by induction n generalizing E with | zero => have hi : i = 0 := Fin.ext (by omega) simp [hi] | succ n ih => refine Fin.cases (by simp) (fun j => ?_) i have hgap := hB.first_gap obtain ⟨v, hvL, hv, hshort, hB0, hh0, b, hb, hlift⟩ := hB have ht := ih hb j calc h 0 ^ 2 ≤ (4 / 3 : ℝ) * h (Fin.succ 0) ^ 2 := by nlinarith _ ≤ (4 / 3 : ℝ) * ((4 / 3 : ℝ) ^ j.val * h j.succ ^ 2) := mul_le_mul_of_nonneg_left ht (by norm_num) _ = (4 / 3 : ℝ) ^ j.succ.val * h j.succ ^ 2 := by rw [Fin.val_succ, pow_succ] ring /-- The concrete lifted basis has the sharp geometric-series norm bound. -/ def IsReducedLatticeBasis.norm_sq_le {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) (i : Fin n) : ‖(B i : E)‖ ^ 2 ≤ (4 / 3 : ℝ) ^ i.val * h i ^ 2 := by induction n generalizing E with | zero => exact Fin.elim0 i | succ n ih => refine Fin.cases (by simpa using le_of_eq (congrArg (fun t : ℝ => t ^ 2) hB.first_length.symm)) (fun j => ?_) i have hhead := hB.first_length_sq_le j.succ obtain ⟨v, hvL, hv, hshort, hB0, hh0, b, hb, hlift⟩ := hB have ht := ih hb j rw [hh0] at hhead obtain ⟨a, ha, heq, hnorm⟩ := (hlift j).2 calc ‖(B j.succ : E)‖ ^ 2 ≤ ‖((b j : (ℝ ∙ v)ᗮ) : E)‖ ^ 2 + ‖v‖ ^ 2 / 4 := hnorm _ ≤ (4 / 3 : ℝ) ^ j.val * h j.succ ^ 2 + ((4 / 3 : ℝ) ^ j.succ.val * h j.succ ^ 2) / 4 := add_le_add ht (div_le_div_of_nonneg_right hhead (by norm_num)) _ = (4 / 3 : ℝ) ^ j.succ.val * h j.succ ^ 2 := by rw [Fin.val_succ, pow_succ] ring def IsReducedLatticeBasis.norm_le {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) (i : Fin n) : ‖(B i : E)‖ ≤ (2 / Real.sqrt 3) ^ i.val * h i := by have hq : 0 ≤ 2 / Real.sqrt 3 := by positivity have hq2 : (2 / Real.sqrt 3) ^ 2 = (4 / 3 : ℝ) := by rw [div_pow, Real.sq_sqrt (by norm_num : (0 : ℝ) ≤ 3)] norm_num have hs : ((2 / Real.sqrt 3) ^ i.val * h i) ^ 2 = (4 / 3 : ℝ) ^ i.val * h i ^ 2 := by rw [mul_pow, ← pow_mul, Nat.mul_comm i.val 2, pow_mul, hq2] have hn : 0 ≤ (2 / Real.sqrt 3) ^ i.val * h i := mul_nonneg (pow_nonneg hq _) (hB.length_pos i).le have hb := hB.norm_sq_le i nlinarith [norm_nonneg (B i : E)] /-- The norm product is bounded by the product of successive orthogonal lengths, with the explicit reduced-basis constant. -/ def IsReducedLatticeBasis.norm_product_le {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) : (∏ i : Fin n, ‖(B i : E)‖) ≤ (2 / Real.sqrt 3) ^ (∑ i : Fin n, i.val) * ∏ i : Fin n, h i := by calc (∏ i : Fin n, ‖(B i : E)‖) ≤ ∏ i : Fin n, (2 / Real.sqrt 3) ^ i.val * h i := Finset.prod_le_prod (fun i _ => norm_nonneg _) (fun i _ => hB.norm_le i) _ = _ := by rw [Finset.prod_mul_distrib, Finset.prod_pow_eq_pow_sum] def IsReducedLatticeBasis.norm_product_le_explicit {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) : (∏ i : Fin n, ‖(B i : E)‖) ≤ (2 / Real.sqrt 3) ^ (n * (n - 1) / 2) * ∏ i : Fin n, h i := by have hs : (∑ i : Fin n, i.val) = n * (n - 1) / 2 := by rw [Fin.sum_univ_eq_sum_range (fun i : ℕ => i), Finset.sum_range_id] simpa only [hs] using hB.norm_product_le /-- The recursive data give an actual orthogonal family in the original ambient space and all the size-reduced triangular expansion coefficients. -/ def IsReducedLatticeBasis.exists_orthogonal_data {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) : ∃ (g : Fin n → E) (μ : Fin n → Fin n → ℝ), (∀ i, ‖g i‖ = h i) ∧ Pairwise (fun i j => inner ℝ (g i) (g j) = 0) ∧ (∀ i j, |μ i j| ≤ 1 / 2) ∧ ∀ i, (B i : E) = g i + ∑ j : Fin n, if j < i then μ i j • g j else 0 := by classical induction n generalizing E with | zero => refine ⟨fun i => Fin.elim0 i, fun i => Fin.elim0 i, ?_, ?_, ?_, ?_⟩ <;> intro i <;> exact Fin.elim0 i | succ n ih => obtain ⟨v, hvL, hv, hshort, hB0, hh0, b, hb, hlift⟩ := hB obtain ⟨g, μ, hgnorm, hgorth, hμ, hexp⟩ := ih hb choose a ha heq hnorm using fun i => (hlift i).2 let G : Fin (n + 1) → E := Fin.cons v (fun i => (g i : E)) let M : Fin (n + 1) → Fin (n + 1) → ℝ := Fin.cons (fun _ => 0) (fun i => Fin.cons (a i) (μ i)) refine ⟨G, M, ?_, ?_, ?_, ?_⟩ · exact Fin.cases hh0.symm hgnorm · intro i j refine Fin.cases ?_ (fun i => ?_) i · refine Fin.cases ?_ (fun j => ?_) j · exact fun hij => False.elim (hij rfl) · exact fun _ => Submodule.mem_orthogonal_singleton_iff_inner_right.mp (g j).property · refine Fin.cases ?_ (fun j => ?_) j · exact fun _ => Submodule.mem_orthogonal_singleton_iff_inner_left.mp (g i).property · exact fun hij => hgorth (fun h => hij (congrArg Fin.succ h)) · intro i j refine Fin.cases (by norm_num [M]) (fun i => ?_) i exact Fin.cases (ha i) (hμ i) j · intro i refine Fin.cases ?_ (fun i => ?_) i · simp [G, hB0] · have hexp' := congrArg (fun z : (ℝ ∙ v)ᗮ => (z : E)) (hexp i) simp only [Submodule.coe_add, Submodule.coe_sum, Submodule.coe_smul, Submodule.coe_zero, apply_ite] at hexp' simp only [G, M, Fin.cons_succ, Fin.sum_univ_succ, Fin.cons_zero, Fin.succ_pos, ↓reduceIte, Fin.succ_lt_succ_iff] rw [heq i, hexp'] abel end end Bounty end SubmissionComponent_ReducedLatticeBasis /- Component ReducedLatticeDeterminant; SHA256 962bf143e227ce3a6d8209aa3276ab80415f5e9db588b075057229a5da697a9c -/ section SubmissionComponent_ReducedLatticeDeterminant /- Determinants and covolumes of the actual recursively reduced basis. -/ namespace Bounty noncomputable section open scoped InnerProductSpace BigOperators Matrix open Module MeasureTheory variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] /-- A triangular expansion with diagonal one does not change the determinant. -/ def orthogonal_expansion_det {n : ℕ} (e : Basis (Fin n) ℝ E) (x g : Fin n → E) (μ : Fin n → Fin n → ℝ) (hexp : ∀ i, x i = g i + ∑ j : Fin n, if j < i then μ i j • g j else 0) : e.det x = e.det g := by classical let T : Matrix (Fin n) (Fin n) ℝ := 1 + Matrix.of (fun i j => if i < j then μ j i else 0) have hT : T.IsUpperTriangular := by intro i j hij change j < i at hij simp [T, ne_of_gt hij, not_lt_of_ge hij.le] have hdetT : T.det = 1 := by rw [Matrix.det_of_isUpperTriangular hT] simp [T] have hmat : e.toMatrix x = e.toMatrix g * T := by dsimp only [T] rw [Matrix.mul_add, Matrix.mul_one] ext i j change e.coord i (x j) = e.coord i (g j) + ∑ k : Fin n, e.coord i (g k) * (if k < j then μ j k else 0) rw [hexp j, map_add, map_sum] congr 1 apply Finset.sum_congr rfl intro k _ split_ifs <;> simp [map_smul, mul_comm] rw [Basis.det_apply, hmat, Matrix.det_mul, hdetT, mul_one, ← Basis.det_apply] /-- In an orthonormal coordinate system, the absolute determinant of an orthogonal family is exactly the product of its lengths. -/ def orthogonal_abs_det {n : ℕ} (e : OrthonormalBasis (Fin n) ℝ E) (g : Fin n → E) (hg : Pairwise (fun i j => inner ℝ (g i) (g j) = 0)) : |e.toBasis.det g| = ∏ i : Fin n, ‖g i‖ := by classical have hgram : Matrix.gram ℝ g = Matrix.diagonal (fun i => ‖g i‖ ^ 2) := by ext i j by_cases hij : i = j · subst j simp · simp [hij, hg hij] have hmat : Matrix.gram ℝ g = (e.toBasis.toMatrix g).transpose * e.toBasis.toMatrix g := by have he : e.toBasis.toMatrix g = Matrix.of (fun i j => e.repr (g j) i) := by ext i j exact e.coe_toBasis_repr_apply (g j) i rw [he] simpa only [Matrix.conjTranspose_eq_transpose_of_trivial] using Matrix.gram_eq_conjTranspose_mul e g have hs : (e.toBasis.det g) ^ 2 = (∏ i : Fin n, ‖g i‖) ^ 2 := by have hd := congrArg Matrix.det (hmat.symm.trans hgram) simpa only [Matrix.det_mul, Matrix.det_transpose, Matrix.det_diagonal, Basis.det_apply, ← sq, Finset.prod_pow] using hd have hp : 0 ≤ ∏ i : Fin n, ‖g i‖ := Finset.prod_nonneg (fun _ _ => norm_nonneg _) nlinarith [sq_abs (e.toBasis.det g), abs_nonneg (e.toBasis.det g)] def IsReducedLatticeBasis.abs_det_eq_product {n : ℕ} {L : Submodule ℤ E} {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) (e : OrthonormalBasis (Fin n) ℝ E) : |e.toBasis.det (fun i => (B i : E))| = ∏ i : Fin n, h i := by obtain ⟨g, μ, hnorm, horth, hμ, hexp⟩ := hB.exists_orthogonal_data rw [orthogonal_expansion_det e.toBasis _ g μ hexp, orthogonal_abs_det e g horth] simp only [hnorm] def IsReducedLatticeBasis.covolume_eq_product [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E] {n : ℕ} {L : Submodule ℤ E} [DiscreteTopology L] [IsZLattice ℝ L] {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) (e : OrthonormalBasis (Fin n) ℝ E) : ZLattice.covolume L = ∏ i : Fin n, h i := by have hvol : volume.real (ZSpan.fundamentalDomain e.toBasis) = 1 := by rw [measureReal_congr (ZSpan.fundamentalDomain_ae_parallelepiped e.toBasis volume)] simp only [measureReal_def, e.coe_toBasis, e.volume_parallelepiped, ENNReal.toReal_one] rw [ZLattice.covolume_eq_det_mul_measureReal L volume B e.toBasis, hvol, mul_one] exact hB.abs_det_eq_product e def IsReducedLatticeBasis.norm_product_le_covolume [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E] {n : ℕ} {L : Submodule ℤ E} [DiscreteTopology L] [IsZLattice ℝ L] {B : Basis (Fin n) ℤ L} {h : Fin n → ℝ} (hB : IsReducedLatticeBasis n L B h) (e : OrthonormalBasis (Fin n) ℝ E) : (∏ i : Fin n, ‖(B i : E)‖) ≤ (2 / Real.sqrt 3) ^ (n * (n - 1) / 2) * ZLattice.covolume L := by rw [hB.covolume_eq_product e] exact hB.norm_product_le_explicit /-- Existence of an actual integer basis with the explicit covolume bound, including dimension zero. -/ def exists_lattice_basis_norm_product_le_covolume [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E] (L : Submodule ℤ E) [DiscreteTopology L] [IsZLattice ℝ L] : ∃ B : Basis (Fin (finrank ℝ E)) ℤ L, (∏ i : Fin (finrank ℝ E), ‖(B i : E)‖) ≤ (2 / Real.sqrt 3) ^ (finrank ℝ E * (finrank ℝ E - 1) / 2) * ZLattice.covolume L := by obtain ⟨B, h, hB⟩ := exists_reduced_lattice_basis (finrank ℝ E) E L rfl exact ⟨B, hB.norm_product_le_covolume (stdOrthonormalBasis ℝ E)⟩ end end Bounty end SubmissionComponent_ReducedLatticeDeterminant /- Component LatticeSuccessiveMinima; SHA256 308b65d5cf92bbad5e112996062e10028db8b71e49d6704b6c8e6cb19fefa6a1 -/ section SubmissionComponent_LatticeSuccessiveMinima /- Successive Euclidean minima obtained by finite minimization in the actual lattice. The greedy construction is subsequently characterized intrinsically by bounded independent tuples, so the minima do not depend on its choices. -/ namespace Bounty noncomputable section open scoped BigOperators open Module variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] def latticePrefixSpan {n : ℕ} (v : Fin n → E) (k : ℕ) : Submodule ℝ E := Submodule.span ℝ (v '' {i | i.val < k}) def latticePrefixSpan_eq_range {n k : ℕ} (v : Fin n → E) (hk : k ≤ n) : latticePrefixSpan v k = Submodule.span ℝ (Set.range (fun j : Fin k => v (Fin.castLE hk j))) := by change Submodule.span ℝ _ = Submodule.span ℝ _ apply congrArg (Submodule.span ℝ) ext x constructor · rintro ⟨i, hi, rfl⟩ exact ⟨⟨i.val, hi⟩, rfl⟩ · rintro ⟨j, rfl⟩ exact ⟨Fin.castLE hk j, j.isLt, rfl⟩ def latticePrefixSpan_zero {n : ℕ} (v : Fin n → E) : latticePrefixSpan v 0 = ⊥ := by simp [latticePrefixSpan] def latticePrefixSpan_full {n : ℕ} (v : Fin n → E) : latticePrefixSpan v n = Submodule.span ℝ (Set.range v) := by rw [latticePrefixSpan_eq_range v le_rfl] rfl def latticePrefixSpan_snoc {n k : ℕ} (v : Fin n → E) (x : E) (hk : k ≤ n) : latticePrefixSpan (Fin.snoc v x) k = latticePrefixSpan v k := by rw [latticePrefixSpan_eq_range _ (hk.trans (Nat.le_succ n)), latticePrefixSpan_eq_range _ hk] apply congrArg (Submodule.span ℝ) apply congrArg Set.range funext j rw [show Fin.castLE (hk.trans (Nat.le_succ n)) j = (Fin.castLE hk j).castSucc from rfl] simp only [Fin.snoc_castSucc] def latticePrefixSpan_finrank_le [FiniteDimensional ℝ E] {n k : ℕ} (v : Fin n → E) (hk : k ≤ n) : finrank ℝ (latticePrefixSpan v k) ≤ k := by rw [latticePrefixSpan_eq_range v hk] simpa only [Fintype.card_fin, Set.finrank] using finrank_range_le_card (R := ℝ) (fun j : Fin k => v (Fin.castLE hk j)) def latticePrefixSpan_finrank [FiniteDimensional ℝ E] {n k : ℕ} {v : Fin n → E} (hv : LinearIndependent ℝ v) (hk : k ≤ n) : finrank ℝ (latticePrefixSpan v k) = k := by rw [latticePrefixSpan_eq_range v hk] simpa only [Fintype.card_fin, Function.comp_def] using finrank_span_eq_card (hv.comp (Fin.castLE hk) (Fin.castLE_injective hk)) /-- Shortest points outside any prescribed subspace exist whenever that subspace does not contain all lattice points. -/ def exists_shortest_lattice_vector_outside [FiniteDimensional ℝ E] (L : Submodule ℤ E) [DiscreteTopology L] (S : Submodule ℝ E) (hL : ∃ x ∈ L, x ∉ S) : ∃ v ∈ L, v ∉ S ∧ ∀ x ∈ L, x ∉ S → ‖v‖ ≤ ‖x‖ := by obtain ⟨x₀, hx₀, hx₀ne⟩ := hL have hclosed : IsClosed (L : Set E) := AddSubgroup.isClosed_of_discrete (H := L.toAddSubgroup) have hfinite : Set.Finite (Metric.closedBall (0 : E) ‖x₀‖ ∩ (L : Set E)) := Metric.finite_isBounded_inter_isClosed DiscreteTopology.isDiscrete Metric.isBounded_closedBall hclosed let s : Set E := (Metric.closedBall 0 ‖x₀‖ ∩ (L : Set E)) \ (S : Set E) have hs : s.Finite := hfinite.subset (by intro x hx; exact hx.1) have hx₀s : x₀ ∈ s := ⟨⟨by simp, hx₀⟩, hx₀ne⟩ obtain ⟨v, hv, hmin⟩ := Set.exists_min_image s (fun x => ‖x‖) hs ⟨x₀, hx₀s⟩ refine ⟨v, hv.1.2, hv.2, ?_⟩ intro x hx hxne by_cases hball : ‖x‖ ≤ ‖x₀‖ · exact hmin x ⟨⟨by simpa using hball, hx⟩, hxne⟩ · exact (hmin x₀ hx₀s).trans (le_of_lt (lt_of_not_ge hball)) def IsLatticeMinimumTuple (L : Submodule ℤ E) {n : ℕ} (v : Fin n → E) : Prop := LinearIndependent ℝ v ∧ (∀ i, v i ∈ L) ∧ ∀ i x, x ∈ L → x ∉ latticePrefixSpan v i.val → ‖v i‖ ≤ ‖x‖ def exists_lattice_minimum_tuple [FiniteDimensional ℝ E] (L : Submodule ℤ E) [DiscreteTopology L] [IsZLattice ℝ L] (n : ℕ) (hn : n ≤ finrank ℝ E) : ∃ v : Fin n → E, IsLatticeMinimumTuple L v := by induction n with | zero => refine ⟨fun i => Fin.elim0 i, linearIndependent_empty_type, ?_, ?_⟩ · exact fun i => Fin.elim0 i · exact fun i => Fin.elim0 i | succ n ih => obtain ⟨v, hvli, hvL, hvmin⟩ := ih (Nat.le_of_succ_le hn) have hex : ∃ x ∈ L, x ∉ Submodule.span ℝ (Set.range v) := by by_contra! h have htop : Submodule.span ℝ (Set.range v) = ⊤ := by apply top_unique rw [← IsZLattice.span_top (K := ℝ) (L := L)] exact Submodule.span_le.mpr h have hr := finrank_span_eq_card hvli rw [htop] at hr simp only [finrank_top, Fintype.card_fin] at hr omega obtain ⟨x, hxL, hx, hxmin⟩ := exists_shortest_lattice_vector_outside L _ hex refine ⟨Fin.snoc v x, hvli.finSnoc hx, ?_, ?_⟩ · exact Fin.lastCases (by simpa) (fun i => by simpa using hvL i) · intro i refine Fin.lastCases ?_ (fun j => ?_) i · simpa only [Fin.snoc_last, Fin.val_last, latticePrefixSpan_snoc v x le_rfl, latticePrefixSpan_full] using hxmin · simpa only [Fin.snoc_castSucc, Fin.val_castSucc, latticePrefixSpan_snoc v x (Nat.le_of_lt j.isLt)] using hvmin j def IsLatticeMinimumTuple.monotone {n : ℕ} {L : Submodule ℤ E} {v : Fin n → E} (hv : IsLatticeMinimumTuple L v) : Monotone (fun i => ‖v i‖) := by intro i j hij apply hv.2.2 i (v j) (hv.2.1 j) exact hv.1.notMem_span_image (by simpa using not_lt_of_ge hij) def IsLatticeMinimumTuple.norm_pos {n : ℕ} {L : Submodule ℤ E} {v : Fin n → E} (hv : IsLatticeMinimumTuple L v) (i : Fin n) : 0 < ‖v i‖ := norm_pos_iff.mpr (hv.1.ne_zero i) def IsLatticeMinimumTuple.short_mem_prefix {n : ℕ} {L : Submodule ℤ E} {v : Fin n → E} (hv : IsLatticeMinimumTuple L v) (i : Fin n) {x : E} (hx : x ∈ L) (hnorm : ‖x‖ < ‖v i‖) : x ∈ latticePrefixSpan v i.val := by by_contra h exact (not_le_of_gt hnorm) (hv.2.2 i x hx h) def IsLatticeMinimumTuple.le_of_independent_tuple [FiniteDimensional ℝ E] {n : ℕ} {L : Submodule ℤ E} {v : Fin n → E} (hv : IsLatticeMinimumTuple L v) (i : Fin n) {R : ℝ} (w : Fin (i.val + 1) → E) (hw : LinearIndependent ℝ w) (hwL : ∀ j, w j ∈ L) (hwR : ∀ j, ‖w j‖ ≤ R) : ‖v i‖ ≤ R := by by_contra h have hlt : R < ‖v i‖ := lt_of_not_ge h have hspan : Submodule.span ℝ (Set.range w) ≤ latticePrefixSpan v i.val := by apply Submodule.span_le.mpr rintro x ⟨j, rfl⟩ exact hv.short_mem_prefix i (hwL j) ((hwR j).trans_lt hlt) have hd := Submodule.finrank_mono hspan rw [finrank_span_eq_card hw, Fintype.card_fin] at hd have hp := latticePrefixSpan_finrank_le v (Nat.le_of_lt i.isLt) omega def IsLatticeMinimumTuple.le_iff_independent_tuple [FiniteDimensional ℝ E] {n : ℕ} {L : Submodule ℤ E} {v : Fin n → E} (hv : IsLatticeMinimumTuple L v) (i : Fin n) (R : ℝ) : ‖v i‖ ≤ R ↔ ∃ w : Fin (i.val + 1) → E, LinearIndependent ℝ w ∧ (∀ j, w j ∈ L) ∧ (∀ j, ‖w j‖ ≤ R) := by constructor · intro hR let f := Fin.castLE (Nat.succ_le_of_lt i.isLt) refine ⟨fun j => v (f j), hv.1.comp f (Fin.castLE_injective _), fun j => hv.2.1 (f j), fun j => ?_⟩ apply le_trans (hv.monotone (show f j ≤ i from ?_)) hR change j.val ≤ i.val omega · rintro ⟨w, hw, hwL, hwR⟩ exact hv.le_of_independent_tuple i w hw hwL hwR section Minima variable [FiniteDimensional ℝ E] (L : Submodule ℤ E) variable [DiscreteTopology L] [IsZLattice ℝ L] def latticeMinimumVectors : Fin (finrank ℝ E) → E := Classical.choose (exists_lattice_minimum_tuple L (finrank ℝ E) le_rfl) def latticeMinimumVectors_spec : IsLatticeMinimumTuple L (latticeMinimumVectors L) := Classical.choose_spec (exists_lattice_minimum_tuple L (finrank ℝ E) le_rfl) def latticeSuccessiveMinimum (i : Fin (finrank ℝ E)) : ℝ := ‖latticeMinimumVectors L i‖ def latticeSuccessiveMinimum_pos (i : Fin (finrank ℝ E)) : 0 < latticeSuccessiveMinimum L i := (latticeMinimumVectors_spec L).norm_pos i def latticeSuccessiveMinimum_monotone : Monotone (latticeSuccessiveMinimum L) := (latticeMinimumVectors_spec L).monotone /-- Intrinsic characterization: the i-th (zero-indexed) minimum is at most R exactly when the radius-R ball contains i+1 independent lattice vectors. -/ def latticeSuccessiveMinimum_le_iff (i : Fin (finrank ℝ E)) (R : ℝ) : latticeSuccessiveMinimum L i ≤ R ↔ ∃ w : Fin (i.val + 1) → E, LinearIndependent ℝ w ∧ (∀ j, w j ∈ L) ∧ (∀ j, ‖w j‖ ≤ R) := (latticeMinimumVectors_spec L).le_iff_independent_tuple i R def latticeMinimumVectors_attain : LinearIndependent ℝ (latticeMinimumVectors L) ∧ (∀ i, latticeMinimumVectors L i ∈ L) ∧ (∀ i, ‖latticeMinimumVectors L i‖ = latticeSuccessiveMinimum L i) := ⟨(latticeMinimumVectors_spec L).1, (latticeMinimumVectors_spec L).2.1, fun _ => rfl⟩ def latticeSuccessiveMinimum_le_sorted_tuple (w : Fin (finrank ℝ E) → E) (hw : LinearIndependent ℝ w) (hwL : ∀ j, w j ∈ L) (hmono : Monotone (fun j => ‖w j‖)) (i : Fin (finrank ℝ E)) : latticeSuccessiveMinimum L i ≤ ‖w i‖ := by apply (latticeSuccessiveMinimum_le_iff L i _).mpr let f := Fin.castLE (Nat.succ_le_of_lt i.isLt) refine ⟨fun j => w (f j), hw.comp f (Fin.castLE_injective _), fun j => hwL (f j), fun j => hmono ?_⟩ change j.val ≤ i.val omega def latticeSuccessiveMinimum_product_le_tuple (w : Fin (finrank ℝ E) → E) (hw : LinearIndependent ℝ w) (hwL : ∀ j, w j ∈ L) : (∏ i, latticeSuccessiveMinimum L i) ≤ ∏ i, ‖w i‖ := by classical let σ := Tuple.sort (fun j => ‖w j‖) have hle (i : Fin (finrank ℝ E)) : latticeSuccessiveMinimum L i ≤ ‖w (σ i)‖ := latticeSuccessiveMinimum_le_sorted_tuple L (w ∘ σ) (hw.comp σ σ.injective) (fun j => hwL (σ j)) (by simpa only [Function.comp_def] using Tuple.monotone_sort (fun j => ‖w j‖)) i calc (∏ i, latticeSuccessiveMinimum L i) ≤ ∏ i, ‖w (σ i)‖ := Finset.prod_le_prod (fun i _ => (latticeSuccessiveMinimum_pos L i).le) (fun i _ => hle i) _ = _ := Equiv.prod_comp σ (fun j => ‖w j‖) def latticeSuccessiveMinimum_product_le_covolume [MeasurableSpace E] [BorelSpace E] : (∏ i, latticeSuccessiveMinimum L i) ≤ (2 / Real.sqrt 3) ^ (finrank ℝ E * (finrank ℝ E - 1) / 2) * ZLattice.covolume L := by obtain ⟨B, hB⟩ := exists_lattice_basis_norm_product_le_covolume L apply le_trans (latticeSuccessiveMinimum_product_le_tuple L (fun i => (B i : E)) ?_ (fun i => (B i).property)) hB have he : (fun i => (B i : E)) = (B.ofZLatticeBasis ℝ L : Fin (finrank ℝ E) → E) := by funext i exact (B.ofZLatticeBasis_apply ℝ L i).symm rw [he] exact (B.ofZLatticeBasis ℝ L).linearIndependent end Minima /-- The elementary Leibniz bound, with independent bounds on each column. -/ def lattice_matrix_abs_det_le {n : ℕ} (A : Matrix (Fin n) (Fin n) ℝ) (c : Fin n → ℝ) (hA : ∀ i j, |A i j| ≤ c j) : |A.det| ≤ (n.factorial : ℝ) * ∏ j, c j := by classical rw [Matrix.det_apply'] calc |∑ σ : Equiv.Perm (Fin n), ((Equiv.Perm.sign σ : ℤ) : ℝ) * ∏ i, A (σ i) i| ≤ ∑ σ : Equiv.Perm (Fin n), |((Equiv.Perm.sign σ : ℤ) : ℝ) * ∏ i, A (σ i) i| := Finset.abs_sum_le_sum_abs _ _ _ ≤ ∑ _σ : Equiv.Perm (Fin n), ∏ j, c j := by apply Finset.sum_le_sum intro σ _ have hs : |((Equiv.Perm.sign σ : ℤ) : ℝ)| = 1 := by exact_mod_cast (Int.isUnit_iff_abs_eq.mp (Equiv.Perm.sign σ).isUnit) rw [abs_mul, hs, one_mul, Finset.abs_prod] exact Finset.prod_le_prod (fun _ _ => abs_nonneg _) (fun i _ => hA (σ i) i) _ = _ := by simp [Fintype.card_perm] def lattice_abs_det_le_factorial_norm_product {n : ℕ} (e : OrthonormalBasis (Fin n) ℝ E) (w : Fin n → E) : |e.toBasis.det w| ≤ (n.factorial : ℝ) * ∏ i, ‖w i‖ := by rw [Basis.det_apply] apply lattice_matrix_abs_det_le intro i j rw [Basis.toMatrix_apply, e.coe_toBasis_repr_apply, e.repr_apply_apply] simpa only [Real.norm_eq_abs, e.norm_eq_one, one_mul] using norm_inner_le_norm (𝕜 := ℝ) (e i) (w j) /-- Independent lattice vectors have absolute determinant at least the lattice covolume, because their coordinates in an integer basis have a nonzero integer determinant. -/ def lattice_covolume_le_abs_det [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E] (L : Submodule ℤ E) [DiscreteTopology L] [IsZLattice ℝ L] (e : OrthonormalBasis (Fin (finrank ℝ E)) ℝ E) (w : Fin (finrank ℝ E) → E) (hw : LinearIndependent ℝ w) (hwL : ∀ i, w i ∈ L) : ZLattice.covolume L ≤ |e.toBasis.det w| := by classical obtain ⟨B, h, hB⟩ := exists_reduced_lattice_basis (finrank ℝ E) E L rfl let b := B.ofZLatticeBasis ℝ L let wL : Fin (finrank ℝ E) → L := fun i => ⟨w i, hwL i⟩ let A : Matrix (Fin (finrank ℝ E)) (Fin (finrank ℝ E)) ℤ := B.toMatrix wL have hb : (b : Fin (finrank ℝ E) → E) = fun i => (B i : E) := by funext i exact B.ofZLatticeBasis_apply ℝ L i have hcov : ZLattice.covolume L = |e.toBasis.det b| := by rw [hb, hB.abs_det_eq_product e, hB.covolume_eq_product e] have hA : b.toMatrix w = A.map (Int.castRingHom ℝ) := by ext i j exact B.ofZLatticeBasis_repr_apply ℝ L (wL j) i have hcast : b.det w = (A.det : ℝ) := by rw [Basis.det_apply, hA] exact ((Int.castRingHom ℝ).map_det A).symm let bw := basisOfLinearIndependentOfCardEqFinrank' w hw (by simp) have hbw : (bw : Fin (finrank ℝ E) → E) = w := coe_basisOfLinearIndependentOfCardEqFinrank' w hw _ have hne : b.det w ≠ 0 := by rw [← hbw] exact (b.isUnit_det bw).ne_zero have hAz : A.det ≠ 0 := by intro hz apply hne rw [hcast, hz, Int.cast_zero] have habs : (1 : ℝ) ≤ |b.det w| := by rw [hcast] have hz : (1 : ℤ) ≤ |A.det| := by have := abs_pos.mpr hAz; omega exact_mod_cast hz have hfactor : e.toBasis.det w = e.toBasis.det b * b.det w := by have hf := congrArg (fun f : AlternatingMap ℝ E ℝ (Fin (finrank ℝ E)) => f w) (e.toBasis.det.eq_smul_basis_det b) simpa only [AlternatingMap.smul_apply, smul_eq_mul] using hf rw [hfactor, abs_mul, ← hcov] exact le_mul_of_one_le_right (ZLattice.covolume_pos L).le habs def latticeSuccessiveMinimum_covolume_div_factorial_le [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E] (L : Submodule ℤ E) [DiscreteTopology L] [IsZLattice ℝ L] : ZLattice.covolume L / (finrank ℝ E).factorial ≤ ∏ i, latticeSuccessiveMinimum L i := by have ht := latticeMinimumVectors_attain L have hdet := lattice_covolume_le_abs_det L (stdOrthonormalBasis ℝ E) (latticeMinimumVectors L) ht.1 ht.2.1 have hbound := lattice_abs_det_le_factorial_norm_product (stdOrthonormalBasis ℝ E) (latticeMinimumVectors L) apply (div_le_iff₀ (by exact_mod_cast Nat.factorial_pos (finrank ℝ E))).mpr simpa only [latticeSuccessiveMinimum, mul_comm] using hdet.trans hbound /-- Both product bounds for the actual attained Euclidean successive minima. -/ def latticeSuccessiveMinimum_product_bounds [FiniteDimensional ℝ E] [MeasurableSpace E] [BorelSpace E] (L : Submodule ℤ E) [DiscreteTopology L] [IsZLattice ℝ L] : ZLattice.covolume L / (finrank ℝ E).factorial ≤ (∏ i, latticeSuccessiveMinimum L i) ∧ (∏ i, latticeSuccessiveMinimum L i) ≤ (2 / Real.sqrt 3) ^ (finrank ℝ E * (finrank ℝ E - 1) / 2) * ZLattice.covolume L := ⟨latticeSuccessiveMinimum_covolume_div_factorial_le L, latticeSuccessiveMinimum_product_le_covolume L⟩ end end Bounty end SubmissionComponent_LatticeSuccessiveMinima /- Component RationalBoxLattice; SHA256 535fbb6c0fd03f5c7a61ea5eeac877d53fa666fb73129a2be1abb3c66143bd66 -/ section SubmissionComponent_RationalBoxLattice /- Actual Euclidean lattices associated to rational rectangular domains. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix open Module MeasureTheory abbrev BoxEuclidean (d : ℕ) := EuclideanSpace ℝ (Fin d) def matrixEuclideanEquiv {d : ℕ} (C : Matrix (Fin d) (Fin d) ℝ) (hC : C.det ≠ 0) : BoxEuclidean d ≃ₗ[ℝ] BoxEuclidean d := C.toLinearEquiv (EuclideanSpace.basisFun (Fin d) ℝ).toBasis (isUnit_iff_ne_zero.mpr hC) def matrixEuclideanEquiv_apply {d : ℕ} (C : Matrix (Fin d) (Fin d) ℝ) (hC : C.det ≠ 0) (x : BoxEuclidean d) : matrixEuclideanEquiv C hC x = Matrix.toEuclideanLin C x := by rw [matrixEuclideanEquiv, Matrix.toLinearEquiv_apply, ← Matrix.toEuclideanLin_eq_toLin_orthonormal] def matrixEuclideanBasis {d : ℕ} (C : Matrix (Fin d) (Fin d) ℝ) (hC : C.det ≠ 0) : Basis (Fin d) ℝ (BoxEuclidean d) := (EuclideanSpace.basisFun (Fin d) ℝ).toBasis.map (matrixEuclideanEquiv C hC) abbrev matrixEuclideanLattice {d : ℕ} (C : Matrix (Fin d) (Fin d) ℝ) (hC : C.det ≠ 0) : Submodule ℤ (BoxEuclidean d) := Submodule.span ℤ (Set.range (matrixEuclideanBasis C hC)) def matrixEuclideanBasis_toMatrix {d : ℕ} (C : Matrix (Fin d) (Fin d) ℝ) (hC : C.det ≠ 0) : (EuclideanSpace.basisFun (Fin d) ℝ).toBasis.toMatrix (matrixEuclideanBasis C hC) = C := by conv_rhs => rw [← LinearMap.toMatrix_toLin (EuclideanSpace.basisFun (Fin d) ℝ).toBasis (EuclideanSpace.basisFun (Fin d) ℝ).toBasis C] ext i j simp only [Basis.toMatrix_apply, LinearMap.toMatrix_apply, matrixEuclideanBasis, Basis.map_apply, matrixEuclideanEquiv, Matrix.toLinearEquiv_apply] def matrixEuclideanLattice_covolume {d : ℕ} (C : Matrix (Fin d) (Fin d) ℝ) (hC : C.det ≠ 0) : ZLattice.covolume (matrixEuclideanLattice C hC) = |C.det| := by let e := EuclideanSpace.basisFun (Fin d) ℝ let b := matrixEuclideanBasis C hC have hvol : volume.real (ZSpan.fundamentalDomain e.toBasis) = 1 := by rw [measureReal_congr (ZSpan.fundamentalDomain_ae_parallelepiped e.toBasis volume)] simp only [measureReal_def, e.coe_toBasis, e.volume_parallelepiped, ENNReal.toReal_one] change ZLattice.covolume (Submodule.span ℤ (Set.range b)) = |C.det| rw [ZLattice.covolume_eq_det_mul_measureReal _ volume (b.restrictScalars ℤ) e.toBasis, hvol, mul_one] have hb : (fun i => ((b.restrictScalars ℤ i : matrixEuclideanLattice C hC) : BoxEuclidean d)) = b := by funext i exact b.restrictScalars_apply ℤ i change |e.toBasis.det (fun i => ((b.restrictScalars ℤ i : matrixEuclideanLattice C hC) : BoxEuclidean d))| = _ rw [hb, Basis.det_apply, matrixEuclideanBasis_toMatrix] def matrixEuclideanLattice_mem_iff {d : ℕ} (C : Matrix (Fin d) (Fin d) ℝ) (hC : C.det ≠ 0) (y : BoxEuclidean d) : y ∈ matrixEuclideanLattice C hC ↔ ∃ z : Fin d → ℤ, y = Matrix.toEuclideanLin C (WithLp.toLp 2 (fun i => (z i : ℝ))) := by let e := EuclideanSpace.basisFun (Fin d) ℝ let f := matrixEuclideanEquiv C hC rw [matrixEuclideanLattice, (matrixEuclideanBasis C hC).mem_span_iff_repr_mem ℤ] constructor · intro hy choose z hz using hy refine ⟨z, ?_⟩ rw [← matrixEuclideanEquiv_apply C hC] apply f.symm.injective change f.symm y = f.symm (f _) rw [f.symm_apply_apply] ext i exact (hz i).symm · rintro ⟨z, rfl⟩ i refine ⟨z i, ?_⟩ rw [← matrixEuclideanEquiv_apply C hC] change (z i : ℝ) = e.toBasis.repr (f.symm (f (WithLp.toLp 2 (fun i => (z i : ℝ))))) i rw [f.symm_apply_apply, e.coe_toBasis_repr_apply] rfl def rationalBoxMatrix {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) : Matrix (Fin d) (Fin d) ℝ := Matrix.diagonal (fun i => (B i)⁻¹) * A.map (Rat.castHom ℝ) def rationalBoxLatticeMatrix {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) : Matrix (Fin d) (Fin d) ℝ := rationalBoxMatrix A B * Matrix.diagonal (fun i => (N i : ℝ)) def rationalBoxMatrix_det {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) : (rationalBoxMatrix A B).det = (A.det : ℝ) / ∏ i, B i := by rw [rationalBoxMatrix, Matrix.det_mul, Matrix.det_diagonal] have hc : (A.map (Rat.castHom ℝ)).det = (A.det : ℝ) := ((Rat.castHom ℝ).map_det A).symm rw [hc, Finset.prod_inv_distrib, div_eq_mul_inv, mul_comm] def rationalBoxLatticeMatrix_det {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) : (rationalBoxLatticeMatrix A B N).det = (A.det : ℝ) * (∏ i, (N i : ℝ)) / ∏ i, B i := by rw [rationalBoxLatticeMatrix, Matrix.det_mul, rationalBoxMatrix_det, Matrix.det_diagonal] ring def rationalBoxMatrix_det_ne_zero {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) : (rationalBoxMatrix A B).det ≠ 0 := by rw [rationalBoxMatrix_det] exact div_ne_zero (by exact_mod_cast hA) (Finset.prod_ne_zero_iff.mpr (fun i _ => (hB i).ne')) def rationalBoxLatticeMatrix_det_ne_zero {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) : (rationalBoxLatticeMatrix A B N).det ≠ 0 := by rw [rationalBoxLatticeMatrix, Matrix.det_mul, Matrix.det_diagonal] exact mul_ne_zero (rationalBoxMatrix_det_ne_zero A B hA hB) (Finset.prod_ne_zero_iff.mpr (fun i _ => by exact_mod_cast (hN i).ne')) abbrev rationalBoxLattice {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) : Submodule ℤ (BoxEuclidean d) := matrixEuclideanLattice (rationalBoxLatticeMatrix A B N) (rationalBoxLatticeMatrix_det_ne_zero A B N hA hB hN) def rationalBoxLattice_covolume {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) : ZLattice.covolume (rationalBoxLattice A B N hA hB hN) = |(A.det : ℝ)| * (∏ i, (N i : ℝ)) / ∏ i, B i := by have hn : (0 : ℝ) < ∏ i, (N i : ℝ) := Finset.prod_pos (fun i _ => by exact_mod_cast hN i) have hb : (0 : ℝ) < ∏ i, B i := Finset.prod_pos (fun i _ => hB i) rw [rationalBoxLattice, matrixEuclideanLattice_covolume, rationalBoxLatticeMatrix_det, abs_div, abs_mul, abs_of_pos hn, abs_of_pos hb] def rationalBoxTransform {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) : BoxEuclidean d ≃ₗ[ℝ] BoxEuclidean d := matrixEuclideanEquiv (rationalBoxMatrix A B) (rationalBoxMatrix_det_ne_zero A B hA hB) def rationalBoxTransform_apply {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (x : BoxEuclidean d) (i : Fin d) : rationalBoxTransform A B hA hB x i = (A.map (Rat.castHom ℝ) *ᵥ WithLp.ofLp x) i / B i := by rw [rationalBoxTransform, matrixEuclideanEquiv_apply] change (rationalBoxMatrix A B *ᵥ WithLp.ofLp x) i = _ simp [rationalBoxMatrix, ← Matrix.mulVec_mulVec, Matrix.mulVec_diagonal, div_eq_mul_inv, mul_comm] def diagonalIntegerPoint {d : ℕ} (N : Fin d → ℕ) (z : Fin d → ℤ) : BoxEuclidean d := WithLp.toLp 2 (fun i => (N i : ℝ) * (z i : ℝ)) def rationalBoxLattice_mem_iff {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (y : BoxEuclidean d) : y ∈ rationalBoxLattice A B N hA hB hN ↔ ∃ z : Fin d → ℤ, y = rationalBoxTransform A B hA hB (diagonalIntegerPoint N z) := by rw [rationalBoxLattice, matrixEuclideanLattice_mem_iff] apply exists_congr intro z apply Iff.of_eq apply congrArg (fun t : BoxEuclidean d => y = t) rw [rationalBoxTransform, matrixEuclideanEquiv_apply] ext i change ((rationalBoxMatrix A B * Matrix.diagonal (fun i => (N i : ℝ))) *ᵥ (fun i => (z i : ℝ))) i = (rationalBoxMatrix A B *ᵥ (fun i => (N i : ℝ) * (z i : ℝ))) i rw [← Matrix.mulVec_mulVec] apply congrArg (fun t : Fin d → ℝ => (rationalBoxMatrix A B *ᵥ t) i) ext j exact Matrix.mulVec_diagonal _ _ j def rationalBoxContains {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (x : BoxEuclidean d) : Prop := ∀ i, |(A.map (Rat.castHom ℝ) *ᵥ WithLp.ofLp x) i| ≤ B i def rationalBoxContains_norm_le_sqrt {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (x : BoxEuclidean d) (hx : rationalBoxContains A B x) : ‖rationalBoxTransform A B hA hB x‖ ≤ Real.sqrt d := by let y := rationalBoxTransform A B hA hB x have hy (i : Fin d) : |y i| ≤ 1 := by rw [show y i = (A.map (Rat.castHom ℝ) *ᵥ WithLp.ofLp x) i / B i from rationalBoxTransform_apply A B hA hB x i, abs_div, abs_of_pos (hB i)] exact (div_le_one (hB i)).mpr (hx i) have hs : ‖y‖ ^ 2 ≤ (d : ℝ) := by rw [EuclideanSpace.real_norm_sq_eq] calc (∑ i, y i ^ 2) ≤ ∑ _i : Fin d, (1 : ℝ) := by apply Finset.sum_le_sum intro i _ nlinarith [hy i, abs_nonneg (y i), sq_abs (y i)] _ = _ := by simp have hsq := Real.sq_sqrt (Nat.cast_nonneg d : (0 : ℝ) ≤ d) have hpos := Real.sqrt_nonneg (d : ℝ) change ‖y‖ ≤ _ nlinarith [norm_nonneg y] def boxDimensionEquiv (d : ℕ) : Fin d ≃ Fin (finrank ℝ (BoxEuclidean d)) := finCongr (by simp [BoxEuclidean]) /-- The Euclidean successive minimum of the transformed lattice, measured on the original domain by the norm `‖T x‖₂`. -/ def rationalBoxMinimumValue {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (i : Fin d) : ℝ := latticeSuccessiveMinimum (rationalBoxLattice A B N hA hB hN) (boxDimensionEquiv d i) def rationalBoxMinimumPoints {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (i : Fin d) : BoxEuclidean d := (rationalBoxTransform A B hA hB).symm (latticeMinimumVectors (rationalBoxLattice A B N hA hB hN) (boxDimensionEquiv d i)) def rationalBoxMinimumPoints_integral {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (i : Fin d) : ∃ z : Fin d → ℤ, rationalBoxMinimumPoints A B N hA hB hN i = diagonalIntegerPoint N z := by have hm := (latticeMinimumVectors_attain (rationalBoxLattice A B N hA hB hN)).2.1 (boxDimensionEquiv d i) obtain ⟨z, hz⟩ := (rationalBoxLattice_mem_iff A B N hA hB hN _).mp hm refine ⟨z, ?_⟩ unfold rationalBoxMinimumPoints rw [hz, LinearEquiv.symm_apply_apply] def rationalBoxMinimumPoints_independent {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) : LinearIndependent ℝ (rationalBoxMinimumPoints A B N hA hB hN) := by have hli := (latticeMinimumVectors_attain (rationalBoxLattice A B N hA hB hN)).1.comp (boxDimensionEquiv d) (boxDimensionEquiv d).injective exact hli.map' (rationalBoxTransform A B hA hB).symm.toLinearMap (LinearMap.ker_eq_bot.mpr (rationalBoxTransform A B hA hB).symm.injective) def rationalBoxMinimumPoints_attain {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (i : Fin d) : ‖rationalBoxTransform A B hA hB (rationalBoxMinimumPoints A B N hA hB hN i)‖ = rationalBoxMinimumValue A B N hA hB hN i := by simp [rationalBoxMinimumPoints, rationalBoxMinimumValue, latticeSuccessiveMinimum] def rationalBoxMinimumValue_pos {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (i : Fin d) : 0 < rationalBoxMinimumValue A B N hA hB hN i := latticeSuccessiveMinimum_pos _ _ def rationalBoxMinimumValue_monotone {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) : Monotone (rationalBoxMinimumValue A B N hA hB hN) := by intro i j hij apply latticeSuccessiveMinimum_monotone exact hij def rationalBoxMinimumValue_product_bounds {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) : (|(A.det : ℝ)| * (∏ i, (N i : ℝ)) / ∏ i, B i) / d.factorial ≤ (∏ i, rationalBoxMinimumValue A B N hA hB hN i) ∧ (∏ i, rationalBoxMinimumValue A B N hA hB hN i) ≤ (2 / Real.sqrt 3) ^ (d * (d - 1) / 2) * (|(A.det : ℝ)| * (∏ i, (N i : ℝ)) / ∏ i, B i) := by have hp : (∏ i, rationalBoxMinimumValue A B N hA hB hN i) = ∏ i, latticeSuccessiveMinimum (rationalBoxLattice A B N hA hB hN) i := Equiv.prod_comp (boxDimensionEquiv d) _ rw [hp] have h := latticeSuccessiveMinimum_product_bounds (rationalBoxLattice A B N hA hB hN) rw [rationalBoxLattice_covolume] at h simpa only [BoxEuclidean, finrank_euclideanSpace, Fintype.card_fin] using h def box_prefix_finCongr {d n m : ℕ} (hn : n = m) (v : Fin m → BoxEuclidean d) (k : ℕ) : latticePrefixSpan (v ∘ finCongr hn) k = latticePrefixSpan v k := by subst m rfl def box_prefix_map {d n : ℕ} (v : Fin n → BoxEuclidean d) (f : BoxEuclidean d ≃ₗ[ℝ] BoxEuclidean d) (k : ℕ) : (latticePrefixSpan v k).map f.toLinearMap = latticePrefixSpan (f ∘ v) k := by rw [latticePrefixSpan, Submodule.map_span, Set.image_image] rfl end end Bounty end SubmissionComponent_RationalBoxLattice /- Component DavenportBasisRounding; SHA256 2a4947a7306e1017ca39d6a46e094ec385d6a50b9123f5a9171f1ed261010674 -/ section SubmissionComponent_DavenportBasisRounding /- Gaussian maximum-pivot elimination for the Davenport construction. Columns are indexed from zero. Elimination of n preceding pivots costs at most 2^n in the coordinate bound. -/ namespace Bounty noncomputable section open scoped BigOperators open Module def davenportPivotStep {d : ℕ} (u x : Fin d → ℝ) (p : Fin d) : Fin d → ℝ := x - (x p / u p) • u def davenportPivotStep_zero {d : ℕ} (u x : Fin d → ℝ) (p : Fin d) (hp : u p ≠ 0) : davenportPivotStep u x p p = 0 := by simp [davenportPivotStep, div_mul_cancel₀ _ hp] def davenportPivotStep_bound {d : ℕ} (u x : Fin d → ℝ) (p : Fin d) (hp : u p ≠ 0) (hdom : ∀ r, |u r| ≤ |u p|) {R : ℝ} (hx : ∀ r, |x r| ≤ R) : ∀ r, |davenportPivotStep u x p r| ≤ 2 * R := by intro r have hpos : 0 < |u p| := abs_pos.mpr hp have hmul : |(x p / u p) * u r| ≤ |x p| := by rw [abs_mul, abs_div] calc |x p| / |u p| * |u r| ≤ |x p| / |u p| * |u p| := mul_le_mul_of_nonneg_left (hdom r) (div_nonneg (abs_nonneg _) hpos.le) _ = _ := div_mul_cancel₀ _ hpos.ne' change |x r - (x p / u p) * u r| ≤ _ have ht := abs_sub_le (x r) 0 ((x p / u p) * u r) simp only [sub_zero, zero_sub, abs_neg] at ht linarith [hx r, hx p] /-- Eliminate all preceding pivots, retaining an explicit residual, span relation, zero pivot coordinates, and a uniform coordinate bound. -/ def exists_davenport_elimination {n d : ℕ} (u : Fin n → Fin d → ℝ) (p : Fin n → Fin d) (hp : ∀ i, u i (p i) ≠ 0) (hdom : ∀ i r, |u i r| ≤ |u i (p i)|) (hzero : ∀ i j, i < j → u j (p i) = 0) (x : Fin d → ℝ) {R : ℝ} (hR : 0 ≤ R) (hx : ∀ r, |x r| ≤ R) : ∃ y : Fin d → ℝ, y - x ∈ Submodule.span ℝ (Set.range u) ∧ (∀ i, y (p i) = 0) ∧ (∀ r, |y r| ≤ (2 : ℝ) ^ n * R) := by induction n generalizing x R with | zero => refine ⟨x, by simp, fun i => Fin.elim0 i, ?_⟩ simpa using hx | succ n ih => let u' : Fin n → Fin d → ℝ := fun i => u i.succ let p' : Fin n → Fin d := fun i => p i.succ let x' := davenportPivotStep (u 0) x (p 0) have hx' : ∀ r, |x' r| ≤ 2 * R := davenportPivotStep_bound _ _ _ (hp 0) (hdom 0) hx obtain ⟨y, hyspan, hyzero, hybound⟩ := ih u' p' (fun i => hp i.succ) (fun i => hdom i.succ) (fun i j hij => hzero i.succ j.succ (Fin.succ_lt_succ_iff.mpr hij)) x' (mul_nonneg (by norm_num) hR) hx' have hsub : Submodule.span ℝ (Set.range u') ≤ Submodule.span ℝ (Set.range u) := by apply Submodule.span_mono rintro _ ⟨i, rfl⟩ exact ⟨i.succ, rfl⟩ have hxspan : x' - x ∈ Submodule.span ℝ (Set.range u) := by have hu : u 0 ∈ Submodule.span ℝ (Set.range u) := Submodule.subset_span ⟨0, rfl⟩ convert (Submodule.span ℝ (Set.range u)).smul_mem (-(x (p 0) / u 0 (p 0))) hu using 1 · simp [x', davenportPivotStep, sub_eq_add_neg, add_assoc] have hspan : y - x ∈ Submodule.span ℝ (Set.range u) := by convert (Submodule.span ℝ (Set.range u)).add_mem (hsub hyspan) hxspan using 1 · abel have hker : Submodule.span ℝ (Set.range u') ≤ LinearMap.ker (LinearMap.proj (p 0)) := by apply Submodule.span_le.mpr rintro _ ⟨i, rfl⟩ exact hzero 0 i.succ (Fin.succ_pos i) have hz0 : y (p 0) = 0 := by have hz := hker hyspan change y (p 0) - x' (p 0) = 0 at hz rw [show x' (p 0) = 0 from davenportPivotStep_zero _ _ _ (hp 0)] at hz simpa using hz refine ⟨y, hspan, Fin.cases hz0 hyzero, ?_⟩ intro r calc |y r| ≤ (2 : ℝ) ^ n * (2 * R) := hybound r _ = (2 : ℝ) ^ (n + 1) * R := by rw [pow_succ]; ring /-- Extending two equal prefix spans by vectors differing within that span preserves equality of the extended spans. -/ def davenport_span_snoc {n d : ℕ} (u g : Fin n → Fin d → ℝ) (y x : Fin d → ℝ) (hspan : Submodule.span ℝ (Set.range u) = Submodule.span ℝ (Set.range g)) (hy : y - x ∈ Submodule.span ℝ (Set.range g)) : Submodule.span ℝ (Set.range (Fin.snoc u y)) = Submodule.span ℝ (Set.range (Fin.snoc g x)) := by have hu : Submodule.span ℝ (Set.range u) ≤ Submodule.span ℝ (Set.range (Fin.snoc u y)) := by apply Submodule.span_mono rintro _ ⟨i, rfl⟩ exact ⟨i.castSucc, by simp⟩ have hg : Submodule.span ℝ (Set.range g) ≤ Submodule.span ℝ (Set.range (Fin.snoc g x)) := by apply Submodule.span_mono rintro _ ⟨i, rfl⟩ exact ⟨i.castSucc, by simp⟩ apply le_antisymm · apply Submodule.span_le.mpr rintro _ ⟨i, rfl⟩ refine Fin.lastCases ?_ (fun j => ?_) i · simp only [Fin.snoc_last] have hx := Submodule.subset_span (R := ℝ) (s := Set.range (Fin.snoc g x)) (Set.mem_range_self (Fin.last n)) simp only [Fin.snoc_last] at hx have hc := (Submodule.span ℝ (Set.range (Fin.snoc g x))).add_mem (hg hy) hx rw [sub_add_cancel] at hc exact hc · simp only [Fin.snoc_castSucc] exact hg (hspan ▸ Submodule.subset_span ⟨j, rfl⟩) · apply Submodule.span_le.mpr rintro _ ⟨i, rfl⟩ refine Fin.lastCases ?_ (fun j => ?_) i · simp only [Fin.snoc_last] have hy' := Submodule.subset_span (R := ℝ) (s := Set.range (Fin.snoc u y)) (Set.mem_range_self (Fin.last n)) simp only [Fin.snoc_last] at hy' have hc := (Submodule.span ℝ (Set.range (Fin.snoc u y))).sub_mem hy' (hu (hspan.symm ▸ hy)) rw [show y - (y - x) = x by abel] at hc exact hc · simp only [Fin.snoc_castSucc] exact hu (hspan.symm ▸ Submodule.subset_span ⟨j, rfl⟩) variable {E : Type*} [AddCommGroup E] [Module ℝ E] def davenportPrefixSpan {n : ℕ} (v : Fin n → E) (k : ℕ) : Submodule ℝ E := Submodule.span ℝ (v '' {i | i.val < k}) def davenportPrefixSpan_eq_range {n k : ℕ} (v : Fin n → E) (hk : k ≤ n) : davenportPrefixSpan v k = Submodule.span ℝ (Set.range (fun j : Fin k => v (Fin.castLE hk j))) := by change Submodule.span ℝ _ = Submodule.span ℝ _ apply congrArg (Submodule.span ℝ) ext x constructor · rintro ⟨i, hi, rfl⟩ exact ⟨⟨i.val, hi⟩, rfl⟩ · rintro ⟨j, rfl⟩ exact ⟨Fin.castLE hk j, j.isLt, rfl⟩ def davenportPrefixSpan_full {n : ℕ} (v : Fin n → E) : davenportPrefixSpan v n = Submodule.span ℝ (Set.range v) := by rw [davenportPrefixSpan_eq_range v le_rfl] rfl def davenportPrefixSpan_snoc {n k : ℕ} (v : Fin n → E) (x : E) (hk : k ≤ n) : davenportPrefixSpan (Fin.snoc v x) k = davenportPrefixSpan v k := by rw [davenportPrefixSpan_eq_range _ (hk.trans (Nat.le_succ n)), davenportPrefixSpan_eq_range _ hk] apply congrArg (Submodule.span ℝ) apply congrArg Set.range funext j rw [show Fin.castLE (hk.trans (Nat.le_succ n)) j = (Fin.castLE hk j).castSucc from rfl] simp only [Fin.snoc_castSucc] structure DavenportGaussianData {n d : ℕ} (g : Fin n → Fin d → ℝ) (lam : Fin n → ℝ) where residual : Fin n → Fin d → ℝ pivot : Fin n → Fin d pivot_injective : Function.Injective pivot pivot_ne : ∀ i, residual i (pivot i) ≠ 0 dominates : ∀ i r, |residual i r| ≤ |residual i (pivot i)| zeros : ∀ i j, i < j → residual j (pivot i) = 0 bound : ∀ i r, |residual i r| ≤ (2 : ℝ) ^ i.val * lam i relation : ∀ i, residual i - g i ∈ davenportPrefixSpan g i.val span_eq : Submodule.span ℝ (Set.range residual) = Submodule.span ℝ (Set.range g) /-- Actual Gaussian residuals, with maximum-coordinate pivots and explicit exponential bounds. No adapted-basis hypothesis is used. -/ def exists_davenport_gaussian {n d : ℕ} (g : Fin n → Fin d → ℝ) (lam : Fin n → ℝ) (hLI : LinearIndependent ℝ g) (hlam : ∀ i, 0 ≤ lam i) (hg : ∀ i r, |g i r| ≤ lam i) : Nonempty (DavenportGaussianData g lam) := by induction n with | zero => exact ⟨⟨g, Fin.elim0, fun i => Fin.elim0 i, fun i => Fin.elim0 i, fun i => Fin.elim0 i, fun i => Fin.elim0 i, fun i => Fin.elim0 i, fun i => Fin.elim0 i, rfl⟩⟩ | succ n ih => let g' : Fin n → Fin d → ℝ := fun i => g i.castSucc let lam' : Fin n → ℝ := fun i => lam i.castSucc have hLI' : LinearIndependent ℝ g' := hLI.comp _ (Fin.castSucc_injective _) obtain ⟨G⟩ := ih g' lam' hLI' (fun i => hlam i.castSucc) (fun i => hg i.castSucc) obtain ⟨y, hyspan, hyzero, hybound⟩ := exists_davenport_elimination G.residual G.pivot G.pivot_ne G.dominates G.zeros (g (Fin.last n)) (hlam (Fin.last n)) (hg (Fin.last n)) have hyspan' : y - g (Fin.last n) ∈ Submodule.span ℝ (Set.range g') := G.span_eq ▸ hyspan have hyne : y ≠ 0 := by intro hy have hlast : g (Fin.last n) ∉ Submodule.span ℝ (Set.range g') := by have hh := hLI.notMem_span_image (s := Set.range (Fin.castSucc : Fin n → Fin (n+1))) (x := Fin.last n) (by simp) simpa only [← Set.range_comp, Function.comp_def] using hh apply hlast have hn := (Submodule.span ℝ (Set.range g')).neg_mem hyspan' simpa [hy] using hn obtain ⟨r, hr⟩ : ∃ r, y r ≠ 0 := by by_contra! hh exact hyne (funext hh) obtain ⟨p, _, hpmax⟩ := Finset.exists_max_image Finset.univ (fun r => |y r|) ⟨r, Finset.mem_univ r⟩ have hpne : y p ≠ 0 := by intro hp have hh := hpmax r (Finset.mem_univ r) rw [hp, abs_zero] at hh exact hr (abs_nonpos_iff.mp hh) have hpnew : p ∉ Set.range G.pivot := by rintro ⟨i, rfl⟩ exact hpne (hyzero i) let u : Fin (n + 1) → Fin d → ℝ := Fin.snoc G.residual y let p' : Fin (n + 1) → Fin d := Fin.snoc G.pivot p have hgsnoc : Fin.snoc g' (g (Fin.last n)) = g := by ext i exact Fin.lastCases (by simp) (fun j => by simp [g']) i refine ⟨⟨u, p', Fin.snoc_injective_of_injective G.pivot_injective hpnew, ?_, ?_, ?_, ?_, ?_, ?_⟩⟩ · intro i exact Fin.lastCases (by simpa [u, p'] using hpne) (fun j => by simpa [u, p'] using G.pivot_ne j) i · intro i refine Fin.lastCases ?_ (fun j => ?_) i · simpa [u, p'] using fun r => hpmax r (Finset.mem_univ r) · simpa [u, p'] using G.dominates j · intro i j refine Fin.lastCases ?_ (fun k => ?_) j · intro hij obtain ⟨l, rfl⟩ := Fin.exists_castSucc_eq.mpr (Fin.ne_last_of_lt hij) simpa [u, p'] using hyzero l · refine Fin.lastCases ?_ (fun l => ?_) i · intro hi exact (not_lt_of_ge (Fin.le_last _) hi).elim · intro hi simpa [u, p'] using G.zeros l k hi · intro i refine Fin.lastCases ?_ (fun j => ?_) i · simpa [u] using hybound · simpa [u, lam'] using G.bound j · intro i refine Fin.lastCases ?_ (fun j => ?_) i · change u (Fin.last n) - g (Fin.last n) ∈ davenportPrefixSpan g n rw [← hgsnoc, davenportPrefixSpan_snoc _ _ (le_refl n), davenportPrefixSpan_full] simpa [u] using hyspan' · have hh := G.relation j change u j.castSucc - g j.castSucc ∈ davenportPrefixSpan g j.val rw [← hgsnoc, davenportPrefixSpan_snoc _ _ (Nat.le_of_lt j.isLt)] simpa [u, g'] using hh · dsimp [u] rw [davenport_span_snoc _ _ _ _ G.span_eq hyspan', hgsnoc] /-- In the square case the distinct pivot rows give an actual permutation. The residual bound already has the row/column minimum required by rounding. -/ def exists_davenport_gaussian_permutation {d : ℕ} (g : Fin d → Fin d → ℝ) (lam : Fin d → ℝ) (hLI : LinearIndependent ℝ g) (hlam : ∀ i, 0 ≤ lam i) (hmono : Monotone lam) (hg : ∀ i r, |g i r| ≤ lam i) : ∃ (u : Fin d → Fin d → ℝ) (p : Equiv.Perm (Fin d)), (∀ j, u j - g j ∈ davenportPrefixSpan g j.val) ∧ (∀ i j, i < j → u j (p i) = 0) ∧ (∀ i, u i (p i) ≠ 0) ∧ (∀ i r, |u i r| ≤ |u i (p i)|) ∧ (∀ i j, |u j (p i)| ≤ (2 : ℝ) ^ j.val * min (lam i) (lam j)) := by obtain ⟨G⟩ := exists_davenport_gaussian g lam hLI hlam hg let p : Equiv.Perm (Fin d) := Equiv.ofBijective G.pivot (Finite.injective_iff_bijective.mp G.pivot_injective) refine ⟨G.residual, p, G.relation, G.zeros, G.pivot_ne, G.dominates, ?_⟩ intro i j by_cases hij : i < j · change |G.residual j (G.pivot i)| ≤ _ rw [G.zeros i j hij, abs_zero] exact mul_nonneg (by positivity) (le_min (hlam i) (hlam j)) · rw [min_eq_right (hmono (le_of_not_gt hij))] exact G.bound j (p i) end end Bounty end SubmissionComponent_DavenportBasisRounding /- Component DavenportIntegerRounding; SHA256 e19b7f0a452e6cba126fcc004bb82835828690fb0e63912aa6a9f94b1ec0672e -/ section SubmissionComponent_DavenportIntegerRounding namespace Bounty noncomputable section open scoped BigOperators open Module def davenport_integer_span_snoc {n d : ℕ} (u g : Fin n → Fin d → ℝ) (y x : Fin d → ℝ) (hspan : Submodule.span ℤ (Set.range u) = Submodule.span ℤ (Set.range g)) (hy : y - x ∈ Submodule.span ℤ (Set.range g)) : Submodule.span ℤ (Set.range (Fin.snoc u y)) = Submodule.span ℤ (Set.range (Fin.snoc g x)) := by have hu : Submodule.span ℤ (Set.range u) ≤ Submodule.span ℤ (Set.range (Fin.snoc u y)) := by apply Submodule.span_mono rintro _ ⟨i, rfl⟩ exact ⟨i.castSucc, by simp⟩ have hg : Submodule.span ℤ (Set.range g) ≤ Submodule.span ℤ (Set.range (Fin.snoc g x)) := by apply Submodule.span_mono rintro _ ⟨i, rfl⟩ exact ⟨i.castSucc, by simp⟩ apply le_antisymm · apply Submodule.span_le.mpr rintro _ ⟨i, rfl⟩ refine Fin.lastCases ?_ (fun j => ?_) i · simp only [Fin.snoc_last] have hx := Submodule.subset_span (R := ℤ) (s := Set.range (Fin.snoc g x)) (Set.mem_range_self (Fin.last n)) simp only [Fin.snoc_last] at hx have hc := (Submodule.span ℤ (Set.range (Fin.snoc g x))).add_mem (hg hy) hx rw [sub_add_cancel] at hc exact hc · simp only [Fin.snoc_castSucc] exact hg (hspan ▸ Submodule.subset_span ⟨j, rfl⟩) · apply Submodule.span_le.mpr rintro _ ⟨i, rfl⟩ refine Fin.lastCases ?_ (fun j => ?_) i · simp only [Fin.snoc_last] have hy' := Submodule.subset_span (R := ℤ) (s := Set.range (Fin.snoc u y)) (Set.mem_range_self (Fin.last n)) simp only [Fin.snoc_last] at hy' have hc := (Submodule.span ℤ (Set.range (Fin.snoc u y))).sub_mem hy' (hu (hspan.symm ▸ hy)) rw [show y - (y - x) = x by abel] at hc exact hc · simp only [Fin.snoc_castSucc] exact hu (hspan.symm ▸ Submodule.subset_span ⟨j, rfl⟩) variable {E : Type*} [AddCommGroup E] def davenportIntegerPrefixSpan {n : ℕ} (v : Fin n → E) (k : ℕ) : Submodule ℤ E := Submodule.span ℤ (v '' {i | i.val < k}) def davenportIntegerPrefixSpan_eq_range {n k : ℕ} (v : Fin n → E) (hk : k ≤ n) : davenportIntegerPrefixSpan v k = Submodule.span ℤ (Set.range (fun j : Fin k => v (Fin.castLE hk j))) := by change Submodule.span ℤ _ = Submodule.span ℤ _ apply congrArg (Submodule.span ℤ) ext x constructor · rintro ⟨i, hi, rfl⟩ exact ⟨⟨i.val, hi⟩, rfl⟩ · rintro ⟨j, rfl⟩ exact ⟨Fin.castLE hk j, j.isLt, rfl⟩ def davenportIntegerPrefixSpan_full {n : ℕ} (v : Fin n → E) : davenportIntegerPrefixSpan v n = Submodule.span ℤ (Set.range v) := by rw [davenportIntegerPrefixSpan_eq_range v le_rfl] rfl def davenportIntegerPrefixSpan_snoc {n k : ℕ} (v : Fin n → E) (x : E) (hk : k ≤ n) : davenportIntegerPrefixSpan (Fin.snoc v x) k = davenportIntegerPrefixSpan v k := by rw [davenportIntegerPrefixSpan_eq_range _ (hk.trans (Nat.le_succ n)), davenportIntegerPrefixSpan_eq_range _ hk] apply congrArg (Submodule.span ℤ) apply congrArg Set.range funext j rw [show Fin.castLE (hk.trans (Nat.le_succ n)) j = (Fin.castLE hk j).castSucc from rfl] simp only [Fin.snoc_castSucc] def davenport_sum_two_pow (n : ℕ) : (∑ i : Fin n, (2 : ℝ) ^ i.val) = 2 ^ n - 1 := by induction n with | zero => simp | succ n ih => rw [Fin.sum_univ_castSucc] change (∑ i : Fin n, (2 : ℝ) ^ i.val) + 2 ^ n = 2 ^ (n + 1) - 1 rw [ih, pow_succ] ring structure DavenportRoundingData {n d : ℕ} (g : Fin n → Fin d → ℝ) (lam : Fin n → ℝ) (rho : Fin d → ℝ) where vector : Fin n → Fin d → ℝ real_span : Submodule.span ℝ (Set.range vector) = Submodule.span ℝ (Set.range g) integer_span : Submodule.span ℤ (Set.range vector) = Submodule.span ℤ (Set.range g) integer_relation : ∀ j, vector j - g j ∈ davenportIntegerPrefixSpan g j.val bound : ∀ j r, |vector j r| ≤ (2 : ℝ) ^ (j.val + 1) * min (rho r) (lam j) /-- Rounding actual residuals by nearest integers. Every difference from the original column lies in the integer span of preceding original columns. -/ def exists_davenport_rounding {n d : ℕ} (g u : Fin n → Fin d → ℝ) (lam : Fin n → ℝ) (rho : Fin d → ℝ) (hlam : ∀ j, 0 ≤ lam j) (hrho : ∀ r, 0 ≤ rho r) (hmono : Monotone lam) (hrel : ∀ j, u j - g j ∈ davenportPrefixSpan g j.val) (hu : ∀ j r, |u j r| ≤ (2 : ℝ) ^ j.val * min (rho r) (lam j)) : Nonempty (DavenportRoundingData g lam rho) := by classical induction n with | zero => exact ⟨⟨g, rfl, rfl, fun j => Fin.elim0 j, fun j => Fin.elim0 j⟩⟩ | succ n ih => let g' : Fin n → Fin d → ℝ := fun j => g j.castSucc let u' : Fin n → Fin d → ℝ := fun j => u j.castSucc let lam' : Fin n → ℝ := fun j => lam j.castSucc have hgsnoc : Fin.snoc g' (g (Fin.last n)) = g := by ext i exact Fin.lastCases (by simp) (fun j => by simp [g']) i have hrel' : ∀ j, u' j - g' j ∈ davenportPrefixSpan g' j.val := by intro j have hh := hrel j.castSucc change u' j - g' j ∈ davenportPrefixSpan g j.val at hh rw [← hgsnoc, davenportPrefixSpan_snoc _ _ (Nat.le_of_lt j.isLt)] at hh exact hh obtain ⟨H⟩ := ih g' u' lam' (fun j => hlam j.castSucc) (fun i j hij => hmono hij) hrel' (fun j => hu j.castSucc) have hlast : u (Fin.last n) - g (Fin.last n) ∈ Submodule.span ℝ (Set.range H.vector) := by rw [H.real_span] have hh := hrel (Fin.last n) change u (Fin.last n) - g (Fin.last n) ∈ davenportPrefixSpan g n at hh rw [← hgsnoc, davenportPrefixSpan_snoc _ _ le_rfl, davenportPrefixSpan_full] at hh simpa using hh obtain ⟨a, ha⟩ := (Submodule.mem_span_range_iff_exists_fun ℝ).mp hlast let w : Fin d → ℝ := g (Fin.last n) + ∑ i, (round (a i) : ℝ) • H.vector i have hwsub : w - g (Fin.last n) = ∑ i, (round (a i) : ℝ) • H.vector i := by dsimp [w]; abel have hwreal : w - g (Fin.last n) ∈ Submodule.span ℝ (Set.range g') := by rw [hwsub, ← H.real_span] exact Submodule.sum_mem _ fun i _ => Submodule.smul_mem _ _ (Submodule.subset_span ⟨i, rfl⟩) have hwint : w - g (Fin.last n) ∈ Submodule.span ℤ (Set.range g') := by rw [hwsub, ← H.integer_span] apply Submodule.sum_mem intro i _ rw [Int.cast_smul_eq_zsmul] exact Submodule.smul_mem _ _ (Submodule.subset_span ⟨i, rfl⟩) have hwres : w = u (Fin.last n) + ∑ i, ((round (a i) : ℝ) - a i) • H.vector i := by simp_rw [sub_smul, Finset.sum_sub_distrib] rw [ha] dsimp [w] abel have hwbound : ∀ r, |w r| ≤ (2 : ℝ) ^ (n + 1) * min (rho r) (lam (Fin.last n)) := by intro r let M := min (rho r) (lam (Fin.last n)) have hM : 0 ≤ M := le_min (hrho r) (hlam (Fin.last n)) have heach : ∀ i : Fin n, |((round (a i) : ℝ) - a i) * H.vector i r| ≤ (2 : ℝ) ^ i.val * M := by intro i have hround : |(round (a i) : ℝ) - a i| ≤ 1 / 2 := by simpa only [abs_sub_comm] using abs_sub_round (a i) have hmin : min (rho r) (lam' i) ≤ M := min_le_min le_rfl (hmono (Fin.le_last i.castSucc)) have hh := (H.bound i r).trans (mul_le_mul_of_nonneg_left hmin (by positivity)) calc _ = |(round (a i) : ℝ) - a i| * |H.vector i r| := abs_mul _ _ _ ≤ (1 / 2) * ((2 : ℝ) ^ (i.val + 1) * M) := mul_le_mul hround hh (abs_nonneg _) (by norm_num) _ = (2 : ℝ) ^ i.val * M := by rw [pow_succ]; ring have hsum : |∑ i : Fin n, ((round (a i) : ℝ) - a i) * H.vector i r| ≤ ((2 : ℝ) ^ n - 1) * M := by calc _ ≤ ∑ i : Fin n, |((round (a i) : ℝ) - a i) * H.vector i r| := Finset.abs_sum_le_sum_abs _ _ _ ≤ ∑ i : Fin n, (2 : ℝ) ^ i.val * M := Finset.sum_le_sum fun i _ => heach i _ = _ := by rw [← Finset.sum_mul, davenport_sum_two_pow] have hh := congrFun hwres r simp only [Pi.add_apply, Finset.sum_apply, Pi.smul_apply, smul_eq_mul] at hh rw [hh] calc _ ≤ |u (Fin.last n) r| + |∑ i : Fin n, ((round (a i) : ℝ) - a i) * H.vector i r| := abs_add_le _ _ _ ≤ (2 : ℝ) ^ n * M + (2 ^ n - 1) * M := add_le_add (hu (Fin.last n) r) hsum _ ≤ (2 : ℝ) ^ (n + 1) * M := by rw [pow_succ]; nlinarith let h : Fin (n + 1) → Fin d → ℝ := Fin.snoc H.vector w refine ⟨⟨h, ?_, ?_, ?_, ?_⟩⟩ · dsimp [h] rw [davenport_span_snoc _ _ _ _ H.real_span hwreal, hgsnoc] · dsimp [h] rw [davenport_integer_span_snoc _ _ _ _ H.integer_span hwint, hgsnoc] · intro j refine Fin.lastCases ?_ (fun i => ?_) j · change h (Fin.last n) - g (Fin.last n) ∈ davenportIntegerPrefixSpan g n rw [← hgsnoc, davenportIntegerPrefixSpan_snoc _ _ le_rfl, davenportIntegerPrefixSpan_full] simpa [h] using hwint · change h i.castSucc - g i.castSucc ∈ davenportIntegerPrefixSpan g i.val rw [← hgsnoc, davenportIntegerPrefixSpan_snoc _ _ (Nat.le_of_lt i.isLt)] simpa [h, g'] using H.integer_relation i · intro j refine Fin.lastCases ?_ (fun i => ?_) j · simpa [h] using hwbound · simpa [h, lam'] using H.bound i def davenport_integer_prefix_coefficients {n d k : ℕ} (g : Fin n → Fin d → ℝ) (x : Fin d → ℝ) (hx : x ∈ davenportIntegerPrefixSpan g k) : ∃ c : Fin n → ℤ, x = ∑ i, if i.val < k then (c i : ℝ) • g i else 0 := by classical let s : Finset (Fin n) := Finset.univ.filter fun i => i.val < k have hs : (s : Set (Fin n)) = {i | i.val < k} := by ext i; simp [s] change x ∈ Submodule.span ℤ (g '' {i | i.val < k}) at hx rw [← hs] at hx obtain ⟨c, hc⟩ := (Submodule.mem_span_image_finset_iff_exists_fun' (R := ℤ)).mp hx refine ⟨c, ?_⟩ simpa only [s, Finset.sum_filter, Int.cast_smul_eq_zsmul] using hc.symm def davenport_integer_span_of_relation {n d : ℕ} (h g : Fin n → Fin d → ℝ) (hrel : ∀ j, h j - g j ∈ davenportIntegerPrefixSpan g j.val) : Submodule.span ℤ (Set.range h) = Submodule.span ℤ (Set.range g) := by induction n with | zero => simp | succ n ih => let h' : Fin n → Fin d → ℝ := fun i => h i.castSucc let g' : Fin n → Fin d → ℝ := fun i => g i.castSucc have hh : Fin.snoc h' (h (Fin.last n)) = h := by ext i; exact Fin.lastCases (by simp) (fun j => by simp [h']) i have hg : Fin.snoc g' (g (Fin.last n)) = g := by ext i; exact Fin.lastCases (by simp) (fun j => by simp [g']) i have hrel' : ∀ j, h' j - g' j ∈ davenportIntegerPrefixSpan g' j.val := by intro j have ht := hrel j.castSucc change h' j - g' j ∈ davenportIntegerPrefixSpan g j.val at ht rw [← hg, davenportIntegerPrefixSpan_snoc _ _ (Nat.le_of_lt j.isLt)] at ht exact ht have hs := ih h' g' hrel' have hl : h (Fin.last n) - g (Fin.last n) ∈ Submodule.span ℤ (Set.range g') := by have ht := hrel (Fin.last n) change h (Fin.last n) - g (Fin.last n) ∈ davenportIntegerPrefixSpan g n at ht rw [← hg, davenportIntegerPrefixSpan_snoc _ _ le_rfl, davenportIntegerPrefixSpan_full] at ht simpa using ht simpa only [hh, hg] using davenport_integer_span_snoc h' g' _ _ hs hl def davenportIntegerPrefixSpan_restrict {n k l : ℕ} (g : Fin n → E) (hk : k ≤ n) (hl : l ≤ k) : davenportIntegerPrefixSpan (fun i : Fin k => g (Fin.castLE hk i)) l = davenportIntegerPrefixSpan g l := by rw [davenportIntegerPrefixSpan_eq_range _ hl, davenportIntegerPrefixSpan_eq_range _ (hl.trans hk)] rfl def davenport_integer_prefixes_of_relation {n d : ℕ} (h g : Fin n → Fin d → ℝ) (hrel : ∀ j, h j - g j ∈ davenportIntegerPrefixSpan g j.val) (k : ℕ) (hk : k ≤ n) : davenportIntegerPrefixSpan h k = davenportIntegerPrefixSpan g k := by rw [davenportIntegerPrefixSpan_eq_range _ hk, davenportIntegerPrefixSpan_eq_range _ hk] apply davenport_integer_span_of_relation intro j rw [davenportIntegerPrefixSpan_restrict _ hk (Nat.le_of_lt j.isLt)] exact hrel (Fin.castLE hk j) def davenport_rational_prefixes_of_relation {n d : ℕ} (h g : Fin n → Fin d → ℝ) (hrel : ∀ j, h j - g j ∈ davenportIntegerPrefixSpan g j.val) (k : ℕ) (hk : k ≤ n) : Submodule.span ℚ (h '' {i | i.val < k}) = Submodule.span ℚ (g '' {i | i.val < k}) := by have hh := congrArg (fun S : Submodule ℤ (Fin d → ℝ) => Submodule.span ℚ (S : Set (Fin d → ℝ))) (davenport_integer_prefixes_of_relation h g hrel k hk) simpa only [davenportIntegerPrefixSpan, Submodule.span_span_of_tower] using hh /-- The actual integer change-of-columns matrix. -/ def davenportIntegerMatrix {n : ℕ} (z : Fin n → Fin n → ℤ) : Matrix (Fin n) (Fin n) ℤ := 1 + Matrix.of (fun i j => if i < j then z j i else 0) def davenportIntegerMatrix_upper {n : ℕ} (z : Fin n → Fin n → ℤ) : (davenportIntegerMatrix z).IsUpperTriangular := by intro i j hij change j < i at hij simp [davenportIntegerMatrix, ne_of_gt hij, not_lt_of_ge hij.le] def davenportIntegerMatrix_diag {n : ℕ} (z : Fin n → Fin n → ℤ) (i : Fin n) : davenportIntegerMatrix z i i = 1 := by simp [davenportIntegerMatrix] def davenportIntegerMatrix_det {n : ℕ} (z : Fin n → Fin n → ℤ) : (davenportIntegerMatrix z).det = 1 := by rw [Matrix.det_of_isUpperTriangular (davenportIntegerMatrix_upper z)] change (∏ i : Fin n, davenportIntegerMatrix z i i) = 1 simp only [davenportIntegerMatrix_diag, Finset.prod_const_one] def davenport_integer_matrix_identity {n d : ℕ} (h g : Fin n → Fin d → ℝ) (z : Fin n → Fin n → ℤ) (hexp : ∀ j, h j = g j + ∑ i, if i < j then (z j i : ℝ) • g i else 0) : Matrix.of (fun i j => h j i) = Matrix.of (fun i j => g j i) * (davenportIntegerMatrix z).map (Int.castRingHom ℝ) := by classical have hmap : (davenportIntegerMatrix z).map (Int.castRingHom ℝ) = 1 + Matrix.of (fun i j => if i < j then (z j i : ℝ) else 0) := by ext i j simp [davenportIntegerMatrix, Matrix.map_apply, Matrix.one_apply] rw [hmap, Matrix.mul_add, Matrix.mul_one] ext i j change h j i = g j i + ∑ k, g k i * (if k < j then (z j k : ℝ) else 0) rw [hexp j] simp only [Pi.add_apply, Finset.sum_apply] congr 1 apply Finset.sum_congr rfl intro k _ split_ifs <;> simp [mul_comm] def davenport_integer_det_identity {d : ℕ} (h g : Fin d → Fin d → ℝ) (z : Fin d → Fin d → ℤ) (hexp : ∀ j, h j = g j + ∑ i, if i < j then (z j i : ℝ) • g i else 0) : (Matrix.of (fun i j => h j i)).det = (Matrix.of (fun i j => g j i)).det := by rw [davenport_integer_matrix_identity h g z hexp, Matrix.det_mul] have hd := (Int.castRingHom ℝ).map_det (davenportIntegerMatrix z) change ((davenportIntegerMatrix z).det : ℝ) = ((davenportIntegerMatrix z).map (Int.castRingHom ℝ)).det at hd rw [← hd, davenportIntegerMatrix_det] simp def exists_davenport_integer_rounding {d : ℕ} (g : Fin d → Fin d → ℝ) (lam : Fin d → ℝ) (hLI : LinearIndependent ℝ g) (hlam : ∀ j, 0 ≤ lam j) (hmono : Monotone lam) (hg : ∀ j r, |g j r| ≤ lam j) : ∃ (p : Equiv.Perm (Fin d)) (h : Fin d → Fin d → ℝ) (z : Fin d → Fin d → ℤ), (∀ j, h j = g j + ∑ i, if i < j then (z j i : ℝ) • g i else 0) ∧ (∀ k, k ≤ d → davenportIntegerPrefixSpan h k = davenportIntegerPrefixSpan g k) ∧ (Matrix.of (fun i j => h j i)).det = (Matrix.of (fun i j => g j i)).det ∧ LinearIndependent ℝ h ∧ (∀ k, k ≤ d → Submodule.span ℚ (h '' {i | i.val < k}) = Submodule.span ℚ (g '' {i | i.val < k})) ∧ (∀ i j, |h j (p i)| ≤ (2 : ℝ) ^ (j.val + 1) * min (lam i) (lam j)) := by classical obtain ⟨u, p, hrel, _, _, _, hu⟩ := exists_davenport_gaussian_permutation g lam hLI hlam hmono hg let rho : Fin d → ℝ := fun r => lam (p.symm r) have hur : ∀ j r, |u j r| ≤ (2 : ℝ) ^ j.val * min (rho r) (lam j) := by intro j r simpa [rho] using hu (p.symm r) j obtain ⟨H⟩ := exists_davenport_rounding g u lam rho hlam (fun r => hlam (p.symm r)) hmono hrel hur have hcoeff : ∀ j, ∃ c : Fin d → ℤ, H.vector j - g j = ∑ i, if i < j then (c i : ℝ) • g i else 0 := by intro j exact davenport_integer_prefix_coefficients g _ (H.integer_relation j) choose z hz using hcoeff have hexp : ∀ j, H.vector j = g j + ∑ i, if i < j then (z j i : ℝ) • g i else 0 := by intro j rw [← hz j] abel have hLIH : LinearIndependent ℝ H.vector := by apply linearIndependent_iff_card_eq_finrank_span.mpr change Fintype.card (Fin d) = finrank ℝ (Submodule.span ℝ (Set.range H.vector)) rw [H.real_span] exact (finrank_span_eq_card hLI).symm refine ⟨p, H.vector, z, hexp, davenport_integer_prefixes_of_relation _ _ H.integer_relation, davenport_integer_det_identity _ _ z hexp, hLIH, davenport_rational_prefixes_of_relation _ _ H.integer_relation, ?_⟩ intro i j simpa [rho] using H.bound j (p i) /-- Uniform dimension-only version, useful for compound-coordinate bounds. -/ def exists_davenport_integer_rounding_uniform {d : ℕ} (g : Fin d → Fin d → ℝ) (lam : Fin d → ℝ) (hLI : LinearIndependent ℝ g) (hlam : ∀ j, 0 ≤ lam j) (hmono : Monotone lam) (hg : ∀ j r, |g j r| ≤ lam j) : ∃ (p : Equiv.Perm (Fin d)) (h : Fin d → Fin d → ℝ) (z : Fin d → Fin d → ℤ), (∀ j, h j = g j + ∑ i, if i < j then (z j i : ℝ) • g i else 0) ∧ (∀ k, k ≤ d → davenportIntegerPrefixSpan h k = davenportIntegerPrefixSpan g k) ∧ (Matrix.of (fun i j => h j i)).det = (Matrix.of (fun i j => g j i)).det ∧ LinearIndependent ℝ h ∧ (∀ k, k ≤ d → Submodule.span ℚ (h '' {i | i.val < k}) = Submodule.span ℚ (g '' {i | i.val < k})) ∧ (∀ i j, |h j (p i)| ≤ (2 : ℝ) ^ d * min (lam i) (lam j)) := by obtain ⟨p, h, z, he, hp, hd, hli, hq, hb⟩ := exists_davenport_integer_rounding g lam hLI hlam hmono hg refine ⟨p, h, z, he, hp, hd, hli, hq, ?_⟩ intro i j apply (hb i j).trans apply mul_le_mul_of_nonneg_right _ (le_min (hlam i) (hlam j)) exact pow_le_pow_right₀ (by norm_num) (Nat.succ_le_of_lt j.isLt) end end Bounty end SubmissionComponent_DavenportIntegerRounding /- Component RationalBoxDavenport; SHA256 01569f5c5577238df54d5078dd1ac7c97ef937c145158b3787cfbab9de15425c -/ section SubmissionComponent_RationalBoxDavenport /- Integer Davenport columns for the actual rational rectangular lattice. The minima used here are Euclidean minima of the transformed lattice. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix open Module def diagonalIntegerPoint_integer_expansion {d : ℕ} (N : Fin d → ℕ) (g h : Fin d → BoxEuclidean d) (z : Fin d → Fin d → ℤ) (hg : ∀ j, ∃ a : Fin d → ℤ, g j = diagonalIntegerPoint N a) (hexp : ∀ j, h j = g j + ∑ i, if i < j then (z j i : ℝ) • g i else 0) : ∀ j, ∃ b : Fin d → ℤ, h j = diagonalIntegerPoint N b := by classical choose a ha using hg intro j refine ⟨fun r => a j r + ∑ i, if i < j then z j i * a i r else 0, ?_⟩ rw [hexp j] simp_rw [ha] ext r simp only [PiLp.add_apply, WithLp.ofLp_sum, Finset.sum_apply, apply_ite, diagonalIntegerPoint, WithLp.ofLp_toLp, Int.cast_add, Int.cast_sum, Int.cast_mul, Int.cast_zero] rw [mul_add, Finset.mul_sum] congr 1 apply Finset.sum_congr rfl intro i _ split_ifs <;> simp [mul_left_comm] /-- Actual diagonal-integer columns with the Davenport bound. Their integer change-of-columns matrix has diagonal one and determinant one. -/ def exists_rationalBox_davenport {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) : ∃ (p : Equiv.Perm (Fin d)) (h : Fin d → BoxEuclidean d) (z : Fin d → Fin d → ℤ), (∀ j, h j = rationalBoxMinimumPoints A B N hA hB hN j + ∑ i, if i < j then (z j i : ℝ) • rationalBoxMinimumPoints A B N hA hB hN i else 0) ∧ (∀ j, ∃ b : Fin d → ℤ, h j = diagonalIntegerPoint N b) ∧ LinearIndependent ℝ h ∧ (∀ k, k ≤ d → Submodule.span ℚ (h '' {i | i.val < k}) = Submodule.span ℚ (rationalBoxMinimumPoints A B N hA hB hN '' {i | i.val < k})) ∧ (∀ k, k ≤ d → latticePrefixSpan h k = latticePrefixSpan (rationalBoxMinimumPoints A B N hA hB hN) k) ∧ (EuclideanSpace.basisFun (Fin d) ℝ).toBasis.det h = (EuclideanSpace.basisFun (Fin d) ℝ).toBasis.det (rationalBoxMinimumPoints A B N hA hB hN) ∧ (∀ i j, |(A.map (Rat.castHom ℝ) *ᵥ WithLp.ofLp (h j)) (p i)| ≤ (2 : ℝ) ^ d * B (p i) * min (rationalBoxMinimumValue A B N hA hB hN i) (rationalBoxMinimumValue A B N hA hB hN j)) := by classical let g := rationalBoxMinimumPoints A B N hA hB hN let lam := rationalBoxMinimumValue A B N hA hB hN let T := rationalBoxTransform A B hA hB let F : BoxEuclidean d ≃ₗ[ℝ] (Fin d → ℝ) := T.trans (WithLp.linearEquiv 2 ℝ (Fin d → ℝ)) let y : Fin d → Fin d → ℝ := fun j => F (g j) have hyLI : LinearIndependent ℝ y := (rationalBoxMinimumPoints_independent A B N hA hB hN).map' F.toLinearMap (LinearMap.ker_eq_bot.mpr F.injective) have hyb : ∀ j r, |y j r| ≤ lam j := by intro j r have hh := PiLp.norm_apply_le (T (g j)) r rw [Real.norm_eq_abs, rationalBoxMinimumPoints_attain] at hh exact hh obtain ⟨p, v, z, hexp, hint, _, hvLI, hq, hb⟩ := exists_davenport_integer_rounding_uniform y lam hyLI (fun j => (rationalBoxMinimumValue_pos A B N hA hB hN j).le) (rationalBoxMinimumValue_monotone A B N hA hB hN) hyb let h : Fin d → BoxEuclidean d := fun j => F.symm (v j) have he : ∀ j, h j = g j + ∑ i, if i < j then (z j i : ℝ) • g i else 0 := by intro j have hh := congrArg F.symm (hexp j) simpa only [map_add, map_sum, apply_ite, map_smul, map_zero, y, LinearEquiv.symm_apply_apply] using hh have hpref (R : Type) [Field R] [Algebra R ℝ] (heq : ∀ k, k ≤ d → Submodule.span R (v '' {i | i.val < k}) = Submodule.span R (y '' {i | i.val < k})) (k : ℕ) (hk : k ≤ d) : Submodule.span R (h '' {i | i.val < k}) = Submodule.span R (g '' {i | i.val < k}) := by have hh := congrArg (Submodule.map (F.symm.restrictScalars R).toLinearMap) (heq k hk) simp only [Submodule.map_span, Set.image_image] at hh simpa only [LinearEquiv.coe_toLinearMap, LinearEquiv.restrictScalars_apply, Function.comp_def, y, LinearEquiv.symm_apply_apply] using hh have hr : ∀ k, k ≤ d → Submodule.span ℝ (v '' {i | i.val < k}) = Submodule.span ℝ (y '' {i | i.val < k}) := by intro k hk have hh := congrArg (fun S : Submodule ℤ (Fin d → ℝ) => Submodule.span ℝ (S : Set (Fin d → ℝ))) (hint k hk) simpa only [davenportIntegerPrefixSpan, Submodule.span_span_of_tower] using hh refine ⟨p, h, z, he, diagonalIntegerPoint_integer_expansion N g h z (rationalBoxMinimumPoints_integral A B N hA hB hN) he, hvLI.map' F.symm.toLinearMap (LinearMap.ker_eq_bot.mpr F.symm.injective), hpref ℚ hq, hpref ℝ hr, orthogonal_expansion_det (EuclideanSpace.basisFun (Fin d) ℝ).toBasis h g (fun j i => (z j i : ℝ)) he, ?_⟩ intro i j have hF : T (h j) = WithLp.toLp 2 (v j) := by apply (WithLp.linearEquiv 2 ℝ (Fin d → ℝ)).injective exact F.apply_symm_apply (v j) have hh := hb i j rw [show v j (p i) = T (h j) (p i) by rw [hF], rationalBoxTransform_apply, abs_div, abs_of_pos (hB (p i))] at hh have hm := (div_le_iff₀ (hB (p i))).mp hh calc _ ≤ (2 : ℝ) ^ d * min (lam i) (lam j) * B (p i) := hm _ = _ := by ring end end Bounty end SubmissionComponent_RationalBoxDavenport /- Component EuclideanMinimumGap; SHA256 eb19d99235bd324f1eb9ee90ae74787413b9653f7f3642701df7fe11ca5b36f6 -/ section SubmissionComponent_EuclideanMinimumGap /- Quantitative gaps selected above the Euclidean radius of the whole box. The factor (sqrt d)^d is essential: these are Euclidean, not sup-norm minima. -/ namespace Bounty noncomputable section open scoped BigOperators open Module /-- A product exceeding the no-gap bound forces a large adjacent gap whose upper endpoint also exceeds the specified domain radius. -/ def finite_positive_minima_gap {d : ℕ} (hd : 0 < d) (lam : Fin d → ℝ) {R G : ℝ} (hR : 0 ≤ R) (hG : 1 ≤ G) (hlam : ∀ i, 0 ≤ lam i) (hfirst : lam ⟨0, hd⟩ ≤ R) (hprod : R ^ d * G ^ (d * (d - 1)) < ∏ i, lam i) : ∃ i j : Fin d, j.val = i.val + 1 ∧ R < lam j ∧ G * lam i < lam j := by classical by_contra! hn have hb : ∀ i : Fin d, lam i ≤ R * G ^ i.val := by cases d with | zero => omega | succ n => intro i refine Fin.induction ?_ (fun j ih => ?_) i · simpa using hfirst · by_cases hh : lam j.succ ≤ R · exact hh.trans (le_mul_of_one_le_right hR (one_le_pow₀ hG)) · have hstep : lam j.succ ≤ G * lam j.castSucc := hn j.castSucc j.succ rfl (lt_of_not_ge hh) calc _ ≤ G * lam j.castSucc := hstep _ ≤ G * (R * G ^ j.val) := mul_le_mul_of_nonneg_left ih (le_trans (by norm_num) hG) _ = R * G ^ j.succ.val := by simp only [Fin.val_succ, pow_succ]; ring have hb' : ∀ i, lam i ≤ R * G ^ (d - 1) := by intro i apply (hb i).trans apply mul_le_mul_of_nonneg_left _ hR exact pow_le_pow_right₀ hG (by omega) have hp : (∏ i, lam i) ≤ R ^ d * G ^ (d * (d - 1)) := by calc _ ≤ ∏ _i : Fin d, R * G ^ (d - 1) := Finset.prod_le_prod (fun i _ => hlam i) (fun i _ => hb' i) _ = (R * G ^ (d - 1)) ^ d := by simp _ = _ := by rw [mul_pow, ← pow_mul, Nat.mul_comm (d - 1) d] exact (not_le_of_gt hprod) hp /-- The actual original-coordinate diagonal-integer rectangular domain. -/ def rationalDiagonalBoxDomain {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) : Set (BoxEuclidean d) := {x | ∃ z : Fin d → ℤ, x = diagonalIntegerPoint N z ∧ rationalBoxContains A B x} def rationalBoxMinimumPoints_short_mem_prefix {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (i : Fin d) (z : Fin d → ℤ) (hz : ‖rationalBoxTransform A B hA hB (diagonalIntegerPoint N z)‖ < rationalBoxMinimumValue A B N hA hB hN i) : diagonalIntegerPoint N z ∈ latticePrefixSpan (rationalBoxMinimumPoints A B N hA hB hN) i.val := by let L := rationalBoxLattice A B N hA hB hN let T := rationalBoxTransform A B hA hB have hm := (latticeMinimumVectors_spec L).short_mem_prefix (boxDimensionEquiv d i) ((rationalBoxLattice_mem_iff A B N hA hB hN _).mpr ⟨z, rfl⟩) hz have hb : diagonalIntegerPoint N z ∈ (latticePrefixSpan (latticeMinimumVectors L) i.val).map T.symm.toLinearMap := ⟨T (diagonalIntegerPoint N z), hm, T.symm_apply_apply _⟩ rw [box_prefix_map] at hb have heq : latticePrefixSpan (rationalBoxMinimumPoints A B N hA hB hN) i.val = latticePrefixSpan (T.symm ∘ latticeMinimumVectors L) i.val := by change latticePrefixSpan ((T.symm ∘ latticeMinimumVectors L) ∘ boxDimensionEquiv d) i.val = _ unfold boxDimensionEquiv exact box_prefix_finCongr (by simp [BoxEuclidean]) (T.symm ∘ latticeMinimumVectors L) i.val rw [heq] exact hb def rationalDiagonalBoxDomain_mem_prefix {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (i : Fin d) (hi : Real.sqrt d < rationalBoxMinimumValue A B N hA hB hN i) : rationalDiagonalBoxDomain A B N ⊆ latticePrefixSpan (rationalBoxMinimumPoints A B N hA hB hN) i.val := by rintro x ⟨z, rfl, hx⟩ apply rationalBoxMinimumPoints_short_mem_prefix A B N hA hB hN i z exact (rationalBoxContains_norm_le_sqrt A B hA hB _ hx).trans_lt hi def rationalBoxMinimumValue_first_le_domain_radius {d : ℕ} (hd : 0 < d) (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (hne : ∃ x ∈ rationalDiagonalBoxDomain A B N, x ≠ 0) : rationalBoxMinimumValue A B N hA hB hN ⟨0, hd⟩ ≤ Real.sqrt d := by obtain ⟨x, ⟨z, rfl, hx⟩, hne⟩ := hne let L := rationalBoxLattice A B N hA hB hN let T := rationalBoxTransform A B hA hB have hm := (latticeMinimumVectors_spec L).2.2 (boxDimensionEquiv d ⟨0, hd⟩) (T (diagonalIntegerPoint N z)) ((rationalBoxLattice_mem_iff A B N hA hB hN _).mpr ⟨z, rfl⟩) have hout : T (diagonalIntegerPoint N z) ∉ latticePrefixSpan (latticeMinimumVectors L) (boxDimensionEquiv d ⟨0, hd⟩).val := by change T (diagonalIntegerPoint N z) ∉ latticePrefixSpan (latticeMinimumVectors L) 0 rw [latticePrefixSpan_zero, Submodule.mem_bot] exact fun h => hne (T.injective (h.trans T.map_zero.symm)) exact (hm hout).trans (rationalBoxContains_norm_le_sqrt A B hA hB _ hx) /-- A determinant-growth criterion giving an actual containing prefix. The upper gap endpoint is above sqrt d, so containment is valid for every point of the rectangular domain, not merely for the Euclidean unit ball. -/ def rationalDiagonalBoxDomain_large_gap {d : ℕ} (hd : 0 < d) (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (hne : ∃ x ∈ rationalDiagonalBoxDomain A B N, x ≠ 0) {G : ℝ} (hG : 1 ≤ G) (hdet : (d.factorial : ℝ) * (Real.sqrt d) ^ d * G ^ (d * (d - 1)) < |(A.det : ℝ)| * (∏ i, (N i : ℝ)) / ∏ i, B i) : ∃ i j : Fin d, j.val = i.val + 1 ∧ Real.sqrt d < rationalBoxMinimumValue A B N hA hB hN j ∧ G * rationalBoxMinimumValue A B N hA hB hN i < rationalBoxMinimumValue A B N hA hB hN j ∧ rationalDiagonalBoxDomain A B N ⊆ latticePrefixSpan (rationalBoxMinimumPoints A B N hA hB hN) j.val ∧ finrank ℝ (Submodule.span ℝ (rationalDiagonalBoxDomain A B N)) ≤ j.val := by have hfac : (0 : ℝ) < d.factorial := by exact_mod_cast Nat.factorial_pos d have hp := (rationalBoxMinimumValue_product_bounds A B N hA hB hN).1 have hprod : (Real.sqrt d) ^ d * G ^ (d * (d - 1)) < ∏ i, rationalBoxMinimumValue A B N hA hB hN i := by apply lt_of_lt_of_le _ hp apply (lt_div_iff₀ hfac).mpr nlinarith [hdet] obtain ⟨i, j, hij, hj, hgap⟩ := finite_positive_minima_gap hd (rationalBoxMinimumValue A B N hA hB hN) (Real.sqrt_nonneg d) hG (fun i => (rationalBoxMinimumValue_pos A B N hA hB hN i).le) (rationalBoxMinimumValue_first_le_domain_radius hd A B N hA hB hN hne) hprod have hsub := rationalDiagonalBoxDomain_mem_prefix A B N hA hB hN j hj refine ⟨i, j, hij, hj, hgap, hsub, ?_⟩ have hh := Submodule.finrank_mono (Submodule.span_le.mpr hsub) rw [latticePrefixSpan_finrank (rationalBoxMinimumPoints_independent A B N hA hB hN) (Nat.le_of_lt j.isLt)] at hh exact hh end end Bounty end SubmissionComponent_EuclideanMinimumGap /- Component RationalBoxDavenportGap; SHA256 1b6f9c3b7e2c24fc42031cfb0cfeebcb02eff78c77231b0656769ea0355c0f57 -/ section SubmissionComponent_RationalBoxDavenportGap /- Actual rounded diagonal-lattice columns and a quantitative containing minimum gap, with the Euclidean sqrt(d) correction included. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix open Module def exists_rationalBox_davenport_gap {d : ℕ} (hd : 0 < d) (A : Matrix (Fin d) (Fin d) ℚ) (B : Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hB : ∀ i, 0 < B i) (hN : ∀ i, 0 < N i) (hne : ∃ x ∈ rationalDiagonalBoxDomain A B N, x ≠ 0) {G : ℝ} (hG : 1 ≤ G) (hdet : (d.factorial : ℝ) * (Real.sqrt d) ^ d * G ^ (d * (d - 1)) < |(A.det : ℝ)| * (∏ i, (N i : ℝ)) / ∏ i, B i) : ∃ (p : Equiv.Perm (Fin d)) (h : Fin d → BoxEuclidean d) (z : Fin d → Fin d → ℤ) (lo hi : Fin d), hi.val = lo.val + 1 ∧ (∀ j, h j = rationalBoxMinimumPoints A B N hA hB hN j + ∑ i, if i < j then (z j i : ℝ) • rationalBoxMinimumPoints A B N hA hB hN i else 0) ∧ (∀ j, ∃ b : Fin d → ℤ, h j = diagonalIntegerPoint N b) ∧ LinearIndependent ℝ h ∧ (∀ k, k ≤ d → Submodule.span ℚ (h '' {i | i.val < k}) = Submodule.span ℚ (rationalBoxMinimumPoints A B N hA hB hN '' {i | i.val < k})) ∧ (∀ i j, |(A.map (Rat.castHom ℝ) *ᵥ WithLp.ofLp (h j)) (p i)| ≤ (2 : ℝ) ^ d * B (p i) * min (rationalBoxMinimumValue A B N hA hB hN i) (rationalBoxMinimumValue A B N hA hB hN j)) ∧ Real.sqrt d < rationalBoxMinimumValue A B N hA hB hN hi ∧ G < rationalBoxMinimumValue A B N hA hB hN hi / rationalBoxMinimumValue A B N hA hB hN lo ∧ rationalDiagonalBoxDomain A B N ⊆ latticePrefixSpan h hi.val ∧ finrank ℝ (latticePrefixSpan h hi.val) = hi.val ∧ finrank ℝ (Submodule.span ℝ (rationalDiagonalBoxDomain A B N)) ≤ hi.val := by obtain ⟨p, h, z, he, hz, hLI, hq, hr, _, hb⟩ := exists_rationalBox_davenport A B N hA hB hN obtain ⟨lo, hi, hidx, hhi, hgap, hsub, hrank⟩ := rationalDiagonalBoxDomain_large_gap hd A B N hA hB hN hne hG hdet refine ⟨p, h, z, lo, hi, hidx, he, hz, hLI, hq, hb, hhi, (lt_div_iff₀ (rationalBoxMinimumValue_pos A B N hA hB hN lo)).mpr hgap, ?_, latticePrefixSpan_finrank hLI (Nat.le_of_lt hi.isLt), hrank⟩ rw [hr hi.val (Nat.le_of_lt hi.isLt)] exact hsub end end Bounty end SubmissionComponent_RationalBoxDavenportGap /- Component PadicCeilingDivisibility; SHA256 b0d3e161676c9fd4d777cf7b7827d1396cfd86de83748d96616ae52eb239bb15 -/ section SubmissionComponent_PadicCeilingDivisibility /- Exact real exponential cutoffs for integer p-adic norms, including zero. -/ namespace Bounty noncomputable section open scoped BigOperators def padicNorm_int_real_exp (p : ℕ) [Fact p.Prime] (z : ℤ) (hz : z ≠ 0) : (padicNorm p (z : ℚ) : ℝ) = Real.exp (-((padicValInt p z : ℝ) * Real.log p)) := by have hp : (0 : ℝ) < p := by exact_mod_cast (Fact.out : p.Prime).pos rw [padicNorm.eq_zpow_of_nonzero (by exact_mod_cast hz), padicValRat.of_int] simp only [zpow_neg, zpow_natCast, Rat.cast_inv, Rat.cast_pow, Rat.cast_natCast] rw [Real.exp_neg, Real.exp_nat_mul, Real.exp_log hp] def prime_pow_dvd_int_iff_le_padicVal (p : ℕ) [Fact p.Prime] (z : ℤ) (hz : z ≠ 0) (n : ℕ) : ((p ^ n : ℕ) : ℤ) ∣ z ↔ n ≤ padicValInt p z := by rw [padicNorm.dvd_iff_norm_le, padicNorm.eq_zpow_of_nonzero (by exact_mod_cast hz), padicValRat.of_int, zpow_le_zpow_iff_right₀ (by exact_mod_cast (Fact.out : p.Prime).one_lt), neg_le_neg_iff] exact_mod_cast Iff.rfl /-- Exact ceiling conversion. The zero case is part of the equivalence. -/ def padicNorm_int_le_exp_iff_dvd (p : ℕ) [Fact p.Prime] (z : ℤ) (a : ℝ) : (padicNorm p (z : ℚ) : ℝ) ≤ Real.exp (-a) ↔ ((p ^ Nat.ceil (a / Real.log p) : ℕ) : ℤ) ∣ z := by by_cases hz : z = 0 · subst z simp [le_of_lt (Real.exp_pos (-a))] have hp : 0 < Real.log (p : ℝ) := Real.log_pos (by exact_mod_cast (Fact.out : p.Prime).one_lt) rw [padicNorm_int_real_exp p z hz, Real.exp_le_exp, prime_pow_dvd_int_iff_le_padicVal p z hz, Nat.ceil_le, div_le_iff₀ hp] constructor <;> intro h <;> linarith /-- Rounding the prime exponent costs less than a factor p. -/ def prime_ceiling_power_bounds (p : ℕ) (hp : 1 < p) {a : ℝ} (ha : 0 ≤ a) : Real.exp a ≤ (p : ℝ) ^ Nat.ceil (a / Real.log p) ∧ (p : ℝ) ^ Nat.ceil (a / Real.log p) < p * Real.exp a := by have hpl : 0 < Real.log (p : ℝ) := Real.log_pos (by exact_mod_cast hp) have hpp : (0 : ℝ) < p := by exact_mod_cast (by omega : 0 < p) have he : (p : ℝ) ^ Nat.ceil (a / Real.log p) = Real.exp ((Nat.ceil (a / Real.log p) : ℝ) * Real.log p) := by rw [Real.exp_nat_mul, Real.exp_log hpp] rw [he] constructor · apply Real.exp_le_exp.mpr exact (div_le_iff₀ hpl).mp (Nat.le_ceil _) · have hh := Nat.ceil_lt_add_one (div_nonneg ha hpl.le) have hm := mul_lt_mul_of_pos_right hh hpl have hab : (Nat.ceil (a / Real.log p) : ℝ) * Real.log p < a + Real.log p := by simpa only [add_mul, div_mul_cancel₀ _ hpl.ne', one_mul] using hm have hx := Real.exp_lt_exp.mpr hab simpa only [Real.exp_add, Real.exp_log hpp, mul_comm] using hx end end Bounty end SubmissionComponent_PadicCeilingDivisibility /- Component RationalThreePlaceDomain; SHA256 c8c7aec46a3a7180a2a476a04289d2c880fd7430c3dbd4f6c42d4310b26480fd -/ section SubmissionComponent_RationalThreePlaceDomain /- Exact equality of the three-place integer domain and a diagonal lattice box. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def integerEuclideanPoint {d : ℕ} (x : Fin d → ℤ) : BoxEuclidean d := WithLp.toLp 2 (fun i => (x i : ℝ)) def rationalThreePlaceDomain {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) : Set (Fin d → ℤ) := {x | (∀ i, |(A.map (Rat.castHom ℝ) *ᵥ (fun j => (x j : ℝ))) i| ≤ Real.exp (c 0 i * q)) ∧ (∀ i, (padicNorm 2 (x i : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) ∧ (∀ i, (padicNorm 3 (x i : ℚ) : ℝ) ≤ Real.exp (c 2 i * q))} def threePlaceWidth {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (i : Fin d) : ℝ := Real.exp (c 0 i * q) def threePlaceDiagonal {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (i : Fin d) : ℕ := 2 ^ Nat.ceil (-(c 1 i * q) / Real.log 2) * 3 ^ Nat.ceil (-(c 2 i * q) / Real.log 3) def threePlaceWidth_pos {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (i : Fin d) : 0 < threePlaceWidth c q i := Real.exp_pos _ def threePlaceDiagonal_pos {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (i : Fin d) : 0 < threePlaceDiagonal c q i := by unfold threePlaceDiagonal; positivity def two_three_pow_dvd_int_iff (u v : ℕ) (x : ℤ) : (((2 ^ u * 3 ^ v : ℕ) : ℤ) ∣ x) ↔ (((2 ^ u : ℕ) : ℤ) ∣ x) ∧ (((3 ^ v : ℕ) : ℤ) ∣ x) := by rw [Nat.cast_mul] constructor · intro h exact ⟨(dvd_mul_right _ _).trans h, (dvd_mul_left _ _).trans h⟩ · rintro ⟨h2, h3⟩ have hc : Nat.Coprime (2 ^ u) (3 ^ v) := (by norm_num : Nat.Coprime 2 3).pow u v exact hc.isCoprime.mul_dvd h2 h3 def threePlaceDiagonal_dvd_iff {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (i : Fin d) (x : ℤ) : ((threePlaceDiagonal c q i : ℤ) ∣ x) ↔ (padicNorm 2 (x : ℚ) : ℝ) ≤ Real.exp (c 1 i * q) ∧ (padicNorm 3 (x : ℚ) : ℝ) ≤ Real.exp (c 2 i * q) := by rw [threePlaceDiagonal, two_three_pow_dvd_int_iff] simpa only [neg_neg, Nat.cast_ofNat] using and_congr (padicNorm_int_le_exp_iff_dvd 2 x (-(c 1 i * q))).symm (padicNorm_int_le_exp_iff_dvd 3 x (-(c 2 i * q))).symm def rationalThreePlaceDomain_iff_divisibility {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) (x : Fin d → ℤ) : x ∈ rationalThreePlaceDomain A c q ↔ rationalBoxContains A (threePlaceWidth c q) (integerEuclideanPoint x) ∧ ∀ i, (threePlaceDiagonal c q i : ℤ) ∣ x i := by simp only [rationalThreePlaceDomain, Set.mem_ofPred_eq, threePlaceDiagonal_dvd_iff, rationalBoxContains, threePlaceWidth, integerEuclideanPoint, WithLp.ofLp_toLp] aesop /-- Equality at each actual integer point; it includes zero coordinates. -/ def rationalThreePlaceDomain_point_iff {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) (x : Fin d → ℤ) : x ∈ rationalThreePlaceDomain A c q ↔ integerEuclideanPoint x ∈ rationalDiagonalBoxDomain A (threePlaceWidth c q) (threePlaceDiagonal c q) := by rw [rationalThreePlaceDomain_iff_divisibility] constructor · rintro ⟨hb, hd⟩ choose z hz using hd refine ⟨z, ?_, hb⟩ ext i change (x i : ℝ) = (threePlaceDiagonal c q i : ℝ) * (z i : ℝ) exact_mod_cast hz i · rintro ⟨z, hz, hb⟩ refine ⟨hb, fun i => ⟨z i, ?_⟩⟩ have hi := congrArg (fun v : BoxEuclidean d => v i) hz change (x i : ℝ) = (threePlaceDiagonal c q i : ℝ) * (z i : ℝ) at hi exact_mod_cast hi /-- Exact set equality, not merely an inclusion or an abstract lattice model. -/ def rationalThreePlaceDomain_image {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) : integerEuclideanPoint '' rationalThreePlaceDomain A c q = rationalDiagonalBoxDomain A (threePlaceWidth c q) (threePlaceDiagonal c q) := by ext y constructor · rintro ⟨x, hx, rfl⟩ exact (rationalThreePlaceDomain_point_iff A c q x).mp hx · rintro ⟨z, rfl, hb⟩ let x : Fin d → ℤ := fun i => (threePlaceDiagonal c q i : ℤ) * z i have hx : integerEuclideanPoint x = diagonalIntegerPoint (threePlaceDiagonal c q) z := by ext i simp [integerEuclideanPoint, diagonalIntegerPoint, x] refine ⟨x, (rationalThreePlaceDomain_point_iff A c q x).mpr ?_, hx⟩ rw [hx] exact ⟨z, rfl, hb⟩ /-- Each coordinate denominator differs from the exact real scaling by less than a factor six. -/ def threePlaceDiagonal_bounds {d : ℕ} (c : Fin 3 → Fin d → ℝ) {q : ℝ} (hq : 0 ≤ q) (hc1 : ∀ i, c 1 i ≤ 0) (hc2 : ∀ i, c 2 i ≤ 0) (i : Fin d) : Real.exp (-(c 1 i + c 2 i) * q) ≤ (threePlaceDiagonal c q i : ℝ) ∧ (threePlaceDiagonal c q i : ℝ) ≤ 6 * Real.exp (-(c 1 i + c 2 i) * q) := by have h2 := prime_ceiling_power_bounds 2 (by norm_num) (neg_nonneg.mpr (mul_nonpos_of_nonpos_of_nonneg (hc1 i) hq)) have h3 := prime_ceiling_power_bounds 3 (by norm_num) (neg_nonneg.mpr (mul_nonpos_of_nonpos_of_nonneg (hc2 i) hq)) have he : Real.exp (-(c 1 i + c 2 i) * q) = Real.exp (-(c 1 i * q)) * Real.exp (-(c 2 i * q)) := by rw [← Real.exp_add] congr 1 ring rw [he, threePlaceDiagonal, Nat.cast_mul, Nat.cast_pow, Nat.cast_pow] constructor · exact mul_le_mul h2.1 h3.1 (Real.exp_nonneg _) (by positivity) · calc _ ≤ (2 * Real.exp (-(c 1 i * q))) * (3 * Real.exp (-(c 2 i * q))) := mul_le_mul h2.2.le h3.2.le (by positivity) (by positivity) _ = _ := by ring end end Bounty end SubmissionComponent_RationalThreePlaceDomain /- Component ThreePlaceCovolume; SHA256 2bf668c0d1fd9828b1ac8b34e08b180e8e2f6e2ea457b626e04fd7ec26a5d88e -/ section SubmissionComponent_ThreePlaceCovolume /- Covolume estimates for the exact three-place diagonal lattice. -/ namespace Bounty noncomputable section open scoped BigOperators open Module MeasureTheory def threePlaceProfileSum {d : ℕ} (c : Fin 3 → Fin d → ℝ) : ℝ := ∑ v : Fin 3, ∑ i, c v i def threePlaceProfileSum_eq {d : ℕ} (c : Fin 3 → Fin d → ℝ) : threePlaceProfileSum c = ∑ i : Fin d, (c 0 i + c 1 i + c 2 i) := by simp [threePlaceProfileSum, Fin.sum_univ_succ, Finset.sum_add_distrib, add_assoc] abbrev rationalThreePlaceLattice {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) (hA : A.det ≠ 0) : Submodule ℤ (BoxEuclidean d) := rationalBoxLattice A (threePlaceWidth c q) (threePlaceDiagonal c q) hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q) def threePlaceCoordinateScale_bounds {d : ℕ} (c : Fin 3 → Fin d → ℝ) {q : ℝ} (hq : 0 ≤ q) (hc1 : ∀ i, c 1 i ≤ 0) (hc2 : ∀ i, c 2 i ≤ 0) (i : Fin d) : Real.exp (-(c 0 i + c 1 i + c 2 i) * q) ≤ (threePlaceDiagonal c q i : ℝ) / threePlaceWidth c q i ∧ (threePlaceDiagonal c q i : ℝ) / threePlaceWidth c q i ≤ 6 * Real.exp (-(c 0 i + c 1 i + c 2 i) * q) := by have hh := threePlaceDiagonal_bounds c hq hc1 hc2 i have hw := threePlaceWidth_pos c q i have he : Real.exp (-(c 1 i + c 2 i) * q) / threePlaceWidth c q i = Real.exp (-(c 0 i + c 1 i + c 2 i) * q) := by rw [threePlaceWidth, ← Real.exp_sub] congr 1 ring constructor · rw [← he] exact div_le_div_of_nonneg_right hh.1 hw.le · rw [← he] calc _ ≤ (6 * Real.exp (-(c 1 i + c 2 i) * q)) / threePlaceWidth c q i := div_le_div_of_nonneg_right hh.2 hw.le _ = _ := by ring def threePlace_exp_product {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) : (∏ i, Real.exp (-(c 0 i + c 1 i + c 2 i) * q)) = Real.exp (-threePlaceProfileSum c * q) := by rw [← Real.exp_sum] congr 1 rw [← Finset.sum_mul, Finset.sum_neg_distrib, threePlaceProfileSum_eq] /-- Exact determinant formula for the actual full discrete lattice. -/ def rationalThreePlaceLattice_covolume {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) (hA : A.det ≠ 0) : ZLattice.covolume (rationalThreePlaceLattice A c q hA) = |(A.det : ℝ)| * (∏ i, (threePlaceDiagonal c q i : ℝ)) / ∏ i, threePlaceWidth c q i := rationalBoxLattice_covolume A _ _ hA _ _ /-- The upper estimate uses the exact profile sum; a lower bound on its negative alone cannot supply an upper estimate with the same rho. -/ def rationalThreePlaceLattice_covolume_bounds {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) {q : ℝ} (hA : A.det ≠ 0) (hq : 0 ≤ q) (hc1 : ∀ i, c 1 i ≤ 0) (hc2 : ∀ i, c 2 i ≤ 0) : |(A.det : ℝ)| * Real.exp (-threePlaceProfileSum c * q) ≤ ZLattice.covolume (rationalThreePlaceLattice A c q hA) ∧ ZLattice.covolume (rationalThreePlaceLattice A c q hA) ≤ (6 : ℝ) ^ d * |(A.det : ℝ)| * Real.exp (-threePlaceProfileSum c * q) := by have he : ZLattice.covolume (rationalThreePlaceLattice A c q hA) = |(A.det : ℝ)| * ∏ i, (threePlaceDiagonal c q i : ℝ) / threePlaceWidth c q i := by rw [rationalThreePlaceLattice_covolume, Finset.prod_div_distrib] ring have hlo : (∏ i, Real.exp (-(c 0 i + c 1 i + c 2 i) * q)) ≤ ∏ i, (threePlaceDiagonal c q i : ℝ) / threePlaceWidth c q i := Finset.prod_le_prod (fun _ _ => Real.exp_nonneg _) (fun i _ => (threePlaceCoordinateScale_bounds c hq hc1 hc2 i).1) have hhi : (∏ i, (threePlaceDiagonal c q i : ℝ) / threePlaceWidth c q i) ≤ ∏ i, 6 * Real.exp (-(c 0 i + c 1 i + c 2 i) * q) := Finset.prod_le_prod (fun i _ => div_nonneg (Nat.cast_nonneg _) (threePlaceWidth_pos c q i).le) (fun i _ => (threePlaceCoordinateScale_bounds c hq hc1 hc2 i).2) rw [threePlace_exp_product] at hlo rw [Finset.prod_mul_distrib, threePlace_exp_product] at hhi simp only [Finset.prod_const, Finset.card_univ, Fintype.card_fin] at hhi rw [he] refine ⟨mul_le_mul_of_nonneg_left hlo (abs_nonneg _), ?_⟩ calc _ ≤ |(A.det : ℝ)| * ((6 : ℝ) ^ d * Real.exp (-threePlaceProfileSum c * q)) := mul_le_mul_of_nonneg_left hhi (abs_nonneg _) _ = _ := by ring def rationalThreePlaceLattice_covolume_lower {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) {q ρ : ℝ} (hA : A.det ≠ 0) (hq : 0 ≤ q) (hc1 : ∀ i, c 1 i ≤ 0) (hc2 : ∀ i, c 2 i ≤ 0) (hsum : threePlaceProfileSum c ≤ -ρ) : |(A.det : ℝ)| * Real.exp (ρ * q) ≤ ZLattice.covolume (rationalThreePlaceLattice A c q hA) := by apply le_trans _ (rationalThreePlaceLattice_covolume_bounds A c hA hq hc1 hc2).1 apply mul_le_mul_of_nonneg_left _ (abs_nonneg _) apply Real.exp_le_exp.mpr have hh := mul_le_mul_of_nonneg_right hsum hq nlinarith end end Bounty end SubmissionComponent_ThreePlaceCovolume /- Component ThreePlaceDavenportGap; SHA256 def74f57f06f1be4c9b18fb2544ea81569838e0803694de3dcee33744a912444 -/ section SubmissionComponent_ThreePlaceDavenportGap /- The full geometric bridge for the actual three-place integer domain. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix open Module def threePlaceMinimumValue {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) (hA : A.det ≠ 0) : Fin d → ℝ := rationalBoxMinimumValue A (threePlaceWidth c q) (threePlaceDiagonal c q) hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q) def threePlaceMinimumPoints {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) (hA : A.det ≠ 0) : Fin d → BoxEuclidean d := rationalBoxMinimumPoints A (threePlaceWidth c q) (threePlaceDiagonal c q) hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q) def integerEuclideanPoint_injective {d : ℕ} : Function.Injective (@integerEuclideanPoint d) := by intro x y h funext i have hi := congrArg (fun v : BoxEuclidean d => v i) h change (x i : ℝ) = (y i : ℝ) at hi exact_mod_cast hi /-- With the explicit Euclidean gap threshold, the three-place domain admits actual integer Davenport columns and a containing proper prefix. -/ def exists_threePlace_davenport_gap {d : ℕ} (hd : 0 < d) (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) {q ρ G : ℝ} (hA : A.det ≠ 0) (hq : 0 ≤ q) (hc1 : ∀ i, c 1 i ≤ 0) (hc2 : ∀ i, c 2 i ≤ 0) (hsum : threePlaceProfileSum c ≤ -ρ) (hne : ∃ x ∈ rationalThreePlaceDomain A c q, x ≠ 0) (hG : 1 ≤ G) (hgrowth : (d.factorial : ℝ) * (Real.sqrt d) ^ d * G ^ (d * (d - 1)) < |(A.det : ℝ)| * Real.exp (ρ * q)) : ∃ (p : Equiv.Perm (Fin d)) (H : Fin d → Fin d → ℤ) (z : Fin d → Fin d → ℤ) (lo hi : Fin d), hi.val = lo.val + 1 ∧ (∀ j i, (threePlaceDiagonal c q i : ℤ) ∣ H j i) ∧ (∀ j, integerEuclideanPoint (H j) = threePlaceMinimumPoints A c q hA j + ∑ i, if i < j then (z j i : ℝ) • threePlaceMinimumPoints A c q hA i else 0) ∧ LinearIndependent ℝ (fun j => integerEuclideanPoint (H j)) ∧ (∀ k, k ≤ d → Submodule.span ℚ ((fun j => integerEuclideanPoint (H j)) '' {i | i.val < k}) = Submodule.span ℚ (threePlaceMinimumPoints A c q hA '' {i | i.val < k})) ∧ (∀ i j, |(A.map (Rat.castHom ℝ) *ᵥ (fun r => (H j r : ℝ))) (p i)| ≤ (2 : ℝ) ^ d * Real.exp (c 0 (p i) * q) * min (threePlaceMinimumValue A c q hA i) (threePlaceMinimumValue A c q hA j)) ∧ Real.sqrt d < threePlaceMinimumValue A c q hA hi ∧ G < threePlaceMinimumValue A c q hA hi / threePlaceMinimumValue A c q hA lo ∧ (∀ x ∈ rationalThreePlaceDomain A c q, integerEuclideanPoint x ∈ latticePrefixSpan (fun j => integerEuclideanPoint (H j)) hi.val) ∧ finrank ℝ (latticePrefixSpan (fun j => integerEuclideanPoint (H j)) hi.val) = hi.val ∧ finrank ℝ (Submodule.span ℝ (integerEuclideanPoint '' rationalThreePlaceDomain A c q)) ≤ hi.val := by let B := threePlaceWidth c q let N := threePlaceDiagonal c q have hboxne : ∃ x ∈ rationalDiagonalBoxDomain A B N, x ≠ 0 := by obtain ⟨x, hx, hxne⟩ := hne refine ⟨integerEuclideanPoint x, (rationalThreePlaceDomain_point_iff A c q x).mp hx, ?_⟩ intro hz apply hxne apply integerEuclideanPoint_injective have hzero : integerEuclideanPoint (0 : Fin d → ℤ) = 0 := by ext i; simp [integerEuclideanPoint] exact hz.trans hzero.symm have hdet : (d.factorial : ℝ) * (Real.sqrt d) ^ d * G ^ (d * (d - 1)) < |(A.det : ℝ)| * (∏ i, (N i : ℝ)) / ∏ i, B i := by have hh := rationalThreePlaceLattice_covolume_lower A c hA hq hc1 hc2 hsum rw [rationalThreePlaceLattice_covolume] at hh exact hgrowth.trans_le hh obtain ⟨p, h, z, lo, hi, hidx, he, hint, hLI, hpref, hb, hhi, hgap, hsub, hdim, hrank⟩ := exists_rationalBox_davenport_gap hd A B N hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q) hboxne hG hdet choose b hbdiag using hint let H : Fin d → Fin d → ℤ := fun j i => (N i : ℤ) * b j i have hH : (fun j => integerEuclideanPoint (H j)) = h := by funext j rw [hbdiag j] ext i simp [integerEuclideanPoint, diagonalIntegerPoint, H] refine ⟨p, H, z, lo, hi, hidx, (fun j i => ⟨b j i, rfl⟩), ?_, ?_, ?_, ?_, hhi, hgap, ?_, ?_, ?_⟩ · intro j rw [congrFun hH j] exact he j · rw [hH] exact hLI · rw [hH] exact hpref · intro i j have hh := hb i j rw [← congrFun hH j] at hh exact hh · intro x hx rw [hH] exact hsub ((rationalThreePlaceDomain_point_iff A c q x).mp hx) · rw [hH] exact hdim · rw [rationalThreePlaceDomain_image] exact hrank end end Bounty end SubmissionComponent_ThreePlaceDavenportGap /- Component ThreePlaceMinimaBounds; SHA256 c0972339d911636ab9a0dd1b4b43834b23ef2d3f200c949d53592405ba76f848 -/ section SubmissionComponent_ThreePlaceMinimaBounds /- Uniform exponential bounds for the actual transformed Euclidean minima. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix open Module MeasureTheory def rationalMatrixSize {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) : ℝ := 1 + ∑ i, ∑ j, |(A i j : ℝ)| def rationalMatrixSize_one_le {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) : 1 ≤ rationalMatrixSize A := by unfold rationalMatrixSize exact le_add_of_nonneg_right (Finset.sum_nonneg (fun i _ => Finset.sum_nonneg (fun j _ => abs_nonneg _))) def rationalMatrixSize_entry {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (i j : Fin d) : |(A i j : ℝ)| ≤ rationalMatrixSize A := by have h1 : |(A i j : ℝ)| ≤ ∑ k : Fin d, |(A i k : ℝ)| := Finset.single_le_sum (f := fun k : Fin d => |(A i k : ℝ)|) (fun k _ => abs_nonneg _) (Finset.mem_univ j) have h2 : (∑ k : Fin d, |(A i k : ℝ)|) ≤ ∑ l : Fin d, ∑ k : Fin d, |(A l k : ℝ)| := Finset.single_le_sum (f := fun l : Fin d => ∑ k : Fin d, |(A l k : ℝ)|) (fun l _ => Finset.sum_nonneg (fun k _ => abs_nonneg _)) (Finset.mem_univ i) unfold rationalMatrixSize linarith def boxEuclidean_norm_le_sum_abs {d : ℕ} (x : BoxEuclidean d) : ‖x‖ ≤ ∑ i, |x i| := by let e := EuclideanSpace.basisFun (Fin d) ℝ have hx : (∑ i, x i • e i) = x := e.toBasis.sum_repr x calc ‖x‖ = ‖∑ i, x i • e i‖ := congrArg norm hx.symm _ ≤ ∑ i, ‖x i • e i‖ := norm_sum_le _ _ _ = _ := by simp [norm_smul, e.norm_eq_one, Real.norm_eq_abs] def threePlaceDiagonal_uniform_upper {d : ℕ} (c : Fin 3 → Fin d → ℝ) {M q : ℝ} (hM : 0 ≤ M) (hq : 0 ≤ q) (hc : ∀ v i, |c v i| ≤ M) (i : Fin d) : (threePlaceDiagonal c q i : ℝ) ≤ 6 * Real.exp (2 * M * q) := by have hp (p : ℕ) (hp : 1 < p) (v : Fin 3) : (p : ℝ) ^ Nat.ceil (-(c v i * q) / Real.log p) ≤ p * Real.exp (M * q) := by have hlog : 0 < Real.log (p : ℝ) := Real.log_pos (by exact_mod_cast hp) have hcv : -(c v i * q) ≤ M * q := by have hh := mul_le_mul_of_nonneg_right ((neg_le_abs (c v i)).trans (hc v i)) hq linarith have hceil := Nat.ceil_mono (div_le_div_of_nonneg_right hcv hlog.le) exact (pow_le_pow_right₀ (by exact_mod_cast (Nat.le_of_lt hp)) hceil).trans (prime_ceiling_power_bounds p hp (mul_nonneg hM hq)).2.le have h2 := hp 2 (by norm_num) 1 have h3 := hp 3 (by norm_num) 2 simp only [Nat.cast_ofNat] at h2 h3 rw [threePlaceDiagonal, Nat.cast_mul, Nat.cast_pow, Nat.cast_pow] calc _ ≤ (2 * Real.exp (M * q)) * (3 * Real.exp (M * q)) := mul_le_mul h2 h3 (by positivity) (by positivity) _ = 6 * Real.exp (M * q + M * q) := by rw [Real.exp_add]; ring _ = _ := by congr 2; ring def threePlaceWidth_uniform_bounds {d : ℕ} (c : Fin 3 → Fin d → ℝ) {M q : ℝ} (hq : 0 ≤ q) (hc : ∀ v i, |c v i| ≤ M) (i : Fin d) : threePlaceWidth c q i ≤ Real.exp (M * q) ∧ (threePlaceWidth c q i)⁻¹ ≤ Real.exp (M * q) := by constructor · exact Real.exp_le_exp.mpr (mul_le_mul_of_nonneg_right ((le_abs_self _).trans (hc 0 i)) hq) · rw [threePlaceWidth, ← Real.exp_neg] apply Real.exp_le_exp.mpr have hh := mul_le_mul_of_nonneg_right ((neg_le_abs _).trans (hc 0 i)) hq linarith def threePlaceBasis_norm_bound {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) {M q : ℝ} (hA : A.det ≠ 0) (hM : 0 ≤ M) (hq : 0 ≤ q) (hc : ∀ v i, |c v i| ≤ M) (j : Fin d) : ‖matrixEuclideanBasis (rationalBoxLatticeMatrix A (threePlaceWidth c q) (threePlaceDiagonal c q)) (rationalBoxLatticeMatrix_det_ne_zero A _ _ hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q)) j‖ ≤ (6 * (d + 1 : ℝ) * rationalMatrixSize A) * Real.exp (3 * M * q) := by let B := threePlaceWidth c q let N := threePlaceDiagonal c q let C := rationalBoxLatticeMatrix A B N let hC := rationalBoxLatticeMatrix_det_ne_zero A B N hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q) let b := matrixEuclideanBasis C hC have hKA : 0 ≤ rationalMatrixSize A := le_trans (by norm_num) (rationalMatrixSize_one_le A) have hentry (i : Fin d) : |b j i| ≤ 6 * rationalMatrixSize A * Real.exp (3 * M * q) := by have he : b j i = C i j := congrArg (fun D : Matrix (Fin d) (Fin d) ℝ => D i j) (matrixEuclideanBasis_toMatrix C hC) rw [he] have hCij : C i j = (B i)⁻¹ * (A i j : ℝ) * (N j : ℝ) := by simp [C, rationalBoxLatticeMatrix, rationalBoxMatrix, Matrix.diagonal_mul, Matrix.mul_diagonal] rw [hCij, abs_mul, abs_mul, abs_of_nonneg (inv_nonneg.mpr (threePlaceWidth_pos c q i).le), abs_of_nonneg (show (0 : ℝ) ≤ N j from Nat.cast_nonneg _)] calc _ ≤ (Real.exp (M * q) * rationalMatrixSize A) * (6 * Real.exp (2 * M * q)) := mul_le_mul (mul_le_mul (threePlaceWidth_uniform_bounds c hq hc i).2 (rationalMatrixSize_entry A i j) (abs_nonneg _) (Real.exp_nonneg _)) (threePlaceDiagonal_uniform_upper c hM hq hc j) (Nat.cast_nonneg _) (mul_nonneg (Real.exp_nonneg _) hKA) _ = 6 * rationalMatrixSize A * Real.exp (M * q + 2 * M * q) := by rw [Real.exp_add]; ring _ = _ := by congr 2; ring have hK : 0 ≤ 6 * rationalMatrixSize A * Real.exp (3 * M * q) := mul_nonneg (mul_nonneg (by norm_num) (le_trans (by norm_num) (rationalMatrixSize_one_le A))) (Real.exp_nonneg _) calc ‖b j‖ ≤ ∑ i, |b j i| := boxEuclidean_norm_le_sum_abs _ _ ≤ ∑ _i : Fin d, 6 * rationalMatrixSize A * Real.exp (3 * M * q) := Finset.sum_le_sum (fun i _ => hentry i) _ = (d : ℝ) * (6 * rationalMatrixSize A * Real.exp (3 * M * q)) := by simp _ ≤ (d + 1 : ℝ) * (6 * rationalMatrixSize A * Real.exp (3 * M * q)) := mul_le_mul_of_nonneg_right (by linarith) hK _ = _ := by ring def threePlaceMinimumValue_uniform_upper {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) {M q : ℝ} (hA : A.det ≠ 0) (hM : 0 ≤ M) (hq : 0 ≤ q) (hc : ∀ v i, |c v i| ≤ M) (i : Fin d) : threePlaceMinimumValue A c q hA i ≤ (6 * (d + 1 : ℝ) * rationalMatrixSize A) * Real.exp (3 * M * q) := by let B := threePlaceWidth c q let N := threePlaceDiagonal c q let L := rationalBoxLattice A B N hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q) let C := rationalBoxLatticeMatrix A B N let hC := rationalBoxLatticeMatrix_det_ne_zero A B N hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q) let b := matrixEuclideanBasis C hC apply (latticeSuccessiveMinimum_le_iff L (boxDimensionEquiv d i) _).mpr let f := Fin.castLE (Nat.succ_le_of_lt i.isLt) refine ⟨fun j => b (f j), b.linearIndependent.comp f (Fin.castLE_injective _), ?_, ?_⟩ · intro j exact Submodule.subset_span ⟨f j, rfl⟩ · intro j exact threePlaceBasis_norm_bound A c hA hM hq hc (f j) def positive_constant_exp_bounds {C q : ℝ} (hC : 0 < C) (hq : 1 ≤ q) : Real.exp (-|Real.log C| * q) ≤ C ∧ C ≤ Real.exp (|Real.log C| * q) := by have hh : |Real.log C| ≤ |Real.log C| * q := le_mul_of_one_le_right (abs_nonneg _) hq constructor · calc _ ≤ Real.exp (Real.log C) := Real.exp_le_exp.mpr (by nlinarith [neg_abs_le (Real.log C)]) _ = C := Real.exp_log hC · calc C = Real.exp (Real.log C) := (Real.exp_log hC).symm _ ≤ _ := Real.exp_le_exp.mpr ((le_abs_self _).trans hh) def threePlaceMinimumValue_exp_upper {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) {M q : ℝ} (hA : A.det ≠ 0) (hM : 0 ≤ M) (hq : 1 ≤ q) (hc : ∀ v i, |c v i| ≤ M) (i : Fin d) : threePlaceMinimumValue A c q hA i ≤ Real.exp ((3 * M + |Real.log (6 * (d + 1 : ℝ) * rationalMatrixSize A)|) * q) := by have hK : 0 < 6 * (d + 1 : ℝ) * rationalMatrixSize A := mul_pos (mul_pos (by norm_num) (by positivity)) ((by norm_num : (0 : ℝ) < 1).trans_le (rationalMatrixSize_one_le A)) apply (threePlaceMinimumValue_uniform_upper A c hA hM (le_trans (by norm_num) hq) hc i).trans calc _ ≤ Real.exp (|Real.log (6 * (d + 1 : ℝ) * rationalMatrixSize A)| * q) * Real.exp (3 * M * q) := mul_le_mul_of_nonneg_right (positive_constant_exp_bounds hK hq).2 (Real.exp_nonneg _) _ = _ := by rw [← Real.exp_add]; congr 1; ring def threePlaceMinimumValue_product_exp_lower {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) {M q : ℝ} (hA : A.det ≠ 0) (hq : 0 ≤ q) (hc : ∀ v i, |c v i| ≤ M) : (|(A.det : ℝ)| / d.factorial) * Real.exp (-((d : ℝ) * M) * q) ≤ ∏ i, threePlaceMinimumValue A c q hA i := by have hscale (i : Fin d) : Real.exp (-(M * q)) ≤ (threePlaceDiagonal c q i : ℝ) / threePlaceWidth c q i := by rw [Real.exp_neg, inv_eq_one_div] calc _ ≤ 1 / threePlaceWidth c q i := one_div_le_one_div_of_le (threePlaceWidth_pos c q i) (threePlaceWidth_uniform_bounds c hq hc i).1 _ ≤ _ := div_le_div_of_nonneg_right (by exact_mod_cast (threePlaceDiagonal_pos c q i)) (threePlaceWidth_pos c q i).le have hs := Finset.prod_le_prod (fun _ _ => Real.exp_nonneg _) (fun i (_ : i ∈ Finset.univ) => hscale i) have he : (∏ _i : Fin d, Real.exp (-(M * q))) = Real.exp (-((d : ℝ) * M) * q) := by simp only [Finset.prod_const, Finset.card_univ, Fintype.card_fin, ← Real.exp_nat_mul] congr 1 ring rw [he, Finset.prod_div_distrib] at hs have hp := (rationalBoxMinimumValue_product_bounds A (threePlaceWidth c q) (threePlaceDiagonal c q) hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q)).1 apply le_trans _ hp have hfac : (0 : ℝ) < d.factorial := by exact_mod_cast Nat.factorial_pos d have ht := div_le_div_of_nonneg_right (mul_le_mul_of_nonneg_left hs (abs_nonneg (A.det : ℝ))) hfac.le convert ht using 1 <;> ring def finite_minima_exp_lower {d : ℕ} (lam : Fin d → ℝ) {C U V q : ℝ} (hC : 0 < C) (hU : 0 ≤ U) (hq : 1 ≤ q) (hlam : ∀ i, 0 ≤ lam i) (hupper : ∀ i, lam i ≤ Real.exp (U * q)) (hprod : C * Real.exp (-V * q) ≤ ∏ i, lam i) (i : Fin d) : Real.exp (-(V + U * d + |Real.log C|) * q) ≤ lam i := by classical have hq0 : 0 ≤ q := le_trans (by norm_num) hq have he1 : 1 ≤ Real.exp (U * q) := Real.one_le_exp_iff.mpr (mul_nonneg hU hq0) have hother : (∏ j ∈ Finset.univ.erase i, lam j) ≤ Real.exp (U * q) ^ d := by calc _ ≤ ∏ _j ∈ Finset.univ.erase i, Real.exp (U * q) := Finset.prod_le_prod (fun j _ => hlam j) (fun j _ => hupper j) _ = Real.exp (U * q) ^ (d - 1) := by simp _ ≤ _ := pow_le_pow_right₀ he1 (Nat.sub_le _ _) have hp : (∏ j, lam j) ≤ lam i * Real.exp (U * q) ^ d := by rw [← Finset.mul_prod_erase Finset.univ lam (Finset.mem_univ i)] exact mul_le_mul_of_nonneg_left hother (hlam i) have hlow : Real.exp (-(V + U * d + |Real.log C|) * q) * Real.exp (U * q) ^ d ≤ C * Real.exp (-V * q) := by have hh := mul_le_mul_of_nonneg_right (positive_constant_exp_bounds hC hq).1 (Real.exp_nonneg (-V * q)) calc _ = Real.exp (-|Real.log C| * q) * Real.exp (-V * q) := by rw [← Real.exp_nat_mul, ← Real.exp_add, ← Real.exp_add] congr 1 ring _ ≤ _ := hh exact (mul_le_mul_iff_left₀ (pow_pos (Real.exp_pos _) d)).mp (by simpa only [mul_comm] using hlow.trans (hprod.trans hp)) def exists_threePlaceMinimumValue_uniform_exp_bounds {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (M : ℝ) : ∃ L : ℝ, 0 ≤ L ∧ ∀ (c : Fin 3 → Fin d → ℝ) (q : ℝ), 1 ≤ q → (∀ v i, |c v i| ≤ M) → ∀ i, Real.exp (-L * q) ≤ threePlaceMinimumValue A c q hA i ∧ threePlaceMinimumValue A c q hA i ≤ Real.exp (L * q) := by let M' := max M 0 let U := 3 * M' + |Real.log (6 * (d + 1 : ℝ) * rationalMatrixSize A)| let C := |(A.det : ℝ)| / d.factorial let V := (d : ℝ) * M' let L := U + V + U * d + |Real.log C| have hM : 0 ≤ M' := le_max_right _ _ have hU : 0 ≤ U := add_nonneg (mul_nonneg (by norm_num) hM) (abs_nonneg _) have hV : 0 ≤ V := mul_nonneg (Nat.cast_nonneg _) hM have hC : 0 < C := div_pos (abs_pos.mpr (by exact_mod_cast hA)) (by exact_mod_cast Nat.factorial_pos d) have hUd : 0 ≤ U * d := mul_nonneg hU (Nat.cast_nonneg _) refine ⟨L, by dsimp [L]; positivity, ?_⟩ intro c q hq hc i have hc' : ∀ v i, |c v i| ≤ M' := fun v i => (hc v i).trans (le_max_left _ _) have hu := threePlaceMinimumValue_exp_upper A c hA hM hq hc' have hp := threePlaceMinimumValue_product_exp_lower A c hA (le_trans (by norm_num) hq) hc' have hl := finite_minima_exp_lower (threePlaceMinimumValue A c q hA) hC hU hq (fun i => (rationalBoxMinimumValue_pos A _ _ hA _ _ i).le) hu hp i constructor · apply le_trans _ hl apply Real.exp_le_exp.mpr have hq0 : 0 ≤ q := le_trans (by norm_num) hq have hh := mul_nonneg hU hq0 dsimp [L] nlinarith · apply (hu i).trans apply Real.exp_le_exp.mpr apply mul_le_mul_of_nonneg_right _ (le_trans (by norm_num) hq) dsimp [L] linarith [abs_nonneg (Real.log C)] end end Bounty end SubmissionComponent_ThreePlaceMinimaBounds /- Component CompoundMatrixAlgebra; SHA256 c1ff7533b9aa2449de13aa80682fbb7ff19db56e8ce111b2b67d1795324c687c -/ section SubmissionComponent_CompoundMatrixAlgebra /- The actual compound matrix in the increasing-subset exterior-power basis. Its entries are the usual minors, and its composition and column action are deduced from the exterior-power functor. -/ namespace Bounty noncomputable section open scoped BigOperators abbrev CompoundIndex (d ell : ℕ) := Set.powersetCard (Fin d) ell def compoundIndexEmbedding {d ell : ℕ} (s : CompoundIndex d ell) : Fin ell ↪o Fin d := Set.powersetCard.ofFinEmbEquiv.symm s def compoundIndex_card (d ell : ℕ) : Fintype.card (CompoundIndex d ell) = d.choose ell := by rw [Fintype.card_eq_nat_card, Set.powersetCard.card, Nat.card_fin] def compoundExteriorBasis (R : Type*) [CommRing R] (d ell : ℕ) : Module.Basis (CompoundIndex d ell) R (⋀[R]^ell (Fin d → R)) := (Pi.basisFun R (Fin d)).exteriorPower ell def compoundMatrix {R : Type*} [CommRing R] {d : ℕ} (ell : ℕ) (M : Matrix (Fin d) (Fin d) R) : Matrix (CompoundIndex d ell) (CompoundIndex d ell) R := by classical exact LinearMap.toMatrix (compoundExteriorBasis R d ell) (compoundExteriorBasis R d ell) (exteriorPower.map ell (Matrix.toLin' M)) def compoundWedgeCoordinates {R : Type*} [CommRing R] {d ell : ℕ} (v : Fin ell → Fin d → R) : CompoundIndex d ell → R := (compoundExteriorBasis R d ell).repr (exteriorPower.ιMulti R ell v) def compoundWedgeCoordinates_apply {R : Type*} [CommRing R] {d ell : ℕ} (v : Fin ell → Fin d → R) (s : CompoundIndex d ell) : compoundWedgeCoordinates v s = (Matrix.of (fun i j : Fin ell => v j (compoundIndexEmbedding s i))).det := by rw [compoundWedgeCoordinates, compoundExteriorBasis, exteriorPower.basis_repr_apply, exteriorPower.ιMultiDual_apply_ιMulti] simp only [Module.Basis.coord_apply, Pi.basisFun_repr] have heq : (Matrix.of (fun i j : Fin ell => v i (Set.powersetCard.ofFinEmbEquiv.symm s j))) = (Matrix.of (fun i j : Fin ell => v j (compoundIndexEmbedding s i))).transpose := by ext i j rfl exact (congrArg Matrix.det heq).trans (Matrix.det_transpose _) /-- The entry indexed by row subset `s` and column subset `t` is their minor, with both subsets enumerated increasingly. -/ def compoundMatrix_apply {R : Type*} [CommRing R] {d : ℕ} (ell : ℕ) (M : Matrix (Fin d) (Fin d) R) (s t : CompoundIndex d ell) : compoundMatrix ell M s t = (M.submatrix (compoundIndexEmbedding s) (compoundIndexEmbedding t)).det := by classical rw [compoundMatrix, LinearMap.toMatrix_apply] simp only [compoundExteriorBasis, exteriorPower.basis_apply, exteriorPower.ιMulti_family, exteriorPower.map_apply_ιMulti] change compoundWedgeCoordinates (fun j => Matrix.toLin' M (Pi.basisFun R (Fin d) (compoundIndexEmbedding t j))) s = _ rw [compoundWedgeCoordinates_apply] congr 1 ext i j simp only [Matrix.of_apply, Matrix.toLin'_apply, Pi.basisFun_apply, Matrix.mulVec_single_one, Matrix.col_apply, Matrix.submatrix_apply] def compoundMatrix_mul {R : Type*} [CommRing R] {d : ℕ} (ell : ℕ) (M N : Matrix (Fin d) (Fin d) R) : compoundMatrix ell (M * N) = compoundMatrix ell M * compoundMatrix ell N := by classical simp only [compoundMatrix, Matrix.toLin'_mul, exteriorPower.map_comp] exact LinearMap.toMatrix_comp (compoundExteriorBasis R d ell) (compoundExteriorBasis R d ell) (compoundExteriorBasis R d ell) _ _ def compoundMatrix_column {R : Type*} [CommRing R] {d ell : ℕ} (M : Matrix (Fin d) (Fin d) R) (t : CompoundIndex d ell) : compoundWedgeCoordinates (fun j i => M i (compoundIndexEmbedding t j)) = fun s => compoundMatrix ell M s t := by funext s rw [compoundWedgeCoordinates_apply, compoundMatrix_apply] rfl def compoundMatrix_map {R S : Type*} [CommRing R] [CommRing S] {d : ℕ} (f : R →+* S) (ell : ℕ) (M : Matrix (Fin d) (Fin d) R) : compoundMatrix ell (f.mapMatrix M) = f.mapMatrix (compoundMatrix ell M) := by ext s t change compoundMatrix ell (f.mapMatrix M) s t = f (compoundMatrix ell M s t) rw [compoundMatrix_apply, compoundMatrix_apply, RingHom.map_det] rfl def compoundMatrix_one {R : Type*} [CommRing R] (d ell : ℕ) : compoundMatrix ell (1 : Matrix (Fin d) (Fin d) R) = 1 := by classical simp only [compoundMatrix, Matrix.toLin'_one, exteriorPower.map_id, LinearMap.toMatrix_id] /-- The compound acts on actual minors of any tuple of columns. -/ def compoundMatrix_wedge_action {R : Type*} [CommRing R] {d ell : ℕ} (M : Matrix (Fin d) (Fin d) R) (v : Fin ell → Fin d → R) : (compoundMatrix ell M).mulVec (compoundWedgeCoordinates v) = compoundWedgeCoordinates (fun j => M.mulVec (v j)) := by classical have hh := LinearMap.toMatrix_mulVec_repr (compoundExteriorBasis R d ell) (compoundExteriorBasis R d ell) (exteriorPower.map ell (Matrix.toLin' M)) (exteriorPower.ιMulti R ell v) simpa only [compoundMatrix, compoundWedgeCoordinates, exteriorPower.map_apply_ιMulti, Function.comp_def, Matrix.toLin'_apply] using hh def compoundMatrix_mul_inverse {K : Type*} [Field K] {d : ℕ} (ell : ℕ) (M : Matrix (Fin d) (Fin d) K) (hM : M.det ≠ 0) : compoundMatrix ell M * compoundMatrix ell M⁻¹ = 1 := by rw [← compoundMatrix_mul, Matrix.mul_nonsing_inv _ (isUnit_iff_ne_zero.mpr hM), compoundMatrix_one] def compoundMatrix_det_ne_zero {K : Type*} [Field K] {d : ℕ} (ell : ℕ) (M : Matrix (Fin d) (Fin d) K) (hM : M.det ≠ 0) : (compoundMatrix ell M).det ≠ 0 := by classical intro hz have hh := congrArg Matrix.det (compoundMatrix_mul_inverse ell M hM) rw [Matrix.det_mul, hz, zero_mul, Matrix.det_one] at hh exact zero_ne_one hh end end Bounty end SubmissionComponent_CompoundMatrixAlgebra /- Component CofactorNormal; SHA256 ce1cff96605c23a71d159136c0ea6c08db3c24c59ca15439f37689026f9ff05c -/ section SubmissionComponent_CofactorNormal /- Signed maximal minors of a rectangular matrix with one more row than column. The transformation formula is proved by applying the adjugate product identity to a zero-column completion. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def cofactorCompletion {R : Type*} [Zero R] {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) R) : Matrix (Fin (n + 1)) (Fin (n + 1)) R := fun i j => Fin.cases 0 (X i) j def cofactorNormal {R : Type*} [CommRing R] {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) R) : Fin (n + 1) → R := fun i => (-1) ^ i.val * (X.submatrix i.succAbove id).det def cofactorNormal_eq_adjugate {R : Type*} [CommRing R] {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) R) (i : Fin (n + 1)) : cofactorNormal X i = (cofactorCompletion X).adjugate 0 i := by rw [Matrix.adjugate_fin_succ_eq_det_submatrix] simp [cofactorNormal, cofactorCompletion, Matrix.submatrix] def cofactorCompletion_mul {R : Type*} [CommRing R] {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) R) (X : Matrix (Fin (n + 1)) (Fin n) R) : cofactorCompletion (A * X) = A * cofactorCompletion X := by ext i j refine Fin.cases ?_ (fun k => ?_) j · simp [cofactorCompletion, Matrix.mul_apply] · simp [cofactorCompletion, Matrix.mul_apply] def cofactorNormal_mul {R : Type*} [CommRing R] {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) R) (X : Matrix (Fin (n + 1)) (Fin n) R) : cofactorNormal (A * X) = A.adjugate.transpose.mulVec (cofactorNormal X) := by ext i simp_rw [cofactorNormal_eq_adjugate] rw [cofactorCompletion_mul, Matrix.adjugate_mul_distrib] simp only [Matrix.mul_apply, Matrix.mulVec, dotProduct, Matrix.transpose_apply] exact Finset.sum_congr rfl fun j _ => by rw [cofactorNormal_eq_adjugate]; ring def cofactorNormal_dot_column {R : Type*} [CommRing R] {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) R) (j : Fin n) : dotProduct (cofactorNormal X) (X.col j) = 0 := by have h := congrArg (fun M : Matrix (Fin (n + 1)) (Fin (n + 1)) R => M 0 j.succ) (Matrix.adjugate_mul (cofactorCompletion X)) simpa [Matrix.mul_apply, cofactorNormal_eq_adjugate, dotProduct, cofactorCompletion, Matrix.col, Matrix.one_apply, Ne.symm (Fin.succ_ne_zero j)] using h def cofactorNormal_map {R S : Type*} [CommRing R] [CommRing S] {n : ℕ} (f : R →+* S) (X : Matrix (Fin (n + 1)) (Fin n) R) : cofactorNormal (X.map f) = fun i => f (cofactorNormal X i) := by ext i simp only [cofactorNormal, map_mul, map_pow, map_neg, map_one] congr 1 exact (f.map_det (X.submatrix i.succAbove id)).symm def cofactorNormal_ne_zero {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) ℚ) (hX : LinearIndependent ℚ X.col) : cofactorNormal X ≠ 0 := by obtain ⟨v, hv⟩ := exists_linearIndependent_cons_of_lt_finrank hX (by simp : n < Module.finrank ℚ (Fin (n + 1) → ℚ)) let B : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ := fun i j => Fin.cases (v i) (X i) j have hcol : B.col = Fin.cons v X.col := by ext j i refine Fin.cases ?_ (fun k => ?_) j <;> rfl have hB : B.det ≠ 0 := Matrix.nonsingular_iff_det_ne_zero.mp (Matrix.Nonsingular.of_linearIndependent_col (by rw [hcol]; exact hv)) intro hz apply hB rw [Matrix.det_succ_column_zero] apply Finset.sum_eq_zero intro i _ have hi : cofactorNormal X i = 0 := congrFun hz i change (-1 : ℚ) ^ i.val * v i * (X.submatrix i.succAbove id).det = 0 rw [mul_right_comm, ← cofactorNormal, hi, zero_mul] end end Bounty end SubmissionComponent_CofactorNormal /- Component LocalPolynomialEvaluation; SHA256 9ae647c462f81b6f00997fa074be0e49ee1312a9c0ece63d5671dbadc679bfbd -/ section SubmissionComponent_LocalPolynomialEvaluation /- Local evaluation bounds with actual maximizing supported monomials. Different places may choose different exponents. -/ namespace Bounty noncomputable section open scoped BigOperators def rationalPadicNormMulHom (p : ℕ) [Fact p.Prime] : ℚ →* ℚ where toFun := padicNorm p map_one' := padicNorm.one map_mul' := padicNorm.mul def padicNorm_finset_prod {I : Type*} (p : ℕ) [Fact p.Prime] (s : Finset I) (f : I → ℚ) : padicNorm p (∏ i ∈ s, f i) = ∏ i ∈ s, padicNorm p (f i) := map_prod (rationalPadicNormMulHom p) f s def padicNorm_nat_pow (p : ℕ) [Fact p.Prime] (x : ℚ) (n : ℕ) : padicNorm p (x ^ n) = (padicNorm p x) ^ n := map_pow (rationalPadicNormMulHom p) x n def rational_polynomial_eval_norm_le {I : Type*} [Fintype I] (P : MvPolynomial I ℚ) (x : I → ℚ) (M : ℝ) (hM : ∀ e ∈ P.support, ∏ i, ‖x i‖ ^ e i ≤ M) : ‖MvPolynomial.eval x P‖ ≤ polynomialCoeffL1 P * M := by classical rw [MvPolynomial.eval_eq'] calc _ ≤ ∑ e ∈ P.support, ‖MvPolynomial.coeff e P * ∏ i, x i ^ e i‖ := norm_sum_le _ _ _ = ∑ e ∈ P.support, ‖MvPolynomial.coeff e P‖ * ∏ i, ‖x i‖ ^ e i := by simp only [norm_mul, norm_prod, norm_pow] _ ≤ ∑ e ∈ P.support, ‖MvPolynomial.coeff e P‖ * M := Finset.sum_le_sum fun e he => mul_le_mul_of_nonneg_left (hM e he) (norm_nonneg _) _ = _ := by rw [← Finset.sum_mul]; rfl def rational_polynomial_eval_norm_le_some_monomial {I : Type*} [Fintype I] (P : MvPolynomial I ℚ) (hP : P ≠ 0) (x : I → ℚ) : ∃ e ∈ P.support, ‖MvPolynomial.eval x P‖ ≤ polynomialCoeffL1 P * ∏ i, ‖x i‖ ^ e i := by classical obtain ⟨e, he, hmax⟩ := Finset.exists_max_image P.support (fun e => ∏ i, ‖x i‖ ^ e i) (MvPolynomial.support_nonempty.mpr hP) exact ⟨e, he, rational_polynomial_eval_norm_le P x _ hmax⟩ def integer_polynomial_eval₂_padicNorm_le {I : Type*} [Fintype I] (p : ℕ) [Fact p.Prime] (P : MvPolynomial I ℤ) (x : I → ℚ) (M : ℚ) (hM : 0 ≤ M) (hterms : ∀ e ∈ P.support, ∏ i, (padicNorm p (x i)) ^ e i ≤ M) : padicNorm p (MvPolynomial.eval₂ (Int.castRingHom ℚ) x P) ≤ M := by rw [MvPolynomial.eval₂_eq'] apply padicNorm.sum_le' _ hM intro e he rw [padicNorm.mul, padicNorm_finset_prod] simp_rw [padicNorm_nat_pow] calc _ ≤ 1 * (∏ i, (padicNorm p (x i)) ^ e i) := mul_le_mul_of_nonneg_right (padicNorm.of_int (MvPolynomial.coeff e P)) (Finset.prod_nonneg fun i _ => pow_nonneg (padicNorm.nonneg _) _) _ ≤ M := by simpa only [one_mul] using hterms e he def integer_polynomial_eval₂_padicNorm_le_some_monomial {I : Type*} [Fintype I] (p : ℕ) [Fact p.Prime] (P : MvPolynomial I ℤ) (hP : P ≠ 0) (x : I → ℚ) : ∃ e ∈ P.support, padicNorm p (MvPolynomial.eval₂ (Int.castRingHom ℚ) x P) ≤ ∏ i, (padicNorm p (x i)) ^ e i := by classical obtain ⟨e, he, hmax⟩ := Finset.exists_max_image P.support (fun e => ∏ i, (padicNorm p (x i)) ^ e i) (MvPolynomial.support_nonempty.mpr hP) exact ⟨e, he, integer_polynomial_eval₂_padicNorm_le p P x _ (Finset.prod_nonneg fun i _ => pow_nonneg (padicNorm.nonneg _) _) hmax⟩ end end Bounty end SubmissionComponent_LocalPolynomialEvaluation /- Component LocalDeterminantBounds; SHA256 2440a31b92033387b9f771d99f97f99fb1c2550374aac214f8bdae770bd3f5cf -/ section SubmissionComponent_LocalDeterminantBounds /- Rowwise determinant bounds at the real and finite places, including the omitted-row exponent for the actual signed cofactor normal. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def rational_det_norm_le_row_bounds {n : ℕ} (A : Matrix (Fin n) (Fin n) ℚ) (b : Fin n → ℝ) (hb : ∀ i, 0 ≤ b i) (hA : ∀ i j, ‖A i j‖ ≤ b i) : ‖A.det‖ ≤ (n.factorial : ℝ) * ∏ i, b i := by classical rw [Matrix.det_apply'] calc _ ≤ ∑ σ : Equiv.Perm (Fin n), ‖((Equiv.Perm.sign σ : ℤ) : ℚ) * ∏ i, A (σ i) i‖ := norm_sum_le _ _ _ ≤ ∑ _σ : Equiv.Perm (Fin n), ∏ i, b i := by apply Finset.sum_le_sum intro σ _ have hs : ‖((Equiv.Perm.sign σ : ℤ) : ℚ)‖ = 1 := by rcases Int.units_eq_one_or (Equiv.Perm.sign σ) with h | h <;> simp [h] rw [norm_mul, hs, one_mul, norm_prod, ← Equiv.prod_comp σ b] exact Finset.prod_le_prod (fun _ _ => norm_nonneg _) (fun i _ => hA (σ i) i) _ = _ := by simp [Fintype.card_perm] def padicNorm_sum_cast_le {I : Type*} (p : ℕ) [Fact p.Prime] (s : Finset I) (f : I → ℚ) (B : ℝ) (hB : 0 ≤ B) (hf : ∀ i ∈ s, (padicNorm p (f i) : ℝ) ≤ B) : (padicNorm p (∑ i ∈ s, f i) : ℝ) ≤ B := by classical induction s using Finset.induction_on with | empty => simpa using hB | @insert a s ha ih => rw [Finset.sum_insert ha] have hu : (padicNorm p (f a + ∑ i ∈ s, f i) : ℝ) ≤ max (padicNorm p (f a) : ℝ) (padicNorm p (∑ i ∈ s, f i) : ℝ) := by exact_mod_cast (padicNorm.nonarchimedean (p := p) (q := f a) (r := ∑ i ∈ s, f i)) exact hu.trans (max_le (hf a (Finset.mem_insert_self _ _)) (ih (fun i hi => hf i (Finset.mem_insert_of_mem hi)))) def rational_det_padicNorm_le_row_bounds {n : ℕ} (p : ℕ) [Fact p.Prime] (A : Matrix (Fin n) (Fin n) ℚ) (b : Fin n → ℝ) (hb : ∀ i, 0 ≤ b i) (hA : ∀ i j, (padicNorm p (A i j) : ℝ) ≤ b i) : (padicNorm p A.det : ℝ) ≤ ∏ i, b i := by classical rw [Matrix.det_apply'] apply padicNorm_sum_cast_le _ _ _ _ (Finset.prod_nonneg (fun i _ => hb i)) intro σ _ have hs : padicNorm p (((Equiv.Perm.sign σ : ℤ) : ℚ)) = 1 := by rcases Int.units_eq_one_or (Equiv.Perm.sign σ) with h | h <;> simp [h] rw [padicNorm.mul, hs, one_mul, padicNorm_finset_prod, Rat.cast_prod, ← Equiv.prod_comp σ b] exact Finset.prod_le_prod (fun i _ => by exact_mod_cast padicNorm.nonneg (A (σ i) i)) (fun i _ => hA (σ i) i) def cofactorNormal_norm_le {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) ℚ) (b : Fin (n + 1) → ℝ) (hb : ∀ i, 0 ≤ b i) (hX : ∀ i j, ‖X i j‖ ≤ b i) (i : Fin (n + 1)) : ‖cofactorNormal X i‖ ≤ (n.factorial : ℝ) * ∏ j : Fin n, b (i.succAbove j) := by simpa [cofactorNormal, norm_mul, norm_pow] using rational_det_norm_le_row_bounds (X.submatrix i.succAbove id) (fun j => b (i.succAbove j)) (fun j => hb _) (fun j k => hX _ _) def cofactorNormal_padicNorm_le {n : ℕ} (p : ℕ) [Fact p.Prime] (X : Matrix (Fin (n + 1)) (Fin n) ℚ) (b : Fin (n + 1) → ℝ) (hb : ∀ i, 0 ≤ b i) (hX : ∀ i j, (padicNorm p (X i j) : ℝ) ≤ b i) (i : Fin (n + 1)) : (padicNorm p (cofactorNormal X i) : ℝ) ≤ ∏ j : Fin n, b (i.succAbove j) := by simpa [cofactorNormal, padicNorm_nat_pow] using rational_det_padicNorm_le_row_bounds p (X.submatrix i.succAbove id) (fun j => b (i.succAbove j)) (fun j => hb _) (fun j k => hX _ _) def prod_exp_omit_coordinate {n : ℕ} (c : Fin (n + 1) → ℝ) (t : ℝ) (i : Fin (n + 1)) : (∏ j : Fin n, Real.exp (c (i.succAbove j) * t)) = Real.exp (((∑ j, c j) - c i) * t) := by rw [← Real.exp_sum, ← Finset.sum_mul] congr 2 have h := Fin.sum_univ_succAbove c i linarith def cofactorNormal_norm_le_exp {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) ℚ) (c : Fin (n + 1) → ℝ) (t : ℝ) (hX : ∀ i j, ‖X i j‖ ≤ Real.exp (c i * t)) (i : Fin (n + 1)) : ‖cofactorNormal X i‖ ≤ (n.factorial : ℝ) * Real.exp (((∑ j, c j) - c i) * t) := by simpa only [prod_exp_omit_coordinate] using cofactorNormal_norm_le X (fun i => Real.exp (c i * t)) (fun i => (Real.exp_pos _).le) hX i def cofactorNormal_padicNorm_le_exp {n : ℕ} (p : ℕ) [Fact p.Prime] (X : Matrix (Fin (n + 1)) (Fin n) ℚ) (c : Fin (n + 1) → ℝ) (t : ℝ) (hX : ∀ i j, (padicNorm p (X i j) : ℝ) ≤ Real.exp (c i * t)) (i : Fin (n + 1)) : (padicNorm p (cofactorNormal X i) : ℝ) ≤ Real.exp (((∑ j, c j) - c i) * t) := by simpa only [prod_exp_omit_coordinate] using cofactorNormal_padicNorm_le p X (fun i => Real.exp (c i * t)) (fun i => (Real.exp_pos _).le) hX i end end Bounty end SubmissionComponent_LocalDeterminantBounds /- Component CompoundMatrixBounds; SHA256 6ba8c99fef16eddca4dbfa1712aa33ff10cfbaf2034e963d39443261a4c3e879 -/ section SubmissionComponent_CompoundMatrixBounds /- Actual archimedean and finite-place bounds for compound entries. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def product_min_le_min_product {I : Type*} [Fintype I] (a b : I → ℝ) (ha : ∀ i, 0 ≤ a i) (hb : ∀ i, 0 ≤ b i) : (∏ i, min (a i) (b i)) ≤ min (∏ i, a i) (∏ i, b i) := by apply le_min · exact Finset.prod_le_prod (fun i _ => le_min (ha i) (hb i)) (fun i _ => min_le_left _ _) · exact Finset.prod_le_prod (fun i _ => le_min (ha i) (hb i)) (fun i _ => min_le_right _ _) def rational_det_norm_le_permutation_bound {n : ℕ} (A : Matrix (Fin n) (Fin n) ℚ) (B : ℝ) (hA : ∀ σ : Equiv.Perm (Fin n), (∏ i, ‖A (σ i) i‖) ≤ B) : ‖A.det‖ ≤ (n.factorial : ℝ) * B := by classical rw [Matrix.det_apply'] calc _ ≤ ∑ σ : Equiv.Perm (Fin n), ‖((Equiv.Perm.sign σ : ℤ) : ℚ) * ∏ i, A (σ i) i‖ := norm_sum_le _ _ _ ≤ ∑ _σ : Equiv.Perm (Fin n), B := by apply Finset.sum_le_sum intro σ _ have hs : ‖((Equiv.Perm.sign σ : ℤ) : ℚ)‖ = 1 := by rcases Int.units_eq_one_or (Equiv.Perm.sign σ) with h | h <;> simp [h] simpa only [norm_mul, hs, one_mul, norm_prod] using hA σ _ = _ := by simp [Fintype.card_perm] def rational_det_norm_le_row_column_min {n : ℕ} (A : Matrix (Fin n) (Fin n) ℚ) (K : ℝ) (b r c : Fin n → ℝ) (hK : 0 ≤ K) (hb : ∀ i, 0 ≤ b i) (hr : ∀ i, 0 ≤ r i) (hc : ∀ i, 0 ≤ c i) (hA : ∀ i j, ‖A i j‖ ≤ K * b i * min (r i) (c j)) : ‖A.det‖ ≤ (n.factorial : ℝ) * K ^ n * (∏ i, b i) * min (∏ i, r i) (∏ i, c i) := by have hh := rational_det_norm_le_permutation_bound A (K ^ n * (∏ i, b i) * min (∏ i, r i) (∏ i, c i)) (by intro σ calc _ ≤ ∏ i, K * b (σ i) * min (r (σ i)) (c i) := Finset.prod_le_prod (fun i _ => norm_nonneg _) (fun i _ => hA (σ i) i) _ = K ^ n * (∏ i, b i) * (∏ i, min (r (σ i)) (c i)) := by rw [Finset.prod_mul_distrib, Finset.prod_mul_distrib, Finset.prod_const] simp only [Finset.card_univ, Fintype.card_fin, Equiv.prod_comp] _ ≤ _ := by apply mul_le_mul_of_nonneg_left _ (mul_nonneg (pow_nonneg hK _) (Finset.prod_nonneg (fun i _ => hb i))) simpa only [Equiv.prod_comp] using product_min_le_min_product (fun i => r (σ i)) c (fun i => hr _) hc) simpa only [mul_assoc] using hh def compoundCoordinateProduct {d ell : ℕ} (b : Fin d → ℝ) (s : CompoundIndex d ell) : ℝ := ∏ i : Fin ell, b (compoundIndexEmbedding s i) def compoundCoordinateProduct_nonneg {d ell : ℕ} (b : Fin d → ℝ) (hb : ∀ i, 0 ≤ b i) (s : CompoundIndex d ell) : 0 ≤ compoundCoordinateProduct b s := Finset.prod_nonneg (fun _ _ => hb _) def compoundCoordinateProduct_pos {d ell : ℕ} (b : Fin d → ℝ) (hb : ∀ i, 0 < b i) (s : CompoundIndex d ell) : 0 < compoundCoordinateProduct b s := Finset.prod_pos (fun _ _ => hb _) def compoundMatrix_norm_le_min {d ell : ℕ} (M : Matrix (Fin d) (Fin d) ℚ) (K : ℝ) (b r c : Fin d → ℝ) (hK : 0 ≤ K) (hb : ∀ i, 0 ≤ b i) (hr : ∀ i, 0 ≤ r i) (hc : ∀ i, 0 ≤ c i) (hM : ∀ i j, ‖M i j‖ ≤ K * b i * min (r i) (c j)) (s t : CompoundIndex d ell) : ‖compoundMatrix ell M s t‖ ≤ (ell.factorial : ℝ) * K ^ ell * compoundCoordinateProduct b s * min (compoundCoordinateProduct r s) (compoundCoordinateProduct c t) := by rw [compoundMatrix_apply] exact rational_det_norm_le_row_column_min _ K (fun i => b (compoundIndexEmbedding s i)) (fun i => r (compoundIndexEmbedding s i)) (fun j => c (compoundIndexEmbedding t j)) hK (fun _ => hb _) (fun _ => hr _) (fun _ => hc _) (fun _ _ => hM _ _) def compoundMatrix_padicNorm_le {d ell : ℕ} (p : ℕ) [Fact p.Prime] (M : Matrix (Fin d) (Fin d) ℚ) (b : Fin d → ℝ) (hb : ∀ i, 0 ≤ b i) (hM : ∀ i j, (padicNorm p (M i j) : ℝ) ≤ b i) (s t : CompoundIndex d ell) : (padicNorm p (compoundMatrix ell M s t) : ℝ) ≤ compoundCoordinateProduct b s := by rw [compoundMatrix_apply] exact rational_det_padicNorm_le_row_bounds p _ (fun i => b (compoundIndexEmbedding s i)) (fun _ => hb _) (fun _ _ => hM _ _) def compoundMatrix_davenport_bound {d ell : ℕ} (M : Matrix (Fin d) (Fin d) ℚ) (p : Equiv.Perm (Fin d)) (K : ℝ) (b lam : Fin d → ℝ) (hK : 0 ≤ K) (hb : ∀ i, 0 ≤ b i) (hlam : ∀ i, 0 ≤ lam i) (hM : ∀ i j, ‖M (p i) j‖ ≤ K * b (p i) * min (lam i) (lam j)) (s t : CompoundIndex d ell) : ‖compoundMatrix ell M s t‖ ≤ (ell.factorial : ℝ) * K ^ ell * compoundCoordinateProduct b s * min (compoundCoordinateProduct (lam ∘ p.symm) s) (compoundCoordinateProduct lam t) := by apply compoundMatrix_norm_le_min M K b (lam ∘ p.symm) lam hK hb (fun _ => hlam _) hlam intro i j simpa only [p.apply_symm_apply, Function.comp_apply] using hM (p.symm i) j end end Bounty end SubmissionComponent_CompoundMatrixBounds /- Component FiniteExponentProfiles; SHA256 4809703dd70bbb7a13f0da999b455eeecf4e348962d738cdc9c0824e623a11fd -/ section SubmissionComponent_FiniteExponentProfiles /- A finite partition by coordinatewise upper mesh rounding, preserving nonpositive coordinates and half of a negative total exponent margin. -/ namespace Bounty noncomputable section open scoped BigOperators def exponentProfileMesh (I : Type*) [Fintype I] (ρ : ℝ) : ℝ := ρ / (2 * Fintype.card I) def upperMeshProfile {I : Type*} (δ : ℝ) (a : I → ℝ) (i : I) : ℝ := δ * (Int.ceil (a i / δ) : ℝ) def exponentProfileMesh_pos (I : Type*) [Fintype I] [Nonempty I] (ρ : ℝ) (hρ : 0 < ρ) : 0 < exponentProfileMesh I ρ := by unfold exponentProfileMesh exact div_pos hρ (mul_pos (by norm_num) (by exact_mod_cast Fintype.card_pos)) def upperMeshProfile_bounds {I : Type*} (δ : ℝ) (hδ : 0 < δ) (a : I → ℝ) (i : I) : a i ≤ upperMeshProfile δ a i ∧ upperMeshProfile δ a i < a i + δ := by have heq : δ * (a i / δ) = a i := by field_simp constructor · have hh := mul_le_mul_of_nonneg_left (Int.le_ceil (a i / δ)) hδ.le simpa only [heq, upperMeshProfile] using hh · have hh := mul_lt_mul_of_pos_left (Int.ceil_lt_add_one (a i / δ)) hδ simpa only [mul_add, heq, mul_one, upperMeshProfile] using hh def upperMeshProfile_nonpos {I : Type*} (δ : ℝ) (hδ : 0 < δ) (a : I → ℝ) (i : I) (ha : a i ≤ 0) : upperMeshProfile δ a i ≤ 0 := by have hh : Int.ceil (a i / δ) ≤ 0 := Int.ceil_nonpos.mpr (div_nonpos_of_nonpos_of_nonneg ha hδ.le) exact mul_nonpos_of_nonneg_of_nonpos hδ.le (by exact_mod_cast hh) def upperMeshProfile_abs_le {I : Type*} (δ : ℝ) (hδ : 0 < δ) (M : ℝ) (a : I → ℝ) (ha : ∀ i, |a i| ≤ M) (i : I) : |upperMeshProfile δ a i| ≤ M + δ := by obtain ⟨hlo, hhi⟩ := upperMeshProfile_bounds δ hδ a i obtain ⟨hal, har⟩ := abs_le.mp (ha i) exact abs_le.mpr ⟨by linarith, by linarith⟩ def upperMeshProfile_sum_le_half {I : Type*} [Fintype I] [Nonempty I] (ρ : ℝ) (hρ : 0 < ρ) (a : I → ℝ) (ha : ∑ i, a i ≤ -ρ) : ∑ i, upperMeshProfile (exponentProfileMesh I ρ) a i ≤ -ρ / 2 := by have hδ := exponentProfileMesh_pos I ρ hρ have hs : (∑ i, upperMeshProfile (exponentProfileMesh I ρ) a i) ≤ ∑ i, (a i + exponentProfileMesh I ρ) := Finset.sum_le_sum (fun i _ => (upperMeshProfile_bounds _ hδ a i).2.le) have hn : (Fintype.card I : ℝ) ≠ 0 := by exact_mod_cast Fintype.card_pos.ne' have hmass : (Fintype.card I : ℝ) * exponentProfileMesh I ρ = ρ / 2 := by unfold exponentProfileMesh field_simp simp only [Finset.sum_add_distrib, Finset.sum_const, Finset.card_univ, nsmul_eq_mul, hmass] at hs linarith /-- The integer tuples in this explicit box enumerate all possible rounded profiles for coordinates in `[-M,M]`. -/ def exponentProfileIntegerBox (I : Type*) [Fintype I] (M δ : ℝ) : Finset (I → ℤ) := by classical exact Fintype.piFinset (fun _ => Finset.Icc (Int.ceil (-M / δ)) (Int.ceil (M / δ))) def exponentProfiles (I : Type*) [Fintype I] (M ρ : ℝ) : Finset (I → ℝ) := by classical let δ := exponentProfileMesh I ρ exact ((exponentProfileIntegerBox I M δ).image (fun v i => δ * (v i : ℝ))).filter (fun c => (∀ i, |c i| ≤ M + δ) ∧ ∑ i, c i ≤ -ρ / 2) def exponentProfiles_properties {I : Type*} [Fintype I] (M ρ : ℝ) (c : I → ℝ) (hc : c ∈ exponentProfiles I M ρ) : (∀ i, |c i| ≤ M + ρ / (2 * Fintype.card I)) ∧ ∑ i, c i ≤ -ρ / 2 := by classical exact (Finset.mem_filter.mp hc).2 def upperMeshProfile_mem_exponentProfiles {I : Type*} [Fintype I] [Nonempty I] (M ρ : ℝ) (hρ : 0 < ρ) (a : I → ℝ) (hab : ∀ i, |a i| ≤ M) (has : ∑ i, a i ≤ -ρ) : upperMeshProfile (exponentProfileMesh I ρ) a ∈ exponentProfiles I M ρ := by classical have hδ := exponentProfileMesh_pos I ρ hρ apply Finset.mem_filter.mpr constructor · apply Finset.mem_image.mpr refine ⟨fun i => Int.ceil (a i / exponentProfileMesh I ρ), ?_, rfl⟩ apply Fintype.mem_piFinset.mpr intro i obtain ⟨hlo, hhi⟩ := abs_le.mp (hab i) exact Finset.mem_Icc.mpr ⟨Int.ceil_mono (div_le_div_of_nonneg_right hlo hδ.le), Int.ceil_mono (div_le_div_of_nonneg_right hhi hδ.le)⟩ · exact ⟨upperMeshProfile_abs_le _ hδ M a hab, upperMeshProfile_sum_le_half ρ hρ a has⟩ /-- Every bounded exponent tuple of total at most `-ρ` is dominated by one member of an actual finite family. All members have the stated size and negative-sum bounds, and the selected member preserves every nonpositive coordinate of the input. -/ def exists_finite_exponent_profiles (I : Type*) [Fintype I] [Nonempty I] (M ρ : ℝ) (hρ : 0 < ρ) : ∃ C : Finset (I → ℝ), (∀ c ∈ C, (∀ i, |c i| ≤ M + ρ / (2 * Fintype.card I)) ∧ ∑ i, c i ≤ -ρ / 2) ∧ ∀ a : I → ℝ, (∀ i, |a i| ≤ M) → (∑ i, a i ≤ -ρ) → ∃ c ∈ C, (∀ i, a i ≤ c i) ∧ (∀ i, a i ≤ 0 → c i ≤ 0) := by refine ⟨exponentProfiles I M ρ, fun c hc => exponentProfiles_properties M ρ c hc, ?_⟩ intro a hab has have hδ := exponentProfileMesh_pos I ρ hρ exact ⟨upperMeshProfile (exponentProfileMesh I ρ) a, upperMeshProfile_mem_exponentProfiles M ρ hρ a hab has, fun i => (upperMeshProfile_bounds _ hδ a i).1, fun i hi => upperMeshProfile_nonpos _ hδ a i hi⟩ /-- All members can be required to be nonpositive on a designated set of coordinates, while still covering every input with those signs. -/ def exists_finite_exponent_profiles_nonpos_on (I : Type*) [Fintype I] [Nonempty I] (S : Set I) (M ρ : ℝ) (hρ : 0 < ρ) : ∃ C : Finset (I → ℝ), (∀ c ∈ C, (∀ i, |c i| ≤ M + ρ / (2 * Fintype.card I)) ∧ (∑ i, c i ≤ -ρ / 2) ∧ (∀ i ∈ S, c i ≤ 0)) ∧ ∀ a : I → ℝ, (∀ i, |a i| ≤ M) → (∑ i, a i ≤ -ρ) → (∀ i ∈ S, a i ≤ 0) → ∃ c ∈ C, (∀ i, a i ≤ c i) ∧ (∀ i, a i ≤ 0 → c i ≤ 0) := by classical obtain ⟨C, hC, hcover⟩ := exists_finite_exponent_profiles I M ρ hρ refine ⟨C.filter (fun c => ∀ i ∈ S, c i ≤ 0), ?_, ?_⟩ · intro c hc obtain ⟨hc, hs⟩ := Finset.mem_filter.mp hc exact ⟨(hC c hc).1, (hC c hc).2, hs⟩ · intro a hab has haS obtain ⟨c, hc, hle, hsign⟩ := hcover a hab has exact ⟨c, Finset.mem_filter.mpr ⟨hc, fun i hi => hsign i (haS i hi)⟩, hle, hsign⟩ end end Bounty end SubmissionComponent_FiniteExponentProfiles /- Component ProductExponentProfiles; SHA256 4d87cc5f3e8e374f359cd4d824443a00f3f23ba330b117abe283fec03860c85d -/ section SubmissionComponent_ProductExponentProfiles /- A small product of positive local values is covered by finitely many fixed profiles. -/ namespace Bounty noncomputable section open scoped BigOperators def normalized_log_profile_bounds {I : Type*} [Fintype I] (f : I → ℝ) (q M ρ : ℝ) (hq : 0 < q) (hlo : ∀ i, Real.exp (-M * q) ≤ f i) (hhi : ∀ i, f i ≤ Real.exp (M * q)) (hprod : ∏ i, f i ≤ Real.exp (-ρ * q)) : (∀ i, |Real.log (f i) / q| ≤ M) ∧ (∑ i, Real.log (f i) / q) ≤ -ρ := by have hpos : ∀ i, 0 < f i := fun i => (Real.exp_pos _).trans_le (hlo i) constructor · intro i apply abs_le.mpr constructor · apply (le_div_iff₀ hq).mpr exact (Real.le_log_iff_exp_le (hpos i)).mpr (hlo i) · apply (div_le_iff₀ hq).mpr exact (Real.log_le_iff_le_exp (hpos i)).mpr (hhi i) · rw [← Finset.sum_div] apply (div_le_iff₀ hq).mpr rw [← Real.log_prod (fun i _ => (hpos i).ne')] exact (Real.log_le_iff_le_exp (Finset.prod_pos (fun i _ => hpos i))).mpr hprod def exists_finite_product_profiles (I : Type*) [Fintype I] [Nonempty I] (S : Set I) (M ρ : ℝ) (hρ : 0 < ρ) : ∃ C : Finset (I → ℝ), (∀ c ∈ C, (∀ i, |c i| ≤ M + ρ / (2 * Fintype.card I)) ∧ (∑ i, c i ≤ -ρ / 2) ∧ (∀ i ∈ S, c i ≤ 0)) ∧ ∀ (q : ℝ) (f : I → ℝ), 0 < q → (∀ i, Real.exp (-M * q) ≤ f i) → (∀ i, f i ≤ Real.exp (M * q)) → (∏ i, f i ≤ Real.exp (-ρ * q)) → (∀ i ∈ S, f i ≤ 1) → ∃ c ∈ C, ∀ i, f i ≤ Real.exp (c i * q) := by obtain ⟨C, hC, hcover⟩ := exists_finite_exponent_profiles_nonpos_on I S M ρ hρ refine ⟨C, hC, ?_⟩ intro q f hq hlo hhi hprod hsign have hpos : ∀ i, 0 < f i := fun i => (Real.exp_pos _).trans_le (hlo i) obtain ⟨hab, has⟩ := normalized_log_profile_bounds f q M ρ hq hlo hhi hprod obtain ⟨c, hc, hle, _⟩ := hcover (fun i => Real.log (f i) / q) hab has (by intro i hi apply div_nonpos_of_nonpos_of_nonneg _ hq.le exact Real.log_nonpos (hpos i).le (hsign i hi)) refine ⟨c, hc, fun i => ?_⟩ apply (Real.log_le_iff_le_exp (hpos i)).mp exact (div_le_iff₀ hq).mp (hle i) def exists_finite_three_place_product_profiles (d : ℕ) (hd : 0 < d) (M ρ : ℝ) (hρ : 0 < ρ) : ∃ C : Finset (Fin 3 → Fin d → ℝ), (∀ c ∈ C, (∀ v i, |c v i| ≤ M + ρ / (6 * d)) ∧ (∑ v, ∑ i, c v i) ≤ -ρ / 2 ∧ (∀ v i, v ≠ 0 → c v i ≤ 0)) ∧ ∀ (q : ℝ) (f : Fin 3 → Fin d → ℝ), 0 < q → (∀ v i, Real.exp (-M * q) ≤ f v i) → (∀ v i, f v i ≤ Real.exp (M * q)) → (∏ v, ∏ i, f v i) ≤ Real.exp (-ρ * q) → (∀ v i, v ≠ 0 → f v i ≤ 1) → ∃ c ∈ C, ∀ v i, f v i ≤ Real.exp (c v i * q) := by classical let : NeZero d := ⟨hd.ne'⟩ obtain ⟨C, hC, hcover⟩ := exists_finite_product_profiles (Fin 3 × Fin d) {i | i.1 ≠ 0} M ρ hρ refine ⟨C.image Function.curry, ?_, ?_⟩ · intro c hc obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hc obtain ⟨hab, has, hsign⟩ := hC a ha refine ⟨?_, ?_, ?_⟩ · intro v i convert hab (v, i) using 1 <;> simp [Function.curry, Fintype.card_prod, Nat.cast_mul] ring · simpa only [Fintype.sum_prod_type, Function.curry] using has · intro v i hv exact hsign (v, i) hv · intro q f hq hlo hhi hprod hsign obtain ⟨c, hc, hbound⟩ := hcover q (Function.uncurry f) hq (fun i => hlo i.1 i.2) (fun i => hhi i.1 i.2) (by simpa only [Fintype.prod_prod_type, Function.uncurry] using hprod) (fun i hi => hsign i.1 i.2 hi) exact ⟨Function.curry c, Finset.mem_image.mpr ⟨c, hc, rfl⟩, fun v i => hbound (v, i)⟩ end end Bounty end SubmissionComponent_ProductExponentProfiles /- Component CompoundBoxProfiles; SHA256 b3037859c962e75c896700972a36e8b9d055f44f351dd59197ed8eeb61855545 -/ section SubmissionComponent_CompoundBoxProfiles /- Actual clipped compound boxes and their logarithmic three-place profiles. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def compoundLocalWidths {d ell : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (tau : ℝ) : Fin 3 → CompoundIndex d ell → ℝ := ![fun s => (ell.factorial : ℝ) * K ^ ell * compoundCoordinateProduct (b 0) s * min (compoundCoordinateProduct (lam ∘ p.symm) s) tau, compoundCoordinateProduct (b 1), compoundCoordinateProduct (b 2)] def compoundLogProfile {d ell : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (tau q : ℝ) : Fin 3 → CompoundIndex d ell → ℝ := fun v s => Real.log (compoundLocalWidths K b lam p tau v s) / q def compoundLocalWidths_pos {d ell : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (tau : ℝ) (hK : 0 < K) (hb : ∀ v i, 0 < b v i) (hlam : ∀ i, 0 < lam i) (htau : 0 < tau) (v : Fin 3) (s : CompoundIndex d ell) : 0 < compoundLocalWidths K b lam p tau v s := by fin_cases v · change 0 < (ell.factorial : ℝ) * K ^ ell * compoundCoordinateProduct (b 0) s * min (compoundCoordinateProduct (lam ∘ p.symm) s) tau exact mul_pos (mul_pos (mul_pos (by exact_mod_cast Nat.factorial_pos ell) (pow_pos hK _)) (compoundCoordinateProduct_pos _ (hb 0) s)) (lt_min (compoundCoordinateProduct_pos _ (fun i => hlam _) s) htau) · exact compoundCoordinateProduct_pos _ (hb 1) s · exact compoundCoordinateProduct_pos _ (hb 2) s def exp_compoundLogProfile {d ell : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (tau q : ℝ) (hK : 0 < K) (hb : ∀ v i, 0 < b v i) (hlam : ∀ i, 0 < lam i) (htau : 0 < tau) (hq : q ≠ 0) (v : Fin 3) (s : CompoundIndex d ell) : Real.exp (compoundLogProfile K b lam p tau q v s * q) = compoundLocalWidths K b lam p tau v s := by rw [compoundLogProfile, div_mul_cancel₀ _ hq, Real.exp_log (compoundLocalWidths_pos K b lam p tau hK hb hlam htau v s)] def compoundMatrix_clipped_local_bounds {d ell : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (H : Matrix (Fin d) (Fin d) ℤ) (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (tau : ℝ) (hK : 0 ≤ K) (hb : ∀ v i, 0 ≤ b v i) (hlam : ∀ i, 0 ≤ lam i) (hInf : ∀ i j, ‖(A * H.map (Int.castRingHom ℚ)) (p i) j‖ ≤ K * b 0 (p i) * min (lam i) (lam j)) (hTwo : ∀ i j, (padicNorm 2 (H i j : ℚ) : ℝ) ≤ b 1 i) (hThree : ∀ i j, (padicNorm 3 (H i j : ℚ) : ℝ) ≤ b 2 i) (t : CompoundIndex d ell) (ht : compoundCoordinateProduct lam t ≤ tau) : (∀ s, ‖(compoundMatrix ell A * (compoundMatrix ell H).map (Int.castRingHom ℚ)) s t‖ ≤ compoundLocalWidths K b lam p tau 0 s) ∧ (∀ s, (padicNorm 2 ((compoundMatrix ell H s t : ℤ) : ℚ) : ℝ) ≤ compoundLocalWidths K b lam p tau 1 s) ∧ (∀ s, (padicNorm 3 ((compoundMatrix ell H s t : ℤ) : ℚ) : ℝ) ≤ compoundLocalWidths K b lam p tau 2 s) := by have hmap : compoundMatrix ell (H.map (Int.castRingHom ℚ)) = (compoundMatrix ell H).map (Int.castRingHom ℚ) := compoundMatrix_map (Int.castRingHom ℚ) ell H constructor · intro s rw [← hmap, ← compoundMatrix_mul] apply (compoundMatrix_davenport_bound _ p K (b 0) lam hK (hb 0) hlam hInf s t).trans apply mul_le_mul_of_nonneg_left (min_le_min_left _ ht) exact mul_nonneg (mul_nonneg (by exact_mod_cast Nat.factorial_pos ell |>.le) (pow_nonneg hK _)) (compoundCoordinateProduct_nonneg _ (hb 0) s) · constructor · intro s have hh := compoundMatrix_padicNorm_le 2 (H.map (Int.castRingHom ℚ)) (b 1) (hb 1) hTwo s t rw [hmap] at hh change (padicNorm 2 ((compoundMatrix ell H s t : ℤ) : ℚ) : ℝ) ≤ compoundCoordinateProduct (b 1) s exact hh · intro s have hh := compoundMatrix_padicNorm_le 3 (H.map (Int.castRingHom ℚ)) (b 2) (hb 2) hThree s t rw [hmap] at hh change (padicNorm 3 ((compoundMatrix ell H s t : ℤ) : ℚ) : ℝ) ≤ compoundCoordinateProduct (b 2) s exact hh def compoundLogProfile_sum {d ell : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (tau q : ℝ) (hK : 0 < K) (hb : ∀ v i, 0 < b v i) (hlam : ∀ i, 0 < lam i) (htau : 0 < tau) : (∑ v, ∑ s : CompoundIndex d ell, compoundLogProfile K b lam p tau q v s) = Real.log (∏ v, ∏ s : CompoundIndex d ell, compoundLocalWidths K b lam p tau v s) / q := by simp only [compoundLogProfile, ← Finset.sum_div] congr 1 rw [Real.log_prod (fun v _ => (Finset.prod_pos (fun s _ => compoundLocalWidths_pos K b lam p tau hK hb hlam htau v s)).ne')] apply Finset.sum_congr rfl intro v _ exact (Real.log_prod (fun s _ => (compoundLocalWidths_pos K b lam p tau hK hb hlam htau v s).ne')).symm end end Bounty end SubmissionComponent_CompoundBoxProfiles /- Component ThreePlaceExactWidths; SHA256 d11b013ea9a03a431010fa87bfdd38cb850086277657b7615b7b588df0d70634 -/ section SubmissionComponent_ThreePlaceExactWidths /- Exact prime-power local widths, with no rounding loss in their product. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix open Module MeasureTheory def threePlaceExactWidths {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) : Fin 3 → Fin d → ℝ := ![threePlaceWidth c q, fun i => Real.exp (-(Nat.ceil (-(c 1 i * q) / Real.log 2) : ℝ) * Real.log 2), fun i => Real.exp (-(Nat.ceil (-(c 2 i * q) / Real.log 3) : ℝ) * Real.log 3)] def threePlaceExactWidths_zero {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (i : Fin d) : threePlaceExactWidths c q 0 i = threePlaceWidth c q i := rfl def threePlaceExactWidths_pos {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (v : Fin 3) (i : Fin d) : 0 < threePlaceExactWidths c q v i := by fin_cases v <;> exact Real.exp_pos _ def prime_power_width (p : ℕ) (hp : 0 < p) (n : ℕ) : Real.exp (-(n : ℝ) * Real.log p) = ((p : ℝ) ^ n)⁻¹ := by rw [neg_mul, Real.exp_neg, Real.exp_nat_mul, Real.exp_log (by exact_mod_cast hp)] def threePlaceExactWidths_finite_product {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (i : Fin d) : threePlaceExactWidths c q 1 i * threePlaceExactWidths c q 2 i = (threePlaceDiagonal c q i : ℝ)⁻¹ := by change Real.exp _ * Real.exp _ = _ have h2 := prime_power_width 2 (by norm_num) (Nat.ceil (-(c 1 i * q) / Real.log 2)) have h3 := prime_power_width 3 (by norm_num) (Nat.ceil (-(c 2 i * q) / Real.log 3)) norm_num only [Nat.cast_ofNat] at h2 h3 rw [h2, h3] simp only [threePlaceDiagonal, Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat, mul_inv_rev] ring def padicNorm_int_le_prime_power_width (p : ℕ) [Fact p.Prime] (n : ℕ) (x : ℤ) (hx : ((p ^ n : ℕ) : ℤ) ∣ x) : (padicNorm p (x : ℚ) : ℝ) ≤ Real.exp (-(n : ℝ) * Real.log p) := by rw [prime_power_width p (Fact.out : p.Prime).pos n] have hh := (padicNorm.dvd_iff_norm_le (p := p)).mp hx simp only [zpow_neg, zpow_natCast] at hh have hhR : (padicNorm p (x : ℚ) : ℝ) ≤ ((((p : ℚ) ^ n)⁻¹ : ℚ) : ℝ) := by exact_mod_cast hh simpa only [Rat.cast_inv, Rat.cast_pow, Rat.cast_natCast] using hhR def threePlaceExactWidths_padic_bounds {d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : ℝ) (i : Fin d) (x : ℤ) (hx : (threePlaceDiagonal c q i : ℤ) ∣ x) : (padicNorm 2 (x : ℚ) : ℝ) ≤ threePlaceExactWidths c q 1 i ∧ (padicNorm 3 (x : ℚ) : ℝ) ≤ threePlaceExactWidths c q 2 i := by obtain ⟨h2, h3⟩ := (two_three_pow_dvd_int_iff _ _ x).mp hx exact ⟨padicNorm_int_le_prime_power_width 2 _ x h2, padicNorm_int_le_prime_power_width 3 _ x h3⟩ def prime_exact_width_exp_bounds (p : ℕ) (hp : 1 < p) (hp3 : p ≤ 3) {t M q : ℝ} (hM : 0 ≤ M) (hq : 1 ≤ q) (ht : |t| ≤ M) : Real.exp (-(M + Real.log 3) * q) ≤ Real.exp (-(Nat.ceil (-(t * q) / Real.log p) : ℝ) * Real.log p) ∧ Real.exp (-(Nat.ceil (-(t * q) / Real.log p) : ℝ) * Real.log p) ≤ Real.exp ((M + Real.log 3) * q) := by have hq0 : 0 ≤ q := le_trans (by norm_num) hq have hpl : 0 < Real.log (p : ℝ) := Real.log_pos (by exact_mod_cast hp) have h3 : 0 < Real.log (3 : ℝ) := Real.log_pos (by norm_num) have hcv : -(t * q) ≤ M * q := by have hh := mul_le_mul_of_nonneg_right ((neg_le_abs t).trans ht) hq0 linarith have hceil := Nat.ceil_mono (div_le_div_of_nonneg_right hcv hpl.le) have hceilR : (Nat.ceil (-(t * q) / Real.log p) : ℝ) ≤ Nat.ceil (M * q / Real.log p) := by exact_mod_cast hceil have hb := Nat.ceil_lt_add_one (div_nonneg (mul_nonneg hM hq0) hpl.le) have hm := mul_le_mul_of_nonneg_right (hceilR.trans hb.le) hpl.le rw [add_mul, div_mul_cancel₀ _ hpl.ne', one_mul] at hm have hpL : Real.log (p : ℝ) ≤ Real.log 3 := Real.log_le_log (by exact_mod_cast (by omega : 0 < p)) (by exact_mod_cast hp3) have h3q : Real.log (3 : ℝ) ≤ Real.log 3 * q := le_mul_of_one_le_right h3.le hq constructor · apply Real.exp_le_exp.mpr nlinarith · apply Real.exp_le_exp.mpr have hn : (0 : ℝ) ≤ Nat.ceil (-(t * q) / Real.log p) := Nat.cast_nonneg _ nlinarith def threePlaceExactWidths_exp_bounds {d : ℕ} (c : Fin 3 → Fin d → ℝ) {M q : ℝ} (hM : 0 ≤ M) (hq : 1 ≤ q) (hc : ∀ v i, |c v i| ≤ M) (v : Fin 3) (i : Fin d) : Real.exp (-(M + Real.log 3) * q) ≤ threePlaceExactWidths c q v i ∧ threePlaceExactWidths c q v i ≤ Real.exp ((M + Real.log 3) * q) := by have hq0 : 0 ≤ q := le_trans (by norm_num) hq have h3 : 0 ≤ Real.log (3 : ℝ) := (Real.log_pos (by norm_num)).le fin_cases v · constructor <;> apply Real.exp_le_exp.mpr · have hh := mul_le_mul_of_nonneg_right (abs_le.mp (hc 0 i)).1 hq0 have hh3 := mul_nonneg h3 hq0 nlinarith · have hh := mul_le_mul_of_nonneg_right (abs_le.mp (hc 0 i)).2 hq0 have hh3 := mul_nonneg h3 hq0 nlinarith · exact prime_exact_width_exp_bounds 2 (by norm_num) (by norm_num) hM hq (hc 1 i) · exact prime_exact_width_exp_bounds 3 (by norm_num) (by norm_num) hM hq (hc 2 i) end end Bounty end SubmissionComponent_ThreePlaceExactWidths /- Component CompoundMatrixDeterminant; SHA256 f8bc5f8dd604617b7f586aded752ccf2a26bcbe07ff372e8d01162051172411b -/ section SubmissionComponent_CompoundMatrixDeterminant /- Determinants of actual compound matrices. -/ namespace Bounty noncomputable section open scoped BigOperators def compoundIndexEmbedding_prod {R : Type*} [CommMonoid R] {d ell : ℕ} (s : CompoundIndex d ell) (D : Fin d → R) : (∏ j, D (compoundIndexEmbedding s j)) = ∏ i ∈ s.val, D i := by classical apply Finset.prod_bij (fun j _ => compoundIndexEmbedding s j) · intro j _ exact (Set.powersetCard.mem_range_ofFinEmbEquiv_symm_iff_mem s _).mp ⟨j, rfl⟩ · intro a _ b _ hab exact (compoundIndexEmbedding s).injective hab · intro b hb obtain ⟨j, hj⟩ := (Set.powersetCard.mem_range_ofFinEmbEquiv_symm_iff_mem s b).mpr hb exact ⟨j, Finset.mem_univ _, hj⟩ · intro _ _; rfl def compoundIndex_card_containing {d ell : ℕ} (hell : 1 ≤ ell) (i : Fin d) : ((Finset.univ : Finset (CompoundIndex d ell)).filter (fun s => i ∈ s.val)).card = (d - 1).choose (ell - 1) := by classical have himage : (((Finset.univ : Finset (CompoundIndex d ell)).filter (fun s => i ∈ s.val)).image Subtype.val) = (Finset.univ.powersetCard ell).filter (fun s : Finset (Fin d) => i ∈ s) := by ext s simp only [Finset.mem_image, Finset.mem_filter, Finset.mem_univ, true_and, Finset.mem_powersetCard, Finset.subset_univ] constructor · rintro ⟨t, hit, rfl⟩ exact ⟨t.prop, hit⟩ · rintro ⟨hs, his⟩ exact ⟨⟨s, hs⟩, his, rfl⟩ have hc := Finset.card_filter_powersetCard_subset ({i} : Finset (Fin d)) Finset.univ ell (Finset.subset_univ _) (by simpa using hell) rw [← Finset.card_image_of_injective _ Subtype.val_injective, himage] simpa only [Finset.singleton_subset_iff, Finset.card_univ, Fintype.card_fin, Finset.card_singleton] using hc def compoundIndex_prod {R : Type*} [CommMonoid R] {d ell : ℕ} (hell : 1 ≤ ell) (D : Fin d → R) : (∏ s : CompoundIndex d ell, ∏ j, D (compoundIndexEmbedding s j)) = (∏ i, D i) ^ ((d - 1).choose (ell - 1)) := by classical have hprod : (∏ s : CompoundIndex d ell, ∏ j, D (compoundIndexEmbedding s j)) = ∏ s : CompoundIndex d ell, ∏ i : Fin d, if i ∈ s.val then D i else 1 := by apply Finset.prod_congr rfl intro s _ rw [compoundIndexEmbedding_prod, Finset.prod_ite_mem_eq] rw [hprod] rw [Finset.prod_comm] simp_rw [← Finset.prod_filter, Finset.prod_const, compoundIndex_card_containing hell] rw [Finset.prod_pow] end end Bounty end SubmissionComponent_CompoundMatrixDeterminant /- Component CompoundIndexProducts; SHA256 77e18031c0a6a11547aa024ddd509054191fe6b61e36c61fe1861b59c90cae6c -/ section SubmissionComponent_CompoundIndexProducts /- Ordered compound-coordinate products and the exact loss from clipping one maximum. -/ namespace Bounty noncomputable section open scoped BigOperators def compoundIndexPerm {d : ℕ} (ell : ℕ) (p : Equiv.Perm (Fin d)) : Equiv.Perm (CompoundIndex d ell) where toFun := Set.powersetCard.map ell p.toEmbedding invFun := Set.powersetCard.map ell p.symm.toEmbedding left_inv s := by apply Subtype.ext ext i simp [Set.powersetCard.map] right_inv s := by apply Subtype.ext ext i simp [Set.powersetCard.map] def compoundCoordinateProduct_permute {d ell : ℕ} (p : Equiv.Perm (Fin d)) (b : Fin d → ℝ) (s : CompoundIndex d ell) : compoundCoordinateProduct b (compoundIndexPerm ell p s) = compoundCoordinateProduct (b ∘ p) s := by classical unfold compoundCoordinateProduct rw [compoundIndexEmbedding_prod, compoundIndexEmbedding_prod] change (∏ i ∈ s.val.map p.toEmbedding, b i) = ∏ i ∈ s.val, (b ∘ p) i rw [Finset.prod_map] rfl def compoundCoordinateProduct_prod {d ell : ℕ} (hell : 1 ≤ ell) (b : Fin d → ℝ) : (∏ s : CompoundIndex d ell, compoundCoordinateProduct b s) = (∏ i, b i) ^ ((d - 1).choose (ell - 1)) := compoundIndex_prod hell b def compoundCoordinateProduct_prod_permute {d ell : ℕ} (p : Equiv.Perm (Fin d)) (b : Fin d → ℝ) (f : ℝ → ℝ) : (∏ s : CompoundIndex d ell, f (compoundCoordinateProduct (b ∘ p) s)) = ∏ s : CompoundIndex d ell, f (compoundCoordinateProduct b s) := by simp_rw [← compoundCoordinateProduct_permute] exact Equiv.prod_comp (compoundIndexPerm ell p) (fun s : CompoundIndex d ell => f (compoundCoordinateProduct b s)) def compoundTailEmbedding (d k : ℕ) : Fin (d - k) ↪o Fin d := OrderEmbedding.ofStrictMono (fun j => ⟨k + j.val, by omega⟩) (by intro i j hij; exact Nat.add_lt_add_left hij k) def compoundTailIndex (d k : ℕ) : CompoundIndex d (d - k) := Set.powersetCard.ofFinEmbEquiv (compoundTailEmbedding d k) def compoundIndexEmbedding_tail (d k : ℕ) : compoundIndexEmbedding (compoundTailIndex d k) = compoundTailEmbedding d k := Set.powersetCard.ofFinEmbEquiv.symm_apply_apply _ def compoundIndex_mem_tail {d k : ℕ} (i : Fin d) : i ∈ (compoundTailIndex d k).val ↔ k ≤ i.val := by change i ∈ Set.powersetCard.ofFinEmbEquiv (compoundTailEmbedding d k) ↔ _ rw [Set.powersetCard.mem_ofFinEmbEquiv_iff_mem_range] constructor · rintro ⟨j, rfl⟩ exact Nat.le_add_right k _ · intro hi refine ⟨⟨i.val - k, by omega⟩, ?_⟩ apply Fin.ext change k + (i.val - k) = i.val omega def orderEmbedding_fin_upper {d ell : ℕ} (hell : ell ≤ d) (e : Fin ell ↪o Fin d) (i : Fin ell) : (e i).val ≤ d - ell + i.val := by cases ell with | zero => exact Fin.elim0 i | succ n => refine Fin.reverseInduction ?_ ?_ i · have h := (e (Fin.last n)).isLt simp only [Fin.val_last] omega · intro j ih have hs := e.strictMono j.castSucc_lt_succ change (e j.castSucc).val < (e j.succ).val at hs simp only [Fin.val_castSucc, Fin.val_succ] at ih ⊢ omega def orderEmbedding_fin_lower {d ell : ℕ} (hell : 0 < ell) (e : Fin ell ↪o Fin d) (i : Fin ell) : (e ⟨0, hell⟩).val + i.val ≤ (e i).val := by cases ell with | zero => omega | succ n => refine Fin.induction ?_ ?_ i · simp · intro j ih have hs := e.strictMono j.castSucc_lt_succ change (e j.castSucc).val < (e j.succ).val at hs simp only [Fin.val_castSucc, Fin.val_succ] at ih ⊢ omega def compoundIndex_first_lt_of_ne_tail {d k : ℕ} (hk : k < d) (s : CompoundIndex d (d - k)) (hs : s ≠ compoundTailIndex d k) : (compoundIndexEmbedding s ⟨0, by omega⟩).val < k := by by_contra hn apply hs apply Set.powersetCard.ofFinEmbEquiv.symm.injective change compoundIndexEmbedding s = compoundIndexEmbedding (compoundTailIndex d k) rw [compoundIndexEmbedding_tail] ext j have hu := orderEmbedding_fin_upper (Nat.sub_le d k) (compoundIndexEmbedding s) j have hl := orderEmbedding_fin_lower (Nat.sub_pos_of_lt hk) (compoundIndexEmbedding s) j change (compoundIndexEmbedding s j).val = k + j.val omega def compoundGapRatio {d k : ℕ} (lam : Fin d → ℝ) (hk : k < d) : ℝ := lam ⟨k, hk⟩ / lam ⟨k - 1, by omega⟩ def compoundClipLevel {d k : ℕ} (lam : Fin d → ℝ) (hk : k < d) : ℝ := compoundCoordinateProduct lam (compoundTailIndex d k) / compoundGapRatio lam hk def compoundGapRatio_pos {d k : ℕ} (lam : Fin d → ℝ) (hk : k < d) (hpos : ∀ i, 0 < lam i) : 0 < compoundGapRatio lam hk := div_pos (hpos _) (hpos _) def compoundGapRatio_one_le {d k : ℕ} (lam : Fin d → ℝ) (hk : k < d) (hpos : ∀ i, 0 < lam i) (hmono : Monotone lam) : 1 ≤ compoundGapRatio lam hk := by apply (le_div_iff₀ (hpos _)).mpr simpa only [one_mul] using hmono (show (⟨k - 1, by omega⟩ : Fin d) ≤ ⟨k, hk⟩ from by change k - 1 ≤ k; omega) def compoundClipLevel_pos {d k : ℕ} (lam : Fin d → ℝ) (hk : k < d) (hpos : ∀ i, 0 < lam i) : 0 < compoundClipLevel lam hk := div_pos (compoundCoordinateProduct_pos lam hpos _) (compoundGapRatio_pos lam hk hpos) def compoundClipLevel_le_tail {d k : ℕ} (lam : Fin d → ℝ) (hk : k < d) (hpos : ∀ i, 0 < lam i) (hmono : Monotone lam) : compoundClipLevel lam hk ≤ compoundCoordinateProduct lam (compoundTailIndex d k) := by exact div_le_self (compoundCoordinateProduct_pos lam hpos _).le (compoundGapRatio_one_le lam hk hpos hmono) def compoundCoordinateProduct_le_clip_of_ne_tail {d k : ℕ} (lam : Fin d → ℝ) (hkpos : 1 ≤ k) (hk : k < d) (hpos : ∀ i, 0 < lam i) (hmono : Monotone lam) (s : CompoundIndex d (d - k)) (hs : s ≠ compoundTailIndex d k) : compoundCoordinateProduct lam s ≤ compoundClipLevel lam hk := by classical let z : Fin (d - k) := ⟨0, by omega⟩ let tailRest : ℝ := ∏ j ∈ Finset.univ.erase z, lam (compoundTailEmbedding d k j) have htail : compoundCoordinateProduct lam (compoundTailIndex d k) = lam ⟨k, hk⟩ * tailRest := by unfold compoundCoordinateProduct rw [compoundIndexEmbedding_tail] exact (Finset.mul_prod_erase Finset.univ (fun j => lam (compoundTailEmbedding d k j)) (Finset.mem_univ z)).symm have hclip : compoundClipLevel lam hk = lam ⟨k - 1, by omega⟩ * tailRest := by rw [compoundClipLevel, htail, compoundGapRatio] field_simp [ne_of_gt (hpos ⟨k, hk⟩), ne_of_gt (hpos ⟨k - 1, by omega⟩)] rw [hclip] unfold compoundCoordinateProduct rw [← Finset.mul_prod_erase Finset.univ (fun j => lam (compoundIndexEmbedding s j)) (Finset.mem_univ z)] apply mul_le_mul · apply hmono have hfirst := compoundIndex_first_lt_of_ne_tail hk s hs change (compoundIndexEmbedding s z).val ≤ k - 1 change (compoundIndexEmbedding s z).val < k at hfirst omega · apply Finset.prod_le_prod (fun _ _ => (hpos _).le) intro j _ apply hmono have hu := orderEmbedding_fin_upper (Nat.sub_le d k) (compoundIndexEmbedding s) j change (compoundIndexEmbedding s j).val ≤ k + j.val omega · exact Finset.prod_nonneg (fun _ _ => (hpos _).le) · exact (hpos _).le /-- Clipping the unique large coordinate removes exactly the adjacent-minimum gap. -/ def compoundCoordinateProduct_clipped_prod {d k : ℕ} (lam : Fin d → ℝ) (hkpos : 1 ≤ k) (hk : k < d) (hpos : ∀ i, 0 < lam i) (hmono : Monotone lam) : (∏ s : CompoundIndex d (d - k), min (compoundCoordinateProduct lam s) (compoundClipLevel lam hk)) = (∏ i, lam i) ^ ((d - 1).choose (d - k - 1)) / compoundGapRatio lam hk := by classical let s₀ := compoundTailIndex d k have hrest : (∏ s ∈ Finset.univ.erase s₀, min (compoundCoordinateProduct lam s) (compoundClipLevel lam hk)) = ∏ s ∈ Finset.univ.erase s₀, compoundCoordinateProduct lam s := by apply Finset.prod_congr rfl intro s hs exact min_eq_left (compoundCoordinateProduct_le_clip_of_ne_tail lam hkpos hk hpos hmono s (Finset.mem_erase.mp hs).1) calc _ = compoundClipLevel lam hk * ∏ s ∈ Finset.univ.erase s₀, compoundCoordinateProduct lam s := by rw [← Finset.mul_prod_erase Finset.univ (fun s => min (compoundCoordinateProduct lam s) (compoundClipLevel lam hk)) (Finset.mem_univ s₀), hrest, min_eq_right (compoundClipLevel_le_tail lam hk hpos hmono)] _ = (∏ s : CompoundIndex d (d - k), compoundCoordinateProduct lam s) / compoundGapRatio lam hk := by rw [← Finset.mul_prod_erase Finset.univ (compoundCoordinateProduct lam) (Finset.mem_univ s₀)] unfold compoundClipLevel ring _ = _ := by rw [compoundCoordinateProduct_prod (by omega)] def compoundCoordinateProduct_clipped_prod_permute {d k : ℕ} (p : Equiv.Perm (Fin d)) (lam : Fin d → ℝ) (hkpos : 1 ≤ k) (hk : k < d) (hpos : ∀ i, 0 < lam i) (hmono : Monotone lam) : (∏ s : CompoundIndex d (d - k), min (compoundCoordinateProduct (lam ∘ p.symm) s) (compoundClipLevel lam hk)) = (∏ i, lam i) ^ ((d - 1).choose (d - k - 1)) / compoundGapRatio lam hk := by rw [compoundCoordinateProduct_prod_permute p.symm lam (fun a => min a (compoundClipLevel lam hk))] exact compoundCoordinateProduct_clipped_prod lam hkpos hk hpos hmono end end Bounty end SubmissionComponent_CompoundIndexProducts /- Component CompoundProfileBounds; SHA256 7f16e28bac4cac780d37a448ff5fe3efd79c023447ae3d2b82696172b06f2f26 -/ section SubmissionComponent_CompoundProfileBounds /- Uniform bounds for actual clipped compound logarithmic profiles. -/ namespace Bounty noncomputable section open scoped BigOperators def abs_log_le_of_exp_bounds {x M q : ℝ} (hlo : Real.exp (-M * q) ≤ x) (hhi : x ≤ Real.exp (M * q)) : |Real.log x| ≤ M * q := by have hx := (Real.exp_pos _).trans_le hlo exact abs_le.mpr ⟨(Real.le_log_iff_exp_le hx).mpr (by simpa only [neg_mul] using hlo), (Real.log_le_iff_le_exp hx).mpr hhi⟩ def abs_sub_le_abs_add_abs_local (a b : ℝ) : |a - b| ≤ |a| + |b| := by simpa only [sub_zero, zero_sub, abs_neg] using abs_sub_le a 0 b def compoundCoordinateProduct_log_bound {d ell : ℕ} (b : Fin d → ℝ) (hpos : ∀ i, 0 < b i) {C : ℝ} (hb : ∀ i, |Real.log (b i)| ≤ C) (s : CompoundIndex d ell) : |Real.log (compoundCoordinateProduct b s)| ≤ ell * C := by rw [compoundCoordinateProduct, Real.log_prod (fun i _ => (hpos _).ne')] calc _ ≤ ∑ i : Fin ell, |Real.log (b (compoundIndexEmbedding s i))| := Finset.abs_sum_le_sum_abs _ _ _ ≤ ∑ _i : Fin ell, C := Finset.sum_le_sum (fun i _ => hb _) _ = _ := by simp def compoundClipLevel_log_bound {d k : ℕ} (lam : Fin d → ℝ) (hk : k < d) (hpos : ∀ i, 0 < lam i) {L q : ℝ} (hlam : ∀ i, |Real.log (lam i)| ≤ L * q) : |Real.log (compoundClipLevel lam hk)| ≤ ((d - k : ℕ) + 2 : ℝ) * L * q := by rw [compoundClipLevel, Real.log_div (compoundCoordinateProduct_pos lam hpos _).ne' (compoundGapRatio_pos lam hk hpos).ne', compoundGapRatio, Real.log_div (hpos _).ne' (hpos _).ne'] calc _ ≤ |Real.log (compoundCoordinateProduct lam (compoundTailIndex d k))| + |Real.log (lam ⟨k, hk⟩) - Real.log (lam ⟨k - 1, by omega⟩)| := abs_sub_le_abs_add_abs_local _ _ _ ≤ |Real.log (compoundCoordinateProduct lam (compoundTailIndex d k))| + (|Real.log (lam ⟨k, hk⟩)| + |Real.log (lam ⟨k - 1, by omega⟩)|) := add_le_add le_rfl (abs_sub_le_abs_add_abs_local _ _) _ ≤ ((d - k : ℕ) : ℝ) * (L * q) + (L * q + L * q) := add_le_add (compoundCoordinateProduct_log_bound lam hpos hlam _) (add_le_add (hlam _) (hlam _)) _ = _ := by ring def compoundLogProfile_clip_abs_bound {d k : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (hk : k < d) {B L q : ℝ} (hK : 0 < K) (hbpos : ∀ v i, 0 < b v i) (hlpos : ∀ i, 0 < lam i) (_hB : 0 ≤ B) (hL : 0 ≤ L) (hq : 1 ≤ q) (hb : ∀ v i, |Real.log (b v i)| ≤ B * q) (hl : ∀ i, |Real.log (lam i)| ≤ L * q) (v : Fin 3) (s : CompoundIndex d (d - k)) : |compoundLogProfile K b lam p (compoundClipLevel lam hk) q v s| ≤ |Real.log (((d - k).factorial : ℝ) * K ^ (d - k))| + (d - k : ℕ) * B + ((d - k : ℕ) + 2 : ℝ) * L := by have hq0 : 0 ≤ q := le_trans (by norm_num) hq have hqp : 0 < q := lt_of_lt_of_le (by norm_num) hq let C : ℝ := (d - k).factorial * K ^ (d - k) have hC : 0 < C := mul_pos (by exact_mod_cast Nat.factorial_pos (d - k)) (pow_pos hK _) have hLc : |Real.log C| ≤ |Real.log C| * q := le_mul_of_one_le_right (abs_nonneg _) hq have hLq : 0 ≤ L * q := mul_nonneg hL hq0 have hm : |Real.log (min (compoundCoordinateProduct (lam ∘ p.symm) s) (compoundClipLevel lam hk))| ≤ ((d - k : ℕ) + 2 : ℝ) * L * q := by by_cases h : compoundCoordinateProduct (lam ∘ p.symm) s ≤ compoundClipLevel lam hk · rw [min_eq_left h] apply (compoundCoordinateProduct_log_bound (lam ∘ p.symm) (fun i => hlpos _) (fun i => hl _) s).trans nlinarith · rw [min_eq_right (le_of_not_ge h)] exact compoundClipLevel_log_bound lam hk hlpos hl unfold compoundLogProfile rw [abs_div, abs_of_pos hqp] apply (div_le_iff₀ hqp).mpr fin_cases v · change |Real.log (C * compoundCoordinateProduct (b 0) s * min (compoundCoordinateProduct (lam ∘ p.symm) s) (compoundClipLevel lam hk))| ≤ _ have hminpos : 0 < min (compoundCoordinateProduct (lam ∘ p.symm) s) (compoundClipLevel lam hk) := lt_min (compoundCoordinateProduct_pos (lam ∘ p.symm) (fun i => hlpos (p.symm i)) s) (compoundClipLevel_pos lam hk hlpos) rw [Real.log_mul (mul_pos hC (compoundCoordinateProduct_pos _ (hbpos 0) s)).ne' hminpos.ne', Real.log_mul hC.ne' (compoundCoordinateProduct_pos _ (hbpos 0) s).ne'] have hb0 := compoundCoordinateProduct_log_bound (b 0) (hbpos 0) (hb 0) s have ht := (abs_add_le (Real.log C + Real.log (compoundCoordinateProduct (b 0) s)) (Real.log (min (compoundCoordinateProduct (lam ∘ p.symm) s) (compoundClipLevel lam hk)))).trans (add_le_add (abs_add_le (Real.log C) (Real.log (compoundCoordinateProduct (b 0) s))) le_rfl) change _ ≤ (|Real.log C| + _ + _) * q nlinarith · change |Real.log (compoundCoordinateProduct (b 1) s)| ≤ _ have hh := compoundCoordinateProduct_log_bound (b 1) (hbpos 1) (hb 1) s have hc0 : 0 ≤ |Real.log C| * q := mul_nonneg (abs_nonneg _) hq0 have hl0 : 0 ≤ ((d - k : ℕ) + 2 : ℝ) * (L * q) := mul_nonneg (by positivity) hLq change _ ≤ (|Real.log C| + _ + _) * q nlinarith · change |Real.log (compoundCoordinateProduct (b 2) s)| ≤ _ have hh := compoundCoordinateProduct_log_bound (b 2) (hbpos 2) (hb 2) s have hc0 : 0 ≤ |Real.log C| * q := mul_nonneg (abs_nonneg _) hq0 have hl0 : 0 ≤ ((d - k : ℕ) + 2 : ℝ) * (L * q) := mul_nonneg (by positivity) hLq change _ ≤ (|Real.log C| + _ + _) * q nlinarith def exists_threePlace_compoundLogProfile_bound {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (M : ℝ) : ∃ C : ℝ, 0 ≤ C ∧ ∀ (c : Fin 3 → Fin d → ℝ) (q : ℝ), 1 ≤ q → (∀ v i, |c v i| ≤ M) → ∀ (k : ℕ) (hk : k < d) (p : Equiv.Perm (Fin d)) (v : Fin 3) (s : CompoundIndex d (d - k)), |compoundLogProfile ((2 : ℝ) ^ d) (threePlaceExactWidths c q) (threePlaceMinimumValue A c q hA) p (compoundClipLevel (threePlaceMinimumValue A c q hA) hk) q v s| ≤ C := by classical obtain ⟨L, hL, hmins⟩ := exists_threePlaceMinimumValue_uniform_exp_bounds A hA M let B := max M 0 + Real.log 3 have hB : 0 ≤ B := add_nonneg (le_max_right _ _) (Real.log_nonneg (by norm_num)) let D := ∑ ell : Fin (d + 1), |Real.log ((ell.val.factorial : ℝ) * ((2 : ℝ) ^ d) ^ ell.val)| have hD : 0 ≤ D := Finset.sum_nonneg (fun _ _ => abs_nonneg _) let C := D + d * B + ((d : ℝ) + 2) * L refine ⟨C, by dsimp [C]; positivity, ?_⟩ intro c q hq hc k hk p v s have hb : ∀ v i, |Real.log (threePlaceExactWidths c q v i)| ≤ B * q := by intro v i have hh := threePlaceExactWidths_exp_bounds c (le_max_right M 0) hq (fun v i => (hc v i).trans (le_max_left M 0)) v i exact abs_log_le_of_exp_bounds hh.1 hh.2 have hl : ∀ i, |Real.log (threePlaceMinimumValue A c q hA i)| ≤ L * q := by intro i exact abs_log_le_of_exp_bounds (hmins c q hq hc i).1 (hmins c q hq hc i).2 have hh := compoundLogProfile_clip_abs_bound ((2 : ℝ) ^ d) (threePlaceExactWidths c q) (threePlaceMinimumValue A c q hA) p hk (by positivity) (threePlaceExactWidths_pos c q) (fun i => rationalBoxMinimumValue_pos A _ _ hA _ _ i) hB hL hq hb hl v s have hconst : |Real.log (((d - k).factorial : ℝ) * ((2 : ℝ) ^ d) ^ (d - k))| ≤ D := by exact Finset.single_le_sum (f := fun ell : Fin (d + 1) => |Real.log ((ell.val.factorial : ℝ) * ((2 : ℝ) ^ d) ^ ell.val)|) (fun ell _ => abs_nonneg _) (Finset.mem_univ (⟨d - k, by omega⟩ : Fin (d + 1))) apply hh.trans have hkd : ((d - k : ℕ) : ℝ) ≤ d := by exact_mod_cast Nat.sub_le d k have hbmul := mul_le_mul_of_nonneg_right hkd hB have hlmul := mul_le_mul_of_nonneg_right (add_le_add_right hkd 2) hL dsimp [C] linarith end end Bounty end SubmissionComponent_CompoundProfileBounds /- Component CompoundWidthProduct; SHA256 a434f222dc9fa11621c6d40a1cc3ecafd3da9b5ac41115b172de2dda3a086fad -/ section SubmissionComponent_CompoundWidthProduct /- The minimum gap supplies the exact compound volume loss and a negative profile sum. -/ namespace Bounty noncomputable section open scoped BigOperators def compoundLocalWidths_product {d k : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (hkpos : 1 ≤ k) (hk : k < d) (hpos : ∀ i, 0 < lam i) (hmono : Monotone lam) : (∏ v, ∏ s : CompoundIndex d (d - k), compoundLocalWidths K b lam p (compoundClipLevel lam hk) v s) = ((d - k).factorial * K ^ (d - k)) ^ (d.choose (d - k)) * ((∏ v, ∏ i, b v i) * (∏ i, lam i)) ^ ((d - 1).choose (d - k - 1)) / compoundGapRatio lam hk := by have hell : 1 ≤ d - k := by omega have harch : (∏ s : CompoundIndex d (d - k), compoundLocalWidths K b lam p (compoundClipLevel lam hk) 0 s) = ((d - k).factorial * K ^ (d - k)) ^ (d.choose (d - k)) * (∏ i, b 0 i) ^ ((d - 1).choose (d - k - 1)) * ((∏ i, lam i) ^ ((d - 1).choose (d - k - 1)) / compoundGapRatio lam hk) := by change (∏ s : CompoundIndex d (d - k), ((d - k).factorial * K ^ (d - k)) * compoundCoordinateProduct (b 0) s * min (compoundCoordinateProduct (lam ∘ p.symm) s) (compoundClipLevel lam hk)) = _ rw [Finset.prod_mul_distrib, Finset.prod_mul_distrib, Finset.prod_const, Finset.card_univ, compoundIndex_card, compoundCoordinateProduct_prod hell, compoundCoordinateProduct_clipped_prod_permute p lam hkpos hk hpos hmono] have hfinite (v : Fin 3) (hv : v ≠ 0) : (∏ s : CompoundIndex d (d - k), compoundLocalWidths K b lam p (compoundClipLevel lam hk) v s) = (∏ i, b v i) ^ ((d - 1).choose (d - k - 1)) := by fin_cases v · exact False.elim (hv rfl) · exact compoundCoordinateProduct_prod hell (b 1) · exact compoundCoordinateProduct_prod hell (b 2) rw [Fin.prod_univ_three, harch, hfinite 1 (by decide), hfinite 2 (by decide), Fin.prod_univ_three] simp only [mul_pow] ring def compoundLocalWidths_product_le {d k : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (hkpos : 1 ≤ k) (hk : k < d) (hK : 0 ≤ K) (hb : ∀ v i, 0 ≤ b v i) (hpos : ∀ i, 0 < lam i) (hmono : Monotone lam) (L : ℝ) (hL : ((∏ v, ∏ i, b v i) * (∏ i, lam i)) ≤ L) : (∏ v, ∏ s : CompoundIndex d (d - k), compoundLocalWidths K b lam p (compoundClipLevel lam hk) v s) ≤ ((d - k).factorial * K ^ (d - k)) ^ (d.choose (d - k)) * L ^ ((d - 1).choose (d - k - 1)) / compoundGapRatio lam hk := by rw [compoundLocalWidths_product K b lam p hkpos hk hpos hmono] apply div_le_div_of_nonneg_right _ (compoundGapRatio_pos lam hk hpos).le apply mul_le_mul_of_nonneg_left _ (by positivity) apply pow_le_pow_left₀ _ hL exact mul_nonneg (Finset.prod_nonneg (fun v _ => Finset.prod_nonneg (fun i _ => hb v i))) (Finset.prod_nonneg (fun i _ => (hpos i).le)) def compoundLogProfile_sum_le_of_growth {d k : ℕ} (K : ℝ) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)) (hkpos : 1 ≤ k) (hk : k < d) (hK : 0 < K) (hb : ∀ v i, 0 < b v i) (hpos : ∀ i, 0 < lam i) (hmono : Monotone lam) (L q ρ : ℝ) (hLpos : 0 < L) (hq : 0 < q) (hL : ((∏ v, ∏ i, b v i) * (∏ i, lam i)) ≤ L) (hconst : Real.log (((d - k).factorial * K ^ (d - k)) ^ (d.choose (d - k)) * L ^ ((d - 1).choose (d - k - 1))) ≤ ρ * q) (hgap : Real.exp (2 * ρ * q) ≤ compoundGapRatio lam hk) : (∑ v, ∑ s : CompoundIndex d (d - k), compoundLogProfile K b lam p (compoundClipLevel lam hk) q v s) ≤ -ρ := by have hBpos : 0 < ((d - k).factorial * K ^ (d - k)) ^ (d.choose (d - k)) * L ^ ((d - 1).choose (d - k - 1)) := by positivity have hB := (Real.log_le_iff_le_exp hBpos).mp hconst have hquot : ((d - k).factorial * K ^ (d - k)) ^ (d.choose (d - k)) * L ^ ((d - 1).choose (d - k - 1)) / compoundGapRatio lam hk ≤ Real.exp (-ρ * q) := by apply (div_le_iff₀ (compoundGapRatio_pos lam hk hpos)).mpr apply hB.trans calc Real.exp (ρ * q) = Real.exp (2 * ρ * q) * Real.exp (-ρ * q) := by rw [← Real.exp_add] congr 1 ring _ ≤ _ := mul_le_mul_of_nonneg_right hgap (Real.exp_nonneg _) _ = _ := by ring have hprod := (compoundLocalWidths_product_le K b lam p hkpos hk hK.le (fun v i => (hb v i).le) hpos hmono L hL).trans hquot rw [compoundLogProfile_sum K b lam p (compoundClipLevel lam hk) q hK hb hpos (compoundClipLevel_pos lam hk hpos)] apply (div_le_iff₀ hq).mpr apply (Real.log_le_iff_le_exp (Finset.prod_pos (fun v _ => Finset.prod_pos (fun s _ => compoundLocalWidths_pos K b lam p (compoundClipLevel lam hk) hK hb hpos (compoundClipLevel_pos lam hk hpos) v s)))).mpr exact hprod end end Bounty end SubmissionComponent_CompoundWidthProduct /- Component CompoundUniformDeficit; SHA256 266ce16bcdec52c68f8d611063d94c865dcc77ab5a701bf64b17b38097aab8d3 -/ section SubmissionComponent_CompoundUniformDeficit /- A single scale threshold works for every proper minimum-prefix dimension. -/ namespace Bounty noncomputable section open scoped BigOperators def compoundCoefficientBudget (d k : ℕ) (K L : ℝ) : ℝ := Real.log (((d - k).factorial * K ^ (d - k)) ^ (d.choose (d - k)) * L ^ ((d - 1).choose (d - k - 1))) def exists_uniform_compound_deficit_threshold (d : ℕ) (K L γ : ℝ) (hγ : 0 < γ) : ∃ T : ℝ, 1 ≤ T ∧ ∀ q : ℝ, T ≤ q → ∀ k : ℕ, k < d → compoundCoefficientBudget d k K L ≤ (γ / 2) * q := by let B : ℝ := ∑ j : Fin d, |compoundCoefficientBudget d j.val K L| have hB : 0 ≤ B := Finset.sum_nonneg (fun _ _ => abs_nonneg _) have hT : 1 ≤ 1 + 2 * B / γ := by have hnonneg : 0 ≤ 2 * B / γ := by positivity linarith refine ⟨1 + 2 * B / γ, hT, ?_⟩ intro q hq k hk have hle : compoundCoefficientBudget d k K L ≤ B := by apply (le_abs_self _).trans exact Finset.single_le_sum (fun j _ => abs_nonneg (compoundCoefficientBudget d j.val K L)) (Finset.mem_univ (⟨k, hk⟩ : Fin d)) have hmul := (div_le_iff₀ hγ).mp (show 2 * B / γ ≤ q by linarith) linarith def exists_uniform_compound_negative_profiles (d : ℕ) (K L γ : ℝ) (hK : 0 < K) (hL : 0 < L) (hγ : 0 < γ) : ∃ T : ℝ, 1 ≤ T ∧ ∀ (q : ℝ), T ≤ q → ∀ (k : ℕ) (_hkpos : 1 ≤ k) (hk : k < d) (b : Fin 3 → Fin d → ℝ) (lam : Fin d → ℝ) (p : Equiv.Perm (Fin d)), (∀ v i, 0 < b v i) → (∀ i, 0 < lam i) → Monotone lam → ((∏ v, ∏ i, b v i) * (∏ i, lam i)) ≤ L → Real.exp (γ * q) ≤ compoundGapRatio lam hk → (∑ v, ∑ s : CompoundIndex d (d - k), compoundLogProfile K b lam p (compoundClipLevel lam hk) q v s) ≤ -(γ / 2) := by obtain ⟨T, hT, hbound⟩ := exists_uniform_compound_deficit_threshold d K L γ hγ refine ⟨T, hT, ?_⟩ intro q hq k hkpos hk b lam p hb hlam hmono hprod hgap apply compoundLogProfile_sum_le_of_growth K b lam p hkpos hk hK hb hlam hmono L q (γ / 2) hL (by linarith) hprod (hbound q hq k hk) convert hgap using 1 congr 2 ring end end Bounty end SubmissionComponent_CompoundUniformDeficit /- Component LatticeProfileMass; SHA256 6f153cfbb040c1b3442ff5ccecf8bc4f913243112d2c3ef3d8d339c87720529c -/ section SubmissionComponent_LatticeProfileMass /- Exact finite-place widths cancel the diagonal lattice determinant in the product bound. -/ namespace Bounty noncomputable section open scoped BigOperators def latticeProfileMassConstant {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) : ℝ := (2 / Real.sqrt 3) ^ (d * (d - 1) / 2) * |(A.det : ℝ)| def latticeProfileMassConstant_pos {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) : 0 < latticeProfileMassConstant A := by apply mul_pos · apply pow_pos exact div_pos (by norm_num) (Real.sqrt_pos.mpr (by norm_num)) · exact abs_pos.mpr (by exact_mod_cast hA) def rationalBoxMinimum_threePlace_mass_bound {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (b : Fin 3 → Fin d → ℝ) (N : Fin d → ℕ) (hA : A.det ≠ 0) (hb : ∀ i, 0 < b 0 i) (hN : ∀ i, 0 < N i) (hfinite : ∀ i, b 1 i * b 2 i = (N i : ℝ)⁻¹) : ((∏ v, ∏ i, b v i) * ∏ i, rationalBoxMinimumValue A (b 0) N hA hb hN i) ≤ latticeProfileMassConstant A := by have hB : (0 : ℝ) < ∏ i, b 0 i := Finset.prod_pos (fun i _ => hb i) have hNprod : (0 : ℝ) < ∏ i, (N i : ℝ) := Finset.prod_pos (fun i _ => by exact_mod_cast hN i) have hfiniteprod : (∏ i, b 1 i) * (∏ i, b 2 i) = (∏ i, (N i : ℝ))⁻¹ := by rw [← Finset.prod_mul_distrib] simp_rw [hfinite] rw [Finset.prod_inv_distrib] have hscale : (∏ v, ∏ i, b v i) = (∏ i, b 0 i) / ∏ i, (N i : ℝ) := by rw [Fin.prod_univ_three, mul_assoc, hfiniteprod, div_eq_mul_inv] rw [hscale] have hmin := (rationalBoxMinimumValue_product_bounds A (b 0) N hA hb hN).2 calc _ ≤ ((∏ i, b 0 i) / ∏ i, (N i : ℝ)) * ((2 / Real.sqrt 3) ^ (d * (d - 1) / 2) * (|(A.det : ℝ)| * (∏ i, (N i : ℝ)) / ∏ i, b 0 i)) := mul_le_mul_of_nonneg_left hmin (div_nonneg hB.le hNprod.le) _ = latticeProfileMassConstant A := by unfold latticeProfileMassConstant field_simp <;> ring end end Bounty end SubmissionComponent_LatticeProfileMass /- Component ThreePlaceGapRate; SHA256 a31630e5c4986bda309882a0983b775fca014d2139cd7adbb9e79fbb544077ab -/ section SubmissionComponent_ThreePlaceGapRate /- A fixed positive exponential gap rate and a threshold absorbing the actual determinant and Euclidean dimension constants. -/ namespace Bounty noncomputable section def threePlaceGapRate (d : ℕ) (ρ : ℝ) : ℝ := ρ / (2 * (d * (d - 1) : ℕ)) def threePlaceGapRate_pos {d : ℕ} (hd : 2 ≤ d) {ρ : ℝ} (hρ : 0 < ρ) : 0 < threePlaceGapRate d ρ := by have hn : 0 < d * (d - 1) := Nat.mul_pos (by omega) (by omega) exact div_pos hρ (mul_pos (by norm_num) (by exact_mod_cast hn)) def exists_threePlace_gap_threshold {d : ℕ} (hd : 2 ≤ d) (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) {ρ : ℝ} (hρ : 0 < ρ) : ∃ q₀ : ℝ, 1 ≤ q₀ ∧ ∀ q : ℝ, q₀ ≤ q → 1 ≤ Real.exp (threePlaceGapRate d ρ * q) ∧ (d.factorial : ℝ) * (Real.sqrt d) ^ d * (Real.exp (threePlaceGapRate d ρ * q)) ^ (d * (d - 1)) < |(A.det : ℝ)| * Real.exp (ρ * q) := by let C : ℝ := d.factorial * (Real.sqrt d) ^ d let a : ℝ := |(A.det : ℝ)| have ha : 0 < a := abs_pos.mpr (by exact_mod_cast hA) have hC : 0 < C := mul_pos (by exact_mod_cast Nat.factorial_pos d) (pow_pos (Real.sqrt_pos.mpr (by exact_mod_cast (by omega : 0 < d))) d) let S := |Real.log C| + |Real.log a| have hS : 0 ≤ S := add_nonneg (abs_nonneg _) (abs_nonneg _) let q₀ := 1 + 2 * S / ρ have hq₀ : 1 ≤ q₀ := le_add_of_nonneg_right (div_nonneg (mul_nonneg (by norm_num) hS) hρ.le) refine ⟨q₀, hq₀, ?_⟩ intro q hq have hq1 : 1 ≤ q := hq₀.trans hq have hq0 : 0 ≤ q := le_trans (by norm_num) hq1 refine ⟨Real.one_le_exp_iff.mpr (mul_nonneg (threePlaceGapRate_pos hd hρ).le hq0), ?_⟩ have hlarge : S < ρ * q / 2 := by have hh := mul_le_mul_of_nonneg_right hq hρ.le dsimp [q₀] at hh rw [add_mul, div_mul_cancel₀ _ hρ.ne', one_mul] at hh nlinarith have hn : (d * (d - 1) : ℕ) ≠ 0 := ne_of_gt (Nat.mul_pos (by omega) (by omega)) have hnr : ((d * (d - 1) : ℕ) : ℝ) ≠ 0 := by exact_mod_cast hn have hexp : (Real.exp (threePlaceGapRate d ρ * q)) ^ (d * (d - 1)) = Real.exp (ρ * q / 2) := by rw [← Real.exp_nat_mul] congr 1 unfold threePlaceGapRate field_simp [hnr] rw [hexp] change C * Real.exp (ρ * q / 2) < a * Real.exp (ρ * q) calc _ = Real.exp (Real.log C + ρ * q / 2) := by rw [Real.exp_add, Real.exp_log hC] _ < Real.exp (Real.log a + ρ * q) := by apply Real.exp_lt_exp.mpr dsimp [S] at hlarge nlinarith [le_abs_self (Real.log C), neg_abs_le (Real.log a)] _ = _ := by rw [Real.exp_add, Real.exp_log ha] end end Bounty end SubmissionComponent_ThreePlaceGapRate /- Component RationalSpanDescent; SHA256 f2c1eb58e67308300db324d5c30694789c06981ed85e74e9a4d929f9e44a05eb -/ section SubmissionComponent_RationalSpanDescent /- Rational points in a real span of rational vectors already belong to the rational span. -/ namespace Bounty noncomputable section open scoped BigOperators def rationalDualRealExtension {I : Type*} [Fintype I] [DecidableEq I] (f : (I → ℚ) →ₗ[ℚ] ℚ) : (I → ℝ) →ₗ[ℝ] ℝ := ∑ i, (f (Pi.single i 1) : ℝ) • (LinearMap.proj i : (I → ℝ) →ₗ[ℝ] ℝ) def rationalDualRealExtension_cast {I : Type*} [Fintype I] [DecidableEq I] (f : (I → ℚ) →ₗ[ℚ] ℚ) (x : I → ℚ) : rationalDualRealExtension f (fun i => (x i : ℝ)) = (f x : ℝ) := by have hexp : f x = ∑ i, x i * f (Pi.single i 1) := by conv_lhs => rw [← (Pi.basisFun ℚ I).sum_repr x] simp only [map_sum, map_smul, Pi.basisFun_repr, Pi.basisFun_apply, smul_eq_mul] rw [hexp] simp only [rationalDualRealExtension, LinearMap.sum_apply, LinearMap.smul_apply, LinearMap.proj_apply, smul_eq_mul, Rat.cast_sum, Rat.cast_mul] apply Finset.sum_congr rfl intro i _ ring def rational_mem_span_of_real_mem_span {I : Type*} [Fintype I] [DecidableEq I] (s : Set (I → ℚ)) (x : I → ℚ) (hx : (fun i => (x i : ℝ)) ∈ Submodule.span ℝ ((fun z : I → ℚ => fun i => (z i : ℝ)) '' s)) : x ∈ Submodule.span ℚ s := by by_contra hn obtain ⟨f, hfx, hf⟩ := Submodule.exists_dual_map_eq_bot_of_notMem hn inferInstance have hker : Submodule.span ℝ ((fun z : I → ℚ => fun i => (z i : ℝ)) '' s) ≤ LinearMap.ker (rationalDualRealExtension f) := by apply Submodule.span_le.mpr rintro y ⟨z, hz, rfl⟩ change rationalDualRealExtension f (fun i => (z i : ℝ)) = 0 rw [rationalDualRealExtension_cast] have hzmem : f z ∈ (Submodule.span ℚ s).map f := Submodule.mem_map_of_mem (Submodule.subset_span hz) rw [hf] at hzmem have hz0 : f z = 0 := hzmem rw [hz0, Rat.cast_zero] have hxzero := hker hx rw [LinearMap.mem_ker, rationalDualRealExtension_cast] at hxzero exact hfx (by exact_mod_cast hxzero) def rational_mem_span_of_euclidean_mem_span {d : ℕ} (s : Set (Fin d → ℚ)) (x : Fin d → ℚ) (hx : (WithLp.toLp 2 (fun i => (x i : ℝ)) : BoxEuclidean d) ∈ Submodule.span ℝ ((fun z : Fin d → ℚ => WithLp.toLp 2 (fun i => (z i : ℝ))) '' s)) : x ∈ Submodule.span ℚ s := by apply rational_mem_span_of_real_mem_span s x have hm := Submodule.mem_map_of_mem (f := (WithLp.linearEquiv 2 ℝ (Fin d → ℝ)).toLinearMap) hx rw [Submodule.map_span, Set.image_image] at hm exact hm def integer_mem_rational_prefix_of_real_prefix {d : ℕ} (H : Fin d → Fin d → ℤ) (x : Fin d → ℤ) (k : ℕ) (hx : integerEuclideanPoint x ∈ latticePrefixSpan (fun j => integerEuclideanPoint (H j)) k) : (fun i => (x i : ℚ)) ∈ Submodule.span ℚ ((fun j i => (H j i : ℚ)) '' {j : Fin d | j.val < k}) := by apply rational_mem_span_of_euclidean_mem_span ((fun j i => (H j i : ℚ)) '' {j : Fin d | j.val < k}) (fun i => (x i : ℚ)) rw [Set.image_image] simpa only [latticePrefixSpan, integerEuclideanPoint, Function.comp_def, Rat.cast_intCast] using hx def integer_matrix_det_ne_zero_of_euclidean_independent {d : ℕ} (X : Matrix (Fin d) (Fin d) ℤ) (hX : LinearIndependent ℝ (fun j => integerEuclideanPoint (X.col j))) : (X.map (Int.castRingHom ℚ)).det ≠ 0 := by have hreal := hX.map' (WithLp.linearEquiv 2 ℝ (Fin d → ℝ)).toLinearMap (LinearMap.ker_eq_bot.mpr (WithLp.linearEquiv 2 ℝ (Fin d → ℝ)).injective) change LinearIndependent ℝ (X.map (Int.castRingHom ℝ)).col at hreal have hdet : (X.map (Int.castRingHom ℝ)).det ≠ 0 := Matrix.nonsingular_iff_det_ne_zero.mp (Matrix.Nonsingular.of_linearIndependent_col hreal) intro hz have hmap : (X.map (Int.castRingHom ℚ)).det = (X.det : ℚ) := ((Int.castRingHom ℚ).map_det X).symm rw [hmap] at hz have hzZ : X.det = 0 := by exact_mod_cast hz apply hdet calc _ = (X.det : ℝ) := ((Int.castRingHom ℝ).map_det X).symm _ = 0 := by rw [hzZ, Int.cast_zero] end end Bounty end SubmissionComponent_RationalSpanDescent /- Component ThreePlaceCompoundWitness; SHA256 2111c1a0da3abbd52f08a697fb15c45006ed24ca9cabeb849aec8c4a3a71d0af -/ section SubmissionComponent_ThreePlaceCompoundWitness /- Actual compound witnesses for every sufficiently large three-place domain. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def threePlaceCompoundProfile {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) (hA : A.det ≠ 0) (p : Equiv.Perm (Fin d)) (k : Fin d) : Fin 3 → CompoundIndex d (d - k.val) → ℝ := compoundLogProfile ((2 : ℝ) ^ d) (threePlaceExactWidths c q) (threePlaceMinimumValue A c q hA) p (compoundClipLevel (threePlaceMinimumValue A c q hA) k.isLt) q def ThreePlaceCompoundWitnessData {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (c : Fin 3 → Fin d → ℝ) (q : ℝ) (hA : A.det ≠ 0) (C ρ : ℝ) (k : Fin d) (p : Equiv.Perm (Fin d)) (H : Matrix (Fin d) (Fin d) ℤ) : Prop := 1 ≤ k.val ∧ (H.map (Int.castRingHom ℚ)).det ≠ 0 ∧ (∀ v s, |threePlaceCompoundProfile A c q hA p k v s| ≤ C) ∧ (∑ v, ∑ s, threePlaceCompoundProfile A c q hA p k v s) ≤ -(threePlaceGapRate d ρ / 2) ∧ (∀ (t : CompoundIndex d (d - k.val)), t ≠ compoundTailIndex d k.val → (∀ s, ‖(compoundMatrix (d - k.val) A * (compoundMatrix (d - k.val) H).map (Int.castRingHom ℚ)) s t‖ ≤ Real.exp (threePlaceCompoundProfile A c q hA p k 0 s * q)) ∧ (∀ s, (padicNorm 2 ((compoundMatrix (d - k.val) H s t : ℤ) : ℚ) : ℝ) ≤ Real.exp (threePlaceCompoundProfile A c q hA p k 1 s * q)) ∧ (∀ s, (padicNorm 3 ((compoundMatrix (d - k.val) H s t : ℤ) : ℚ) : ℝ) ≤ Real.exp (threePlaceCompoundProfile A c q hA p k 2 s * q))) ∧ (∀ x ∈ rationalThreePlaceDomain A c q, (fun i => (x i : ℚ)) ∈ Submodule.span ℚ (((H.map (Int.castRingHom ℚ)).col) '' {j : Fin d | j.val < k.val})) def exists_threePlace_compound_witnesses {d : ℕ} (hd : 2 ≤ d) (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (M ρ : ℝ) (hρ : 0 < ρ) : ∃ C T : ℝ, 0 ≤ C ∧ 1 ≤ T ∧ ∀ (c : Fin 3 → Fin d → ℝ) (q : ℝ), (∀ v i, |c v i| ≤ M) → (∀ i, c 1 i ≤ 0) → (∀ i, c 2 i ≤ 0) → (∑ v, ∑ i, c v i) ≤ -ρ → T ≤ q → (∃ x ∈ rationalThreePlaceDomain A c q, x ≠ 0) → ∃ (k : Fin d) (p : Equiv.Perm (Fin d)) (H : Matrix (Fin d) (Fin d) ℤ), ThreePlaceCompoundWitnessData A c q hA C ρ k p H := by obtain ⟨C, hC, hbound⟩ := exists_threePlace_compoundLogProfile_bound A hA M have hγ := threePlaceGapRate_pos hd hρ obtain ⟨T₁, hT₁, hgaprate⟩ := exists_threePlace_gap_threshold hd A hA hρ obtain ⟨T₂, hT₂, hdeficit⟩ := exists_uniform_compound_negative_profiles d ((2 : ℝ) ^ d) (latticeProfileMassConstant A) (threePlaceGapRate d ρ) (by positivity) (latticeProfileMassConstant_pos A hA) hγ refine ⟨C, max T₁ T₂, hC, hT₁.trans (le_max_left _ _), ?_⟩ intro c q hc hc1 hc2 hsum hq hne have hq₁ : T₁ ≤ q := (le_max_left _ _).trans hq have hq₂ : T₂ ≤ q := (le_max_right _ _).trans hq have hq1 : 1 ≤ q := hT₁.trans hq₁ have hq0 : 0 ≤ q := le_trans (by norm_num) hq1 have hqp : 0 < q := lt_of_lt_of_le (by norm_num) hq1 obtain ⟨hG, hgrowth⟩ := hgaprate q hq₁ obtain ⟨p, W, z, lo, hi, hidx, hdiv, _, hLI, _, harch, _, hgap, hcontain, _, _⟩ := exists_threePlace_davenport_gap (by omega : 0 < d) A c hA hq0 hc1 hc2 hsum hne hG hgrowth let H : Matrix (Fin d) (Fin d) ℤ := fun i j => W j i let lam := threePlaceMinimumValue A c q hA let b := threePlaceExactWidths c q have hpos : ∀ i, 0 < lam i := fun i => rationalBoxMinimumValue_pos A _ _ hA _ _ i have hmono : Monotone lam := rationalBoxMinimumValue_monotone A _ _ hA _ _ have hhipos : 1 ≤ hi.val := by omega have hdet : (H.map (Int.castRingHom ℚ)).det ≠ 0 := integer_matrix_det_ne_zero_of_euclidean_independent H hLI have hratio : compoundGapRatio lam hi.isLt = lam hi / lam lo := by have hprev : (⟨hi.val - 1, by omega⟩ : Fin d) = lo := by apply Fin.ext change hi.val - 1 = lo.val omega change lam hi / lam ⟨hi.val - 1, _⟩ = lam hi / lam lo rw [hprev] have hmass : ((∏ v, ∏ i, b v i) * ∏ i, lam i) ≤ latticeProfileMassConstant A := rationalBoxMinimum_threePlace_mass_bound A b (threePlaceDiagonal c q) hA (threePlaceWidth_pos c q) (threePlaceDiagonal_pos c q) (threePlaceExactWidths_finite_product c q) have hlocal : ∀ i j, ‖(A * H.map (Int.castRingHom ℚ)) (p i) j‖ ≤ (2 : ℝ) ^ d * b 0 (p i) * min (lam i) (lam j) := by intro i j change ‖(∑ r, A (p i) r * (W j r : ℚ) : ℚ)‖ ≤ _ rw [← Rat.norm_cast_real, Real.norm_eq_abs] simpa [Matrix.mulVec, dotProduct, Matrix.map_apply, Rat.cast_sum, Rat.cast_mul, b, threePlaceExactWidths_zero, threePlaceWidth, lam] using harch i j refine ⟨hi, p, H, ?_⟩ unfold ThreePlaceCompoundWitnessData refine ⟨hhipos, hdet, ?_, ?_, ?_, ?_⟩ · exact hbound c q hq1 hc hi.val hi.isLt p · apply hdeficit q hq₂ hi.val hhipos hi.isLt b lam p (threePlaceExactWidths_pos c q) hpos hmono hmass rw [hratio] exact hgap.le · intro t ht have htclip := compoundCoordinateProduct_le_clip_of_ne_tail lam hhipos hi.isLt hpos hmono t ht have hloc := compoundMatrix_clipped_local_bounds A H ((2 : ℝ) ^ d) b lam p (compoundClipLevel lam hi.isLt) (by positivity) (fun v i => (threePlaceExactWidths_pos c q v i).le) (fun i => (hpos i).le) hlocal (fun i j => (threePlaceExactWidths_padic_bounds c q i (W j i) (hdiv j i)).1) (fun i j => (threePlaceExactWidths_padic_bounds c q i (W j i) (hdiv j i)).2) t htclip have he (v : Fin 3) (s : CompoundIndex d (d - hi.val)) : Real.exp (threePlaceCompoundProfile A c q hA p hi v s * q) = compoundLocalWidths ((2 : ℝ) ^ d) b lam p (compoundClipLevel lam hi.isLt) v s := exp_compoundLogProfile _ b lam p _ q (by positivity) (threePlaceExactWidths_pos c q) hpos (compoundClipLevel_pos lam hi.isLt hpos) hqp.ne' v s simpa only [he] using hloc · intro x hx exact integer_mem_rational_prefix_of_real_prefix W x hi.val (hcontain x hx) end end Bounty end SubmissionComponent_ThreePlaceCompoundWitness /- Component IntegerThreePlaceProduct; SHA256 e8dcdc1fe5df96148d3907fb8e00955aebb91749daeb892517b278b0a5331752 -/ section SubmissionComponent_IntegerThreePlaceProduct /- The three-place product lower bound for actual nonzero integers, proved from coprime prime-power divisibility rather than a product-formula premise. -/ namespace Bounty noncomputable section def padicNorm_int_inverse_power (p : ℕ) (z : ℤ) (hz : z ≠ 0) : padicNorm p (z : ℚ) = ((p : ℚ) ^ padicValNat p z.natAbs)⁻¹ := by rw [padicNorm.eq_zpow_of_nonzero (by exact_mod_cast hz), padicValRat.of_int] simp only [padicValInt, zpow_neg, zpow_natCast] def two_prime_valuation_power_dvd (p q n : ℕ) (hp : p.Prime) (hq : q.Prime) (hpq : p ≠ q) : p ^ padicValNat p n * q ^ padicValNat q n ∣ n := by have hc : Nat.Coprime p q := (Nat.coprime_primes hp hq).mpr hpq exact (hc.pow _ _).mul_dvd_of_dvd_of_dvd pow_padicValNat_dvd pow_padicValNat_dvd def integer_two_prime_product_lower_rat (p q : ℕ) (hp : p.Prime) (hq : q.Prime) (hpq : p ≠ q) (z : ℤ) (hz : z ≠ 0) : (1 : ℚ) ≤ |(z : ℚ)| * padicNorm p (z : ℚ) * padicNorm q (z : ℚ) := by have hn : 0 < z.natAbs := Int.natAbs_pos.mpr hz have hb := Nat.le_of_dvd hn (two_prime_valuation_power_dvd p q z.natAbs hp hq hpq) have hbq : (p : ℚ) ^ padicValNat p z.natAbs * (q : ℚ) ^ padicValNat q z.natAbs ≤ (z.natAbs : ℚ) := by exact_mod_cast hb have hp0 : (0 : ℚ) < p := by exact_mod_cast hp.pos have hq0 : (0 : ℚ) < q := by exact_mod_cast hq.pos have habs : |(z : ℚ)| = (z.natAbs : ℚ) := by rw [Nat.cast_natAbs, Int.cast_abs] rw [padicNorm_int_inverse_power p z hz, padicNorm_int_inverse_power q z hz, habs] calc _ ≤ (z.natAbs : ℚ) / ((p : ℚ) ^ padicValNat p z.natAbs * (q : ℚ) ^ padicValNat q z.natAbs) := (one_le_div₀ (by positivity)).mpr hbq _ = _ := by rw [div_eq_mul_inv, mul_inv_rev]; ring def integer_two_prime_product_lower (p q : ℕ) (hp : p.Prime) (hq : q.Prime) (hpq : p ≠ q) (z : ℤ) (hz : z ≠ 0) : (1 : ℝ) ≤ |(z : ℝ)| * (padicNorm p (z : ℚ) : ℝ) * (padicNorm q (z : ℚ) : ℝ) := by exact_mod_cast integer_two_prime_product_lower_rat p q hp hq hpq z hz def integer_three_place_product_lower_rat (z : ℤ) (hz : z ≠ 0) : (1 : ℚ) ≤ |(z : ℚ)| * padicNorm 2 (z : ℚ) * padicNorm 3 (z : ℚ) := integer_two_prime_product_lower_rat 2 3 (by norm_num) (by norm_num) (by norm_num) z hz def integer_three_place_product_lower (z : ℤ) (hz : z ≠ 0) : (1 : ℝ) ≤ |(z : ℝ)| * (padicNorm 2 (z : ℚ) : ℝ) * (padicNorm 3 (z : ℚ) : ℝ) := integer_two_prime_product_lower 2 3 (by norm_num) (by norm_num) (by norm_num) z hz end end Bounty end SubmissionComponent_IntegerThreePlaceProduct /- Component PrimitiveCofactorHeight; SHA256 8a1741a0bf788e8d6666ef17216d4c3fbc04c2e4cc3c9e02a72ead29879d6091 -/ section SubmissionComponent_PrimitiveCofactorHeight /- Primitive normalization and the arithmetic lower bounds for a selected nonzero real coordinate and two selected nonzero finite-place coordinates. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def integer_vector_primitive_factor {I : Type*} [Fintype I] (w : I → ℤ) (hw : w ≠ 0) : ∃ (g : ℤ) (a : I → ℤ), 0 < g ∧ a ≠ 0 ∧ Finset.univ.gcd a = 1 ∧ ∀ i, w i = g * a i := by classical obtain ⟨i, hi⟩ : ∃ i, w i ≠ 0 := by simpa [funext_iff] using hw obtain ⟨a, ha, hprim⟩ := Finset.extract_gcd w ⟨i, Finset.mem_univ i⟩ have hg : Finset.univ.gcd w ≠ 0 := Finset.gcd_ne_zero_iff.mpr ⟨i, Finset.mem_univ i, hi⟩ refine ⟨Finset.univ.gcd w, a, lt_of_le_of_ne Finset.Int.finsetGcd_nonneg (Ne.symm hg), ?_, hprim, fun j => ha j (Finset.mem_univ j)⟩ intro hz apply hi simpa [hz] using ha i (Finset.mem_univ i) def integer_cofactor_primitive_factor {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) ℤ) (hX : LinearIndependent ℚ (X.map (Int.castRingHom ℚ)).col) : ∃ (g : ℤ) (a : Fin (n + 1) → ℤ), 0 < g ∧ a ≠ 0 ∧ Finset.univ.gcd a = 1 ∧ ∀ i, cofactorNormal X i = g * a i := by apply integer_vector_primitive_factor intro hz apply cofactorNormal_ne_zero _ hX rw [cofactorNormal_map] ext i simp [hz] def integerVectorMax {I : Type*} [Fintype I] (a : I → ℤ) : ℝ := ((⨆ i, |a i|) : ℤ) def integerVectorMax_ge_one {I : Type*} [Fintype I] (a : I → ℤ) (ha : a ≠ 0) : 1 ≤ integerVectorMax a := by classical obtain ⟨i, hi⟩ : ∃ i, a i ≠ 0 := by simpa [funext_iff] using ha have hi' : (1 : ℤ) ≤ |a i| := by have := abs_pos.mpr hi; omega have hh := hi'.trans (Finite.le_ciSup (fun i => |a i|) i) unfold integerVectorMax exact_mod_cast hh def integer_coord_abs_le_max {I : Type*} [Fintype I] (a : I → ℤ) (i : I) : |(a i : ℝ)| ≤ integerVectorMax a := by unfold integerVectorMax exact_mod_cast Finite.le_ciSup (fun i => |a i|) i def primitive_integer_logHeight {I : Type*} [Fintype I] [Nonempty I] (a : I → ℤ) (ha : Finset.univ.gcd a = 1) : Height.logHeight (fun i => (a i : ℚ)) = Real.log (integerVectorMax a) := Rat.logHeight_eq_max_abs_of_gcd_eq_one ha def padicNorm_integer_reciprocal_lower (p : ℕ) (hp : p.Prime) (z : ℤ) (hz : z ≠ 0) : 1 / |(z : ℝ)| ≤ (padicNorm p (z : ℚ) : ℝ) := by have hn : 0 < z.natAbs := Int.natAbs_pos.mpr hz have hp0 : (0 : ℝ) < p := by exact_mod_cast hp.pos have hb : (p : ℝ) ^ padicValNat p z.natAbs ≤ (z.natAbs : ℝ) := by exact_mod_cast Nat.le_of_dvd hn (pow_padicValNat_dvd (p := p) (n := z.natAbs)) rw [padicNorm_int_inverse_power p z hz] simp only [Rat.cast_inv, Rat.cast_pow, Rat.cast_natCast] have habs : |(z : ℝ)| = (z.natAbs : ℝ) := by rw [Nat.cast_natAbs, Int.cast_abs] rw [habs, ← one_div] exact one_div_le_one_div_of_le (pow_pos hp0 _) hb def padicNorm_integer_le_height_reciprocal {I : Type*} [Fintype I] (p : ℕ) (hp : p.Prime) (a : I → ℤ) (i : I) (hi : a i ≠ 0) : 1 / integerVectorMax a ≤ (padicNorm p (a i : ℚ) : ℝ) := by have hi0 : (0 : ℝ) < |(a i : ℝ)| := abs_pos.mpr (by exact_mod_cast hi) exact (one_div_le_one_div_of_le hi0 (integer_coord_abs_le_max a i)).trans (padicNorm_integer_reciprocal_lower p hp _ hi) def nonzero_rational_scaled_integer_norm_lower (x : ℚ) (D z : ℤ) (hD : 0 < D) (hx : x ≠ 0) (hz : (D : ℚ) * x = z) : 1 / (D : ℝ) ≤ ‖x‖ := by have hz0 : z ≠ 0 := by intro h have : (D : ℚ) * x = 0 := by simpa [h] using hz exact (mul_ne_zero (by exact_mod_cast hD.ne') hx) this have hz1 : (1 : ℤ) ≤ |z| := by have := abs_pos.mpr hz0; omega have hzreal : (1 : ℝ) ≤ |(z : ℝ)| := by exact_mod_cast hz1 have hh := congrArg norm hz have hDreal : (0 : ℝ) < D := by exact_mod_cast hD simp only [norm_mul, Int.norm_cast_rat, Int.norm_eq_abs, abs_of_pos hDreal] at hh exact (div_le_iff₀ hDreal).mpr (by nlinarith [hh]) def primitive_normal_selected_product_lower {I : Type*} [Fintype I] (a : I → ℤ) (i₂ i₃ : I) (hi₂ : a i₂ ≠ 0) (hi₃ : a i₃ ≠ 0) (x : ℚ) (D z : ℤ) (hD : 0 < D) (hx : x ≠ 0) (hz : (D : ℚ) * x = z) : 1 / ((D : ℝ) * integerVectorMax a ^ 2) ≤ ‖x‖ * (padicNorm 2 (a i₂ : ℚ) : ℝ) * (padicNorm 3 (a i₃ : ℚ) : ℝ) := by have ha : a ≠ 0 := by intro hh; exact hi₂ (congrFun hh i₂) have hH : 0 < integerVectorMax a := lt_of_lt_of_le (by norm_num) (integerVectorMax_ge_one a ha) have hDr : (0 : ℝ) < D := by exact_mod_cast hD have h₀ := nonzero_rational_scaled_integer_norm_lower x D z hD hx hz have h₂ := padicNorm_integer_le_height_reciprocal 2 (by norm_num) a i₂ hi₂ have h₃ := padicNorm_integer_le_height_reciprocal 3 (by norm_num) a i₃ hi₃ have hp₂ : (0 : ℝ) ≤ padicNorm 2 (a i₂ : ℚ) := by exact_mod_cast padicNorm.nonneg (a i₂ : ℚ) calc _ = (1 / (D : ℝ)) * (1 / integerVectorMax a) * (1 / integerVectorMax a) := by ring _ ≤ _ := mul_le_mul (mul_le_mul h₀ h₂ (by positivity) (norm_nonneg _)) h₃ (by positivity) (mul_nonneg (norm_nonneg _) hp₂) def remove_integer_three_place_scalar (g : ℤ) (hg : g ≠ 0) (x y z : ℚ) : ‖x‖ * (padicNorm 2 y : ℝ) * (padicNorm 3 z : ℝ) ≤ ‖(g : ℚ) * x‖ * (padicNorm 2 ((g : ℚ) * y) : ℝ) * (padicNorm 3 ((g : ℚ) * z) : ℝ) := by have hgprod := integer_three_place_product_lower g hg have hp₂ : (0 : ℝ) ≤ padicNorm 2 y := by exact_mod_cast padicNorm.nonneg y have hp₃ : (0 : ℝ) ≤ padicNorm 3 z := by exact_mod_cast padicNorm.nonneg z have hbase : 0 ≤ ‖x‖ * (padicNorm 2 y : ℝ) * (padicNorm 3 z : ℝ) := by positivity have h := mul_le_mul_of_nonneg_right hgprod hbase simp only [norm_mul, padicNorm.mul, Rat.cast_mul, Int.norm_cast_rat, Int.norm_eq_abs] nlinarith [h] end end Bounty end SubmissionComponent_PrimitiveCofactorHeight /- Component CofactorHeightLower; SHA256 907b8311f072161f135a23d02c0e8e633cc805670a718cec177cdbbd158418d6 -/ section SubmissionComponent_CofactorHeightLower /- The large-height branch for an actual primitive cofactor normal. The integer common factor is removed with its three-place product lower bound; no affine height of an unnormalized normal is substituted. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def cofactorTransform {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) := A.adjugate.transpose def exists_integer_scaled_rational_matrix {I J : Type*} [Fintype I] [Fintype J] (F : Matrix I J ℚ) : ∃ D : ℤ, 0 < D ∧ ∃ B : Matrix I J ℤ, ∀ i j, (B i j : ℚ) = (D : ℚ) * F i j := by obtain ⟨D, hD⟩ := IsLocalization.exist_integer_multiples_of_finite (Submonoid.pos ℤ) (fun z : I × J => F z.1 z.2) choose B hB using hD refine ⟨D.val, D.property, fun i j => B (i, j), ?_⟩ intro i j simpa [Algebra.smul_def] using hB (i, j) def exists_cofactor_denominator {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) : ∃ D : ℤ, 0 < D ∧ ∀ (a : Fin (n + 1) → ℤ) (i : Fin (n + 1)), ∃ z : ℤ, (D : ℚ) * (cofactorTransform A).mulVec (fun j => (a j : ℚ)) i = z := by obtain ⟨D, hD, B, hB⟩ := exists_integer_scaled_rational_matrix (cofactorTransform A) refine ⟨D, hD, fun a i => ⟨∑ j, B i j * a j, ?_⟩⟩ simp only [Matrix.mulVec, dotProduct, Finset.mul_sum, Int.cast_sum, Int.cast_mul, hB] apply Finset.sum_congr rfl intro j _ ring def cofactor_three_place_upper {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (X : Matrix (Fin (n + 1)) (Fin n) ℚ) (c : Fin 3 → Fin (n + 1) → ℝ) (t : ℝ) (hInf : ∀ i j, ‖(A * X) i j‖ ≤ Real.exp (c 0 i * t)) (h₂ : ∀ i j, (padicNorm 2 (X i j) : ℝ) ≤ Real.exp (c 1 i * t)) (h₃ : ∀ i j, (padicNorm 3 (X i j) : ℝ) ≤ Real.exp (c 2 i * t)) (i : Fin 3 → Fin (n + 1)) : ‖cofactorNormal (A * X) (i 0)‖ * (padicNorm 2 (cofactorNormal X (i 1)) : ℝ) * (padicNorm 3 (cofactorNormal X (i 2)) : ℝ) ≤ (n.factorial : ℝ) * Real.exp (((∑ v, ∑ j, c v j) - ∑ v, c v (i v)) * t) := by have h₀ := cofactorNormal_norm_le_exp (A * X) (c 0) t hInf (i 0) have h₂' := cofactorNormal_padicNorm_le_exp 2 X (c 1) t h₂ (i 1) have h₃' := cofactorNormal_padicNorm_le_exp 3 X (c 2) t h₃ (i 2) have hp₂ : (0 : ℝ) ≤ padicNorm 2 (cofactorNormal X (i 1)) := by exact_mod_cast padicNorm.nonneg (cofactorNormal X (i 1)) have hp₃ : (0 : ℝ) ≤ padicNorm 3 (cofactorNormal X (i 2)) := by exact_mod_cast padicNorm.nonneg (cofactorNormal X (i 2)) calc _ ≤ ((n.factorial : ℝ) * Real.exp (((∑ j, c 0 j) - c 0 (i 0)) * t)) * Real.exp (((∑ j, c 1 j) - c 1 (i 1)) * t) * Real.exp (((∑ j, c 2 j) - c 2 (i 2)) * t) := mul_le_mul (mul_le_mul h₀ h₂' hp₂ (by positivity)) h₃' hp₃ (by positivity) _ = _ := by rw [mul_assoc, mul_assoc, ← Real.exp_add, ← Real.exp_add] congr 2 simp only [Fin.sum_univ_succ, Fin.sum_univ_zero] norm_num ring def primitive_cofactor_three_place_upper {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (X : Matrix (Fin (n + 1)) (Fin n) ℤ) (g : ℤ) (hg : g ≠ 0) (a : Fin (n + 1) → ℤ) (hfactor : ∀ j, cofactorNormal X j = g * a j) (c : Fin 3 → Fin (n + 1) → ℝ) (t : ℝ) (hInf : ∀ i j, ‖(A * X.map (Int.castRingHom ℚ)) i j‖ ≤ Real.exp (c 0 i * t)) (h₂ : ∀ i j, (padicNorm 2 (X i j : ℚ) : ℝ) ≤ Real.exp (c 1 i * t)) (h₃ : ∀ i j, (padicNorm 3 (X i j : ℚ) : ℝ) ≤ Real.exp (c 2 i * t)) (i : Fin 3 → Fin (n + 1)) : ‖(cofactorTransform A).mulVec (fun j => (a j : ℚ)) (i 0)‖ * (padicNorm 2 (a (i 1) : ℚ) : ℝ) * (padicNorm 3 (a (i 2) : ℚ) : ℝ) ≤ (n.factorial : ℝ) * Real.exp (((∑ v, ∑ j, c v j) - ∑ v, c v (i v)) * t) := by have hnormal : cofactorNormal (X.map (Int.castRingHom ℚ)) = (g : ℚ) • (fun j => (a j : ℚ)) := by ext j rw [cofactorNormal_map] change ((cofactorNormal X j : ℤ) : ℚ) = (g : ℚ) * (a j : ℚ) rw [hfactor, Int.cast_mul] have htrans : cofactorNormal (A * X.map (Int.castRingHom ℚ)) = (g : ℚ) • (cofactorTransform A).mulVec (fun j => (a j : ℚ)) := by rw [cofactorNormal_mul, hnormal, Matrix.mulVec_smul] rfl have hupper := cofactor_three_place_upper A (X.map (Int.castRingHom ℚ)) c t hInf h₂ h₃ i rw [hnormal, htrans] at hupper exact (remove_integer_three_place_scalar g hg _ _ _).trans hupper def primitive_cofactor_height_lower {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (X : Matrix (Fin (n + 1)) (Fin n) ℤ) (g : ℤ) (hg : g ≠ 0) (a : Fin (n + 1) → ℤ) (hprimitive : Finset.univ.gcd a = 1) (hfactor : ∀ j, cofactorNormal X j = g * a j) (c : Fin 3 → Fin (n + 1) → ℝ) (t ρ : ℝ) (ht : 0 ≤ t) (hInf : ∀ i j, ‖(A * X.map (Int.castRingHom ℚ)) i j‖ ≤ Real.exp (c 0 i * t)) (h₂ : ∀ i j, (padicNorm 2 (X i j : ℚ) : ℝ) ≤ Real.exp (c 1 i * t)) (h₃ : ∀ i j, (padicNorm 3 (X i j : ℚ) : ℝ) ≤ Real.exp (c 2 i * t)) (hc : (∑ v, ∑ j, c v j) ≤ -ρ) (i : Fin 3 → Fin (n + 1)) (hi : -ρ / 2 ≤ ∑ v, c v (i v)) (hi₂ : a (i 1) ≠ 0) (hi₃ : a (i 2) ≠ 0) (D z : ℤ) (hD : 0 < D) (hx : (cofactorTransform A).mulVec (fun j => (a j : ℚ)) (i 0) ≠ 0) (hz : (D : ℚ) * (cofactorTransform A).mulVec (fun j => (a j : ℚ)) (i 0) = z) : ρ * t / 4 - Real.log ((D : ℝ) * (n.factorial : ℝ)) / 2 ≤ Height.logHeight (fun j => (a j : ℚ)) := by have hu := primitive_cofactor_three_place_upper A X g hg a hfactor c t hInf h₂ h₃ i have he : ((∑ v, ∑ j, c v j) - ∑ v, c v (i v)) * t ≤ -ρ * t / 2 := by have h : (∑ v, ∑ j, c v j) - ∑ v, c v (i v) ≤ -ρ / 2 := by linarith nlinarith [mul_le_mul_of_nonneg_right h ht] have hu' := hu.trans (mul_le_mul_of_nonneg_left (Real.exp_le_exp.mpr he) (show (0 : ℝ) ≤ n.factorial by positivity)) have hl := primitive_normal_selected_product_lower a (i 1) (i 2) hi₂ hi₃ _ D z hD hx hz have hboth := hl.trans hu' have ha : a ≠ 0 := by intro h; exact hi₂ (congrFun h (i 1)) have hH : 0 < integerVectorMax a := lt_of_lt_of_le (by norm_num) (integerVectorMax_ge_one a ha) have hDr : (0 : ℝ) < D := by exact_mod_cast hD have hf : (0 : ℝ) < n.factorial := by exact_mod_cast Nat.factorial_pos n have hlog := Real.log_le_log (by positivity : 0 < 1 / ((D : ℝ) * integerVectorMax a ^ 2)) hboth rw [primitive_integer_logHeight a hprimitive] rw [Real.log_div one_ne_zero (by positivity), Real.log_one, Real.log_mul hDr.ne' (by positivity), Real.log_pow, Real.log_mul hf.ne' (Real.exp_ne_zero _), Real.log_exp] at hlog rw [Real.log_mul hDr.ne' hf.ne'] nlinarith end end Bounty end SubmissionComponent_CofactorHeightLower /- Component HyperplaneIndexSpecialization; SHA256 31e52aedcfb013b82de805ce732f687030e82431ae0d53f8e1ce4e79a642c88a -/ section SubmissionComponent_HyperplaneIndexSpecialization /- Saturation and specialization of weighted monomial orders. Removing zero-weight variables preserves the order during exact monomial division and can only increase it during specialization. The coefficient maps are actual injections of subvectors, so the coefficient sum norm does not increase. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I J R : Type*} def polynomialCoeffL1_le_coeff_embedding [NormedCommRing R] (P : MvPolynomial I R) (Q : MvPolynomial J R) (f : (J →₀ ℕ) → (I →₀ ℕ)) (hf : Function.Injective f) (hcoeff : ∀ d, MvPolynomial.coeff d Q = MvPolynomial.coeff (f d) P) : polynomialCoeffL1 Q ≤ polynomialCoeffL1 P := by classical have hs : Q.support.image f ⊆ P.support := by intro e he obtain ⟨d, hd, rfl⟩ := Finset.mem_image.mp he simpa only [MvPolynomial.mem_support_iff, ← hcoeff] using hd calc _ = ∑ e ∈ Q.support.image f, ‖MvPolynomial.coeff e P‖ := by rw [Finset.sum_image hf.injOn] simp only [polynomialCoeffL1, hcoeff] _ ≤ _ := Finset.sum_le_sum_of_subset_of_nonneg hs (fun _ _ _ => norm_nonneg _) def polynomialCoeffL1_divMonomial_le [NormedCommRing R] (P : MvPolynomial I R) (s : I →₀ ℕ) : polynomialCoeffL1 (P.divMonomial s) ≤ polynomialCoeffL1 P := polynomialCoeffL1_le_coeff_embedding P _ (s + ·) (add_right_injective s) (fun _ => MvPolynomial.coeff_divMonomial _ _ _) def polynomialCoeffL1_killCompl_le [NormedCommRing R] (f : I → J) (hf : Function.Injective f) (P : MvPolynomial J R) : polynomialCoeffL1 (P.killCompl hf) ≤ polynomialCoeffL1 P := polynomialCoeffL1_le_coeff_embedding P _ (Finsupp.mapDomain f) (Finsupp.mapDomain_injective hf) (fun _ => MvPolynomial.coeff_killCompl hf) def specialization_weight_mapDomain (w : J → ℕ) (f : I → J) (d : I →₀ ℕ) : Finsupp.weight w (d.mapDomain f) = Finsupp.weight (w ∘ f) d := by exact Finsupp.sum_mapDomain_index (f := f) (s := d) (h := fun i (v : ℕ) => v • w i) (fun _ => zero_smul _ _) (fun _ _ _ => add_smul ..) def weightedPolynomialOrder_killCompl_le (w : J → ℕ) (f : I → J) (hf : Function.Injective f) (P : MvPolynomial J ℚ) : weightedPolynomialOrder w P ≤ weightedPolynomialOrder (w ∘ f) (P.killCompl hf) := by apply (weightedPolynomialOrder_le_iff _ _ _).mpr intro d hd rw [MvPolynomial.coeff_killCompl] at hd simpa only [specialization_weight_mapDomain] using weightedPolynomialOrder_le_of_coeff w hd def weightedPolynomialOrder_monomial_one (w : I → ℕ) (s : I →₀ ℕ) : weightedPolynomialOrder w (MvPolynomial.monomial s (1 : ℚ)) = Finsupp.weight w s := by classical apply le_antisymm · apply weightedPolynomialOrder_le_of_coeff simp · apply (weightedPolynomialOrder_le_iff _ _ _).mpr intro d hd have hds : d = s := by by_contra hh simp [MvPolynomial.coeff_monomial, Ne.symm hh] at hd subst d exact le_rfl def monomial_mul_divMonomial_of_support [CommSemiring R] (P : MvPolynomial I R) (s : I →₀ ℕ) (hs : ∀ d ∈ P.support, s ≤ d) : MvPolynomial.monomial s 1 * P.divMonomial s = P := by have hz : P.modMonomial s = 0 := by ext d by_cases hsd : s ≤ d · simp [MvPolynomial.coeff_modMonomial_of_le P hsd] · rw [MvPolynomial.coeff_modMonomial_of_not_le P hsd, MvPolynomial.coeff_zero] exact MvPolynomial.notMem_support_iff.mp (fun hd => hsd (hs d hd)) simpa only [hz, add_zero] using P.divMonomial_add_modMonomial s def degreeOf_divMonomial_le [CommSemiring R] (P : MvPolynomial I R) (s : I →₀ ℕ) (i : I) : (P.divMonomial s).degreeOf i ≤ P.degreeOf i := by apply MvPolynomial.degreeOf_le_iff.mpr intro d hd have hp : s + d ∈ P.support := by simpa only [MvPolynomial.mem_support_iff, MvPolynomial.coeff_divMonomial] using hd exact (Nat.le_add_left _ _).trans (MvPolynomial.monomial_le_degreeOf i hp) def zeroCoordinateSpecialization [CommSemiring R] (z : I) : MvPolynomial I R →ₐ[R] MvPolynomial {i : I // i ≠ z} R := MvPolynomial.killCompl (f := Subtype.val) Subtype.val_injective /-- The coefficient slice at exponent `k` in the variable `z`. -/ def coordinateSlice [CommSemiring R] (z : I) (k : ℕ) (P : MvPolynomial I R) : MvPolynomial {i : I // i ≠ z} R := zeroCoordinateSpecialization z (P.divMonomial (Finsupp.single z k)) def coordinateSlice_coeff [CommSemiring R] (z : I) (k : ℕ) (P : MvPolynomial I R) (d : {i : I // i ≠ z} →₀ ℕ) : MvPolynomial.coeff d (coordinateSlice z k P) = MvPolynomial.coeff (Finsupp.single z k + d.mapDomain Subtype.val) P := by exact (MvPolynomial.coeff_killCompl Subtype.val_injective).trans (MvPolynomial.coeff_divMonomial _ _ _) def coordinate_exponent_split (z : I) (d : I →₀ ℕ) : Finsupp.single z (d z) + (d.comapDomain (Subtype.val : {i : I // i ≠ z} → I) Subtype.val_injective.injOn).mapDomain Subtype.val = d := by classical let e := d.comapDomain (Subtype.val : {i : I // i ≠ z} → I) Subtype.val_injective.injOn have hz : e.mapDomain Subtype.val z = 0 := by apply Finsupp.mapDomain_of_not_mem_image_support rintro ⟨j, _, hj⟩ exact j.property hj ext i by_cases hi : i = z · subst i change (Finsupp.single z (d z)) z + e.mapDomain Subtype.val z = d z simp only [Finsupp.single_eq_same, hz, add_zero] · have hh := Finsupp.mapDomain_apply Subtype.val_injective e (⟨i, hi⟩ : {i : I // i ≠ z}) change (Finsupp.single z (d z)) i + e.mapDomain Subtype.val i = d i rw [hh] simp only [e, Finsupp.comapDomain_apply, Finsupp.single_eq_of_ne hi, zero_add] def coordinateSlice_ne_zero_of_coeff [CommSemiring R] (z : I) (P : MvPolynomial I R) {d : I →₀ ℕ} (hd : MvPolynomial.coeff d P ≠ 0) : coordinateSlice z (d z) P ≠ 0 := by intro hz let e := d.comapDomain (Subtype.val : {i : I // i ≠ z} → I) Subtype.val_injective.injOn have hh := congrArg (MvPolynomial.coeff e) hz rw [coordinateSlice_coeff, MvPolynomial.coeff_zero] at hh have he : Finsupp.single z (d z) + e.mapDomain Subtype.val = d := coordinate_exponent_split z d exact hd (he ▸ hh) end end Bounty end SubmissionComponent_HyperplaneIndexSpecialization /- Component BlockHomogeneousDehomogenization; SHA256 80530dd4143d107cdac1261107f14a03bfeab0def789c269e60b29a457317d85 -/ section SubmissionComponent_BlockHomogeneousDehomogenization /- Exact dehomogenization of two-coordinate homogeneous blocks. The variable `Sum.inl i` is retained and `Sum.inr i` is set to one. Fixed block degrees make the map on supported exponents injective, preventing coefficient collisions. -/ namespace Bounty noncomputable section open scoped BigOperators variable {I R S : Type*} open scoped Classical in def blockLeftExponent (e : I ⊕ I →₀ ℕ) : I →₀ ℕ := e.comapDomain Sum.inl Sum.inl_injective.injOn open scoped Classical in def blockLeftExponent_apply (e : I ⊕ I →₀ ℕ) (i : I) : blockLeftExponent e i = e (Sum.inl i) := rfl open scoped Classical in def BlockHomogeneous [CommSemiring R] (r : I → ℕ) (P : MvPolynomial (I ⊕ I) R) : Prop := ∀ e ∈ P.support, ∀ i, e (Sum.inl i) + e (Sum.inr i) = r i open scoped Classical in def blockDehomogenize [CommSemiring R] : MvPolynomial (I ⊕ I) R →ₐ[R] MvPolynomial I R := MvPolynomial.aeval (Sum.elim MvPolynomial.X (fun _ => 1)) open scoped Classical in def blockDehomogenize_C [CommSemiring R] (a : R) : blockDehomogenize (I := I) (MvPolynomial.C a) = MvPolynomial.C a := by simp [blockDehomogenize] open scoped Classical in def blockDehomogenize_X_inl [CommSemiring R] (i : I) : blockDehomogenize (MvPolynomial.X (R := R) (Sum.inl i)) = MvPolynomial.X i := by simp [blockDehomogenize] open scoped Classical in def blockDehomogenize_X_inr [CommSemiring R] (i : I) : blockDehomogenize (MvPolynomial.X (R := R) (Sum.inr i)) = 1 := by simp [blockDehomogenize] open scoped Classical in def blockLeftExponent_injective_fixed (r : I → ℕ) {e d : I ⊕ I →₀ ℕ} (he : ∀ i, e (Sum.inl i) + e (Sum.inr i) = r i) (hd : ∀ i, d (Sum.inl i) + d (Sum.inr i) = r i) (h : blockLeftExponent e = blockLeftExponent d) : e = d := by ext j cases j with | inl i => exact DFunLike.congr_fun h i | inr i => have hi : e (Sum.inl i) = d (Sum.inl i) := DFunLike.congr_fun h i have := he i have := hd i omega open scoped Classical in def blockDehomogenize_monomial [CommSemiring R] (e : I ⊕ I →₀ ℕ) (a : R) : blockDehomogenize (MvPolynomial.monomial e a) = MvPolynomial.monomial (blockLeftExponent e) a := by rw [blockDehomogenize, MvPolynomial.aeval_monomial, MvPolynomial.monomial_eq] congr 1 nth_rw 1 [← Finsupp.comapDomain_sumElim_comapDomain e] rw [Finsupp.prod_sumElim] simp [blockLeftExponent, Function.comp_def] open scoped Classical in def blockDehomogenize_as_sum [CommSemiring R] (P : MvPolynomial (I ⊕ I) R) : blockDehomogenize P = ∑ e ∈ P.support, MvPolynomial.monomial (blockLeftExponent e) (MvPolynomial.coeff e P) := by nth_rw 1 [MvPolynomial.as_sum P] simp only [map_sum, blockDehomogenize_monomial] /- Every supported original coefficient is recovered exactly after dehomogenization. -/ open scoped Classical in def blockDehomogenize_coeff [CommSemiring R] (r : I → ℕ) (P : MvPolynomial (I ⊕ I) R) (hP : BlockHomogeneous r P) (e : I ⊕ I →₀ ℕ) (he : e ∈ P.support) : MvPolynomial.coeff (blockLeftExponent e) (blockDehomogenize P) = MvPolynomial.coeff e P := by classical rw [blockDehomogenize_as_sum, MvPolynomial.coeff_sum, Finset.sum_eq_single e] · simp · intro d hd hde have hh : blockLeftExponent d ≠ blockLeftExponent e := fun hh => hde (blockLeftExponent_injective_fixed r (hP d hd) (hP e he) hh) simp [MvPolynomial.coeff_monomial, hh] · exact fun hn => False.elim (hn he) open scoped Classical in def blockDehomogenize_support_subset [CommSemiring R] (P : MvPolynomial (I ⊕ I) R) : (blockDehomogenize P).support ⊆ P.support.image blockLeftExponent := by classical rw [blockDehomogenize_as_sum] intro d hd obtain ⟨e, he, hde⟩ := Finset.mem_biUnion.mp (MvPolynomial.support_sum hd) have hh := MvPolynomial.support_monomial_subset hde exact Finset.mem_image.mpr ⟨e, he, (Finset.mem_singleton.mp hh).symm⟩ open scoped Classical in def blockDehomogenize_support [CommSemiring R] (r : I → ℕ) (P : MvPolynomial (I ⊕ I) R) (hP : BlockHomogeneous r P) : (blockDehomogenize P).support = P.support.image blockLeftExponent := by classical apply Finset.Subset.antisymm (blockDehomogenize_support_subset P) intro d hd obtain ⟨e, he, rfl⟩ := Finset.mem_image.mp hd rw [MvPolynomial.mem_support_iff, blockDehomogenize_coeff r P hP e he] exact MvPolynomial.mem_support_iff.mp he open scoped Classical in def blockDehomogenize_ne_zero [CommSemiring R] (r : I → ℕ) {P : MvPolynomial (I ⊕ I) R} (hP : BlockHomogeneous r P) (hne : P ≠ 0) : blockDehomogenize P ≠ 0 := by classical obtain ⟨e, he⟩ := MvPolynomial.support_nonempty.mpr hne intro hz have hh := blockDehomogenize_coeff r P hP e he rw [hz, MvPolynomial.coeff_zero] at hh exact (MvPolynomial.mem_support_iff.mp he) hh.symm open scoped Classical in def blockDehomogenize_coeffL1 [NormedCommRing R] (r : I → ℕ) (P : MvPolynomial (I ⊕ I) R) (hP : BlockHomogeneous r P) : polynomialCoeffL1 (blockDehomogenize P) = polynomialCoeffL1 P := by classical unfold polynomialCoeffL1 rw [blockDehomogenize_support r P hP, Finset.sum_image] · exact Finset.sum_congr rfl (fun e he => congrArg norm (blockDehomogenize_coeff r P hP e he)) · intro e he d hd hh exact blockLeftExponent_injective_fixed r (hP e he) (hP d hd) hh open scoped Classical in def blockDehomogenize_degreeOf_le [CommSemiring R] (r : I → ℕ) (P : MvPolynomial (I ⊕ I) R) (hP : BlockHomogeneous r P) (i : I) : (blockDehomogenize P).degreeOf i ≤ r i := by classical apply MvPolynomial.degreeOf_le_iff.mpr intro d hd obtain ⟨e, he, rfl⟩ := Finset.mem_image.mp (blockDehomogenize_support_subset P hd) have := hP e he i simp only [blockLeftExponent_apply] omega open scoped Classical in def blockDehomogenize_map [CommSemiring R] [CommSemiring S] (f : R →+* S) (P : MvPolynomial (I ⊕ I) R) : MvPolynomial.map f (blockDehomogenize P) = blockDehomogenize (MvPolynomial.map f P) := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => cases i <;> simp only [map_mul, MvPolynomial.map_X, blockDehomogenize_X_inl, blockDehomogenize_X_inr, map_one, hP] open scoped Classical in def block_weight_left (w : I → ℕ) (e : I ⊕ I →₀ ℕ) : Finsupp.weight (Sum.elim w (fun _ => 0)) e = Finsupp.weight w (blockLeftExponent e) := by rw [Finsupp.weight_apply, Finsupp.weight_apply] nth_rw 1 [← Finsupp.comapDomain_sumElim_comapDomain e] rw [Finsupp.sum_sumElim] simp [blockLeftExponent, Function.comp_def] open scoped Classical in def blockDehomogenize_order (r w : I → ℕ) (P : MvPolynomial (I ⊕ I) ℚ) (hP : BlockHomogeneous r P) : weightedPolynomialOrder (Sum.elim w (fun _ => 0)) P = weightedPolynomialOrder w (blockDehomogenize P) := by apply le_antisymm · apply (weightedPolynomialOrder_le_iff _ _ _).mpr intro d hd obtain ⟨e, he, rfl⟩ := Finset.mem_image.mp (blockDehomogenize_support_subset P (MvPolynomial.mem_support_iff.mpr hd)) simpa only [block_weight_left] using weightedPolynomialOrder_le_of_coeff (Sum.elim w (fun _ => 0)) (MvPolynomial.mem_support_iff.mp he) · apply (weightedPolynomialOrder_le_iff _ _ _).mpr intro e he have hc : MvPolynomial.coeff (blockLeftExponent e) (blockDehomogenize P) ≠ 0 := by rw [blockDehomogenize_coeff r P hP e (MvPolynomial.mem_support_iff.mpr he)] exact he simpa only [block_weight_left] using weightedPolynomialOrder_le_of_coeff w hc /- A substitution homogeneous of the weight of each input variable preserves weighted homogeneity. This is used for changes of coordinates inside blocks. -/ open scoped Classical in def weightedHomogeneous_aeval [CommSemiring R] {J : Type*} (w : J → ℕ) (g : J → MvPolynomial J R) (hg : ∀ j, MvPolynomial.IsWeightedHomogeneous w (g j) (w j)) (P : MvPolynomial J R) (n : ℕ) (hP : MvPolynomial.IsWeightedHomogeneous w P n) : MvPolynomial.IsWeightedHomogeneous w (MvPolynomial.aeval g P) n := by classical nth_rw 1 [MvPolynomial.as_sum P] rw [map_sum] apply MvPolynomial.IsWeightedHomogeneous.sum intro e he rw [MvPolynomial.aeval_monomial] change MvPolynomial.IsWeightedHomogeneous w (MvPolynomial.C (MvPolynomial.coeff e P) * e.prod (fun j a => g j ^ a)) n have hprod := MvPolynomial.IsWeightedHomogeneous.prod e.support (fun j => g j ^ e j) (fun j => e j • w j) (fun j _ => (hg j).pow (e j)) have hsum : ∑ j ∈ e.support, e j • w j = n := hP (MvPolynomial.mem_support_iff.mp he) rw [hsum] at hprod exact hprod.C_mul _ open scoped Classical in def blockDegreeWeight (i : I) : I ⊕ I → ℕ := Sum.elim (Pi.single i 1) (Pi.single i 1) open scoped Classical in def blockDegreeWeight_apply (i : I) (e : I ⊕ I →₀ ℕ) : Finsupp.weight (blockDegreeWeight i) e = e (Sum.inl i) + e (Sum.inr i) := by rw [Finsupp.weight_apply] nth_rw 1 [← Finsupp.comapDomain_sumElim_comapDomain e] rw [Finsupp.sum_sumElim] change Finsupp.weight (Pi.single i 1) (e.comapDomain Sum.inl Sum.inl_injective.injOn) + Finsupp.weight (Pi.single i 1) (e.comapDomain Sum.inr Sum.inr_injective.injOn) = _ simp only [Finsupp.weight_single_one_apply, Finsupp.comapDomain_apply] open scoped Classical in def blockHomogeneous_iff_weighted [CommSemiring R] (r : I → ℕ) (P : MvPolynomial (I ⊕ I) R) : BlockHomogeneous r P ↔ ∀ i, MvPolynomial.IsWeightedHomogeneous (blockDegreeWeight i) P (r i) := by constructor · intro h i e he rw [blockDegreeWeight_apply] exact h e (MvPolynomial.mem_support_iff.mpr he) i · intro h e he i simpa only [blockDegreeWeight_apply] using h i (MvPolynomial.mem_support_iff.mp he) /- Homogeneous Taylor translation in each pair `(X_i,Y_i)`. -/ open scoped Classical in def blockTaylor [CommSemiring R] (β : I → R) : MvPolynomial (I ⊕ I) R →ₐ[R] MvPolynomial (I ⊕ I) R := MvPolynomial.aeval (Sum.elim (fun i => MvPolynomial.X (Sum.inl i) + MvPolynomial.C (β i) * MvPolynomial.X (Sum.inr i)) (fun i => MvPolynomial.X (Sum.inr i))) open scoped Classical in open scoped Classical in def blockTaylor_X_inl [CommSemiring R] (β : I → R) (i : I) : blockTaylor β (MvPolynomial.X (Sum.inl i)) = MvPolynomial.X (Sum.inl i) + MvPolynomial.C (β i) * MvPolynomial.X (Sum.inr i) := by simp [blockTaylor] open scoped Classical in def blockTaylor_X_inr [CommSemiring R] (β : I → R) (i : I) : blockTaylor β (MvPolynomial.X (Sum.inr i)) = MvPolynomial.X (Sum.inr i) := by simp [blockTaylor] open scoped Classical in def blockTaylor_homogeneous [CommSemiring R] (r : I → ℕ) (β : I → R) (P : MvPolynomial (I ⊕ I) R) (hP : BlockHomogeneous r P) : BlockHomogeneous r (blockTaylor β P) := by apply (blockHomogeneous_iff_weighted r _).mpr intro i apply weightedHomogeneous_aeval · intro j cases j with | inl j => exact (MvPolynomial.isWeightedHomogeneous_X R (blockDegreeWeight i) (Sum.inl j)).add ((MvPolynomial.isWeightedHomogeneous_X R (blockDegreeWeight i) (Sum.inr j)).C_mul (β j)) | inr j => exact MvPolynomial.isWeightedHomogeneous_X R _ _ · exact (blockHomogeneous_iff_weighted r P).mp hP i open scoped Classical in def blockDehomogenize_blockTaylor (β : I → ℚ) (P : MvPolynomial (I ⊕ I) ℚ) : blockDehomogenize (blockTaylor β P) = weightedTaylor β (blockDehomogenize P) := by induction P using MvPolynomial.induction_on with | C a => simp [weightedTaylor_C] | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P j hP => cases j <;> simp only [map_mul, blockTaylor_X_inl, blockTaylor_X_inr, blockDehomogenize_X_inl, blockDehomogenize_X_inr, map_add, blockDehomogenize_C, mul_one, weightedTaylor_X, map_one, hP] /- The order in the homogeneous forms `X_i - β_i Y_i` becomes the ordinary Taylor index at `β` after dehomogenization. -/ open scoped Classical in def blockDehomogenize_hyperplane_index (r w : I → ℕ) (β : I → ℚ) (P : MvPolynomial (I ⊕ I) ℚ) (hP : BlockHomogeneous r P) : weightedPolynomialOrder (Sum.elim w (fun _ => 0)) (blockTaylor β P) = weightedPolynomialIndex w β (blockDehomogenize P) := by rw [blockDehomogenize_order r w _ (blockTaylor_homogeneous r β P hP), blockDehomogenize_blockTaylor] rfl end end Bounty end SubmissionComponent_BlockHomogeneousDehomogenization /- Component RationalHyperplanePairHeight; SHA256 a9ece804862ac1f70bc8c3432e983633d3d69a1de9ae845d73baf482114ccd4e -/ section SubmissionComponent_RationalHyperplanePairHeight /- A rational hyperplane has a coefficient pair whose height is at least the projective coefficient height divided by the projective dimension. -/ namespace Bounty noncomputable section open scoped BigOperators /-- Each coordinate is a coordinate of the Segre product of the pairs `[x_i,1]`. Projection cannot increase projective height. -/ def projective_logHeight_le_sum_coordinate_heights {K I : Type*} [Field K] [Height.AdmissibleAbsValues K] [Fintype I] (x : I → K) : Height.logHeight x ≤ ∑ i, Height.logHeight₁ (x i) := by classical let y (i : I) : Fin 2 → K := ![x i, 1] have hy (i : I) : y i ≠ 0 := by intro hz have hh := congrFun hz 1 simp [y] at hh let pick (i : I) (a : I) : Fin 2 := if a = i then 0 else 1 have hpick : (fun v : I → Fin 2 => ∏ a, y a (v a)) ∘ pick = x := by funext i change (∏ a, y a (if a = i then 0 else 1)) = x i rw [Finset.prod_eq_single i] · simp [y] · intro a _ hai simp [hai, y] · simp have hh := Height.logHeight_comp_le pick (fun v : I → Fin 2 => ∏ a, y a (v a)) rw [hpick, Height.logHeight_fun_prod_eq hy] at hh simpa only [y, ← Height.logHeight₁_eq_logHeight] using hh def rational_hyperplane_height_le_sum_ratios {I : Type*} [Fintype I] [DecidableEq I] (b : I → ℚ) (j : I) (hj : b j ≠ 0) : Height.logHeight b ≤ ∑ i ∈ Finset.univ.erase j, Height.logHeight₁ (b i / b j) := by have hscale : Height.logHeight (fun i => b i / b j) = Height.logHeight b := by have he : (fun i => b i / b j) = (b j)⁻¹ • b := by ext i simp only [Pi.smul_apply, smul_eq_mul, div_eq_mul_inv, mul_comm] rw [he, Height.logHeight_smul_eq_logHeight b (inv_ne_zero hj)] have hh := projective_logHeight_le_sum_coordinate_heights (fun i => b i / b j) rw [hscale, ← Finset.sum_erase_add Finset.univ (fun i => Height.logHeight₁ (b i / b j)) (Finset.mem_univ j)] at hh simpa only [div_self hj, Height.logHeight₁_one, add_zero] using hh /-- Any nonzero coefficient may be used as the denominator of the selected ratio. -/ def exists_rational_hyperplane_height_pair {d : ℕ} (hd : 1 ≤ d) (b : Fin (d + 1) → ℚ) (j : Fin (d + 1)) (hj : b j ≠ 0) : ∃ i : Fin (d + 1), i ≠ j ∧ Height.logHeight b / (d : ℝ) ≤ Height.logHeight₁ (-b i / b j) := by classical let s : Finset (Fin (d + 1)) := Finset.univ.erase j have hcard : s.card = d := by simp [s] have hs : s.Nonempty := Finset.card_pos.mp (by omega) obtain ⟨i, hi, hmax⟩ := s.exists_max_image (fun a => Height.logHeight₁ (b a / b j)) hs have hsum : (∑ a ∈ s, Height.logHeight₁ (b a / b j)) ≤ (d : ℝ) * Height.logHeight₁ (b i / b j) := by calc _ ≤ ∑ _a ∈ s, Height.logHeight₁ (b i / b j) := Finset.sum_le_sum hmax _ = _ := by simp only [Finset.sum_const, nsmul_eq_mul, hcard] refine ⟨i, (Finset.mem_erase.mp hi).1, ?_⟩ rw [neg_div, Height.logHeight₁_neg] apply (div_le_iff₀ (by exact_mod_cast (show 0 < d by omega))).mpr simpa only [mul_comm] using (rational_hyperplane_height_le_sum_ratios b j hj).trans hsum end end Bounty end SubmissionComponent_RationalHyperplanePairHeight /- Component RationalHyperplaneIndex; SHA256 ee5fc430ea06146f893b39c9c8b8d922fe741359ec652c92207155859472be5f -/ section SubmissionComponent_RationalHyperplaneIndex /- Concrete coordinate changes and saturation for the rational hyperplane index. Pivots and complementary variables are separated by a sum type. -/ namespace Bounty noncomputable section open scoped BigOperators variable {B C I J R : Type*} /- Set one variable to zero while keeping the ambient variable type fixed. -/ open scoped Classical in def zeroVariable [CommSemiring R] (z : I) : MvPolynomial I R →ₐ[R] MvPolynomial I R := MvPolynomial.aeval (fun i => if i = z then 0 else MvPolynomial.X i) open scoped Classical in open scoped Classical in def zeroVariable_X [CommSemiring R] (z i : I) : zeroVariable z (MvPolynomial.X (R := R) i) = if i = z then 0 else MvPolynomial.X i := by simp [zeroVariable] open scoped Classical in def zeroCoordinateSpecialization_X_self [CommSemiring R] (z : I) : zeroCoordinateSpecialization z (MvPolynomial.X (R := R) z) = 0 := by change (MvPolynomial.monomial (Finsupp.single z 1) (1 : R)).killCompl Subtype.val_injective = 0 apply MvPolynomial.killCompl_monomial_eq_zero_of_notMem_range _ _ (a := z) · simp · rintro ⟨i, hi⟩ exact i.property hi open scoped Classical in def zeroCoordinateSpecialization_X_ne [CommSemiring R] (z i : I) (hi : i ≠ z) : zeroCoordinateSpecialization z (MvPolynomial.X (R := R) i) = MvPolynomial.X ⟨i, hi⟩ := by simpa only [zeroCoordinateSpecialization, MvPolynomial.rename_X] using MvPolynomial.killCompl_rename_app Subtype.val_injective (MvPolynomial.X (R := R) (⟨i, hi⟩ : {i : I // i ≠ z})) open scoped Classical in def zeroVariable_eq_rename_specialization [CommSemiring R] (z : I) (P : MvPolynomial I R) : zeroVariable z P = MvPolynomial.rename Subtype.val (zeroCoordinateSpecialization z P) := by induction P using MvPolynomial.induction_on with | C a => simp [zeroCoordinateSpecialization] | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => rw [map_mul, map_mul, map_mul, hP, zeroVariable_X] by_cases hi : i = z · subst i simp only [zeroCoordinateSpecialization_X_self, map_zero, ite_true] · rw [if_neg hi, zeroCoordinateSpecialization_X_ne z i hi, MvPolynomial.rename_X] open scoped Classical in def zeroVariable_coeffL1_le [NormedCommRing R] (z : I) (P : MvPolynomial I R) : polynomialCoeffL1 (zeroVariable z P) ≤ polynomialCoeffL1 P := by rw [zeroVariable_eq_rename_specialization, polynomialCoeffL1_rename_of_injective _ Subtype.val_injective] exact polynomialCoeffL1_killCompl_le _ Subtype.val_injective P open scoped Classical in def zeroVariable_support_subset [CommSemiring R] (z : I) (P : MvPolynomial I R) : (zeroVariable z P).support ⊆ P.support := by rw [zeroVariable_eq_rename_specialization] exact MvPolynomial.support_rename_killCompl_subset Subtype.val_injective open scoped Classical in def zeroVariable_degreeOf_le [CommSemiring R] (z : I) (P : MvPolynomial I R) (i : I) : (zeroVariable z P).degreeOf i ≤ P.degreeOf i := by simp only [MvPolynomial.degreeOf_eq_sup] exact Finset.sup_mono (zeroVariable_support_subset z P) open scoped Classical in def weightedPolynomialOrder_rename_injective (w : J → ℕ) (f : I → J) (hf : Function.Injective f) (P : MvPolynomial I ℚ) : weightedPolynomialOrder w (MvPolynomial.rename f P) = weightedPolynomialOrder (w ∘ f) P := by classical apply le_antisymm · apply (weightedPolynomialOrder_le_iff _ _ _).mpr intro d hd have hh : MvPolynomial.coeff (d.mapDomain f) (MvPolynomial.rename f P) ≠ 0 := by rwa [MvPolynomial.coeff_rename_mapDomain f hf] simpa only [specialization_weight_mapDomain] using weightedPolynomialOrder_le_of_coeff w hh · apply (weightedPolynomialOrder_le_iff _ _ _).mpr intro e he have hs : e ∈ (MvPolynomial.rename f P).support := MvPolynomial.mem_support_iff.mpr he rw [MvPolynomial.support_rename_of_injective hf] at hs obtain ⟨d, hd, rfl⟩ := Finset.mem_image.mp hs simpa only [specialization_weight_mapDomain] using weightedPolynomialOrder_le_of_coeff (w ∘ f) (MvPolynomial.mem_support_iff.mp hd) open scoped Classical in def zeroVariable_order_le (w : I → ℕ) (z : I) (P : MvPolynomial I ℚ) : weightedPolynomialOrder w P ≤ weightedPolynomialOrder w (zeroVariable z P) := by rw [zeroVariable_eq_rename_specialization, weightedPolynomialOrder_rename_injective _ _ Subtype.val_injective] exact weightedPolynomialOrder_killCompl_le _ _ Subtype.val_injective P /- An invertible triangular change: every pivot is translated by a polynomial in the complementary variables, which themselves are fixed. -/ open scoped Classical in def complementShear [CommSemiring R] (g : B → MvPolynomial C R) : MvPolynomial (B ⊕ C) R →ₐ[R] MvPolynomial (B ⊕ C) R := MvPolynomial.aeval (Sum.elim (fun b => MvPolynomial.X (Sum.inl b) + MvPolynomial.rename Sum.inr (g b)) (fun c => MvPolynomial.X (Sum.inr c))) open scoped Classical in open scoped Classical in def complementShear_X_inl [CommSemiring R] (g : B → MvPolynomial C R) (b : B) : complementShear g (MvPolynomial.X (Sum.inl b)) = MvPolynomial.X (Sum.inl b) + MvPolynomial.rename Sum.inr (g b) := by simp [complementShear] open scoped Classical in def complementShear_X_inr [CommSemiring R] (g : B → MvPolynomial C R) (c : C) : complementShear g (MvPolynomial.X (Sum.inr c)) = MvPolynomial.X (Sum.inr c) := by simp [complementShear] open scoped Classical in def complementShear_rename_inr [CommSemiring R] (g : B → MvPolynomial C R) (P : MvPolynomial C R) : complementShear g (MvPolynomial.rename Sum.inr P) = MvPolynomial.rename Sum.inr P := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P c hP => simp only [map_mul, MvPolynomial.rename_X, complementShear_X_inr, hP] open scoped Classical in def complementShear_comp [CommSemiring R] (g h : B → MvPolynomial C R) (P : MvPolynomial (B ⊕ C) R) : complementShear g (complementShear h P) = complementShear (g + h) P := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => cases i <;> simp only [map_mul, complementShear_X_inl, complementShear_X_inr, map_add, complementShear_rename_inr, Pi.add_apply, hP, add_assoc] open scoped Classical in def complementShear_zero [CommSemiring R] (P : MvPolynomial (B ⊕ C) R) : complementShear (0 : B → MvPolynomial C R) P = P := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => cases i <;> simp only [map_mul, complementShear_X_inl, complementShear_X_inr, Pi.zero_apply, map_zero, add_zero, hP] open scoped Classical in def complementShear_inverse [CommRing R] (g : B → MvPolynomial C R) (P : MvPolynomial (B ⊕ C) R) : complementShear (-g) (complementShear g P) = P := by rw [complementShear_comp, neg_add_cancel, complementShear_zero] open scoped Classical in def complementShear_injective [CommRing R] (g : B → MvPolynomial C R) : Function.Injective (complementShear g) := by intro P Q h have hh := congrArg (complementShear (-g)) h simpa only [complementShear_inverse] using hh open scoped Classical in def zeroVariable_rename_inr [CommSemiring R] (c : C) (P : MvPolynomial C R) : zeroVariable (Sum.inr c : B ⊕ C) (MvPolynomial.rename Sum.inr P) = MvPolynomial.rename Sum.inr (zeroVariable c P) := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp only [map_mul, MvPolynomial.rename_X, zeroVariable_X, Sum.inr.injEq, hP] split_ifs <;> simp only [map_zero, MvPolynomial.rename_X] open scoped Classical in def zeroVariable_complementShear [CommSemiring R] (g : B → MvPolynomial C R) (c : C) (P : MvPolynomial (B ⊕ C) R) : zeroVariable (Sum.inr c) (complementShear g P) = complementShear (fun b => zeroVariable c (g b)) (zeroVariable (Sum.inr c) P) := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => cases i with | inl b => simp only [map_mul, complementShear_X_inl, map_add, zeroVariable_X, Sum.inl_ne_inr, if_false, zeroVariable_rename_inr, hP] | inr i => simp only [map_mul, complementShear_X_inr, zeroVariable_X, Sum.inr.injEq, hP] split_ifs <;> simp only [map_zero, complementShear_X_inr] /- The support order after the concrete inverse-form coordinate change. -/ open scoped Classical in def complementHyperplaneIndex (w : B → ℕ) (g : B → MvPolynomial C ℚ) (P : MvPolynomial (B ⊕ C) ℚ) : ℕ∞ := weightedPolynomialOrder (Sum.elim w (fun _ => 0)) (complementShear g P) open scoped Classical in def zeroVariable_map {S : Type*} [CommSemiring R] [CommSemiring S] (f : R →+* S) (z : I) (P : MvPolynomial I R) : MvPolynomial.map f (zeroVariable z P) = zeroVariable z (MvPolynomial.map f P) := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp only [map_mul, MvPolynomial.map_X, zeroVariable_X, hP] split_ifs <;> simp only [map_zero, MvPolynomial.map_X] open scoped Classical in def zeroVariable_degreeOf_self [CommSemiring R] (z : I) (P : MvPolynomial I R) : (zeroVariable z P).degreeOf z = 0 := by apply Nat.eq_zero_of_le_zero apply MvPolynomial.degreeOf_le_iff.mpr intro e he rw [zeroVariable_eq_rename_specialization, MvPolynomial.support_rename_of_injective Subtype.val_injective] at he obtain ⟨d, _, rfl⟩ := Finset.mem_image.mp he apply Nat.le_zero.mpr apply Finsupp.mapDomain_of_not_mem_image_support rintro ⟨i, _, hi⟩ exact i.property hi open scoped Classical in def complementHyperplaneIndex_saturation (w : B → ℕ) (g : B → MvPolynomial C ℚ) (c : C) (k : ℕ) (P : MvPolynomial (B ⊕ C) ℚ) : complementHyperplaneIndex w g (MvPolynomial.X (Sum.inr c) ^ k * P) = complementHyperplaneIndex w g P := by unfold complementHyperplaneIndex rw [map_mul, map_pow, complementShear_X_inr, weightedPolynomialOrder_mul, MvPolynomial.X_pow_eq_monomial, weightedPolynomialOrder_monomial_one] simp only [Finsupp.weight_single, Sum.elim_inr, smul_zero, Nat.cast_zero, zero_add] open scoped Classical in def complementHyperplaneIndex_specialization (w : B → ℕ) (g : B → MvPolynomial C ℚ) (c : C) (P : MvPolynomial (B ⊕ C) ℚ) : complementHyperplaneIndex w g P ≤ complementHyperplaneIndex w (fun b => zeroVariable c (g b)) (zeroVariable (Sum.inr c) P) := by have hh := zeroVariable_order_le (Sum.elim w (fun _ => 0)) (Sum.inr c) (complementShear g P) rw [zeroVariable_complementShear] at hh exact hh /- Fixed block degrees, expressed using the concrete weights of a block map. -/ open scoped Classical in def MultiBlockHomogeneous {H : Type*} [CommSemiring R] (block : I → H) (r : H → ℕ) (P : MvPolynomial I R) : Prop := ∀ h, MvPolynomial.IsWeightedHomogeneous (fun i => if block i = h then 1 else 0) P (r h) open scoped Classical in def weightedHomogeneous_divMonomial [CommSemiring R] (w : I → ℕ) (P : MvPolynomial I R) (n : ℕ) (hP : MvPolynomial.IsWeightedHomogeneous w P n) (s : I →₀ ℕ) : MvPolynomial.IsWeightedHomogeneous w (P.divMonomial s) (n - Finsupp.weight w s) := by intro e he rw [MvPolynomial.coeff_divMonomial] at he have hh := hP he rw [map_add] at hh omega open scoped Classical in def weightedHomogeneous_zeroVariable [CommSemiring R] (w : I → ℕ) (P : MvPolynomial I R) (n : ℕ) (hP : MvPolynomial.IsWeightedHomogeneous w P n) (z : I) : MvPolynomial.IsWeightedHomogeneous w (zeroVariable z P) n := by intro e he exact hP (MvPolynomial.mem_support_iff.mp (zeroVariable_support_subset z P (MvPolynomial.mem_support_iff.mpr he))) /- An actual integer coefficient slice in a complementary variable preserves nonzero, lowers block degrees, and cannot lower the concrete hyperplane index. -/ open scoped Classical in def exists_integer_complement_specialization {H : Type*} [DecidableEq H] (block : B ⊕ C → H) (r : H → ℕ) (w : B → ℕ) (g : B → MvPolynomial C ℚ) (c : C) (P : MvPolynomial (B ⊕ C) ℤ) (hP : P ≠ 0) (hhom : MultiBlockHomogeneous block r P) : ∃ k : ℕ, ∃ Q : MvPolynomial (B ⊕ C) ℤ, Q = zeroVariable (Sum.inr c) (P.divMonomial (Finsupp.single (Sum.inr c) k)) ∧ Q ≠ 0 ∧ Q.degreeOf (Sum.inr c) = 0 ∧ (∀ i, Q.degreeOf i ≤ P.degreeOf i) ∧ polynomialCoeffL1 Q ≤ polynomialCoeffL1 P ∧ MultiBlockHomogeneous block (fun h => r h - if block (Sum.inr c) = h then k else 0) Q ∧ complementHyperplaneIndex w g (MvPolynomial.map (Int.castRingHom ℚ) P) ≤ complementHyperplaneIndex w (fun b => zeroVariable c (g b)) (MvPolynomial.map (Int.castRingHom ℚ) Q) := by classical obtain ⟨d, hd, hmin⟩ := P.support.exists_min_image (fun e => e (Sum.inr c)) (MvPolynomial.support_nonempty.mpr hP) let k := d (Sum.inr c) let V := P.divMonomial (Finsupp.single (Sum.inr c) k) let Q := zeroVariable (Sum.inr c) V have hdiv : ∀ e ∈ P.support, Finsupp.single (Sum.inr c) k ≤ e := by intro e he exact Finsupp.single_le_iff.mpr (hmin e he) have hfactor : P = MvPolynomial.X (Sum.inr c) ^ k * V := by rw [MvPolynomial.X_pow_eq_monomial] exact (monomial_mul_divMonomial_of_support P _ hdiv).symm have hQ : Q ≠ 0 := by rw [show Q = MvPolynomial.rename Subtype.val (coordinateSlice (Sum.inr c) k P) from zeroVariable_eq_rename_specialization _ _] exact fun hz => (coordinateSlice_ne_zero_of_coeff (Sum.inr c) P (MvPolynomial.mem_support_iff.mp hd)) ((MvPolynomial.rename_eq_zero_iff_of_injective _ Subtype.val_injective).mp hz) refine ⟨k, Q, rfl, hQ, zeroVariable_degreeOf_self _ _, ?_, ?_, ?_, ?_⟩ · intro i exact (zeroVariable_degreeOf_le _ _ i).trans (degreeOf_divMonomial_le P _ i) · exact (zeroVariable_coeffL1_le _ V).trans (polynomialCoeffL1_divMonomial_le P _) · intro h have hh := weightedHomogeneous_zeroVariable _ V _ (weightedHomogeneous_divMonomial _ P _ (hhom h) _) (Sum.inr c) simpa only [Finsupp.weight_single, smul_eq_mul, mul_ite, mul_one, mul_zero] using hh · have hh := complementHyperplaneIndex_specialization w g c (MvPolynomial.map (Int.castRingHom ℚ) V) have hf := congrArg (MvPolynomial.map (Int.castRingHom ℚ)) hfactor simp only [map_mul, map_pow, MvPolynomial.map_X] at hf rw [← zeroVariable_map] at hh rw [hf, complementHyperplaneIndex_saturation] exact hh end end Bounty end SubmissionComponent_RationalHyperplaneIndex /- Component BalancedMonomialCounting; SHA256 1707de2028969a92cf3881739d0bf662b6e44eb9bd72d62a885e0373addd8d6d -/ section SubmissionComponent_BalancedMonomialCounting /- Exact finite second-moment counting for arrays of weak compositions. -/ namespace Bounty noncomputable section open scoped BigOperators def finite_product_mixed_sum_zero {I : Type*} [Fintype I] [DecidableEq I] {β : I → Type*} [∀ i, Fintype (β i)] (f : ∀ i, β i → ℝ) (hf : ∀ i, ∑ t, f i t = 0) {i j : I} (hij : i ≠ j) : ∑ x : ∀ i, β i, f i (x i) * f j (x j) = 0 := by classical have hji : j ≠ i := Ne.symm hij calc _ = ∑ y : β i × (∀ a : {a // a ≠ i}, β a), f i y.1 * f j (y.2 ⟨j, hji⟩) := by apply Fintype.sum_equiv (Equiv.piSplitAt i β) intro x rfl _ = 0 := by rw [Fintype.sum_prod_type] simp_rw [← Finset.mul_sum] rw [← Finset.sum_mul, hf i, zero_mul] def finite_product_second_moment {I : Type*} [Fintype I] [DecidableEq I] {β : I → Type*} [∀ i, Fintype (β i)] (f : ∀ i, β i → ℝ) (hf : ∀ i, ∑ t, f i t = 0) : (∑ x : ∀ i, β i, (∑ i, f i (x i)) ^ 2) = ∑ i, ∑ x : ∀ i, β i, (f i (x i)) ^ 2 := by classical simp_rw [pow_two, Fintype.sum_mul_sum] rw [Finset.sum_comm] apply Finset.sum_congr rfl intro i _ rw [Finset.sum_comm] rw [Finset.sum_eq_single i] · intro j _ hji exact finite_product_mixed_sum_zero f hf (Ne.symm hji) · simp def finite_product_second_moment_le {I : Type*} [Fintype I] [DecidableEq I] {β : I → Type*} [∀ i, Fintype (β i)] (f : ∀ i, β i → ℝ) (hf : ∀ i, ∑ t, f i t = 0) (hbound : ∀ i t, (f i t) ^ 2 ≤ 1) : (∑ x : ∀ i, β i, (∑ i, f i (x i)) ^ 2) ≤ (Fintype.card (∀ i, β i) : ℝ) * Fintype.card I := by rw [finite_product_second_moment f hf] calc _ ≤ ∑ _i : I, ∑ _x : ∀ i, β i, (1 : ℝ) := by exact Finset.sum_le_sum fun i _ => Finset.sum_le_sum fun x _ => hbound i (x i) _ = _ := by simp [mul_comm] abbrev WeakComposition (d r : ℕ) := ↥(Finset.Nat.antidiagonalTuple d r) def weakComposition_sum {d r : ℕ} (v : WeakComposition d r) : ∑ i, v.val i = r := Finset.Nat.mem_antidiagonalTuple.mp v.property def weakComposition_coord_le {d r : ℕ} (v : WeakComposition d r) (i : Fin d) : v.val i ≤ r := by exact (Finset.single_le_sum (fun _ _ => Nat.zero_le _) (Finset.mem_univ i)).trans_eq (weakComposition_sum v) def weakCompositionPerm {d r : ℕ} (e : Equiv.Perm (Fin d)) : WeakComposition d r ≃ WeakComposition d r where toFun v := ⟨fun i => v.val (e i), Finset.Nat.mem_antidiagonalTuple.mpr ((Equiv.sum_comp e v.val).trans (weakComposition_sum v))⟩ invFun v := ⟨fun i => v.val (e.symm i), Finset.Nat.mem_antidiagonalTuple.mpr ((Equiv.sum_comp e.symm v.val).trans (weakComposition_sum v))⟩ left_inv v := by ext i; simp right_inv v := by ext i; simp def weakComposition_coordinate_sum_eq {d r : ℕ} (i j : Fin d) : (∑ v : WeakComposition d r, (v.val i : ℝ)) = ∑ v : WeakComposition d r, (v.val j : ℝ) := by classical apply Fintype.sum_equiv (weakCompositionPerm (r := r) (Equiv.swap i j)) intro v simp [weakCompositionPerm] def weakComposition_coordinate_sum {d r : ℕ} (i : Fin d) : (d : ℝ) * (∑ v : WeakComposition d r, (v.val i : ℝ)) = (Fintype.card (WeakComposition d r) : ℝ) * r := by calc _ = ∑ j : Fin d, ∑ v : WeakComposition d r, (v.val j : ℝ) := by simp_rw [← weakComposition_coordinate_sum_eq i] simp _ = ∑ v : WeakComposition d r, ∑ j : Fin d, (v.val j : ℝ) := Finset.sum_comm _ = _ := by simp_rw [← Nat.cast_sum, weakComposition_sum] simp def compositionCentered {d r : ℕ} (i : Fin d) (v : WeakComposition d r) : ℝ := (v.val i : ℝ) / r - 1 / d def compositionCentered_sum {d r : ℕ} (hd : 0 < d) (hr : 0 < r) (i : Fin d) : ∑ v : WeakComposition d r, compositionCentered i v = 0 := by have hd0 : (d : ℝ) ≠ 0 := by positivity have hr0 : (r : ℝ) ≠ 0 := by positivity have hs := weakComposition_coordinate_sum (r := r) i simp only [compositionCentered, Finset.sum_sub_distrib, ← Finset.sum_div, Finset.sum_const, Finset.card_univ, nsmul_eq_mul] field_simp nlinarith def compositionCentered_sq_le_one {d r : ℕ} (hd : 0 < d) (hr : 0 < r) (i : Fin d) (v : WeakComposition d r) : (compositionCentered i v) ^ 2 ≤ 1 := by have hd1 : (1 : ℝ) ≤ d := by exact_mod_cast hd have hr0 : (0 : ℝ) < r := by positivity have hc0 : (0 : ℝ) ≤ v.val i := by positivity have hc1 : (v.val i : ℝ) ≤ r := by exact_mod_cast weakComposition_coord_le v i have hq0 : (0 : ℝ) ≤ (v.val i : ℝ) / r := div_nonneg hc0 (le_of_lt hr0) have hq1 : (v.val i : ℝ) / r ≤ 1 := (div_le_one hr0).mpr hc1 have hz0 : (0 : ℝ) ≤ 1 / d := by positivity have hz1 : (1 : ℝ) / d ≤ 1 := (div_le_one (by positivity)).mpr hd1 dsimp [compositionCentered] nlinarith [mul_nonneg (sub_nonneg.mpr hq1) hq0, mul_nonneg (sub_nonneg.mpr hz1) hz0] abbrev CompositionArray (m d : ℕ) (r : Fin m → ℕ) := ∀ h : Fin m, WeakComposition d (r h) def compositionArray_nonempty {m d : ℕ} (r : Fin m → ℕ) (hd : 0 < d) : Nonempty (CompositionArray m d r) := by classical refine ⟨fun h => ⟨fun i => if i = (⟨0, hd⟩ : Fin d) then r h else 0, ?_⟩⟩ apply Finset.Nat.mem_antidiagonalTuple.mpr simp def compositionArray_card_pos {m d : ℕ} (r : Fin m → ℕ) (hd : 0 < d) : 0 < Fintype.card (CompositionArray m d r) := Fintype.card_pos_iff.mpr (compositionArray_nonempty r hd) def compositionDeviation {m d : ℕ} {r : Fin m → ℕ} (i : Fin d) (J : CompositionArray m d r) : ℝ := (∑ h, ((J h).val i : ℝ) / r h) - (m : ℝ) / d def compositionDeviation_eq_sum {m d : ℕ} {r : Fin m → ℕ} (i : Fin d) (J : CompositionArray m d r) : compositionDeviation i J = ∑ h, compositionCentered i (J h) := by simp [compositionDeviation, compositionCentered, Finset.sum_sub_distrib, div_eq_mul_inv] def compositionArray_second_moment {m d : ℕ} (r : Fin m → ℕ) (hd : 0 < d) (hr : ∀ h, 0 < r h) (i : Fin d) : (∑ J : CompositionArray m d r, (compositionDeviation i J) ^ 2) ≤ (Fintype.card (CompositionArray m d r) : ℝ) * m := by simp_rw [compositionDeviation_eq_sum] simpa using finite_product_second_moment_le (fun h (v : WeakComposition d (r h)) => compositionCentered i v) (fun h => compositionCentered_sum hd (hr h) i) (fun h => compositionCentered_sq_le_one hd (hr h) i) def finite_bad_card_sq_le {Ω : Type*} [Fintype Ω] (f : Ω → ℝ) (a : ℝ) (ha : 0 ≤ a) : ((Finset.univ.filter (fun x => a ≤ |f x|)).card : ℝ) * a ^ 2 ≤ ∑ x, (f x) ^ 2 := by classical calc _ = ∑ _x ∈ Finset.univ.filter (fun x => a ≤ |f x|), a ^ 2 := by simp _ ≤ ∑ x ∈ Finset.univ.filter (fun x => a ≤ |f x|), (f x) ^ 2 := by apply Finset.sum_le_sum intro x hx have hx' := (Finset.mem_filter.mp hx).2 nlinarith [sq_abs (f x), mul_nonneg (sub_nonneg.mpr hx') (add_nonneg (abs_nonneg (f x)) ha)] _ ≤ ∑ x, (f x) ^ 2 := Finset.sum_le_sum_of_subset_of_nonneg (Finset.filter_subset _ _) (fun x _ _ => sq_nonneg (f x)) def badCompositionCoordinate {m d : ℕ} (r : Fin m → ℕ) (η : ℝ) (i : Fin d) : Finset (CompositionArray m d r) := by classical exact Finset.univ.filter (fun J => (m : ℝ) * η ≤ |compositionDeviation i J|) def badCompositionCoordinate_card_bound {m d : ℕ} (r : Fin m → ℕ) (hm : 0 < m) (hd : 0 < d) (hr : ∀ h, 0 < r h) (η : ℝ) (hη : 0 ≤ η) (i : Fin d) : ((badCompositionCoordinate r η i).card : ℝ) * m * η ^ 2 ≤ Fintype.card (CompositionArray m d r) := by have hm' : (0 : ℝ) < m := by positivity have hfirst := finite_bad_card_sq_le (compositionDeviation (r := r) i) ((m : ℝ) * η) (mul_nonneg (le_of_lt hm') hη) have hsecond := compositionArray_second_moment r hd hr i change ((badCompositionCoordinate r η i).card : ℝ) * ((m : ℝ) * η) ^ 2 ≤ _ at hfirst have hle : (m : ℝ) * (((badCompositionCoordinate r η i).card : ℝ) * m * η ^ 2) ≤ (m : ℝ) * Fintype.card (CompositionArray m d r) := by nlinarith exact (mul_le_mul_iff_right₀ hm').mp hle def badCompositionArrays {m d : ℕ} (r : Fin m → ℕ) (η : ℝ) : Finset (CompositionArray m d r) := by classical exact Finset.univ.biUnion (badCompositionCoordinate r η) def mem_badCompositionArrays {m d : ℕ} (r : Fin m → ℕ) (η : ℝ) (J : CompositionArray m d r) : J ∈ badCompositionArrays r η ↔ ∃ i : Fin d, (m : ℝ) * η ≤ |compositionDeviation i J| := by classical simp [badCompositionArrays, badCompositionCoordinate] def not_mem_badCompositionArrays {m d : ℕ} (r : Fin m → ℕ) (η : ℝ) (J : CompositionArray m d r) : J ∉ badCompositionArrays r η ↔ ∀ i : Fin d, |compositionDeviation i J| < (m : ℝ) * η := by rw [mem_badCompositionArrays] simp def badCompositionArrays_card_bound {m d : ℕ} (r : Fin m → ℕ) (hm : 0 < m) (hd : 0 < d) (hr : ∀ h, 0 < r h) (η : ℝ) (hη : 0 ≤ η) : ((badCompositionArrays (d := d) r η).card : ℝ) * m * η ^ 2 ≤ (d : ℝ) * Fintype.card (CompositionArray m d r) := by classical have hu : (badCompositionArrays (d := d) r η).card ≤ ∑ i : Fin d, (badCompositionCoordinate r η i).card := Finset.card_biUnion_le have hu' : ((badCompositionArrays (d := d) r η).card : ℝ) ≤ ∑ i : Fin d, ((badCompositionCoordinate r η i).card : ℝ) := by exact_mod_cast hu calc _ = ((badCompositionArrays (d := d) r η).card : ℝ) * ((m : ℝ) * η ^ 2) := by ring _ ≤ (∑ i : Fin d, ((badCompositionCoordinate r η i).card : ℝ)) * ((m : ℝ) * η ^ 2) := mul_le_mul_of_nonneg_right hu' (by positivity) _ = ∑ i : Fin d, ((badCompositionCoordinate r η i).card : ℝ) * m * η ^ 2 := by rw [Finset.sum_mul] apply Finset.sum_congr rfl intro i _ ring _ ≤ ∑ _i : Fin d, (Fintype.card (CompositionArray m d r) : ℝ) := Finset.sum_le_sum fun i _ => badCompositionCoordinate_card_bound r hm hd hr η hη i _ = _ := by simp def badCompositionArrays_quarter {m d : ℕ} (r : Fin m → ℕ) (hm : 0 < m) (hd : 0 < d) (hr : ∀ h, 0 < r h) (s : ℕ) (η : ℝ) (hη : 0 ≤ η) (hlarge : 4 * (s : ℝ) * d ≤ (m : ℝ) * η ^ 2) : 4 * (s * (badCompositionArrays (d := d) r η).card) ≤ Fintype.card (CompositionArray m d r) := by have hd' : (0 : ℝ) < d := by positivity have hbound := badCompositionArrays_card_bound r hm hd hr η hη have hle : (d : ℝ) * (4 * (s : ℝ) * (badCompositionArrays (d := d) r η).card) ≤ (d : ℝ) * Fintype.card (CompositionArray m d r) := by calc _ = ((badCompositionArrays (d := d) r η).card : ℝ) * (4 * (s : ℝ) * d) := by ring _ ≤ ((badCompositionArrays (d := d) r η).card : ℝ) * ((m : ℝ) * η ^ 2) := mul_le_mul_of_nonneg_left hlarge (by positivity) _ ≤ _ := by simpa [mul_assoc] using hbound have hle' := (mul_le_mul_iff_right₀ hd').mp hle rw [← mul_assoc] exact_mod_cast hle' end end Bounty end SubmissionComponent_BalancedMonomialCounting /- Component IntegerSmallKernel; SHA256 dee44ae4bf41e5bc51f97b9207be460928d6ffd0421111822775745ee89dc436 -/ section SubmissionComponent_IntegerSmallKernel /- A coefficient-sum form of the integer small-kernel lemma for at most half as many equations. -/ namespace Bounty noncomputable section open scoped BigOperators open Matrix def exists_integer_small_kernel {I J : Type*} [Fintype I] [Fintype J] (A : Matrix I J ℤ) (hN : 0 < Fintype.card J) (hhalf : 2 * Fintype.card I ≤ Fintype.card J) (H : ℝ) (hH : 1 ≤ H) (hentry : ∀ i j, ‖A i j‖ ≤ H) : ∃ c : J → ℤ, c ≠ 0 ∧ A *ᵥ c = 0 ∧ (∀ j, ‖c j‖ ≤ Fintype.card J * H) ∧ (∑ j, ‖c j‖) ≤ (Fintype.card J : ℝ) ^ 2 * H := by classical letI : SeminormedAddCommGroup (Matrix I J ℤ) := Matrix.seminormedAddCommGroup have hNreal : (1 : ℝ) ≤ Fintype.card J := by exact_mod_cast hN have hprod : 1 ≤ (Fintype.card J : ℝ) * H := one_le_mul_of_one_le_of_one_le hNreal hH suffices hh : ∃ c : J → ℤ, c ≠ 0 ∧ A *ᵥ c = 0 ∧ (∀ j, ‖c j‖ ≤ Fintype.card J * H) by obtain ⟨c, hc, hAc, hbound⟩ := hh refine ⟨c, hc, hAc, hbound, ?_⟩ calc ∑ j, ‖c j‖ ≤ ∑ _j : J, (Fintype.card J : ℝ) * H := Finset.sum_le_sum (fun j _ => hbound j) _ = (Fintype.card J : ℝ) ^ 2 * H := by simp; ring by_cases hm : 0 < Fintype.card I · have hlt : Fintype.card I < Fintype.card J := by omega obtain ⟨c, hc, hAc, hnorm⟩ := Int.Matrix.exists_ne_zero_int_vec_norm_le A hlt hm have hAnorm : ‖A‖ ≤ H := (Matrix.norm_le_iff (by linarith : 0 ≤ H)).mpr hentry have hb : 1 ≤ (Fintype.card J : ℝ) * max 1 ‖A‖ := one_le_mul_of_one_le_of_one_le hNreal (le_max_left _ _) have hden : (0 : ℝ) < Fintype.card J - Fintype.card I := sub_pos.mpr (by exact_mod_cast hlt) have he : (Fintype.card I : ℝ) / (Fintype.card J - Fintype.card I) ≤ 1 := by apply (div_le_one hden).mpr have hh : 2 * (Fintype.card I : ℝ) ≤ Fintype.card J := by exact_mod_cast hhalf linarith have hp := Real.rpow_le_rpow_of_exponent_le hb he rw [Real.rpow_one] at hp have hsmall : ‖c‖ ≤ (Fintype.card J : ℝ) * H := hnorm.trans (hp.trans (mul_le_mul_of_nonneg_left (max_le hH hAnorm) (Nat.cast_nonneg _))) exact ⟨c, hc, hAc, fun j => (norm_le_pi_norm c j).trans hsmall⟩ · have hz : Fintype.card I = 0 := by omega letI : IsEmpty I := Fintype.card_eq_zero_iff.mp hz obtain ⟨j⟩ := Fintype.card_pos_iff.mp hN refine ⟨fun _ => 1, ?_, ?_, ?_⟩ · intro h have hh := congrFun h j norm_num at hh · ext i exact isEmptyElim i · intro j simpa using hprod end end Bounty end SubmissionComponent_IntegerSmallKernel /- Component AuxiliaryPolynomialKernel; SHA256 e77ff86c8268168d08db3f0094d85f28f661f36ccecc2760f58166b6114ff002 -/ section SubmissionComponent_AuxiliaryPolynomialKernel /- Actual nonzero integer polynomials satisfying finitely many small linear conditions. -/ namespace Bounty noncomputable section open scoped BigOperators open Matrix def indexedIntegerPolynomial {V J : Type*} [Fintype J] (e : J → V →₀ ℕ) (c : J → ℤ) : MvPolynomial V ℤ := ∑ j, MvPolynomial.monomial (e j) (c j) def indexedIntegerPolynomial_coeff {V J : Type*} [Fintype J] (e : J → V →₀ ℕ) (he : Function.Injective e) (c : J → ℤ) (j : J) : MvPolynomial.coeff (e j) (indexedIntegerPolynomial e c) = c j := by classical simp only [indexedIntegerPolynomial, MvPolynomial.coeff_sum, MvPolynomial.coeff_monomial] rw [Finset.sum_eq_single j] · simp · intro k _ hk rw [if_neg (fun h => hk (he h))] · simp def indexedIntegerPolynomial_ne_zero {V J : Type*} [Fintype J] (e : J → V →₀ ℕ) (he : Function.Injective e) {c : J → ℤ} (hc : c ≠ 0) : indexedIntegerPolynomial e c ≠ 0 := by intro hz apply hc funext j have hh := indexedIntegerPolynomial_coeff e he c j simpa only [hz, MvPolynomial.coeff_zero, Pi.zero_apply] using hh.symm def indexedIntegerPolynomial_support {V J : Type*} [Fintype J] (e : J → V →₀ ℕ) (c : J → ℤ) {a : V →₀ ℕ} (ha : a ∈ (indexedIntegerPolynomial e c).support) : ∃ j, e j = a := by classical by_contra hh push Not at hh apply MvPolynomial.mem_support_iff.mp ha simp only [indexedIntegerPolynomial, MvPolynomial.coeff_sum, MvPolynomial.coeff_monomial] exact Finset.sum_eq_zero (fun j _ => if_neg (hh j)) def indexedIntegerPolynomial_norm_le {V J : Type*} [Fintype J] (e : J → V →₀ ℕ) (c : J → ℤ) : polynomialCoeffL1 (indexedIntegerPolynomial e c) ≤ ∑ j, ‖c j‖ := by simpa only [indexedIntegerPolynomial, polynomialCoeffL1_monomial] using polynomialCoeffL1_sum Finset.univ (fun j => MvPolynomial.monomial (e j) (c j)) def indexedIntegerPolynomial_linearMap {V J : Type*} [Fintype J] (e : J → V →₀ ℕ) (c : J → ℤ) (F : MvPolynomial V ℤ →ₗ[ℤ] ℤ) : F (indexedIntegerPolynomial e c) = ∑ j, F (MvPolynomial.monomial (e j) 1) * c j := by simp only [indexedIntegerPolynomial, map_sum] apply Finset.sum_congr rfl intro j _ have hh : MvPolynomial.monomial (e j) (c j) = c j • MvPolynomial.monomial (e j) (1 : ℤ) := by rw [MvPolynomial.smul_monomial, smul_eq_mul, mul_one] rw [hh, map_smul, smul_eq_mul, mul_comm] def exists_small_integer_auxiliary_polynomial {V I J : Type*} [Fintype I] [Fintype J] (e : J → V →₀ ℕ) (he : Function.Injective e) (F : I → MvPolynomial V ℤ →ₗ[ℤ] ℤ) (hN : 0 < Fintype.card J) (hhalf : 2 * Fintype.card I ≤ Fintype.card J) (H : ℝ) (hH : 1 ≤ H) (hentry : ∀ i j, ‖F i (MvPolynomial.monomial (e j) 1)‖ ≤ H) : ∃ P : MvPolynomial V ℤ, P ≠ 0 ∧ (∀ a ∈ P.support, ∃ j, e j = a) ∧ (∀ i, F i P = 0) ∧ polynomialCoeffL1 P ≤ (Fintype.card J : ℝ) ^ 2 * H := by let A : Matrix I J ℤ := fun i j => F i (MvPolynomial.monomial (e j) 1) obtain ⟨c, hc, hAc, _, hsum⟩ := exists_integer_small_kernel A hN hhalf H hH hentry refine ⟨indexedIntegerPolynomial e c, indexedIntegerPolynomial_ne_zero e he hc, fun a ha => indexedIntegerPolynomial_support e c ha, ?_, (indexedIntegerPolynomial_norm_le e c).trans hsum⟩ intro i rw [indexedIntegerPolynomial_linearMap] exact congrFun hAc i end end Bounty end SubmissionComponent_AuxiliaryPolynomialKernel /- Component PolynomialSubstitutionNorm; SHA256 4c5a98171eb2c58a8019c0dc230dcb91d61ed6b85677e9d608c4db125718ef9d -/ section SubmissionComponent_PolynomialSubstitutionNorm /- Explicit coefficient-sum bounds for substituted monomials. -/ namespace Bounty noncomputable section open scoped BigOperators def polynomialCoeffL1_pow {V R : Type*} [NormedCommRing R] [NormOneClass R] (P : MvPolynomial V R) (n : ℕ) : polynomialCoeffL1 (P ^ n) ≤ polynomialCoeffL1 P ^ n := by induction n with | zero => simp [polynomialCoeffL1_one] | succ n ih => rw [pow_succ, pow_succ] exact (polynomialCoeffL1_mul _ _).trans (mul_le_mul_of_nonneg_right ih (polynomialCoeffL1_nonneg P)) def polynomialCoeffL1_aeval_monomial_one {I V : Type*} [Fintype I] (f : I → MvPolynomial V ℤ) (e : I →₀ ℕ) {C : ℝ} (hC : 0 ≤ C) (hf : ∀ i, polynomialCoeffL1 (f i) ≤ C) : polynomialCoeffL1 (MvPolynomial.aeval f (MvPolynomial.monomial e (1 : ℤ))) ≤ C ^ (∑ i, e i) := by classical rw [MvPolynomial.aeval_monomial] simp only [map_one, one_mul] rw [Finsupp.prod_fintype _ _ (fun _ => pow_zero _)] calc _ ≤ ∏ i, polynomialCoeffL1 (f i ^ e i) := polynomialCoeffL1_prod _ _ _ ≤ ∏ i, polynomialCoeffL1 (f i) ^ e i := Finset.prod_le_prod (fun i _ => polynomialCoeffL1_nonneg _) (fun i _ => polynomialCoeffL1_pow _ _) _ ≤ ∏ i, C ^ e i := Finset.prod_le_prod (fun i _ => pow_nonneg (polynomialCoeffL1_nonneg _) _) (fun i _ => pow_le_pow_left₀ (polynomialCoeffL1_nonneg _) (hf i) _) _ = C ^ (∑ i, e i) := Finset.prod_pow_eq_pow_sum _ _ _ def norm_coeff_aeval_monomial_one_le {I V : Type*} [Fintype I] (f : I → MvPolynomial V ℤ) (e : I →₀ ℕ) (a : V →₀ ℕ) {C : ℝ} (hC : 0 ≤ C) (hf : ∀ i, polynomialCoeffL1 (f i) ≤ C) : ‖MvPolynomial.coeff a (MvPolynomial.aeval f (MvPolynomial.monomial e (1 : ℤ)))‖ ≤ C ^ (∑ i, e i) := (norm_coeff_le_polynomialCoeffL1 _ _).trans (polynomialCoeffL1_aeval_monomial_one f e hC hf) end end Bounty end SubmissionComponent_PolynomialSubstitutionNorm /- Component BalancedAuxiliaryPolynomial; SHA256 dc164d0e99dfddc7eb1bef11f7577aca766e3616652c14a4928dddc2d32310e0 -/ section SubmissionComponent_BalancedAuxiliaryPolynomial /- An actual nonzero integer auxiliary polynomial with balanced monomial support after finitely many integer changes of coordinates within blocks. -/ namespace Bounty noncomputable section open scoped BigOperators def compositionExponent {m d : ℕ} {r : Fin m → ℕ} (J : CompositionArray m d r) : (Fin m × Fin d) →₀ ℕ := Finsupp.equivFunOnFinite.symm (fun x => (J x.1).val x.2) def compositionExponent_apply {m d : ℕ} {r : Fin m → ℕ} (J : CompositionArray m d r) (h : Fin m) (i : Fin d) : compositionExponent J (h, i) = (J h).val i := rfl def compositionExponent_injective {m d : ℕ} (r : Fin m → ℕ) : Function.Injective (compositionExponent (m := m) (d := d) (r := r)) := by intro J K hJK funext h apply Subtype.ext funext i exact congrArg (fun e : (Fin m × Fin d) →₀ ℕ => e (h, i)) hJK def compositionExponent_block_sum {m d : ℕ} {r : Fin m → ℕ} (J : CompositionArray m d r) (h : Fin m) : ∑ i, compositionExponent J (h, i) = r h := weakComposition_sum (J h) def compositionExponent_total {m d : ℕ} {r : Fin m → ℕ} (J : CompositionArray m d r) : ∑ x : Fin m × Fin d, compositionExponent J x = ∑ h, r h := by rw [Fintype.sum_prod_type] simp_rw [compositionExponent_block_sum] def exists_compositionExponent_iff {m d : ℕ} (r : Fin m → ℕ) (e : (Fin m × Fin d) →₀ ℕ) : (∃ J : CompositionArray m d r, compositionExponent J = e) ↔ ∀ h, ∑ i, e (h, i) = r h := by constructor · rintro ⟨J, rfl⟩ exact compositionExponent_block_sum J · intro he refine ⟨fun h => ⟨fun i => e (h, i), Finset.Nat.mem_antidiagonalTuple.mpr (he h)⟩, ?_⟩ ext x rfl def ProductBlockHomogeneous {m d : ℕ} {R : Type*} [CommSemiring R] (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) R) : Prop := ∀ e ∈ P.support, ∀ h, ∑ i, e (h, i) = r h def productBlockWeight {m d : ℕ} (h : Fin m) (x : Fin m × Fin d) : ℕ := if x.1 = h then 1 else 0 def productBlockWeight_apply {m d : ℕ} (h : Fin m) (e : (Fin m × Fin d) →₀ ℕ) : Finsupp.weight (productBlockWeight h) e = ∑ i, e (h, i) := by rw [Finsupp.weight_eq_sum, Fintype.sum_prod_type] simp [productBlockWeight] def productBlockHomogeneous_iff_weighted {m d : ℕ} {R : Type*} [CommSemiring R] (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) R) : ProductBlockHomogeneous r P ↔ ∀ h, MvPolynomial.IsWeightedHomogeneous (productBlockWeight h) P (r h) := by constructor · intro hP h e he rw [productBlockWeight_apply] exact hP e (MvPolynomial.mem_support_iff.mpr he) h · intro hP e he h simpa only [productBlockWeight_apply] using hP h (MvPolynomial.mem_support_iff.mp he) def blockLinearForm {m d : ℕ} (A : Fin m → Fin d → Fin d → ℤ) (x : Fin m × Fin d) : MvPolynomial (Fin m × Fin d) ℤ := ∑ j, MvPolynomial.C (A x.1 x.2 j) * MvPolynomial.X (x.1, j) def blockLinearSubstitution {m d : ℕ} (A : Fin m → Fin d → Fin d → ℤ) : MvPolynomial (Fin m × Fin d) ℤ →ₐ[ℤ] MvPolynomial (Fin m × Fin d) ℤ := MvPolynomial.aeval (blockLinearForm A) def blockLinearForm_homogeneous {m d : ℕ} (A : Fin m → Fin d → Fin d → ℤ) (h : Fin m) (x : Fin m × Fin d) : MvPolynomial.IsWeightedHomogeneous (productBlockWeight h) (blockLinearForm A x) (productBlockWeight h x) := by apply MvPolynomial.IsWeightedHomogeneous.sum intro j _ exact (MvPolynomial.isWeightedHomogeneous_X ℤ (productBlockWeight h) (x.1, j)).C_mul _ def blockLinearSubstitution_homogeneous {m d : ℕ} (A : Fin m → Fin d → Fin d → ℤ) (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℤ) (hP : ProductBlockHomogeneous r P) : ProductBlockHomogeneous r (blockLinearSubstitution A P) := by apply (productBlockHomogeneous_iff_weighted r _).mpr intro h exact weightedHomogeneous_aeval (productBlockWeight h) (blockLinearForm A) (blockLinearForm_homogeneous A h) P (r h) ((productBlockHomogeneous_iff_weighted r P).mp hP h) def blockLinearForm_norm_le {m d : ℕ} (A : Fin m → Fin d → Fin d → ℤ) (x : Fin m × Fin d) : polynomialCoeffL1 (blockLinearForm A x) ≤ ∑ j, ‖A x.1 x.2 j‖ := by calc _ ≤ ∑ j, polynomialCoeffL1 (MvPolynomial.C (A x.1 x.2 j) * MvPolynomial.X (x.1, j)) := polynomialCoeffL1_sum _ _ _ = _ := by apply Finset.sum_congr rfl intro j _ rw [MvPolynomial.C_mul_X_eq_monomial, polynomialCoeffL1_monomial] def balancedCoefficientCondition {m d s : ℕ} (r : Fin m → ℕ) (η : ℝ) (A : Fin s → Fin m → Fin d → Fin d → ℤ) (z : Fin s × ↥(badCompositionArrays (d := d) r η)) : MvPolynomial (Fin m × Fin d) ℤ →ₗ[ℤ] ℤ := (MvPolynomial.lcoeff ℤ (compositionExponent z.2.val)).comp (blockLinearSubstitution (A z.1)).toLinearMap def exists_balanced_integer_auxiliary_of_bound {m d s : ℕ} (r : Fin m → ℕ) (hm : 0 < m) (hd : 0 < d) (hr : ∀ h, 0 < r h) (η : ℝ) (hη : 0 ≤ η) (hlarge : 4 * (s : ℝ) * d ≤ (m : ℝ) * η ^ 2) (A : Fin s → Fin m → Fin d → Fin d → ℤ) (H : ℝ) (hH : 1 ≤ H) (hentry : ∀ v (J K : CompositionArray m d r), ‖MvPolynomial.coeff (compositionExponent K) (blockLinearSubstitution (A v) (MvPolynomial.monomial (compositionExponent J) 1))‖ ≤ H) : ∃ P : MvPolynomial (Fin m × Fin d) ℤ, P ≠ 0 ∧ ProductBlockHomogeneous r P ∧ polynomialCoeffL1 P ≤ (Fintype.card (CompositionArray m d r) : ℝ) ^ 2 * H ∧ ∀ v e, MvPolynomial.coeff e (blockLinearSubstitution (A v) P) ≠ 0 → (∀ h, ∑ i, e (h, i) = r h) ∧ ∀ i : Fin d, |(∑ h : Fin m, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| < (m : ℝ) * η := by classical let I := Fin s × ↥(badCompositionArrays (d := d) r η) have hquarter := badCompositionArrays_quarter r hm hd hr s η hη hlarge have hhalf : 2 * Fintype.card I ≤ Fintype.card (CompositionArray m d r) := by have hcard : Fintype.card I = s * (badCompositionArrays (d := d) r η).card := by simp [I] rw [hcard] omega obtain ⟨P, hP, hsupp, hzero, hnorm⟩ := exists_small_integer_auxiliary_polynomial (compositionExponent (d := d) (r := r)) (compositionExponent_injective r) (balancedCoefficientCondition r η A) (compositionArray_card_pos r hd) hhalf H hH (fun z J => hentry z.1 J z.2.val) have hhom : ProductBlockHomogeneous r P := by intro e he obtain ⟨J, rfl⟩ := hsupp e he exact compositionExponent_block_sum J refine ⟨P, hP, hhom, hnorm, ?_⟩ intro v e he have hehom := blockLinearSubstitution_homogeneous (A v) r P hhom e (MvPolynomial.mem_support_iff.mpr he) obtain ⟨J, hJ⟩ := (exists_compositionExponent_iff r e).mpr hehom have hgood : J ∉ badCompositionArrays r η := by intro hbad have hh := hzero (v, ⟨J, hbad⟩) change MvPolynomial.coeff (compositionExponent J) (blockLinearSubstitution (A v) P) = 0 at hh rw [hJ] at hh exact he hh refine ⟨hehom, ?_⟩ intro i have hh := (not_mem_badCompositionArrays r η J).mp hgood i simpa only [compositionDeviation, ← hJ, compositionExponent_apply] using hh def exists_balanced_integer_auxiliary {m d s : ℕ} (r : Fin m → ℕ) (hm : 0 < m) (hd : 0 < d) (hr : ∀ h, 0 < r h) (η : ℝ) (hη : 0 ≤ η) (hlarge : 4 * (s : ℝ) * d ≤ (m : ℝ) * η ^ 2) (A : Fin s → Fin m → Fin d → Fin d → ℤ) (C : ℝ) (hC : 1 ≤ C) (hA : ∀ v h i, ∑ j, ‖A v h i j‖ ≤ C) : ∃ P : MvPolynomial (Fin m × Fin d) ℤ, P ≠ 0 ∧ ProductBlockHomogeneous r P ∧ polynomialCoeffL1 P ≤ (Fintype.card (CompositionArray m d r) : ℝ) ^ 2 * C ^ (∑ h, r h) ∧ ∀ v e, MvPolynomial.coeff e (blockLinearSubstitution (A v) P) ≠ 0 → (∀ h, ∑ i, e (h, i) = r h) ∧ ∀ i : Fin d, |(∑ h : Fin m, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| < (m : ℝ) * η := by apply exists_balanced_integer_auxiliary_of_bound r hm hd hr η hη hlarge A (C ^ (∑ h, r h)) (one_le_pow₀ hC) intro v J K have hf : ∀ x, polynomialCoeffL1 (blockLinearForm (A v) x) ≤ C := fun x => (blockLinearForm_norm_le (A v) x).trans (hA v x.1 x.2) simpa only [blockLinearSubstitution, compositionExponent_total] using norm_coeff_aeval_monomial_one_le (blockLinearForm (A v)) (compositionExponent J) (compositionExponent K) (le_trans zero_le_one hC) hf end end Bounty end SubmissionComponent_BalancedAuxiliaryPolynomial /- Component HyperplaneCoordinateReindex; SHA256 0a0ae811d41f0b1e2e300e28f74678fee5ed456f40fe1deaf029723cb9df13a8 -/ section SubmissionComponent_HyperplaneCoordinateReindex /- Explicit pivot/complement coordinates for block rational hyperplanes. -/ namespace Bounty noncomputable section open scoped BigOperators abbrev HyperplaneComplement {m d : ℕ} (p : Fin m → Fin (d + 1)) := {x : Fin m × Fin (d + 1) // x.2 ≠ p x.1} def hyperplanePivotEquiv {m d : ℕ} (p : Fin m → Fin (d + 1)) : (Fin m × Fin (d + 1)) ≃ Fin m ⊕ HyperplaneComplement p where toFun x := if h : x.2 = p x.1 then Sum.inl x.1 else Sum.inr ⟨x, h⟩ invFun := Sum.elim (fun h => (h, p h)) Subtype.val left_inv := by intro x dsimp split_ifs with hx · exact Prod.ext rfl hx.symm · rfl right_inv := by intro x cases x with | inl h => change (if h' : p h = p h then Sum.inl h else Sum.inr (⟨(h, p h), h'⟩ : HyperplaneComplement p)) = Sum.inl h rw [dif_pos rfl] | inr x => change (if h : x.val.2 = p x.val.1 then Sum.inl x.val.1 else Sum.inr (⟨x.val, h⟩ : HyperplaneComplement p)) = Sum.inr x rw [dif_neg x.property] def hyperplanePivotEquiv_pivot {m d : ℕ} (p : Fin m → Fin (d + 1)) (h : Fin m) : hyperplanePivotEquiv p (h, p h) = Sum.inl h := by simp [hyperplanePivotEquiv] def hyperplanePivotEquiv_complement {m d : ℕ} (p : Fin m → Fin (d + 1)) (x : HyperplaneComplement p) : hyperplanePivotEquiv p x.val = Sum.inr x := by change (if h : x.val.2 = p x.val.1 then Sum.inl x.val.1 else Sum.inr (⟨x.val, h⟩ : HyperplaneComplement p)) = Sum.inr x rw [dif_neg x.property] def hyperplaneCoordinateBlock {m d : ℕ} (p : Fin m → Fin (d + 1)) : Fin m ⊕ HyperplaneComplement p → Fin m := Sum.elim id (fun x => x.val.1) def hyperplaneCoordinateBlock_pivotEquiv {m d : ℕ} (p : Fin m → Fin (d + 1)) (x : Fin m × Fin (d + 1)) : hyperplaneCoordinateBlock p (hyperplanePivotEquiv p x) = x.1 := by simp only [hyperplanePivotEquiv, Equiv.coe_fn_mk] split_ifs <;> rfl def multiBlockHomogeneous_rename {I J H R : Type*} [CommSemiring R] [DecidableEq H] (f : I → J) (hf : Function.Injective f) (block : J → H) (r : H → ℕ) (P : MvPolynomial I R) (hP : MultiBlockHomogeneous (block ∘ f) r P) : MultiBlockHomogeneous block r (MvPolynomial.rename f P) := by classical intro h e he have he' := MvPolynomial.mem_support_iff.mpr he rw [MvPolynomial.support_rename_of_injective hf] at he' obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp he' rw [specialization_weight_mapDomain] exact hP h (MvPolynomial.mem_support_iff.mp ha) def productBlockHomogeneous_pivotRename {m d : ℕ} {R : Type*} [CommSemiring R] (p : Fin m → Fin (d + 1)) (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin (d + 1)) R) (hP : ProductBlockHomogeneous r P) : MultiBlockHomogeneous (hyperplaneCoordinateBlock p) r (MvPolynomial.rename (hyperplanePivotEquiv p) P) := by apply multiBlockHomogeneous_rename _ (hyperplanePivotEquiv p).injective intro h e he rw [Finsupp.weight_eq_sum, Fintype.sum_prod_type] simpa [Function.comp, hyperplaneCoordinateBlock_pivotEquiv] using hP e (MvPolynomial.mem_support_iff.mpr he) h def pivotRename_coeffL1 {m d : ℕ} {R : Type*} [NormedCommRing R] (p : Fin m → Fin (d + 1)) (P : MvPolynomial (Fin m × Fin (d + 1)) R) : polynomialCoeffL1 (MvPolynomial.rename (hyperplanePivotEquiv p) P) = polynomialCoeffL1 P := polynomialCoeffL1_rename_of_injective _ (hyperplanePivotEquiv p).injective P end end Bounty end SubmissionComponent_HyperplaneCoordinateReindex /- Component RationalHyperplaneReduction; SHA256 e76a8e1e9a1b6ba0028fed4997bafaec1c0ab653ee4001d5788949166cf03668 -/ section SubmissionComponent_RationalHyperplaneReduction /- Finite iteration of the actual integer saturation/specialization step. -/ namespace Bounty noncomputable section open scoped BigOperators variable {B C I R : Type*} open scoped Classical in def zeroVariables [CommSemiring R] (s : Finset I) : MvPolynomial I R →ₐ[R] MvPolynomial I R := MvPolynomial.aeval (fun i => if i ∈ s then 0 else MvPolynomial.X i) open scoped Classical in def zeroVariables_C [CommSemiring R] (s : Finset I) (a : R) : zeroVariables s (MvPolynomial.C a) = MvPolynomial.C a := by simp [zeroVariables] open scoped Classical in def zeroVariables_X [CommSemiring R] (s : Finset I) (i : I) : zeroVariables s (MvPolynomial.X (R := R) i) = if i ∈ s then 0 else MvPolynomial.X i := by simp [zeroVariables] open scoped Classical in def zeroVariables_empty [CommSemiring R] (P : MvPolynomial I R) : zeroVariables ∅ P = P := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp only [map_mul, zeroVariables_X, Finset.notMem_empty, if_false, hP] open scoped Classical in def zeroVariables_insert [CommSemiring R] (s : Finset I) (z : I) (P : MvPolynomial I R) : zeroVariables (insert z s) P = zeroVariable z (zeroVariables s P) := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp only [map_mul, zeroVariables_X, Finset.mem_insert, hP] by_cases hi : i = z · subst i by_cases hs : z ∈ s <;> simp [hs, zeroVariable_X] · by_cases hs : i ∈ s <;> simp [hi, hs, zeroVariable_X] open scoped Classical in def exists_integer_complement_elimination {H : Type*} [DecidableEq H] (block : B ⊕ C → H) (r : H → ℕ) (w : B → ℕ) (g : B → MvPolynomial C ℚ) (s : Finset C) (P : MvPolynomial (B ⊕ C) ℤ) (hP : P ≠ 0) (hhom : MultiBlockHomogeneous block r P) : ∃ r' : H → ℕ, ∃ Q : MvPolynomial (B ⊕ C) ℤ, (∀ h, r' h ≤ r h) ∧ Q ≠ 0 ∧ MultiBlockHomogeneous block r' Q ∧ (∀ i, Q.degreeOf i ≤ P.degreeOf i) ∧ polynomialCoeffL1 Q ≤ polynomialCoeffL1 P ∧ (∀ c ∈ s, Q.degreeOf (Sum.inr c) = 0) ∧ complementHyperplaneIndex w g (MvPolynomial.map (Int.castRingHom ℚ) P) ≤ complementHyperplaneIndex w (fun b => zeroVariables s (g b)) (MvPolynomial.map (Int.castRingHom ℚ) Q) := by classical induction s using Finset.induction_on generalizing r P with | empty => refine ⟨r, P, fun _ => le_rfl, hP, hhom, fun _ => le_rfl, le_rfl, ?_, ?_⟩ · simp · simp only [zeroVariables_empty] exact le_rfl | @insert c s hc ih => obtain ⟨r₁, P₁, hr₁, hP₁, hhom₁, hdeg₁, hnorm₁, hzero₁, hindex₁⟩ := ih r P hP hhom obtain ⟨k, Q, hQeq, hQ, hzero, hdeg, hnorm, hhomQ, hindex⟩ := exists_integer_complement_specialization block r₁ w (fun b => zeroVariables s (g b)) c P₁ hP₁ hhom₁ refine ⟨fun h => r₁ h - if block (Sum.inr c) = h then k else 0, Q, ?_, hQ, hhomQ, ?_, hnorm.trans hnorm₁, ?_, ?_⟩ · intro h exact (Nat.sub_le _ _).trans (hr₁ h) · intro i exact (hdeg i).trans (hdeg₁ i) · intro a ha rcases Finset.mem_insert.mp ha with rfl | ha · exact hzero · exact Nat.eq_zero_of_le_zero ((hdeg _).trans_eq (hzero₁ a ha)) · simpa only [zeroVariables_insert] using hindex₁.trans hindex open scoped Classical in def MultiBlockHomogeneous_rename_pullback {H J : Type*} [DecidableEq H] [CommSemiring R] (f : I → J) (hf : Function.Injective f) (block : J → H) (r : H → ℕ) (P : MvPolynomial I R) (hP : MultiBlockHomogeneous block r (MvPolynomial.rename f P)) : MultiBlockHomogeneous (block ∘ f) r P := by intro h e he have hh : MvPolynomial.coeff (e.mapDomain f) (MvPolynomial.rename f P) ≠ 0 := by rwa [MvPolynomial.coeff_rename_mapDomain f hf] simpa only [specialization_weight_mapDomain, Function.comp_def] using hP h hh open scoped Classical in def multiBlockHomogeneous_pair_iff [CommSemiring R] (r : B → ℕ) (P : MvPolynomial (B ⊕ B) R) : MultiBlockHomogeneous (Sum.elim id id) r P ↔ BlockHomogeneous r P := by rw [blockHomogeneous_iff_weighted] have hw (h : B) : (fun i : B ⊕ B => if Sum.elim id id i = h then 1 else 0) = blockDegreeWeight h := by funext i cases i <;> simp [blockDegreeWeight, Pi.single_apply, eq_comm] simp only [MultiBlockHomogeneous, hw] open scoped Classical in def retainedPairEmbedding (t : B → C) : B ⊕ B → B ⊕ C := Sum.map id t open scoped Classical in def retainedPairEmbedding_injective (t : B → C) (ht : Function.Injective t) : Function.Injective (retainedPairEmbedding t) := Sum.map_injective.mpr ⟨Function.injective_id, ht⟩ open scoped Classical in def exists_retainedPair_polynomial [CommSemiring R] (t : B → C) (ht : Function.Injective t) (Q : MvPolynomial (B ⊕ C) R) (hzero : ∀ c, c ∉ Set.range t → Q.degreeOf (Sum.inr c) = 0) : ∃ U : MvPolynomial (B ⊕ B) R, MvPolynomial.rename (retainedPairEmbedding t) U = Q := by apply MvPolynomial.exists_rename_eq_of_vars_subset_range Q _ (retainedPairEmbedding_injective t ht) intro i hi cases i with | inl b => exact ⟨Sum.inl b, rfl⟩ | inr c => have hc : c ∈ Set.range t := by by_contra hn exact (MvPolynomial.mem_vars_iff_degreeOf_ne_zero.mp hi) (hzero c hn) obtain ⟨b, rfl⟩ := hc exact ⟨Sum.inr b, rfl⟩ open scoped Classical in def retainedPair_homogeneous [CommSemiring R] (q : C → B) (t : B → C) (hqt : ∀ b, q (t b) = b) (r : B → ℕ) (U : MvPolynomial (B ⊕ B) R) (hU : MultiBlockHomogeneous (Sum.elim id q) r (MvPolynomial.rename (retainedPairEmbedding t) U)) : BlockHomogeneous r U := by have ht : Function.Injective t := fun a b hab => by have := congrArg q hab simpa only [hqt] using this have hh := MultiBlockHomogeneous_rename_pullback (retainedPairEmbedding t) (retainedPairEmbedding_injective t ht) (Sum.elim id q) r U hU have hb : Sum.elim id q ∘ retainedPairEmbedding t = Sum.elim id id := by funext i cases i <;> simp [retainedPairEmbedding, hqt] rw [hb] at hh exact (multiBlockHomogeneous_pair_iff r U).mp hh open scoped Classical in def blockHomogeneous_map {S : Type*} [CommSemiring R] [CommSemiring S] (f : R →+* S) (r : B → ℕ) (P : MvPolynomial (B ⊕ B) R) (hP : BlockHomogeneous r P) : BlockHomogeneous r (MvPolynomial.map f P) := by intro e he exact hP e (MvPolynomial.support_map_subset f P he) open scoped Classical in def complementShear_retainedPair (t : B → C) (β : B → ℚ) (P : MvPolynomial (B ⊕ B) ℚ) : complementShear (fun b => MvPolynomial.C (β b) * MvPolynomial.X (t b)) (MvPolynomial.rename (retainedPairEmbedding t) P) = MvPolynomial.rename (retainedPairEmbedding t) (blockTaylor β P) := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => dsimp only [retainedPairEmbedding] at hP cases i <;> simp only [map_mul, MvPolynomial.rename_X, retainedPairEmbedding, Sum.map_inl, Sum.map_inr, id_eq, complementShear_X_inl, complementShear_X_inr, map_add, MvPolynomial.rename_C, blockTaylor_X_inl, blockTaylor_X_inr, hP] open scoped Classical in def retainedPair_hyperplane_index (t : B → C) (ht : Function.Injective t) (r w : B → ℕ) (β : B → ℚ) (P : MvPolynomial (B ⊕ B) ℚ) (hP : BlockHomogeneous r P) : complementHyperplaneIndex w (fun b => MvPolynomial.C (β b) * MvPolynomial.X (t b)) (MvPolynomial.rename (retainedPairEmbedding t) P) = weightedPolynomialIndex w β (blockDehomogenize P) := by unfold complementHyperplaneIndex rw [complementShear_retainedPair, weightedPolynomialOrder_rename_injective _ _ (retainedPairEmbedding_injective t ht)] have hw : Sum.elim w (fun _ : C => 0) ∘ retainedPairEmbedding t = Sum.elim w (fun _ : B => 0) := by funext i cases i <;> rfl rw [hw] exact blockDehomogenize_hyperplane_index r w β P hP open scoped Classical in def blockComplementLinear [Fintype C] (q : C → B) (a : C → ℚ) (b : B) : MvPolynomial C ℚ := ∑ c ∈ Finset.univ.filter (fun c => q c = b), MvPolynomial.C (a c) * MvPolynomial.X c open scoped Classical in def zeroVariables_blockComplementLinear [Fintype C] (q : C → B) (t : B → C) (hqt : ∀ b, q (t b) = b) (a : C → ℚ) (b : B) : zeroVariables (Finset.univ.filter (fun c => c ∉ Set.range t)) (blockComplementLinear q a b) = MvPolynomial.C (a (t b)) * MvPolynomial.X (t b) := by classical unfold blockComplementLinear rw [map_sum, Finset.sum_eq_single (t b)] · simp only [map_mul, zeroVariables_C, zeroVariables_X] simp · intro c hc hct have hqc : q c = b := (Finset.mem_filter.mp hc).2 have hn : c ∉ Set.range t := by rintro ⟨u, rfl⟩ have hu : u = b := (hqt u).symm.trans hqc exact hct (congrArg t hu) rw [map_mul, zeroVariables_C, zeroVariables_X, if_pos (Finset.mem_filter.mpr ⟨Finset.mem_univ c, hn⟩), mul_zero] · intro hn exact False.elim (hn (by simp [hqt])) /- Eliminate every unselected complement, then dehomogenize the actual remaining integer polynomial. No index-monotonicity assumption is supplied. -/ open scoped Classical in def exists_integer_scalar_hyperplane_reduction [Fintype C] (q : C → B) (t : B → C) (hqt : ∀ b, q (t b) = b) (a : C → ℚ) (r w : B → ℕ) (P : MvPolynomial (B ⊕ C) ℤ) (hP : P ≠ 0) (hhom : MultiBlockHomogeneous (Sum.elim id q) r P) : ∃ R : MvPolynomial B ℤ, R ≠ 0 ∧ (∀ b, R.degreeOf b ≤ r b) ∧ polynomialCoeffL1 R ≤ polynomialCoeffL1 P ∧ complementHyperplaneIndex w (blockComplementLinear q a) (MvPolynomial.map (Int.castRingHom ℚ) P) ≤ weightedPolynomialIndex w (fun b => a (t b)) (MvPolynomial.map (Int.castRingHom ℚ) R) := by classical let s : Finset C := Finset.univ.filter (fun c => c ∉ Set.range t) have ht : Function.Injective t := fun u v huv => by have := congrArg q huv simpa only [hqt] using this obtain ⟨r', Q, hr', hQ, hhomQ, hdegQ, hnormQ, hzero, hindex⟩ := exists_integer_complement_elimination (Sum.elim id q) r w (blockComplementLinear q a) s P hP hhom obtain ⟨U, hUeq⟩ := exists_retainedPair_polynomial t ht Q (fun c hc => hzero c (Finset.mem_filter.mpr ⟨Finset.mem_univ c, hc⟩)) have hU : U ≠ 0 := by intro hz; simp only [hz, map_zero] at hUeq; exact hQ hUeq.symm have hhomU : BlockHomogeneous r' U := retainedPair_homogeneous q t hqt r' U (hUeq.symm ▸ hhomQ) refine ⟨blockDehomogenize U, blockDehomogenize_ne_zero r' hhomU hU, ?_, ?_, ?_⟩ · intro b exact (blockDehomogenize_degreeOf_le r' U hhomU b).trans (hr' b) · rw [blockDehomogenize_coeffL1 r' U hhomU, ← polynomialCoeffL1_rename_of_injective _ (retainedPairEmbedding_injective t ht), hUeq] exact hnormQ · have hg : (fun b => zeroVariables s (blockComplementLinear q a b)) = (fun b => MvPolynomial.C (a (t b)) * MvPolynomial.X (t b)) := by funext b exact zeroVariables_blockComplementLinear q t hqt a b rw [hg, ← hUeq, MvPolynomial.map_rename, retainedPair_hyperplane_index t ht r' w _ _ (blockHomogeneous_map (Int.castRingHom ℚ) r' U hhomU), ← blockDehomogenize_map] at hindex exact hindex open scoped Classical in def normalizedComplementHyperplaneIndex {m : ℕ} (r : Fin m → ℕ) (g : Fin m → MvPolynomial C ℚ) (P : MvPolynomial (Fin m ⊕ C) ℚ) : ℝ := ((complementHyperplaneIndex (rothWeight r) g P).toNat : ℝ) / rothDenominator r /- The proved integer Roth theorem applied to the polynomial constructed by finite saturation and dehomogenization. Heights refer to the selected ratios. -/ open scoped Classical in def integer_complement_hyperplane_roth_bound {n : ℕ} [Fintype C] (q : C → Fin (n + 1)) (t : Fin (n + 1) → C) (hqt : ∀ b, q (t b) = b) (a : C → ℚ) (r : Fin (n + 1) → ℕ) (hr : ∀ i, 0 < r i) (P : MvPolynomial (Fin (n + 1) ⊕ C) ℤ) (hP : P ≠ 0) (hhom : MultiBlockHomogeneous (Sum.elim id q) r P) (η : ℝ) (hη : 0 < η) (hηhalf : η ≤ 1 / 2) (hstep : ∀ i : Fin n, (r i.succ : ℝ) ≤ η ^ (2 ^ n) * r i.castSucc) (hheight : ∀ i, Real.log (polynomialCoeffL1 P) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r i : ℝ) * Height.logHeight₁ (a (t i)))) : normalizedComplementHyperplaneIndex r (blockComplementLinear q a) (MvPolynomial.map (Int.castRingHom ℚ) P) ≤ 2 * (n + 1 : ℕ) * η := by obtain ⟨R, hR, hdegree, hnorm, hindex⟩ := exists_integer_scalar_hyperplane_reduction q t hqt a r (rothWeight r) P hP hhom have hlog : Real.log (polynomialCoeffL1 R) ≤ Real.log (polynomialCoeffL1 P) := Real.log_le_log (polynomialCoeffL1_pos hR) hnorm have hheightR (i) : Real.log (polynomialCoeffL1 R) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r i : ℝ) * Height.logHeight₁ (a (t i))) := by linarith [hheight i] have hroth := integer_roth_index_bound n R hR r hr hdegree (fun i => a (t i)) η hη hηhalf hstep hheightR have hn := ENat.toNat_le_toNat hindex (weightedPolynomialIndex_finite (rothWeight r) (fun i => a (t i)) (integerMap_ne_zero hR)).ne have hnormalized : normalizedComplementHyperplaneIndex r (blockComplementLinear q a) (MvPolynomial.map (Int.castRingHom ℚ) P) ≤ rothPolynomialIndex r (fun i => a (t i)) (MvPolynomial.map (Int.castRingHom ℚ) R) := div_le_div_of_nonneg_right (by exact_mod_cast hn) (Nat.cast_nonneg _) exact hnormalized.trans hroth end end Bounty end SubmissionComponent_RationalHyperplaneReduction /- Component ProductHyperplaneRoth; SHA256 436a70c448518844c612e1d612a35c03f4b9b9bfb0dc017537490c974df85a33 -/ section SubmissionComponent_ProductHyperplaneRoth /- Integer Roth's lemma for actual rational hyperplanes in product coordinates. -/ namespace Bounty noncomputable section open scoped BigOperators def pivotComplementCoefficient {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (x : HyperplaneComplement p) : ℚ := -(b x.val.1 x.val.2 / b x.val.1 (p x.val.1)) def productHyperplaneIndex {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin (d + 1)) ℚ) : ℝ := normalizedComplementHyperplaneIndex r (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p)) (MvPolynomial.rename (hyperplanePivotEquiv p) P) def integer_product_hyperplane_roth_bound {n d : ℕ} (hd : 1 ≤ d) (b : Fin (n + 1) → Fin (d + 1) → ℚ) (p : Fin (n + 1) → Fin (d + 1)) (hp : ∀ h, b h (p h) ≠ 0) (r : Fin (n + 1) → ℕ) (hr : ∀ h, 0 < r h) (P : MvPolynomial (Fin (n + 1) × Fin (d + 1)) ℤ) (hP : P ≠ 0) (hhom : ProductBlockHomogeneous r P) (η : ℝ) (hη : 0 < η) (hηhalf : η ≤ 1 / 2) (hstep : ∀ i : Fin n, (r i.succ : ℝ) ≤ η ^ (2 ^ n) * r i.castSucc) (hheight : ∀ h, Real.log (polynomialCoeffL1 P) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r h : ℝ) * (Height.logHeight (b h) / d))) : productHyperplaneIndex b p r (MvPolynomial.map (Int.castRingHom ℚ) P) ≤ 2 * (n + 1 : ℕ) * η := by classical choose j hj hpair using fun h => exists_rational_hyperplane_height_pair hd (b h) (p h) (hp h) let t (h : Fin (n + 1)) : HyperplaneComplement p := ⟨(h, j h), hj h⟩ let Q := MvPolynomial.rename (hyperplanePivotEquiv p) P have hQ : Q ≠ 0 := by exact fun hz => hP ((MvPolynomial.rename_eq_zero_iff_of_injective P (hyperplanePivotEquiv p).injective).mp hz) have hhomQ : MultiBlockHomogeneous (Sum.elim id (fun x : HyperplaneComplement p => x.val.1)) r Q := productBlockHomogeneous_pivotRename p r P hhom have hheightQ (h : Fin (n + 1)) : Real.log (polynomialCoeffL1 Q) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r h : ℝ) * Height.logHeight₁ (pivotComplementCoefficient b p (t h))) := by rw [show polynomialCoeffL1 Q = polynomialCoeffL1 P from pivotRename_coeffL1 p P] apply (hheight h).trans apply mul_le_mul_of_nonneg_left _ (pow_nonneg hη.le _) apply mul_le_mul_of_nonneg_left _ (Nat.cast_nonneg _) simpa only [pivotComplementCoefficient, t, neg_div] using hpair h have hbound := integer_complement_hyperplane_roth_bound (fun x : HyperplaneComplement p => x.val.1) t (fun _ => rfl) (pivotComplementCoefficient b p) r hr Q hQ hhomQ η hη hηhalf hstep hheightQ simpa only [productHyperplaneIndex, Q, MvPolynomial.map_rename] using hbound end end Bounty end SubmissionComponent_ProductHyperplaneRoth /- Component BoundedGridNonvanishing; SHA256 40d6010e6df02fc5b50d10669a98e0f67bf0c4c84c4bb1d9dff779c65c85b3b7 -/ section SubmissionComponent_BoundedGridNonvanishing /- A bounded integer grid detects a low-order divided derivative. -/ namespace Bounty noncomputable section open scoped BigOperators open Polynomial def sum_rootMultiplicity_le_natDegree {K : Type*} [CommRing K] [IsDomain K] (P : K[X]) (S : Finset K) : ∑ z ∈ S, P.rootMultiplicity z ≤ P.natDegree := by classical simp_rw [← Polynomial.count_roots] calc ∑ z ∈ S, P.roots.count z ≤ ∑ z ∈ S ∪ P.roots.toFinset, P.roots.count z := Finset.sum_le_sum_of_subset Finset.subset_union_left _ = P.roots.card := Multiset.sum_count_eq_card (fun z hz => Finset.mem_union_right S (Multiset.mem_toFinset.mpr hz)) _ ≤ P.natDegree := Polynomial.card_roots' P def hasseDeriv_rootMultiplicity_eval_ne_zero {K : Type*} [CommRing K] {P : K[X]} (hP : P ≠ 0) (z : K) : (Polynomial.hasseDeriv (P.rootMultiplicity z) P).eval z ≠ 0 := by rw [← Polynomial.taylor_coeff, Polynomial.rootMultiplicity_eq_natTrailingDegree] change (P.taylor z).coeff (P.taylor z).natTrailingDegree ≠ 0 exact Polynomial.coeff_natTrailingDegree_ne_zero.mpr ((Polynomial.taylor_eq_zero z P).not.mpr hP) def exists_finite_grid_hasseDeriv_ne_zero {K : Type*} [CommRing K] [IsDomain K] {P : K[X]} (hP : P ≠ 0) (S : Finset K) (k : ℕ) (hcard : P.natDegree < S.card * (k + 1)) : ∃ z ∈ S, ∃ i ≤ k, (Polynomial.hasseDeriv i P).eval z ≠ 0 := by classical by_contra hh push_neg at hh have hm (z) (hz : z ∈ S) : k + 1 ≤ P.rootMultiplicity z := by by_contra hn have hk : P.rootMultiplicity z ≤ k := by omega exact hasseDeriv_rootMultiplicity_eval_ne_zero hP z (hh z hz _ hk) have hsum := Finset.sum_le_sum hm have hdegree := sum_rootMultiplicity_le_natDegree P S simp only [Finset.sum_const, smul_eq_mul] at hsum omega def exists_nat_grid_hasseDeriv_ne_zero {K : Type*} [CommRing K] [IsDomain K] [CharZero K] {P : K[X]} (hP : P ≠ 0) (B : ℕ) (hB : 0 < B) : ∃ z ≤ B, ∃ i ≤ P.natDegree / B, (Polynomial.hasseDeriv i P).eval (z : K) ≠ 0 := by classical let S : Finset K := (Finset.range (B + 1)).image (fun z : ℕ => (z : K)) have hScard : S.card = B + 1 := by rw [Finset.card_image_of_injective _ Nat.cast_injective, Finset.card_range] have hsize : P.natDegree < S.card * (P.natDegree / B + 1) := by rw [hScard] have hdiv := Nat.mod_lt P.natDegree hB have hrepr := Nat.mod_add_div P.natDegree B nlinarith obtain ⟨z, hz, i, hi, hne⟩ := exists_finite_grid_hasseDeriv_ne_zero hP S _ hsize obtain ⟨a, ha, rfl⟩ := Finset.mem_image.mp hz exact ⟨a, by simpa only [Finset.mem_range, Nat.lt_succ_iff] using ha, i, hi, hne⟩ end end Bounty end SubmissionComponent_BoundedGridNonvanishing /- Component MultivariateGridNonvanishing; SHA256 e51477a995bbb4af6eb8a743834eaf047f8e03959d3a6bddd97daf11ee271ee9 -/ section SubmissionComponent_MultivariateGridNonvanishing /- Iterated coefficient-exact divided derivatives on a bounded integer grid. -/ namespace Bounty noncomputable section open scoped BigOperators def firstVariableHasseJet {n : ℕ} (P : MvPolynomial (Fin (n + 1)) ℚ) (z i : ℕ) : MvPolynomial (Fin n) ℚ := (Polynomial.hasseDeriv i (MvPolynomial.finSuccEquiv ℚ n P)).eval (z : MvPolynomial (Fin n) ℚ) def firstVariableHasseJet_degreeOf {n : ℕ} (P : MvPolynomial (Fin (n + 1)) ℚ) (z i : ℕ) (j : Fin n) : (firstVariableHasseJet P z i).degreeOf j ≤ P.degreeOf j.succ := by classical rw [firstVariableHasseJet, Polynomial.eval_eq_sum, Polynomial.sum_def] apply (MvPolynomial.degreeOf_sum_le _ _ _).trans apply Finset.sup_le intro a ha rw [Polynomial.hasseDeriv_coeff] have hc : ((a + i).choose i : MvPolynomial (Fin n) ℚ) = MvPolynomial.C ((a + i).choose i : ℚ) := by simp have hz : (z : MvPolynomial (Fin n) ℚ) ^ a = MvPolynomial.C ((z : ℚ) ^ a) := by simp rw [hc, hz, mul_assoc, mul_comm _ (MvPolynomial.C _), ← mul_assoc, ← MvPolynomial.C_mul] exact (MvPolynomial.degreeOf_C_mul_le _ _ _).trans (MvPolynomial.degreeOf_coeff_finSuccEquiv P j (a + i)) def exists_firstVariableHasseJet_ne_zero {n : ℕ} {P : MvPolynomial (Fin (n + 1)) ℚ} (hP : P ≠ 0) (B : ℕ) (hB : 0 < B) : ∃ z ≤ B, ∃ i ≤ P.degreeOf 0 / B, firstVariableHasseJet P z i ≠ 0 := by have hp : MvPolynomial.finSuccEquiv ℚ n P ≠ 0 := by intro hz apply hP exact (MvPolynomial.finSuccEquiv ℚ n).injective (hz.trans (map_zero _).symm) simpa only [MvPolynomial.natDegree_finSuccEquiv, firstVariableHasseJet] using exists_nat_grid_hasseDeriv_ne_zero hp B hB def gridHasseJet : {n : ℕ} → MvPolynomial (Fin n) ℚ → (Fin n → ℕ) → (Fin n → ℕ) → ℚ | 0, P, _, _ => MvPolynomial.eval (fun i => Fin.elim0 i) P | _n + 1, P, z, a => gridHasseJet (firstVariableHasseJet P (z 0) (a 0)) (fun i => z i.succ) (fun i => a i.succ) def exists_bounded_gridHasseJet_ne_zero (n : ℕ) (P : MvPolynomial (Fin n) ℚ) (hP : P ≠ 0) (B : ℕ) (hB : 0 < B) : ∃ z a : Fin n → ℕ, (∀ i, z i ≤ B) ∧ (∀ i, a i ≤ P.degreeOf i / B) ∧ gridHasseJet P z a ≠ 0 := by induction n with | zero => refine ⟨Fin.elim0, Fin.elim0, (fun i => Fin.elim0 i), (fun i => Fin.elim0 i), ?_⟩ change MvPolynomial.eval (fun i : Fin 0 => Fin.elim0 i) P ≠ 0 intro hz have hC : MvPolynomial.C (MvPolynomial.eval (fun i : Fin 0 => Fin.elim0 i) P) = P := by clear hP hz induction P using MvPolynomial.induction_on with | C c => simp | add P Q hP hQ => simp [map_add, hP, hQ] | mul_X P i h => exact Fin.elim0 i rw [hz, map_zero] at hC exact hP hC.symm | succ n ih => obtain ⟨z0, hz0, a0, ha0, hjet⟩ := exists_firstVariableHasseJet_ne_zero hP B hB obtain ⟨z, a, hz, ha, hne⟩ := ih (firstVariableHasseJet P z0 a0) hjet refine ⟨Fin.cons z0 z, Fin.cons a0 a, ?_, ?_, ?_⟩ · intro i refine Fin.cases hz0 (fun j => ?_) i exact hz j · intro i refine Fin.cases ha0 (fun j => ?_) i exact (ha j).trans (Nat.div_le_div_right (firstVariableHasseJet_degreeOf P z0 a0 j)) · simpa only [gridHasseJet, Fin.cons_zero, Fin.cons_succ] using hne end end Bounty end SubmissionComponent_MultivariateGridNonvanishing /- Component GridTaylorNonvanishing; SHA256 65425dbe043c4776e958538248ccfdc33885d2afc6e656abbccb4ee5a08fe6f8 -/ section SubmissionComponent_GridTaylorNonvanishing /- The recursive bounded-grid jets are the actual multivariate Taylor coefficients. -/ namespace Bounty noncomputable section open scoped BigOperators def polynomial_map_hasseDeriv {R S : Type*} [CommSemiring R] [CommSemiring S] (f : R →+* S) (P : Polynomial R) (i : ℕ) : (Polynomial.hasseDeriv i P).map f = Polynomial.hasseDeriv i (P.map f) := by ext n simp [Polynomial.hasseDeriv_coeff] def finSuccEquiv_weightedTaylor {n : ℕ} (β : Fin (n + 1) → ℚ) (P : MvPolynomial (Fin (n + 1)) ℚ) : MvPolynomial.finSuccEquiv ℚ n (weightedTaylor β P) = Polynomial.taylor (MvPolynomial.C (β 0)) ((MvPolynomial.finSuccEquiv ℚ n P).map (weightedTaylor (fun i => β i.succ))) := by have hC (a : ℚ) : MvPolynomial.finSuccEquiv ℚ n (MvPolynomial.C a) = Polynomial.C (MvPolynomial.C a) := by simp [MvPolynomial.finSuccEquiv_apply] induction P using MvPolynomial.induction_on with | C a => simp [MvPolynomial.finSuccEquiv_apply, weightedTaylor_C] | add P Q hP hQ => simp only [map_add, Polynomial.map_add, hP, hQ] | mul_X P i hP => refine Fin.cases ?_ (fun j => ?_) i · simp [map_mul, map_add, hP, MvPolynomial.finSuccEquiv_X_zero, Polynomial.taylor_apply, Polynomial.mul_comp, hC, weightedTaylor_X] · simp [map_mul, map_add, hP, MvPolynomial.finSuccEquiv_X_succ, Polynomial.taylor_apply, Polynomial.mul_comp, hC, weightedTaylor_X] def weightedTaylor_firstVariableHasseJet {n : ℕ} (P : MvPolynomial (Fin (n + 1)) ℚ) (z i : ℕ) (β : Fin n → ℚ) : weightedTaylor β (firstVariableHasseJet P z i) = (MvPolynomial.finSuccEquiv ℚ n (weightedTaylor (Fin.cons (z : ℚ) β) P)).coeff i := by rw [finSuccEquiv_weightedTaylor, Polynomial.taylor_coeff] simp only [Fin.cons_zero, Fin.cons_succ] rw [← polynomial_map_hasseDeriv] have hz : MvPolynomial.C (z : ℚ) = weightedTaylor β (z : MvPolynomial (Fin n) ℚ) := by simp rw [hz, Polynomial.eval_map_apply] rfl def gridHasseJet_eq_taylorCoeff (n : ℕ) (P : MvPolynomial (Fin n) ℚ) (z a : Fin n → ℕ) : gridHasseJet P z a = MvPolynomial.coeff (Finsupp.equivFunOnFinite.symm a) (weightedTaylor (fun i => (z i : ℚ)) P) := by induction n with | zero => have hz : (fun i : Fin 0 => (z i : ℚ)) = 0 := funext (fun i => Fin.elim0 i) have ha : Finsupp.equivFunOnFinite.symm a = 0 := by ext i; exact Fin.elim0 i have he : (fun i : Fin 0 => (Fin.elim0 i : ℚ)) = 0 := funext (fun i => Fin.elim0 i) simp only [gridHasseJet, hz, ha, he, weightedTaylor_zero, MvPolynomial.eval_zero, MvPolynomial.constantCoeff_eq] | succ n ih => rw [gridHasseJet, ih] rw [weightedTaylor_firstVariableHasseJet] rw [MvPolynomial.finSuccEquiv_coeff_coeff] congr 1 · ext i refine Fin.cases ?_ (fun j => ?_) i <;> simp · congr 1 apply congrArg weightedTaylor funext i refine Fin.cases ?_ (fun j => ?_) i <;> simp def exists_bounded_grid_taylorCoeff_ne_zero (n : ℕ) (P : MvPolynomial (Fin n) ℚ) (hP : P ≠ 0) (B : ℕ) (hB : 0 < B) : ∃ (z : Fin n → ℕ) (a : Fin n →₀ ℕ), (∀ i, z i ≤ B) ∧ (∀ i, a i ≤ P.degreeOf i / B) ∧ MvPolynomial.coeff a (weightedTaylor (fun i => (z i : ℚ)) P) ≠ 0 := by obtain ⟨z, a, hz, ha, hne⟩ := exists_bounded_gridHasseJet_ne_zero n P hP B hB exact ⟨z, Finsupp.equivFunOnFinite.symm a, hz, ha, (gridHasseJet_eq_taylorCoeff n P z a) ▸ hne⟩ end end Bounty end SubmissionComponent_GridTaylorNonvanishing /- Component GridDividedDerivative; SHA256 96225ae74321bcb2aa39fe73e035991612fea04ea64f7d7e086c5302ff0d1540 -/ section SubmissionComponent_GridDividedDerivative /- Bounded-grid nonvanishing for the same divided derivative operators used by Roth. -/ namespace Bounty noncomputable section open scoped BigOperators def constantCoeff_weightedTaylor {I : Type*} (β : I → ℚ) (P : MvPolynomial I ℚ) : MvPolynomial.constantCoeff (weightedTaylor β P) = MvPolynomial.eval β P := by induction P using MvPolynomial.induction_on with | C c => simp [weightedTaylor_C] | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp [map_mul, map_add, hP, weightedTaylor_X] def weightedTaylor_wordPDeriv {I : Type*} (β : I → ℚ) (s : List I) (P : MvPolynomial I ℚ) : weightedTaylor β (wordPDeriv s P) = wordPDeriv s (weightedTaylor β P) := by induction s with | nil => rfl | cons i s ih => rw [wordPDeriv_cons, weightedTaylor_pderiv, ih, wordPDeriv_cons] def weightedTaylor_dividedWordPDeriv {I : Type*} [Fintype I] [DecidableEq I] (β : I → ℚ) (s : List I) (P : MvPolynomial I ℚ) : weightedTaylor β (dividedWordPDeriv s P) = dividedWordPDeriv s (weightedTaylor β P) := by change weightedTaylor β ((wordDerivativeFactorial s)⁻¹ • wordPDeriv s P) = (wordDerivativeFactorial s)⁻¹ • wordPDeriv s (weightedTaylor β P) simp only [MvPolynomial.smul_eq_C_mul, map_mul, weightedTaylor_C, weightedTaylor_wordPDeriv] def eval_dividedWordPDeriv_eq_taylorCoeff {I : Type*} [Fintype I] [DecidableEq I] (β : I → ℚ) (s : List I) (P : MvPolynomial I ℚ) : MvPolynomial.eval β (dividedWordPDeriv s P) = MvPolynomial.coeff (wordDerivativeCounts s) (weightedTaylor β P) := by rw [← constantCoeff_weightedTaylor, MvPolynomial.constantCoeff_eq, weightedTaylor_dividedWordPDeriv, coeff_dividedWordPDeriv] simp def exists_wordDerivativeCounts {I : Type*} [Fintype I] [DecidableEq I] (a : I →₀ ℕ) : ∃ s : List I, wordDerivativeCounts s = a := by refine ⟨a.toMultiset.toList, ?_⟩ ext i rw [wordDerivativeCounts_apply, ← Multiset.coe_count, Multiset.coe_toList, Finsupp.count_toMultiset] def exists_bounded_grid_dividedWordPDeriv_ne_zero (n : ℕ) (P : MvPolynomial (Fin n) ℚ) (hP : P ≠ 0) (B : ℕ) (hB : 0 < B) : ∃ (z : Fin n → ℕ) (s : List (Fin n)), (∀ i, z i ≤ B) ∧ (∀ i, s.count i ≤ P.degreeOf i / B) ∧ MvPolynomial.eval (fun i => (z i : ℚ)) (dividedWordPDeriv s P) ≠ 0 := by obtain ⟨z, a, hz, ha, hne⟩ := exists_bounded_grid_taylorCoeff_ne_zero n P hP B hB obtain ⟨s, hs⟩ := exists_wordDerivativeCounts a refine ⟨z, s, hz, ?_, ?_⟩ · intro i simpa only [← hs, wordDerivativeCounts_apply] using ha i · rwa [eval_dividedWordPDeriv_eq_taylorCoeff, hs] end end Bounty end SubmissionComponent_GridDividedDerivative /- Component HyperplaneDerivativeWitness; SHA256 442ba4f39c72d251b0a37ee5e78d8be942cb30e28605dceb041aa3e53ea1f5a4 -/ section SubmissionComponent_HyperplaneDerivativeWitness /- Actual coordinate derivatives witnessing the weighted hyperplane index. -/ namespace Bounty noncomputable section open scoped BigOperators variable {B C : Type*} def pderiv_inl_rename_inr (b : B) (P : MvPolynomial C ℚ) : MvPolynomial.pderiv (Sum.inl b) (MvPolynomial.rename (Sum.inr : C → B ⊕ C) P) = 0 := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ, add_zero] | mul_X P c hP => simp [map_mul, hP] def pderiv_inl_complementShear (g : B → MvPolynomial C ℚ) (b : B) (P : MvPolynomial (B ⊕ C) ℚ) : MvPolynomial.pderiv (Sum.inl b) (complementShear g P) = complementShear g (MvPolynomial.pderiv (Sum.inl b) P) := by classical induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => cases i <;> simp [map_mul, MvPolynomial.pderiv_X, Pi.single_apply, complementShear_X_inl, complementShear_X_inr, pderiv_inl_rename_inr, hP, apply_ite] def wordPDeriv_inl_complementShear (g : B → MvPolynomial C ℚ) (s : List B) (P : MvPolynomial (B ⊕ C) ℚ) : wordPDeriv (s.map Sum.inl) (complementShear g P) = complementShear g (wordPDeriv (s.map Sum.inl) P) := by induction s with | nil => rfl | cons b s ih => simp only [List.map_cons, wordPDeriv_cons, ih, pderiv_inl_complementShear] def dividedWordPDeriv_inl_complementShear [Fintype B] [Fintype C] [DecidableEq B] [DecidableEq C] (g : B → MvPolynomial C ℚ) (s : List B) (P : MvPolynomial (B ⊕ C) ℚ) : dividedWordPDeriv (s.map Sum.inl) (complementShear g P) = complementShear g (dividedWordPDeriv (s.map Sum.inl) P) := by change (wordDerivativeFactorial (s.map Sum.inl))⁻¹ • wordPDeriv (s.map Sum.inl) (complementShear g P) = complementShear g ((wordDerivativeFactorial (s.map Sum.inl))⁻¹ • wordPDeriv (s.map Sum.inl) P) rw [map_smul, wordPDeriv_inl_complementShear] def complementRestriction (g : B → MvPolynomial C ℚ) (P : MvPolynomial (B ⊕ C) ℚ) : MvPolynomial C ℚ := (complementShear g P).killCompl Sum.inr_injective def wordDerivativeCounts_map_inl [Fintype B] [Fintype C] [DecidableEq B] [DecidableEq C] (s : List B) : wordDerivativeCounts (s.map (Sum.inl : B → B ⊕ C)) = (wordDerivativeCounts s).mapDomain Sum.inl := by induction s with | nil => simp only [List.map_nil, wordDerivativeCounts_nil, Finsupp.mapDomain_zero] | cons b s ih => rw [List.map_cons, wordDerivativeCounts_cons, wordDerivativeCounts_cons, Finsupp.mapDomain_add, Finsupp.mapDomain_single, ih] def exponent_map_inr_inl (a : C →₀ ℕ) (b : B) : a.mapDomain (Sum.inr : C → B ⊕ C) (Sum.inl b) = 0 := Finsupp.mapDomain_of_notMem_range _ _ (by simp) def exponent_map_inl_inr (a : B →₀ ℕ) (c : C) : a.mapDomain (Sum.inl : B → B ⊕ C) (Sum.inr c) = 0 := Finsupp.mapDomain_of_notMem_range _ _ (by simp) def sum_exponent_parts (e : (B ⊕ C) →₀ ℕ) : (e.comapDomain Sum.inr Sum.inr_injective.injOn).mapDomain Sum.inr + (e.comapDomain Sum.inl Sum.inl_injective.injOn).mapDomain Sum.inl = e := by ext i cases i <;> simp only [Finsupp.add_apply, Finsupp.mapDomain_apply Sum.inl_injective, Finsupp.mapDomain_apply Sum.inr_injective, Finsupp.comapDomain_apply, exponent_map_inr_inl, exponent_map_inl_inr, zero_add, add_zero] def coeff_restricted_pivot_derivative [Fintype B] [Fintype C] [DecidableEq B] [DecidableEq C] (P : MvPolynomial (B ⊕ C) ℚ) (e : (B ⊕ C) →₀ ℕ) (s : List B) (hs : wordDerivativeCounts s = e.comapDomain Sum.inl Sum.inl_injective.injOn) : MvPolynomial.coeff (e.comapDomain Sum.inr Sum.inr_injective.injOn) ((dividedWordPDeriv (s.map Sum.inl) P).killCompl Sum.inr_injective) = MvPolynomial.coeff e P := by rw [MvPolynomial.coeff_killCompl, coeff_dividedWordPDeriv] change MvPolynomial.coeff (_ + wordDerivativeCounts (s.map Sum.inl)) P * (∏ i, (((e.comapDomain Sum.inr Sum.inr_injective.injOn).mapDomain Sum.inr i + wordDerivativeCounts (s.map Sum.inl) i).choose (wordDerivativeCounts (s.map Sum.inl) i) : ℚ)) = _ rw [wordDerivativeCounts_map_inl, hs, sum_exponent_parts] have hf (i : B ⊕ C) : (((e.comapDomain Sum.inr Sum.inr_injective.injOn).mapDomain Sum.inr i + (e.comapDomain Sum.inl Sum.inl_injective.injOn).mapDomain Sum.inl i).choose ((e.comapDomain Sum.inl Sum.inl_injective.injOn).mapDomain Sum.inl i) : ℚ) = 1 := by cases i <;> simp [exponent_map_inr_inl, exponent_map_inl_inr] simp only [hf, Finset.prod_const_one, mul_one] def exists_pivot_derivative_restriction [Fintype B] [Fintype C] [DecidableEq B] [DecidableEq C] (w : B → ℕ) (g : B → MvPolynomial C ℚ) (P : MvPolynomial (B ⊕ C) ℚ) (hP : P ≠ 0) : ∃ s : List B, complementRestriction g (dividedWordPDeriv (s.map Sum.inl) P) ≠ 0 ∧ Finsupp.weight w (wordDerivativeCounts s) = (complementHyperplaneIndex w g P).toNat := by have hS : complementShear g P ≠ 0 := by intro hz exact hP ((complementShear_injective g) (hz.trans (map_zero _).symm)) obtain ⟨e, he, hweight⟩ := weightedPolynomialOrder_attained (Sum.elim w (fun _ : C => 0)) hS obtain ⟨s, hs⟩ := exists_wordDerivativeCounts (e.comapDomain Sum.inl Sum.inl_injective.injOn) refine ⟨s, ?_, ?_⟩ · intro hz have hc := coeff_restricted_pivot_derivative (complementShear g P) e s hs rw [dividedWordPDeriv_inl_complementShear] at hc change MvPolynomial.coeff _ (complementRestriction g _) = _ at hc rw [hz, MvPolynomial.coeff_zero] at hc exact he hc.symm · have hn := congrArg ENat.toNat hweight simp only [ENat.toNat_natCast] at hn rw [hs] change _ = (weightedPolynomialOrder (Sum.elim w (fun _ : C => 0)) (complementShear g P)).toNat rw [← hn, Finsupp.weight_eq_sum, Finsupp.weight_eq_sum, Fintype.sum_sum_type] simp [Finsupp.comapDomain_apply] def exists_normalized_pivot_derivative_restriction {m : ℕ} [Fintype C] [DecidableEq C] (r : Fin m → ℕ) (hr : ∀ i, 0 < r i) (g : Fin m → MvPolynomial C ℚ) (P : MvPolynomial (Fin m ⊕ C) ℚ) (hP : P ≠ 0) : ∃ s : List (Fin m), complementRestriction g (dividedWordPDeriv (s.map Sum.inl) P) ≠ 0 ∧ (∑ i, ((s.count i : ℕ) : ℝ) / r i) = normalizedComplementHyperplaneIndex r g P := by obtain ⟨s, hs, heq⟩ := exists_pivot_derivative_restriction (rothWeight r) g P hP refine ⟨s, hs, ?_⟩ rw [normalizedComplementHyperplaneIndex, ← heq, rothMonomialWeight_eq_normalized_weight hr] rfl end end Bounty end SubmissionComponent_HyperplaneDerivativeWitness /- Component HyperplaneGraph; SHA256 8fbd8810802a6ac638830614b53e07561fbf7ef25dc4e1d34211e399372e0343 -/ section SubmissionComponent_HyperplaneGraph /- The concrete shear restricts to the kernel of the given rational forms. -/ namespace Bounty noncomputable section open scoped BigOperators def sum_complement_fiber {m d : ℕ} {R : Type*} [AddCommMonoid R] (p : Fin m → Fin (d + 1)) (f : Fin m × Fin (d + 1) → R) (h : Fin m) : (∑ k ∈ Finset.univ.erase (p h), f (h, k)) = ∑ x ∈ Finset.univ.filter (fun x : HyperplaneComplement p => x.val.1 = h), f x.val := by classical refine Finset.sum_bij (fun k hk => (⟨(h, k), (Finset.mem_erase.mp hk).1⟩ : HyperplaneComplement p)) ?_ ?_ ?_ ?_ · intro k hk exact Finset.mem_filter.mpr ⟨Finset.mem_univ _, rfl⟩ · intro k hk l hl he exact congrArg (fun x : HyperplaneComplement p => x.val.2) he · intro x hx have hh : x.val.1 = h := (Finset.mem_filter.mp hx).2 have hk : x.val.2 ≠ p h := by simpa only [← hh] using x.property refine ⟨x.val.2, Finset.mem_erase.mpr ⟨hk, Finset.mem_univ _⟩, ?_⟩ apply Subtype.ext exact Prod.ext hh.symm rfl · intro k hk rfl def productHyperplaneLinearForm {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (h : Fin m) : MvPolynomial (Fin m × Fin (d + 1)) ℚ := ∑ k, MvPolynomial.C (b h k) * MvPolynomial.X (h, k) def pivot_scaled_complement_form {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (h : Fin m) (hp : b h (p h) ≠ 0) : MvPolynomial.C (b h (p h)) * MvPolynomial.rename (Sum.inr : HyperplaneComplement p → Fin m ⊕ HyperplaneComplement p) (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p) h) = -(∑ x ∈ Finset.univ.filter (fun x : HyperplaneComplement p => x.val.1 = h), MvPolynomial.C (b x.val.1 x.val.2) * MvPolynomial.X (Sum.inr x)) := by classical unfold blockComplementLinear rw [map_sum, Finset.mul_sum, ← Finset.sum_neg_distrib] refine Finset.sum_congr ?_ ?_ · ext x simp intro x hx have hh : x.val.1 = h := (Finset.mem_filter.mp hx).2 simp only [map_mul, MvPolynomial.rename_C, MvPolynomial.rename_X, pivotComplementCoefficient, hh] rw [← mul_assoc, ← MvPolynomial.C_mul] have hc : b h (p h) * -(b h x.val.2 / b h (p h)) = -(b h x.val.2) := by field_simp rw [hc, MvPolynomial.C_neg, neg_mul] def rename_productHyperplaneLinearForm {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (h : Fin m) (hp : b h (p h) ≠ 0) : MvPolynomial.rename (hyperplanePivotEquiv p) (productHyperplaneLinearForm b h) = MvPolynomial.C (b h (p h)) * (MvPolynomial.X (Sum.inl h) - MvPolynomial.rename Sum.inr (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p) h)) := by classical unfold productHyperplaneLinearForm rw [map_sum] simp only [map_mul, MvPolynomial.rename_C, MvPolynomial.rename_X] rw [← Finset.sum_erase_add Finset.univ _ (Finset.mem_univ (p h))] rw [sum_complement_fiber p (fun x => MvPolynomial.C (b x.1 x.2) * MvPolynomial.X (hyperplanePivotEquiv p x)) h] simp only [hyperplanePivotEquiv_complement, hyperplanePivotEquiv_pivot] rw [mul_sub, pivot_scaled_complement_form b p h hp] ring variable {B C : Type*} def killCompl_inr_X_inl (b : B) : (MvPolynomial.X (R := ℚ) (Sum.inl b : B ⊕ C)).killCompl Sum.inr_injective = 0 := by change (MvPolynomial.monomial (Finsupp.single (Sum.inl b) 1) (1 : ℚ)).killCompl _ = 0 apply MvPolynomial.killCompl_monomial_eq_zero_of_notMem_range _ _ (a := Sum.inl b) · simp · simp def killCompl_inr_X_inr (c : C) : (MvPolynomial.X (R := ℚ) (Sum.inr c : B ⊕ C)).killCompl Sum.inr_injective = MvPolynomial.X c := by simpa only [MvPolynomial.rename_X] using MvPolynomial.killCompl_rename_app (f := (Sum.inr : C → B ⊕ C)) Sum.inr_injective (MvPolynomial.X (R := ℚ) c) def complementRestriction_eq_aeval (g : B → MvPolynomial C ℚ) (P : MvPolynomial (B ⊕ C) ℚ) : complementRestriction g P = MvPolynomial.aeval (Sum.elim g MvPolynomial.X) P := by induction P using MvPolynomial.induction_on with | C a => simp [complementRestriction] | add P Q hP hQ => simpa only [complementRestriction, map_add] using congrArg₂ (· + ·) hP hQ | mul_X P i hP => unfold complementRestriction at * cases i <;> simp only [map_mul, MvPolynomial.aeval_X, Sum.elim_inl, Sum.elim_inr, complementShear_X_inl, complementShear_X_inr, map_add, killCompl_inr_X_inl, killCompl_inr_X_inr, MvPolynomial.killCompl_rename_app, zero_add, hP] def complementRestriction_productHyperplaneLinearForm {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (h : Fin m) (hp : b h (p h) ≠ 0) : complementRestriction (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p)) (MvPolynomial.rename (hyperplanePivotEquiv p) (productHyperplaneLinearForm b h)) = 0 := by rw [rename_productHyperplaneLinearForm b p h hp] simp [complementRestriction, map_mul, map_sub, complementShear_rename_inr, complementShear_X_inl, killCompl_inr_X_inl] end end Bounty end SubmissionComponent_HyperplaneGraph /- Component DividedDerivativeRename; SHA256 0ac17492adcbfef7e918b335642f839749e74db7c48cee00cd6e567b23b78db1 -/ section SubmissionComponent_DividedDerivativeRename /- Exact coordinate transport for divided derivative words. -/ namespace Bounty noncomputable section open scoped BigOperators def wordPDeriv_rename {I J : Type*} (f : I → J) (hf : Function.Injective f) (s : List I) (P : MvPolynomial I ℚ) : wordPDeriv (s.map f) (MvPolynomial.rename f P) = MvPolynomial.rename f (wordPDeriv s P) := by induction s with | nil => rfl | cons i s ih => simp only [List.map_cons, wordPDeriv_cons, ih, MvPolynomial.pderiv_rename hf] def wordDerivativeCounts_map_injective {I J : Type*} [Fintype I] [Fintype J] [DecidableEq I] [DecidableEq J] (f : I → J) (s : List I) : wordDerivativeCounts (s.map f) = (wordDerivativeCounts s).mapDomain f := by induction s with | nil => simp only [List.map_nil, wordDerivativeCounts_nil, Finsupp.mapDomain_zero] | cons i s ih => rw [List.map_cons, wordDerivativeCounts_cons, wordDerivativeCounts_cons, Finsupp.mapDomain_add, Finsupp.mapDomain_single, ih] def wordDerivativeFactorial_map_equiv {I J : Type*} [Fintype I] [Fintype J] [DecidableEq I] [DecidableEq J] (e : I ≃ J) (s : List I) : wordDerivativeFactorial (s.map e) = wordDerivativeFactorial s := by change (∏ j, ((wordDerivativeCounts (s.map e) j).factorial : ℚ)) = ∏ i, ((wordDerivativeCounts s i).factorial : ℚ) rw [wordDerivativeCounts_map_injective] calc _ = ∏ i, (((wordDerivativeCounts s).mapDomain e (e i)).factorial : ℚ) := (Equiv.prod_comp e _).symm _ = _ := by simp only [Finsupp.mapDomain_apply e.injective] def dividedWordPDeriv_rename_equiv {I J : Type*} [Fintype I] [Fintype J] [DecidableEq I] [DecidableEq J] (e : I ≃ J) (s : List I) (P : MvPolynomial I ℚ) : dividedWordPDeriv (s.map e) (MvPolynomial.rename e P) = MvPolynomial.rename e (dividedWordPDeriv s P) := by change (wordDerivativeFactorial (s.map e))⁻¹ • wordPDeriv (s.map e) (MvPolynomial.rename e P) = MvPolynomial.rename e ((wordDerivativeFactorial s)⁻¹ • wordPDeriv s P) rw [map_smul, wordPDeriv_rename _ e.injective, wordDerivativeFactorial_map_equiv] end end Bounty end SubmissionComponent_DividedDerivativeRename /- Component BalancedAuxiliaryHeight; SHA256 c0f42411c2cd8b645813e768c4d07ae693e05a3f2eb3cfee7212e78e2f635e05 -/ section SubmissionComponent_BalancedAuxiliaryHeight /- Degree-uniform coefficient heights for the constructed balanced auxiliary polynomial. All counting estimates are for the actual composition-array type. -/ namespace Bounty noncomputable section open scoped BigOperators def weakComposition_card_le (d r : ℕ) : Fintype.card (WeakComposition d r) ≤ (r + 1) ^ d := by let f : WeakComposition d r → Fin d → Fin (r + 1) := fun v i => ⟨v.val i, Nat.lt_succ_of_le (weakComposition_coord_le v i)⟩ have hf : Function.Injective f := by intro v w hvw apply Subtype.ext funext i exact congrArg (fun z : Fin d → Fin (r + 1) => (z i).val) hvw simpa using Fintype.card_le_of_injective f hf def compositionArray_card_le_product {m d : ℕ} (r : Fin m → ℕ) : Fintype.card (CompositionArray m d r) ≤ ∏ h, (r h + 1) ^ d := by rw [Fintype.card_pi] exact Finset.prod_le_prod (fun h _ => Nat.zero_le _) (fun h _ => weakComposition_card_le d (r h)) def compositionArray_card_le_two_pow {m d : ℕ} (r : Fin m → ℕ) : Fintype.card (CompositionArray m d r) ≤ 2 ^ (d * ∑ h, r h) := by calc _ ≤ ∏ h, (r h + 1) ^ d := compositionArray_card_le_product r _ ≤ ∏ h, (2 ^ r h) ^ d := Finset.prod_le_prod (fun h _ => Nat.zero_le _) (fun h _ => Nat.pow_le_pow_left (r h).lt_two_pow_self d) _ = _ := by simp_rw [← pow_mul] rw [Finset.prod_pow_eq_pow_sum] congr 1 rw [← Finset.sum_mul, mul_comm] def compositionArray_log_card_le {m d : ℕ} (r : Fin m → ℕ) (hd : 0 < d) : Real.log (Fintype.card (CompositionArray m d r)) ≤ (d : ℝ) * (∑ h, (r h : ℝ)) * Real.log 2 := by have hN : (0 : ℝ) < Fintype.card (CompositionArray m d r) := by exact_mod_cast compositionArray_card_pos r hd have hbound : (Fintype.card (CompositionArray m d r) : ℝ) ≤ (2 : ℝ) ^ (d * ∑ h, r h) := by exact_mod_cast compositionArray_card_le_two_pow (d := d) r have hh := Real.log_le_log hN hbound simpa only [Real.log_pow, Nat.cast_mul, Nat.cast_sum] using hh def balanced_auxiliary_log_bound {m d : ℕ} (r : Fin m → ℕ) (hd : 0 < d) (P : MvPolynomial (Fin m × Fin d) ℤ) (hP : P ≠ 0) (C : ℝ) (hC : 1 ≤ C) (hbound : polynomialCoeffL1 P ≤ (Fintype.card (CompositionArray m d r) : ℝ) ^ 2 * C ^ (∑ h, r h)) : Real.log (polynomialCoeffL1 P) ≤ (2 * (d : ℝ) * Real.log 2 + Real.log C) * (∑ h, (r h : ℝ)) := by have hN : (0 : ℝ) < Fintype.card (CompositionArray m d r) := by exact_mod_cast compositionArray_card_pos r hd have hC0 : 0 < C := lt_of_lt_of_le zero_lt_one hC have hlogN := compositionArray_log_card_le r hd calc _ ≤ Real.log ((Fintype.card (CompositionArray m d r) : ℝ) ^ 2 * C ^ (∑ h, r h)) := Real.log_le_log (polynomialCoeffL1_pos hP) hbound _ = 2 * Real.log (Fintype.card (CompositionArray m d r)) + (∑ h, (r h : ℝ)) * Real.log C := by rw [Real.log_mul (pow_ne_zero _ (ne_of_gt hN)) (pow_ne_zero _ (ne_of_gt hC0)), Real.log_pow, Real.log_pow] norm_num [Nat.cast_sum] _ ≤ _ := by nlinarith def exists_balanced_integer_auxiliary_log_bound {m d s : ℕ} (r : Fin m → ℕ) (hm : 0 < m) (hd : 0 < d) (hr : ∀ h, 0 < r h) (η : ℝ) (hη : 0 ≤ η) (hlarge : 4 * (s : ℝ) * d ≤ (m : ℝ) * η ^ 2) (A : Fin s → Fin m → Fin d → Fin d → ℤ) (C : ℝ) (hC : 1 ≤ C) (hA : ∀ v h i, ∑ j, ‖A v h i j‖ ≤ C) : ∃ P : MvPolynomial (Fin m × Fin d) ℤ, P ≠ 0 ∧ ProductBlockHomogeneous r P ∧ Real.log (polynomialCoeffL1 P) ≤ (2 * (d : ℝ) * Real.log 2 + Real.log C) * (∑ h, (r h : ℝ)) ∧ ∀ v e, MvPolynomial.coeff e (blockLinearSubstitution (A v) P) ≠ 0 → (∀ h, ∑ i, e (h, i) = r h) ∧ ∀ i : Fin d, |(∑ h : Fin m, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| < (m : ℝ) * η := by obtain ⟨P, hP, hhom, hnorm, hbalance⟩ := exists_balanced_integer_auxiliary r hm hd hr η hη hlarge A C hC hA exact ⟨P, hP, hhom, balanced_auxiliary_log_bound r hd P hP C hC hnorm, hbalance⟩ end end Bounty end SubmissionComponent_BalancedAuxiliaryHeight /- Component RationalBalancedAuxiliary; SHA256 a2a9d196f4a912803c47e3a8ca6b684b434403b22380573724f497d074424dbe -/ section SubmissionComponent_RationalBalancedAuxiliary /- Common-denominator transfer of the actual balanced integer auxiliary polynomial to fixed rational changes of coordinates inside blocks. -/ namespace Bounty noncomputable section open scoped BigOperators def rationalBlockLinearForm {m d : ℕ} (B : Fin m → Fin d → Fin d → ℚ) (x : Fin m × Fin d) : MvPolynomial (Fin m × Fin d) ℚ := ∑ j, MvPolynomial.C (B x.1 x.2 j) * MvPolynomial.X (x.1, j) def rationalBlockLinearSubstitution {m d : ℕ} (B : Fin m → Fin d → Fin d → ℚ) : MvPolynomial (Fin m × Fin d) ℚ →ₐ[ℚ] MvPolynomial (Fin m × Fin d) ℚ := MvPolynomial.aeval (rationalBlockLinearForm B) def integer_map_aeval {I : Type*} (g : I → MvPolynomial I ℤ) (P : MvPolynomial I ℤ) : MvPolynomial.map (Int.castRingHom ℚ) (MvPolynomial.aeval g P) = MvPolynomial.aeval (fun i => MvPolynomial.map (Int.castRingHom ℚ) (g i)) (MvPolynomial.map (Int.castRingHom ℚ) P) := by induction P using MvPolynomial.induction_on with | C a => simp only [MvPolynomial.aeval_C, MvPolynomial.algebraMap_eq, MvPolynomial.map_C, Int.coe_castRingHom] | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp only [map_mul, MvPolynomial.aeval_X, MvPolynomial.map_X, hP] def aeval_scaled_of_fixed_total {I : Type*} [Fintype I] (P : MvPolynomial I ℚ) (R : ℕ) (hP : ∀ e ∈ P.support, ∑ i, e i = R) (g : I → MvPolynomial I ℚ) (c : ℚ) : MvPolynomial.aeval (fun i => MvPolynomial.C c * g i) P = MvPolynomial.C (c ^ R) * MvPolynomial.aeval g P := by classical conv_lhs => rw [MvPolynomial.as_sum P] conv_rhs => rw [MvPolynomial.as_sum P] simp only [map_sum, Finset.mul_sum] apply Finset.sum_congr rfl intro e he rw [MvPolynomial.aeval_monomial, MvPolynomial.aeval_monomial] simp only [MvPolynomial.algebraMap_eq] rw [Finsupp.prod_fintype _ _ (fun _ => pow_zero _), Finsupp.prod_fintype _ _ (fun _ => pow_zero _)] simp_rw [mul_pow] rw [Finset.prod_mul_distrib, Finset.prod_pow_eq_pow_sum, hP e he, ← map_pow] ring def productBlockHomogeneous_integer_map_total {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℤ) (hP : ProductBlockHomogeneous r P) (e : (Fin m × Fin d) →₀ ℕ) (he : e ∈ (MvPolynomial.map (Int.castRingHom ℚ) P).support) : ∑ x : Fin m × Fin d, e x = ∑ h, r h := by have hc : MvPolynomial.coeff e P ≠ 0 := by intro hz have hh := MvPolynomial.mem_support_iff.mp he simp [MvPolynomial.coeff_map, hz] at hh rw [Fintype.sum_prod_type] exact Finset.sum_congr rfl (fun h _ => hP e (MvPolynomial.mem_support_iff.mpr hc) h) def map_blockLinearForm_scaled {m d : ℕ} (A : Fin m → Fin d → Fin d → ℤ) (B : Fin m → Fin d → Fin d → ℚ) (D : ℤ) (hAB : ∀ h i j, (A h i j : ℚ) = (D : ℚ) * B h i j) (x : Fin m × Fin d) : MvPolynomial.map (Int.castRingHom ℚ) (blockLinearForm A x) = MvPolynomial.C (D : ℚ) * rationalBlockLinearForm B x := by simp only [blockLinearForm, rationalBlockLinearForm, map_sum, map_mul, MvPolynomial.map_C, MvPolynomial.map_X, Int.coe_castRingHom, Finset.mul_sum] apply Finset.sum_congr rfl intro j _ rw [hAB, map_mul, mul_assoc] def rationalBlockLinearSubstitution_scale_identity {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℤ) (hP : ProductBlockHomogeneous r P) (A : Fin m → Fin d → Fin d → ℤ) (B : Fin m → Fin d → Fin d → ℚ) (D : ℤ) (hAB : ∀ h i j, (A h i j : ℚ) = (D : ℚ) * B h i j) : MvPolynomial.map (Int.castRingHom ℚ) (blockLinearSubstitution A P) = MvPolynomial.C ((D : ℚ) ^ (∑ h, r h)) * rationalBlockLinearSubstitution B (MvPolynomial.map (Int.castRingHom ℚ) P) := by rw [blockLinearSubstitution, integer_map_aeval] simp_rw [map_blockLinearForm_scaled A B D hAB] exact aeval_scaled_of_fixed_total _ _ (productBlockHomogeneous_integer_map_total r P hP) (rationalBlockLinearForm B) (D : ℚ) def rationalBlockLinearSubstitution_coeff_ne_zero {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℤ) (hP : ProductBlockHomogeneous r P) (A : Fin m → Fin d → Fin d → ℤ) (B : Fin m → Fin d → Fin d → ℚ) (D : ℤ) (hD : D ≠ 0) (hAB : ∀ h i j, (A h i j : ℚ) = (D : ℚ) * B h i j) (e : (Fin m × Fin d) →₀ ℕ) (he : MvPolynomial.coeff e (rationalBlockLinearSubstitution B (MvPolynomial.map (Int.castRingHom ℚ) P)) ≠ 0) : MvPolynomial.coeff e (blockLinearSubstitution A P) ≠ 0 := by have hh := congrArg (MvPolynomial.coeff e) (rationalBlockLinearSubstitution_scale_identity r P hP A B D hAB) rw [MvPolynomial.coeff_map, MvPolynomial.coeff_C_mul] at hh have hDq : (D : ℚ) ≠ 0 := by exact_mod_cast hD intro hz simp only [hz, map_zero] at hh exact (mul_ne_zero (pow_ne_zero _ hDq) he) hh.symm def exists_integer_scaled_block_matrices {m d s : ℕ} (B : Fin s → Fin m → Fin d → Fin d → ℚ) : ∃ D : ℤ, 0 < D ∧ ∃ A : Fin s → Fin m → Fin d → Fin d → ℤ, ∀ v h i j, (A v h i j : ℚ) = (D : ℚ) * B v h i j := by obtain ⟨D, hD⟩ := IsLocalization.exist_integer_multiples_of_finite (Submonoid.pos ℤ) (fun z : Fin s × Fin m × Fin d × Fin d => B z.1 z.2.1 z.2.2.1 z.2.2.2) choose A hA using hD refine ⟨D.val, D.property, fun v h i j => A (v, h, i, j), ?_⟩ intro v h i j simpa [Algebra.smul_def] using hA (v, h, i, j) def exists_integer_block_matrix_norm_bound {m d s : ℕ} (A : Fin s → Fin m → Fin d → Fin d → ℤ) : ∃ C : ℝ, 1 ≤ C ∧ ∀ v h i, ∑ j, ‖A v h i j‖ ≤ C := by let T : ℝ := ∑ v, ∑ h, ∑ i, ∑ j, ‖A v h i j‖ have hT : 0 ≤ T := by dsimp [T]; positivity refine ⟨1 + T, by linarith, ?_⟩ intro v h i have hi : (∑ j, ‖A v h i j‖) ≤ ∑ k, ∑ j, ‖A v h k j‖ := Finset.single_le_sum (f := fun k : Fin d => ∑ j, ‖A v h k j‖) (fun _ _ => by positivity) (Finset.mem_univ i) have hh : (∑ k, ∑ j, ‖A v h k j‖) ≤ ∑ t, ∑ k, ∑ j, ‖A v t k j‖ := Finset.single_le_sum (f := fun t : Fin m => ∑ k, ∑ j, ‖A v t k j‖) (fun _ _ => by positivity) (Finset.mem_univ h) have hv : (∑ t, ∑ k, ∑ j, ‖A v t k j‖) ≤ T := Finset.single_le_sum (f := fun w : Fin s => ∑ t, ∑ k, ∑ j, ‖A w t k j‖) (fun _ _ => by positivity) (Finset.mem_univ v) linarith [hi.trans (hh.trans hv)] /-- The height constant is chosen from the fixed rational matrices before the positive degree tuple and the balance tolerance. Invertibility is not needed for construction, so in particular the theorem applies to invertible matrices. -/ def exists_rational_balanced_auxiliary_constant {m d s : ℕ} (hm : 0 < m) (hd : 0 < d) (B : Fin s → Fin m → Fin d → Fin d → ℚ) : ∃ K : ℝ, 0 ≤ K ∧ ∀ (r : Fin m → ℕ), (∀ h, 0 < r h) → ∀ η : ℝ, 0 ≤ η → 4 * (s : ℝ) * d ≤ (m : ℝ) * η ^ 2 → ∃ P : MvPolynomial (Fin m × Fin d) ℤ, P ≠ 0 ∧ ProductBlockHomogeneous r P ∧ Real.log (polynomialCoeffL1 P) ≤ K * (∑ h, (r h : ℝ)) ∧ ∀ v e, MvPolynomial.coeff e (rationalBlockLinearSubstitution (B v) (MvPolynomial.map (Int.castRingHom ℚ) P)) ≠ 0 → (∀ h, ∑ i, e (h, i) = r h) ∧ ∀ i : Fin d, |(∑ h : Fin m, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| < (m : ℝ) * η := by obtain ⟨D, hD, A, hAB⟩ := exists_integer_scaled_block_matrices B obtain ⟨C, hC, hA⟩ := exists_integer_block_matrix_norm_bound A refine ⟨2 * (d : ℝ) * Real.log 2 + Real.log C, ?_, ?_⟩ · exact add_nonneg (mul_nonneg (by positivity) (Real.log_nonneg (by norm_num))) (Real.log_nonneg hC) · intro r hr η hη hlarge obtain ⟨P, hP, hhom, hnorm, hbalance⟩ := exists_balanced_integer_auxiliary_log_bound r hm hd hr η hη hlarge A C hC hA refine ⟨P, hP, hhom, hnorm, ?_⟩ intro v e he exact hbalance v e (rationalBlockLinearSubstitution_coeff_ne_zero r P hhom (A v) (B v) D (ne_of_gt hD) (hAB v) e he) end end Bounty end SubmissionComponent_RationalBalancedAuxiliary /- Component BalancedDerivativeSupport; SHA256 9b55965576a0bdab1f309355e0c9cd93c35b356c1083fa5013d7d41306f36468 -/ section SubmissionComponent_BalancedDerivativeSupport /- Actual chain-rule support origins and preservation of balanced columns under a small divided derivative in the original coordinates. -/ namespace Bounty noncomputable section open scoped BigOperators def pderiv_aeval_eq_sum_pderiv {I J : Type*} [Fintype I] (g : I → MvPolynomial J ℚ) (P : MvPolynomial I ℚ) (j : J) : MvPolynomial.pderiv j (MvPolynomial.aeval g P) = ∑ i, MvPolynomial.pderiv j (g i) * MvPolynomial.aeval g (MvPolynomial.pderiv i P) := by classical induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ, mul_add, Finset.sum_add_distrib] | mul_X P a hP => simp only [map_mul, MvPolynomial.aeval_X, MvPolynomial.pderiv_mul, map_add, MvPolynomial.pderiv_X, Pi.single_apply, hP, mul_add, Finset.sum_add_distrib] have hfirst : ∑ i, MvPolynomial.pderiv j (g i) * (MvPolynomial.aeval g (MvPolynomial.pderiv i P) * g a) = (∑ i, MvPolynomial.pderiv j (g i) * MvPolynomial.aeval g (MvPolynomial.pderiv i P)) * g a := by rw [Finset.sum_mul] exact Finset.sum_congr rfl (fun _ _ => by ring) rw [hfirst] congr 1 simp [mul_comm] def rationalBlockLinearSubstitution_C {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (a : ℚ) : rationalBlockLinearSubstitution A (MvPolynomial.C a) = MvPolynomial.C a := by simp [rationalBlockLinearSubstitution] def rationalBlockLinearSubstitution_X {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (x : Fin m × Fin d) : rationalBlockLinearSubstitution A (MvPolynomial.X x) = rationalBlockLinearForm A x := by simp [rationalBlockLinearSubstitution] def pderiv_rationalBlockLinearForm {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (h a : Fin m) (j i : Fin d) : MvPolynomial.pderiv (h, j) (rationalBlockLinearForm A (a, i)) = if a = h then MvPolynomial.C (A a i j) else 0 := by classical unfold rationalBlockLinearForm simp only [map_sum, MvPolynomial.pderiv_C_mul, MvPolynomial.pderiv_X, Pi.single_apply] by_cases hah : a = h · subst a simp only [Prod.mk.injEq, true_and] simp · simp [Prod.mk.injEq, hah] def pderiv_rationalBlockLinearSubstitution {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (P : MvPolynomial (Fin m × Fin d) ℚ) (h : Fin m) (j : Fin d) : MvPolynomial.pderiv (h, j) (rationalBlockLinearSubstitution A P) = ∑ i, MvPolynomial.C (A h i j) * rationalBlockLinearSubstitution A (MvPolynomial.pderiv (h, i) P) := by change MvPolynomial.pderiv (h, j) (MvPolynomial.aeval (rationalBlockLinearForm A) P) = ∑ i, MvPolynomial.C (A h i j) * MvPolynomial.aeval (rationalBlockLinearForm A) (MvPolynomial.pderiv (h, i) P) rw [pderiv_aeval_eq_sum_pderiv, Fintype.sum_prod_type] simp only [pderiv_rationalBlockLinearForm, ite_mul, zero_mul] simp def rationalBlockLinearSubstitution_linearForm {m d : ℕ} (A B : Fin m → Matrix (Fin d) (Fin d) ℚ) (x : Fin m × Fin d) : rationalBlockLinearSubstitution A (rationalBlockLinearForm B x) = rationalBlockLinearForm (fun h => B h * A h) x := by simp only [rationalBlockLinearForm, map_sum, map_mul, rationalBlockLinearSubstitution_C, rationalBlockLinearSubstitution_X, Matrix.mul_apply, Finset.mul_sum, map_sum, Finset.sum_mul] rw [Finset.sum_comm] apply Finset.sum_congr rfl intro i _ apply Finset.sum_congr rfl intro j _ exact (mul_assoc _ _ _).symm def rationalBlockLinearSubstitution_comp {m d : ℕ} (A B : Fin m → Matrix (Fin d) (Fin d) ℚ) (P : MvPolynomial (Fin m × Fin d) ℚ) : rationalBlockLinearSubstitution A (rationalBlockLinearSubstitution B P) = rationalBlockLinearSubstitution (fun h => B h * A h) P := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp only [map_mul, rationalBlockLinearSubstitution_X, rationalBlockLinearSubstitution_linearForm, hP] def rationalBlockLinearSubstitution_one {m d : ℕ} (P : MvPolynomial (Fin m × Fin d) ℚ) : rationalBlockLinearSubstitution (fun _ => (1 : Matrix (Fin d) (Fin d) ℚ)) P = P := by induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P x hP => simp [map_mul, rationalBlockLinearSubstitution_X, rationalBlockLinearForm, Matrix.one_apply, hP] /-- The inverse chain rule is derived from the actual invertible block matrices. -/ def rationalBlockLinearSubstitution_pderiv {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, (A h).det ≠ 0) (P : MvPolynomial (Fin m × Fin d) ℚ) (h : Fin m) (i : Fin d) : rationalBlockLinearSubstitution A (MvPolynomial.pderiv (h, i) P) = ∑ j, MvPolynomial.C ((A h)⁻¹ j i) * MvPolynomial.pderiv (h, j) (rationalBlockLinearSubstitution A P) := by let Ainv : Fin m → Matrix (Fin d) (Fin d) ℚ := fun h => (A h)⁻¹ change rationalBlockLinearSubstitution A (MvPolynomial.pderiv (h, i) P) = ∑ j, MvPolynomial.C (Ainv h j i) * MvPolynomial.pderiv (h, j) (rationalBlockLinearSubstitution A P) have hleft (Q : MvPolynomial (Fin m × Fin d) ℚ) : rationalBlockLinearSubstitution Ainv (rationalBlockLinearSubstitution A Q) = Q := by rw [rationalBlockLinearSubstitution_comp] have hh : (fun h => A h * Ainv h) = fun _ => (1 : Matrix (Fin d) (Fin d) ℚ) := by funext h exact Matrix.mul_nonsing_inv _ (isUnit_iff_ne_zero.mpr (hA h)) exact (congrArg (fun T : Fin m → Matrix (Fin d) (Fin d) ℚ => rationalBlockLinearSubstitution T Q) hh).trans (rationalBlockLinearSubstitution_one Q) have hright (Q : MvPolynomial (Fin m × Fin d) ℚ) : rationalBlockLinearSubstitution A (rationalBlockLinearSubstitution Ainv Q) = Q := by rw [rationalBlockLinearSubstitution_comp] have hh : (fun h => Ainv h * A h) = fun _ => (1 : Matrix (Fin d) (Fin d) ℚ) := by funext h exact Matrix.nonsing_inv_mul _ (isUnit_iff_ne_zero.mpr (hA h)) exact (congrArg (fun T : Fin m → Matrix (Fin d) (Fin d) ℚ => rationalBlockLinearSubstitution T Q) hh).trans (rationalBlockLinearSubstitution_one Q) have hh := pderiv_rationalBlockLinearSubstitution Ainv (rationalBlockLinearSubstitution A P) h i rw [hleft] at hh have hh' := congrArg (rationalBlockLinearSubstitution A) hh simpa only [map_sum, map_mul, rationalBlockLinearSubstitution_C, hright] using hh' /-- The number of differentiations made in a particular block. -/ def derivativeBlockCount {m d : ℕ} (s : List (Fin m × Fin d)) (h : Fin m) : ℕ := ∑ i, wordDerivativeCounts s (h, i) def derivativeBlockCount_nil {m d : ℕ} (h : Fin m) : derivativeBlockCount ([] : List (Fin m × Fin d)) h = 0 := by simp [derivativeBlockCount, wordDerivativeCounts_nil] def sum_block_single {m d : ℕ} (x : Fin m × Fin d) (h : Fin m) : ∑ i : Fin d, (Finsupp.single x 1 : (Fin m × Fin d) →₀ ℕ) (h, i) = if x.1 = h then 1 else 0 := by classical rcases x with ⟨a, j⟩ by_cases hah : a = h · subst a simp [Finsupp.single_apply, Prod.mk.injEq] · simp [Prod.mk.injEq, hah] def derivativeBlockCount_cons {m d : ℕ} (x : Fin m × Fin d) (s : List (Fin m × Fin d)) (h : Fin m) : derivativeBlockCount (x :: s) h = (if x.1 = h then 1 else 0) + derivativeBlockCount s h := by simp only [derivativeBlockCount, wordDerivativeCounts_cons, Finsupp.add_apply, Finset.sum_add_distrib, sum_block_single] /-- Invertible block substitutions can redistribute the derivative counts within a block, but every surviving monomial comes from an original monomial with exactly the prescribed total loss in each block. -/ def rationalBlockLinearSubstitution_wordPDeriv_support_origin {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, (A h).det ≠ 0) (s : List (Fin m × Fin d)) (P : MvPolynomial (Fin m × Fin d) ℚ) (e : (Fin m × Fin d) →₀ ℕ) (he : MvPolynomial.coeff e (rationalBlockLinearSubstitution A (wordPDeriv s P)) ≠ 0) : ∃ K : (Fin m × Fin d) →₀ ℕ, MvPolynomial.coeff (e + K) (rationalBlockLinearSubstitution A P) ≠ 0 ∧ ∀ h, ∑ i, K (h, i) = derivativeBlockCount s h := by classical induction s generalizing e with | nil => exact ⟨0, by simpa [wordPDeriv_nil] using he, by simp [derivativeBlockCount_nil]⟩ | cons x s ih => rw [wordPDeriv_cons, rationalBlockLinearSubstitution_pderiv A hA, MvPolynomial.coeff_sum] at he obtain ⟨j, _, hj⟩ := Finset.exists_ne_zero_of_sum_ne_zero he rw [MvPolynomial.coeff_C_mul, MvPolynomial.coeff_pderiv] at hj have hcoeff : MvPolynomial.coeff (e + Finsupp.single (x.1, j) 1) (rationalBlockLinearSubstitution A (wordPDeriv s P)) ≠ 0 := left_ne_zero_of_mul (right_ne_zero_of_mul hj) obtain ⟨K, hK, hcount⟩ := ih _ hcoeff refine ⟨Finsupp.single (x.1, j) 1 + K, ?_, ?_⟩ · simpa only [add_assoc] using hK · intro h simp only [Finsupp.add_apply, Finset.sum_add_distrib, sum_block_single, hcount, derivativeBlockCount_cons] def rationalBlockLinearSubstitution_dividedWordPDeriv_support_origin {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, (A h).det ≠ 0) (s : List (Fin m × Fin d)) (P : MvPolynomial (Fin m × Fin d) ℚ) (e : (Fin m × Fin d) →₀ ℕ) (he : MvPolynomial.coeff e (rationalBlockLinearSubstitution A (dividedWordPDeriv s P)) ≠ 0) : ∃ K : (Fin m × Fin d) →₀ ℕ, MvPolynomial.coeff (e + K) (rationalBlockLinearSubstitution A P) ≠ 0 ∧ ∀ h, ∑ i, K (h, i) = derivativeBlockCount s h := by change MvPolynomial.coeff e (rationalBlockLinearSubstitution A ((wordDerivativeFactorial s)⁻¹ • wordPDeriv s P)) ≠ 0 at he rw [map_smul, MvPolynomial.coeff_smul, smul_eq_mul] at he exact rationalBlockLinearSubstitution_wordPDeriv_support_origin A hA s P e (right_ne_zero_of_mul he) /-- The total normalized number of derivatives, summed over the blocks. -/ def blockDerivativeWeight {m d : ℕ} (r : Fin m → ℕ) (s : List (Fin m × Fin d)) : ℝ := ∑ h, (derivativeBlockCount s h : ℝ) / r h def derivativeBlockCount_map_pivot {m d : ℕ} (p : Fin m → Fin d) (s : List (Fin m)) (h : Fin m) : derivativeBlockCount (s.map (fun a => (a, p a))) h = s.count h := by induction s with | nil => simp [derivativeBlockCount_nil] | cons a s ih => by_cases ha : a = h · subst a simp [derivativeBlockCount_cons, ih, add_comm] · simp [derivativeBlockCount_cons, ih, ha] def blockDerivativeWeight_map_pivot {m d : ℕ} (r : Fin m → ℕ) (p : Fin m → Fin d) (s : List (Fin m)) : blockDerivativeWeight r (s.map (fun h => (h, p h))) = ∑ h, (s.count h : ℝ) / r h := by simp [blockDerivativeWeight, derivativeBlockCount_map_pivot] def blockDerivativeWeight_column_bound {m d : ℕ} (r : Fin m → ℕ) (s : List (Fin m × Fin d)) (K : (Fin m × Fin d) →₀ ℕ) (hK : ∀ h, ∑ i, K (h, i) = derivativeBlockCount s h) (i : Fin d) : (∑ h, (K (h, i) : ℝ) / r h) ≤ blockDerivativeWeight r s := by apply Finset.sum_le_sum intro h _ apply div_le_div_of_nonneg_right _ (Nat.cast_nonneg _) exact_mod_cast (show K (h, i) ≤ derivativeBlockCount s h from (Finset.single_le_sum (fun j _ => Nat.zero_le (K (h, j))) (Finset.mem_univ i)).trans_eq (hK h)) /-- A divided derivative with total normalized block count at most `m * η` preserves strict column balance with tolerance enlarged from `m * η` to `2 * m * η`. This is proved from the actual inverse chain rule. -/ def rationalBlockLinearSubstitution_dividedWordPDeriv_balanced {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, (A h).det ≠ 0) (r : Fin m → ℕ) (η : ℝ) (s : List (Fin m × Fin d)) (P : MvPolynomial (Fin m × Fin d) ℚ) (hbalanced : ∀ e, MvPolynomial.coeff e (rationalBlockLinearSubstitution A P) ≠ 0 → ∀ i, |(∑ h, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| < (m : ℝ) * η) (hsmall : blockDerivativeWeight r s ≤ (m : ℝ) * η) : ∀ e, MvPolynomial.coeff e (rationalBlockLinearSubstitution A (dividedWordPDeriv s P)) ≠ 0 → ∀ i, |(∑ h, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| < 2 * (m : ℝ) * η := by intro e he i obtain ⟨K, hK, hcount⟩ := rationalBlockLinearSubstitution_dividedWordPDeriv_support_origin A hA s P e he have hbound := hbalanced (e + K) hK i have hcolumn := (blockDerivativeWeight_column_bound r s K hcount i).trans hsmall have hnonneg : 0 ≤ ∑ h, (K (h, i) : ℝ) / r h := Finset.sum_nonneg (fun h _ => div_nonneg (Nat.cast_nonneg _) (Nat.cast_nonneg _)) have heq : (∑ h, (e (h, i) : ℝ) / r h) - (m : ℝ) / d = ((∑ h, ((e + K) (h, i) : ℝ) / r h) - (m : ℝ) / d) - (∑ h, (K (h, i) : ℝ) / r h) := by simp only [Finsupp.add_apply, Nat.cast_add, add_div, Finset.sum_add_distrib] ring rw [heq] calc _ ≤ |(∑ h, ((e + K) (h, i) : ℝ) / r h) - (m : ℝ) / d| + |∑ h, (K (h, i) : ℝ) / r h| := abs_sub _ _ _ < 2 * (m : ℝ) * η := by rw [abs_of_nonneg hnonneg]; linarith /-- Block degrees drop by exactly the number of derivatives in that block, even after an invertible change of coordinates within every block. -/ def rationalBlockLinearSubstitution_dividedWordPDeriv_block_degrees {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, (A h).det ≠ 0) (r : Fin m → ℕ) (s : List (Fin m × Fin d)) (P : MvPolynomial (Fin m × Fin d) ℚ) (hhom : ∀ e, MvPolynomial.coeff e (rationalBlockLinearSubstitution A P) ≠ 0 → ∀ h, ∑ i, e (h, i) = r h) (e : (Fin m × Fin d) →₀ ℕ) (he : MvPolynomial.coeff e (rationalBlockLinearSubstitution A (dividedWordPDeriv s P)) ≠ 0) : ∀ h, (∑ i, e (h, i)) + derivativeBlockCount s h = r h := by obtain ⟨K, hK, hcount⟩ := rationalBlockLinearSubstitution_dividedWordPDeriv_support_origin A hA s P e he intro h simpa only [Finsupp.add_apply, Finset.sum_add_distrib, hcount] using hhom (e + K) hK h end end Bounty end SubmissionComponent_BalancedDerivativeSupport /- Component ProductHyperplaneNonvanishing; SHA256 54ef0fc14e019411677fd9f88ac9eaa976933a20be9c0d78739264695ca4748e -/ section SubmissionComponent_ProductHyperplaneNonvanishing /- Small coordinate derivatives nonzero at actual points on rational hyperplanes. -/ namespace Bounty noncomputable section open scoped BigOperators def eval_complementRestriction {B C : Type*} (g : B → MvPolynomial C ℚ) (P : MvPolynomial (B ⊕ C) ℚ) (z : C → ℚ) : MvPolynomial.eval z (complementRestriction g P) = MvPolynomial.eval (Sum.elim (fun b => MvPolynomial.eval z (g b)) z) P := by rw [complementRestriction_eq_aeval] induction P using MvPolynomial.induction_on with | C a => simp | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => cases i <;> simp only [map_mul, MvPolynomial.aeval_X, Sum.elim_inl, Sum.elim_inr, MvPolynomial.eval_X, hP] def productHyperplanePoint {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (z : HyperplaneComplement p → ℚ) : Fin m × Fin (d + 1) → ℚ := (Sum.elim (fun h => MvPolynomial.eval z (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p) h)) z) ∘ hyperplanePivotEquiv p def eval_complementRestriction_pivotRename {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (z : HyperplaneComplement p → ℚ) (P : MvPolynomial (Fin m × Fin (d + 1)) ℚ) : MvPolynomial.eval z (complementRestriction (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p)) (MvPolynomial.rename (hyperplanePivotEquiv p) P)) = MvPolynomial.eval (productHyperplanePoint b p z) P := by rw [eval_complementRestriction, MvPolynomial.eval_rename] rfl def productHyperplanePoint_mem {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (hp : ∀ h, b h (p h) ≠ 0) (z : HyperplaneComplement p → ℚ) (h : Fin m) : ∑ k, b h k * productHyperplanePoint b p z (h, k) = 0 := by have hc := congrArg (MvPolynomial.eval z) (complementRestriction_productHyperplaneLinearForm b p h (hp h)) rw [eval_complementRestriction_pivotRename] at hc simpa only [productHyperplaneLinearForm, map_sum, map_mul, MvPolynomial.eval_C, MvPolynomial.eval_X, map_zero] using hc def exists_nonzero_eval_on_product_hyperplanes {m d : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (hp : ∀ h, b h (p h) ≠ 0) (P : MvPolynomial (Fin m × Fin (d + 1)) ℚ) (hP : complementRestriction (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p)) (MvPolynomial.rename (hyperplanePivotEquiv p) P) ≠ 0) : ∃ x : Fin m × Fin (d + 1) → ℚ, (∀ h, ∑ k, b h k * x (h, k) = 0) ∧ MvPolynomial.eval x P ≠ 0 := by classical have hex : ∃ z : HyperplaneComplement p → ℚ, MvPolynomial.eval z (complementRestriction (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p)) (MvPolynomial.rename (hyperplanePivotEquiv p) P)) ≠ 0 := by by_contra! hn apply hP apply MvPolynomial.funext intro z simpa only [map_zero] using hn z obtain ⟨z, hz⟩ := hex refine ⟨productHyperplanePoint b p z, productHyperplanePoint_mem b p hp z, ?_⟩ rwa [eval_complementRestriction_pivotRename] at hz def exists_product_hyperplane_derivative {n d : ℕ} (hd : 1 ≤ d) (b : Fin (n + 1) → Fin (d + 1) → ℚ) (p : Fin (n + 1) → Fin (d + 1)) (hp : ∀ h, b h (p h) ≠ 0) (r : Fin (n + 1) → ℕ) (hr : ∀ h, 0 < r h) (P : MvPolynomial (Fin (n + 1) × Fin (d + 1)) ℤ) (hP : P ≠ 0) (hhom : ProductBlockHomogeneous r P) (η : ℝ) (hη : 0 < η) (hηhalf : η ≤ 1 / 2) (hstep : ∀ i : Fin n, (r i.succ : ℝ) ≤ η ^ (2 ^ n) * r i.castSucc) (hheight : ∀ h, Real.log (polynomialCoeffL1 P) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r h : ℝ) * (Height.logHeight (b h) / d))) : ∃ s : List (Fin (n + 1) × Fin (d + 1)), blockDerivativeWeight r s ≤ 2 * (n + 1 : ℕ) * η ∧ complementRestriction (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p)) (MvPolynomial.rename (hyperplanePivotEquiv p) (dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P))) ≠ 0 ∧ ∃ x : Fin (n + 1) × Fin (d + 1) → ℚ, (∀ h, ∑ k, b h k * x (h, k) = 0) ∧ MvPolynomial.eval x (dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P)) ≠ 0 := by classical let Q := MvPolynomial.map (Int.castRingHom ℚ) P let g := blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p) have hQ : MvPolynomial.rename (hyperplanePivotEquiv p) Q ≠ 0 := by exact fun hz => integerMap_ne_zero hP ((MvPolynomial.rename_eq_zero_iff_of_injective Q (hyperplanePivotEquiv p).injective).mp hz) obtain ⟨t, ht, hw⟩ := exists_normalized_pivot_derivative_restriction r hr g (MvPolynomial.rename (hyperplanePivotEquiv p) Q) hQ let s := t.map (fun h => (h, p h)) have hmap : s.map (hyperplanePivotEquiv p) = t.map Sum.inl := by simp only [s, List.map_map] congr 1 funext h exact hyperplanePivotEquiv_pivot p h have hderiv := dividedWordPDeriv_rename_equiv (hyperplanePivotEquiv p) s Q rw [hmap] at hderiv rw [hderiv] at ht refine ⟨s, ?_, ht, ?_⟩ · rw [show blockDerivativeWeight r s = ∑ h, (t.count h : ℝ) / r h from blockDerivativeWeight_map_pivot r p t, hw] exact integer_product_hyperplane_roth_bound hd b p hp r hr P hP hhom η hη hηhalf hstep hheight · exact exists_nonzero_eval_on_product_hyperplanes b p hp _ ht end end Bounty end SubmissionComponent_ProductHyperplaneNonvanishing /- Component SpanningPolynomialNonvanishing; SHA256 48a2ff4315f7697eb2482ff61cc017765c1fc4c6fea9ce5960703d73a091894f -/ section SubmissionComponent_SpanningPolynomialNonvanishing /- Polynomial nonvanishing is preserved by parametrizing an actual spanning family. -/ namespace Bounty noncomputable section open scoped BigOperators def eval_rational_aeval {I J : Type*} (f : I → MvPolynomial J ℚ) (P : MvPolynomial I ℚ) (z : J → ℚ) : MvPolynomial.eval z (MvPolynomial.aeval f P) = MvPolynomial.eval (fun i => MvPolynomial.eval z (f i)) P := by simpa only [MvPolynomial.aeval_eq_eval] using MvPolynomial.comp_aeval_apply (f := f) (MvPolynomial.aeval z) P def blockSpanningSubstitution {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) : MvPolynomial (Fin m × Fin d) ℚ →ₐ[ℚ] MvPolynomial (Fin m × Fin k) ℚ := MvPolynomial.aeval (fun x => ∑ j, MvPolynomial.C (y x.1 j x.2) * MvPolynomial.X (x.1, j)) def block_spanning_polynomial_ne_zero {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) (x : Fin m × Fin d → ℚ) (hx : ∀ h, (fun i => x (h, i)) ∈ Submodule.span ℚ (Set.range (y h))) (P : MvPolynomial (Fin m × Fin d) ℚ) (hP : MvPolynomial.eval x P ≠ 0) : blockSpanningSubstitution y P ≠ 0 := by classical choose c hc using fun h => (Submodule.mem_span_range_iff_exists_fun ℚ).mp (hx h) let z (a : Fin m × Fin k) : ℚ := c a.1 a.2 have he (a : Fin m × Fin d) : MvPolynomial.eval z (∑ j, MvPolynomial.C (y a.1 j a.2) * MvPolynomial.X (a.1, j)) = x a := by have hh := congrFun (hc a.1) a.2 simpa only [map_sum, map_mul, MvPolynomial.eval_C, MvPolynomial.eval_X, Finset.sum_apply, Pi.smul_apply, smul_eq_mul, z, mul_comm] using hh intro hz have hh := congrArg (MvPolynomial.eval z) hz change MvPolynomial.eval z (MvPolynomial.aeval _ P) = _ at hh rw [eval_rational_aeval] at hh simp only [he, map_zero] at hh exact hP hh def rationalHyperplaneKernel {d : ℕ} (b : Fin d → ℚ) : Submodule ℚ (Fin d → ℚ) := LinearMap.ker (∑ i, b i • (LinearMap.proj i : (Fin d → ℚ) →ₗ[ℚ] ℚ)) def mem_rationalHyperplaneKernel {d : ℕ} (b x : Fin d → ℚ) : x ∈ rationalHyperplaneKernel b ↔ ∑ i, b i * x i = 0 := by simp [rationalHyperplaneKernel, LinearMap.mem_ker] def hyperplane_spanning_substitution_ne_zero {m d k : ℕ} (b : Fin m → Fin (d + 1) → ℚ) (p : Fin m → Fin (d + 1)) (hp : ∀ h, b h (p h) ≠ 0) (y : Fin m → Fin k → Fin (d + 1) → ℚ) (hy : ∀ h, Submodule.span ℚ (Set.range (y h)) = rationalHyperplaneKernel (b h)) (P : MvPolynomial (Fin m × Fin (d + 1)) ℚ) (hP : complementRestriction (blockComplementLinear (fun x : HyperplaneComplement p => x.val.1) (pivotComplementCoefficient b p)) (MvPolynomial.rename (hyperplanePivotEquiv p) P) ≠ 0) : blockSpanningSubstitution y P ≠ 0 := by obtain ⟨x, hx, hne⟩ := exists_nonzero_eval_on_product_hyperplanes b p hp P hP apply block_spanning_polynomial_ne_zero y x _ P hne intro h rw [hy h, mem_rationalHyperplaneKernel] exact hx h def product_hyperplane_derivative_spanning {n d k : ℕ} (hd : 1 ≤ d) (b : Fin (n + 1) → Fin (d + 1) → ℚ) (p : Fin (n + 1) → Fin (d + 1)) (hp : ∀ h, b h (p h) ≠ 0) (r : Fin (n + 1) → ℕ) (hr : ∀ h, 0 < r h) (y : Fin (n + 1) → Fin k → Fin (d + 1) → ℚ) (hy : ∀ h, Submodule.span ℚ (Set.range (y h)) = rationalHyperplaneKernel (b h)) (P : MvPolynomial (Fin (n + 1) × Fin (d + 1)) ℤ) (hP : P ≠ 0) (hhom : ProductBlockHomogeneous r P) (η : ℝ) (hη : 0 < η) (hηhalf : η ≤ 1 / 2) (hstep : ∀ i : Fin n, (r i.succ : ℝ) ≤ η ^ (2 ^ n) * r i.castSucc) (hheight : ∀ h, Real.log (polynomialCoeffL1 P) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r h : ℝ) * (Height.logHeight (b h) / d))) : ∃ s : List (Fin (n + 1) × Fin (d + 1)), blockDerivativeWeight r s ≤ 2 * (n + 1 : ℕ) * η ∧ blockSpanningSubstitution y (dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P)) ≠ 0 := by obtain ⟨s, hs, hrestrict, _⟩ := exists_product_hyperplane_derivative hd b p hp r hr P hP hhom η hη hηhalf hstep hheight exact ⟨s, hs, hyperplane_spanning_substitution_ne_zero b p hp y hy _ hrestrict⟩ end end Bounty end SubmissionComponent_SpanningPolynomialNonvanishing /- Component HyperplaneLocalArithmetic; SHA256 d73eaae49ae46441b317dadfec0c748cc1320d25ced8723ddd0cf03a280554f5 -/ section SubmissionComponent_HyperplaneLocalArithmetic /- Integer pairings at three actual places and the rational kernels they annihilate. These bounds support the finite support-pattern exception step. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def rationalHyperplaneKernel_ne_top {n : ℕ} (b : Fin n → ℚ) (hb : b ≠ 0) : rationalHyperplaneKernel b ≠ ⊤ := by obtain ⟨i, hi⟩ : ∃ i, b i ≠ 0 := by simpa [funext_iff] using hb intro h have hx : Pi.single i 1 ∈ rationalHyperplaneKernel b := by rw [h]; trivial apply hi simpa [mem_rationalHyperplaneKernel, Pi.single_apply] using hx def independent_span_eq_hyperplane {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) ℚ) (hX : LinearIndependent ℚ X.col) (b : Fin (n + 1) → ℚ) (hb : b ≠ 0) (horth : ∀ j, dotProduct b (X.col j) = 0) : Submodule.span ℚ (Set.range X.col) = rationalHyperplaneKernel b := by apply Submodule.eq_of_le_of_finrank_le · apply Submodule.span_le.mpr rintro _ ⟨j, rfl⟩ exact (mem_rationalHyperplaneKernel _ _).mpr (horth j) · have hk := Submodule.finrank_lt (rationalHyperplaneKernel_ne_top b hb) rw [finrank_span_eq_card hX] simpa using Nat.le_of_lt_succ (by simpa using hk) def cofactorTransform_left_identity {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) : A.transpose * cofactorTransform A = A.det • 1 := by rw [cofactorTransform, ← Matrix.transpose_mul, Matrix.adjugate_mul, Matrix.transpose_smul, Matrix.transpose_one] def cofactorTransform_mulVec_ne_zero {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (hA : IsUnit A.det) (b : Fin (n + 1) → ℚ) (hb : b ≠ 0) : (cofactorTransform A).mulVec b ≠ 0 := by intro h have hh := congrArg A.transpose.mulVec h rw [Matrix.mulVec_mulVec, cofactorTransform_left_identity, Matrix.smul_mulVec, Matrix.one_mulVec, Matrix.mulVec_zero] at hh exact hb ((smul_eq_zero.mp hh).resolve_left hA.ne_zero) def cofactorTransform_pairing {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (b x : Fin (n + 1) → ℚ) : dotProduct ((cofactorTransform A).mulVec b) (A.mulVec x) = A.det * dotProduct b x := by rw [← Matrix.dotProduct_transpose_mulVec, Matrix.mulVec_mulVec, cofactorTransform_left_identity, Matrix.smul_mulVec, Matrix.one_mulVec, dotProduct_smul, dotProduct_comm] rfl def cofactorEvaluationConstant {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (z : Fin (n + 1) → ℤ) : ℝ := (∑ i, ‖(cofactorTransform A).mulVec (fun j => (z j : ℚ)) i‖) / ‖A.det‖ def integer_dot_archimedean_bound {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (hA : IsUnit A.det) (z x : Fin (n + 1) → ℤ) (c : Fin (n + 1) → ℝ) (t u : ℝ) (ht : 0 ≤ t) (hx : ∀ i, ‖A.mulVec (fun j => (x j : ℚ)) i‖ ≤ Real.exp (c i * t)) (hc : ∀ i, (cofactorTransform A).mulVec (fun j => (z j : ℚ)) i ≠ 0 → c i ≤ u) : |((∑ i, z i * x i : ℤ) : ℝ)| ≤ cofactorEvaluationConstant A z * Real.exp (u * t) := by let b : Fin (n + 1) → ℚ := fun i => z i let y : Fin (n + 1) → ℚ := fun i => x i have hp := congrArg norm (cofactorTransform_pairing A b y) have hsum : ‖dotProduct ((cofactorTransform A).mulVec b) (A.mulVec y)‖ ≤ (∑ i, ‖(cofactorTransform A).mulVec b i‖) * Real.exp (u * t) := by calc _ ≤ ∑ i, ‖(cofactorTransform A).mulVec b i * A.mulVec y i‖ := norm_sum_le _ _ _ ≤ ∑ i, ‖(cofactorTransform A).mulVec b i‖ * Real.exp (u * t) := by apply Finset.sum_le_sum intro i _ rw [norm_mul] by_cases hi : (cofactorTransform A).mulVec b i = 0 · simp [hi] · exact mul_le_mul_of_nonneg_left ((hx i).trans (Real.exp_le_exp.mpr (mul_le_mul_of_nonneg_right (hc i hi) ht))) (norm_nonneg _) _ = _ := by rw [Finset.sum_mul] have hdet : 0 < ‖A.det‖ := norm_pos_iff.mpr hA.ne_zero have hcast : ‖dotProduct b y‖ = |((∑ i, z i * x i : ℤ) : ℝ)| := by have hh : dotProduct b y = ((∑ i, z i * x i : ℤ) : ℚ) := by simp [b, y, dotProduct] rw [hh, Int.norm_cast_rat, Int.norm_eq_abs] rw [norm_mul, hcast] at hp change _ ≤ ((∑ i, ‖(cofactorTransform A).mulVec b i‖) / ‖A.det‖) * Real.exp (u * t) rw [div_mul_eq_mul_div] apply (le_div_iff₀ hdet).mpr nlinarith [hsum] def integer_dot_padic_bound {n : ℕ} (p : ℕ) [Fact p.Prime] (z x : Fin n → ℤ) (c : Fin n → ℝ) (t u : ℝ) (ht : 0 ≤ t) (hx : ∀ i, (padicNorm p (x i : ℚ) : ℝ) ≤ Real.exp (c i * t)) (hc : ∀ i, z i ≠ 0 → c i ≤ u) : (padicNorm p ((∑ i, z i * x i : ℤ) : ℚ) : ℝ) ≤ Real.exp (u * t) := by simp only [Int.cast_sum, Int.cast_mul] apply padicNorm_sum_cast_le _ _ _ _ (Real.exp_nonneg _) intro i _ by_cases hi : z i = 0 · simp [hi, (Real.exp_pos _).le] · rw [padicNorm.mul, Rat.cast_mul] have hz : (padicNorm p (z i : ℚ) : ℝ) ≤ 1 := by exact_mod_cast padicNorm.of_int (p := p) (z i) have hn : (0 : ℝ) ≤ padicNorm p (x i : ℚ) := by exact_mod_cast padicNorm.nonneg (x i : ℚ) exact (mul_le_mul_of_nonneg_right hz hn).trans (by simpa using (hx i).trans (Real.exp_le_exp.mpr (mul_le_mul_of_nonneg_right (hc i hi) ht))) def integer_dot_zero_of_local_product {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (hA : IsUnit A.det) (z x : Fin (n + 1) → ℤ) (c : Fin 3 → Fin (n + 1) → ℝ) (t : ℝ) (u : Fin 3 → ℝ) (ht : 0 ≤ t) (hInf : ∀ i, ‖A.mulVec (fun j => (x j : ℚ)) i‖ ≤ Real.exp (c 0 i * t)) (h₂ : ∀ i, (padicNorm 2 (x i : ℚ) : ℝ) ≤ Real.exp (c 1 i * t)) (h₃ : ∀ i, (padicNorm 3 (x i : ℚ) : ℝ) ≤ Real.exp (c 2 i * t)) (hcInf : ∀ i, (cofactorTransform A).mulVec (fun j => (z j : ℚ)) i ≠ 0 → c 0 i ≤ u 0) (hc₂ : ∀ i, z i ≠ 0 → c 1 i ≤ u 1) (hc₃ : ∀ i, z i ≠ 0 → c 2 i ≤ u 2) (hsmall : cofactorEvaluationConstant A z * Real.exp ((∑ v, u v) * t) < 1) : ∑ i, z i * x i = 0 := by by_contra hn have hlow := integer_three_place_product_lower _ hn have h₀ := integer_dot_archimedean_bound A hA z x (c 0) t (u 0) ht hInf hcInf have h₂' := integer_dot_padic_bound 2 z x (c 1) t (u 1) ht h₂ hc₂ have h₃' := integer_dot_padic_bound 3 z x (c 2) t (u 2) ht h₃ hc₃ have hp₂ : (0 : ℝ) ≤ padicNorm 2 ((∑ i, z i * x i : ℤ) : ℚ) := by exact_mod_cast padicNorm.nonneg ((∑ i, z i * x i : ℤ) : ℚ) have hp₃ : (0 : ℝ) ≤ padicNorm 3 ((∑ i, z i * x i : ℤ) : ℚ) := by exact_mod_cast padicNorm.nonneg ((∑ i, z i * x i : ℤ) : ℚ) have hC : 0 ≤ cofactorEvaluationConstant A z := by unfold cofactorEvaluationConstant; positivity have hupper := mul_le_mul (mul_le_mul h₀ h₂' hp₂ (by positivity)) h₃' hp₃ (by positivity) have he : cofactorEvaluationConstant A z * Real.exp (u 0 * t) * Real.exp (u 1 * t) * Real.exp (u 2 * t) = cofactorEvaluationConstant A z * Real.exp ((∑ v, u v) * t) := by rw [mul_assoc, mul_assoc, ← Real.exp_add, ← Real.exp_add] congr 2 simp [Fin.sum_univ_succ] ring rw [he] at hupper exact (not_lt_of_ge (hlow.trans hupper)) hsmall end end Bounty end SubmissionComponent_HyperplaneLocalArithmetic /- Component HyperplaneHeightDichotomy; SHA256 179dad553cbd5fbbb54819a9bdc21f98920523532c4b5543f6e4875387fddac0 -/ section SubmissionComponent_HyperplaneHeightDichotomy /- A finite support-pattern choice of exceptional rational hyperplanes. Outside this fixed finite collection the primitive normal has a logarithmic height bounded below linearly in the profile parameter. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix abbrev HyperplaneSupportPattern (n : ℕ) := Finset (Fin (n + 1)) × Finset (Fin (n + 1)) def RealizesHyperplanePattern {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (s : HyperplaneSupportPattern n) (a : Fin (n + 1) → ℤ) : Prop := a ≠ 0 ∧ (∀ i, (cofactorTransform A).mulVec (fun j => (a j : ℚ)) i ≠ 0 → i ∈ s.1) ∧ (∀ i, a i ≠ 0 → i ∈ s.2) def selectedPatternNormal {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (s : HyperplaneSupportPattern n) : Fin (n + 1) → ℤ := by classical exact if h : ∃ a, RealizesHyperplanePattern A s a then h.choose else Pi.single 0 1 def selectedPatternNormal_realizes {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (s : HyperplaneSupportPattern n) (h : ∃ a, RealizesHyperplanePattern A s a) : RealizesHyperplanePattern A s (selectedPatternNormal A s) := by classical rw [selectedPatternNormal, dif_pos h] exact h.choose_spec def exceptionalPatternHyperplanes {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) : Finset (Submodule ℚ (Fin (n + 1) → ℚ)) := by classical exact Finset.univ.image (fun s : HyperplaneSupportPattern n => rationalHyperplaneKernel (fun i => (selectedPatternNormal A s i : ℚ))) def patternEvaluationBound {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) : ℝ := 1 + ∑ s : HyperplaneSupportPattern n, cofactorEvaluationConstant A (selectedPatternNormal A s) def patternEvaluationBound_ge_one {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) : 1 ≤ patternEvaluationBound A := by have hn : 0 ≤ ∑ s : HyperplaneSupportPattern n, cofactorEvaluationConstant A (selectedPatternNormal A s) := by apply Finset.sum_nonneg intro s _ unfold cofactorEvaluationConstant positivity unfold patternEvaluationBound linarith def cofactorEvaluationConstant_le_patternBound {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (s : HyperplaneSupportPattern n) : cofactorEvaluationConstant A (selectedPatternNormal A s) ≤ patternEvaluationBound A := by have hn : ∀ t : HyperplaneSupportPattern n, 0 ≤ cofactorEvaluationConstant A (selectedPatternNormal A t) := by intro t unfold cofactorEvaluationConstant positivity have hh := Finset.single_le_sum (fun t _ => hn t) (Finset.mem_univ s) change _ ≤ 1 + ∑ t : HyperplaneSupportPattern n, cofactorEvaluationConstant A (selectedPatternNormal A t) linarith def exists_pattern_smallness_threshold {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (ρ : ℝ) (hρ : 0 < ρ) : ∃ T : ℝ, 0 ≤ T ∧ ∀ t, T ≤ t → patternEvaluationBound A * Real.exp (-ρ * t / 2) < 1 := by let C := patternEvaluationBound A have hC1 : 1 ≤ C := patternEvaluationBound_ge_one A have hC : 0 < C := lt_of_lt_of_le (by norm_num) hC1 have hlog : 0 ≤ Real.log C := Real.log_nonneg hC1 refine ⟨2 * (Real.log C + 1) / ρ, by positivity, ?_⟩ intro t ht have hh := (div_le_iff₀ hρ).mp ht have hn : Real.log C + (-ρ * t / 2) < 0 := by nlinarith calc _ = Real.exp (Real.log C + (-ρ * t / 2)) := by rw [Real.exp_add, Real.exp_log hC] _ < 1 := by simpa using Real.exp_lt_exp.mpr hn def primitive_cofactor_span_eq {n : ℕ} (X : Matrix (Fin (n + 1)) (Fin n) ℤ) (hX : LinearIndependent ℚ (X.map (Int.castRingHom ℚ)).col) (g : ℤ) (hg : g ≠ 0) (a : Fin (n + 1) → ℤ) (ha : a ≠ 0) (hfactor : ∀ i, cofactorNormal X i = g * a i) : Submodule.span ℚ (Set.range (X.map (Int.castRingHom ℚ)).col) = rationalHyperplaneKernel (fun i => (a i : ℚ)) := by have haq : (fun i => (a i : ℚ)) ≠ 0 := by intro h apply ha ext i have hi : (a i : ℚ) = 0 := congrFun h i exact_mod_cast hi apply independent_span_eq_hyperplane _ hX _ haq intro j have hh := cofactorNormal_dot_column (X.map (Int.castRingHom ℚ)) j have hw : cofactorNormal (X.map (Int.castRingHom ℚ)) = (g : ℚ) • (fun i => (a i : ℚ)) := by ext i rw [cofactorNormal_map] change ((cofactorNormal X i : ℤ) : ℚ) = (g : ℚ) * (a i : ℚ) rw [hfactor, Int.cast_mul] rw [hw, smul_dotProduct] at hh exact (mul_eq_zero.mp hh).resolve_left (by exact_mod_cast hg) def moving_hyperplane_height_dichotomy {n : ℕ} (A : Matrix (Fin (n + 1)) (Fin (n + 1)) ℚ) (hA : IsUnit A.det) (c : Fin 3 → Fin (n + 1) → ℝ) (ρ : ℝ) (hρ : 0 < ρ) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) : ∃ T C : ℝ, 0 ≤ T ∧ 0 ≤ C ∧ ∀ t, T ≤ t → ∀ X : Matrix (Fin (n + 1)) (Fin n) ℤ, LinearIndependent ℚ (X.map (Int.castRingHom ℚ)).col → (∀ i j, ‖(A * X.map (Int.castRingHom ℚ)) i j‖ ≤ Real.exp (c 0 i * t)) → (∀ i j, (padicNorm 2 (X i j : ℚ) : ℝ) ≤ Real.exp (c 1 i * t)) → (∀ i j, (padicNorm 3 (X i j : ℚ) : ℝ) ≤ Real.exp (c 2 i * t)) → ∃ a : Fin (n + 1) → ℤ, a ≠ 0 ∧ Finset.univ.gcd a = 1 ∧ Submodule.span ℚ (Set.range (X.map (Int.castRingHom ℚ)).col) = rationalHyperplaneKernel (fun i => (a i : ℚ)) ∧ (rationalHyperplaneKernel (fun i => (a i : ℚ)) ∈ exceptionalPatternHyperplanes A ∨ ρ * t / 4 - C ≤ Height.logHeight (fun i => (a i : ℚ))) := by classical obtain ⟨T, hT, hsmall⟩ := exists_pattern_smallness_threshold A ρ hρ obtain ⟨D, hD, hden⟩ := exists_cofactor_denominator A refine ⟨T, |Real.log ((D : ℝ) * (n.factorial : ℝ))| / 2, hT, by positivity, ?_⟩ intro t ht X hX hInf h₂ h₃ have ht0 : 0 ≤ t := hT.trans ht obtain ⟨g, a, hg, ha, hprim, hfactor⟩ := integer_cofactor_primitive_factor X hX have hspan := primitive_cofactor_span_eq X hX g hg.ne' a ha hfactor have haq : (fun i => (a i : ℚ)) ≠ 0 := by intro h apply ha ext i have hi : (a i : ℚ) = 0 := congrFun h i exact_mod_cast hi let S₀ : Finset (Fin (n + 1)) := Finset.univ.filter (fun i => (cofactorTransform A).mulVec (fun j => (a j : ℚ)) i ≠ 0) let S₁ : Finset (Fin (n + 1)) := Finset.univ.filter (fun i => a i ≠ 0) have hS₀ : S₀.Nonempty := by have hn := cofactorTransform_mulVec_ne_zero A hA _ haq obtain ⟨i, hi⟩ : ∃ i, (cofactorTransform A).mulVec (fun j => (a j : ℚ)) i ≠ 0 := by simpa [funext_iff] using hn exact ⟨i, Finset.mem_filter.mpr ⟨Finset.mem_univ i, hi⟩⟩ have hS₁ : S₁.Nonempty := by obtain ⟨i, hi⟩ : ∃ i, a i ≠ 0 := by simpa [funext_iff] using ha exact ⟨i, Finset.mem_filter.mpr ⟨Finset.mem_univ i, hi⟩⟩ obtain ⟨i₀, hi₀, hmax₀⟩ := Finset.exists_max_image S₀ (c 0) hS₀ obtain ⟨i₂, hi₂, hmax₂⟩ := Finset.exists_max_image S₁ (c 1) hS₁ obtain ⟨i₃, hi₃, hmax₃⟩ := Finset.exists_max_image S₁ (c 2) hS₁ let idx : Fin 3 → Fin (n + 1) := ![i₀, i₂, i₃] refine ⟨a, ha, hprim, hspan, ?_⟩ by_cases hhigh : -ρ / 2 ≤ ∑ v, c v (idx v) · right obtain ⟨z, hz⟩ := hden a i₀ have hl := primitive_cofactor_height_lower A X g hg.ne' a hprim hfactor c t ρ ht0 hInf h₂ h₃ hc idx hhigh (Finset.mem_filter.mp hi₂).2 (Finset.mem_filter.mp hi₃).2 D z hD (Finset.mem_filter.mp hi₀).2 hz have hab := le_abs_self (Real.log ((D : ℝ) * (n.factorial : ℝ))) exact le_trans (by linarith) hl · left let s : HyperplaneSupportPattern n := (S₀, S₁) have hreal : RealizesHyperplanePattern A s a := by refine ⟨ha, ?_, ?_⟩ · intro i hi exact Finset.mem_filter.mpr ⟨Finset.mem_univ i, hi⟩ · intro i hi exact Finset.mem_filter.mpr ⟨Finset.mem_univ i, hi⟩ let z := selectedPatternNormal A s have hzreal := selectedPatternNormal_realizes A s ⟨a, hreal⟩ let u : Fin 3 → ℝ := fun v => c v (idx v) have hu : (∑ v, u v) < -ρ / 2 := lt_of_not_ge hhigh have hC : 0 ≤ patternEvaluationBound A := (by norm_num : (0 : ℝ) ≤ 1).trans (patternEvaluationBound_ge_one A) have hzsmall : cofactorEvaluationConstant A z * Real.exp ((∑ v, u v) * t) < 1 := by calc _ ≤ patternEvaluationBound A * Real.exp ((∑ v, u v) * t) := mul_le_mul_of_nonneg_right (cofactorEvaluationConstant_le_patternBound A s) (Real.exp_nonneg _) _ ≤ patternEvaluationBound A * Real.exp (-ρ * t / 2) := mul_le_mul_of_nonneg_left (Real.exp_le_exp.mpr (by nlinarith [mul_le_mul_of_nonneg_right hu.le ht0])) hC _ < 1 := hsmall t ht have horth : ∀ j, dotProduct (fun i => (z i : ℚ)) ((X.map (Int.castRingHom ℚ)).col j) = 0 := by intro j have hh := integer_dot_zero_of_local_product A hA z (fun i => X i j) c t u ht0 (fun i => hInf i j) (fun i => h₂ i j) (fun i => h₃ i j) (fun i hi => hmax₀ i (hzreal.2.1 i hi)) (fun i hi => hmax₂ i (hzreal.2.2 i hi)) (fun i hi => hmax₃ i (hzreal.2.2 i hi)) hzsmall change ∑ i, (z i : ℚ) * (X i j : ℚ) = 0 exact_mod_cast hh have hzq : (fun i => (z i : ℚ)) ≠ 0 := by intro h apply hzreal.1 ext i have hi : (z i : ℚ) = 0 := congrFun h i exact_mod_cast hi have hspz := independent_span_eq_hyperplane _ hX _ hzq horth rw [← hspan, hspz] exact Finset.mem_image.mpr ⟨s, Finset.mem_univ s, rfl⟩ end end Bounty end SubmissionComponent_HyperplaneHeightDichotomy /- Component DerivativeSubstitutionHeight; SHA256 11bad84064d35312f7a2cf9810b404f7de1be5676e5e70943b3776c5c632b557 -/ section SubmissionComponent_DerivativeSubstitutionHeight /- A uniform coefficient-height bound for transformed integer divided derivatives. -/ namespace Bounty noncomputable section open scoped BigOperators def rational_polynomialCoeffL1_aeval_monomial {I J : Type*} [Fintype I] (f : I → MvPolynomial J ℚ) (e : I →₀ ℕ) (a : ℚ) (C : ℝ) (hC : 0 ≤ C) (hf : ∀ i, polynomialCoeffL1 (f i) ≤ C) : polynomialCoeffL1 (MvPolynomial.aeval f (MvPolynomial.monomial e a)) ≤ ‖a‖ * C ^ (∑ i, e i) := by classical rw [MvPolynomial.aeval_monomial] change polynomialCoeffL1 (MvPolynomial.C a * _) ≤ _ rw [Finsupp.prod_fintype _ _ (fun _ => pow_zero _)] apply (polynomialCoeffL1_mul _ _).trans rw [polynomialCoeffL1_C] apply mul_le_mul_of_nonneg_left _ (norm_nonneg _) calc _ ≤ ∏ i, polynomialCoeffL1 (f i ^ e i) := polynomialCoeffL1_prod _ _ _ ≤ ∏ i, polynomialCoeffL1 (f i) ^ e i := Finset.prod_le_prod (fun i _ => polynomialCoeffL1_nonneg _) (fun i _ => polynomialCoeffL1_pow _ _) _ ≤ ∏ i, C ^ e i := Finset.prod_le_prod (fun i _ => pow_nonneg (polynomialCoeffL1_nonneg _) _) (fun i _ => pow_le_pow_left₀ (polynomialCoeffL1_nonneg _) (hf i) _) _ = _ := Finset.prod_pow_eq_pow_sum _ _ _ def rational_polynomialCoeffL1_aeval_degree_bound {I J : Type*} [Fintype I] (f : I → MvPolynomial J ℚ) (P : MvPolynomial I ℚ) (D : ℕ) (C : ℝ) (hC : 1 ≤ C) (hf : ∀ i, polynomialCoeffL1 (f i) ≤ C) (hD : ∀ e ∈ P.support, ∑ i, e i ≤ D) : polynomialCoeffL1 (MvPolynomial.aeval f P) ≤ C ^ D * polynomialCoeffL1 P := by classical nth_rw 1 [MvPolynomial.as_sum P] rw [map_sum] calc _ ≤ ∑ e ∈ P.support, polynomialCoeffL1 (MvPolynomial.aeval f (MvPolynomial.monomial e (MvPolynomial.coeff e P))) := polynomialCoeffL1_sum _ _ _ ≤ ∑ e ∈ P.support, ‖MvPolynomial.coeff e P‖ * C ^ D := by apply Finset.sum_le_sum intro e he exact (rational_polynomialCoeffL1_aeval_monomial f e _ C (zero_le_one.trans hC) hf).trans (mul_le_mul_of_nonneg_left (pow_le_pow_right₀ hC (hD e he)) (norm_nonneg _)) _ = _ := by rw [← Finset.sum_mul]; exact mul_comm _ _ def productBlockHomogeneous_integerMap {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℤ) (hP : ProductBlockHomogeneous r P) : ProductBlockHomogeneous r (MvPolynomial.map (Int.castRingHom ℚ) P) := by intro e he exact hP e (MvPolynomial.support_map_subset _ _ he) def productBlockHomogeneous_boxBound {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℚ) (hP : ProductBlockHomogeneous r P) : PolynomialBoxBound (fun x => r x.1) P := by intro e he x exact (Finset.single_le_sum (fun _ _ => Nat.zero_le _) (Finset.mem_univ x.2)).trans_eq (hP e he x.1) def productBlockHomogeneous_divided_total_le {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℚ) (hP : ProductBlockHomogeneous r P) (s : List (Fin m × Fin d)) : ∀ e ∈ (dividedWordPDeriv s P).support, ∑ x, e x ≤ ∑ h, r h := by intro e he have hsource := hP _ (dividedWordPDeriv_support_shift s P he) calc _ ≤ ∑ x, (e + wordDerivativeCounts s) x := Finset.sum_le_sum fun x _ => Nat.le_add_right _ _ _ = _ := by rw [Fintype.sum_prod_type]; simp_rw [hsource] def rationalBlockLinearForm_coeffL1_le {m d : ℕ} (A : Fin m → Fin d → Fin d → ℚ) (x : Fin m × Fin d) : polynomialCoeffL1 (rationalBlockLinearForm A x) ≤ ∑ j, ‖A x.1 x.2 j‖ := by calc _ ≤ ∑ j, polynomialCoeffL1 (MvPolynomial.C (A x.1 x.2 j) * MvPolynomial.X (x.1, j)) := polynomialCoeffL1_sum _ _ _ = _ := by apply Finset.sum_congr rfl intro j _ rw [MvPolynomial.C_mul_X_eq_monomial, polynomialCoeffL1_monomial] def transformed_integer_derivative_height {m d : ℕ} (A : Fin m → Fin d → Fin d → ℚ) (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℤ) (hP : P ≠ 0) (hhom : ProductBlockHomogeneous r P) (s : List (Fin m × Fin d)) (C K : ℝ) (hC : 1 ≤ C) (hA : ∀ h i, ∑ j, ‖A h i j‖ ≤ C) (hheight : Real.log (polynomialCoeffL1 P) ≤ K * (∑ h, (r h : ℝ))) (hF : rationalBlockLinearSubstitution A (dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P)) ≠ 0) : Real.log (polynomialCoeffL1 (rationalBlockLinearSubstitution A (dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P)))) ≤ (K + (d : ℝ) * Real.log 2 + Real.log C) * (∑ h, (r h : ℝ)) := by let Q := MvPolynomial.map (Int.castRingHom ℚ) P have hhomQ : ProductBlockHomogeneous r Q := productBlockHomogeneous_integerMap r P hhom have hsub := rational_polynomialCoeffL1_aeval_degree_bound (rationalBlockLinearForm A) (dividedWordPDeriv s Q) (∑ h, r h) C hC (fun x => (rationalBlockLinearForm_coeffL1_le A x).trans (hA x.1 x.2)) (productBlockHomogeneous_divided_total_le r Q hhomQ s) have hderiv := polynomialCoeffL1_dividedWordPDeriv s (fun x => r x.1) Q (productBlockHomogeneous_boxBound r Q hhomQ) have hsum : (∑ x : Fin m × Fin d, r x.1) = d * ∑ h, r h := by simp [Fintype.sum_prod_type, Finset.mul_sum, Nat.mul_comm] rw [hsum, polynomialCoeffL1_map_int_rat] at hderiv have hnorm : polynomialCoeffL1 (rationalBlockLinearSubstitution A (dividedWordPDeriv s Q)) ≤ C ^ (∑ h, r h) * ((2 : ℝ) ^ (d * ∑ h, r h) * polynomialCoeffL1 P) := hsub.trans (mul_le_mul_of_nonneg_left hderiv (pow_nonneg (zero_le_one.trans hC) _)) have hlog := Real.log_le_log (polynomialCoeffL1_pos hF) hnorm have hCpos : 0 < C := zero_lt_one.trans_le hC have hPpos := polynomialCoeffL1_pos hP rw [Real.log_mul (pow_ne_zero _ hCpos.ne') (mul_ne_zero (pow_ne_zero _ (by norm_num)) hPpos.ne'), Real.log_mul (pow_ne_zero _ (by norm_num)) hPpos.ne', Real.log_pow, Real.log_pow] at hlog simp only [Nat.cast_mul, Nat.cast_sum] at hlog change Real.log (polynomialCoeffL1 (rationalBlockLinearSubstitution A (dividedWordPDeriv s Q))) ≤ _ nlinarith [hheight] end end Bounty end SubmissionComponent_DerivativeSubstitutionHeight /- Component ThreePlacePolynomialBounds; SHA256 a51d88efc4e3bed754da254948a3a5de093d49ec4dd21088907ca360dc78d405 -/ section SubmissionComponent_ThreePlacePolynomialBounds /- Actual polynomial evaluations at the real place and two finite places, with independently selected supported monomials. -/ namespace Bounty noncomputable section open scoped BigOperators def blockExponentSum {m d : ℕ} (c : Fin d → ℝ) (q : Fin m → ℝ) (e : (Fin m × Fin d) →₀ ℕ) : ℝ := ∑ i, ∑ h, c i * (e (h, i) : ℝ) * q h def product_powers_le_exp_sum {I : Type*} [Fintype I] (a b : I → ℝ) (e : I → ℕ) (ha : ∀ i, 0 ≤ a i) (hab : ∀ i, a i ≤ Real.exp (b i)) : (∏ i, (a i) ^ e i) ≤ Real.exp (∑ i, (e i : ℝ) * b i) := by calc _ ≤ ∏ i, (Real.exp (b i)) ^ e i := Finset.prod_le_prod (fun i _ => pow_nonneg (ha i) _) (fun i _ => pow_le_pow_left₀ (ha i) (hab i) _) _ = _ := by simp only [← Real.exp_nat_mul, ← Real.exp_sum] def block_exponent_sum_identity {m d : ℕ} (c : Fin d → ℝ) (q : Fin m → ℝ) (e : (Fin m × Fin d) →₀ ℕ) : (∑ x : Fin m × Fin d, (e x : ℝ) * (c x.2 * q x.1)) = blockExponentSum c q e := by rw [Fintype.sum_prod_type, Finset.sum_comm] apply Finset.sum_congr rfl intro i _ apply Finset.sum_congr rfl intro h _ ring def block_monomial_exp_bound {m d : ℕ} (a : Fin m × Fin d → ℝ) (c : Fin d → ℝ) (q : Fin m → ℝ) (e : (Fin m × Fin d) →₀ ℕ) (ha : ∀ x, 0 ≤ a x) (hab : ∀ h i, a (h, i) ≤ Real.exp (c i * q h)) : (∏ x, (a x) ^ e x) ≤ Real.exp (blockExponentSum c q e) := by simpa only [block_exponent_sum_identity] using product_powers_le_exp_sum a (fun x => c x.2 * q x.1) e ha (fun x => hab x.1 x.2) def block_monomial_exp_bound_with_constant {m d : ℕ} (r : Fin m → ℕ) (a : Fin m × Fin d → ℝ) (c : Fin d → ℝ) (q : Fin m → ℝ) (e : (Fin m × Fin d) →₀ ℕ) (K : ℝ) (hK : 1 ≤ K) (ha : ∀ x, 0 ≤ a x) (hab : ∀ h i, a (h, i) ≤ K * Real.exp (c i * q h)) (hdegree : ∀ h, ∑ i, e (h, i) ≤ r h) : (∏ x, (a x) ^ e x) ≤ Real.exp (Real.log K * (∑ h, (r h : ℝ)) + blockExponentSum c q e) := by have hK0 : 0 < K := lt_of_lt_of_le zero_lt_one hK have hh := product_powers_le_exp_sum a (fun x => Real.log K + c x.2 * q x.1) e ha (fun x => by simpa only [Real.exp_add, Real.exp_log hK0] using hab x.1 x.2) have he : (∑ x : Fin m × Fin d, (e x : ℝ)) ≤ ∑ h, (r h : ℝ) := by rw [Fintype.sum_prod_type] exact Finset.sum_le_sum fun h _ => by exact_mod_cast hdegree h refine hh.trans (Real.exp_le_exp.mpr ?_) calc _ = Real.log K * (∑ x : Fin m × Fin d, (e x : ℝ)) + blockExponentSum c q e := by simp only [mul_add, Finset.sum_add_distrib, ← Finset.sum_mul, block_exponent_sum_identity] ring _ ≤ _ := add_le_add (mul_le_mul_of_nonneg_left he (Real.log_nonneg hK)) le_rfl def blockMatrixValues {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (x : Fin m × Fin d → ℚ) : Fin m × Fin d → ℚ := fun hi => (A hi.1).mulVec (fun j => x (hi.1, j)) hi.2 def rationalBlockLinearSubstitution_eval {m d : ℕ} (B : Fin m → Matrix (Fin d) (Fin d) ℚ) (P : MvPolynomial (Fin m × Fin d) ℚ) (y : Fin m × Fin d → ℚ) : MvPolynomial.eval y (rationalBlockLinearSubstitution B P) = MvPolynomial.eval (blockMatrixValues B y) P := by change MvPolynomial.aeval y (MvPolynomial.aeval (rationalBlockLinearForm B) P) = _ rw [MvPolynomial.comp_aeval_apply] change MvPolynomial.eval (fun i => MvPolynomial.eval y (rationalBlockLinearForm B i)) P = _ apply congrArg (fun f => MvPolynomial.eval f P) funext x simp [rationalBlockLinearForm, blockMatrixValues, Matrix.mulVec, dotProduct] def inverseBlockMatrices {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) : Fin m → Matrix (Fin d) (Fin d) ℚ := fun h => (A h)⁻¹ def inverse_block_substitution_eval {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, IsUnit (A h).det) (T : MvPolynomial (Fin m × Fin d) ℤ) (x : Fin m × Fin d → ℤ) : MvPolynomial.eval (blockMatrixValues A (fun hi => (x hi : ℚ))) (rationalBlockLinearSubstitution (inverseBlockMatrices A) (MvPolynomial.map (Int.castRingHom ℚ) T)) = (MvPolynomial.eval x T : ℚ) := by rw [rationalBlockLinearSubstitution_eval] have hid : blockMatrixValues (inverseBlockMatrices A) (blockMatrixValues A (fun hi => (x hi : ℚ))) = (fun hi => (x hi : ℚ)) := by funext hi change ((A hi.1)⁻¹.mulVec ((A hi.1).mulVec (fun j => (x (hi.1, j) : ℚ)))) hi.2 = _ rw [Matrix.mulVec_mulVec, Matrix.nonsing_inv_mul _ (hA hi.1), Matrix.one_mulVec] simp only [hid] simpa only [Int.coe_castRingHom, Function.comp_def] using (MvPolynomial.map_eval (Int.castRingHom ℚ) x T).symm def integer_eval₂_cast {I : Type*} (T : MvPolynomial I ℤ) (x : I → ℤ) : MvPolynomial.eval₂ (Int.castRingHom ℚ) (fun i => (x i : ℚ)) T = (MvPolynomial.eval x T : ℚ) := by rw [MvPolynomial.eval₂_eq_eval_map] simpa only [Int.coe_castRingHom, Function.comp_def] using (MvPolynomial.map_eval (Int.castRingHom ℚ) x T).symm def integer_padic_eval_le_exp_some_monomial {m d : ℕ} (p : ℕ) [Fact p.Prime] (T : MvPolynomial (Fin m × Fin d) ℤ) (hT : T ≠ 0) (x : Fin m × Fin d → ℤ) (q : Fin m → ℝ) (c : Fin d → ℝ) (hx : ∀ h i, (padicNorm p (x (h, i) : ℚ) : ℝ) ≤ Real.exp (c i * q h)) : ∃ e ∈ T.support, (padicNorm p (MvPolynomial.eval x T : ℚ) : ℝ) ≤ Real.exp (blockExponentSum c q e) := by obtain ⟨e, he, hbound⟩ := integer_polynomial_eval₂_padicNorm_le_some_monomial p T hT (fun i => (x i : ℚ)) rw [integer_eval₂_cast] at hbound have hbound' : (padicNorm p (MvPolynomial.eval x T : ℚ) : ℝ) ≤ ∏ i, (padicNorm p (x i : ℚ) : ℝ) ^ e i := by exact_mod_cast hbound exact ⟨e, he, hbound'.trans (block_monomial_exp_bound _ c q e (fun i => by exact_mod_cast (padicNorm.nonneg (p := p) (x i : ℚ))) hx)⟩ def rational_eval_le_exp_some_monomial {m d : ℕ} (F : MvPolynomial (Fin m × Fin d) ℚ) (hF : F ≠ 0) (y : Fin m × Fin d → ℚ) (r : Fin m → ℕ) (q : Fin m → ℝ) (c : Fin d → ℝ) (C K : ℝ) (hK : 1 ≤ K) (hdegree : ∀ e ∈ F.support, ∀ h, ∑ i, e (h, i) ≤ r h) (hheight : Real.log (polynomialCoeffL1 F) ≤ C * ∑ h, (r h : ℝ)) (hy : ∀ h i, ‖y (h, i)‖ ≤ K * Real.exp (c i * q h)) : ∃ e ∈ F.support, ‖MvPolynomial.eval y F‖ ≤ Real.exp ((C + Real.log K) * (∑ h, (r h : ℝ)) + blockExponentSum c q e) := by obtain ⟨e, he, hbound⟩ := rational_polynomial_eval_norm_le_some_monomial F hF y have hcoeff : polynomialCoeffL1 F ≤ Real.exp (C * ∑ h, (r h : ℝ)) := by simpa only [Real.exp_log (polynomialCoeffL1_pos hF)] using Real.exp_le_exp.mpr hheight have hmono := block_monomial_exp_bound_with_constant r (fun i => ‖y i‖) c q e K hK (fun i => norm_nonneg _) hy (hdegree e he) refine ⟨e, he, hbound.trans ?_⟩ calc _ ≤ Real.exp (C * ∑ h, (r h : ℝ)) * Real.exp (Real.log K * (∑ h, (r h : ℝ)) + blockExponentSum c q e) := mul_le_mul hcoeff hmono (Finset.prod_nonneg fun i _ => pow_nonneg (norm_nonneg _) _) (Real.exp_nonneg _) _ = _ := by rw [← Real.exp_add]; congr 1; ring end end Bounty end SubmissionComponent_ThreePlacePolynomialBounds /- Component UniformBalancedDerivativeAuxiliary; SHA256 f7c7e83edbb956f7ff073c5c91674fae6c9b30ece711f25e842226a4b34dac96 -/ section SubmissionComponent_UniformBalancedDerivativeAuxiliary /- One auxiliary polynomial supplies integral, balanced, uniformly bounded derivatives. -/ namespace Bounty noncomputable section open scoped BigOperators def rationalBlockLinearSubstitution_injective {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, (A h).det ≠ 0) : Function.Injective (rationalBlockLinearSubstitution A) := by intro P Q hPQ have hh := congrArg (rationalBlockLinearSubstitution (inverseBlockMatrices A)) hPQ have hmul : (fun h => A h * inverseBlockMatrices A h) = (fun _ => (1 : Matrix (Fin d) (Fin d) ℚ)) := by funext h exact Matrix.mul_nonsing_inv _ (isUnit_iff_ne_zero.mpr (hA h)) simpa only [rationalBlockLinearSubstitution_comp, hmul, rationalBlockLinearSubstitution_one] using hh def exists_rational_block_matrix_norm_bound {m d s : ℕ} (A : Fin s → Fin m → Fin d → Fin d → ℚ) : ∃ C : ℝ, 1 ≤ C ∧ ∀ v h i, ∑ j, ‖A v h i j‖ ≤ C := by let T : ℝ := ∑ v, ∑ h, ∑ i, ∑ j, ‖A v h i j‖ have hT : 0 ≤ T := by dsimp [T]; positivity refine ⟨1 + T, by linarith, ?_⟩ intro v h i have hi : (∑ j, ‖A v h i j‖) ≤ ∑ k, ∑ j, ‖A v h k j‖ := Finset.single_le_sum (f := fun k : Fin d => ∑ j, ‖A v h k j‖) (fun _ _ => by positivity) (Finset.mem_univ i) have hh : (∑ k, ∑ j, ‖A v h k j‖) ≤ ∑ t, ∑ k, ∑ j, ‖A v t k j‖ := Finset.single_le_sum (f := fun t : Fin m => ∑ k, ∑ j, ‖A v t k j‖) (fun _ _ => by positivity) (Finset.mem_univ h) have hv : (∑ t, ∑ k, ∑ j, ‖A v t k j‖) ≤ T := Finset.single_le_sum (f := fun w : Fin s => ∑ t, ∑ k, ∑ j, ‖A w t k j‖) (fun _ _ => by positivity) (Finset.mem_univ v) linarith [hi.trans (hh.trans hv)] def exists_balanced_integer_derivative_auxiliary {m d s : ℕ} (hm : 0 < m) (hd : 0 < d) (B : Fin s → Fin m → Matrix (Fin d) (Fin d) ℚ) (hB : ∀ v h, (B v h).det ≠ 0) : ∃ K L : ℝ, 0 ≤ K ∧ 0 ≤ L ∧ ∀ (r : Fin m → ℕ), (∀ h, 0 < r h) → ∀ η : ℝ, 0 ≤ η → 4 * (s : ℝ) * d ≤ (m : ℝ) * η ^ 2 → ∃ P : MvPolynomial (Fin m × Fin d) ℤ, P ≠ 0 ∧ ProductBlockHomogeneous r P ∧ Real.log (polynomialCoeffL1 P) ≤ K * (∑ h, (r h : ℝ)) ∧ ∀ t : List (Fin m × Fin d), blockDerivativeWeight r t ≤ (m : ℝ) * η → dividedWordPDeriv t (MvPolynomial.map (Int.castRingHom ℚ) P) ≠ 0 → ∃ T : MvPolynomial (Fin m × Fin d) ℤ, T ≠ 0 ∧ MvPolynomial.map (Int.castRingHom ℚ) T = dividedWordPDeriv t (MvPolynomial.map (Int.castRingHom ℚ) P) ∧ ∀ v : Fin s, (∀ e ∈ (rationalBlockLinearSubstitution (B v) (MvPolynomial.map (Int.castRingHom ℚ) T)).support, (∀ h, ∑ i, e (h, i) ≤ r h) ∧ ∀ i : Fin d, |(∑ h, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * (m : ℝ) * η) ∧ Real.log (polynomialCoeffL1 (rationalBlockLinearSubstitution (B v) (MvPolynomial.map (Int.castRingHom ℚ) T))) ≤ L * (∑ h, (r h : ℝ)) := by obtain ⟨K, hK, haux⟩ := exists_rational_balanced_auxiliary_constant hm hd B obtain ⟨C, hC, hnormB⟩ := exists_rational_block_matrix_norm_bound B let L := K + (d : ℝ) * Real.log 2 + Real.log C have hL : 0 ≤ L := add_nonneg (add_nonneg hK (mul_nonneg (Nat.cast_nonneg _) (Real.log_nonneg (by norm_num)))) (Real.log_nonneg hC) refine ⟨K, L, hK, hL, ?_⟩ intro r hr η hη hlarge obtain ⟨P, hP, hhom, hheight, hbalance⟩ := haux r hr η hη hlarge refine ⟨P, hP, hhom, hheight, ?_⟩ intro t ht hderiv obtain ⟨T, hTmap⟩ := exists_integer_dividedWordPDeriv t P have hT : T ≠ 0 := by intro hz apply hderiv simpa only [hz, map_zero] using hTmap.symm refine ⟨T, hT, hTmap, ?_⟩ intro v have htransformed : rationalBlockLinearSubstitution (B v) (dividedWordPDeriv t (MvPolynomial.map (Int.castRingHom ℚ) P)) ≠ 0 := by intro hz exact hderiv ((rationalBlockLinearSubstitution_injective (B v) (hB v)) (hz.trans (map_zero _).symm)) constructor · intro e he have he' : MvPolynomial.coeff e (rationalBlockLinearSubstitution (B v) (dividedWordPDeriv t (MvPolynomial.map (Int.castRingHom ℚ) P))) ≠ 0 := by simpa only [hTmap] using MvPolynomial.mem_support_iff.mp he constructor · intro h have hh := rationalBlockLinearSubstitution_dividedWordPDeriv_block_degrees (B v) (hB v) r t (MvPolynomial.map (Int.castRingHom ℚ) P) (fun e he => (hbalance v e he).1) e he' h omega · intro i exact (rationalBlockLinearSubstitution_dividedWordPDeriv_balanced (B v) (hB v) r η t (MvPolynomial.map (Int.castRingHom ℚ) P) (fun e he => (hbalance v e he).2) ht e he' i).le · rw [hTmap] exact transformed_integer_derivative_height (B v) r P hP hhom t C K hC (hnormB v) hheight htransformed end end Bounty end SubmissionComponent_UniformBalancedDerivativeAuxiliary /- Component BalancedExponentEstimate; SHA256 69dcab77191dbe80821fadc1a990d78a1b032b02e93b6d9e61689f660e3ce643 -/ section SubmissionComponent_BalancedExponentEstimate /- Exact finite-sum exponent budgets. The hypotheses are concrete scale, coordinate, and balance inequalities; no geometry or limiting premise occurs. -/ namespace Bounty noncomputable section open scoped BigOperators def balanced_block_scale_error {m : ℕ} (r q e : Fin m → ℝ) (D : ℝ) (hr : ∀ h, 0 < r h) (he0 : ∀ h, 0 ≤ e h) (her : ∀ h, e h ≤ r h) (hscale : ∀ h, |r h * q h - D| ≤ q h) : |(∑ h, e h * q h) - D * (∑ h, e h / r h)| ≤ ∑ h, q h := by have hterm (h : Fin m) : |e h * q h - D * (e h / r h)| ≤ q h := by have hepos : 0 ≤ e h / r h := div_nonneg (he0 h) (le_of_lt (hr h)) have hele : e h / r h ≤ 1 := (div_le_one (hr h)).mpr (her h) have hid : e h * q h - D * (e h / r h) = (e h / r h) * (r h * q h - D) := by field_simp [ne_of_gt (hr h)] rw [hid, abs_mul, abs_of_nonneg hepos] exact (mul_le_mul hele (hscale h) (abs_nonneg _) zero_le_one).trans_eq (one_mul _) rw [Finset.mul_sum, ← Finset.sum_sub_distrib] exact (Finset.abs_sum_le_sum_abs _ _).trans (Finset.sum_le_sum fun h _ => hterm h) def balanced_coordinate_scale_estimate {m d : ℕ} (r q e : Fin m → ℝ) (D η : ℝ) (hD : 0 ≤ D) (hr : ∀ h, 0 < r h) (he0 : ∀ h, 0 ≤ e h) (her : ∀ h, e h ≤ r h) (hscale : ∀ h, |r h * q h - D| ≤ q h) (hbalance : |(∑ h, e h / r h) - (m : ℝ) / d| ≤ 2 * m * η) : |(∑ h, e h * q h) - D * (m : ℝ) / d| ≤ D * (2 * m * η) + ∑ h, q h := by have hid : (∑ h, e h * q h) - D * (m : ℝ) / d = ((∑ h, e h * q h) - D * (∑ h, e h / r h)) + D * ((∑ h, e h / r h) - (m : ℝ) / d) := by ring rw [hid] calc _ ≤ |(∑ h, e h * q h) - D * (∑ h, e h / r h)| + |D * ((∑ h, e h / r h) - (m : ℝ) / d)| := abs_add_le _ _ _ ≤ (∑ h, q h) + D * (2 * m * η) := by rw [abs_mul, abs_of_nonneg hD] exact add_le_add (balanced_block_scale_error r q e D hr he0 her hscale) (mul_le_mul_of_nonneg_left hbalance hD) _ = _ := by ring def signed_weight_of_abs_error (c S T E : ℝ) (herror : |S - T| ≤ E) : c * S ≤ c * T + |c| * E := by have hh : c * (S - T) ≤ |c| * E := calc _ ≤ |c * (S - T)| := le_abs_self _ _ = |c| * |S - T| := abs_mul _ _ _ ≤ _ := mul_le_mul_of_nonneg_left herror (abs_nonneg c) nlinarith def exponentCoefficientMass {s d : ℕ} (c : Fin s → Fin d → ℝ) : ℝ := ∑ v, ∑ i, |c v i| def balanced_exponent_estimate_real {m d s : ℕ} (r q : Fin m → ℝ) (e : Fin s → Fin m → Fin d → ℝ) (c : Fin s → Fin d → ℝ) (D η ρ : ℝ) (hd : 0 < d) (hD : 0 ≤ D) (hr : ∀ h, 0 < r h) (he0 : ∀ v h i, 0 ≤ e v h i) (her : ∀ v h i, e v h i ≤ r h) (hscale : ∀ h, |r h * q h - D| ≤ q h) (hbalance : ∀ v i, |(∑ h, e v h i / r h) - (m : ℝ) / d| ≤ 2 * m * η) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) : (∑ v, ∑ i, ∑ h, c v i * e v h i * q h) ≤ D * (-(m : ℝ) * ρ / d + 2 * m * η * exponentCoefficientMass c) + exponentCoefficientMass c * ∑ h, q h := by let T : ℝ := D * (m : ℝ) / d let E : ℝ := D * (2 * m * η) + ∑ h, q h have hT : 0 ≤ T := by dsimp [T]; positivity have hterm (v : Fin s) (i : Fin d) : c v i * (∑ h, e v h i * q h) ≤ c v i * T + |c v i| * E := signed_weight_of_abs_error _ _ _ _ (balanced_coordinate_scale_estimate r q (fun h => e v h i) D η hD hr (fun h => he0 v h i) (fun h => her v h i) hscale (hbalance v i)) calc _ = ∑ v, ∑ i, c v i * (∑ h, e v h i * q h) := by simp only [Finset.mul_sum, mul_assoc] _ ≤ ∑ v, ∑ i, (c v i * T + |c v i| * E) := Finset.sum_le_sum fun v _ => Finset.sum_le_sum fun i _ => hterm v i _ = (∑ v, ∑ i, c v i) * T + exponentCoefficientMass c * E := by simp only [Finset.sum_add_distrib, ← Finset.sum_mul, exponentCoefficientMass] _ ≤ (-ρ) * T + exponentCoefficientMass c * E := add_le_add (mul_le_mul_of_nonneg_right hc hT) le_rfl _ = _ := by dsimp [T, E]; ring def balanced_exponent_estimate {m d s : ℕ} (r : Fin m → ℕ) (q : Fin m → ℝ) (e : Fin s → Fin m → Fin d → ℕ) (c : Fin s → Fin d → ℝ) (D η ρ : ℝ) (hd : 0 < d) (hD : 0 ≤ D) (hr : ∀ h, 0 < r h) (her : ∀ v h i, e v h i ≤ r h) (hscale : ∀ h, |(r h : ℝ) * q h - D| ≤ q h) (hbalance : ∀ v i, |(∑ h, (e v h i : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * m * η) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) : (∑ v, ∑ i, ∑ h, c v i * (e v h i : ℝ) * q h) ≤ D * (-(m : ℝ) * ρ / d + 2 * m * η * exponentCoefficientMass c) + exponentCoefficientMass c * ∑ h, q h := by exact balanced_exponent_estimate_real (fun h => (r h : ℝ)) q (fun v h i => (e v h i : ℝ)) c D η ρ hd hD (fun h => by exact_mod_cast hr h) (fun _ _ _ => by positivity) (fun v h i => by exact_mod_cast her v h i) hscale hbalance hc def deficit_le_exponentCoefficientMass {s d : ℕ} (c : Fin s → Fin d → ℝ) (ρ : ℝ) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) : ρ ≤ exponentCoefficientMass c := by have hh : -(∑ v, ∑ i, c v i) ≤ exponentCoefficientMass c := by calc _ = ∑ v, ∑ i, -(c v i) := by simp only [Finset.sum_neg_distrib] _ ≤ _ := Finset.sum_le_sum fun v _ => Finset.sum_le_sum fun i _ => neg_le_abs (c v i) linarith def balanced_exponent_negative_coefficient {m d s : ℕ} (c : Fin s → Fin d → ℝ) (η ρ : ℝ) (hd : 0 < d) (hρ : 0 < ρ) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (hη : η ≤ ρ / (8 * (d : ℝ) * exponentCoefficientMass c)) : -(m : ℝ) * ρ / d + 2 * m * η * exponentCoefficientMass c ≤ -3 * (m : ℝ) * ρ / (4 * d) := by have hd' : (0 : ℝ) < d := by exact_mod_cast hd have hmass : 0 < exponentCoefficientMass c := hρ.trans_le (deficit_le_exponentCoefficientMass c ρ hc) have hη' := (le_div_iff₀ (show 0 < 8 * (d : ℝ) * exponentCoefficientMass c by positivity)).mp hη have hsmall : 2 * (m : ℝ) * η * exponentCoefficientMass c ≤ (m : ℝ) * ρ / (4 * d) := by apply (le_div_iff₀ (by positivity : (0 : ℝ) < 4 * d)).mpr calc _ = (m : ℝ) * (η * (8 * d * exponentCoefficientMass c)) := by ring _ ≤ (m : ℝ) * ρ := mul_le_mul_of_nonneg_left hη' (by positivity) calc _ ≤ -(m : ℝ) * ρ / d + (m : ℝ) * ρ / (4 * d) := add_le_add le_rfl hsmall _ = _ := by field_simp; ring def balanced_exponent_estimate_negative {m d s : ℕ} (r : Fin m → ℕ) (q : Fin m → ℝ) (e : Fin s → Fin m → Fin d → ℕ) (c : Fin s → Fin d → ℝ) (D η ρ : ℝ) (hd : 0 < d) (hD : 0 ≤ D) (hρ : 0 < ρ) (hr : ∀ h, 0 < r h) (her : ∀ v h i, e v h i ≤ r h) (hscale : ∀ h, |(r h : ℝ) * q h - D| ≤ q h) (hbalance : ∀ v i, |(∑ h, (e v h i : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * m * η) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (hη : η ≤ ρ / (8 * (d : ℝ) * exponentCoefficientMass c)) : (∑ v, ∑ i, ∑ h, c v i * (e v h i : ℝ) * q h) ≤ -3 * (m : ℝ) * ρ * D / (4 * d) + exponentCoefficientMass c * ∑ h, q h := by calc _ ≤ D * (-(m : ℝ) * ρ / d + 2 * m * η * exponentCoefficientMass c) + exponentCoefficientMass c * ∑ h, q h := balanced_exponent_estimate r q e c D η ρ hd hD hr her hscale hbalance hc _ ≤ D * (-3 * (m : ℝ) * ρ / (4 * d)) + exponentCoefficientMass c * ∑ h, q h := add_le_add (mul_le_mul_of_nonneg_left (balanced_exponent_negative_coefficient c η ρ hd hρ hc hη) hD) le_rfl _ = _ := by ring def exponent_quarter_budgets_of_large_scales {m d : ℕ} (C R q₀ M Q ρ D : ℝ) (hd : 0 < d) (hC : 0 ≤ C) (hD : 0 < D) (hq₀ : 0 < q₀) (hR : R ≤ 2 * D / q₀) (hqLarge : 8 * (d : ℝ) * C ≤ (m : ℝ) * ρ * q₀) (hDLarge : 4 * (d : ℝ) * M * Q ≤ (m : ℝ) * ρ * D) : C * R ≤ (m : ℝ) * ρ * D / (4 * d) ∧ M * Q ≤ (m : ℝ) * ρ * D / (4 * d) := by have hd' : (0 : ℝ) < d := by exact_mod_cast hd constructor · refine (mul_le_mul_of_nonneg_left hR hC).trans ?_ apply (le_div_iff₀ (by positivity : (0 : ℝ) < 4 * d)).mpr have hh := mul_le_mul_of_nonneg_right hqLarge (le_of_lt hD) have hid : (C * (2 * D / q₀)) * (4 * (d : ℝ)) = (8 * d * C * D) / q₀ := by ring rw [hid] apply (div_le_iff₀ hq₀).mpr nlinarith · apply (le_div_iff₀ (by positivity : (0 : ℝ) < 4 * d)).mpr nlinarith def exponent_three_quarter_budget_negative {m d : ℕ} (C R M Q ρ D E : ℝ) (hm : 0 < m) (hd : 0 < d) (hρ : 0 < ρ) (hD : 0 < D) (hR : C * R ≤ (m : ℝ) * ρ * D / (4 * d)) (hQ : M * Q ≤ (m : ℝ) * ρ * D / (4 * d)) (hE : E ≤ -3 * (m : ℝ) * ρ * D / (4 * d) + M * Q) : C * R + E < 0 := by have hpos : 0 < (m : ℝ) * ρ * D / (4 * d) := by positivity have hid : -3 * (m : ℝ) * ρ * D / (4 * d) = -3 * ((m : ℝ) * ρ * D / (4 * d)) := by ring rw [hid] at hE linarith def balanced_exponent_contradiction {m d s : ℕ} (r : Fin m → ℕ) (q : Fin m → ℝ) (e : Fin s → Fin m → Fin d → ℕ) (c : Fin s → Fin d → ℝ) (D η ρ C q₀ : ℝ) (hm : 0 < m) (hd : 0 < d) (hD : 0 < D) (hρ : 0 < ρ) (hC : 0 ≤ C) (hq₀ : 0 < q₀) (hr : ∀ h, 0 < r h) (her : ∀ v h i, e v h i ≤ r h) (hscale : ∀ h, |(r h : ℝ) * q h - D| ≤ q h) (hbalance : ∀ v i, |(∑ h, (e v h i : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * m * η) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (hη : η ≤ ρ / (8 * (d : ℝ) * exponentCoefficientMass c)) (hR : (∑ h, (r h : ℝ)) ≤ 2 * D / q₀) (hqLarge : 8 * (d : ℝ) * C ≤ (m : ℝ) * ρ * q₀) (hDLarge : 4 * (d : ℝ) * exponentCoefficientMass c * (∑ h, q h) ≤ (m : ℝ) * ρ * D) : C * (∑ h, (r h : ℝ)) + (∑ v, ∑ i, ∑ h, c v i * (e v h i : ℝ) * q h) < 0 := by obtain ⟨hR', hQ'⟩ := exponent_quarter_budgets_of_large_scales C (∑ h, (r h : ℝ)) q₀ (exponentCoefficientMass c) (∑ h, q h) ρ D hd hC hD hq₀ hR hqLarge hDLarge exact exponent_three_quarter_budget_negative C (∑ h, (r h : ℝ)) (exponentCoefficientMass c) (∑ h, q h) ρ D _ hm hd hρ hD hR' hQ' (balanced_exponent_estimate_negative r q e c D η ρ hd (le_of_lt hD) hρ hr her hscale hbalance hc hη) end end Bounty end SubmissionComponent_BalancedExponentEstimate /- Component ActualThreePlacePolynomialContradiction; SHA256 b9ee0dc12e43ce1f135678ffe33725fde4cc32ea061c3d14e3777fa199a69a65 -/ section SubmissionComponent_ActualThreePlacePolynomialContradiction /- The actual three-place contradiction for a nonzero integer polynomial evaluation. Archimedean coefficients may be rational; finite-place estimates are applied directly to the integer polynomial. -/ namespace Bounty noncomputable section open scoped BigOperators def actual_three_place_polynomial_upper {m d : ℕ} (T : MvPolynomial (Fin m × Fin d) ℤ) (F : MvPolynomial (Fin m × Fin d) ℚ) (x : Fin m × Fin d → ℤ) (y : Fin m × Fin d → ℚ) (heval : MvPolynomial.eval y F = (MvPolynomial.eval x T : ℚ)) (hne : MvPolynomial.eval x T ≠ 0) (r : Fin m → ℕ) (q : Fin m → ℝ) (c : Fin 3 → Fin d → ℝ) (C K : ℝ) (hK : 1 ≤ K) (hdegree : ∀ e ∈ F.support, ∀ h, ∑ i, e (h, i) ≤ r h) (hheight : Real.log (polynomialCoeffL1 F) ≤ C * ∑ h, (r h : ℝ)) (hy : ∀ h i, ‖y (h, i)‖ ≤ K * Real.exp (c 0 i * q h)) (hx₂ : ∀ h i, (padicNorm 2 (x (h, i) : ℚ) : ℝ) ≤ Real.exp (c 1 i * q h)) (hx₃ : ∀ h i, (padicNorm 3 (x (h, i) : ℚ) : ℝ) ≤ Real.exp (c 2 i * q h)) : ∃ eInf ∈ F.support, ∃ e₂ ∈ T.support, ∃ e₃ ∈ T.support, |(MvPolynomial.eval x T : ℝ)| * (padicNorm 2 (MvPolynomial.eval x T : ℚ) : ℝ) * (padicNorm 3 (MvPolynomial.eval x T : ℚ) : ℝ) ≤ Real.exp ((C + Real.log K) * (∑ h, (r h : ℝ)) + blockExponentSum (c 0) q eInf + blockExponentSum (c 1) q e₂ + blockExponentSum (c 2) q e₃) := by have hT : T ≠ 0 := by intro hz; apply hne; simp [hz] have hF : F ≠ 0 := by intro hz have hh : (MvPolynomial.eval x T : ℚ) = 0 := by simpa [hz] using heval.symm apply hne exact_mod_cast hh obtain ⟨eInf, heInf, hbInf⟩ := rational_eval_le_exp_some_monomial F hF y r q (c 0) C K hK hdegree hheight hy obtain ⟨e₂, he₂, hb₂⟩ := integer_padic_eval_le_exp_some_monomial 2 T hT x q (c 1) hx₂ obtain ⟨e₃, he₃, hb₃⟩ := integer_padic_eval_le_exp_some_monomial 3 T hT x q (c 2) hx₃ have hbInf' : |(MvPolynomial.eval x T : ℝ)| ≤ Real.exp ((C + Real.log K) * (∑ h, (r h : ℝ)) + blockExponentSum (c 0) q eInf) := by simpa only [heval, Int.norm_cast_rat, ← Real.norm_eq_abs, Int.norm_cast_real] using hbInf have hp₂ : 0 ≤ (padicNorm 2 (MvPolynomial.eval x T : ℚ) : ℝ) := by exact_mod_cast (padicNorm.nonneg (p := 2) (MvPolynomial.eval x T : ℚ)) have hp₃ : 0 ≤ (padicNorm 3 (MvPolynomial.eval x T : ℚ) : ℝ) := by exact_mod_cast (padicNorm.nonneg (p := 3) (MvPolynomial.eval x T : ℚ)) refine ⟨eInf, heInf, e₂, he₂, e₃, he₃, ?_⟩ calc _ ≤ (Real.exp ((C + Real.log K) * (∑ h, (r h : ℝ)) + blockExponentSum (c 0) q eInf) * Real.exp (blockExponentSum (c 1) q e₂)) * Real.exp (blockExponentSum (c 2) q e₃) := mul_le_mul (mul_le_mul hbInf' hb₂ hp₂ (Real.exp_nonneg _)) hb₃ hp₃ (mul_nonneg (Real.exp_nonneg _) (Real.exp_nonneg _)) _ = _ := by rw [← Real.exp_add, ← Real.exp_add] def threePlaceExponents {m d : ℕ} (eInf e₂ e₃ : (Fin m × Fin d) →₀ ℕ) : Fin 3 → Fin m → Fin d → ℕ := fun v h i => ![eInf, e₂, e₃] v (h, i) def threePlaceExponents_sum {m d : ℕ} (c : Fin 3 → Fin d → ℝ) (q : Fin m → ℝ) (eInf e₂ e₃ : (Fin m × Fin d) →₀ ℕ) : (∑ v, ∑ i, ∑ h, c v i * (threePlaceExponents eInf e₂ e₃ v h i : ℝ) * q h) = blockExponentSum (c 0) q eInf + blockExponentSum (c 1) q e₂ + blockExponentSum (c 2) q e₃ := by simp [threePlaceExponents, blockExponentSum, Fin.sum_univ_succ, add_assoc] def actual_three_place_polynomial_contradiction {m d : ℕ} (T : MvPolynomial (Fin m × Fin d) ℤ) (F : MvPolynomial (Fin m × Fin d) ℚ) (x : Fin m × Fin d → ℤ) (y : Fin m × Fin d → ℚ) (heval : MvPolynomial.eval y F = (MvPolynomial.eval x T : ℚ)) (hne : MvPolynomial.eval x T ≠ 0) (r : Fin m → ℕ) (q : Fin m → ℝ) (c : Fin 3 → Fin d → ℝ) (D η ρ C K q₀ : ℝ) (hm : 0 < m) (hd : 0 < d) (hD : 0 < D) (hρ : 0 < ρ) (hC : 0 ≤ C) (hK : 1 ≤ K) (hq₀ : 0 < q₀) (hr : ∀ h, 0 < r h) (hdegreeF : ∀ e ∈ F.support, ∀ h, ∑ i, e (h, i) ≤ r h) (hdegreeT : ∀ e ∈ T.support, ∀ h, ∑ i, e (h, i) ≤ r h) (hbalanceF : ∀ e ∈ F.support, ∀ i : Fin d, |(∑ h : Fin m, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * m * η) (hbalanceT : ∀ e ∈ T.support, ∀ i : Fin d, |(∑ h : Fin m, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * m * η) (hscale : ∀ h, |(r h : ℝ) * q h - D| ≤ q h) (hheight : Real.log (polynomialCoeffL1 F) ≤ C * ∑ h, (r h : ℝ)) (hy : ∀ h i, ‖y (h, i)‖ ≤ K * Real.exp (c 0 i * q h)) (hx₂ : ∀ h i, (padicNorm 2 (x (h, i) : ℚ) : ℝ) ≤ Real.exp (c 1 i * q h)) (hx₃ : ∀ h i, (padicNorm 3 (x (h, i) : ℚ) : ℝ) ≤ Real.exp (c 2 i * q h)) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (hη : η ≤ ρ / (8 * (d : ℝ) * exponentCoefficientMass c)) (hR : (∑ h, (r h : ℝ)) ≤ 2 * D / q₀) (hqLarge : 8 * (d : ℝ) * (C + Real.log K) ≤ (m : ℝ) * ρ * q₀) (hDLarge : 4 * (d : ℝ) * exponentCoefficientMass c * (∑ h, q h) ≤ (m : ℝ) * ρ * D) : False := by classical obtain ⟨eInf, heInf, e₂, he₂, e₃, he₃, hupper⟩ := actual_three_place_polynomial_upper T F x y heval hne r q c C K hK hdegreeF hheight hy hx₂ hx₃ have hpoint {e : (Fin m × Fin d) →₀ ℕ} (hdeg : ∀ h, ∑ i, e (h, i) ≤ r h) (h : Fin m) (i : Fin d) : e (h, i) ≤ r h := (Finset.single_le_sum (fun _ _ => Nat.zero_le _) (Finset.mem_univ i)).trans (hdeg h) have her : ∀ v h i, threePlaceExponents eInf e₂ e₃ v h i ≤ r h := by intro v h i fin_cases v · exact hpoint (hdegreeF eInf heInf) h i · exact hpoint (hdegreeT e₂ he₂) h i · exact hpoint (hdegreeT e₃ he₃) h i have hbalance : ∀ v i, |(∑ h, (threePlaceExponents eInf e₂ e₃ v h i : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * m * η := by intro v i fin_cases v · exact hbalanceF eInf heInf i · exact hbalanceT e₂ he₂ i · exact hbalanceT e₃ he₃ i have hnegative := balanced_exponent_contradiction r q (threePlaceExponents eInf e₂ e₃) c D η ρ (C + Real.log K) q₀ hm hd hD hρ (add_nonneg hC (Real.log_nonneg hK)) hq₀ hr her hscale hbalance hc hη hR hqLarge hDLarge rw [threePlaceExponents_sum] at hnegative have hexp : Real.exp ((C + Real.log K) * (∑ h, (r h : ℝ)) + blockExponentSum (c 0) q eInf + blockExponentSum (c 1) q e₂ + blockExponentSum (c 2) q e₃) < 1 := by apply Real.exp_lt_one_iff.mpr simpa only [add_assoc] using hnegative have hlower := integer_three_place_product_lower (MvPolynomial.eval x T) hne exact (not_lt_of_ge hlower) (hupper.trans_lt hexp) def inverseBlockPolynomial {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (T : MvPolynomial (Fin m × Fin d) ℤ) : MvPolynomial (Fin m × Fin d) ℚ := rationalBlockLinearSubstitution (inverseBlockMatrices A) (MvPolynomial.map (Int.castRingHom ℚ) T) /-- Specialization to actual invertible rational block matrices at infinity. The two finite places still evaluate the original integer polynomial. -/ def inverse_block_three_place_polynomial_contradiction {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, IsUnit (A h).det) (T : MvPolynomial (Fin m × Fin d) ℤ) (x : Fin m × Fin d → ℤ) (hne : MvPolynomial.eval x T ≠ 0) (r : Fin m → ℕ) (q : Fin m → ℝ) (c : Fin 3 → Fin d → ℝ) (D η ρ C K q₀ : ℝ) (hm : 0 < m) (hd : 0 < d) (hD : 0 < D) (hρ : 0 < ρ) (hC : 0 ≤ C) (hK : 1 ≤ K) (hq₀ : 0 < q₀) (hr : ∀ h, 0 < r h) (hdegreeF : ∀ e ∈ (inverseBlockPolynomial A T).support, ∀ h, ∑ i, e (h, i) ≤ r h) (hdegreeT : ∀ e ∈ T.support, ∀ h, ∑ i, e (h, i) ≤ r h) (hbalanceF : ∀ e ∈ (inverseBlockPolynomial A T).support, ∀ i : Fin d, |(∑ h : Fin m, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * m * η) (hbalanceT : ∀ e ∈ T.support, ∀ i : Fin d, |(∑ h : Fin m, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * m * η) (hscale : ∀ h, |(r h : ℝ) * q h - D| ≤ q h) (hheight : Real.log (polynomialCoeffL1 (inverseBlockPolynomial A T)) ≤ C * ∑ h, (r h : ℝ)) (hy : ∀ h i, ‖blockMatrixValues A (fun hi => (x hi : ℚ)) (h, i)‖ ≤ K * Real.exp (c 0 i * q h)) (hx₂ : ∀ h i, (padicNorm 2 (x (h, i) : ℚ) : ℝ) ≤ Real.exp (c 1 i * q h)) (hx₃ : ∀ h i, (padicNorm 3 (x (h, i) : ℚ) : ℝ) ≤ Real.exp (c 2 i * q h)) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (hη : η ≤ ρ / (8 * (d : ℝ) * exponentCoefficientMass c)) (hR : (∑ h, (r h : ℝ)) ≤ 2 * D / q₀) (hqLarge : 8 * (d : ℝ) * (C + Real.log K) ≤ (m : ℝ) * ρ * q₀) (hDLarge : 4 * (d : ℝ) * exponentCoefficientMass c * (∑ h, q h) ≤ (m : ℝ) * ρ * D) : False := by exact actual_three_place_polynomial_contradiction T (inverseBlockPolynomial A T) x (blockMatrixValues A (fun hi => (x hi : ℚ))) (inverse_block_substitution_eval A hA T x) hne r q c D η ρ C K q₀ hm hd hD hρ hC hK hq₀ hr hdegreeF hdegreeT hbalanceF hbalanceT hscale hheight hy hx₂ hx₃ hc hη hR hqLarge hDLarge end end Bounty end SubmissionComponent_ActualThreePlacePolynomialContradiction /- Component TwoBasisBalancedAuxiliary; SHA256 a9090b89e1ca3dd9ded374ffb3c77455ac89b5510bdd69ba81bdd001e3336526 -/ section SubmissionComponent_TwoBasisBalancedAuxiliary /- Balanced integer auxiliaries in the inverse archimedean basis and the identity basis. -/ namespace Bounty noncomputable section open scoped BigOperators def threePlaceAuxiliaryBases {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) : Fin 2 → Fin m → Matrix (Fin d) (Fin d) ℚ := ![inverseBlockMatrices A, fun _ => 1] structure ThreePlaceDerivativeBounds {m d : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (r : Fin m → ℕ) (η L : ℝ) (T : MvPolynomial (Fin m × Fin d) ℤ) : Prop where degreeInf : ∀ e ∈ (inverseBlockPolynomial A T).support, ∀ h, ∑ i, e (h, i) ≤ r h degreeInt : ∀ e ∈ T.support, ∀ h, ∑ i, e (h, i) ≤ r h balanceInf : ∀ e ∈ (inverseBlockPolynomial A T).support, ∀ i : Fin d, |(∑ h, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * (m : ℝ) * η balanceInt : ∀ e ∈ T.support, ∀ i : Fin d, |(∑ h, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * (m : ℝ) * η heightInf : Real.log (polynomialCoeffL1 (inverseBlockPolynomial A T)) ≤ L * (∑ h, (r h : ℝ)) def exists_two_basis_balanced_auxiliary {m d : ℕ} (hm : 0 < m) (hd : 0 < d) (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (hA : ∀ h, IsUnit (A h).det) : ∃ K L : ℝ, 0 ≤ K ∧ 0 ≤ L ∧ ∀ (r : Fin m → ℕ), (∀ h, 0 < r h) → ∀ η : ℝ, 0 ≤ η → 8 * (d : ℝ) ≤ (m : ℝ) * η ^ 2 → ∃ P : MvPolynomial (Fin m × Fin d) ℤ, P ≠ 0 ∧ ProductBlockHomogeneous r P ∧ Real.log (polynomialCoeffL1 P) ≤ K * (∑ h, (r h : ℝ)) ∧ ∀ t : List (Fin m × Fin d), blockDerivativeWeight r t ≤ (m : ℝ) * η → dividedWordPDeriv t (MvPolynomial.map (Int.castRingHom ℚ) P) ≠ 0 → ∃ T : MvPolynomial (Fin m × Fin d) ℤ, T ≠ 0 ∧ MvPolynomial.map (Int.castRingHom ℚ) T = dividedWordPDeriv t (MvPolynomial.map (Int.castRingHom ℚ) P) ∧ ThreePlaceDerivativeBounds A r η L T := by classical have hB : ∀ v h, (threePlaceAuxiliaryBases A v h).det ≠ 0 := by intro v h fin_cases v · exact (Matrix.isUnit_nonsing_inv_det (A h) (hA h)).ne_zero · simp [threePlaceAuxiliaryBases] obtain ⟨K, L, hK, hL, haux⟩ := exists_balanced_integer_derivative_auxiliary hm hd (threePlaceAuxiliaryBases A) hB refine ⟨K, L, hK, hL, ?_⟩ intro r hr η hη hlarge have hlarge' : 4 * (2 : ℝ) * d ≤ (m : ℝ) * η ^ 2 := by norm_num; exact hlarge obtain ⟨P, hP, hhom, hheight, hderiv⟩ := haux r hr η hη hlarge' refine ⟨P, hP, hhom, hheight, ?_⟩ intro t ht htne obtain ⟨T, hT, hTmap, hbounds⟩ := hderiv t ht htne have hInf := hbounds 0 have hInt := hbounds 1 change (∀ e ∈ (inverseBlockPolynomial A T).support, (∀ h, ∑ i, e (h, i) ≤ r h) ∧ ∀ i, |(∑ h, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * (m : ℝ) * η) ∧ Real.log (polynomialCoeffL1 (inverseBlockPolynomial A T)) ≤ L * (∑ h, (r h : ℝ)) at hInf have hInt' : ∀ e ∈ T.support, (∀ h, ∑ i, e (h, i) ≤ r h) ∧ ∀ i, |(∑ h, (e (h, i) : ℝ) / r h) - (m : ℝ) / d| ≤ 2 * (m : ℝ) * η := by intro e he have hmap : e ∈ (MvPolynomial.map (Int.castRingHom ℚ) T).support := by rw [MvPolynomial.support_map_of_injective _ Int.cast_injective] exact he have hh := hInt.1 e simpa only [threePlaceAuxiliaryBases, Matrix.cons_val_one, Matrix.cons_val_zero, rationalBlockLinearSubstitution_one] using hh (by simpa [threePlaceAuxiliaryBases, rationalBlockLinearSubstitution_one] using hmap) refine ⟨T, hT, hTmap, ?_⟩ exact ⟨fun e he => (hInf.1 e he).1, fun e he => (hInt' e he).1, fun e he => (hInf.1 e he).2, fun e he => (hInt' e he).2, hInf.2⟩ end end Bounty end SubmissionComponent_TwoBasisBalancedAuxiliary /- Component LinearParametrizationGridDerivative; SHA256 4d07eb4b75a2218bb6326c7d27926a0aadb57961461642cf53c1ae7ea422548c -/ section SubmissionComponent_LinearParametrizationGridDerivative /- Actual coordinate derivatives detected on a bounded grid after a rectangular linear parametrization. No inverse or injectivity of the parametrization is assumed. -/ namespace Bounty noncomputable section open scoped BigOperators def rationalLinearParametrization {I J : Type*} [Fintype J] (A : I → J → ℚ) (i : I) : MvPolynomial J ℚ := ∑ j, MvPolynomial.C (A i j) * MvPolynomial.X j def rationalLinearSubstitution {I J : Type*} [Fintype J] (A : I → J → ℚ) : MvPolynomial I ℚ →ₐ[ℚ] MvPolynomial J ℚ := MvPolynomial.aeval (rationalLinearParametrization A) def rationalLinearPoint {I J : Type*} [Fintype J] (A : I → J → ℚ) (z : J → ℚ) (i : I) : ℚ := ∑ j, A i j * z j def eval_rationalLinearParametrization {I J : Type*} [Fintype J] (A : I → J → ℚ) (z : J → ℚ) (i : I) : MvPolynomial.eval z (rationalLinearParametrization A i) = rationalLinearPoint A z i := by simp [rationalLinearParametrization, rationalLinearPoint] def eval_rationalLinearSubstitution {I J : Type*} [Fintype J] (A : I → J → ℚ) (z : J → ℚ) (P : MvPolynomial I ℚ) : MvPolynomial.eval z (rationalLinearSubstitution A P) = MvPolynomial.eval (rationalLinearPoint A z) P := by induction P using MvPolynomial.induction_on with | C a => simp [rationalLinearSubstitution] | add P Q hP hQ => simp only [map_add, hP, hQ] | mul_X P i hP => simp only [rationalLinearSubstitution] at hP simp only [map_mul, rationalLinearSubstitution, MvPolynomial.aeval_X, hP, eval_rationalLinearParametrization, MvPolynomial.eval_X] def pderiv_rationalLinearParametrization {I J : Type*} [Fintype J] (A : I → J → ℚ) (i : I) (j : J) : MvPolynomial.pderiv j (rationalLinearParametrization A i) = MvPolynomial.C (A i j) := by classical simp [rationalLinearParametrization, MvPolynomial.pderiv_X, Pi.single_apply] def pderiv_rationalLinearSubstitution {I J : Type*} [Fintype I] [Fintype J] (A : I → J → ℚ) (j : J) (P : MvPolynomial I ℚ) : MvPolynomial.pderiv j (rationalLinearSubstitution A P) = ∑ i, MvPolynomial.C (A i j) * rationalLinearSubstitution A (MvPolynomial.pderiv i P) := by rw [rationalLinearSubstitution, pderiv_aeval_eq_sum_pderiv] simp only [pderiv_rationalLinearParametrization] def wordPDeriv_C_mul {I : Type*} (s : List I) (c : ℚ) (P : MvPolynomial I ℚ) : wordPDeriv s (MvPolynomial.C c * P) = MvPolynomial.C c * wordPDeriv s P := by simpa only [MvPolynomial.smul_eq_C_mul] using (wordPDeriv s).map_smul c P def eval_dividedWordPDeriv_ne_zero_iff {I : Type*} [Fintype I] [DecidableEq I] (z : I → ℚ) (s : List I) (P : MvPolynomial I ℚ) : MvPolynomial.eval z (dividedWordPDeriv s P) ≠ 0 ↔ MvPolynomial.eval z (wordPDeriv s P) ≠ 0 := by change MvPolynomial.eval z ((wordDerivativeFactorial s)⁻¹ • wordPDeriv s P) ≠ 0 ↔ _ simp only [MvPolynomial.smul_eq_C_mul, map_mul, MvPolynomial.eval_C] exact mul_ne_zero_iff.trans (and_iff_right (inv_ne_zero (wordDerivativeFactorial_ne_zero s))) /-- A nonzero parameter derivative contains an actual source coordinate derivative with the identical sequence of block labels. -/ def rationalLinearSubstitution_wordPDeriv_detection {I J H : Type*} [Fintype I] [Fintype J] (A : I → J → ℚ) (qI : I → H) (qJ : J → H) (hA : ∀ i j, A i j ≠ 0 → qI i = qJ j) (z : J → ℚ) (s : List J) (P : MvPolynomial I ℚ) (hne : MvPolynomial.eval z (wordPDeriv s (rationalLinearSubstitution A P)) ≠ 0) : ∃ t : List I, t.map qI = s.map qJ ∧ MvPolynomial.eval (rationalLinearPoint A z) (wordPDeriv t P) ≠ 0 := by classical induction s using List.reverseRecOn generalizing P with | nil => exact ⟨[], rfl, by simpa [wordPDeriv_nil, eval_rationalLinearSubstitution] using hne⟩ | append_singleton s j ih => simp only [wordPDeriv_append, wordPDeriv_cons, wordPDeriv_nil, pderiv_rationalLinearSubstitution, map_sum, wordPDeriv_C_mul, map_mul, MvPolynomial.eval_C] at hne obtain ⟨i, _, hi⟩ := Finset.exists_ne_zero_of_sum_ne_zero hne obtain ⟨t, ht, hnonzero⟩ := ih (MvPolynomial.pderiv i P) (right_ne_zero_of_mul hi) refine ⟨t ++ [i], ?_, ?_⟩ · simp only [List.map_append, List.map_cons, List.map_nil, ht, hA i j (left_ne_zero_of_mul hi)] · simpa only [wordPDeriv_append, wordPDeriv_cons, wordPDeriv_nil] using hnonzero def rationalLinearSubstitution_dividedWordPDeriv_detection {I J H : Type*} [Fintype I] [Fintype J] [DecidableEq I] [DecidableEq J] (A : I → J → ℚ) (qI : I → H) (qJ : J → H) (hA : ∀ i j, A i j ≠ 0 → qI i = qJ j) (z : J → ℚ) (s : List J) (P : MvPolynomial I ℚ) (hne : MvPolynomial.eval z (dividedWordPDeriv s (rationalLinearSubstitution A P)) ≠ 0) : ∃ t : List I, t.map qI = s.map qJ ∧ MvPolynomial.eval (rationalLinearPoint A z) (dividedWordPDeriv t P) ≠ 0 := by obtain ⟨t, ht, hne'⟩ := rationalLinearSubstitution_wordPDeriv_detection A qI qJ hA z s P ((eval_dividedWordPDeriv_ne_zero_iff z s _).mp hne) exact ⟨t, ht, (eval_dividedWordPDeriv_ne_zero_iff _ t P).mpr hne'⟩ def linearParametrization_wordPDeriv_rename {I J : Type*} (f : I → J) (hf : Function.Injective f) (s : List I) (P : MvPolynomial I ℚ) : wordPDeriv (s.map f) (MvPolynomial.rename f P) = MvPolynomial.rename f (wordPDeriv s P) := by induction s with | nil => rfl | cons i s ih => simp only [List.map_cons, wordPDeriv_cons, ih, MvPolynomial.pderiv_rename hf] /-- The checked finite grid theorem, transported to any finite variable type. -/ def exists_fintype_bounded_grid_dividedWordPDeriv_ne_zero {J : Type*} [Fintype J] [DecidableEq J] (P : MvPolynomial J ℚ) (hP : P ≠ 0) (B : ℕ) (hB : 0 < B) : ∃ (z : J → ℕ) (s : List J), (∀ j, z j ≤ B) ∧ (∀ j, s.count j ≤ P.degreeOf j / B) ∧ MvPolynomial.eval (fun j => (z j : ℚ)) (dividedWordPDeriv s P) ≠ 0 := by classical let e := Fintype.equivFin J let Q := MvPolynomial.rename e P have hQ : Q ≠ 0 := by intro hh apply hP apply MvPolynomial.rename_injective e e.injective simpa only [map_zero] using hh obtain ⟨z, s, hz, hs, hne⟩ := exists_bounded_grid_dividedWordPDeriv_ne_zero _ Q hQ B hB refine ⟨fun j => z (e j), s.map e.symm, fun j => hz (e j), ?_, ?_⟩ · intro j have hc : (s.map e.symm).count j = s.count (e j) := by simpa only [Equiv.symm_apply_apply] using List.count_map_of_injective s e.symm e.symm.injective (e j) rw [hc] simpa only [Q, MvPolynomial.degreeOf_rename_of_injective e.injective] using hs (e j) · apply (eval_dividedWordPDeriv_ne_zero_iff _ _ _).mpr have hne' := (eval_dividedWordPDeriv_ne_zero_iff _ _ _).mp hne have hback : MvPolynomial.rename e.symm Q = P := by simp [Q, MvPolynomial.rename_rename] rw [← hback, linearParametrization_wordPDeriv_rename e.symm e.symm.injective] simpa only [MvPolynomial.eval_rename, Function.comp_def, Equiv.apply_symm_apply] using hne' def sum_count_mul_eq_sum_map {J : Type*} [Fintype J] [DecidableEq J] (s : List J) (w : J → ℝ) : (∑ j, (s.count j : ℝ) * w j) = (s.map w).sum := by classical induction s with | nil => simp | cons a s ih => have hc (j : J) : ((a :: s).count j : ℝ) = (if j = a then 1 else 0) + (s.count j : ℝ) := by by_cases hj : j = a · subst j; simp; ring · simp [hj, Ne.symm hj] simp only [hc, add_mul, Finset.sum_add_distrib, ih, List.map_cons, List.sum_cons] simp def sum_count_div_eq_of_map_eq {I J H : Type*} [Fintype I] [Fintype J] [DecidableEq I] [DecidableEq J] (qI : I → H) (qJ : J → H) (r : H → ℕ) (t : List I) (s : List J) (ht : t.map qI = s.map qJ) : (∑ i, (t.count i : ℝ) / r (qI i)) = ∑ j, (s.count j : ℝ) / r (qJ j) := by simp only [div_eq_mul_inv] rw [sum_count_mul_eq_sum_map, sum_count_mul_eq_sum_map] have hh := congrArg (fun l : List H => (l.map (fun h => ((r h : ℝ)⁻¹))).sum) ht simpa only [List.map_map, Function.comp_def] using hh /-- A nonzero polynomial on a linear parametrization has a nonzero actual coordinate divided derivative at a bounded parameter grid point. The extra weight is bounded by the sum of the parameter degrees divided by the grid size and the corresponding block degree. -/ def exists_linearParametrization_bounded_grid_derivative {I J H : Type*} [Fintype I] [Fintype J] [DecidableEq I] [DecidableEq J] (A : I → J → ℚ) (qI : I → H) (qJ : J → H) (hA : ∀ i j, A i j ≠ 0 → qI i = qJ j) (r : H → ℕ) (P : MvPolynomial I ℚ) (hP : rationalLinearSubstitution A P ≠ 0) (B : ℕ) (hB : 0 < B) : ∃ (z : J → ℕ) (t : List I), (∀ j, z j ≤ B) ∧ MvPolynomial.eval (rationalLinearPoint A (fun j => (z j : ℚ))) (dividedWordPDeriv t P) ≠ 0 ∧ (∑ i, (t.count i : ℝ) / r (qI i)) ≤ ∑ j, ((rationalLinearSubstitution A P).degreeOf j : ℝ) / ((B : ℝ) * r (qJ j)) := by obtain ⟨z, s, hz, hs, hne⟩ := exists_fintype_bounded_grid_dividedWordPDeriv_ne_zero _ hP B hB obtain ⟨t, ht, hnonzero⟩ := rationalLinearSubstitution_dividedWordPDeriv_detection A qI qJ hA _ s P hne refine ⟨z, t, hz, hnonzero, ?_⟩ rw [sum_count_div_eq_of_map_eq qI qJ r t s ht] apply Finset.sum_le_sum intro j _ have hc : (s.count j : ℝ) ≤ (rationalLinearSubstitution A P).degreeOf j / (B : ℝ) := (show (s.count j : ℝ) ≤ ((rationalLinearSubstitution A P).degreeOf j / B : ℕ) by exact_mod_cast hs j).trans Nat.cast_div_le calc _ ≤ (((rationalLinearSubstitution A P).degreeOf j : ℝ) / B) / r (qJ j) := div_le_div_of_nonneg_right hc (Nat.cast_nonneg _) _ = _ := div_div _ _ _ def blockDerivativeWeight_eq_sum_count_div {m d : ℕ} (r : Fin m → ℕ) (s : List (Fin m × Fin d)) : blockDerivativeWeight r s = ∑ i : Fin m × Fin d, (s.count i : ℝ) / r i.1 := by simp only [blockDerivativeWeight, derivativeBlockCount, wordDerivativeCounts_apply, Nat.cast_sum, Finset.sum_div, Fintype.sum_prod_type, List.count_eq_countP, Bool.beq_eq_decide_eq] def exists_blockLinearParametrization_bounded_grid_derivative {m d e : ℕ} (A : (Fin m × Fin d) → (Fin m × Fin e) → ℚ) (hA : ∀ i j, A i j ≠ 0 → i.1 = j.1) (r : Fin m → ℕ) (hr : ∀ h, 0 < r h) (P : MvPolynomial (Fin m × Fin d) ℚ) (hP : rationalLinearSubstitution A P ≠ 0) (hdeg : ∀ j, (rationalLinearSubstitution A P).degreeOf j ≤ r j.1) (B : ℕ) (hB : 0 < B) : ∃ (z : (Fin m × Fin e) → ℕ) (t : List (Fin m × Fin d)), (∀ j, z j ≤ B) ∧ MvPolynomial.eval (rationalLinearPoint A (fun j => (z j : ℚ))) (dividedWordPDeriv t P) ≠ 0 ∧ blockDerivativeWeight r t ≤ (m : ℝ) * e / B := by obtain ⟨z, t, hz, hne, hweight⟩ := exists_linearParametrization_bounded_grid_derivative A Prod.fst Prod.fst hA r P hP B hB refine ⟨z, t, hz, hne, ?_⟩ rw [blockDerivativeWeight_eq_sum_count_div] simp only [List.count_eq_countP, Bool.beq_eq_decide_eq] at hweight ⊢ apply hweight.trans calc _ ≤ ∑ _j : Fin m × Fin e, (1 : ℝ) / B := by apply Finset.sum_le_sum intro j _ have hrj : (0 : ℝ) < r j.1 := by exact_mod_cast hr j.1 have hBr : (0 : ℝ) < B := by exact_mod_cast hB calc _ ≤ (r j.1 : ℝ) / ((B : ℝ) * r j.1) := div_le_div_of_nonneg_right (by exact_mod_cast hdeg j) (le_of_lt (mul_pos hBr hrj)) _ = _ := by field_simp _ = _ := by simp [Fintype.card_prod, Nat.cast_mul, div_eq_mul_inv, mul_assoc] /-- Composing divided coordinate derivatives changes the concatenated divided derivative only by a nonzero rational factor, hence preserves evaluated nonvanishing. -/ def eval_dividedWordPDeriv_comp_ne_zero_iff {I : Type*} [Fintype I] [DecidableEq I] (z : I → ℚ) (t s : List I) (P : MvPolynomial I ℚ) : MvPolynomial.eval z (dividedWordPDeriv t (dividedWordPDeriv s P)) ≠ 0 ↔ MvPolynomial.eval z (dividedWordPDeriv (t ++ s) P) ≠ 0 := by rw [eval_dividedWordPDeriv_ne_zero_iff, eval_dividedWordPDeriv_ne_zero_iff, wordPDeriv_append] change MvPolynomial.eval z (wordPDeriv t ((wordDerivativeFactorial s)⁻¹ • wordPDeriv s P)) ≠ 0 ↔ _ rw [map_smul, MvPolynomial.smul_eq_C_mul, map_mul, MvPolynomial.eval_C] exact mul_ne_zero_iff.trans (and_iff_right (inv_ne_zero (wordDerivativeFactorial_ne_zero s))) def blockDerivativeWeight_append {m d : ℕ} (r : Fin m → ℕ) (t s : List (Fin m × Fin d)) : blockDerivativeWeight r (t ++ s) = blockDerivativeWeight r t + blockDerivativeWeight r s := by simp only [blockDerivativeWeight_eq_sum_count_div, List.count_append, Nat.cast_add, add_div, Finset.sum_add_distrib] end end Bounty end SubmissionComponent_LinearParametrizationGridDerivative /- Component SpanningGridDerivative; SHA256 73ab8f53bac50f59990a474549f20588fd8431f313816c3ee4affd26f2a91b01 -/ section SubmissionComponent_SpanningGridDerivative /- A bounded integer combination of spanning hyperplane vectors detects an actual divided coordinate derivative, with its full normalized weight bounded by the Roth index estimate plus the explicit grid loss. -/ namespace Bounty noncomputable section open scoped BigOperators def weightedHomogeneous_aeval_between {I J : Type*} (w : I → ℕ) (v : J → ℕ) (g : I → MvPolynomial J ℚ) (hg : ∀ i, MvPolynomial.IsWeightedHomogeneous v (g i) (w i)) (P : MvPolynomial I ℚ) (n : ℕ) (hP : MvPolynomial.IsWeightedHomogeneous w P n) : MvPolynomial.IsWeightedHomogeneous v (MvPolynomial.aeval g P) n := by classical nth_rw 1 [MvPolynomial.as_sum P] rw [map_sum] apply MvPolynomial.IsWeightedHomogeneous.sum intro a ha rw [MvPolynomial.aeval_monomial] change MvPolynomial.IsWeightedHomogeneous v (MvPolynomial.C (MvPolynomial.coeff a P) * a.prod (fun i b => g i ^ b)) n have hprod := MvPolynomial.IsWeightedHomogeneous.prod a.support (fun i => g i ^ a i) (fun i => a i • w i) (fun i _ => (hg i).pow (a i)) have hsum : ∑ i ∈ a.support, a i • w i = n := hP (MvPolynomial.mem_support_iff.mp ha) rw [hsum] at hprod exact hprod.C_mul _ def productBlockHomogeneous_integer_map {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℤ) (hP : ProductBlockHomogeneous r P) : ProductBlockHomogeneous r (MvPolynomial.map (Int.castRingHom ℚ) P) := by intro a ha apply hP a rw [MvPolynomial.mem_support_iff] at ha ⊢ intro hz exact ha (by simp [MvPolynomial.coeff_map, hz]) def productBlockHomogeneous_dividedWordPDeriv {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℚ) (hP : ProductBlockHomogeneous r P) (s : List (Fin m × Fin d)) : ProductBlockHomogeneous (fun h => r h - derivativeBlockCount s h) (dividedWordPDeriv s P) := by intro a ha h have hc := MvPolynomial.mem_support_iff.mp ha rw [coeff_dividedWordPDeriv] at hc have hh := hP (a + wordDerivativeCounts s) (MvPolynomial.mem_support_iff.mpr (left_ne_zero_of_mul hc)) h simp only [Finsupp.add_apply, Finset.sum_add_distrib] at hh change (∑ i, a (h, i)) + derivativeBlockCount s h = r h at hh change (∑ i, a (h, i)) = r h - derivativeBlockCount s h omega def blockSpanningSubstitution_homogeneous {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℚ) (hP : ProductBlockHomogeneous r P) : ProductBlockHomogeneous r (blockSpanningSubstitution y P) := by apply (productBlockHomogeneous_iff_weighted r _).mpr intro h apply weightedHomogeneous_aeval_between (productBlockWeight h) (productBlockWeight h) · intro x apply MvPolynomial.IsWeightedHomogeneous.sum intro j _ exact (MvPolynomial.isWeightedHomogeneous_X ℚ (productBlockWeight h) (x.1, j)).C_mul _ · exact (productBlockHomogeneous_iff_weighted r P).mp hP h def productBlockHomogeneous_degreeOf_le {m d : ℕ} (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℚ) (hP : ProductBlockHomogeneous r P) (x : Fin m × Fin d) : P.degreeOf x ≤ r x.1 := by apply MvPolynomial.degreeOf_le_iff.mpr intro a ha exact (Finset.single_le_sum (fun i _ => Nat.zero_le (a (x.1, i))) (Finset.mem_univ x.2)).trans_eq (hP a ha x.1) def blockSpanningSubstitution_dividedWordPDeriv_degreeOf_le {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) (r : Fin m → ℕ) (P : MvPolynomial (Fin m × Fin d) ℚ) (hP : ProductBlockHomogeneous r P) (s : List (Fin m × Fin d)) (x : Fin m × Fin k) : (blockSpanningSubstitution y (dividedWordPDeriv s P)).degreeOf x ≤ r x.1 := by exact (productBlockHomogeneous_degreeOf_le _ _ (blockSpanningSubstitution_homogeneous y _ _ (productBlockHomogeneous_dividedWordPDeriv r P hP s)) x).trans (Nat.sub_le _ _) def blockSpanningMatrix {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) (x : Fin m × Fin d) (z : Fin m × Fin k) : ℚ := if x.1 = z.1 then y x.1 z.2 x.2 else 0 def blockSpanningMatrix_block {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) (x : Fin m × Fin d) (z : Fin m × Fin k) (h : blockSpanningMatrix y x z ≠ 0) : x.1 = z.1 := by by_contra hh exact h (if_neg hh) def rationalLinearSubstitution_blockSpanningMatrix {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) (P : MvPolynomial (Fin m × Fin d) ℚ) : rationalLinearSubstitution (blockSpanningMatrix y) P = blockSpanningSubstitution y P := by have hg (x : Fin m × Fin d) : rationalLinearParametrization (blockSpanningMatrix y) x = ∑ j, MvPolynomial.C (y x.1 j x.2) * MvPolynomial.X (x.1, j) := by classical simp only [rationalLinearParametrization, blockSpanningMatrix, Fintype.sum_prod_type] simp_rw [apply_ite MvPolynomial.C, map_zero, ite_mul, zero_mul] simp exact congrArg (fun g : (Fin m × Fin d) → MvPolynomial (Fin m × Fin k) ℚ => MvPolynomial.aeval g P) (funext hg) def blockSpanningPoint {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) (z : Fin m → Fin k → ℕ) (x : Fin m × Fin d) : ℚ := ∑ j, (z x.1 j : ℚ) * y x.1 j x.2 def rationalLinearPoint_blockSpanningMatrix {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℚ) (z : (Fin m × Fin k) → ℕ) : rationalLinearPoint (blockSpanningMatrix y) (fun x => (z x : ℚ)) = blockSpanningPoint y (fun h j => z (h, j)) := by classical funext x simp [rationalLinearPoint, blockSpanningMatrix, Fintype.sum_prod_type, blockSpanningPoint, mul_comm] def product_hyperplane_bounded_grid_derivative {n d k : ℕ} (hd : 1 ≤ d) (b : Fin (n + 1) → Fin (d + 1) → ℚ) (p : Fin (n + 1) → Fin (d + 1)) (hp : ∀ h, b h (p h) ≠ 0) (r : Fin (n + 1) → ℕ) (hr : ∀ h, 0 < r h) (y : Fin (n + 1) → Fin k → Fin (d + 1) → ℚ) (hy : ∀ h, Submodule.span ℚ (Set.range (y h)) = rationalHyperplaneKernel (b h)) (P : MvPolynomial (Fin (n + 1) × Fin (d + 1)) ℤ) (hP : P ≠ 0) (hhom : ProductBlockHomogeneous r P) (η : ℝ) (hη : 0 < η) (hηhalf : η ≤ 1 / 2) (hstep : ∀ i : Fin n, (r i.succ : ℝ) ≤ η ^ (2 ^ n) * r i.castSucc) (hheight : ∀ h, Real.log (polynomialCoeffL1 P) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r h : ℝ) * (Height.logHeight (b h) / d))) (B : ℕ) (hB : 0 < B) : ∃ (z : Fin (n + 1) → Fin k → ℕ) (t : List (Fin (n + 1) × Fin (d + 1))), (∀ h j, z h j ≤ B) ∧ MvPolynomial.eval (blockSpanningPoint y z) (dividedWordPDeriv t (MvPolynomial.map (Int.castRingHom ℚ) P)) ≠ 0 ∧ blockDerivativeWeight r t ≤ 2 * (n + 1 : ℕ) * η + (n + 1 : ℕ) * k / (B : ℝ) := by obtain ⟨s, hs, hne⟩ := product_hyperplane_derivative_spanning hd b p hp r hr y hy P hP hhom η hη hηhalf hstep hheight let Q := MvPolynomial.map (Int.castRingHom ℚ) P have hQ : ProductBlockHomogeneous r Q := productBlockHomogeneous_integer_map r P hhom have hparam : rationalLinearSubstitution (blockSpanningMatrix y) (dividedWordPDeriv s Q) ≠ 0 := by simpa only [rationalLinearSubstitution_blockSpanningMatrix] using hne have hdeg (x : Fin (n + 1) × Fin k) : (rationalLinearSubstitution (blockSpanningMatrix y) (dividedWordPDeriv s Q)).degreeOf x ≤ r x.1 := by rw [rationalLinearSubstitution_blockSpanningMatrix] exact blockSpanningSubstitution_dividedWordPDeriv_degreeOf_le y r Q hQ s x obtain ⟨z, t, hz, htne, htweight⟩ := exists_blockLinearParametrization_bounded_grid_derivative (blockSpanningMatrix y) (blockSpanningMatrix_block y) r hr (dividedWordPDeriv s Q) hparam hdeg B hB refine ⟨fun h j => z (h, j), t ++ s, fun h j => hz (h, j), ?_, ?_⟩ · rw [rationalLinearPoint_blockSpanningMatrix] at htne exact (eval_dividedWordPDeriv_comp_ne_zero_iff _ t s Q).mp htne · rw [blockDerivativeWeight_append] linarith end end Bounty end SubmissionComponent_SpanningGridDerivative /- Component IntegerHyperplaneGrid; SHA256 430330693af6be165db67f46f58fc3782a6bdd1d398c69535b478fd895db86de -/ section SubmissionComponent_IntegerHyperplaneGrid /- Integer grid points, actual nonzero integer evaluations, and archimedean and finite-place bounds for their rational linear forms. -/ namespace Bounty noncomputable section open scoped BigOperators def integerLinearCombination {d k : ℕ} (y : Fin k → Fin d → ℤ) (z : Fin k → ℕ) (i : Fin d) : ℤ := ∑ j, (z j : ℤ) * y j i def integerBlockSpanningPoint {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℤ) (z : Fin m → Fin k → ℕ) (x : Fin m × Fin d) : ℤ := integerLinearCombination (y x.1) (z x.1) x.2 def integerBlockSpanningPoint_cast {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℤ) (z : Fin m → Fin k → ℕ) : (fun x => (integerBlockSpanningPoint y z x : ℚ)) = blockSpanningPoint (fun h j i => (y h j i : ℚ)) z := by funext x simp [integerBlockSpanningPoint, integerLinearCombination, blockSpanningPoint] def integer_eval_map_cast {I : Type*} (T : MvPolynomial I ℤ) (x : I → ℤ) : MvPolynomial.eval (fun i => (x i : ℚ)) (MvPolynomial.map (Int.castRingHom ℚ) T) = (MvPolynomial.eval x T : ℚ) := by simpa only [Int.coe_castRingHom, Function.comp_def] using (MvPolynomial.map_eval (Int.castRingHom ℚ) x T).symm def integer_grid_derivative_eval_ne_zero {m d k : ℕ} (y : Fin m → Fin k → Fin d → ℤ) (z : Fin m → Fin k → ℕ) (P T : MvPolynomial (Fin m × Fin d) ℤ) (s : List (Fin m × Fin d)) (hT : MvPolynomial.map (Int.castRingHom ℚ) T = dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P)) (hne : MvPolynomial.eval (blockSpanningPoint (fun h j i => (y h j i : ℚ)) z) (dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P)) ≠ 0) : MvPolynomial.eval (integerBlockSpanningPoint y z) T ≠ 0 := by rw [← hT, ← integerBlockSpanningPoint_cast, integer_eval_map_cast] at hne exact_mod_cast hne def integerLinearCombination_linear_form {d k : ℕ} (a : Fin d → ℚ) (y : Fin k → Fin d → ℤ) (z : Fin k → ℕ) : (∑ i, a i * (integerLinearCombination y z i : ℚ)) = ∑ j, (z j : ℚ) * (∑ i, a i * (y j i : ℚ)) := by simp only [integerLinearCombination, Int.cast_sum, Int.cast_mul, Int.cast_natCast, Finset.mul_sum] rw [Finset.sum_comm] apply Finset.sum_congr rfl intro j _ apply Finset.sum_congr rfl intro i _ ring def rational_nat_combination_arch_bound {k : ℕ} (f : Fin k → ℚ) (z : Fin k → ℕ) (B : ℕ) (hz : ∀ j, z j ≤ B) (M : ℝ) (hf : ∀ j, |(f j : ℝ)| ≤ M) : |((∑ j, (z j : ℚ) * f j : ℚ) : ℝ)| ≤ (k : ℝ) * B * M := by simp only [Rat.cast_sum, Rat.cast_mul, Rat.cast_natCast] calc _ ≤ ∑ j, |(z j : ℝ) * (f j : ℝ)| := Finset.abs_sum_le_sum_abs _ _ _ ≤ ∑ _j : Fin k, (B : ℝ) * M := by apply Finset.sum_le_sum intro j _ rw [abs_mul, abs_of_nonneg (Nat.cast_nonneg _)] exact mul_le_mul (by exact_mod_cast hz j) (hf j) (abs_nonneg _) (Nat.cast_nonneg _) _ = _ := by simp [mul_assoc] def padicNorm_real_sum_le {J : Type*} (p : ℕ) [Fact p.Prime] (S : Finset J) (f : J → ℚ) (M : ℝ) (hM : 0 ≤ M) (hf : ∀ j ∈ S, (padicNorm p (f j) : ℝ) ≤ M) : (padicNorm p (∑ j ∈ S, f j) : ℝ) ≤ M := by classical induction S using Finset.induction_on with | empty => simpa using hM | @insert a S ha ih => rw [Finset.sum_insert ha] have hh : (padicNorm p (f a + ∑ j ∈ S, f j) : ℝ) ≤ max (padicNorm p (f a) : ℝ) (padicNorm p (∑ j ∈ S, f j) : ℝ) := by exact_mod_cast (padicNorm.nonarchimedean (p := p) (q := f a) (r := ∑ j ∈ S, f j)) exact hh.trans (max_le (hf a (Finset.mem_insert_self _ _)) (ih (fun j hj => hf j (Finset.mem_insert_of_mem hj)))) /-- Integer coefficients cause no enlargement at any prime, including 2 and 3. -/ def rational_integer_combination_padic_bound {J : Type*} [Fintype J] (p : ℕ) [Fact p.Prime] (f : J → ℚ) (z : J → ℤ) (M : ℝ) (hM : 0 ≤ M) (hf : ∀ j, (padicNorm p (f j) : ℝ) ≤ M) : (padicNorm p (∑ j, (z j : ℚ) * f j) : ℝ) ≤ M := by apply padicNorm_real_sum_le p Finset.univ _ M hM intro j _ rw [padicNorm.mul, Rat.cast_mul] have hz : (padicNorm p (z j : ℚ) : ℝ) ≤ 1 := by exact_mod_cast padicNorm.of_int (p := p) (z j) have hn : (0 : ℝ) ≤ padicNorm p (f j) := by exact_mod_cast padicNorm.nonneg (p := p) (f j) exact (mul_le_mul_of_nonneg_right hz hn).trans (by simpa using hf j) def integerLinearCombination_arch_bound {d k : ℕ} (a : Fin d → ℚ) (y : Fin k → Fin d → ℤ) (z : Fin k → ℕ) (B : ℕ) (hz : ∀ j, z j ≤ B) (E : ℝ) (hy : ∀ j, |((∑ i, a i * (y j i : ℚ) : ℚ) : ℝ)| ≤ Real.exp E) : |((∑ i, a i * (integerLinearCombination y z i : ℚ) : ℚ) : ℝ)| ≤ (k : ℝ) * B * Real.exp E := by rw [integerLinearCombination_linear_form] exact rational_nat_combination_arch_bound _ z B hz _ hy def integerLinearCombination_padic_bound {d k : ℕ} (p : ℕ) [Fact p.Prime] (a : Fin d → ℚ) (y : Fin k → Fin d → ℤ) (z : Fin k → ℕ) (E : ℝ) (hy : ∀ j, (padicNorm p (∑ i, a i * (y j i : ℚ)) : ℝ) ≤ Real.exp E) : (padicNorm p (∑ i, a i * (integerLinearCombination y z i : ℚ)) : ℝ) ≤ Real.exp E := by rw [integerLinearCombination_linear_form] simpa only [Int.cast_natCast] using rational_integer_combination_padic_bound p (fun j => ∑ i, a i * (y j i : ℚ)) (fun j => (z j : ℤ)) _ (Real.exp_pos _).le hy def integerBlockSpanningPoint_arch_bound {m d k : ℕ} (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (y : Fin m → Fin k → Fin d → ℤ) (z : Fin m → Fin k → ℕ) (B : ℕ) (hz : ∀ h j, z h j ≤ B) (c : Fin d → ℝ) (q : Fin m → ℝ) (hy : ∀ h j i, |((∑ a, A h i a * (y h j a : ℚ) : ℚ) : ℝ)| ≤ Real.exp (c i * q h)) : ∀ h i, |((∑ a, A h i a * (integerBlockSpanningPoint y z (h, a) : ℚ) : ℚ) : ℝ)| ≤ (k : ℝ) * B * Real.exp (c i * q h) := by intro h i exact integerLinearCombination_arch_bound (A h i) (y h) (z h) B (hz h) _ (fun j => hy h j i) def integerBlockSpanningPoint_padic_bound {m d k : ℕ} (p : ℕ) [Fact p.Prime] (A : Fin m → Matrix (Fin d) (Fin d) ℚ) (y : Fin m → Fin k → Fin d → ℤ) (z : Fin m → Fin k → ℕ) (c : Fin d → ℝ) (q : Fin m → ℝ) (hy : ∀ h j i, (padicNorm p (∑ a, A h i a * (y h j a : ℚ)) : ℝ) ≤ Real.exp (c i * q h)) : ∀ h i, (padicNorm p (∑ a, A h i a * (integerBlockSpanningPoint y z (h, a) : ℚ)) : ℝ) ≤ Real.exp (c i * q h) := by intro h i exact integerLinearCombination_padic_bound p (A h i) (y h) (z h) _ (fun j => hy h j i) def product_hyperplane_integer_grid_derivative {n d k : ℕ} (hd : 1 ≤ d) (b : Fin (n + 1) → Fin (d + 1) → ℚ) (p : Fin (n + 1) → Fin (d + 1)) (hp : ∀ h, b h (p h) ≠ 0) (r : Fin (n + 1) → ℕ) (hr : ∀ h, 0 < r h) (y : Fin (n + 1) → Fin k → Fin (d + 1) → ℤ) (hy : ∀ h, Submodule.span ℚ (Set.range (fun j i => (y h j i : ℚ))) = rationalHyperplaneKernel (b h)) (P : MvPolynomial (Fin (n + 1) × Fin (d + 1)) ℤ) (hP : P ≠ 0) (hhom : ProductBlockHomogeneous r P) (η : ℝ) (hη : 0 < η) (hηhalf : η ≤ 1 / 2) (hstep : ∀ i : Fin n, (r i.succ : ℝ) ≤ η ^ (2 ^ n) * r i.castSucc) (hheight : ∀ h, Real.log (polynomialCoeffL1 P) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ η ^ (2 ^ n) * ((r h : ℝ) * (Height.logHeight (b h) / d))) (B : ℕ) (hB : 0 < B) : ∃ (z : Fin (n + 1) → Fin k → ℕ) (s : List (Fin (n + 1) × Fin (d + 1))) (T : MvPolynomial (Fin (n + 1) × Fin (d + 1)) ℤ), (∀ h j, z h j ≤ B) ∧ MvPolynomial.map (Int.castRingHom ℚ) T = dividedWordPDeriv s (MvPolynomial.map (Int.castRingHom ℚ) P) ∧ MvPolynomial.eval (integerBlockSpanningPoint y z) T ≠ 0 ∧ blockDerivativeWeight r s ≤ 2 * (n + 1 : ℕ) * η + (n + 1 : ℕ) * k / (B : ℝ) := by obtain ⟨z, s, hz, hne, hweight⟩ := product_hyperplane_bounded_grid_derivative hd b p hp r hr (fun h j i => (y h j i : ℚ)) hy P hP hhom η hη hηhalf hstep hheight B hB obtain ⟨T, hT⟩ := exists_integer_dividedWordPDeriv s P exact ⟨z, s, T, hz, hT, integer_grid_derivative_eval_ne_zero y z P T s hT hne, hweight⟩ end end Bounty end SubmissionComponent_IntegerHyperplaneGrid /- Component FiniteHyperplaneConfiguration; SHA256 5e56536ce4fa0c1765c5563b36db58022982373f82554ceed54e89e68b55238a -/ section SubmissionComponent_FiniteHyperplaneConfiguration /- A concrete finite hyperplane configuration is excluded by the polynomial argument. -/ namespace Bounty noncomputable section open scoped BigOperators def exists_finite_hyperplane_configuration_constants {n d : ℕ} (hd : 1 ≤ d) (A : Fin (n + 1) → Matrix (Fin (d + 1)) (Fin (d + 1)) ℚ) (hA : ∀ h, IsUnit (A h).det) : ∃ K L : ℝ, 0 ≤ K ∧ 0 ≤ L ∧ ∀ (r : Fin (n + 1) → ℕ) (q : Fin (n + 1) → ℝ) (c : Fin 3 → Fin (d + 1) → ℝ) (D η ρ : ℝ) (B : ℕ), (∀ h, 0 < r h) → 0 < q 0 → 0 < D → 0 < ρ → 0 < η → η ≤ 1 / 2 → 0 < B → (d : ℝ) / B ≤ η / 2 → 8 * (d + 1 : ℕ) ≤ (n + 1 : ℕ) * η ^ 2 → (∀ i : Fin n, (r i.succ : ℝ) ≤ (η / 4) ^ (2 ^ n) * r i.castSucc) → (∀ h, |(r h : ℝ) * q h - D| ≤ q h) → (∑ v, ∑ i, c v i) ≤ -ρ → η ≤ ρ / (8 * (d + 1 : ℕ) * exponentCoefficientMass c) → (∑ h, (r h : ℝ)) ≤ 2 * D / q 0 → 8 * (d + 1 : ℕ) * (L + Real.log ((d : ℝ) * B)) ≤ (n + 1 : ℕ) * ρ * q 0 → 4 * (d + 1 : ℕ) * exponentCoefficientMass c * (∑ h, q h) ≤ (n + 1 : ℕ) * ρ * D → ∀ (b : Fin (n + 1) → Fin (d + 1) → ℚ) (p : Fin (n + 1) → Fin (d + 1)), (∀ h, b h (p h) ≠ 0) → (∀ h, K * (∑ j, (r j : ℝ)) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ (η / 4) ^ (2 ^ n) * ((r h : ℝ) * (Height.logHeight (b h) / d))) → ∀ y : Fin (n + 1) → Fin d → Fin (d + 1) → ℤ, (∀ h, Submodule.span ℚ (Set.range (fun j i => (y h j i : ℚ))) = rationalHyperplaneKernel (b h)) → (∀ h j i, |((∑ a, A h i a * (y h j a : ℚ) : ℚ) : ℝ)| ≤ Real.exp (c 0 i * q h)) → (∀ h j i, (padicNorm 2 (y h j i : ℚ) : ℝ) ≤ Real.exp (c 1 i * q h)) → (∀ h j i, (padicNorm 3 (y h j i : ℚ) : ℝ) ≤ Real.exp (c 2 i * q h)) → False := by obtain ⟨K, L, hK, hL, haux⟩ := exists_two_basis_balanced_auxiliary (by omega : 0 < n + 1) (by omega : 0 < d + 1) A hA refine ⟨K, L, hK, hL, ?_⟩ intro r q c D η ρ B hr hq0 hD hρ hη hηhalf hB hgrid hlarge hstep hscale hc hηmass hR hqLarge hDLarge b p hp hheight y hy hyInf hy2 hy3 obtain ⟨P, hP, hhom, hheightP, hderiv⟩ := haux r hr η hη.le hlarge have hRothHeight (h : Fin (n + 1)) : Real.log (polynomialCoeffL1 P) + 4 * (n + 1 : ℕ) * (r 0 : ℝ) ≤ (η / 4) ^ (2 ^ n) * ((r h : ℝ) * (Height.logHeight (b h) / d)) := by linarith [hheight h] obtain ⟨z, t, T₀, hz, hT₀map, hT₀eval, ht⟩ := product_hyperplane_integer_grid_derivative hd b p hp r hr y hy P hP hhom (η / 4) (by positivity) (by linarith) hstep hRothHeight B hB have hsmall : blockDerivativeWeight r t ≤ (n + 1 : ℕ) * η := by have hh := mul_le_mul_of_nonneg_left hgrid (Nat.cast_nonneg (α := ℝ) (n + 1)) rw [← mul_div_assoc] at hh linarith have hT₀ : T₀ ≠ 0 := by intro hz; apply hT₀eval; simp [hz] have hdiv : dividedWordPDeriv t (MvPolynomial.map (Int.castRingHom ℚ) P) ≠ 0 := by rw [← hT₀map] exact integerMap_ne_zero hT₀ obtain ⟨T, hT, hTmap, hbounds⟩ := hderiv t hsmall hdiv have heq : T = T₀ := MvPolynomial.map_injective (Int.castRingHom ℚ) Int.cast_injective (hTmap.trans hT₀map.symm) subst T₀ let x := integerBlockSpanningPoint y z have hgridConst : 1 ≤ (d : ℝ) * B := by have hdR : (1 : ℝ) ≤ d := by exact_mod_cast hd have hBR : (1 : ℝ) ≤ B := by exact_mod_cast (show 1 ≤ B by omega) nlinarith have harch : ∀ h i, ‖blockMatrixValues A (fun hi => (x hi : ℚ)) (h, i)‖ ≤ ((d : ℝ) * B) * Real.exp (c 0 i * q h) := by intro h i have hh := integerBlockSpanningPoint_arch_bound A y z B hz (c 0) q hyInf h i simpa only [x, blockMatrixValues, Matrix.mulVec, dotProduct, ← Rat.norm_cast_real, Real.norm_eq_abs] using hh have hfinite (p' : ℕ) [Fact p'.Prime] (v : Fin 3) (hyv : ∀ h j i, (padicNorm p' (y h j i : ℚ) : ℝ) ≤ Real.exp (c v i * q h)) : ∀ h i, (padicNorm p' (x (h, i) : ℚ) : ℝ) ≤ Real.exp (c v i * q h) := by have hh := integerBlockSpanningPoint_padic_bound p' (fun _ => (1 : Matrix (Fin (d + 1)) (Fin (d + 1)) ℚ)) y z (c v) q (by simpa [Matrix.one_apply] using hyv) simpa [x, Matrix.one_apply] using hh exact inverse_block_three_place_polynomial_contradiction A hA T x hT₀eval r q c D η ρ L ((d : ℝ) * B) (q 0) (by omega) (by omega) hD hρ hL hgridConst hq0 hr hbounds.degreeInf hbounds.degreeInt hbounds.balanceInf hbounds.balanceInt hscale hbounds.heightInf harch (hfinite 2 1 hy2) (hfinite 3 2 hy3) hc hηmass hR hqLarge hDLarge end end Bounty end SubmissionComponent_FiniteHyperplaneConfiguration /- Component BalancedDegreeSelection; SHA256 c1ec687a7c050225cea4ca0f680c7546536ce2b49212da54986db0f5ea832647 -/ section SubmissionComponent_BalancedDegreeSelection /- Explicit floor choices for the block degrees in the polynomial contradiction. -/ namespace Bounty noncomputable section def balancedBlockDegree (D q : ℝ) : ℕ := ⌊D / q⌋₊ def balancedBlockDegree_bounds {D q : ℝ} (hq : 0 < q) (hD : 2 * q ≤ D) : 0 < balancedBlockDegree D q ∧ (balancedBlockDegree D q : ℝ) * q ≤ D ∧ D ≤ 2 * (balancedBlockDegree D q : ℝ) * q ∧ |(balancedBlockDegree D q : ℝ) * q - D| ≤ q := by have hDpos : 0 < D := by linarith have ht : 2 ≤ D / q := (le_div_iff₀ hq).mpr (by simpa using hD) have hlo := Nat.floor_le (div_nonneg hDpos.le hq.le) have hhi := Nat.lt_floor_add_one (D / q) have hpos : 0 < balancedBlockDegree D q := by change 0 < ⌊D / q⌋₊ by_contra hh have hz : ⌊D / q⌋₊ = 0 := by omega rw [hz] at hhi norm_num at hhi linarith change (balancedBlockDegree D q : ℝ) ≤ D / q at hlo change D / q < (balancedBlockDegree D q : ℝ) + 1 at hhi have hlomul := (le_div_iff₀ hq).mp hlo have hhimul := (div_lt_iff₀ hq).mp hhi refine ⟨hpos, hlomul, ?_, ?_⟩ · nlinarith · rw [abs_le] constructor <;> nlinarith def balancedBlockDegree_ratio {D q q' θ : ℝ} (hq : 0 < q) (hq' : 0 < q') (hD : 2 * q ≤ D) (hD' : 2 * q' ≤ D) (hθ : 0 ≤ θ) (hsep : 2 * q ≤ θ * q') : (balancedBlockDegree D q' : ℝ) ≤ θ * balancedBlockDegree D q := by have hb := balancedBlockDegree_bounds hq hD have hb' := balancedBlockDegree_bounds hq' hD' have hs := mul_le_mul_of_nonneg_left hsep (Nat.cast_nonneg (α := ℝ) (balancedBlockDegree D q)) apply (mul_le_mul_iff_left₀ hq').mp nlinarith def balancedBlockDegree_height_budget {D q q0 a θ H C : ℝ} (hq : 0 < q) (hq0 : 0 < q0) (hD : 2 * q ≤ D) (hD0 : 2 * q0 ≤ D) (ha : 0 ≤ a) (hθ : 0 ≤ θ) (hH : a * q ≤ H) (hbudget : 2 * C ≤ θ * a * q0) : C * (balancedBlockDegree D q0 : ℝ) ≤ θ * ((balancedBlockDegree D q : ℝ) * H) := by have hb := balancedBlockDegree_bounds hq hD have hb0 := balancedBlockDegree_bounds hq0 hD0 have hr : (0 : ℝ) ≤ balancedBlockDegree D q := Nat.cast_nonneg _ have hr0 : (0 : ℝ) ≤ balancedBlockDegree D q0 := Nat.cast_nonneg _ have h1 := mul_le_mul_of_nonneg_right hbudget hr0 have h2 := mul_le_mul_of_nonneg_left hb0.2.1 (mul_nonneg hθ ha) have h3 := mul_le_mul_of_nonneg_left hb.2.2.1 (mul_nonneg hθ ha) have h4 := mul_le_mul_of_nonneg_left hH (mul_nonneg hθ hr) nlinarith end end Bounty end SubmissionComponent_BalancedDegreeSelection /- Component AuxiliaryParameterSelection; SHA256 ebd95c4b38ec2be80494c73c506acd03a8f229eecf6fd958bcdbdf7d20a86859 -/ section SubmissionComponent_AuxiliaryParameterSelection /- Explicit finite parameter selection for the auxiliary polynomial argument. The common scale is chosen by a finite sum, not an asymptotic premise. -/ namespace Bounty noncomputable section open scoped BigOperators def exists_separated_logs_in_unbounded_set (S : Set ℝ) (hS : ¬ BddAbove S) (θ M : ℝ) (hθ : 0 < θ) (n : ℕ) : ∃ q : Fin (n + 1) → ℝ, (∀ i, q i ∈ S) ∧ (∀ i, 0 < q i) ∧ M ≤ q 0 ∧ ∀ i : Fin n, 2 * q i.castSucc ≤ θ * q i.succ := by classical choose pick hpick hgt using (not_bddAbove_iff.mp hS) let u : ℕ → ℝ := Nat.rec (pick (max M 1)) (fun _ v => pick (max 1 (2 * v / θ))) have hu0 : u 0 = pick (max M 1) := rfl have hus (j : ℕ) : u (j + 1) = pick (max 1 (2 * u j / θ)) := rfl have hmem (j : ℕ) : u j ∈ S := by cases j with | zero => rw [hu0]; exact hpick _ | succ j => rw [hus]; exact hpick _ have hpos (j : ℕ) : 0 < u j := by cases j with | zero => rw [hu0]; linarith [le_max_right M (1 : ℝ), hgt (max M 1)] | succ j => rw [hus]; linarith [le_max_left (1 : ℝ) (2 * u j / θ), hgt (max 1 (2 * u j / θ))] have hstep (j : ℕ) : 2 * u j ≤ θ * u (j + 1) := by have hh : 2 * u j / θ ≤ u (j + 1) := by rw [hus] exact (le_max_right _ _).trans (le_of_lt (hgt _)) have hh' := (div_le_iff₀ hθ).mp hh nlinarith refine ⟨fun i => u i.val, fun i => hmem i.val, fun i => hpos i.val, ?_, ?_⟩ · change M ≤ u 0 rw [hu0] exact (le_max_left _ _).trans (le_of_lt (hgt _)) · intro i exact hstep i.val def half_decay_degree_sum {n : ℕ} (r : Fin (n + 1) → ℕ) (θ : ℝ) (hθ : θ ≤ (1 / 2 : ℝ)) (hstep : ∀ i : Fin n, (r i.succ : ℝ) ≤ θ * r i.castSucc) : (∑ i, (r i : ℝ)) ≤ 2 * r 0 := by have ht : (∑ i : Fin n, (r i.succ : ℝ)) ≤ (1 / 2 : ℝ) * (∑ i : Fin n, (r i.castSucc : ℝ)) := by rw [Finset.mul_sum] apply Finset.sum_le_sum intro i _ exact (hstep i).trans (mul_le_mul_of_nonneg_right hθ (Nat.cast_nonneg _)) have hhead : (∑ i : Fin n, (r i.castSucc : ℝ)) ≤ ∑ i : Fin (n + 1), (r i : ℝ) := by rw [Fin.sum_univ_castSucc] exact le_add_of_nonneg_right (Nat.cast_nonneg _) have hs := Fin.sum_univ_succ (fun i : Fin (n + 1) => (r i : ℝ)) nlinarith def auxiliaryFirstLogThreshold (m d : ℕ) (a θ K C₂ ρ : ℝ) : ℝ := max 1 (max (2 * (2 * K + 4 * m) / (θ * a)) (8 * d * C₂ / ((m : ℝ) * ρ))) def auxiliaryFirstLogThreshold_budgets {m d : ℕ} (a θ K C₂ ρ q₀ : ℝ) (hm : 0 < m) (ha : 0 < a) (hθ : 0 < θ) (hρ : 0 < ρ) (hfirst : auxiliaryFirstLogThreshold m d a θ K C₂ ρ ≤ q₀) : 0 < q₀ ∧ 2 * (2 * K + 4 * m) ≤ θ * a * q₀ ∧ 8 * (d : ℝ) * C₂ ≤ (m : ℝ) * ρ * q₀ := by have h1 : (1 : ℝ) ≤ q₀ := (le_max_left _ _).trans hfirst have htwo : 2 * (2 * K + 4 * m) / (θ * a) ≤ q₀ := (le_max_left _ _).trans ((le_max_right _ _).trans hfirst) have hthree : 8 * (d : ℝ) * C₂ / ((m : ℝ) * ρ) ≤ q₀ := (le_max_right _ _).trans ((le_max_right _ _).trans hfirst) refine ⟨by linarith, ?_, ?_⟩ · have hh := (div_le_iff₀ (mul_pos hθ ha)).mp htwo nlinarith · have hh := (div_le_iff₀ (show (0 : ℝ) < m * ρ by positivity)).mp hthree nlinarith def auxiliaryCommonScale {m : ℕ} (q : Fin m → ℝ) (d : ℕ) (Cc ρ : ℝ) : ℝ := 1 + (∑ i, |2 * q i|) + |4 * (d : ℝ) * Cc * (∑ i, q i) / ((m : ℝ) * ρ)| def auxiliaryCommonScale_budgets {m : ℕ} (q : Fin m → ℝ) (d : ℕ) (Cc ρ D : ℝ) (hm : 0 < m) (hρ : 0 < ρ) (hD : auxiliaryCommonScale q d Cc ρ ≤ D) : 0 < D ∧ (∀ i, 2 * q i ≤ D) ∧ 4 * (d : ℝ) * Cc * (∑ i, q i) ≤ (m : ℝ) * ρ * D := by have hsum : 0 ≤ ∑ i, |2 * q i| := Finset.sum_nonneg fun i _ => abs_nonneg _ have hraw : 1 + (∑ i, |2 * q i|) + |4 * (d : ℝ) * Cc * (∑ i, q i) / ((m : ℝ) * ρ)| ≤ D := hD refine ⟨by linarith [abs_nonneg (4 * (d : ℝ) * Cc * (∑ i, q i) / ((m : ℝ) * ρ))], ?_, ?_⟩ · intro i have hh := Finset.single_le_sum (s := Finset.univ) (f := fun i => |2 * q i|) (fun j _ => abs_nonneg _) (Finset.mem_univ i) linarith [le_abs_self (2 * q i), abs_nonneg (4 * (d : ℝ) * Cc * (∑ i, q i) / ((m : ℝ) * ρ))] · have hh : 4 * (d : ℝ) * Cc * (∑ i, q i) / ((m : ℝ) * ρ) ≤ D := by linarith [le_abs_self (4 * (d : ℝ) * Cc * (∑ i, q i) / ((m : ℝ) * ρ))] have hh' := (div_le_iff₀ (show (0 : ℝ) < m * ρ by positivity)).mp hh nlinarith def selectedAuxiliaryDegrees {n : ℕ} (D : ℝ) (q : Fin (n + 1) → ℝ) : Fin (n + 1) → ℕ := fun i => balancedBlockDegree D (q i) /-- Every field concerns the actual floor degrees at this common scale. -/ structure AuxiliaryDegreeBudgets {n : ℕ} (q H : Fin (n + 1) → ℝ) (d : ℕ) (θ K C₂ Cc ρ D : ℝ) : Prop where scale_pos : 0 < D degree_pos : ∀ i, 0 < selectedAuxiliaryDegrees D q i scale_error : ∀ i, |(selectedAuxiliaryDegrees D q i : ℝ) * q i - D| ≤ q i degree_separation : ∀ i : Fin n, (selectedAuxiliaryDegrees D q i.succ : ℝ) ≤ θ * selectedAuxiliaryDegrees D q i.castSucc total_degree : (∑ i, (selectedAuxiliaryDegrees D q i : ℝ)) ≤ 2 * D / q 0 roth_budget : ∀ i, K * (∑ j, (selectedAuxiliaryDegrees D q j : ℝ)) + 4 * (↑(n + 1) : ℝ) * selectedAuxiliaryDegrees D q 0 ≤ θ * ((selectedAuxiliaryDegrees D q i : ℝ) * H i) first_scale_budget : 8 * (d : ℝ) * C₂ ≤ (↑(n + 1) : ℝ) * ρ * q 0 error_budget : 4 * (d : ℝ) * Cc * (∑ i, q i) ≤ (↑(n + 1) : ℝ) * ρ * D def auxiliary_selected_degree_budgets {n : ℕ} (q H : Fin (n + 1) → ℝ) (d : ℕ) (a θ K C₂ Cc ρ D : ℝ) (hq : ∀ i, 0 < q i) (ha : 0 < a) (hθ : 0 < θ) (hθhalf : θ ≤ 1 / 2) (hK : 0 ≤ K) (hρ : 0 < ρ) (hsep : ∀ i : Fin n, 2 * q i.castSucc ≤ θ * q i.succ) (hH : ∀ i, a * q i ≤ H i) (hfirst : auxiliaryFirstLogThreshold (n + 1) d a θ K C₂ ρ ≤ q 0) (hD : auxiliaryCommonScale q d Cc ρ ≤ D) : AuxiliaryDegreeBudgets q H d θ K C₂ Cc ρ D := by obtain ⟨hDpos, hDscale, herror⟩ := auxiliaryCommonScale_budgets q d Cc ρ D (by omega) hρ hD obtain ⟨_, hfirstRoth, hfirstError⟩ := auxiliaryFirstLogThreshold_budgets a θ K C₂ ρ (q 0) (by omega) ha hθ hρ hfirst have hb (i : Fin (n + 1)) := balancedBlockDegree_bounds (hq i) (hDscale i) have hstep : ∀ i : Fin n, (selectedAuxiliaryDegrees D q i.succ : ℝ) ≤ θ * selectedAuxiliaryDegrees D q i.castSucc := by intro i exact balancedBlockDegree_ratio (hq i.castSucc) (hq i.succ) (hDscale i.castSucc) (hDscale i.succ) hθ.le (hsep i) have hsum := half_decay_degree_sum (selectedAuxiliaryDegrees D q) θ hθhalf hstep have hhead : (selectedAuxiliaryDegrees D q 0 : ℝ) ≤ D / q 0 := (le_div_iff₀ (hq 0)).mpr (hb 0).2.1 refine ⟨hDpos, fun i => (hb i).1, fun i => (hb i).2.2.2, hstep, ?_, ?_, hfirstError, herror⟩ · exact hsum.trans (by simpa only [mul_div_assoc] using mul_le_mul_of_nonneg_left hhead (show (0 : ℝ) ≤ 2 by norm_num)) · intro i calc _ ≤ K * (2 * (selectedAuxiliaryDegrees D q 0 : ℝ)) + 4 * (↑(n + 1) : ℝ) * selectedAuxiliaryDegrees D q 0 := add_le_add (mul_le_mul_of_nonneg_left hsum hK) le_rfl _ = (2 * K + 4 * (↑(n + 1) : ℝ)) * selectedAuxiliaryDegrees D q 0 := by ring _ ≤ _ := balancedBlockDegree_height_budget (hq i) (hq 0) (hDscale i) (hDscale 0) ha.le hθ.le (hH i) hfirstRoth def exists_complete_auxiliary_parameters (S : Set ℝ) (hS : ¬ BddAbove S) (H : ℝ → ℝ) (n d : ℕ) (a θ K C₂ Cc ρ M : ℝ) (ha : 0 < a) (hθ : 0 < θ) (hθhalf : θ ≤ 1 / 2) (hK : 0 ≤ K) (hρ : 0 < ρ) (hH : ∀ t ∈ S, a * t ≤ H t) : ∃ q : Fin (n + 1) → ℝ, (∀ i, q i ∈ S) ∧ (∀ i, 0 < q i) ∧ M ≤ q 0 ∧ (∀ i : Fin n, 2 * q i.castSucc ≤ θ * q i.succ) ∧ 0 < auxiliaryCommonScale q d Cc ρ ∧ ∀ D ≥ auxiliaryCommonScale q d Cc ρ, AuxiliaryDegreeBudgets q (fun i => H (q i)) d θ K C₂ Cc ρ D := by obtain ⟨q, hmem, hq, hfirst, hsep⟩ := exists_separated_logs_in_unbounded_set S hS θ (max M (auxiliaryFirstLogThreshold (n + 1) d a θ K C₂ ρ)) hθ n have hbase : auxiliaryFirstLogThreshold (n + 1) d a θ K C₂ ρ ≤ q 0 := (le_max_right _ _).trans hfirst refine ⟨q, hmem, hq, (le_max_left _ _).trans hfirst, hsep, ?_, ?_⟩ · exact (auxiliaryCommonScale_budgets q d Cc ρ _ (by omega) hρ le_rfl).1 · intro D hD exact auxiliary_selected_degree_budgets q (fun i => H (q i)) d a θ K C₂ Cc ρ D hq ha hθ hθhalf hK hρ hsep (fun i => hH (q i) (hmem i)) hbase hD end end Bounty end SubmissionComponent_AuxiliaryParameterSelection /- Component HighHyperplaneBoundedness; SHA256 8b87455601f31b371afde983c083a2bd4660c2d304724004328a8adf9e8a19b4 -/ section SubmissionComponent_HighHyperplaneBoundedness /- Families of large-height hyperplanes satisfying a fixed negative profile are bounded. -/ namespace Bounty noncomputable section open scoped BigOperators def exists_hyperplane_polynomial_parameters {d : ℕ} (hd : 1 ≤ d) (c : Fin 3 → Fin (d + 1) → ℝ) (ρ : ℝ) (hρ : 0 < ρ) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) : ∃ (η : ℝ) (n B : ℕ), 0 < η ∧ η ≤ 1 / 2 ∧ η ≤ ρ / (8 * (d + 1 : ℕ) * exponentCoefficientMass c) ∧ 0 < B ∧ (d : ℝ) / B ≤ η / 2 ∧ 8 * (d + 1 : ℕ) ≤ (n + 1 : ℕ) * η ^ 2 := by have hmass : 0 < exponentCoefficientMass c := hρ.trans_le (deficit_le_exponentCoefficientMass c ρ hc) let η : ℝ := min (1 / 2) (ρ / (8 * (d + 1 : ℕ) * exponentCoefficientMass c)) have hη : 0 < η := lt_min (by norm_num) (by positivity) obtain ⟨n, hn⟩ := exists_nat_ge (8 * (d + 1 : ℕ) / η ^ 2) obtain ⟨B, hB⟩ := exists_nat_ge (1 + 2 * (d : ℝ) / η) have hBreal : (0 : ℝ) < B := by have hh : 0 ≤ 2 * (d : ℝ) / η := by positivity linarith refine ⟨η, n, B, hη, min_le_left _ _, min_le_right _ _, by exact_mod_cast hBreal, ?_, ?_⟩ · apply (div_le_iff₀ hBreal).mpr have hh : 2 * (d : ℝ) / η ≤ B := by linarith have hmul := (div_le_iff₀ hη).mp hh nlinarith · have hmul := (div_le_iff₀ (sq_pos_of_pos hη)).mp hn simp only [Nat.cast_add, Nat.cast_one] at hmul ⊢ nlinarith [sq_nonneg η] def bounded_high_hyperplane_family {d : ℕ} (hd : 1 ≤ d) (A : Matrix (Fin (d + 1)) (Fin (d + 1)) ℚ) (hA : IsUnit A.det) (c : Fin 3 → Fin (d + 1) → ℝ) (ρ a : ℝ) (hρ : 0 < ρ) (ha : 0 < a) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (S : Set ℝ) (b : ℝ → Fin (d + 1) → ℚ) (p : ℝ → Fin (d + 1)) (y : ℝ → Fin d → Fin (d + 1) → ℤ) (hp : ∀ q ∈ S, b q (p q) ≠ 0) (hheight : ∀ q ∈ S, a * q ≤ Height.logHeight (b q) / d) (hspan : ∀ q ∈ S, Submodule.span ℚ (Set.range (fun j i => (y q j i : ℚ))) = rationalHyperplaneKernel (b q)) (hInf : ∀ q ∈ S, ∀ j i, |((∑ k, A i k * (y q j k : ℚ) : ℚ) : ℝ)| ≤ Real.exp (c 0 i * q)) (hTwo : ∀ q ∈ S, ∀ j i, (padicNorm 2 (y q j i : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) (hThree : ∀ q ∈ S, ∀ j i, (padicNorm 3 (y q j i : ℚ) : ℝ) ≤ Real.exp (c 2 i * q)) : BddAbove S := by classical by_contra hS obtain ⟨η, n, B, hη, hηhalf, hηmass, hB, hgrid, hlarge⟩ := exists_hyperplane_polynomial_parameters hd c ρ hρ hc obtain ⟨K, L, hK, hL, hconfig⟩ := exists_finite_hyperplane_configuration_constants (n := n) hd (fun _ => A) (fun _ => hA) let θ : ℝ := (η / 4) ^ (2 ^ n) have hθ : 0 < θ := by positivity have hθhalf : θ ≤ 1 / 2 := by have hh : (η / 4) ^ (2 ^ n) ≤ η / 4 := by simpa only [pow_one] using pow_le_pow_of_le_one (by positivity : 0 ≤ η / 4) (by linarith : η / 4 ≤ 1) (show 1 ≤ 2 ^ n by have hh : 0 < (2 : ℕ) ^ n := pow_pos (by decide) n; omega) dsimp [θ] linarith obtain ⟨q, hqmem, hqpos, _, hqsep, hDpos, hbudgets⟩ := exists_complete_auxiliary_parameters S hS (fun q => Height.logHeight (b q) / d) n (d + 1) a θ K (L + Real.log ((d : ℝ) * B)) (exponentCoefficientMass c) ρ 0 ha hθ hθhalf hK hρ hheight let D := auxiliaryCommonScale q (d + 1) (exponentCoefficientMass c) ρ have hb := hbudgets D le_rfl let r := selectedAuxiliaryDegrees D q exact hconfig r q c D η ρ B hb.degree_pos (hqpos 0) hb.scale_pos hρ hη hηhalf hB hgrid hlarge hb.degree_separation hb.scale_error hc hηmass hb.total_degree hb.first_scale_budget hb.error_budget (fun h => b (q h)) (fun h => p (q h)) (fun h => hp (q h) (hqmem h)) hb.roth_budget (fun h => y (q h)) (fun h => hspan (q h) (hqmem h)) (fun h => hInf (q h) (hqmem h)) (fun h => hTwo (q h) (hqmem h)) (fun h => hThree (q h) (hqmem h)) end end Bounty end SubmissionComponent_HighHyperplaneBoundedness /- Component BoundedRationalBoxes; SHA256 0106503e3eb71b650e68873dc0bb21dc7ec2e0d0436464f23e4cbc0cc7f20b40 -/ section SubmissionComponent_BoundedRationalBoxes /- Finiteness of actual integer points and rational spans in bounded rational boxes. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def finite_rational_box_integer_points {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (B : Fin d → ℝ) (hB : ∀ i, 0 < B i) : Set.Finite {z : Fin d → ℤ | ∀ i, |((∑ j, A i j * (z j : ℚ) : ℚ) : ℝ)| ≤ B i} := by let N : Fin d → ℕ := fun _ => 1 have hN : ∀ i, 0 < N i := by intro i; exact Nat.zero_lt_one let L := rationalBoxLattice A B N hA hB hN letI : DiscreteTopology L := by dsimp [L]; infer_instance let f : (Fin d → ℤ) → BoxEuclidean d := fun z => rationalBoxTransform A B hA hB (diagonalIntegerPoint N z) have hf : Function.Injective f := by intro z w h have hh := (rationalBoxTransform A B hA hB).injective h funext i have hi := congrArg (fun x : BoxEuclidean d => x i) hh simpa [diagonalIntegerPoint, N] using hi have hclosed : IsClosed (L : Set (BoxEuclidean d)) := AddSubgroup.isClosed_of_discrete (H := L.toAddSubgroup) have hfin : Set.Finite (Metric.closedBall (0 : BoxEuclidean d) (Real.sqrt d) ∩ (L : Set (BoxEuclidean d))) := Metric.finite_isBounded_inter_isClosed DiscreteTopology.isDiscrete Metric.isBounded_closedBall hclosed apply (Set.Finite.preimage hf.injOn hfin).subset intro z hz refine ⟨?_, ?_⟩ · rw [Metric.mem_closedBall, dist_zero_right] apply rationalBoxContains_norm_le_sqrt A B hA hB intro i simpa [Matrix.mulVec, dotProduct, diagonalIntegerPoint, N, Matrix.map_apply, Rat.cast_sum, Rat.cast_mul] using hz i · exact (rationalBoxLattice_mem_iff A B N hA hB hN (f z)).mpr ⟨z, rfl⟩ def finite_bounded_exponential_integer_points {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (c : Fin d → ℝ) (M : ℝ) : Set.Finite {z : Fin d → ℤ | ∃ q : ℝ, 0 ≤ q ∧ q ≤ M ∧ ∀ i, |((∑ j, A i j * (z j : ℚ) : ℚ) : ℝ)| ≤ Real.exp (c i * q)} := by let B : Fin d → ℝ := fun i => Real.exp (|c i| * max M 0) apply (finite_rational_box_integer_points A hA B (fun i => Real.exp_pos _)).subset rintro z ⟨q, hq, hqM, hz⟩ i apply (hz i).trans apply Real.exp_le_exp.mpr exact (mul_le_mul_of_nonneg_right (le_abs_self _) hq).trans (mul_le_mul_of_nonneg_left (hqM.trans (le_max_left _ _)) (abs_nonneg _)) def finite_spans_of_finite_integer_points {d : ℕ} (s : Set (Fin d → ℤ)) (hs : s.Finite) : Set.Finite {V : Submodule ℚ (Fin d → ℚ) | ∃ t : Set (Fin d → ℤ), t ⊆ s ∧ V = Submodule.span ℚ ((fun z i => (z i : ℚ)) '' t)} := by apply (hs.powerset.image (fun t => Submodule.span ℚ ((fun z i => (z i : ℚ)) '' t))).subset rintro V ⟨t, ht, rfl⟩ exact ⟨t, ht, rfl⟩ def finite_bounded_exponential_spans {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (c : Fin d → ℝ) (M : ℝ) : Set.Finite {V : Submodule ℚ (Fin d → ℚ) | ∃ (q : ℝ) (t : Set (Fin d → ℤ)), 0 ≤ q ∧ q ≤ M ∧ (∀ z ∈ t, ∀ i, |((∑ j, A i j * (z j : ℚ) : ℚ) : ℝ)| ≤ Real.exp (c i * q)) ∧ V = Submodule.span ℚ ((fun z i => (z i : ℚ)) '' t)} := by apply (finite_spans_of_finite_integer_points _ (finite_bounded_exponential_integer_points A hA c M)).subset rintro V ⟨q, t, hq, hqM, ht, rfl⟩ refine ⟨t, ?_, rfl⟩ intro z hz exact ⟨q, hq, hqM, ht z hz⟩ end end Bounty end SubmissionComponent_BoundedRationalBoxes /- Component FiniteHyperplaneFamilies; SHA256 b09df8a57dd0eb66dacb0cf8c379ee875717aed7d4bc9f0538a0271731e1dee3 -/ section SubmissionComponent_FiniteHyperplaneFamilies /- Affine height growth, together with actual box bounds, gives finite kernel families. -/ namespace Bounty noncomputable section open scoped BigOperators def bounded_hyperplane_family_of_affine_height {d : ℕ} (hd : 1 ≤ d) (A : Matrix (Fin (d + 1)) (Fin (d + 1)) ℚ) (hA : IsUnit A.det) (c : Fin 3 → Fin (d + 1) → ℝ) (ρ a C : ℝ) (hρ : 0 < ρ) (ha : 0 < a) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (S : Set ℝ) (b : ℝ → Fin (d + 1) → ℚ) (p : ℝ → Fin (d + 1)) (y : ℝ → Fin d → Fin (d + 1) → ℤ) (hp : ∀ q ∈ S, b q (p q) ≠ 0) (hheight : ∀ q ∈ S, a * q - C ≤ Height.logHeight (b q) / d) (hspan : ∀ q ∈ S, Submodule.span ℚ (Set.range (fun j i => (y q j i : ℚ))) = rationalHyperplaneKernel (b q)) (hInf : ∀ q ∈ S, ∀ j i, |((∑ k, A i k * (y q j k : ℚ) : ℚ) : ℝ)| ≤ Real.exp (c 0 i * q)) (hTwo : ∀ q ∈ S, ∀ j i, (padicNorm 2 (y q j i : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) (hThree : ∀ q ∈ S, ∀ j i, (padicNorm 3 (y q j i : ℚ) : ℝ) ≤ Real.exp (c 2 i * q)) : BddAbove S := by let T : Set ℝ := {q | q ∈ S ∧ 2 * C / a ≤ q} have hT : BddAbove T := bounded_high_hyperplane_family hd A hA c ρ (a / 2) hρ (by positivity) hc T b p y (fun q hq => hp q hq.1) (fun q hq => by have hmul := (div_le_iff₀ ha).mp hq.2 have hh := hheight q hq.1 linarith) (fun q hq => hspan q hq.1) (fun q hq => hInf q hq.1) (fun q hq => hTwo q hq.1) (fun q hq => hThree q hq.1) obtain ⟨M, hM⟩ := hT refine ⟨max M (2 * C / a), ?_⟩ intro q hq by_cases hlarge : 2 * C / a ≤ q · exact (hM ⟨hq, hlarge⟩).trans (le_max_left _ _) · exact (le_of_not_ge hlarge).trans (le_max_right _ _) def finite_hyperplane_family_of_height_dichotomy {d : ℕ} (hd : 1 ≤ d) (A : Matrix (Fin (d + 1)) (Fin (d + 1)) ℚ) (hA : IsUnit A.det) (c : Fin 3 → Fin (d + 1) → ℝ) (ρ a C : ℝ) (hρ : 0 < ρ) (ha : 0 < a) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (S : Set ℝ) (hS : ∀ q ∈ S, 0 ≤ q) (b : ℝ → Fin (d + 1) → ℚ) (p : ℝ → Fin (d + 1)) (y : ℝ → Fin d → Fin (d + 1) → ℤ) (F : Set (Submodule ℚ (Fin (d + 1) → ℚ))) (hF : F.Finite) (hp : ∀ q ∈ S, b q (p q) ≠ 0) (hheight : ∀ q ∈ S, rationalHyperplaneKernel (b q) ∈ F ∨ a * q - C ≤ Height.logHeight (b q) / d) (hspan : ∀ q ∈ S, Submodule.span ℚ (Set.range (fun j i => (y q j i : ℚ))) = rationalHyperplaneKernel (b q)) (hInf : ∀ q ∈ S, ∀ j i, |((∑ k, A i k * (y q j k : ℚ) : ℚ) : ℝ)| ≤ Real.exp (c 0 i * q)) (hTwo : ∀ q ∈ S, ∀ j i, (padicNorm 2 (y q j i : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) (hThree : ∀ q ∈ S, ∀ j i, (padicNorm 3 (y q j i : ℚ) : ℝ) ≤ Real.exp (c 2 i * q)) : Set.Finite ((fun q => rationalHyperplaneKernel (b q)) '' S) := by classical let T : Set ℝ := {q | q ∈ S ∧ rationalHyperplaneKernel (b q) ∉ F} have hT : BddAbove T := bounded_hyperplane_family_of_affine_height hd A hA c ρ a C hρ ha hc T b p y (fun q hq => hp q hq.1) (fun q hq => (hheight q hq.1).resolve_left hq.2) (fun q hq => hspan q hq.1) (fun q hq => hInf q hq.1) (fun q hq => hTwo q hq.1) (fun q hq => hThree q hq.1) obtain ⟨M, hM⟩ := hT have hsmall := finite_bounded_exponential_spans A (isUnit_iff_ne_zero.mp hA) (c 0) M apply (hF.union hsmall).subset rintro V ⟨q, hq, rfl⟩ by_cases hex : rationalHyperplaneKernel (b q) ∈ F · exact Or.inl hex · right refine ⟨q, Set.range (y q), hS q hq, hM ⟨hq, hex⟩, ?_, ?_⟩ · rintro z ⟨j, rfl⟩ i exact hInf q hq j i · change rationalHyperplaneKernel (b q) = _ rw [← hspan q hq] congr 1 exact Set.range_comp (fun z i => (z i : ℚ)) (y q) end end Bounty end SubmissionComponent_FiniteHyperplaneFamilies /- Component FixedProfileHyperplanes; SHA256 c39d60a9a0df37c84145d5fc0618ab79d308788400edc67f25ece9bd73ac9451 -/ section SubmissionComponent_FixedProfileHyperplanes /- Finiteness of actual codimension-one integer spans in a fixed negative profile. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def finite_fixed_profile_hyperplane_spans {d : ℕ} (hd : 1 ≤ d) (A : Matrix (Fin (d + 1)) (Fin (d + 1)) ℚ) (hA : IsUnit A.det) (c : Fin 3 → Fin (d + 1) → ℝ) (ρ : ℝ) (hρ : 0 < ρ) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (S : Set ℝ) (hS : ∀ q ∈ S, 0 ≤ q) (X : ℝ → Matrix (Fin (d + 1)) (Fin d) ℤ) (hX : ∀ q ∈ S, LinearIndependent ℚ ((X q).map (Int.castRingHom ℚ)).col) (hInf : ∀ q ∈ S, ∀ i j, ‖(A * (X q).map (Int.castRingHom ℚ)) i j‖ ≤ Real.exp (c 0 i * q)) (hTwo : ∀ q ∈ S, ∀ i j, (padicNorm 2 (X q i j : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) (hThree : ∀ q ∈ S, ∀ i j, (padicNorm 3 (X q i j : ℚ) : ℝ) ≤ Real.exp (c 2 i * q)) : Set.Finite ((fun q => Submodule.span ℚ (Set.range ((X q).map (Int.castRingHom ℚ)).col)) '' S) := by classical obtain ⟨T, C, hT, _, hdichotomy⟩ := moving_hyperplane_height_dichotomy A hA c ρ hρ hc let U : Set ℝ := {q | q ∈ S ∧ T ≤ q} have hex : ∀ q : ℝ, ∃ a : Fin (d + 1) → ℤ, q ∈ U → a ≠ 0 ∧ Finset.univ.gcd a = 1 ∧ Submodule.span ℚ (Set.range ((X q).map (Int.castRingHom ℚ)).col) = rationalHyperplaneKernel (fun i => (a i : ℚ)) ∧ (rationalHyperplaneKernel (fun i => (a i : ℚ)) ∈ exceptionalPatternHyperplanes A ∨ ρ * q / 4 - C ≤ Height.logHeight (fun i => (a i : ℚ))) := by intro q by_cases hq : q ∈ U · obtain ⟨a, ha⟩ := hdichotomy q hq.2 (X q) (hX q hq.1) (hInf q hq.1) (hTwo q hq.1) (hThree q hq.1) exact ⟨a, fun _ => ha⟩ · exact ⟨0, fun h => False.elim (hq h)⟩ choose a ha using hex let b : ℝ → Fin (d + 1) → ℚ := fun q i => (a q i : ℚ) have hp_exists : ∀ q : ℝ, ∃ p : Fin (d + 1), q ∈ U → b q p ≠ 0 := by intro q by_cases hq : q ∈ U · obtain ⟨i, hi⟩ : ∃ i, a q i ≠ 0 := by simpa [funext_iff] using (ha q hq).1 exact ⟨i, fun _ => by dsimp [b]; exact_mod_cast hi⟩ · exact ⟨0, fun h => False.elim (hq h)⟩ choose p hp using hp_exists have hdreal : (0 : ℝ) < d := by exact_mod_cast hd have hfinite : Set.Finite ((fun q => rationalHyperplaneKernel (b q)) '' U) := finite_hyperplane_family_of_height_dichotomy hd A hA c ρ (ρ / (4 * d)) (C / d) hρ (by positivity) hc U (fun q hq => hS q hq.1) b p (fun q j i => X q i j) (exceptionalPatternHyperplanes A : Set _) (exceptionalPatternHyperplanes A).finite_toSet hp (by intro q hq rcases (ha q hq).2.2.2 with h | h · exact Or.inl h · right have hh := div_le_div_of_nonneg_right h hdreal.le dsimp [b] calc ρ / (4 * (d : ℝ)) * q - C / d = (ρ * q / 4 - C) / d := by ring _ ≤ _ := hh) (fun q hq => (ha q hq).2.2.1) (by intro q hq j i rw [← Real.norm_eq_abs, Rat.norm_cast_real] exact hInf q hq.1 i j) (fun q hq j i => hTwo q hq.1 i j) (fun q hq j i => hThree q hq.1 i j) have hsmall := finite_bounded_exponential_spans A (isUnit_iff_ne_zero.mp hA) (c 0) T apply (hfinite.union hsmall).subset rintro V ⟨q, hq, rfl⟩ by_cases hlarge : T ≤ q · left refine ⟨q, ⟨hq, hlarge⟩, ?_⟩ exact ((ha q ⟨hq, hlarge⟩).2.2.1).symm · right refine ⟨q, Set.range (fun j i => X q i j), hS q hq, le_of_not_ge hlarge, ?_, ?_⟩ · rintro z ⟨j, rfl⟩ i rw [← Real.norm_eq_abs, Rat.norm_cast_real] exact hInf q hq i j · change Submodule.span ℚ (Set.range (fun j i => (X q i j : ℚ))) = _ congr 1 exact Set.range_comp (fun z i => (z i : ℚ)) (fun j i => X q i j) end end Bounty end SubmissionComponent_FixedProfileHyperplanes /- Component FiniteIndexProfileHyperplanes; SHA256 16e6aacc0800fd6936926bf23485f6746739cb92b9d754a6ea6939051c97d89c -/ section SubmissionComponent_FiniteIndexProfileHyperplanes /- Transport of fixed-profile hyperplane finiteness to arbitrary finite coordinate types. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix /-- The coordinate change induced by an actual bijection of row labels. -/ def profileCoordinateEquiv {I I' : Type*} (e : I ≃ I') : (I → ℚ) ≃ₗ[ℚ] (I' → ℚ) where toFun x i := x (e.symm i) invFun y i := y (e i) left_inv x := by funext i; simp right_inv y := by funext i; simp map_add' _ _ := rfl map_smul' _ _ := rfl def profile_column_span_reindex {I I' J J' : Type*} (e : I ≃ I') (f : J ≃ J') (X : Matrix I J ℚ) : (Submodule.span ℚ (Set.range X.col)).map (profileCoordinateEquiv e).toLinearMap = Submodule.span ℚ (Set.range (Matrix.reindex e f X).col) := by rw [Submodule.map_span, ← Set.range_comp] congr 1 ext v constructor · rintro ⟨j, rfl⟩ refine ⟨f j, ?_⟩ ext i simp [profileCoordinateEquiv, Matrix.reindex_apply, Matrix.col, Matrix.submatrix] rfl · rintro ⟨j, rfl⟩ exact ⟨f.symm j, rfl⟩ def profile_column_independent_reindex {I I' J J' : Type*} (e : I ≃ I') (f : J ≃ J') (X : Matrix I J ℚ) (hX : LinearIndependent ℚ X.col) : LinearIndependent ℚ (Matrix.reindex e f X).col := by exact (hX.map' (profileCoordinateEquiv e).toLinearMap (LinearMap.ker_eq_bot.mpr (profileCoordinateEquiv e).injective)).comp f.symm f.symm.injective def profile_reindex_mul {I I' J J' : Type*} [Fintype I] [Fintype I'] (e : I ≃ I') (f : J ≃ J') (A : Matrix I I ℚ) (X : Matrix I J ℚ) : Matrix.reindex e e A * Matrix.reindex e f X = Matrix.reindex e f (A * X) := Matrix.submatrix_mul_equiv A X e.symm e.symm f.symm /-- The finite-index form of the checked fixed-profile theorem, with genuine transported spans. -/ def finite_fixed_profile_hyperplane_spans_fintype {I J : Type*} [Fintype I] [Fintype J] [DecidableEq I] (hcard : Fintype.card I = Fintype.card J + 1) (hJ : 1 ≤ Fintype.card J) (A : Matrix I I ℚ) (hA : IsUnit A.det) (c : Fin 3 → I → ℝ) (ρ : ℝ) (hρ : 0 < ρ) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (S : Set ℝ) (hS : ∀ q ∈ S, 0 ≤ q) (X : ℝ → Matrix I J ℤ) (hX : ∀ q ∈ S, LinearIndependent ℚ ((X q).map (Int.castRingHom ℚ)).col) (hInf : ∀ q ∈ S, ∀ i j, ‖(A * (X q).map (Int.castRingHom ℚ)) i j‖ ≤ Real.exp (c 0 i * q)) (hTwo : ∀ q ∈ S, ∀ i j, (padicNorm 2 (X q i j : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) (hThree : ∀ q ∈ S, ∀ i j, (padicNorm 3 (X q i j : ℚ) : ℝ) ≤ Real.exp (c 2 i * q)) : Set.Finite ((fun q => Submodule.span ℚ (Set.range ((X q).map (Int.castRingHom ℚ)).col)) '' S) := by classical let e : I ≃ Fin (Fintype.card J + 1) := Fintype.equivFinOfCardEq hcard let f : J ≃ Fin (Fintype.card J) := Fintype.equivFin J let A' := Matrix.reindex e e A let c' : Fin 3 → Fin (Fintype.card J + 1) → ℝ := fun v i => c v (e.symm i) let X' : ℝ → Matrix (Fin (Fintype.card J + 1)) (Fin (Fintype.card J)) ℤ := fun q => Matrix.reindex e f (X q) have hcast (q : ℝ) : (X' q).map (Int.castRingHom ℚ) = Matrix.reindex e f ((X q).map (Int.castRingHom ℚ)) := rfl have hA' : IsUnit A'.det := by simpa only [A', Matrix.det_reindex_self] using hA have hc' : (∑ v, ∑ i, c' v i) ≤ -ρ := by simpa only [c', Equiv.sum_comp] using hc have hX' : ∀ q ∈ S, LinearIndependent ℚ ((X' q).map (Int.castRingHom ℚ)).col := by intro q hq rw [hcast] exact profile_column_independent_reindex e f _ (hX q hq) have hInf' : ∀ q ∈ S, ∀ i j, ‖(A' * (X' q).map (Int.castRingHom ℚ)) i j‖ ≤ Real.exp (c' 0 i * q) := by intro q hq i j rw [hcast, profile_reindex_mul] exact hInf q hq (e.symm i) (f.symm j) have hTwo' : ∀ q ∈ S, ∀ i j, (padicNorm 2 (X' q i j : ℚ) : ℝ) ≤ Real.exp (c' 1 i * q) := by intro q hq i j exact hTwo q hq (e.symm i) (f.symm j) have hThree' : ∀ q ∈ S, ∀ i j, (padicNorm 3 (X' q i j : ℚ) : ℝ) ≤ Real.exp (c' 2 i * q) := by intro q hq i j exact hThree q hq (e.symm i) (f.symm j) have hfinite := finite_fixed_profile_hyperplane_spans hJ A' hA' c' ρ hρ hc' S hS X' hX' hInf' hTwo' hThree' have himage : Submodule.map (profileCoordinateEquiv e).toLinearMap '' ((fun q => Submodule.span ℚ (Set.range ((X q).map (Int.castRingHom ℚ)).col)) '' S) = ((fun q => Submodule.span ℚ (Set.range ((X' q).map (Int.castRingHom ℚ)).col)) '' S) := by rw [Set.image_image] congr 1 funext q rw [hcast] exact profile_column_span_reindex e f _ rw [← himage] at hfinite exact hfinite.of_finite_image (Submodule.map_injective_of_injective (profileCoordinateEquiv e).injective).injOn end end Bounty end SubmissionComponent_FiniteIndexProfileHyperplanes /- Component VaryingProfileHyperplanes; SHA256 aa918076e45a3ae1625d5dbade003a3eb62eff09e77e5f95e4747906b84e5141 -/ section SubmissionComponent_VaryingProfileHyperplanes /- Bounded varying profiles reduce to an actual finite collection of fixed upper profiles. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def finite_varying_profile_hyperplane_spans {I J : Type*} [Fintype I] [Fintype J] [DecidableEq I] (hcard : Fintype.card I = Fintype.card J + 1) (hJ : 1 ≤ Fintype.card J) (A : Matrix I I ℚ) (hA : IsUnit A.det) (c : ℝ → Fin 3 → I → ℝ) (M ρ : ℝ) (hρ : 0 < ρ) (S : Set ℝ) (hS : ∀ q ∈ S, 0 ≤ q) (hcBound : ∀ q ∈ S, ∀ v i, |c q v i| ≤ M) (hcSum : ∀ q ∈ S, (∑ v, ∑ i, c q v i) ≤ -ρ) (X : ℝ → Matrix I J ℤ) (hX : ∀ q ∈ S, LinearIndependent ℚ ((X q).map (Int.castRingHom ℚ)).col) (hInf : ∀ q ∈ S, ∀ i j, ‖(A * (X q).map (Int.castRingHom ℚ)) i j‖ ≤ Real.exp (c q 0 i * q)) (hTwo : ∀ q ∈ S, ∀ i j, (padicNorm 2 (X q i j : ℚ) : ℝ) ≤ Real.exp (c q 1 i * q)) (hThree : ∀ q ∈ S, ∀ i j, (padicNorm 3 (X q i j : ℚ) : ℝ) ≤ Real.exp (c q 2 i * q)) : Set.Finite ((fun q => Submodule.span ℚ (Set.range ((X q).map (Int.castRingHom ℚ)).col)) '' S) := by classical let : Nonempty I := Fintype.card_pos_iff.mp (by omega) obtain ⟨C, hC, hcover⟩ := exists_finite_exponent_profiles_nonpos_on (Fin 3 × I) ∅ M ρ hρ let U (a : Fin 3 × I → ℝ) : Set ℝ := {q | q ∈ S ∧ ∀ v i, c q v i ≤ a (v, i)} let V (q : ℝ) := Submodule.span ℚ (Set.range ((X q).map (Int.castRingHom ℚ)).col) have hfinite (a : Fin 3 × I → ℝ) (ha : a ∈ C) : Set.Finite (V '' U a) := by have hsum : (∑ v, ∑ i, a (v, i)) ≤ -(ρ / 2) := by have hh := (hC a ha).2.1 simpa only [Fintype.sum_prod_type, neg_div] using hh apply finite_fixed_profile_hyperplane_spans_fintype hcard hJ A hA (fun v i => a (v, i)) (ρ / 2) (by positivity) hsum (U a) (fun q hq => hS q hq.1) X (fun q hq => hX q hq.1) · intro q hq i j exact (hInf q hq.1 i j).trans (Real.exp_le_exp.mpr (mul_le_mul_of_nonneg_right (hq.2 0 i) (hS q hq.1))) · intro q hq i j exact (hTwo q hq.1 i j).trans (Real.exp_le_exp.mpr (mul_le_mul_of_nonneg_right (hq.2 1 i) (hS q hq.1))) · intro q hq i j exact (hThree q hq.1 i j).trans (Real.exp_le_exp.mpr (mul_le_mul_of_nonneg_right (hq.2 2 i) (hS q hq.1))) have hU : Set.Finite (⋃ a ∈ (C : Set (Fin 3 × I → ℝ)), V '' U a) := C.finite_toSet.biUnion hfinite apply hU.subset rintro W ⟨q, hq, rfl⟩ obtain ⟨a, ha, hle, _⟩ := hcover (fun x => c q x.1 x.2) (fun x => hcBound q hq x.1 x.2) (by simpa only [Fintype.sum_prod_type] using hcSum q hq) (by simp) exact Set.mem_iUnion.mpr ⟨a, Set.mem_iUnion.mpr ⟨ha, q, ⟨hq, fun v i => hle (v, i)⟩, rfl⟩⟩ end end Bounty end SubmissionComponent_VaryingProfileHyperplanes /- Component CompoundProfileHyperplanes; SHA256 9e4bc642b774e9ffa674c1de21a5a8c3919549f227ac1815272769454fb1c0c0 -/ section SubmissionComponent_CompoundProfileHyperplanes /- Finiteness for the actual integer compound columns with one column removed. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def compoundDeletedColumns {d ell : ℕ} (s₀ : CompoundIndex d ell) (H : Matrix (Fin d) (Fin d) ℤ) : Matrix (CompoundIndex d ell) {t : CompoundIndex d ell // t ≠ s₀} ℤ := (compoundMatrix ell H).submatrix id Subtype.val def compoundDeletedColumns_map {d ell : ℕ} (s₀ : CompoundIndex d ell) (H : Matrix (Fin d) (Fin d) ℤ) : (compoundDeletedColumns s₀ H).map (Int.castRingHom ℚ) = (compoundMatrix ell (H.map (Int.castRingHom ℚ))).submatrix id Subtype.val := by exact (congrArg (fun X : Matrix (CompoundIndex d ell) (CompoundIndex d ell) ℚ => X.submatrix id (Subtype.val : {t : CompoundIndex d ell // t ≠ s₀} → CompoundIndex d ell)) (compoundMatrix_map (Int.castRingHom ℚ) ell H)).symm def compoundIndex_two_le_card {d ell : ℕ} (hell : 0 < ell) (held : ell < d) : 2 ≤ Fintype.card (CompoundIndex d ell) := by rw [compoundIndex_card] have hp := Nat.choose_pos held.le have hn : d.choose ell ≠ 1 := by intro heq have hh := Nat.choose_eq_one_iff.mp heq omega omega def compoundIndex_deleted_card {d ell : ℕ} (s₀ : CompoundIndex d ell) : Fintype.card {t : CompoundIndex d ell // t ≠ s₀} = Fintype.card (CompoundIndex d ell) - 1 := by classical simpa only [Fintype.card_subtype_eq] using Fintype.card_subtype_compl (fun t : CompoundIndex d ell => t = s₀) def compoundDeletedColumns_independent {d ell : ℕ} (s₀ : CompoundIndex d ell) (H : Matrix (Fin d) (Fin d) ℤ) (hH : (H.map (Int.castRingHom ℚ)).det ≠ 0) : LinearIndependent ℚ ((compoundDeletedColumns s₀ H).map (Int.castRingHom ℚ)).col := by classical rw [compoundDeletedColumns_map] exact (Matrix.linearIndependent_cols_of_det_ne_zero (compoundMatrix_det_ne_zero ell _ hH)).comp Subtype.val Subtype.val_injective def compoundDeletedColumns_span {d ell : ℕ} (s₀ : CompoundIndex d ell) (H : Matrix (Fin d) (Fin d) ℤ) : Submodule.span ℚ (Set.range ((compoundDeletedColumns s₀ H).map (Int.castRingHom ℚ)).col) = Submodule.span ℚ ((compoundMatrix ell (H.map (Int.castRingHom ℚ))).col '' {t | t ≠ s₀}) := by rw [compoundDeletedColumns_map, Set.image_eq_range] rfl def compoundDeletedColumns_span_ne_top {d ell : ℕ} (s₀ : CompoundIndex d ell) (H : Matrix (Fin d) (Fin d) ℚ) (hH : H.det ≠ 0) : Submodule.span ℚ ((compoundMatrix ell H).col '' {t | t ≠ s₀}) ≠ ⊤ := by classical have hli := Matrix.linearIndependent_cols_of_det_ne_zero (compoundMatrix_det_ne_zero ell H hH) have hn := hli.notMem_span_image (s := {t | t ≠ s₀}) (x := s₀) (by simp) intro heq rw [heq] at hn exact hn (Submodule.mem_top : (compoundMatrix ell H).col s₀ ∈ ⊤) def finite_varying_profile_compound_deleted_spans {d ell : ℕ} (hell : 0 < ell) (held : ell < d) (s₀ : CompoundIndex d ell) (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (c : ℝ → Fin 3 → CompoundIndex d ell → ℝ) (M ρ : ℝ) (hρ : 0 < ρ) (S : Set ℝ) (hS : ∀ q ∈ S, 0 ≤ q) (hcBound : ∀ q ∈ S, ∀ v i, |c q v i| ≤ M) (hcSum : ∀ q ∈ S, (∑ v, ∑ i, c q v i) ≤ -ρ) (H : ℝ → Matrix (Fin d) (Fin d) ℤ) (hH : ∀ q ∈ S, ((H q).map (Int.castRingHom ℚ)).det ≠ 0) (hInf : ∀ q ∈ S, ∀ i t, t ≠ s₀ → ‖(compoundMatrix ell A * compoundMatrix ell ((H q).map (Int.castRingHom ℚ))) i t‖ ≤ Real.exp (c q 0 i * q)) (hTwo : ∀ q ∈ S, ∀ i t, t ≠ s₀ → (padicNorm 2 (compoundMatrix ell ((H q).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ Real.exp (c q 1 i * q)) (hThree : ∀ q ∈ S, ∀ i t, t ≠ s₀ → (padicNorm 3 (compoundMatrix ell ((H q).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ Real.exp (c q 2 i * q)) : Set.Finite ((fun q => Submodule.span ℚ ((compoundMatrix ell ((H q).map (Int.castRingHom ℚ))).col '' {t | t ≠ s₀})) '' S) := by classical have hN := compoundIndex_two_le_card hell held have hcard := compoundIndex_deleted_card s₀ have hfinite := finite_varying_profile_hyperplane_spans (I := CompoundIndex d ell) (J := {t : CompoundIndex d ell // t ≠ s₀}) (by omega) (by omega) (compoundMatrix ell A) (isUnit_iff_ne_zero.mpr (compoundMatrix_det_ne_zero ell A hA)) c M ρ hρ S hS hcBound hcSum (fun q => compoundDeletedColumns s₀ (H q)) (fun q hq => compoundDeletedColumns_independent s₀ (H q) (hH q hq)) (by intro q hq i t rw [compoundDeletedColumns_map] have heq := Matrix.submatrix_mul_equiv (compoundMatrix ell A) (compoundMatrix ell ((H q).map (Int.castRingHom ℚ))) id (Equiv.refl (CompoundIndex d ell)) (Subtype.val : {t : CompoundIndex d ell // t ≠ s₀} → CompoundIndex d ell) simp only [Equiv.coe_refl, Matrix.submatrix_id_id] at heq rw [heq] exact hInf q hq i t.val t.property) (by intro q hq i t have heq := congrArg (fun X : Matrix (CompoundIndex d ell) {t : CompoundIndex d ell // t ≠ s₀} ℚ => X i t) (compoundDeletedColumns_map s₀ (H q)) change (padicNorm 2 (((compoundDeletedColumns s₀ (H q)).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ _ rw [heq] exact hTwo q hq i t.val t.property) (by intro q hq i t have heq := congrArg (fun X : Matrix (CompoundIndex d ell) {t : CompoundIndex d ell // t ≠ s₀} ℚ => X i t) (compoundDeletedColumns_map s₀ (H q)) change (padicNorm 3 (((compoundDeletedColumns s₀ (H q)).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ _ rw [heq] exact hThree q hq i t.val t.property) simpa only [compoundDeletedColumns_span] using hfinite def finite_varying_profile_compound_tail_spans {d k : ℕ} (hkpos : 1 ≤ k) (hk : k < d) (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (c : ℝ → Fin 3 → CompoundIndex d (d - k) → ℝ) (M ρ : ℝ) (hρ : 0 < ρ) (S : Set ℝ) (hS : ∀ q ∈ S, 0 ≤ q) (hcBound : ∀ q ∈ S, ∀ v i, |c q v i| ≤ M) (hcSum : ∀ q ∈ S, (∑ v, ∑ i, c q v i) ≤ -ρ) (H : ℝ → Matrix (Fin d) (Fin d) ℤ) (hH : ∀ q ∈ S, ((H q).map (Int.castRingHom ℚ)).det ≠ 0) (hInf : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → ‖(compoundMatrix (d - k) A * compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ))) i t‖ ≤ Real.exp (c q 0 i * q)) (hTwo : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → (padicNorm 2 (compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ Real.exp (c q 1 i * q)) (hThree : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → (padicNorm 3 (compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ Real.exp (c q 2 i * q)) : Set.Finite ((fun q => Submodule.span ℚ ((compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ))).col '' {t | t ≠ compoundTailIndex d k})) '' S) := finite_varying_profile_compound_deleted_spans (by omega) (by omega) (compoundTailIndex d k) A hA c M ρ hρ S hS hcBound hcSum H hH hInf hTwo hThree end end Bounty end SubmissionComponent_CompoundProfileHyperplanes /- Component CompoundProfileFamilies; SHA256 32c64d9b5347c90026d25a15f33a7908bc0087968d6b4b809db5702ec270a959 -/ section SubmissionComponent_CompoundProfileFamilies /- A finite family of proper compound hyperplanes for the varying-profile construction. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def exists_finite_varying_profile_compound_tail_family {d k : ℕ} (hkpos : 1 ≤ k) (hk : k < d) (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (c : ℝ → Fin 3 → CompoundIndex d (d - k) → ℝ) (M ρ : ℝ) (hρ : 0 < ρ) (S : Set ℝ) (hS : ∀ q ∈ S, 0 ≤ q) (hcBound : ∀ q ∈ S, ∀ v i, |c q v i| ≤ M) (hcSum : ∀ q ∈ S, (∑ v, ∑ i, c q v i) ≤ -ρ) (H : ℝ → Matrix (Fin d) (Fin d) ℤ) (hH : ∀ q ∈ S, ((H q).map (Int.castRingHom ℚ)).det ≠ 0) (hInf : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → ‖(compoundMatrix (d - k) A * compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ))) i t‖ ≤ Real.exp (c q 0 i * q)) (hTwo : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → (padicNorm 2 (compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ Real.exp (c q 1 i * q)) (hThree : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → (padicNorm 3 (compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ Real.exp (c q 2 i * q)) : ∃ F : Finset (Submodule ℚ (CompoundIndex d (d - k) → ℚ)), (∀ V ∈ F, V ≠ ⊤) ∧ ∀ q ∈ S, Submodule.span ℚ ((compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ))).col '' {t | t ≠ compoundTailIndex d k}) ∈ F := by classical have hfinite := finite_varying_profile_compound_tail_spans hkpos hk A hA c M ρ hρ S hS hcBound hcSum H hH hInf hTwo hThree refine ⟨hfinite.toFinset, ?_, ?_⟩ · intro V hV obtain ⟨q, hq, rfl⟩ := hfinite.mem_toFinset.mp hV exact compoundDeletedColumns_span_ne_top (compoundTailIndex d k) ((H q).map (Int.castRingHom ℚ)) (hH q hq) · intro q hq exact hfinite.mem_toFinset.mpr ⟨q, hq, rfl⟩ end end Bounty end SubmissionComponent_CompoundProfileFamilies /- Component CompoundRecoveryCore; SHA256 7f925663a82a946efc9d5f5c6fdf4c64b932f80c884e0acba76929aecbed15ba -/ section SubmissionComponent_CompoundRecoveryCore /- Canonical recovery of an original subspace from a compound subspace, using all wedge tuples with one prescribed vector. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def compoundSlotMap {d ell : ℕ} (v : Fin ell → Fin d → ℚ) (j : Fin ell) : (Fin d → ℚ) →ₗ[ℚ] (CompoundIndex d ell → ℚ) where toFun x := compoundWedgeCoordinates (Function.update v j x) map_add' x y := by ext s simp [compoundWedgeCoordinates, AlternatingMap.map_update_add] map_smul' c x := by ext s simp [compoundWedgeCoordinates, AlternatingMap.map_update_smul] def compoundRecovery {d ell : ℕ} (H : Submodule ℚ (CompoundIndex d ell → ℚ)) : Submodule ℚ (Fin d → ℚ) := ⨅ v : Fin ell → Fin d → ℚ, ⨅ j : Fin ell, H.comap (compoundSlotMap v j) def mem_compoundRecovery {d ell : ℕ} (H : Submodule ℚ (CompoundIndex d ell → ℚ)) (x : Fin d → ℚ) : x ∈ compoundRecovery H ↔ ∀ (v : Fin ell → Fin d → ℚ) (j : Fin ell), compoundWedgeCoordinates (Function.update v j x) ∈ H := by simp only [compoundRecovery, Submodule.mem_iInf, Submodule.mem_comap] rfl def mem_compoundRecovery_iff_tuple {d ell : ℕ} (H : Submodule ℚ (CompoundIndex d ell → ℚ)) (x : Fin d → ℚ) : x ∈ compoundRecovery H ↔ ∀ (v : Fin ell → Fin d → ℚ) (j : Fin ell), v j = x → compoundWedgeCoordinates v ∈ H := by rw [mem_compoundRecovery] constructor · intro h v j hj simpa [← hj, Function.update_eq_self] using h v j · intro h v j exact h (Function.update v j x) j (Function.update_self _ _ _) def compoundCoordinateHyperplane {d ell : ℕ} (s : CompoundIndex d ell) : Submodule ℚ (CompoundIndex d ell → ℚ) := LinearMap.ker (LinearMap.proj s) def mem_compoundCoordinateHyperplane {d ell : ℕ} (s : CompoundIndex d ell) (x : CompoundIndex d ell → ℚ) : x ∈ compoundCoordinateHyperplane s ↔ x s = 0 := Iff.rfl def det_identity_updateCol {I : Type*} [Fintype I] [DecidableEq I] (j : I) (x : I → ℚ) : ((1 : Matrix I I ℚ).updateCol j x).det = x j := by have h := Matrix.det_updateCol_sum (1 : Matrix I I ℚ) j x simpa [Matrix.one_apply] using h def compoundWedgeCoordinates_basis_update {d ell : ℕ} (s : CompoundIndex d ell) (j : Fin ell) (x : Fin d → ℚ) : compoundWedgeCoordinates (Function.update (fun k => Pi.single (compoundIndexEmbedding s k) (1 : ℚ)) j x) s = x (compoundIndexEmbedding s j) := by classical let v : Fin ell → Fin d → ℚ := fun k => Pi.single (compoundIndexEmbedding s k) 1 change compoundWedgeCoordinates (Function.update v j x) s = _ rw [compoundWedgeCoordinates_apply] have hmat : (Matrix.of (fun i k : Fin ell => Function.update v j x k (compoundIndexEmbedding s i))) = (1 : Matrix (Fin ell) (Fin ell) ℚ).updateCol j (fun i => x (compoundIndexEmbedding s i)) := by ext i k by_cases hk : k = j · simp [hk] · simp [v, hk, Pi.single_apply, Matrix.one_apply, (compoundIndexEmbedding s).injective.eq_iff] rw [hmat, det_identity_updateCol] def mem_compoundRecovery_coordinate {d ell : ℕ} (s : CompoundIndex d ell) (x : Fin d → ℚ) : x ∈ compoundRecovery (compoundCoordinateHyperplane s) ↔ ∀ j, x (compoundIndexEmbedding s j) = 0 := by classical rw [mem_compoundRecovery] constructor · intro h j have hh := h (fun k => Pi.single (compoundIndexEmbedding s k) (1 : ℚ)) j simpa only [mem_compoundCoordinateHyperplane, compoundWedgeCoordinates_basis_update] using hh · intro hx v j rw [mem_compoundCoordinateHyperplane, compoundWedgeCoordinates_apply] apply Matrix.det_eq_zero_of_column_eq_zero j intro i simpa using hx i def compoundWedgeCoordinates_basis {d ell : ℕ} (s : CompoundIndex d ell) : compoundWedgeCoordinates (fun j => Pi.single (compoundIndexEmbedding s j) (1 : ℚ)) = Pi.single s 1 := by classical have hv : (fun j => Pi.single (compoundIndexEmbedding s j) (1 : ℚ)) = (fun j i => (1 : Matrix (Fin d) (Fin d) ℚ) i (compoundIndexEmbedding s j)) := by funext j i simp [Matrix.one_apply, Pi.single_apply] rw [hv, compoundMatrix_column, compoundMatrix_one] funext t simp [Matrix.one_apply, Pi.single_apply, eq_comm] def compoundRecovery_ne_top {d ell : ℕ} (hell : 0 < ell) (H : Submodule ℚ (CompoundIndex d ell → ℚ)) (hH : H ≠ ⊤) : compoundRecovery H ≠ ⊤ := by classical intro htop apply hH apply eq_top_iff.mpr intro x _ have hb : ∀ s : CompoundIndex d ell, Pi.single s (1 : ℚ) ∈ H := by intro s let v : Fin ell → Fin d → ℚ := fun j => Pi.single (compoundIndexEmbedding s j) 1 have hv : v ⟨0, hell⟩ ∈ compoundRecovery H := by rw [htop]; trivial have hh := (mem_compoundRecovery_iff_tuple H _).mp hv v ⟨0, hell⟩ rfl simpa only [v, compoundWedgeCoordinates_basis] using hh have he : x = ∑ s, x s • Pi.single s (1 : ℚ) := by ext s simp [Pi.single_apply] rw [he] exact H.sum_mem (fun s _ => H.smul_mem (x s) (hb s)) end end Bounty end SubmissionComponent_CompoundRecoveryCore /- Component CompoundHyperplaneRecovery; SHA256 5c956447589b5be0e4cd523737e55d1b309d07e0e08728df2d882067e37b7bf1 -/ section SubmissionComponent_CompoundHyperplaneRecovery /- Recovery commutes with invertible column changes. In particular, the compound hyperplane omitting a subset recovers the original columns outside that subset. Finite families therefore pull back without a height argument. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def compoundRecovery_map {d ell : ℕ} (M : Matrix (Fin d) (Fin d) ℚ) (hM : M.det ≠ 0) (H : Submodule ℚ (CompoundIndex d ell → ℚ)) : compoundRecovery (H.map (Matrix.toLin' (compoundMatrix ell M))) = (compoundRecovery H).map (Matrix.toLin' M) := by classical have hu : IsUnit M.det := isUnit_iff_ne_zero.mpr hM have hCinj : Function.Injective (compoundMatrix ell M).mulVec := Matrix.mulVec_injective_iff_isUnit.mpr ((compoundMatrix ell M).isUnit_iff_isUnit_det.mpr (isUnit_iff_ne_zero.mpr (compoundMatrix_det_ne_zero ell M hM))) ext x constructor · intro hx let y := M⁻¹.mulVec x have hMy : M.mulVec y = x := by dsimp [y] rw [Matrix.mulVec_mulVec, Matrix.mul_nonsing_inv M hu, Matrix.one_mulVec] refine Submodule.mem_map.mpr ⟨y, ?_, hMy⟩ rw [mem_compoundRecovery_iff_tuple] intro v j hj have hh := (mem_compoundRecovery_iff_tuple _ _).mp hx (fun k => M.mulVec (v k)) j (by rw [hj]; exact hMy) rw [← compoundMatrix_wedge_action] at hh obtain ⟨w, hw, he⟩ := Submodule.mem_map.mp hh have he' : w = compoundWedgeCoordinates v := hCinj he simpa [he'] using hw · rintro ⟨y, hy, rfl⟩ rw [mem_compoundRecovery_iff_tuple] intro v j hj let w : Fin ell → Fin d → ℚ := fun k => M⁻¹.mulVec (v k) have hwj : w j = y := by dsimp [w] rw [hj] change M⁻¹.mulVec (M.mulVec y) = y rw [Matrix.mulVec_mulVec, Matrix.nonsing_inv_mul M hu, Matrix.one_mulVec] have hh := (mem_compoundRecovery_iff_tuple _ _).mp hy w j hwj refine Submodule.mem_map.mpr ⟨compoundWedgeCoordinates w, hh, ?_⟩ change (compoundMatrix ell M).mulVec (compoundWedgeCoordinates w) = _ rw [compoundMatrix_wedge_action] congr 1 funext k dsimp [w] rw [Matrix.mulVec_mulVec, Matrix.mul_nonsing_inv M hu, Matrix.one_mulVec] def coordinateVanishingSpace {I : Type*} (s : Finset I) : Submodule ℚ (I → ℚ) where carrier := {x | ∀ i ∈ s, x i = 0} zero_mem' := by simp add_mem' hx hy := by intro i hi; simp [hx i hi, hy i hi] smul_mem' c x hx := by intro i hi; simp [hx i hi] def mem_coordinateVanishingSpace {I : Type*} (s : Finset I) (x : I → ℚ) : x ∈ coordinateVanishingSpace s ↔ ∀ i ∈ s, x i = 0 := Iff.rfl def coordinateVanishingSpace_eq_span {I : Type*} [Fintype I] [DecidableEq I] (s : Finset I) : coordinateVanishingSpace s = Submodule.span ℚ ((fun i => Pi.single i (1 : ℚ)) '' {i | i ∉ s}) := by apply le_antisymm · intro x hx have he : x = ∑ i, x i • Pi.single i (1 : ℚ) := by ext i simp [Pi.single_apply] rw [he] apply Submodule.sum_mem intro i _ by_cases hi : i ∈ s · simp [(mem_coordinateVanishingSpace s x).mp hx i hi] · exact Submodule.smul_mem _ (x i) (Submodule.subset_span ⟨i, hi, rfl⟩) · apply Submodule.span_le.mpr rintro _ ⟨i, hi, rfl⟩ intro j hj have hij : j ≠ i := by intro h; subst j; exact hi hj simp [Pi.single_apply, hij, Ne.symm hij] def coordinateVanishingSpace_map_matrix {I : Type*} [Fintype I] [DecidableEq I] (M : Matrix I I ℚ) (s : Finset I) : (coordinateVanishingSpace s).map (Matrix.toLin' M) = Submodule.span ℚ (M.col '' {i | i ∉ s}) := by rw [coordinateVanishingSpace_eq_span, Submodule.map_span, Set.image_image] congr 1 congr 1 funext i exact Matrix.mulVec_single_one M i def compoundRecovery_coordinate_eq {d ell : ℕ} (s : CompoundIndex d ell) : compoundRecovery (compoundCoordinateHyperplane s) = coordinateVanishingSpace s.val := by ext x rw [mem_compoundRecovery_coordinate, mem_coordinateVanishingSpace] constructor · intro hx i hi obtain ⟨j, rfl⟩ := (Set.powersetCard.mem_range_ofFinEmbEquiv_symm_iff_mem s i).mpr hi exact hx j · intro hx j apply hx exact (Set.powersetCard.mem_range_ofFinEmbEquiv_symm_iff_mem s _).mp ⟨j, rfl⟩ def compoundCoordinateHyperplane_eq_vanishing {d ell : ℕ} (s : CompoundIndex d ell) : compoundCoordinateHyperplane s = coordinateVanishingSpace {s} := by classical ext x simp [mem_compoundCoordinateHyperplane, mem_coordinateVanishingSpace] def compound_hyperplane_span_eq_map {d ell : ℕ} (M : Matrix (Fin d) (Fin d) ℚ) (s : CompoundIndex d ell) : Submodule.span ℚ ((compoundMatrix ell M).col '' {t | t ≠ s}) = (compoundCoordinateHyperplane s).map (Matrix.toLin' (compoundMatrix ell M)) := by classical rw [compoundCoordinateHyperplane_eq_vanishing, coordinateVanishingSpace_map_matrix] simp def compoundRecovery_span_except {d ell : ℕ} (M : Matrix (Fin d) (Fin d) ℚ) (hM : M.det ≠ 0) (s : CompoundIndex d ell) : compoundRecovery (Submodule.span ℚ ((compoundMatrix ell M).col '' {t | t ≠ s})) = Submodule.span ℚ (M.col '' {i | i ∉ s.val}) := by rw [compound_hyperplane_span_eq_map, compoundRecovery_map M hM, compoundRecovery_coordinate_eq, coordinateVanishingSpace_map_matrix] def finite_compound_hyperplane_recovery {d ell : ℕ} (hell : 0 < ell) (F : Finset (Submodule ℚ (CompoundIndex d ell → ℚ))) (hF : ∀ H ∈ F, H ≠ ⊤) : ∃ G : Finset (Submodule ℚ (Fin d → ℚ)), (∀ V ∈ G, V ≠ ⊤) ∧ ∀ (M : Matrix (Fin d) (Fin d) ℚ), M.det ≠ 0 → ∀ s : CompoundIndex d ell, Submodule.span ℚ ((compoundMatrix ell M).col '' {t | t ≠ s}) ∈ F → Submodule.span ℚ (M.col '' {i | i ∉ s.val}) ∈ G := by classical refine ⟨F.image compoundRecovery, ?_, ?_⟩ · intro V hV obtain ⟨H, hH, rfl⟩ := Finset.mem_image.mp hV exact compoundRecovery_ne_top hell H (hF H hH) · intro M hM s hs exact Finset.mem_image.mpr ⟨_, hs, compoundRecovery_span_except M hM s⟩ end end Bounty end SubmissionComponent_CompoundHyperplaneRecovery /- Component CompoundPrefixRecovery; SHA256 66e943858f76ab65cf702a8e9cc60f9d96a156756ef627dded008ba12ff1481f -/ section SubmissionComponent_CompoundPrefixRecovery /- The canonical tail compound hyperplane recovers exactly the original prefix. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def matrix_prefix_image_eq_range {d k : ℕ} (hk : k ≤ d) (M : Matrix (Fin d) (Fin d) ℚ) : M.col '' {i | i.val < k} = Set.range (fun i : Fin k => M.col (i.castLE hk)) := by ext x constructor · rintro ⟨i, hi, rfl⟩ exact ⟨⟨i.val, hi⟩, rfl⟩ · rintro ⟨i, rfl⟩ exact ⟨i.castLE hk, i.isLt, rfl⟩ def finite_compound_prefix_recovery {d k : ℕ} (hk : k < d) (F : Finset (Submodule ℚ (CompoundIndex d (d - k) → ℚ))) (hF : ∀ H ∈ F, H ≠ ⊤) : ∃ G : Finset (Submodule ℚ (Fin d → ℚ)), (∀ V ∈ G, V ≠ ⊤) ∧ ∀ (M : Matrix (Fin d) (Fin d) ℚ), M.det ≠ 0 → Submodule.span ℚ ((compoundMatrix (d - k) M).col '' {t | t ≠ compoundTailIndex d k}) ∈ F → Submodule.span ℚ (Set.range (fun i : Fin k => M.col (i.castLE hk.le))) ∈ G := by obtain ⟨G, hG, hcover⟩ := finite_compound_hyperplane_recovery (Nat.sub_pos_of_lt hk) F hF refine ⟨G, hG, ?_⟩ intro M hM hmem have hh := hcover M hM (compoundTailIndex d k) hmem simpa only [compoundIndex_mem_tail, not_le, matrix_prefix_image_eq_range hk.le] using hh end end Bounty end SubmissionComponent_CompoundPrefixRecovery /- Component VaryingProfilePrefixFamilies; SHA256 547289eb7f89beb1ade727de55e1c63c382aaff003ca252b27b0d5713c022625 -/ section SubmissionComponent_VaryingProfilePrefixFamilies /- Actual bounded compound profiles give a finite family of proper original prefix spans. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def exists_finite_varying_profile_prefix_family {d k : ℕ} (hkpos : 1 ≤ k) (hk : k < d) (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (c : ℝ → Fin 3 → CompoundIndex d (d - k) → ℝ) (M ρ : ℝ) (hρ : 0 < ρ) (S : Set ℝ) (hS : ∀ q ∈ S, 0 ≤ q) (hcBound : ∀ q ∈ S, ∀ v i, |c q v i| ≤ M) (hcSum : ∀ q ∈ S, (∑ v, ∑ i, c q v i) ≤ -ρ) (H : ℝ → Matrix (Fin d) (Fin d) ℤ) (hH : ∀ q ∈ S, ((H q).map (Int.castRingHom ℚ)).det ≠ 0) (hInf : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → ‖(compoundMatrix (d - k) A * compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ))) i t‖ ≤ Real.exp (c q 0 i * q)) (hTwo : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → (padicNorm 2 (compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ Real.exp (c q 1 i * q)) (hThree : ∀ q ∈ S, ∀ i t, t ≠ compoundTailIndex d k → (padicNorm 3 (compoundMatrix (d - k) ((H q).map (Int.castRingHom ℚ)) i t) : ℝ) ≤ Real.exp (c q 2 i * q)) : ∃ G : Finset (Submodule ℚ (Fin d → ℚ)), (∀ V ∈ G, V ≠ ⊤) ∧ ∀ q ∈ S, Submodule.span ℚ (((H q).map (Int.castRingHom ℚ)).col '' {i | i.val < k}) ∈ G := by obtain ⟨F, hF, hcover⟩ := exists_finite_varying_profile_compound_tail_family hkpos hk A hA c M ρ hρ S hS hcBound hcSum H hH hInf hTwo hThree obtain ⟨G, hG, hprefix⟩ := finite_compound_prefix_recovery hk F hF refine ⟨G, hG, ?_⟩ intro q hq have hh := hprefix ((H q).map (Int.castRingHom ℚ)) (hH q hq) (hcover q hq) simpa only [matrix_prefix_image_eq_range hk.le] using hh end end Bounty end SubmissionComponent_VaryingProfilePrefixFamilies /- Component ActualLocalValueBounds; SHA256 9e0824591f0829076dbf6db3287517e909c0db7c64e17a0b9aae1ee6a2796414 -/ section SubmissionComponent_ActualLocalValueBounds /- Actual rational matrix values and finite-place coordinates lie in a uniform logarithmic box. The constants depend only on the fixed matrix. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def matrixEntryBound {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) : ℝ := 1 + ∑ i, ∑ j, ‖A i j‖ def matrixEntryBound_ge_one {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) : 1 ≤ matrixEntryBound A := by have hh : 0 ≤ ∑ i, ∑ j, ‖A i j‖ := Finset.sum_nonneg (fun i _ => Finset.sum_nonneg (fun j _ => norm_nonneg _)) unfold matrixEntryBound linarith def rational_matrix_integer_norm_upper {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (x : Fin d → ℤ) (hx : x ≠ 0) (i : Fin d) : ‖A.mulVec (fun j => (x j : ℚ)) i‖ ≤ matrixEntryBound A * integerVectorMax x := by have hH : 0 ≤ integerVectorMax x := (by norm_num : (0 : ℝ) ≤ 1).trans (integerVectorMax_ge_one x hx) have hrow : (∑ j, ‖A i j‖) ≤ matrixEntryBound A := by have hh : (∑ j, ‖A i j‖) ≤ ∑ k, ∑ j, ‖A k j‖ := Finset.single_le_sum (fun k _ => Finset.sum_nonneg (fun j _ => norm_nonneg (A k j))) (Finset.mem_univ i) unfold matrixEntryBound linarith calc _ ≤ ∑ j, ‖A i j * (x j : ℚ)‖ := norm_sum_le _ _ _ ≤ ∑ j, ‖A i j‖ * integerVectorMax x := by apply Finset.sum_le_sum intro j _ rw [norm_mul, Int.norm_cast_rat, Int.norm_eq_abs] exact mul_le_mul_of_nonneg_left (integer_coord_abs_le_max x j) (norm_nonneg _) _ = (∑ j, ‖A i j‖) * integerVectorMax x := (Finset.sum_mul _ _ _).symm _ ≤ _ := mul_le_mul_of_nonneg_right hrow hH def rational_matrix_integer_norm_lower {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (D : ℤ) (hD : 0 < D) (B : Matrix (Fin d) (Fin d) ℤ) (hB : ∀ i j, (B i j : ℚ) = (D : ℚ) * A i j) (x : Fin d → ℤ) (i : Fin d) (hi : A.mulVec (fun j => (x j : ℚ)) i ≠ 0) : 1 / (D : ℝ) ≤ ‖A.mulVec (fun j => (x j : ℚ)) i‖ := by apply nonzero_rational_scaled_integer_norm_lower _ D (∑ j, B i j * x j) hD hi simp only [Matrix.mulVec, dotProduct, Finset.mul_sum, Int.cast_sum, Int.cast_mul, hB] apply Finset.sum_congr rfl intro j _ ring def actualThreePlaceValues {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (x : Fin d → ℤ) : Fin 3 → Fin d → ℝ := ![(fun i => ‖A.mulVec (fun j => (x j : ℚ)) i‖), (fun i => (padicNorm 2 (x i : ℚ) : ℝ)), (fun i => (padicNorm 3 (x i : ℚ) : ℝ))] def actualThreePlaceValues_finite_le_one {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) (x : Fin d → ℤ) : ∀ v i, v ≠ 0 → actualThreePlaceValues A x v i ≤ 1 := by intro v i hv fin_cases v · exact (hv rfl).elim · change (padicNorm 2 (x i : ℚ) : ℝ) ≤ 1 exact_mod_cast padicNorm.of_int (p := 2) (x i) · change (padicNorm 3 (x i : ℚ) : ℝ) ≤ 1 exact_mod_cast padicNorm.of_int (p := 3) (x i) def exists_actual_three_place_log_bounds {d : ℕ} (A : Matrix (Fin d) (Fin d) ℚ) : ∃ M : ℝ, 1 ≤ M ∧ ∀ (q : ℝ) (x : Fin d → ℤ), 1 ≤ q → x ≠ 0 → integerVectorMax x ≤ Real.exp q → (∀ i, x i ≠ 0) → (∀ i, A.mulVec (fun j => (x j : ℚ)) i ≠ 0) → ∀ v i, Real.exp (-M * q) ≤ actualThreePlaceValues A x v i ∧ actualThreePlaceValues A x v i ≤ Real.exp (M * q) := by obtain ⟨D, hD, B, hB⟩ := exists_integer_scaled_rational_matrix A have hDr : (0 : ℝ) < D := by exact_mod_cast hD have hD1 : (1 : ℝ) ≤ D := by exact_mod_cast (show (1 : ℤ) ≤ D by omega) let C := matrixEntryBound A have hC1 : 1 ≤ C := matrixEntryBound_ge_one A have hC : 0 < C := lt_of_lt_of_le (by norm_num) hC1 have hlogD : 0 ≤ Real.log (D : ℝ) := Real.log_nonneg hD1 have hlogC : 0 ≤ Real.log C := Real.log_nonneg hC1 let M : ℝ := 1 + Real.log (D : ℝ) + Real.log C have hM : 1 ≤ M := by dsimp [M]; linarith refine ⟨M, hM, ?_⟩ intro q x hq hx hH hxn hAx v i have hq0 : 0 ≤ q := (by norm_num : (0 : ℝ) ≤ 1).trans hq have hM0 : 0 ≤ M := (by norm_num : (0 : ℝ) ≤ 1).trans hM have hMq : q ≤ M * q := by nlinarith have hH0 : 0 < integerVectorMax x := lt_of_lt_of_le (by norm_num) (integerVectorMax_ge_one x hx) have hloInf : Real.exp (-M * q) ≤ 1 / (D : ℝ) := by calc _ ≤ Real.exp (-Real.log (D : ℝ)) := Real.exp_le_exp.mpr (by have hMm : M ≤ M * q := by nlinarith dsimp [M] at hMm ⊢ linarith) _ = _ := by rw [Real.exp_neg, Real.exp_log hDr, one_div] have hhiInf : C * Real.exp q ≤ Real.exp (M * q) := by calc _ = Real.exp (Real.log C + q) := by rw [Real.exp_add, Real.exp_log hC] _ ≤ _ := Real.exp_le_exp.mpr (by dsimp [M]; nlinarith) have hloFin (p : ℕ) (hp : p.Prime) : Real.exp (-M * q) ≤ (padicNorm p (x i : ℚ) : ℝ) := by calc _ ≤ Real.exp (-q) := Real.exp_le_exp.mpr (by linarith) _ = 1 / Real.exp q := by rw [Real.exp_neg, one_div] _ ≤ 1 / integerVectorMax x := one_div_le_one_div_of_le hH0 hH _ ≤ _ := padicNorm_integer_le_height_reciprocal p hp x i (hxn i) have hhiFin (p : ℕ) [Fact p.Prime] : (padicNorm p (x i : ℚ) : ℝ) ≤ Real.exp (M * q) := by have hh : (padicNorm p (x i : ℚ) : ℝ) ≤ 1 := by exact_mod_cast padicNorm.of_int (p := p) (x i) exact hh.trans (Real.one_le_exp (mul_nonneg hM0 hq0)) fin_cases v · exact ⟨hloInf.trans (rational_matrix_integer_norm_lower A D hD B hB x i (hAx i)), (rational_matrix_integer_norm_upper A x hx i).trans ((mul_le_mul_of_nonneg_left hH hC.le).trans hhiInf)⟩ · exact ⟨hloFin 2 (by norm_num), hhiFin 2⟩ · exact ⟨hloFin 3 (by norm_num), hhiFin 3⟩ def primitive_integer_mulHeight {d : ℕ} (hd : 0 < d) (x : Fin d → ℤ) (hx : Finset.univ.gcd x = 1) : Height.mulHeight (fun i => (x i : ℚ)) = integerVectorMax x := by let : NeZero d := ⟨hd.ne'⟩ exact Rat.mulHeight_eq_max_abs_of_gcd_eq_one hx def primitive_integer_exp_logHeight {d : ℕ} (hd : 0 < d) (x : Fin d → ℤ) (hx : Finset.univ.gcd x = 1) : Real.exp (Height.logHeight (fun i => (x i : ℚ))) = integerVectorMax x := by rw [Height.logHeight_eq_log_mulHeight, Real.exp_log (Height.mulHeight_pos _)] exact primitive_integer_mulHeight hd x hx end end Bounty end SubmissionComponent_ActualLocalValueBounds /- Component ActualProductProfiles; SHA256 f89629e531498930902081c66e4ce99bd6d6ef3e3e5876a1ba69f28924b36691 -/ section SubmissionComponent_ActualProductProfiles /- Fixed finite exponent profiles for actual local values of primitive integer points, with the parameter equal to their projective log height. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def exists_finite_actual_three_place_profiles {d : ℕ} (hd : 0 < d) (A : Matrix (Fin d) (Fin d) ℚ) (ρ : ℝ) (hρ : 0 < ρ) : ∃ M : ℝ, 1 ≤ M ∧ ∃ C : Finset (Fin 3 → Fin d → ℝ), (∀ c ∈ C, (∀ v i, |c v i| ≤ M + ρ / (6 * d)) ∧ (∑ v, ∑ i, c v i) ≤ -ρ / 2 ∧ (∀ v i, v ≠ 0 → c v i ≤ 0)) ∧ ∀ (q : ℝ) (x : Fin d → ℤ), 1 ≤ q → x ≠ 0 → integerVectorMax x ≤ Real.exp q → (∀ i, x i ≠ 0) → (∀ i, A.mulVec (fun j => (x j : ℚ)) i ≠ 0) → (∏ v, ∏ i, actualThreePlaceValues A x v i) ≤ Real.exp (-ρ * q) → ∃ c ∈ C, ∀ v i, actualThreePlaceValues A x v i ≤ Real.exp (c v i * q) := by obtain ⟨M, hM, hb⟩ := exists_actual_three_place_log_bounds A obtain ⟨C, hC, hcover⟩ := exists_finite_three_place_product_profiles d hd M ρ hρ refine ⟨M, hM, C, hC, ?_⟩ intro q x hq hx hH hxn hAx hprod have hbounds := hb q x hq hx hH hxn hAx exact hcover q (actualThreePlaceValues A x) (lt_of_lt_of_le (by norm_num) hq) (fun v i => (hbounds v i).1) (fun v i => (hbounds v i).2) hprod (actualThreePlaceValues_finite_le_one A x) def exists_finite_primitive_three_place_profiles {d : ℕ} (hd : 0 < d) (A : Matrix (Fin d) (Fin d) ℚ) (ρ : ℝ) (hρ : 0 < ρ) : ∃ M : ℝ, 1 ≤ M ∧ ∃ C : Finset (Fin 3 → Fin d → ℝ), (∀ c ∈ C, (∀ v i, |c v i| ≤ M + ρ / (6 * d)) ∧ (∑ v, ∑ i, c v i) ≤ -ρ / 2 ∧ (∀ v i, v ≠ 0 → c v i ≤ 0)) ∧ ∀ x : Fin d → ℤ, Finset.univ.gcd x = 1 → 1 ≤ Height.logHeight (fun i => (x i : ℚ)) → (∀ i, x i ≠ 0) → (∀ i, A.mulVec (fun j => (x j : ℚ)) i ≠ 0) → (∏ v, ∏ i, actualThreePlaceValues A x v i) ≤ Height.mulHeight (fun i => (x i : ℚ)) ^ (-ρ) → ∃ c ∈ C, ∀ v i, actualThreePlaceValues A x v i ≤ Real.exp (c v i * Height.logHeight (fun i => (x i : ℚ))) := by obtain ⟨M, hM, C, hC, hcover⟩ := exists_finite_actual_three_place_profiles hd A ρ hρ refine ⟨M, hM, C, hC, ?_⟩ intro x hprim hq hxn hAx hprod have hx : x ≠ 0 := by intro h exact hxn ⟨0, hd⟩ (congrFun h ⟨0, hd⟩) have hprod' : (∏ v, ∏ i, actualThreePlaceValues A x v i) ≤ Real.exp (-ρ * Height.logHeight (fun i => (x i : ℚ))) := by convert hprod using 1 rw [Real.rpow_def_of_pos (Height.mulHeight_pos _), Height.logHeight_eq_log_mulHeight] congr 1 ring exact hcover _ x hq hx (primitive_integer_exp_logHeight hd x hprim).ge hxn hAx hprod' end end Bounty end SubmissionComponent_ActualProductProfiles /- Component FiniteEventGap; SHA256 2a751e67763f8e1e3084fdcbc7f65f0fc1c289decdc2ba54c7a6c124cfaa4b8c -/ section SubmissionComponent_FiniteEventGap /- A fixed-size empty interval among at most 48 event times. -/ namespace Bounty def finite_events_gap (E : Finset ℝ) (hcard : E.card ≤ 48) {L : ℝ} (hL : 0 < L) (a : ℝ) : ∃ t : ℝ, a < t ∧ t + L / 0x64 < a + L ∧ ∀ x ∈ E, x < t ∨ t + L / 0x64 < x := by classical let t : Fin 50 → ℝ := fun j => a + (4 * (j.val : ℝ) + 1) * L / 0xc8 have hsep {i j : Fin 50} (hij : i.val < j.val) : t i + L / 0x64 < t j := by have hR : (i.val : ℝ) + 1 ≤ j.val := by exact_mod_cast (Nat.succ_le_of_lt hij) have hp := mul_le_mul_of_nonneg_right hR hL.le dsimp only [t] nlinarith have hgap : ∃ j : Fin 50, ∀ x ∈ E, x < t j ∨ t j + L / 0x64 < x := by by_contra hh push_neg at hh let f : Fin 50 → E := fun j => ⟨(hh j).choose, (hh j).choose_spec.1⟩ have hf (j : Fin 50) : t j ≤ (f j : ℝ) ∧ (f j : ℝ) ≤ t j + L / 0x64 := (hh j).choose_spec.2 have hinj : Function.Injective f := by intro i j hij apply Fin.ext have he : (f i : ℝ) = (f j : ℝ) := congrArg Subtype.val hij have hi := hf i have hj := hf j by_contra hne rcases lt_or_gt_of_ne hne with hlt | hgt · have hs := hsep hlt linarith · have hs := hsep hgt linarith have hc : 50 ≤ E.card := by simpa using Fintype.card_le_of_injective f hinj omega obtain ⟨j, hj⟩ := hgap refine ⟨t j, ?_, ?_, hj⟩ · have hj0 : (0 : ℝ) ≤ j.val := Nat.cast_nonneg _ have hp := mul_nonneg hj0 hL.le dsimp only [t] nlinarith · have hj49 : (j.val : ℝ) ≤ 49 := by exact_mod_cast (by have hh := j.isLt; omega : j.val ≤ 49) have hp := mul_le_mul_of_nonneg_right hj49 hL.le dsimp only [t] nlinarith end Bounty end SubmissionComponent_FiniteEventGap /- Component SeparatedEventCount; SHA256 3e9cc6c7b4f5e8642d0f5bee936d390507a410aaa0aabd233309789a25d43e77 -/ section SubmissionComponent_SeparatedEventCount /- Count event times separated by half the window length. -/ namespace Bounty def separated_events_card_le_three (E : Finset ℝ) {a L : ℝ} (hL : 0 < L) (hbounds : ∀ x ∈ E, a ≤ x ∧ x ≤ a + L) (hsep : ∀ x ∈ E, ∀ y ∈ E, x ≠ y → L / 2 ≤ |x - y|) : E.card ≤ 3 := by classical have hz (x : E) : 0 ≤ 2 * ((x : ℝ) - a) / L ∧ 2 * ((x : ℝ) - a) / L ≤ 2 := by have hx := hbounds x x.property constructor · exact div_nonneg (by linarith) hL.le · apply (div_le_iff₀ hL).mpr linarith let f : E → ↥(Finset.Icc (0 : ℤ) 2) := fun x => ⟨⌊2 * ((x : ℝ) - a) / L⌋, Finset.mem_Icc.mpr ⟨Int.floor_nonneg.mpr (hz x).1, Int.floor_le_iff.mpr (by norm_num only [Int.cast_ofNat] linarith [(hz x).2])⟩⟩ have hinj : Function.Injective f := by intro x y hf apply Subtype.ext by_contra hxy have heq : ⌊2 * ((x : ℝ) - a) / L⌋ = ⌊2 * ((y : ℝ) - a) / L⌋ := congrArg Subtype.val hf have hh := Int.abs_sub_lt_one_of_floor_eq_floor heq have he : 2 * ((x : ℝ) - a) / L - 2 * ((y : ℝ) - a) / L = 2 * ((x : ℝ) - y) / L := by ring rw [he, abs_div, abs_mul, abs_of_pos hL] at hh norm_num at hh have hsmall := (div_lt_iff₀ hL).mp hh have hlarge := hsep x x.property y y.property hxy linarith have hc := Fintype.card_le_of_injective f hinj simpa using hc end Bounty end SubmissionComponent_SeparatedEventCount /- Component LinearEventWindows; SHA256 bbe21ef6c1c85bfeec8e6c48b48fda451fb6cc20db19df9c45f5f973f8b067e0 -/ section SubmissionComponent_LinearEventWindows /- Finite windows of linearly indexed events and simultaneous gaps for finitely many families. -/ namespace Bounty noncomputable def linearEventWindow (step offset a b : ℝ) (visit : ℕ → Prop) : Finset ℝ := by classical exact ((Finset.range (⌈(b + offset) / step⌉₊ + 1)).filter (fun n => visit n ∧ a ≤ (n : ℝ) * step - offset ∧ (n : ℝ) * step - offset ≤ b)).image (fun n : ℕ => (n : ℝ) * step - offset) def mem_linearEventWindow {step offset a b x : ℝ} {visit : ℕ → Prop} (hstep : 0 < step) : x ∈ linearEventWindow step offset a b visit ↔ ∃ n : ℕ, visit n ∧ x = (n : ℝ) * step - offset ∧ a ≤ x ∧ x ≤ b := by classical constructor · intro hx obtain ⟨n, hn, he⟩ := Finset.mem_image.mp hx obtain ⟨_, hv, hlo, hhi⟩ := Finset.mem_filter.mp hn exact ⟨n, hv, he.symm, he ▸ hlo, he ▸ hhi⟩ · rintro ⟨n, hv, rfl, hlo, hhi⟩ have hnr : (n : ℝ) ≤ (b + offset) / step := (le_div_iff₀ hstep).mpr (by linarith) have hn : n ≤ ⌈(b + offset) / step⌉₊ := by exact_mod_cast hnr.trans (Nat.le_ceil _) exact Finset.mem_image.mpr ⟨n, Finset.mem_filter.mpr ⟨Finset.mem_range.mpr (by omega), hv, hlo, hhi⟩, rfl⟩ def linearEventWindow_card {step offset a L : ℝ} {visit : ℕ → Prop} (hstep : 0 < step) (hL : 0 < L) (hsep : ∀ m n : ℕ, visit m → visit n → m < n → L / 2 ≤ (n : ℝ) * step - (m : ℝ) * step) : (linearEventWindow step offset a (a + L) visit).card ≤ 3 := by apply separated_events_card_le_three _ hL · intro x hx obtain ⟨n, hv, he, hlo, hhi⟩ := (mem_linearEventWindow hstep).mp hx exact ⟨hlo, hhi⟩ · intro x hx y hy hxy obtain ⟨m, hm, rfl, _, _⟩ := (mem_linearEventWindow hstep).mp hx obtain ⟨n, hn, rfl, _, _⟩ := (mem_linearEventWindow hstep).mp hy have hmn : m ≠ n := by rintro rfl; exact hxy rfl rcases lt_or_gt_of_ne hmn with hlt | hgt · have hh := hsep m n hm hn hlt have ha := neg_le_abs (((m : ℝ) * step - offset) - ((n : ℝ) * step - offset)) linarith · have hh := hsep n m hn hm hgt have ha := le_abs_self (((m : ℝ) * step - offset) - ((n : ℝ) * step - offset)) linarith def linear_event_families_gap {ι : Type*} [Fintype ι] (hcard : Fintype.card ι ≤ 16) (step offset : ι → ℝ) (visit : ι → ℕ → Prop) (hstep : ∀ i, 0 < step i) {L : ℝ} (hL : 0 < L) (hsep : ∀ i m n, visit i m → visit i n → m < n → L / 2 ≤ (n : ℝ) * step i - (m : ℝ) * step i) (a : ℝ) : ∃ t : ℝ, a < t ∧ t + L / 0x64 < a + L ∧ ∀ i n, visit i n → (n : ℝ) * step i - offset i < t ∨ t + L / 0x64 < (n : ℝ) * step i - offset i := by classical let E (i : ι) := linearEventWindow (step i) (offset i) a (a + L) (visit i) have hc (i : ι) : (E i).card ≤ 3 := linearEventWindow_card (hstep i) hL (hsep i) have htotal : (Finset.univ.biUnion E).card ≤ 48 := by calc (Finset.univ.biUnion E).card ≤ ∑ i ∈ Finset.univ, (E i).card := Finset.card_biUnion_le _ ≤ ∑ i ∈ (Finset.univ : Finset ι), 3 := Finset.sum_le_sum (fun i _ => hc i) _ = 3 * Fintype.card ι := by simp [mul_comm] _ ≤ 48 := by omega obtain ⟨t, hlo, hhi, hgap⟩ := finite_events_gap (Finset.univ.biUnion E) htotal hL a refine ⟨t, hlo, hhi, ?_⟩ intro i n hv by_cases hna : a ≤ (n : ℝ) * step i - offset i · by_cases hnb : (n : ℝ) * step i - offset i ≤ a + L · have hm : (n : ℝ) * step i - offset i ∈ E i := (mem_linearEventWindow (hstep i)).mpr ⟨n, hv, rfl, hna, hnb⟩ exact hgap _ (Finset.mem_biUnion.mpr ⟨i, Finset.mem_univ i, hm⟩) · exact Or.inr (hhi.trans (lt_of_not_ge hnb)) · exact Or.inl ((lt_of_not_ge hna).trans hlo) end Bounty end SubmissionComponent_LinearEventWindows /- Component CoprimeCount; SHA256 d3495edc8911ccfeed9ad95a1ddfd61d334116e615f37cd5a7c52791c29af056 -/ section SubmissionComponent_CoprimeCount /- Exact counts of the cores, and a uniform error from density one third. -/ namespace Bounty def coprime_six_iff_mod (n : ℕ) : n.Coprime 6 ↔ n % 6 = 1 ∨ n % 6 = 5 := by rw [Nat.coprime_iff_gcd_eq_one, Nat.gcd_comm n 6, Nat.gcd_rec] have hmod : n % 6 < 6 := Nat.mod_lt _ (by omega) interval_cases hm : n % 6 <;> norm_num def coprimeCores_succ (n : ℕ) : coprimeCores (n + 1) = if (n + 1).Coprime 6 then insert (n + 1) (coprimeCores n) else coprimeCores n := by ext q by_cases hc : (n + 1).Coprime 6 · simp only [if_pos hc, coprimeCores, Finset.mem_filter, Finset.mem_Icc, Finset.mem_insert] constructor · rintro ⟨⟨hq1, hqn⟩, hq6⟩ by_cases he : q = n + 1 · exact Or.inl he · exact Or.inr ⟨⟨hq1, by omega⟩, hq6⟩ · rintro (rfl | ⟨⟨hq1, hqn⟩, hq6⟩) · exact ⟨⟨by omega, le_rfl⟩, hc⟩ · exact ⟨⟨hq1, by omega⟩, hq6⟩ · simp only [if_neg hc, coprimeCores, Finset.mem_filter, Finset.mem_Icc] constructor · rintro ⟨⟨hq1, hqn⟩, hq6⟩ have he : q ≠ n + 1 := by intro hh; apply hc; simpa only [← hh] using hq6 exact ⟨⟨hq1, by omega⟩, hq6⟩ · rintro ⟨⟨hq1, hqn⟩, hq6⟩ exact ⟨⟨hq1, by omega⟩, hq6⟩ def coprimeCores_card_succ (n : ℕ) : (coprimeCores (n + 1)).card = (coprimeCores n).card + if (n + 1).Coprime 6 then 1 else 0 := by rw [coprimeCores_succ] have hn : n + 1 ∉ coprimeCores n := by simp [coprimeCores] by_cases hc : (n + 1).Coprime 6 · rw [if_pos hc, if_pos hc, Finset.card_insert_of_notMem hn] · simp only [if_neg hc, Nat.add_zero] def coprimeCores_card (n : ℕ) : (coprimeCores n).card = (n + 5) / 6 + (n + 1) / 6 := by induction n with | zero => norm_num [coprimeCores] | succ n ih => rw [coprimeCores_card_succ, ih] simp only [coprime_six_iff_mod] split_ifs <;> omega def coprimeCores_card_error (n : ℕ) : |(coprimeCores n).card - (n : ℝ) / 3| ≤ 1 := by have hcount := coprimeCores_card n have hlo : n ≤ 3 * (coprimeCores n).card + 3 := by omega have hhi : 3 * (coprimeCores n).card ≤ n + 3 := by omega have hlo' : (n : ℝ) ≤ 3 * (coprimeCores n).card + 3 := by exact_mod_cast hlo have hhi' : (3 : ℝ) * (coprimeCores n).card ≤ n + 3 := by exact_mod_cast hhi rw [abs_le] constructor <;> linarith end Bounty end SubmissionComponent_CoprimeCount /- Component CoreConvolution; SHA256 8fda3cecf413fae36aeb718236e89c2e458b686f124119f34b2049d30b18ee99 -/ section SubmissionComponent_CoreConvolution /- Write the extremal bound as a signed convolution with the core-count function. -/ namespace Bounty noncomputable def signedRank (n : ℕ) : ℝ := by classical exact (smoothRankBound n : ℝ) - if badWindow n then 1 else 0 def signedRank_zero : signedRank 0 = 0 := by have hb : ¬badWindow 0 := by intro h; have hh := badWindow_ge_ten h; omega simp [signedRank, hb, smoothRankBound] def globalUpper_cast_sum (n : ℕ) : (globalUpper n : ℝ) = ∑ q ∈ coprimeCores n, signedRank (n / q) := by classical have hle : (lossCores n).card ≤ ∑ q ∈ coprimeCores n, smoothRankBound (n / q) := by have hh := forkFree_card_with_losses (n := n) (A := ∅) (by simp) (by simpa only [Finset.coe_empty] using forkFree_empty) simpa only [Finset.card_empty, zero_add] using hh unfold globalUpper rw [Nat.cast_sub hle] simp only [lossCores, Finset.card_filter, Nat.cast_sum] rw [← Finset.sum_sub_distrib] apply Finset.sum_congr rfl intro q hq by_cases hb : badWindow (n / q) <;> simp [signedRank, hb] def sum_rank_jumps (g : ℕ → ℝ) (hg : g 0 = 0) (n m : ℕ) (hm : m ≤ n) : g m = ∑ j ∈ Finset.range n, if j < m then g (j + 1) - g j else 0 := by have he : (Finset.range n).filter (fun j => j < m) = Finset.range m := by ext j simp only [Finset.mem_filter, Finset.mem_range] omega rw [← Finset.sum_filter, he, Finset.sum_range_sub, hg, sub_zero] def coprimeCores_filter_quotient (n j : ℕ) : (coprimeCores n).filter (fun q => j < n / q) = coprimeCores (n / (j + 1)) := by ext q simp only [coprimeCores, Finset.mem_filter, Finset.mem_Icc] constructor · rintro ⟨⟨⟨hq1, _⟩, hq6⟩, hj⟩ have hm : (j + 1) * q ≤ n := (Nat.le_div_iff_mul_le hq1).mp (by omega) have hqhi : q ≤ n / (j + 1) := (Nat.le_div_iff_mul_le (Nat.succ_pos j)).mpr (by simpa only [Nat.mul_comm] using hm) exact ⟨⟨hq1, hqhi⟩, hq6⟩ · rintro ⟨⟨hq1, hqhi⟩, hq6⟩ have hm : q * (j + 1) ≤ n := (Nat.le_div_iff_mul_le (Nat.succ_pos j)).mp hqhi have hj : j + 1 ≤ n / q := (Nat.le_div_iff_mul_le hq1).mpr (by simpa only [Nat.mul_comm] using hm) exact ⟨⟨⟨hq1, hqhi.trans (Nat.div_le_self _ _)⟩, hq6⟩, by omega⟩ def sum_over_cores_eq_jumps (g : ℕ → ℝ) (hg : g 0 = 0) (n : ℕ) : (∑ q ∈ coprimeCores n, g (n / q)) = ∑ j ∈ Finset.range n, (g (j + 1) - g j) * ((coprimeCores (n / (j + 1))).card : ℝ) := by classical calc (∑ q ∈ coprimeCores n, g (n / q)) = ∑ q ∈ coprimeCores n, ∑ j ∈ Finset.range n, if j < n / q then g (j + 1) - g j else 0 := by apply Finset.sum_congr rfl intro q hq exact sum_rank_jumps g hg n (n / q) (Nat.div_le_self n q) _ = ∑ j ∈ Finset.range n, ∑ q ∈ coprimeCores n, if j < n / q then g (j + 1) - g j else 0 := Finset.sum_comm _ = _ := by apply Finset.sum_congr rfl intro j hj rw [← Finset.sum_filter, coprimeCores_filter_quotient] simp only [Finset.sum_const, nsmul_eq_mul, mul_comm] noncomputable def signedRankJump (j : ℕ) : ℝ := signedRank (j + 1) - signedRank j def globalUpper_cast_jumps (n : ℕ) : (globalUpper n : ℝ) = ∑ j ∈ Finset.range n, signedRankJump j * ((coprimeCores (n / (j + 1))).card : ℝ) := by rw [globalUpper_cast_sum, sum_over_cores_eq_jumps signedRank signedRank_zero] rfl end Bounty end SubmissionComponent_CoreConvolution /- Component ObstructionJumps; SHA256 98ee629ddd001c1b697421382d013d544107233c299e4a1b0766a16b39d4ecb7 -/ section SubmissionComponent_ObstructionJumps /- Changes in the obstruction indicator occur on four geometric sequences. -/ namespace Bounty noncomputable def obstructionIndicator (n : ℕ) : ℝ := by classical exact if badWindow n then 1 else 0 def obstructionEndpoint (m : ℕ) : Prop := (∃ j, m = 4 ^ j) ∨ (∃ j, m = 5 * 4 ^ j) ∨ (∃ b, m = 10 * 3 ^ b) ∨ (∃ b, m = 12 * 3 ^ b) def badWindow_enter {n : ℕ} (hn : ¬badWindow n) (hs : badWindow (n + 1)) : (∃ j, n + 1 = 4 ^ j) ∨ (∃ b, n + 1 = 10 * 3 ^ b) := by obtain ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ := hs by_cases he4 : n + 1 = 4 ^ j · exact Or.inl ⟨j, he4⟩ by_cases he3 : n + 1 = 10 * 3 ^ b · exact Or.inr ⟨b, he3⟩ exact (hn ⟨j, b, by omega, by omega, by omega, by omega⟩).elim def badWindow_exit {n : ℕ} (hn : badWindow n) (hs : ¬badWindow (n + 1)) : (∃ j, n + 1 = 5 * 4 ^ j) ∨ (∃ b, n + 1 = 12 * 3 ^ b) := by obtain ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ := hn have h3pos : 0 < (3 : ℕ) ^ b := by positivity have hj : j ≠ 0 := by intro he simp only [he, pow_zero] at h4hi omega obtain ⟨j, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hj have h4pow : (4 : ℕ) ^ (j + 1) = 4 ^ j * 4 := pow_succ 4 j by_cases he4 : n + 1 = 5 * 4 ^ j · exact Or.inl ⟨j, he4⟩ by_cases he3 : n + 1 = 12 * 3 ^ b · exact Or.inr ⟨b, he3⟩ exact (hs ⟨j + 1, b, by omega, by omega, by omega, by omega⟩).elim def obstruction_change_endpoint {n : ℕ} (h : obstructionIndicator (n + 1) ≠ obstructionIndicator n) : obstructionEndpoint (n + 1) := by classical by_cases hs : badWindow (n + 1) · by_cases hn : badWindow n · exact (h (by simp [obstructionIndicator, hn, hs])).elim · rcases badWindow_enter hn hs with h4 | h3 · exact Or.inl h4 · exact Or.inr (Or.inr (Or.inl h3)) · by_cases hn : badWindow n · rcases badWindow_exit hn hs with h4 | h3 · exact Or.inr (Or.inl h4) · exact Or.inr (Or.inr (Or.inr h3)) · exact (h (by simp [obstructionIndicator, hn, hs])).elim def obstruction_jump_abs_le_one (n : ℕ) : |obstructionIndicator (n + 1) - obstructionIndicator n| ≤ 1 := by classical by_cases hs : badWindow (n + 1) <;> by_cases hn : badWindow n <;> norm_num [obstructionIndicator, hn, hs] end Bounty end SubmissionComponent_ObstructionJumps /- Component GeometricSupport; SHA256 fe012c70b951305de3c432c8e1992cd49aa85e02a370e7be8a3e5ef6c65ff895 -/ section SubmissionComponent_GeometricSupport /- Weighted indicators of geometric sets, and summability of obstruction jumps. -/ namespace Bounty noncomputable def geometricEndpointTerm (a b m : ℕ) : ℝ := by classical exact if ∃ j, m = a * b ^ j then 1 / (m : ℝ) else 0 def geometricEndpointTerm_nonneg (a b m : ℕ) : 0 ≤ geometricEndpointTerm a b m := by classical unfold geometricEndpointTerm split_ifs <;> positivity def geometricEndpointTerm_at {a b m : ℕ} (h : ∃ j, m = a * b ^ j) : geometricEndpointTerm a b m = 1 / (m : ℝ) := by classical simp only [geometricEndpointTerm, if_pos h] def geometricEndpointTerm_summable {a b : ℕ} (ha : 0 < a) (hb : 1 < b) : Summable (geometricEndpointTerm a b) := by classical have hi : Function.Injective (fun j : ℕ => a * b ^ j) := by intro i j hij apply Nat.pow_right_injective (by omega : 2 ≤ b) nlinarith apply (hi.summable_iff (f := geometricEndpointTerm a b) ?_).mp · have hs : Summable (fun j : ℕ => (1 / (a : ℝ)) / (b : ℝ) ^ j) := weighted_summable (by exact_mod_cast hb) (fun _ => le_refl |1 / (a : ℝ)|) apply hs.congr intro j simp only [Function.comp_apply, geometricEndpointTerm_at ⟨j, rfl⟩, Nat.cast_mul, Nat.cast_pow, div_div] · intro m hm have hn : ¬∃ j, m = a * b ^ j := by simpa only [Set.mem_range, eq_comm] using hm simp only [geometricEndpointTerm, if_neg hn] def geometricEndpointTerm_summable_shift {a b : ℕ} (ha : 0 < a) (hb : 1 < b) : Summable (fun n : ℕ => geometricEndpointTerm a b (n + 1)) := (summable_nat_add_iff 1).mpr (geometricEndpointTerm_summable ha hb) def obstruction_jump_geometric_bound (n : ℕ) : |obstructionIndicator (n + 1) - obstructionIndicator n| / (n + 1 : ℕ) ≤ geometricEndpointTerm 1 4 (n + 1) + geometricEndpointTerm 5 4 (n + 1) + geometricEndpointTerm 10 3 (n + 1) + geometricEndpointTerm 12 3 (n + 1) := by have h1 := geometricEndpointTerm_nonneg 1 4 (n + 1) have h5 := geometricEndpointTerm_nonneg 5 4 (n + 1) have h10 := geometricEndpointTerm_nonneg 10 3 (n + 1) have h12 := geometricEndpointTerm_nonneg 12 3 (n + 1) by_cases he : obstructionIndicator (n + 1) = obstructionIndicator n · simp only [he, sub_self, abs_zero, zero_div] linarith · have hb := div_le_div_of_nonneg_right (obstruction_jump_abs_le_one n) (Nat.cast_nonneg (α := ℝ) (n + 1)) rcases obstruction_change_endpoint he with h | h | h | h · have ht := geometricEndpointTerm_at (a := 1) (b := 4) (by simpa only [one_mul] using h) linarith · have ht := geometricEndpointTerm_at h linarith · have ht := geometricEndpointTerm_at h linarith · have ht := geometricEndpointTerm_at h linarith def obstruction_jumps_summable : Summable (fun n : ℕ => |obstructionIndicator (n + 1) - obstructionIndicator n| / (n + 1 : ℕ)) := by have h1 := geometricEndpointTerm_summable_shift (a := 1) (b := 4) (by norm_num) (by norm_num) have h5 := geometricEndpointTerm_summable_shift (a := 5) (b := 4) (by norm_num) (by norm_num) have h10 := geometricEndpointTerm_summable_shift (a := 10) (b := 3) (by norm_num) (by norm_num) have h12 := geometricEndpointTerm_summable_shift (a := 12) (b := 3) (by norm_num) (by norm_num) apply (((h1.add h5).add h10).add h12).of_norm_bounded intro n rw [Real.norm_eq_abs, abs_of_nonneg (by positivity : 0 ≤ |obstructionIndicator (n + 1) - obstructionIndicator n| / (n + 1 : ℕ))] exact obstruction_jump_geometric_bound n end Bounty end SubmissionComponent_GeometricSupport /- Component RankJumps; SHA256 bc15f246c20c419c82f9b29f9d97eca9e81b4ceecb888445aea0284ee5e7def8 -/ section SubmissionComponent_RankJumps /- Rank jumps have bounded size and lie on three geometric sequences. -/ namespace Bounty def rankEndpoint (m : ℕ) : Prop := (∃ j, m = 2 ^ j) ∨ (∃ j, m = 3 ^ j) ∨ (∃ j, m = 2 * 3 ^ j) def nat_log_succ_eq_of_not_power {b n : ℕ} (hb : 1 < b) (he : n + 1 ≠ b ^ Nat.log b (n + 1)) : Nat.log b (n + 1) = Nat.log b n := by have hlo := Nat.pow_log_le_self b (Nat.succ_ne_zero n) have hhi := Nat.lt_pow_succ_log_self hb (n + 1) simp only [Nat.succ_eq_add_one] at hlo hhi symm exact Nat.log_eq_of_pow_le_of_lt_pow (by omega) (by omega) def nat_log_succ_bounds {b n : ℕ} (hb : 1 < b) (hn : 0 < n) : Nat.log b n ≤ Nat.log b (n + 1) ∧ Nat.log b (n + 1) ≤ Nat.log b n + 1 := by constructor · exact Nat.log_mono_right (by omega) · have hnle : n + 1 ≤ n * b := by nlinarith have hh := Nat.log_mono_right (b := b) hnle rwa [Nat.log_mul_base hb (ne_of_gt hn)] at hh def smoothRank_change_endpoint {n : ℕ} (h : smoothRankBound (n + 1) ≠ smoothRankBound n) : rankEndpoint (n + 1) := by by_cases hn : n = 0 · subst n exact Or.inl ⟨0, by norm_num⟩ by_cases h2 : n + 1 = 2 ^ Nat.log 2 (n + 1) · exact Or.inl ⟨_, h2⟩ by_cases h3 : n + 1 = 3 ^ Nat.log 3 (n + 1) · exact Or.inr (Or.inl ⟨_, h3⟩) by_cases he : n + 1 = 2 * 3 ^ Nat.log 3 n · exact Or.inr (Or.inr ⟨_, he⟩) have hl2 := nat_log_succ_eq_of_not_power (by norm_num : 1 < 2) h2 have hl3 := nat_log_succ_eq_of_not_power (by norm_num : 1 < 3) h3 have hc : (2 * 3 ^ Nat.log 3 n ≤ n + 1) ↔ (2 * 3 ^ Nat.log 3 n ≤ n) := by omega apply False.elim apply h simp only [smoothRankBound, hn, Nat.succ_ne_zero, ↓reduceIte, hl2, hl3, hc] def smoothRank_succ_bounds (n : ℕ) : smoothRankBound (n + 1) ≤ smoothRankBound n + 3 ∧ smoothRankBound n ≤ smoothRankBound (n + 1) + 3 := by by_cases hn : n = 0 · subst n norm_num [smoothRankBound] have h2 := nat_log_succ_bounds (b := 2) (by norm_num) (by omega : 0 < n) have h3 := nat_log_succ_bounds (b := 3) (by norm_num) (by omega : 0 < n) simp only [smoothRankBound, hn, Nat.succ_ne_zero, ↓reduceIte] split_ifs <;> omega def smoothRank_jump_abs (n : ℕ) : |(smoothRankBound (n + 1) : ℝ) - smoothRankBound n| ≤ 3 := by have hh := smoothRank_succ_bounds n have hlo : (smoothRankBound (n + 1) : ℝ) ≤ smoothRankBound n + 3 := by exact_mod_cast hh.1 have hhi : (smoothRankBound n : ℝ) ≤ smoothRankBound (n + 1) + 3 := by exact_mod_cast hh.2 rw [abs_le] constructor <;> linarith end Bounty end SubmissionComponent_RankJumps /- Component JumpSummability; SHA256 fd83812df6869dbb62b2b08ed3d540559b8755bdab642a09f419f6ff42ea744c -/ section SubmissionComponent_JumpSummability /- Absolute weighted summability of every jump in the exact extremal formula. -/ namespace Bounty def rank_jump_geometric_bound (n : ℕ) : |(smoothRankBound (n + 1) : ℝ) - smoothRankBound n| / (n + 1 : ℕ) ≤ 3 * (geometricEndpointTerm 1 2 (n + 1) + geometricEndpointTerm 1 3 (n + 1) + geometricEndpointTerm 2 3 (n + 1)) := by have h2 := geometricEndpointTerm_nonneg 1 2 (n + 1) have h3 := geometricEndpointTerm_nonneg 1 3 (n + 1) have h23 := geometricEndpointTerm_nonneg 2 3 (n + 1) by_cases he : smoothRankBound (n + 1) = smoothRankBound n · simp only [he, sub_self, abs_zero, zero_div] linarith · have hb := div_le_div_of_nonneg_right (smoothRank_jump_abs n) (Nat.cast_nonneg (α := ℝ) (n + 1)) rcases smoothRank_change_endpoint he with h | h | h · have ht := geometricEndpointTerm_at (a := 1) (b := 2) (by simpa only [one_mul] using h) rw [show (3 : ℝ) / (n + 1 : ℕ) = 3 * (1 / (n + 1 : ℕ)) by ring] at hb linarith · have ht := geometricEndpointTerm_at (a := 1) (b := 3) (by simpa only [one_mul] using h) rw [show (3 : ℝ) / (n + 1 : ℕ) = 3 * (1 / (n + 1 : ℕ)) by ring] at hb linarith · have ht := geometricEndpointTerm_at h rw [show (3 : ℝ) / (n + 1 : ℕ) = 3 * (1 / (n + 1 : ℕ)) by ring] at hb linarith def rank_jumps_summable : Summable (fun n : ℕ => |(smoothRankBound (n + 1) : ℝ) - smoothRankBound n| / (n + 1 : ℕ)) := by have h2 := geometricEndpointTerm_summable_shift (a := 1) (b := 2) (by norm_num) (by norm_num) have h3 := geometricEndpointTerm_summable_shift (a := 1) (b := 3) (by norm_num) (by norm_num) have h23 := geometricEndpointTerm_summable_shift (a := 2) (b := 3) (by norm_num) (by norm_num) apply (((h2.add h3).add h23).mul_left 3).of_norm_bounded intro n rw [Real.norm_eq_abs, abs_of_nonneg (by positivity : 0 ≤ |(smoothRankBound (n + 1) : ℝ) - smoothRankBound n| / (n + 1 : ℕ))] exact rank_jump_geometric_bound n def signedRankJump_decomposition (n : ℕ) : signedRankJump n = ((smoothRankBound (n + 1) : ℝ) - smoothRankBound n) - (obstructionIndicator (n + 1) - obstructionIndicator n) := by unfold signedRankJump signedRank obstructionIndicator ring def signedRank_jumps_summable : Summable (fun n : ℕ => |signedRankJump n| / (n + 1 : ℕ)) := by apply (rank_jumps_summable.add obstruction_jumps_summable).of_norm_bounded intro n rw [Real.norm_eq_abs, abs_of_nonneg (by positivity : 0 ≤ |signedRankJump n| / (n + 1 : ℕ)), signedRankJump_decomposition] have hh : |((smoothRankBound (n + 1) : ℝ) - smoothRankBound n) - (obstructionIndicator (n + 1) - obstructionIndicator n)| ≤ |(smoothRankBound (n + 1) : ℝ) - smoothRankBound n| + |obstructionIndicator (n + 1) - obstructionIndicator n| := by simpa only [sub_zero, zero_sub, abs_neg] using abs_sub_le ((smoothRankBound (n + 1) : ℝ) - smoothRankBound n) 0 (obstructionIndicator (n + 1) - obstructionIndicator n) simpa only [add_div] using div_le_div_of_nonneg_right hh (Nat.cast_nonneg (α := ℝ) (n + 1)) end Bounty end SubmissionComponent_JumpSummability /- Component CoprimeLimit; SHA256 69cbf0abef3ea6690a02d6a04f8adab64f01cc41e052e2ab277e95973d957e72 -/ section SubmissionComponent_CoprimeLimit /- Uniform approximation and limiting density for dilated core counts. -/ open Filter open scoped Topology namespace Bounty def coprimeCores_div_error {n d : ℕ} (hn : 0 < n) (hd : 0 < d) : |((coprimeCores (n / d)).card : ℝ) / n - 1 / (3 * d)| ≤ (4 / 3 : ℝ) / n := by have hn0 : (0 : ℝ) < n := by exact_mod_cast hn have hd0 : (0 : ℝ) < d := by exact_mod_cast hd have hdown : n / d * d ≤ n := Nat.div_mul_le_self n d have hup : n < (n / d + 1) * d := by have hr := Nat.mod_lt n hd have he := Nat.div_add_mod n d nlinarith have hdown' : (n / d : ℕ) ≤ (n : ℝ) / d := by apply (le_div_iff₀ hd0).mpr exact_mod_cast hdown have hup' : (n : ℝ) / d - 1 ≤ (n / d : ℕ) := by have hh : (n : ℝ) / d < (n / d : ℕ) + 1 := by apply (div_lt_iff₀ hd0).mpr exact_mod_cast hup linarith have hc := abs_le.mp (coprimeCores_card_error (n / d)) have hc' : |((coprimeCores (n / d)).card : ℝ) - (n : ℝ) / (3 * d)| ≤ 4 / 3 := by have he : (n : ℝ) / (3 * d) = ((n : ℝ) / d) / 3 := by ring rw [he, abs_le] constructor <;> linarith have he : ((coprimeCores (n / d)).card : ℝ) / n - 1 / (3 * d) = (((coprimeCores (n / d)).card : ℝ) - (n : ℝ) / (3 * d)) / n := by field_simp rw [he, abs_div, abs_of_pos hn0] exact div_le_div_of_nonneg_right hc' hn0.le def tendsto_coprimeCores_div {d : ℕ} (hd : 0 < d) : Tendsto (fun n : ℕ => ((coprimeCores (n / d)).card : ℝ) / n) atTop (nhds (1 / (3 * (d : ℝ)))) := by rw [Metric.tendsto_nhds] intro ε hε have he : ∀ᶠ n : ℕ in atTop, (4 / 3 : ℝ) / n < ε := (tendsto_const_div_atTop_nhds_zero_nat (4 / 3 : ℝ)).eventually (gt_mem_nhds hε) filter_upwards [he, eventually_ge_atTop 1] with n hn hn1 rw [Real.dist_eq] exact (coprimeCores_div_error (by omega) hd).trans_lt hn def coprimeCores_card_le (n : ℕ) : (coprimeCores n).card ≤ n := by have hh : (coprimeCores n).card ≤ (Finset.Icc 1 n).card := Finset.card_le_card (Finset.filter_subset _ _) simpa only [Nat.card_Icc, Nat.add_sub_cancel] using hh def coprimeCores_div_bound {n d : ℕ} (hn : 0 < n) (hd : 0 < d) : 0 ≤ ((coprimeCores (n / d)).card : ℝ) / n ∧ ((coprimeCores (n / d)).card : ℝ) / n ≤ 1 / (d : ℝ) := by have hn0 : (0 : ℝ) < n := by exact_mod_cast hn have hd0 : (0 : ℝ) < d := by exact_mod_cast hd constructor · positivity · apply (div_le_div_iff₀ hn0 hd0).mpr have hh := Nat.mul_le_mul_right d (coprimeCores_card_le (n / d)) have he := Nat.div_mul_le_self n d norm_num only [one_mul] exact_mod_cast hh.trans he end Bounty end SubmissionComponent_CoprimeLimit /- Component CoreConvolutionLimit; SHA256 91f1c53b10af5e40623001278220dac12a8fc796fa5ed144d7726ab4c6a7e408 -/ section SubmissionComponent_CoreConvolutionLimit /- A dominated-convergence theorem for signed core convolutions. -/ open Filter open scoped Topology namespace Bounty def tendsto_core_weighted_series {a : ℕ → ℝ} (ha : Summable (fun d : ℕ => |a d| / (d + 1 : ℕ))) : Tendsto (fun n : ℕ => ∑' d : ℕ, a d * (((coprimeCores (n / (d + 1))).card : ℝ) / n)) atTop (nhds (∑' d : ℕ, a d / (3 * (d + 1 : ℕ)))) := by apply tendsto_tsum_of_dominated_convergence ha · intro d have hh := (tendsto_coprimeCores_div (Nat.succ_pos d)).const_mul (a d) simpa only [mul_one_div] using hh · filter_upwards [eventually_ge_atTop 1] with n hn d have hb := coprimeCores_div_bound (n := n) (d := d + 1) (by omega) (by omega) rw [Real.norm_eq_abs, abs_mul, abs_of_nonneg hb.1] have hh := mul_le_mul_of_nonneg_left hb.2 (abs_nonneg (a d)) simpa only [mul_one_div] using hh def core_weighted_series_eq_sum (a : ℕ → ℝ) (n : ℕ) : (∑' d : ℕ, a d * (((coprimeCores (n / (d + 1))).card : ℝ) / n)) = (∑ d ∈ Finset.range n, a d * ((coprimeCores (n / (d + 1))).card : ℝ)) / n := by have hz : ∀ d ∉ Finset.range n, a d * (((coprimeCores (n / (d + 1))).card : ℝ) / n) = 0 := by intro d hd have hnd : n < d + 1 := by simp only [Finset.mem_range] at hd; omega simp [Nat.div_eq_of_lt hnd, coprimeCores] rw [tsum_eq_sum hz] simp only [Finset.sum_div, mul_div_assoc] def tendsto_core_weighted_sum {a : ℕ → ℝ} (ha : Summable (fun d : ℕ => |a d| / (d + 1 : ℕ))) : Tendsto (fun n : ℕ => (∑ d ∈ Finset.range n, a d * ((coprimeCores (n / (d + 1))).card : ℝ)) / n) atTop (nhds (∑' d : ℕ, a d / (3 * (d + 1 : ℕ)))) := by simpa only [core_weighted_series_eq_sum] using tendsto_core_weighted_series ha end Bounty end SubmissionComponent_CoreConvolutionLimit /- Component JumpDensity; SHA256 a84b8cfc4532cf67cd97fd894fdd3ea011a8cc194d70fec31ef8b8c90f5f20cc -/ section SubmissionComponent_JumpDensity /- The remaining analytic hypothesis for the exact bound is weighted summability of its jumps. -/ open Filter open scoped Topology namespace Bounty noncomputable def jumpDensity : ℝ := ∑' j : ℕ, signedRankJump j / (3 * (j + 1 : ℕ)) def tendsto_globalUpper_of_summable_jumps (h : Summable (fun j : ℕ => |signedRankJump j| / (j + 1 : ℕ))) : Tendsto (fun n : ℕ => (globalUpper n : ℝ) / n) atTop (nhds jumpDensity) := by simpa only [← globalUpper_cast_jumps, jumpDensity, Nat.cast_mul, Nat.cast_ofNat] using tendsto_core_weighted_sum h def tendsto_f_of_exact_and_summable_jumps (he : ∀ n, Erdos1062.f n = globalUpper n) (h : Summable (fun j : ℕ => |signedRankJump j| / (j + 1 : ℕ))) : Tendsto (fun n : ℕ => (Erdos1062.f n : ℝ) / n) atTop (nhds jumpDensity) := by simpa only [he] using tendsto_globalUpper_of_summable_jumps h end Bounty end SubmissionComponent_JumpDensity /- Component DiscreteAbel; SHA256 83ad651cb91b1992dca3cdb7b8d3d82fa6a008b7ccf13e1f406c16b0a2d610ad -/ section SubmissionComponent_DiscreteAbel /- Summation by parts for reciprocal weights, with an explicit boundary term. -/ open Filter open scoped Topology namespace Bounty def sum_reciprocal_kernel (N : ℕ) : (∑ n ∈ Finset.range N, (1 : ℝ) / ((n + 1 : ℕ) * (n + 2 : ℕ))) = 1 - 1 / (N + 1 : ℕ) := by induction N with | zero => norm_num | succ N ih => rw [Finset.sum_range_succ, ih] push_cast have h1 : (N : ℝ) + 1 ≠ 0 := by positivity have h2 : (N : ℝ) + 2 ≠ 0 := by positivity field_simp ring def hasSum_reciprocal_kernel : HasSum (fun n : ℕ => (1 : ℝ) / ((n + 1 : ℕ) * (n + 2 : ℕ))) 1 := by apply (hasSum_iff_tendsto_nat_of_nonneg (fun n => by positivity) 1).mpr simp only [sum_reciprocal_kernel] have h : Tendsto (fun n : ℕ => (1 : ℝ) / (n + 1 : ℕ)) atTop (nhds 0) := (tendsto_const_div_atTop_nhds_zero_nat (1 : ℝ)).comp (tendsto_add_atTop_nat 1) simpa only [sub_zero] using tendsto_const_nhds.sub h def bounded_reciprocal_kernel_summable {w : ℕ → ℝ} {M : ℝ} (hw : ∀ n, |w n| ≤ M) : Summable (fun n : ℕ => w (n + 1) / ((n + 1 : ℕ) * (n + 2 : ℕ))) := by apply (hasSum_reciprocal_kernel.summable.mul_left M).of_norm_bounded intro n rw [Real.norm_eq_abs, abs_div, abs_of_nonneg (by positivity : (0 : ℝ) ≤ (n + 1 : ℕ) * (n + 2 : ℕ))] simpa only [mul_one_div] using div_le_div_of_nonneg_right (hw (n + 1)) (by positivity : (0 : ℝ) ≤ (n + 1 : ℕ) * (n + 2 : ℕ)) def sum_reciprocal_jumps (w : ℕ → ℝ) (hw : w 0 = 0) (N : ℕ) : (∑ n ∈ Finset.range N, (w (n + 1) - w n) / (n + 1 : ℕ)) = w N / (N + 1 : ℕ) + ∑ n ∈ Finset.range N, w (n + 1) / ((n + 1 : ℕ) * (n + 2 : ℕ)) := by induction N with | zero => simp [hw] | succ N ih => rw [Finset.sum_range_succ, Finset.sum_range_succ, ih] push_cast have h1 : (N : ℝ) + 1 ≠ 0 := by positivity have h2 : (N : ℝ) + 2 ≠ 0 := by positivity field_simp ring def tsum_reciprocal_jumps {w : ℕ → ℝ} (hw : w 0 = 0) (hj : Summable (fun n : ℕ => (w (n + 1) - w n) / (n + 1 : ℕ))) (hk : Summable (fun n : ℕ => w (n + 1) / ((n + 1 : ℕ) * (n + 2 : ℕ)))) (ht : Tendsto (fun N : ℕ => w N / (N + 1 : ℕ)) atTop (nhds 0)) : (∑' n : ℕ, (w (n + 1) - w n) / (n + 1 : ℕ)) = ∑' n : ℕ, w (n + 1) / ((n + 1 : ℕ) * (n + 2 : ℕ)) := by have hlim := ht.add hk.hasSum.tendsto_sum_nat simp only [zero_add, ← sum_reciprocal_jumps w hw] at hlim exact tendsto_nhds_unique hj.hasSum.tendsto_sum_nat hlim def bounded_div_nat_tendsto_zero {w : ℕ → ℝ} {M : ℝ} (hw : ∀ n, |w n| ≤ M) : Tendsto (fun N : ℕ => w N / (N + 1 : ℕ)) atTop (nhds 0) := by rw [Metric.tendsto_nhds] intro ε hε have ht : Tendsto (fun N : ℕ => M / (N + 1 : ℕ)) atTop (nhds 0) := (tendsto_const_div_atTop_nhds_zero_nat M).comp (tendsto_add_atTop_nat 1) filter_upwards [ht.eventually (gt_mem_nhds hε)] with n hn rw [Real.dist_eq, sub_zero, abs_div, abs_of_nonneg (Nat.cast_nonneg (α := ℝ) (n + 1))] exact (div_le_div_of_nonneg_right (hw n) (Nat.cast_nonneg (α := ℝ) (n + 1))).trans_lt hn end Bounty end SubmissionComponent_DiscreteAbel /- Component LogJumpSeries; SHA256 4c47fb1149ab0a63731fa53ef000a1700531467cf90e09cdb9962dbd60656a5d -/ section SubmissionComponent_LogJumpSeries /- The reciprocal jumps of the integer logarithm have an exact rational sum. -/ namespace Bounty def geometricEndpointTerm_hasSum {a b : ℕ} (ha : 0 < a) (hb : 1 < b) : HasSum (geometricEndpointTerm a b) ((1 / (a : ℝ)) * (1 - 1 / (b : ℝ))⁻¹) := by classical have hi : Function.Injective (fun j : ℕ => a * b ^ j) := by intro i j hij apply Nat.pow_right_injective (by omega : 2 ≤ b) nlinarith apply (hi.hasSum_iff (f := geometricEndpointTerm a b) ?_).mp · have hbr : (1 : ℝ) < b := by exact_mod_cast hb have hgeo := (hasSum_geometric_of_lt_one (by positivity : (0 : ℝ) ≤ 1 / (b : ℝ)) (by simpa only [one_div] using inv_lt_one_of_one_lt₀ hbr)).mul_left (1 / (a : ℝ)) apply hgeo.congr_fun intro j simp only [Function.comp_apply, geometricEndpointTerm_at ⟨j, rfl⟩, Nat.cast_mul, Nat.cast_pow, div_pow, one_pow] ring · intro m hm have hn : ¬∃ j, m = a * b ^ j := by simpa only [Set.mem_range, eq_comm] using hm simp only [geometricEndpointTerm, if_neg hn] def geometricEndpointTerm_zero {a b : ℕ} (ha : 0 < a) (hb : 0 < b) : geometricEndpointTerm a b 0 = 0 := by classical have hn : ¬∃ j, 0 = a * b ^ j := by rintro ⟨j, hj⟩ have hp : 0 < a * b ^ j := by positivity omega simp only [geometricEndpointTerm, if_neg hn] def geometricEndpointTerm_tsum_shift {a b : ℕ} (ha : 0 < a) (hb : 1 < b) : (∑' n : ℕ, geometricEndpointTerm a b (n + 1)) = (1 / (a : ℝ)) * (1 - 1 / (b : ℝ))⁻¹ := by have hs := geometricEndpointTerm_hasSum ha hb have he := hs.summable.sum_add_tsum_nat_add 1 simpa only [Finset.sum_range_one, geometricEndpointTerm_zero ha (by omega : 0 < b), zero_add, hs.tsum_eq] using he open scoped Classical in def nat_log_jump {b : ℕ} (hb : 1 < b) (n : ℕ) : ((Nat.log b (n + 1) : ℝ) - Nat.log b n) = if ∃ j, n + 1 = b * b ^ j then 1 else 0 := by classical by_cases he : ∃ j, n + 1 = b * b ^ j · obtain ⟨j, hj⟩ := he have hp : n + 1 = b ^ (j + 1) := by simpa only [pow_succ', Nat.succ_eq_add_one] using hj have hpow : 0 < b ^ j := by positivity have hlo : b ^ j ≤ n := by nlinarith have hl := Nat.log_eq_of_pow_le_of_lt_pow hlo (by omega : n < b ^ (j + 1)) rw [if_pos ⟨j, hj⟩, hl, hp, Nat.log_pow hb] push_cast ring · rw [if_neg he] by_cases hn : n = 0 · subst n simp have hh : n + 1 ≠ b ^ Nat.log b (n + 1) := by intro hh have hk : Nat.log b (n + 1) ≠ 0 := by intro hk rw [hk, pow_zero] at hh omega obtain ⟨j, hj⟩ := Nat.exists_eq_succ_of_ne_zero hk apply he exact ⟨j, by simpa only [hj, pow_succ', Nat.succ_eq_add_one] using hh⟩ rw [nat_log_succ_eq_of_not_power hb hh, sub_self] def nat_log_jump_div {b : ℕ} (hb : 1 < b) (n : ℕ) : ((Nat.log b (n + 1) : ℝ) - Nat.log b n) / (n + 1 : ℕ) = geometricEndpointTerm b b (n + 1) := by classical rw [nat_log_jump hb] unfold geometricEndpointTerm split_ifs <;> simp def nat_log_jumps_summable {b : ℕ} (hb : 1 < b) : Summable (fun n : ℕ => ((Nat.log b (n + 1) : ℝ) - Nat.log b n) / (n + 1 : ℕ)) := by simpa only [nat_log_jump_div hb] using geometricEndpointTerm_summable_shift (a := b) (b := b) (by omega) hb def nat_log_jumps_tsum {b : ℕ} (hb : 1 < b) : (∑' n : ℕ, ((Nat.log b (n + 1) : ℝ) - Nat.log b n) / (n + 1 : ℕ)) = 1 / ((b : ℝ) - 1) := by simp only [nat_log_jump_div hb] rw [geometricEndpointTerm_tsum_shift (by omega : 0 < b) hb] have hbr : (1 : ℝ) < b := by exact_mod_cast hb field_simp end Bounty end SubmissionComponent_LogJumpSeries /- Component DensityCorrection; SHA256 48f32369bac030c9134216d1427de234afac9a29afe301a6f01c0f5de3303c91 -/ section SubmissionComponent_DensityCorrection /- The density is a rational contribution plus the overlap minus obstruction correction. -/ namespace Bounty def overlapWindow (n : ℕ) : Prop := 0 < n ∧ 2 * 4 ^ Nat.log 4 n ≤ n ∧ 2 * 3 ^ Nat.log 3 n ≤ n noncomputable def overlapIndicator (n : ℕ) : ℝ := by classical exact if overlapWindow n then 1 else 0 noncomputable def correctionIndicator (n : ℕ) : ℝ := overlapIndicator n - obstructionIndicator n def overlapWindow_iff_intervals (n : ℕ) : overlapWindow n ↔ ∃ j b : ℕ, 2 * 4 ^ j ≤ n ∧ n < 4 ^ (j + 1) ∧ 2 * 3 ^ b ≤ n ∧ n < 3 ^ (b + 1) := by constructor · rintro ⟨hn, h4, h3⟩ exact ⟨Nat.log 4 n, Nat.log 3 n, h4, Nat.lt_pow_succ_log_self (by norm_num) n, h3, Nat.lt_pow_succ_log_self (by norm_num) n⟩ · rintro ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ have h4pos : 0 < (4 : ℕ) ^ j := by positivity have h4 := Nat.log_eq_of_pow_le_of_lt_pow (by omega : 4 ^ j ≤ n) h4hi have h3 := Nat.log_eq_of_pow_le_of_lt_pow (by omega : 3 ^ b ≤ n) h3hi exact ⟨by omega, by rwa [h4], by rwa [h3]⟩ def correctionIndicator_zero : correctionIndicator 0 = 0 := by classical have hn : ¬badWindow 0 := by rintro ⟨j, b, hj, _, _, _⟩ have hp : 0 < (4 : ℕ) ^ j := by positivity omega simp [correctionIndicator, overlapIndicator, overlapWindow, obstructionIndicator, hn] def correctionIndicator_bound (n : ℕ) : |correctionIndicator n| ≤ 1 := by classical unfold correctionIndicator overlapIndicator obstructionIndicator split_ifs <;> norm_num def signedRank_log_decomposition (n : ℕ) : signedRank n = (if n = 0 then 0 else 1) + (Nat.log 3 n : ℝ) + Nat.log 4 n + correctionIndicator n := by classical by_cases hn : n = 0 · subst n simp [signedRank_zero, correctionIndicator_zero] have hp := log_two_odd_iff_four_threshold (by omega : 0 < n) simp only [signedRank, smoothRankBound, hn, ↓reduceIte, correctionIndicator, overlapIndicator, obstructionIndicator, overlapWindow, show 0 < n by omega, true_and, ← log_four_eq, hp] split_ifs <;> push_cast <;> ring def signedRankJump_log_decomposition (n : ℕ) : signedRankJump n / (n + 1 : ℕ) = (if n = 0 then 1 else 0) + ((Nat.log 3 (n + 1) : ℝ) - Nat.log 3 n) / (n + 1 : ℕ) + ((Nat.log 4 (n + 1) : ℝ) - Nat.log 4 n) / (n + 1 : ℕ) + (correctionIndicator (n + 1) - correctionIndicator n) / (n + 1 : ℕ) := by unfold signedRankJump rw [signedRank_log_decomposition, signedRank_log_decomposition] by_cases hn : n = 0 · subst n norm_num ring · simp only [hn, Nat.succ_ne_zero, ↓reduceIte] ring def signedRank_jumps_summable_signed : Summable (fun n : ℕ => signedRankJump n / (n + 1 : ℕ)) := by apply signedRank_jumps_summable.of_norm_bounded intro n simp only [Real.norm_eq_abs, abs_div, abs_of_nonneg (Nat.cast_nonneg (α := ℝ) (n + 1))] exact le_refl _ def correction_jumps_summable : Summable (fun n : ℕ => (correctionIndicator (n + 1) - correctionIndicator n) / (n + 1 : ℕ)) := by have hs := (((signedRank_jumps_summable_signed.sub (hasSum_ite_eq 0 (1 : ℝ)).summable).sub (nat_log_jumps_summable (by norm_num : 1 < 3))).sub (nat_log_jumps_summable (by norm_num : 1 < 4))) apply hs.congr intro n rw [signedRankJump_log_decomposition] ring def correction_kernel_summable : Summable (fun n : ℕ => correctionIndicator (n + 1) / ((n + 1 : ℕ) * (n + 2 : ℕ))) := bounded_reciprocal_kernel_summable correctionIndicator_bound def correction_jumps_eq_kernel : (∑' n : ℕ, (correctionIndicator (n + 1) - correctionIndicator n) / (n + 1 : ℕ)) = ∑' n : ℕ, correctionIndicator (n + 1) / ((n + 1 : ℕ) * (n + 2 : ℕ)) := tsum_reciprocal_jumps correctionIndicator_zero correction_jumps_summable correction_kernel_summable (bounded_div_nat_tendsto_zero correctionIndicator_bound) def jumpDensity_eq_correction_series : jumpDensity = 11 / 18 + (∑' n : ℕ, correctionIndicator (n + 1) / ((n + 1 : ℕ) * (n + 2 : ℕ))) / 3 := by have h3 := (nat_log_jumps_summable (by norm_num : 1 < 3)).hasSum have h4 := (nat_log_jumps_summable (by norm_num : 1 < 4)).hasSum rw [nat_log_jumps_tsum (by norm_num : 1 < 3)] at h3 rw [nat_log_jumps_tsum (by norm_num : 1 < 4)] at h4 have hsum := (((hasSum_ite_eq 0 (1 : ℝ)).add h3).add h4).add correction_jumps_summable.hasSum have hs : HasSum (fun n : ℕ => signedRankJump n / (n + 1 : ℕ)) (1 + 1 / ((3 : ℝ) - 1) + 1 / ((4 : ℝ) - 1) + ∑' n : ℕ, (correctionIndicator (n + 1) - correctionIndicator n) / (n + 1 : ℕ)) := by apply hsum.congr_fun exact signedRankJump_log_decomposition have he : jumpDensity = (∑' n : ℕ, signedRankJump n / (n + 1 : ℕ)) / 3 := by rw [← tsum_div_const] apply tsum_congr intro n ring rw [he, hs.tsum_eq, correction_jumps_eq_kernel] ring end Bounty end SubmissionComponent_DensityCorrection /- Component GeometricBands; SHA256 d5b9fae9327a431c11cce647ce104ea0599c4155229e60ebf7f08698b0da2817 -/ section SubmissionComponent_GeometricBands /- Exact boundary jumps of disjoint families of geometric intervals. -/ namespace Bounty def geometricBand (lo hi b n : ℕ) : Prop := ∃ j : ℕ, lo * b ^ j ≤ n ∧ n < hi * b ^ j noncomputable def geometricBandIndicator (lo hi b n : ℕ) : ℝ := by classical exact if geometricBand lo hi b n then 1 else 0 def geometricBand_enter {lo hi b n : ℕ} (hn : ¬geometricBand lo hi b n) (hs : geometricBand lo hi b (n + 1)) : ∃ j : ℕ, n + 1 = lo * b ^ j := by obtain ⟨j, hjlo, hjhi⟩ := hs by_contra hh have he : n + 1 ≠ lo * b ^ j := by aesop exact hn ⟨j, by omega, by omega⟩ def geometricBand_exit {lo hi b n : ℕ} (hn : geometricBand lo hi b n) (hs : ¬geometricBand lo hi b (n + 1)) : ∃ j : ℕ, n + 1 = hi * b ^ j := by obtain ⟨j, hjlo, hjhi⟩ := hn by_contra hh have he : n + 1 ≠ hi * b ^ j := by aesop exact hs ⟨j, by omega, by omega⟩ def geometricBand_at_lower {lo hi b : ℕ} (hl : lo < hi) (hb : 0 < b) (j : ℕ) : geometricBand lo hi b (lo * b ^ j) := by have hp : 0 < b ^ j := by positivity exact ⟨j, le_refl _, by nlinarith⟩ def geometricBand_before_lower {lo hi b n j : ℕ} (hgap : hi < lo * b) (hb : 1 < b) (he : n + 1 = lo * b ^ j) : ¬geometricBand lo hi b n := by rintro ⟨k, hklo, hkhi⟩ rcases le_or_gt j k with hjk | hkj · have hp := Nat.pow_le_pow_right (by omega : 0 < b) hjk have hm := Nat.mul_le_mul_left lo hp omega · have hp := Nat.pow_le_pow_right (by omega : 0 < b) (by omega : k + 1 ≤ j) have hkpos : 0 < b ^ k := by positivity have hm := Nat.mul_le_mul_left lo hp rw [pow_succ] at hm nlinarith def geometricBand_at_upper_false {lo hi b j : ℕ} (hgap : hi < lo * b) (hb : 1 < b) : ¬geometricBand lo hi b (hi * b ^ j) := by rintro ⟨k, hklo, hkhi⟩ rcases le_or_gt k j with hkj | hjk · have hp := Nat.pow_le_pow_right (by omega : 0 < b) hkj have hm := Nat.mul_le_mul_left hi hp omega · have hp := Nat.pow_le_pow_right (by omega : 0 < b) (by omega : j + 1 ≤ k) have hjpos : 0 < b ^ j := by positivity have hm := Nat.mul_le_mul_left lo hp rw [pow_succ] at hm nlinarith def geometricBand_before_upper {lo hi b n j : ℕ} (hl : lo < hi) (hb : 0 < b) (he : n + 1 = hi * b ^ j) : geometricBand lo hi b n := by have hp : 0 < b ^ j := by positivity exact ⟨j, by nlinarith, by omega⟩ def geometricBand_endpoints_disjoint {lo hi b n : ℕ} (hl : lo < hi) (hgap : hi < lo * b) (hb : 1 < b) (hs : ∃ j, n = lo * b ^ j) : ¬∃ j, n = hi * b ^ j := by obtain ⟨j, rfl⟩ := hs rintro ⟨k, hk⟩ have h := geometricBand_at_lower hl (by omega : 0 < b) j rw [hk] at h exact geometricBand_at_upper_false hgap hb h open scoped Classical in def geometricBandIndicator_jump {lo hi b : ℕ} (hl : lo < hi) (hgap : hi < lo * b) (hb : 1 < b) (n : ℕ) : geometricBandIndicator lo hi b (n + 1) - geometricBandIndicator lo hi b n = (if ∃ j, n + 1 = lo * b ^ j then 1 else 0) - (if ∃ j, n + 1 = hi * b ^ j then 1 else 0) := by classical by_cases hs : ∃ j, n + 1 = lo * b ^ j · have hnend := geometricBand_endpoints_disjoint hl hgap hb hs obtain ⟨j, hj⟩ := hs have hcurr : geometricBand lo hi b (n + 1) := by rw [hj] exact geometricBand_at_lower hl (by omega) j have hprev := geometricBand_before_lower hgap hb hj simp only [geometricBandIndicator, if_pos hcurr, if_neg hprev, if_pos (show ∃ j, n + 1 = lo * b ^ j from ⟨j, hj⟩), if_neg hnend] · by_cases he : ∃ j, n + 1 = hi * b ^ j · obtain ⟨j, hj⟩ := he have hcurr : ¬geometricBand lo hi b (n + 1) := by rw [hj] exact geometricBand_at_upper_false hgap hb have hprev := geometricBand_before_upper hl (by omega : 0 < b) hj simp only [geometricBandIndicator, if_neg hcurr, if_pos hprev, if_neg hs, if_pos (show ∃ j, n + 1 = hi * b ^ j from ⟨j, hj⟩)] · by_cases hn : geometricBand lo hi b n · have hcurr : geometricBand lo hi b (n + 1) := by by_contra hh exact he (geometricBand_exit hn hh) simp only [geometricBandIndicator, if_pos hn, if_pos hcurr, if_neg hs, if_neg he, sub_self] · have hcurr : ¬geometricBand lo hi b (n + 1) := by intro hh exact hs (geometricBand_enter hn hh) simp only [geometricBandIndicator, if_neg hn, if_neg hcurr, if_neg hs, if_neg he, sub_self] def geometricBandIndicator_bound (lo hi b n : ℕ) : |geometricBandIndicator lo hi b n| ≤ 1 := by classical unfold geometricBandIndicator split_ifs <;> norm_num def product_jump (f g : ℕ → ℝ) (n : ℕ) : f (n + 1) * g (n + 1) - f n * g n = (f (n + 1) - f n) * g (n + 1) + (g (n + 1) - g n) * f (n + 1) - (f (n + 1) - f n) * (g (n + 1) - g n) := by ring end Bounty end SubmissionComponent_GeometricBands /- Component WeightedGeometric; SHA256 e238b9a2e8227418e3daa0bdecaa241f30e5df6efef6369f24e1bf68c19a7731 -/ section SubmissionComponent_WeightedGeometric /- Regrouping weighted boundary events by their geometric exponents. -/ namespace Bounty noncomputable def endpointSeries (a b : ℕ) (w : ℕ → ℝ) : ℝ := ∑' j : ℕ, w (a * b ^ j) / (a * b ^ j : ℕ) def weighted_geometric_summable {a b : ℕ} {w : ℕ → ℝ} {M : ℝ} (ha : 0 < a) (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : Summable (fun n : ℕ => w n * geometricEndpointTerm a b n) := by apply ((geometricEndpointTerm_summable ha hb).mul_left M).of_norm_bounded intro n rw [Real.norm_eq_abs, abs_mul, abs_of_nonneg (geometricEndpointTerm_nonneg a b n)] exact mul_le_mul_of_nonneg_right (hw n) (geometricEndpointTerm_nonneg a b n) def weighted_geometric_summable_shift {a b : ℕ} {w : ℕ → ℝ} {M : ℝ} (ha : 0 < a) (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : Summable (fun n : ℕ => w (n + 1) * geometricEndpointTerm a b (n + 1)) := (summable_nat_add_iff 1).mpr (weighted_geometric_summable ha hb hw) def weighted_geometric_tsum {a b : ℕ} (ha : 0 < a) (hb : 1 < b) (w : ℕ → ℝ) : (∑' n : ℕ, w n * geometricEndpointTerm a b n) = endpointSeries a b w := by classical have hi : Function.Injective (fun j : ℕ => a * b ^ j) := by intro i j hij apply Nat.pow_right_injective (by omega : 2 ≤ b) nlinarith have hs : Function.support (fun n => w n * geometricEndpointTerm a b n) ⊆ Set.range (fun j : ℕ => a * b ^ j) := by intro n hn by_contra he have hh : ¬∃ j, n = a * b ^ j := by simpa only [Set.mem_range, eq_comm] using he simp only [Function.mem_support, geometricEndpointTerm, if_neg hh, mul_zero, ne_eq, not_true_eq_false] at hn rw [← hi.tsum_eq hs] unfold endpointSeries apply tsum_congr intro j rw [geometricEndpointTerm_at ⟨j, rfl⟩] ring def weighted_geometric_tsum_shift {a b : ℕ} {w : ℕ → ℝ} {M : ℝ} (ha : 0 < a) (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : (∑' n : ℕ, w (n + 1) * geometricEndpointTerm a b (n + 1)) = endpointSeries a b w := by have he := (weighted_geometric_summable ha hb hw).sum_add_tsum_nat_add 1 simpa only [Finset.sum_range_one, geometricEndpointTerm_zero ha (by omega : 0 < b), mul_zero, zero_add, weighted_geometric_tsum ha hb w] using he def band_weighted_jump_decomposition {lo hi b : ℕ} (hl : lo < hi) (hgap : hi < lo * b) (hb : 1 < b) (w : ℕ → ℝ) (n : ℕ) : (geometricBandIndicator lo hi b (n + 1) - geometricBandIndicator lo hi b n) * w (n + 1) / (n + 1 : ℕ) = w (n + 1) * geometricEndpointTerm lo b (n + 1) - w (n + 1) * geometricEndpointTerm hi b (n + 1) := by classical rw [geometricBandIndicator_jump hl hgap hb] unfold geometricEndpointTerm split_ifs <;> ring def band_weighted_jumps_summable {lo hi b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hlo : 0 < lo) (hl : lo < hi) (hgap : hi < lo * b) (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : Summable (fun n : ℕ => (geometricBandIndicator lo hi b (n + 1) - geometricBandIndicator lo hi b n) * w (n + 1) / (n + 1 : ℕ)) := by simp only [band_weighted_jump_decomposition hl hgap hb] exact (weighted_geometric_summable_shift hlo hb hw).sub (weighted_geometric_summable_shift (by omega : 0 < hi) hb hw) def band_weighted_jumps_tsum {lo hi b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hlo : 0 < lo) (hl : lo < hi) (hgap : hi < lo * b) (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : (∑' n : ℕ, (geometricBandIndicator lo hi b (n + 1) - geometricBandIndicator lo hi b n) * w (n + 1) / (n + 1 : ℕ)) = endpointSeries lo b w - endpointSeries hi b w := by simp only [band_weighted_jump_decomposition hl hgap hb] rw [(weighted_geometric_summable_shift hlo hb hw).tsum_sub (weighted_geometric_summable_shift (by omega : 0 < hi) hb hw), weighted_geometric_tsum_shift hlo hb hw, weighted_geometric_tsum_shift (by omega : 0 < hi) hb hw] end Bounty end SubmissionComponent_WeightedGeometric /- Component SpecialBands; SHA256 ed3571155a75f6251241def6d8f27c212f7cef9e386e828c9e18a68e6cbc2358 -/ section SubmissionComponent_SpecialBands /- The overlap and obstruction as products of geometric interval indicators. -/ namespace Bounty def overlapWindow_iff_bands (n : ℕ) : overlapWindow n ↔ geometricBand 2 4 4 n ∧ geometricBand 2 3 3 n := by rw [overlapWindow_iff_intervals] constructor · rintro ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ exact ⟨⟨j, h4lo, by simpa only [pow_succ'] using h4hi⟩, ⟨b, h3lo, by simpa only [pow_succ'] using h3hi⟩⟩ · rintro ⟨⟨j, h4lo, h4hi⟩, ⟨b, h3lo, h3hi⟩⟩ exact ⟨j, b, h4lo, by simpa only [pow_succ'] using h4hi, h3lo, by simpa only [pow_succ'] using h3hi⟩ def badWindow_iff_bands (n : ℕ) : badWindow n ↔ geometricBand 4 5 4 n ∧ geometricBand 10 12 3 n := by constructor · rintro ⟨j, b, h4lo, h4hi, h3lo, h3hi⟩ have h3pos : 0 < (3 : ℕ) ^ b := by positivity have hj : j ≠ 0 := by intro hj simp only [hj, pow_zero] at h4hi omega obtain ⟨k, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hj rw [pow_succ'] at h4lo h4hi exact ⟨⟨k, h4lo, by omega⟩, ⟨b, h3lo, h3hi⟩⟩ · rintro ⟨⟨j, h4lo, h4hi⟩, ⟨b, h3lo, h3hi⟩⟩ refine ⟨j + 1, b, ?_, ?_, h3lo, h3hi⟩ · simpa only [pow_succ'] using h4lo · rw [pow_succ'] omega def overlapIndicator_eq_product (n : ℕ) : overlapIndicator n = geometricBandIndicator 2 4 4 n * geometricBandIndicator 2 3 3 n := by classical simp only [overlapIndicator, overlapWindow_iff_bands, geometricBandIndicator] split_ifs <;> norm_num <;> tauto def obstructionIndicator_eq_product (n : ℕ) : obstructionIndicator n = geometricBandIndicator 4 5 4 n * geometricBandIndicator 10 12 3 n := by classical simp only [obstructionIndicator, badWindow_iff_bands, geometricBandIndicator] split_ifs <;> norm_num <;> tauto def geometricBand_change_endpoint {lo hi b n : ℕ} (hl : lo < hi) (hgap : hi < lo * b) (hb : 1 < b) (h : geometricBandIndicator lo hi b (n + 1) - geometricBandIndicator lo hi b n ≠ 0) : (∃ j, n + 1 = lo * b ^ j) ∨ (∃ j, n + 1 = hi * b ^ j) := by classical by_cases hs : ∃ j, n + 1 = lo * b ^ j · exact Or.inl hs by_cases he : ∃ j, n + 1 = hi * b ^ j · exact Or.inr he rw [geometricBandIndicator_jump hl hgap hb, if_neg hs, if_neg he, sub_self] at h exact (h rfl).elim def three_not_dvd_scaled_four {a : ℕ} (ha : ¬3 ∣ a) (j : ℕ) : ¬3 ∣ a * 4 ^ j := by intro hh rcases Nat.prime_three.dvd_mul.mp hh with h | h · exact ha h · have ht := Nat.prime_three.dvd_of_dvd_pow h norm_num at ht def endpoint_two_three_or_dvd {a b m : ℕ} (he : m = a * 3 ^ b) : m = a ∨ 3 ∣ m := by by_cases hb : b = 0 · exact Or.inl (by simpa only [hb, pow_zero, mul_one] using he) · obtain ⟨k, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hb apply Or.inr refine ⟨a * 3 ^ k, ?_⟩ rw [he, pow_succ'] ring def overlap_common_endpoint {m : ℕ} (h4 : (∃ j, m = 2 * 4 ^ j) ∨ (∃ j, m = 4 * 4 ^ j)) (h3 : (∃ j, m = 2 * 3 ^ j) ∨ (∃ j, m = 3 * 3 ^ j)) : m = 2 := by have hn : ¬3 ∣ m := by rcases h4 with ⟨j, rfl⟩ | ⟨j, rfl⟩ · exact three_not_dvd_scaled_four (by decide) j · exact three_not_dvd_scaled_four (by decide) j rcases h3 with ⟨j, hj⟩ | ⟨j, hj⟩ · exact (endpoint_two_three_or_dvd hj).resolve_right hn · exact (hn (hj ▸ dvd_mul_right 3 (3 ^ j))).elim def obstruction_endpoints_disjoint {m : ℕ} (h4 : (∃ j, m = 4 * 4 ^ j) ∨ (∃ j, m = 5 * 4 ^ j)) : ¬((∃ j, m = 10 * 3 ^ j) ∨ (∃ j, m = 12 * 3 ^ j)) := by have hn3 : ¬3 ∣ m := by rcases h4 with ⟨j, rfl⟩ | ⟨j, rfl⟩ · exact three_not_dvd_scaled_four (by decide) j · exact three_not_dvd_scaled_four (by decide) j intro h3 have hm : m = 10 := by rcases h3 with ⟨j, hj⟩ | ⟨j, hj⟩ · exact (endpoint_two_three_or_dvd hj).resolve_right hn3 · have hd : 3 ∣ m := by rw [hj] exact dvd_mul_of_dvd_left (by decide : 3 ∣ 12) _ exact (hn3 hd).elim rcases h4 with ⟨j, hj⟩ | ⟨j, hj⟩ · have hd : 4 ∣ m := hj ▸ dvd_mul_right 4 (4 ^ j) norm_num [hm] at hd · by_cases hz : j = 0 · simp only [hz, pow_zero, mul_one, hm] at hj omega · obtain ⟨k, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hz have hd : 4 ∣ m := by refine ⟨5 * 4 ^ k, ?_⟩ rw [hj, pow_succ'] ring norm_num [hm] at hd def band_two_jump {hi b : ℕ} (hl : 2 < hi) (hgap : hi < 2 * b) (hb : 1 < b) : geometricBandIndicator 2 hi b 2 - geometricBandIndicator 2 hi b 1 = 1 := by classical have hs : geometricBand 2 hi b 2 := by simpa only [pow_zero, mul_one] using geometricBand_at_lower hl (by omega : 0 < b) 0 have hn : ¬geometricBand 2 hi b 1 := geometricBand_before_lower (j := 0) hgap hb (by norm_num) simp only [geometricBandIndicator, if_pos hs, if_neg hn, sub_zero] def overlap_jump_product (n : ℕ) : (geometricBandIndicator 2 4 4 (n + 1) - geometricBandIndicator 2 4 4 n) * (geometricBandIndicator 2 3 3 (n + 1) - geometricBandIndicator 2 3 3 n) = if n = 1 then 1 else 0 := by by_cases hn : n = 1 · subst n norm_num only [Nat.reduceAdd, if_pos rfl, if_true] rw [band_two_jump (by norm_num : 2 < 4) (by norm_num) (by norm_num), band_two_jump (by norm_num : 2 < 3) (by norm_num) (by norm_num), one_mul] · rw [if_neg hn] by_contra hh have h4 : geometricBandIndicator 2 4 4 (n + 1) - geometricBandIndicator 2 4 4 n ≠ 0 := by intro he exact hh (by rw [he, zero_mul]) have h3 : geometricBandIndicator 2 3 3 (n + 1) - geometricBandIndicator 2 3 3 n ≠ 0 := by intro he exact hh (by rw [he, mul_zero]) have he := overlap_common_endpoint (geometricBand_change_endpoint (by norm_num) (by norm_num) (by norm_num) h4) (geometricBand_change_endpoint (by norm_num) (by norm_num) (by norm_num) h3) omega def obstruction_jump_product (n : ℕ) : (geometricBandIndicator 4 5 4 (n + 1) - geometricBandIndicator 4 5 4 n) * (geometricBandIndicator 10 12 3 (n + 1) - geometricBandIndicator 10 12 3 n) = 0 := by by_contra hh have h4 : geometricBandIndicator 4 5 4 (n + 1) - geometricBandIndicator 4 5 4 n ≠ 0 := by intro he exact hh (by rw [he, zero_mul]) have h3 : geometricBandIndicator 10 12 3 (n + 1) - geometricBandIndicator 10 12 3 n ≠ 0 := by intro he exact hh (by rw [he, mul_zero]) exact obstruction_endpoints_disjoint (geometricBand_change_endpoint (by norm_num) (by norm_num) (by norm_num) h4) (geometricBand_change_endpoint (by norm_num) (by norm_num) (by norm_num) h3) end Bounty end SubmissionComponent_SpecialBands /- Component EndpointDensity; SHA256 aa1b5970cac720866a807cc0a3c594f92e9b3205c8a157cd12aa8b6ca27e9db1 -/ section SubmissionComponent_EndpointDensity /- Group the correction jumps into their eight geometric boundary series. -/ namespace Bounty def band_weighted_jumps_hasSum {lo hi b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hlo : 0 < lo) (hl : lo < hi) (hgap : hi < lo * b) (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : HasSum (fun n : ℕ => (geometricBandIndicator lo hi b (n + 1) - geometricBandIndicator lo hi b n) * w (n + 1) / (n + 1 : ℕ)) (endpointSeries lo b w - endpointSeries hi b w) := by have hs := (band_weighted_jumps_summable hlo hl hgap hb hw).hasSum rwa [band_weighted_jumps_tsum hlo hl hgap hb hw] at hs def product_bands_jumps_hasSum {lo hi b lo' hi' b' : ℕ} {cross : ℕ → ℝ} {C : ℝ} (hlo : 0 < lo) (hl : lo < hi) (hgap : hi < lo * b) (hb : 1 < b) (hlo' : 0 < lo') (hl' : lo' < hi') (hgap' : hi' < lo' * b') (hb' : 1 < b') (hcross : ∀ n, (geometricBandIndicator lo hi b (n + 1) - geometricBandIndicator lo hi b n) * (geometricBandIndicator lo' hi' b' (n + 1) - geometricBandIndicator lo' hi' b' n) / (n + 1 : ℕ) = cross n) (hc : HasSum cross C) : HasSum (fun n : ℕ => (geometricBandIndicator lo hi b (n + 1) * geometricBandIndicator lo' hi' b' (n + 1) - geometricBandIndicator lo hi b n * geometricBandIndicator lo' hi' b' n) / (n + 1 : ℕ)) ((endpointSeries lo b (geometricBandIndicator lo' hi' b') - endpointSeries hi b (geometricBandIndicator lo' hi' b')) + (endpointSeries lo' b' (geometricBandIndicator lo hi b) - endpointSeries hi' b' (geometricBandIndicator lo hi b)) - C) := by have h1 := band_weighted_jumps_hasSum hlo hl hgap hb (geometricBandIndicator_bound lo' hi' b') have h2 := band_weighted_jumps_hasSum hlo' hl' hgap' hb' (geometricBandIndicator_bound lo hi b) apply ((h1.add h2).sub hc).congr_fun intro n rw [product_jump, ← hcross n] ring def overlap_jumps_hasSum : HasSum (fun n : ℕ => (overlapIndicator (n + 1) - overlapIndicator n) / (n + 1 : ℕ)) ((endpointSeries 2 4 (geometricBandIndicator 2 3 3) - endpointSeries 4 4 (geometricBandIndicator 2 3 3)) + (endpointSeries 2 3 (geometricBandIndicator 2 4 4) - endpointSeries 3 3 (geometricBandIndicator 2 4 4)) - 1 / 2) := by have hc : ∀ n : ℕ, (geometricBandIndicator 2 4 4 (n + 1) - geometricBandIndicator 2 4 4 n) * (geometricBandIndicator 2 3 3 (n + 1) - geometricBandIndicator 2 3 3 n) / (n + 1 : ℕ) = if n = 1 then (1 / 2 : ℝ) else 0 := by intro n rw [overlap_jump_product] by_cases hn : n = 1 <;> simp [hn] simpa only [← overlapIndicator_eq_product] using product_bands_jumps_hasSum (by norm_num : 0 < 2) (by norm_num : 2 < 4) (by norm_num : 4 < 2 * 4) (by norm_num : 1 < 4) (by norm_num : 0 < 2) (by norm_num : 2 < 3) (by norm_num : 3 < 2 * 3) (by norm_num : 1 < 3) hc (hasSum_ite_eq 1 (1 / 2 : ℝ)) def obstruction_jumps_hasSum : HasSum (fun n : ℕ => (obstructionIndicator (n + 1) - obstructionIndicator n) / (n + 1 : ℕ)) ((endpointSeries 4 4 (geometricBandIndicator 10 12 3) - endpointSeries 5 4 (geometricBandIndicator 10 12 3)) + (endpointSeries 10 3 (geometricBandIndicator 4 5 4) - endpointSeries 12 3 (geometricBandIndicator 4 5 4))) := by have hc : ∀ n : ℕ, (geometricBandIndicator 4 5 4 (n + 1) - geometricBandIndicator 4 5 4 n) * (geometricBandIndicator 10 12 3 (n + 1) - geometricBandIndicator 10 12 3 n) / (n + 1 : ℕ) = 0 := by intro n rw [obstruction_jump_product, zero_div] simpa only [← obstructionIndicator_eq_product, sub_zero] using product_bands_jumps_hasSum (by norm_num : 0 < 4) (by norm_num : 4 < 5) (by norm_num : 5 < 4 * 4) (by norm_num : 1 < 4) (by norm_num : 0 < 10) (by norm_num : 10 < 12) (by norm_num : 12 < 10 * 3) (by norm_num : 1 < 3) hc (hasSum_zero (α := ℝ)) def correction_jumps_tsum_endpoints : (∑' n : ℕ, (correctionIndicator (n + 1) - correctionIndicator n) / (n + 1 : ℕ)) = ((endpointSeries 2 4 (geometricBandIndicator 2 3 3) - endpointSeries 4 4 (geometricBandIndicator 2 3 3)) + (endpointSeries 2 3 (geometricBandIndicator 2 4 4) - endpointSeries 3 3 (geometricBandIndicator 2 4 4)) - 1 / 2) - ((endpointSeries 4 4 (geometricBandIndicator 10 12 3) - endpointSeries 5 4 (geometricBandIndicator 10 12 3)) + (endpointSeries 10 3 (geometricBandIndicator 4 5 4) - endpointSeries 12 3 (geometricBandIndicator 4 5 4))) := by apply HasSum.tsum_eq apply (overlap_jumps_hasSum.sub obstruction_jumps_hasSum).congr_fun intro n simp only [correctionIndicator] ring end Bounty end SubmissionComponent_EndpointDensity /- Component BandLocalization; SHA256 9f737571e217be11e84d598de91d992c50a071d4e0772ab28595d344486328f9 -/ section SubmissionComponent_BandLocalization /- Localizing a geometric interval index from bounds on a scaled argument. -/ namespace Bounty def band_index_lower {hi b x z k d a c j : ℕ} (hb : 1 < b) (ha : 0 < a) (hx : b ^ k ≤ x) (he : a * z = c * x) (hscale : a * hi * b ^ d ≤ c * b) (hj : z < hi * b ^ j) : k + d ≤ j := by by_contra hh have hp := Nat.pow_le_pow_right (by omega : 0 < b) (by omega : j + 1 ≤ k + d) rw [pow_succ', pow_add] at hp have hu : a * (hi * b ^ j) ≤ c * b ^ k := by apply (mul_le_mul_iff_left₀ (by omega : 0 < b)).mp calc a * (hi * b ^ j) * b = (a * hi) * (b * b ^ j) := by ring _ ≤ (a * hi) * (b ^ k * b ^ d) := Nat.mul_le_mul_left _ hp _ = b ^ k * (a * hi * b ^ d) := by ring _ ≤ b ^ k * (c * b) := Nat.mul_le_mul_left _ hscale _ = c * b ^ k * b := by ring have hzl := Nat.mul_lt_mul_of_pos_left hj ha have hxl := Nat.mul_le_mul_left c hx omega def band_index_upper {lo b x z k d a c j : ℕ} (hb : 1 < b) (hc : 0 < c) (hx : x < b * b ^ k) (he : a * z = c * x) (hscale : c ≤ a * lo * b ^ d) (hj : lo * b ^ j ≤ z) : j ≤ k + d := by by_contra hh have hp := Nat.pow_le_pow_right (by omega : 0 < b) (by omega : k + d + 1 ≤ j) rw [pow_succ', pow_add] at hp have hl : c * (b * b ^ k) ≤ a * (lo * b ^ j) := by calc c * (b * b ^ k) ≤ (a * lo * b ^ d) * (b * b ^ k) := Nat.mul_le_mul_right _ hscale _ = (a * lo) * (b * (b ^ k * b ^ d)) := by ring _ ≤ (a * lo) * b ^ j := Nat.mul_le_mul_left _ hp _ = a * (lo * b ^ j) := by ring have hzl := Nat.mul_le_mul_left a hj have hxu := Nat.mul_lt_mul_of_pos_left hx hc omega def band_scaled_iff_single {lo hi b x z k d a c : ℕ} (hb : 1 < b) (ha : 0 < a) (hc : 0 < c) (hxlo : b ^ k ≤ x) (hxhi : x < b * b ^ k) (he : a * z = c * x) (hbelow : a * hi * b ^ d ≤ c * b) (habove : c ≤ a * lo * b ^ d) : geometricBand lo hi b z ↔ lo * b ^ (k + d) ≤ z ∧ z < hi * b ^ (k + d) := by constructor · rintro ⟨j, hjlo, hjhi⟩ have hjl := band_index_lower hb ha hxlo he hbelow hjhi have hju := band_index_upper hb hc hxhi he habove hjlo have hj : j = k + d := by omega simpa only [hj] using And.intro hjlo hjhi · intro hz exact ⟨k + d, hz⟩ def band_scaled_iff_two {lo hi b x z k a c : ℕ} (hb : 1 < b) (ha : 0 < a) (hc : 0 < c) (hxlo : b ^ k ≤ x) (hxhi : x < b * b ^ k) (he : a * z = c * x) (hbelow : a * hi ≤ c * b) (habove : c ≤ a * lo * b) : geometricBand lo hi b z ↔ (lo * b ^ k ≤ z ∧ z < hi * b ^ k) ∨ (lo * b ^ (k + 1) ≤ z ∧ z < hi * b ^ (k + 1)) := by constructor · rintro ⟨j, hjlo, hjhi⟩ have hjl := band_index_lower (d := 0) hb ha hxlo he (by simpa only [pow_zero, mul_one] using hbelow) hjhi have hju := band_index_upper (d := 1) hb hc hxhi he (by simpa only [pow_one] using habove) hjlo have hh : j = k ∨ j = k + 1 := by omega rcases hh with rfl | rfl · exact Or.inl ⟨hjlo, hjhi⟩ · exact Or.inr ⟨hjlo, hjhi⟩ · rintro (hz | hz) · exact ⟨k, hz⟩ · exact ⟨k + 1, hz⟩ end Bounty end SubmissionComponent_BandLocalization /- Component ThirdSeriesTable; SHA256 ed92cbf86f0cc0a2074b0e2579cc2833b74d2d855a687fc5a8ea26918ba78fc7 -/ section SubmissionComponent_ThirdSeriesTable /- The five coefficient values in the powers-of-three boundary series. -/ namespace Bounty def fourBand_at_self {x : ℕ} (hx : 0 < x) : geometricBand 2 4 4 x ↔ 2 * 4 ^ Nat.log 4 x ≤ x := by have hlo := Nat.pow_log_le_self 4 (ne_of_gt hx) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < 4) x rw [pow_succ'] at hhi have he := band_scaled_iff_single (b := 4) (lo := 2) (hi := 4) (k := Nat.log 4 x) (d := 0) (a := 1) (c := 1) (x := x) (z := x) (by norm_num) (by norm_num) (by norm_num) hlo hhi rfl (by norm_num) (by norm_num) simpa only [Nat.add_zero, and_iff_left hhi] using he def fourBand_at_double {x : ℕ} (hx : 0 < x) : geometricBand 2 4 4 (2 * x) ↔ x < 2 * 4 ^ Nat.log 4 x := by have hlo := Nat.pow_log_le_self 4 (ne_of_gt hx) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < 4) x rw [pow_succ'] at hhi have he := band_scaled_iff_single (b := 4) (lo := 2) (hi := 4) (k := Nat.log 4 x) (d := 0) (a := 1) (c := 2) (x := x) (z := 2 * x) (by norm_num) (by norm_num) (by norm_num) hlo hhi (by omega) (by norm_num) (by norm_num) simp only [Nat.add_zero] at he exact he.trans (by omega) def fourGap_at_ten {x : ℕ} (hx : 0 < x) : geometricBand 4 5 4 (10 * x) ↔ 8 * 4 ^ Nat.log 4 x ≤ 5 * x ∧ x < 2 * 4 ^ Nat.log 4 x := by have hlo := Nat.pow_log_le_self 4 (ne_of_gt hx) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < 4) x rw [pow_succ'] at hhi have he := band_scaled_iff_single (b := 4) (lo := 4) (hi := 5) (k := Nat.log 4 x) (d := 1) (a := 1) (c := 10) (x := x) (z := 10 * x) (by norm_num) (by norm_num) (by norm_num) hlo hhi (by omega) (by norm_num) (by norm_num) rw [pow_succ'] at he exact he.trans (by omega) def fourGap_at_twelve {x : ℕ} (hx : 0 < x) : geometricBand 4 5 4 (12 * x) ↔ 4 * 4 ^ Nat.log 4 x ≤ 3 * x ∧ 3 * x < 5 * 4 ^ Nat.log 4 x := by have hlo := Nat.pow_log_le_self 4 (ne_of_gt hx) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < 4) x rw [pow_succ'] at hhi have he := band_scaled_iff_single (b := 4) (lo := 4) (hi := 5) (k := Nat.log 4 x) (d := 1) (a := 1) (c := 12) (x := x) (z := 12 * x) (by norm_num) (by norm_num) (by norm_num) hlo hhi (by omega) (by norm_num) (by norm_num) rw [pow_succ'] at he exact he.trans (by omega) def coefficient3_eq_boundaries (n : ℕ) : (coefficient3 n : ℝ) / 60 = geometricBandIndicator 2 4 4 (2 * 3 ^ n) / 2 - geometricBandIndicator 2 4 4 (3 ^ n) - geometricBandIndicator 4 5 4 (10 * 3 ^ n) / 10 + geometricBandIndicator 4 5 4 (12 * 3 ^ n) / 12 := by classical have hp : 0 < (3 : ℕ) ^ n := by positivity simp only [geometricBandIndicator, fourBand_at_double hp, fourBand_at_self hp, fourGap_at_ten hp, fourGap_at_twelve hp] unfold coefficient3 dsimp only split_ifs <;> norm_num <;> omega end Bounty end SubmissionComponent_ThirdSeriesTable /- Component FourthSeriesTable; SHA256 6d2b329f015a6e365ffef6e8dde629b8996ab0674be4f9336bdbb46be4304619 -/ section SubmissionComponent_FourthSeriesTable /- The seven coefficient values in the powers-of-four boundary series. -/ namespace Bounty def threeBand_at_self {x : ℕ} (hx : 0 < x) : geometricBand 2 3 3 x ↔ 2 * 3 ^ Nat.log 3 x ≤ x := by have hlo := Nat.pow_log_le_self 3 (ne_of_gt hx) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < 3) x rw [pow_succ'] at hhi have he := band_scaled_iff_single (b := 3) (lo := 2) (hi := 3) (k := Nat.log 3 x) (d := 0) (a := 1) (c := 1) (x := x) (z := x) (by norm_num) (by norm_num) (by norm_num) hlo hhi rfl (by norm_num) (by norm_num) simpa only [Nat.add_zero, and_iff_left hhi] using he def threeBand_at_double {x : ℕ} (hx : 0 < x) : geometricBand 2 3 3 (2 * x) ↔ 2 * x < 3 * 3 ^ Nat.log 3 x := by have hlo := Nat.pow_log_le_self 3 (ne_of_gt hx) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < 3) x rw [pow_succ'] at hhi have he := band_scaled_iff_single (b := 3) (lo := 2) (hi := 3) (k := Nat.log 3 x) (d := 0) (a := 1) (c := 2) (x := x) (z := 2 * x) (by norm_num) (by norm_num) (by norm_num) hlo hhi (by omega) (by norm_num) (by norm_num) simp only [Nat.add_zero] at he exact he.trans (by omega) def threeGap_mul_nine (x : ℕ) : geometricBand 10 12 3 (9 * x) ↔ geometricBand 10 12 3 x := by constructor · rintro ⟨j, hjlo, hjhi⟩ have hj : 2 ≤ j := by by_contra hh have hj : j = 0 ∨ j = 1 := by omega rcases hj with rfl | rfl <;> norm_num at hjlo hjhi <;> omega have he : j = j - 2 + 2 := by omega have hp : (3 : ℕ) ^ j = 9 * 3 ^ (j - 2) := by rw [he, pow_add] norm_num ring rw [hp] at hjlo hjhi exact ⟨j - 2, by omega, by omega⟩ · rintro ⟨j, hjlo, hjhi⟩ refine ⟨j + 2, ?_, ?_⟩ <;> rw [pow_add] <;> norm_num <;> omega def threeGap_at_self {x : ℕ} (hx : 0 < x) : geometricBand 10 12 3 x ↔ 10 * 3 ^ Nat.log 3 x ≤ 9 * x ∧ 3 * x < 4 * 3 ^ Nat.log 3 x := by have hlo := Nat.pow_log_le_self 3 (ne_of_gt hx) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < 3) x rw [pow_succ'] at hhi have he := band_scaled_iff_single (b := 3) (lo := 10) (hi := 12) (k := Nat.log 3 x) (d := 0) (a := 1) (c := 9) (x := x) (z := 9 * x) (by norm_num) (by norm_num) (by norm_num) hlo hhi (by omega) (by norm_num) (by norm_num) rw [threeGap_mul_nine] at he simp only [Nat.add_zero] at he exact he.trans (by omega) def threeGap_at_five_quarters {x z : ℕ} (hx : 0 < x) (hz : 4 * z = 5 * x) : geometricBand 10 12 3 z ↔ 15 * x < 16 * 3 ^ Nat.log 3 x ∨ 8 * 3 ^ Nat.log 3 x ≤ 3 * x := by have hlo := Nat.pow_log_le_self 3 (ne_of_gt hx) have hhi := Nat.lt_pow_succ_log_self (by norm_num : 1 < 3) x rw [pow_succ'] at hhi have he := band_scaled_iff_two (b := 3) (lo := 10) (hi := 12) (k := Nat.log 3 x) (a := 4) (c := 45) (x := x) (z := 9 * z) (by norm_num) (by norm_num) (by norm_num) hlo hhi (by omega) (by norm_num) (by norm_num) rw [threeGap_mul_nine, pow_succ'] at he exact he.trans (by omega) def coefficient4_succ_eq_boundaries (n : ℕ) : (coefficient4 (n + 1) : ℝ) / 60 = geometricBandIndicator 2 3 3 (2 * 4 ^ (n + 1)) / 2 - geometricBandIndicator 2 3 3 (4 ^ (n + 1)) - geometricBandIndicator 10 12 3 (4 ^ (n + 1)) + 4 / 5 * geometricBandIndicator 10 12 3 (5 * 4 ^ n) := by classical have hp : 0 < (4 : ℕ) ^ (n + 1) := by positivity have he : 4 * (5 * 4 ^ n) = 5 * 4 ^ (n + 1) := by rw [pow_succ']; ring simp only [geometricBandIndicator, threeBand_at_double hp, threeBand_at_self hp, threeGap_at_self hp, threeGap_at_five_quarters hp he] unfold coefficient4 dsimp only split_ifs <;> norm_num <;> omega end Bounty end SubmissionComponent_FourthSeriesTable /- Component EndpointSeriesAlgebra; SHA256 06bdc8cadbc5417e7be7d7f2b3e877ef90a53fafa56ba020359594a7f34d8f43 -/ section SubmissionComponent_EndpointSeriesAlgebra /- Absolute convergence, scaling, and removal of the first geometric term. -/ namespace Bounty def endpointSeries_summable {a b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : Summable (fun j : ℕ => w (a * b ^ j) / (a * b ^ j : ℕ)) := by have hh : ∀ j, |w (a * b ^ j) / (a : ℝ)| ≤ M / |(a : ℝ)| := by intro j rw [abs_div] exact div_le_div_of_nonneg_right (hw _) (abs_nonneg _) simpa only [div_div, Nat.cast_mul, Nat.cast_pow] using weighted_summable (by exact_mod_cast hb) hh def endpointSeries_hasSum {a b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : HasSum (fun j : ℕ => w (a * b ^ j) / (a * b ^ j : ℕ)) (endpointSeries a b w) := (endpointSeries_summable hb hw).hasSum def endpointSeries_hasSum_weighted {a b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : HasSum (fun j : ℕ => (w (a * b ^ j) / (a : ℝ)) / (b : ℝ) ^ j) (endpointSeries a b w) := by simpa only [div_div, Nat.cast_mul, Nat.cast_pow] using endpointSeries_hasSum (a := a) hb hw def hasSum_nat_tail_sub {f : ℕ → ℝ} (hs : Summable f) : HasSum (fun n : ℕ => f (n + 1)) ((∑' n : ℕ, f n) - f 0) := by have ht := ((summable_nat_add_iff 1).mpr hs).hasSum have he := hs.sum_add_tsum_nat_add 1 simp only [Finset.sum_range_one] at he have hh : (∑' n : ℕ, f (n + 1)) = (∑' n : ℕ, f n) - f 0 := by linarith rwa [hh] at ht def endpointSeries_hasSum_tail {a b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : HasSum (fun j : ℕ => w (a * b ^ (j + 1)) / (a * b ^ (j + 1) : ℕ)) (endpointSeries a b w - w a / (a : ℝ)) := by simpa only [pow_zero, mul_one, endpointSeries] using hasSum_nat_tail_sub (endpointSeries_summable (a := a) hb hw) def endpointSeries_base {b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) : endpointSeries b b w = (∑' j : ℕ, w (b ^ j) / (b : ℝ) ^ j) - w 1 := by have hs : Summable (fun j : ℕ => w (b ^ j) / (b : ℝ) ^ j) := weighted_summable (by exact_mod_cast hb) (fun j => hw _) have ht := hasSum_nat_tail_sub hs simp only [pow_zero, div_one] at ht have he : (fun j : ℕ => w (b ^ (j + 1)) / (b : ℝ) ^ (j + 1)) = (fun j : ℕ => w (b * b ^ j) / (b * b ^ j : ℕ)) := by funext j simp only [pow_succ', Nat.cast_mul, Nat.cast_pow] rw [he] at ht exact ht.tsum_eq def powers_hasSum_endpoint {b : ℕ} {w : ℕ → ℝ} {M : ℝ} (hb : 1 < b) (hw : ∀ n, |w n| ≤ M) (h1 : w 1 = 0) : HasSum (fun j : ℕ => w (b ^ j) / (b : ℝ) ^ j) (endpointSeries b b w) := by have hs : Summable (fun j : ℕ => w (b ^ j) / (b : ℝ) ^ j) := weighted_summable (by exact_mod_cast hb) (fun j => hw _) simpa only [endpointSeries_base hb hw, h1, sub_zero] using hs.hasSum def geometricBandIndicator_one {lo hi b : ℕ} (hlo : 1 < lo) (hb : 0 < b) : geometricBandIndicator lo hi b 1 = 0 := by classical have hh : ¬geometricBand lo hi b 1 := by rintro ⟨j, hj, _⟩ have hp : 0 < b ^ j := by positivity nlinarith simp only [geometricBandIndicator, if_neg hh] end Bounty end SubmissionComponent_EndpointSeriesAlgebra /- Component CoefficientSeries; SHA256 9fe75861c055132b578a720545607a030921e23b520e8787428075f3d285bd89 -/ section SubmissionComponent_CoefficientSeries /- Identification of the two grouped boundary sums with their coefficient series. -/ namespace Bounty def third_endpoints_eq_series : (endpointSeries 2 3 (geometricBandIndicator 2 4 4) - endpointSeries 3 3 (geometricBandIndicator 2 4 4)) - (endpointSeries 10 3 (geometricBandIndicator 4 5 4) - endpointSeries 12 3 (geometricBandIndicator 4 5 4)) = (∑' n : ℕ, (coefficient3 n : ℝ) / (3 : ℝ) ^ n) / 60 := by have h2 := endpointSeries_hasSum_weighted (a := 2) (by norm_num : 1 < 3) (geometricBandIndicator_bound 2 4 4) have h3 := powers_hasSum_endpoint (by norm_num : 1 < 3) (geometricBandIndicator_bound 2 4 4) (geometricBandIndicator_one (by norm_num) (by norm_num)) have h10 := endpointSeries_hasSum_weighted (a := 10) (by norm_num : 1 < 3) (geometricBandIndicator_bound 4 5 4) have h12 := endpointSeries_hasSum_weighted (a := 12) (by norm_num : 1 < 3) (geometricBandIndicator_bound 4 5 4) have h : HasSum (fun n : ℕ => ((coefficient3 n : ℝ) / (3 : ℝ) ^ n) / 60) (((endpointSeries 2 3 (geometricBandIndicator 2 4 4) - endpointSeries 3 3 (geometricBandIndicator 2 4 4)) - endpointSeries 10 3 (geometricBandIndicator 4 5 4)) + endpointSeries 12 3 (geometricBandIndicator 4 5 4)) := by apply (((h2.sub h3).sub h10).add h12).congr_fun intro n rw [show ((coefficient3 n : ℝ) / (3 : ℝ) ^ n) / 60 = ((coefficient3 n : ℝ) / 60) / (3 : ℝ) ^ n by ring, coefficient3_eq_boundaries] norm_num only [Nat.cast_ofNat] ring have he := h.tsum_eq rw [tsum_div_const] at he linarith def fourth_endpoints_eq_series : (endpointSeries 2 4 (geometricBandIndicator 2 3 3) - endpointSeries 4 4 (geometricBandIndicator 2 3 3)) - (endpointSeries 4 4 (geometricBandIndicator 10 12 3) - endpointSeries 5 4 (geometricBandIndicator 10 12 3)) = (∑' n : ℕ, (coefficient4 n : ℝ) / (4 : ℝ) ^ n) / 60 - 4 / 5 := by have htwo : geometricBandIndicator 2 3 3 2 = 1 := by classical have hh : geometricBand 2 3 3 2 := ⟨0, by norm_num, by norm_num⟩ simp only [geometricBandIndicator, if_pos hh] have h2 := endpointSeries_hasSum_tail (a := 2) (by norm_num : 1 < 4) (geometricBandIndicator_bound 2 3 3) rw [htwo] at h2 have h4 := endpointSeries_hasSum (a := 4) (by norm_num : 1 < 4) (geometricBandIndicator_bound 2 3 3) have hg4 := endpointSeries_hasSum (a := 4) (by norm_num : 1 < 4) (geometricBandIndicator_bound 10 12 3) have hg5 := endpointSeries_hasSum (a := 5) (by norm_num : 1 < 4) (geometricBandIndicator_bound 10 12 3) have h : HasSum (fun n : ℕ => ((coefficient4 (n + 1) : ℝ) / (4 : ℝ) ^ (n + 1)) / 60) ((((endpointSeries 2 4 (geometricBandIndicator 2 3 3) - 1 / 2) - endpointSeries 4 4 (geometricBandIndicator 2 3 3)) - endpointSeries 4 4 (geometricBandIndicator 10 12 3)) + endpointSeries 5 4 (geometricBandIndicator 10 12 3)) := by apply (((h2.sub h4).sub hg4).add hg5).congr_fun intro n rw [show ((coefficient4 (n + 1) : ℝ) / (4 : ℝ) ^ (n + 1)) / 60 = ((coefficient4 (n + 1) : ℝ) / 60) / (4 : ℝ) ^ (n + 1) by ring, coefficient4_succ_eq_boundaries] simp only [pow_succ', Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat] ring have ht := (hasSum_nat_tail_sub coefficient4_summable).div_const 60 have hz : (coefficient4 0 : ℝ) = 78 := by norm_num [coefficient4] simp only [pow_zero, div_one, hz] at ht have he := ht.unique h norm_num only [Nat.cast_ofNat] at he linarith end Bounty end SubmissionComponent_CoefficientSeries /- Component DensityIdentification; SHA256 585e75d7cbb68e7546dd75fed239dd3ea4ce2252dfa86f7955a1bf90dce6e723 -/ section SubmissionComponent_DensityIdentification /- The checked jump density equals the explicit mixed-base coefficient series. -/ namespace Bounty def jumpDensity_eq_explicitDensity : jumpDensity = explicitDensity := by rw [jumpDensity_eq_correction_series, ← correction_jumps_eq_kernel, correction_jumps_tsum_endpoints] unfold explicitDensity linarith [third_endpoints_eq_series, fourth_endpoints_eq_series] end Bounty end SubmissionComponent_DensityIdentification /- Component RotationCoordinates; SHA256 bb14d9b4e9c7f15bc4de45a15f4bf825227d09e227fe6d712753d8e9e24dd136 -/ section SubmissionComponent_RotationCoordinates /- Relate the arithmetic coefficient indices to rotations by logarithmic ratios. -/ namespace Bounty noncomputable def rotationSlope : ℝ := Real.log 4 / Real.log 3 def rotationSlope_irrational : Irrational rotationSlope := irrational_log_four_div_log_three def rotationSlope_bounds : 1 < rotationSlope ∧ rotationSlope < 2 := by have h3 : 0 < Real.log 3 := Real.log_pos (by norm_num) have hlo : Real.log 3 < Real.log 4 := Real.log_lt_log (by norm_num) (by norm_num) have hhi : Real.log 4 < 2 * Real.log 3 := by have hh := Real.log_lt_log (by norm_num : (0 : ℝ) < 4) (by norm_num : (4 : ℝ) < 3 ^ 2) simpa only [Real.log_pow, Nat.cast_ofNat] using hh constructor · exact (lt_div_iff₀ h3).mpr (by simpa only [one_mul] using hlo) · exact (div_lt_iff₀ h3).mpr hhi def inverse_rotationSlope : Real.logb 4 3 = 1 / rotationSlope := by unfold Real.logb rotationSlope simp only [one_div_div] def logb_nat_floor_int (a b : ℕ) : ⌊Real.logb (b : ℝ) (a : ℝ)⌋ = (Nat.log b a : ℤ) := by rw [Real.floor_logb_natCast (Nat.cast_nonneg a), Int.log_natCast] def normalized_power_eq_rotation {a b : ℕ} (ha : 0 < a) (hb : 1 < b) (n : ℕ) : ((a : ℝ) ^ n / (b : ℝ) ^ Nat.log b (a ^ n)) = (b : ℝ) ^ Int.fract ((n : ℝ) * Real.logb (b : ℝ) (a : ℝ)) := by have hbpos : (0 : ℝ) < b := by exact_mod_cast (by omega : 0 < b) have hbne : (b : ℝ) ≠ 1 := by exact_mod_cast (by omega : b ≠ 1) have hapos : (0 : ℝ) < (a ^ n : ℕ) := by exact_mod_cast (pow_pos ha n) have hl : Real.logb (b : ℝ) ((a ^ n : ℕ) : ℝ) = (n : ℝ) * Real.logb (b : ℝ) (a : ℝ) := by rw [Nat.cast_pow, Real.logb_pow] rw [← hl, Int.fract, logb_nat_floor_int, Int.cast_natCast, Real.rpow_sub hbpos, Real.rpow_logb hbpos hbne hapos, Real.rpow_natCast, Nat.cast_pow] def normalized_four_eq_rotation (n : ℕ) : ((4 : ℝ) ^ n / (3 : ℝ) ^ Nat.log 3 (4 ^ n)) = (3 : ℝ) ^ Int.fract ((n : ℝ) * rotationSlope) := by simpa only [Real.logb, rotationSlope, Nat.cast_ofNat] using normalized_power_eq_rotation (by norm_num : 0 < 4) (by norm_num : 1 < 3) n def normalized_three_eq_rotation (n : ℕ) : ((3 : ℝ) ^ n / (4 : ℝ) ^ Nat.log 4 (3 ^ n)) = (4 : ℝ) ^ Int.fract ((n : ℝ) / rotationSlope) := by have hh := normalized_power_eq_rotation (by norm_num : 0 < 3) (by norm_num : 1 < 4) n norm_num only [Nat.cast_ofNat] at hh simpa only [inverse_rotationSlope, mul_one_div] using hh end Bounty end SubmissionComponent_RotationCoordinates /- Component RotationCoding; SHA256 4d8017c476b97ac216f94bbc4e6e3a01643c1db5f5115a56b3baddea23d6f217 -/ section SubmissionComponent_RotationCoding /- The two integer coefficient sequences are exact codings of irrational rotations. -/ namespace Bounty noncomputable def realCoefficient4 (x : ℝ) : ℤ := by classical exact if 15 * x < 16 then 78 else if 9 * x < 10 then 30 else if 3 * x < 4 then -30 else if 2 * x < 3 then 30 else if x < 2 then 0 else if 3 * x < 8 then -60 else -12 noncomputable def realCoefficient3 (x : ℝ) : ℤ := by classical exact if 3 * x < 4 then 30 else if 5 * x < 8 then 35 else if 3 * x < 5 then 29 else if x < 2 then 24 else -60 def scaled_nat_ratio_lt {x y : ℕ} (hy : 0 < y) (a c : ℕ) : (a : ℝ) * ((x : ℝ) / (y : ℝ)) < (c : ℝ) ↔ a * x < c * y := by rw [← mul_div_assoc, div_lt_iff₀ (by exact_mod_cast hy : (0 : ℝ) < y)] norm_cast def realCoefficient4_normalized (n : ℕ) : realCoefficient4 ((4 : ℝ) ^ n / (3 : ℝ) ^ Nat.log 3 (4 ^ n)) = coefficient4 n := by have hh (p q : ℕ) : (p : ℝ) * ((4 : ℝ) ^ n / (3 : ℝ) ^ Nat.log 3 (4 ^ n)) < (q : ℝ) ↔ p * 4 ^ n < q * 3 ^ Nat.log 3 (4 ^ n) := by simpa only [Nat.cast_pow, Nat.cast_ofNat] using scaled_nat_ratio_lt (x := 4 ^ n) (by positivity : 0 < (3 : ℕ) ^ Nat.log 3 (4 ^ n)) p q have h15 := hh 15 16 have h9 := hh 9 10 have h3 := hh 3 4 have h2 := hh 2 3 have h1 := hh 1 2 have h8 := hh 3 8 norm_num only [Nat.cast_ofNat, Nat.cast_one, one_mul] at h15 h9 h3 h2 h1 h8 simp only [realCoefficient4, coefficient4, h15, h9, h3, h2, h1, h8] def realCoefficient3_normalized (n : ℕ) : realCoefficient3 ((3 : ℝ) ^ n / (4 : ℝ) ^ Nat.log 4 (3 ^ n)) = coefficient3 n := by have hh (p q : ℕ) : (p : ℝ) * ((3 : ℝ) ^ n / (4 : ℝ) ^ Nat.log 4 (3 ^ n)) < (q : ℝ) ↔ p * 3 ^ n < q * 4 ^ Nat.log 4 (3 ^ n) := by simpa only [Nat.cast_pow, Nat.cast_ofNat] using scaled_nat_ratio_lt (x := 3 ^ n) (by positivity : 0 < (4 : ℕ) ^ Nat.log 4 (3 ^ n)) p q have h3 := hh 3 4 have h5 := hh 5 8 have h35 := hh 3 5 have h1 := hh 1 2 norm_num only [Nat.cast_ofNat, Nat.cast_one, one_mul] at h3 h5 h35 h1 simp only [realCoefficient3, coefficient3, h3, h5, h35, h1] def coefficient4_rotation (n : ℕ) : coefficient4 n = realCoefficient4 ((3 : ℝ) ^ Int.fract ((n : ℝ) * rotationSlope)) := by rw [← realCoefficient4_normalized, normalized_four_eq_rotation] def coefficient3_rotation (n : ℕ) : coefficient3 n = realCoefficient3 ((4 : ℝ) ^ Int.fract ((n : ℝ) / rotationSlope)) := by rw [← realCoefficient3_normalized, normalized_three_eq_rotation] end Bounty end SubmissionComponent_RotationCoding /- Component RotationSeparation; SHA256 2fd960aca7b09d88db238c99cd09b06192600196e4b83ac2be0b8ce7f9bf7f51 -/ section SubmissionComponent_RotationSeparation /- A direct determinant proof of the separation bound between consecutive rational returns. -/ namespace Bounty def return_pair_best_approximation {α : ℝ} {p P : ℤ} {q Q n : ℕ} (k : ℤ) (hq : 0 < q) (hn : 0 < n) (hnQ : n < Q) (hdet : (q : ℤ) * P - p * Q = 1) (hd : 0 < (q : ℝ) * α - p) (hd' : 0 < (P : ℝ) - Q * α) : (q : ℝ) * α - p ≤ |(n : ℝ) * α - k| := by let a : ℤ := P * n - Q * k let b : ℤ := q * k - p * n have hlin : a * q + b * Q = n := by dsimp [a, b] calc (P * n - Q * k) * q + (q * k - p * n) * Q = ((q : ℤ) * P - p * Q) * n := by ring _ = n := by rw [hdet, one_mul] have hdetR : (q : ℝ) * P - p * Q = 1 := by exact_mod_cast hdet have herr : (a : ℝ) * ((q : ℝ) * α - p) - (b : ℝ) * ((P : ℝ) - Q * α) = (n : ℝ) * α - k := by dsimp [a, b] push_cast calc ((P : ℝ) * n - Q * k) * ((q : ℝ) * α - p) - ((q : ℝ) * k - p * n) * ((P : ℝ) - Q * α) = ((q : ℝ) * P - p * Q) * ((n : ℝ) * α - k) := by ring _ = (n : ℝ) * α - k := by rw [hdetR, one_mul] have hqZ : (0 : ℤ) < q := by exact_mod_cast hq have hnZ : (0 : ℤ) < n := by exact_mod_cast hn have hQZ : (0 : ℤ) < Q := by exact_mod_cast (by omega : 0 < Q) have hnQZ : (n : ℤ) < Q := by exact_mod_cast hnQ by_cases hb : b ≤ 0 · have ha : 1 ≤ a := by by_contra hh have han : a ≤ 0 := by omega have h1 := mul_nonpos_of_nonpos_of_nonneg han hqZ.le have h2 := mul_nonpos_of_nonpos_of_nonneg hb hQZ.le omega have haR : (1 : ℝ) ≤ a := by exact_mod_cast ha have hbR : (b : ℝ) ≤ 0 := by exact_mod_cast hb have h1 := mul_le_mul_of_nonneg_right haR hd.le have h2 := mul_nonpos_of_nonpos_of_nonneg hbR hd'.le have habs := le_abs_self ((n : ℝ) * α - k) nlinarith · have hbpos : 1 ≤ b := by omega have ha : a ≤ -1 := by by_contra hh have han : 0 ≤ a := by omega have h1 := mul_nonneg han hqZ.le have h2 := mul_le_mul_of_nonneg_right hbpos hQZ.le nlinarith have haR : (a : ℝ) ≤ -1 := by exact_mod_cast ha have hbR : (0 : ℝ) ≤ b := by exact_mod_cast (by omega : 0 ≤ b) have h1 := mul_le_mul_of_nonneg_right haR hd.le have h2 := mul_nonneg hbR hd'.le have habs := neg_le_abs ((n : ℝ) * α - k) nlinarith def return_pair_error_identity {α : ℝ} {p P : ℤ} {q Q : ℕ} (hdet : (q : ℤ) * P - p * Q = 1) : (Q : ℝ) * ((q : ℝ) * α - p) + (q : ℝ) * ((P : ℝ) - Q * α) = 1 := by have hh : (q : ℝ) * P - p * Q = 1 := by exact_mod_cast hdet nlinarith def return_pair_positive_error_bound {α : ℝ} {p P : ℤ} {q Q : ℕ} (hq : 0 < q) (hQ : 0 < Q) (hdet : (q : ℤ) * P - p * Q = 1) (hd' : 0 < (P : ℝ) - Q * α) : (q : ℝ) * α - p < 1 / (Q : ℝ) := by have hqr : (0 : ℝ) < q := by exact_mod_cast hq have hQr : (0 : ℝ) < Q := by exact_mod_cast hQ have hpos := mul_pos hqr hd' have hh := return_pair_error_identity (α := α) hdet apply (lt_div_iff₀ hQr).mpr nlinarith end Bounty end SubmissionComponent_RotationSeparation /- Component RotationCoverage; SHA256 595f3ad4399bb6edbaaedadaf630f093208ec2c88ba9c472f0a1136a19bd916a -/ section SubmissionComponent_RotationCoverage /- A finite-minimum proof that every short rotation arc is visited in a bounded block. -/ namespace Bounty def fract_sub_small {x d : ℝ} (hd : 0 < d) (hxd : d ≤ Int.fract x) : Int.fract (x - d) = Int.fract x - d := by have he : x - d = (Int.fract x - d) + (⌊x⌋ : ℝ) := by rw [Int.fract] ring rw [he, Int.fract_add_intCast] exact Int.fract_eq_self.mpr ⟨by linarith, by linarith [Int.fract_lt_one x]⟩ def return_pair_arc_covered {α : ℝ} {p P : ℤ} {q Q : ℕ} (hq : 0 < q) (hQ : 0 < Q) (hd : 0 < (q : ℝ) * α - p) (hd' : 0 < (P : ℝ) - Q * α) (hle : (P : ℝ) - Q * α ≤ (q : ℝ) * α - p) (t : ℝ) : ∃ j : ℕ, j < q + Q ∧ Int.fract ((j : ℝ) * α - t) < (q : ℝ) * α - p := by let f : ℕ → ℝ := fun j => Int.fract ((j : ℝ) * α - t) have hne : (Finset.range (q + Q)).Nonempty := ⟨0, Finset.mem_range.mpr (by omega)⟩ obtain ⟨j, hj, hmin⟩ := Finset.exists_min_image (Finset.range (q + Q)) f hne have hjlt := Finset.mem_range.mp hj refine ⟨j, hjlt, ?_⟩ by_contra hh have hdf : (q : ℝ) * α - p ≤ f j := le_of_not_gt hh by_cases hqj : q ≤ j · have hk : j - q < q + Q := by omega have hmin' := hmin (j - q) (Finset.mem_range.mpr hk) have he : ((j - q : ℕ) : ℝ) * α - t = (((j : ℝ) * α - t) - ((q : ℝ) * α - p)) - p := by rw [Nat.cast_sub hqj] ring have hf : f (j - q) = f j - ((q : ℝ) * α - p) := by dsimp only [f] rw [he, Int.fract_sub_intCast, fract_sub_small hd hdf] rw [hf] at hmin' linarith · have hk : j + Q < q + Q := by omega have hmin' := hmin (j + Q) (Finset.mem_range.mpr hk) have he : ((j + Q : ℕ) : ℝ) * α - t = (((j : ℝ) * α - t) - ((P : ℝ) - Q * α)) + P := by push_cast ring have hf : f (j + Q) = f j - ((P : ℝ) - Q * α) := by dsimp only [f] rw [he, Int.fract_add_intCast, fract_sub_small hd' (hle.trans hdf)] rw [hf] at hmin' linarith def return_pair_arc_covered_block {α : ℝ} {p P : ℤ} {q Q : ℕ} (hq : 0 < q) (hQ : 0 < Q) (hd : 0 < (q : ℝ) * α - p) (hd' : 0 < (P : ℝ) - Q * α) (hle : (P : ℝ) - Q * α ≤ (q : ℝ) * α - p) (t : ℝ) (N : ℕ) : ∃ j : ℕ, N ≤ j ∧ j < N + q + Q ∧ Int.fract ((j : ℝ) * α - t) < (q : ℝ) * α - p := by obtain ⟨k, hk, hh⟩ := return_pair_arc_covered hq hQ hd hd' hle (t - (N : ℝ) * α) refine ⟨N + k, by omega, by omega, ?_⟩ have he : ((N + k : ℕ) : ℝ) * α - t = (k : ℝ) * α - (t - (N : ℝ) * α) := by push_cast ring rwa [he] end Bounty end SubmissionComponent_RotationCoverage /- Component ReturnBrackets; SHA256 e10f3ceb601dc46ec297fbea9fe9ca635b94cbd86e990c27a4f4f070c076895d -/ section SubmissionComponent_ReturnBrackets /- Unbounded unimodular return pairs, constructed directly by mediants. -/ namespace Bounty def irrational_nat_mul_ne_int {α : ℝ} (hα : Irrational α) {q : ℕ} (hq : 0 < q) (p : ℤ) : (q : ℝ) * α ≠ p := by intro he apply hα.ne_rational p (q : ℤ) have hqr : (q : ℝ) ≠ 0 := by exact_mod_cast (Nat.ne_of_gt hq) rw [Int.cast_natCast, eq_div_iff hqr] nlinarith def positive_remainder_exists {x y : ℝ} (hy : 0 < y) (hxy : y < x) (hne : ∀ k : ℕ, x ≠ (k : ℝ) * y) : ∃ k : ℕ, 0 < k ∧ 0 < x - (k : ℝ) * y ∧ x - (k : ℝ) * y < y := by let k : ℕ := ⌊x / y⌋₊ have hratio : 1 < x / y := (lt_div_iff₀ hy).mpr (by simpa using hxy) have hk : 0 < k := Nat.floor_pos.mpr hratio.le have hlo : (k : ℝ) * y ≤ x := (le_div_iff₀ hy).mp (Nat.floor_le (by linarith)) have hhi : x < ((k : ℝ) + 1) * y := (div_lt_iff₀ hy).mp (Nat.lt_floor_add_one (x / y)) refine ⟨k, hk, ?_, by nlinarith⟩ have hne' := hne k have hlt : (k : ℝ) * y < x := lt_of_le_of_ne hlo (Ne.symm hne') linarith structure ReturnBracket (α : ℝ) where p : ℤ P : ℤ q : ℕ Q : ℕ q_pos : 0 < q Q_pos : 0 < Q q_le_Q : q ≤ Q determinant : (q : ℤ) * P - p * Q = 1 lower_pos : 0 < (q : ℝ) * α - p upper_pos : 0 < (P : ℝ) - Q * α upper_lt_lower : (P : ℝ) - Q * α < (q : ℝ) * α - p def ReturnBracket.next_exists {α : ℝ} (hα : Irrational α) (s : ReturnBracket α) : ∃ t : ReturnBracket α, s.q < t.q ∧ s.Q < t.Q := by have hsq := s.q_pos have hsQ := s.Q_pos let d : ℝ := (s.q : ℝ) * α - s.p let e : ℝ := (s.P : ℝ) - s.Q * α have hd : 0 < d := s.lower_pos have he : 0 < e := s.upper_pos have hed : e < d := s.upper_lt_lower have hne : ∀ k : ℕ, d ≠ (k : ℝ) * e := by intro k hh have hq : 0 < s.q + k * s.Q := by omega apply irrational_nat_mul_ne_int hα hq (s.p + (k : ℤ) * s.P) dsimp [d, e] at hh push_cast nlinarith obtain ⟨a, ha, hda, hdae⟩ := positive_remainder_exists he hed hne let p' : ℤ := s.p + (a : ℤ) * s.P let q' : ℕ := s.q + a * s.Q let d' : ℝ := (q' : ℝ) * α - p' have hd'eq : d' = d - (a : ℝ) * e := by dsimp [d', q', p', d, e] push_cast ring have hd' : 0 < d' := hd'eq ▸ hda have hd'e : d' < e := hd'eq ▸ hdae have hq' : 0 < q' := by dsimp [q']; omega have hne' : ∀ k : ℕ, e ≠ (k : ℝ) * d' := by intro k hh have hQ : 0 < s.Q + k * q' := by omega apply irrational_nat_mul_ne_int hα hQ (s.P + (k : ℤ) * p') dsimp [e, d'] at hh push_cast nlinarith obtain ⟨b, hb, heb, hebd⟩ := positive_remainder_exists hd' hd'e hne' let P' : ℤ := s.P + (b : ℤ) * p' let Q' : ℕ := s.Q + b * q' have hQ' : 0 < Q' := by dsimp [Q']; omega have hqQ' : q' ≤ Q' := by have hh : q' ≤ b * q' := by nlinarith dsimp [Q'] omega have hdet' : (q' : ℤ) * s.P - p' * s.Q = 1 := by dsimp [q', p'] push_cast nlinarith [s.determinant] have hdet'' : (q' : ℤ) * P' - p' * Q' = 1 := by dsimp [P', Q'] push_cast nlinarith [hdet'] have he'eq : (P' : ℝ) - Q' * α = e - (b : ℝ) * d' := by dsimp [P', Q', e, d'] push_cast ring let t : ReturnBracket α := { p := p', P := P', q := q', Q := Q', q_pos := hq', Q_pos := hQ', q_le_Q := hqQ', determinant := hdet'', lower_pos := hd', upper_pos := he'eq ▸ heb, upper_lt_lower := he'eq ▸ hebd } refine ⟨t, ?_, ?_⟩ · change s.q < q' have hh : 0 < a * s.Q := Nat.mul_pos ha s.Q_pos dsimp [q'] omega · change s.Q < Q' have hh : 0 < b * q' := Nat.mul_pos hb hq' dsimp [Q'] omega def returnBracket_nonempty {α : ℝ} (hα : Irrational α) (hlo : 1 < α) (hhi : α < 2) : Nonempty (ReturnBracket α) := by let d : ℝ := α - 1 let e : ℝ := 2 - α have hd : 0 < d := by dsimp [d]; linarith have he : 0 < e := by dsimp [e]; linarith have hne : e ≠ d := by intro hh apply hα.ne_rational 3 2 dsimp [e, d] at hh norm_num linarith by_cases hed : e < d · exact ⟨{ p := 1, P := 2, q := 1, Q := 1, q_pos := by norm_num, Q_pos := by norm_num, q_le_Q := le_rfl, determinant := by norm_num, lower_pos := by simpa [d] using hd, upper_pos := by simpa [e] using he, upper_lt_lower := by simpa [d, e] using hed }⟩ · have hde : d < e := lt_of_le_of_ne (le_of_not_gt hed) (Ne.symm hne) have hmultiple : ∀ k : ℕ, e ≠ (k : ℝ) * d := by intro k hh apply irrational_nat_mul_ne_int hα (Nat.succ_pos k) (2 + k) dsimp [e, d] at hh push_cast nlinarith obtain ⟨k, hk, hrem, hremd⟩ := positive_remainder_exists hd hde hmultiple have herr : ((2 + (k : ℤ) : ℤ) : ℝ) - (1 + k : ℕ) * α = e - (k : ℝ) * d := by dsimp [e, d] push_cast ring exact ⟨{ p := 1, P := 2 + k, q := 1, Q := 1 + k, q_pos := by norm_num, Q_pos := by omega, q_le_Q := by omega, determinant := by push_cast; ring, lower_pos := by simpa [d] using hd, upper_pos := herr ▸ hrem, upper_lt_lower := by simpa only [Nat.cast_one, Int.cast_one, one_mul] using (show ((2 + (k : ℤ) : ℤ) : ℝ) - (1 + k : ℕ) * α < d from herr ▸ hremd) }⟩ end Bounty end SubmissionComponent_ReturnBrackets /- Component ReturnSequence; SHA256 2f8dc55053bcb6273e6119c6de833d275fc60d98d6478c0535d74adfed32421c -/ section SubmissionComponent_ReturnSequence /- A sequence of return pairs with diverging denominators and vanishing errors. -/ open Filter open scoped Topology namespace Bounty noncomputable def returnBracketNext {α : ℝ} (hα : Irrational α) (s : ReturnBracket α) : ReturnBracket α := Classical.choose (s.next_exists hα) def returnBracketNext_growth {α : ℝ} (hα : Irrational α) (s : ReturnBracket α) : s.q < (returnBracketNext hα s).q ∧ s.Q < (returnBracketNext hα s).Q := Classical.choose_spec (s.next_exists hα) noncomputable def returnBracketSequence {α : ℝ} (hα : Irrational α) (hlo : 1 < α) (hhi : α < 2) : ℕ → ReturnBracket α | 0 => Classical.choice (returnBracket_nonempty hα hlo hhi) | n + 1 => returnBracketNext hα (returnBracketSequence hα hlo hhi n) def returnBracketSequence_growth {α : ℝ} (hα : Irrational α) (hlo : 1 < α) (hhi : α < 2) (n : ℕ) : (returnBracketSequence hα hlo hhi n).q < (returnBracketSequence hα hlo hhi (n + 1)).q ∧ (returnBracketSequence hα hlo hhi n).Q < (returnBracketSequence hα hlo hhi (n + 1)).Q := returnBracketNext_growth hα (returnBracketSequence hα hlo hhi n) def returnBracketSequence_lower_bound {α : ℝ} (hα : Irrational α) (hlo : 1 < α) (hhi : α < 2) (n : ℕ) : n + 1 ≤ (returnBracketSequence hα hlo hhi n).q ∧ n + 1 ≤ (returnBracketSequence hα hlo hhi n).Q := by induction n with | zero => have hh := (returnBracketSequence hα hlo hhi 0).q_pos have hh' := (returnBracketSequence hα hlo hhi 0).Q_pos omega | succ n ih => have hh := returnBracketSequence_growth hα hlo hhi n omega def returnBracketSequence_q_tendsto {α : ℝ} (hα : Irrational α) (hlo : 1 < α) (hhi : α < 2) : Tendsto (fun n => (returnBracketSequence hα hlo hhi n).q) atTop atTop := by refine tendsto_atTop.2 (fun N => ?_) filter_upwards [eventually_ge_atTop N] with n hn have hh := (returnBracketSequence_lower_bound hα hlo hhi n).1 omega def returnBracketSequence_Q_tendsto {α : ℝ} (hα : Irrational α) (hlo : 1 < α) (hhi : α < 2) : Tendsto (fun n => (returnBracketSequence hα hlo hhi n).Q) atTop atTop := by refine tendsto_atTop.2 (fun N => ?_) filter_upwards [eventually_ge_atTop N] with n hn have hh := (returnBracketSequence_lower_bound hα hlo hhi n).2 omega def ReturnBracket.lower_error_lt {α : ℝ} (s : ReturnBracket α) : (s.q : ℝ) * α - s.p < 1 / (s.Q : ℝ) := return_pair_positive_error_bound s.q_pos s.Q_pos s.determinant s.upper_pos def ReturnBracket.lower_error_lt_one {α : ℝ} (s : ReturnBracket α) : (s.q : ℝ) * α - s.p < 1 := by have hQ : (1 : ℝ) ≤ s.Q := by exact_mod_cast s.Q_pos have hh : 1 / (s.Q : ℝ) ≤ 1 := by apply (div_le_iff₀ (by linarith : (0 : ℝ) < s.Q)).mpr nlinarith exact s.lower_error_lt.trans_le hh def ReturnBracket.numerator_bounds {α : ℝ} (s : ReturnBracket α) (hlo : 1 < α) (hhi : α < 2) : (s.q : ℤ) ≤ s.p ∧ s.p < 2 * s.q ∧ (s.Q : ℤ) < s.P ∧ s.P ≤ 2 * s.Q ∧ s.p < s.P := by have hq : (0 : ℝ) < s.q := by exact_mod_cast s.q_pos have hQ : (0 : ℝ) < s.Q := by exact_mod_cast s.Q_pos have hd := s.lower_pos have he := s.upper_pos have he_lt := s.upper_lt_lower have hd_one := s.lower_error_lt_one have hqlo : (s.q : ℝ) < s.q * α := by nlinarith have hqhi : (s.q : ℝ) * α < 2 * s.q := by nlinarith have hQlo : (s.Q : ℝ) < s.Q * α := by nlinarith have hQhi : (s.Q : ℝ) * α < 2 * s.Q := by nlinarith have hp : (s.q : ℤ) ≤ s.p := by by_contra hh have hhZ : s.p + 1 ≤ (s.q : ℤ) := by omega have hhR : (s.p : ℝ) + 1 ≤ s.q := by exact_mod_cast hhZ linarith have hp' : s.p < 2 * s.q := by have hh : (s.p : ℝ) < 2 * s.q := by linarith exact_mod_cast hh have hP : (s.Q : ℤ) < s.P := by have hh : (s.Q : ℝ) < s.P := by linarith exact_mod_cast hh have hP' : s.P ≤ 2 * s.Q := by by_contra hh have hhZ : 2 * (s.Q : ℤ) + 1 ≤ s.P := by omega have hhR : 2 * (s.Q : ℝ) + 1 ≤ s.P := by exact_mod_cast hhZ linarith have hqQ : (s.q : ℝ) ≤ s.Q := by exact_mod_cast s.q_le_Q have hpP : s.p < s.P := by have hh : (s.p : ℝ) < s.P := by nlinarith exact_mod_cast hh exact ⟨hp, hp', hP, hP', hpP⟩ def returnBracketSequence_error_tendsto {α : ℝ} (hα : Irrational α) (hlo : 1 < α) (hhi : α < 2) : Tendsto (fun n => ((returnBracketSequence hα hlo hhi n).q : ℝ) * α - (returnBracketSequence hα hlo hhi n).p) atTop (nhds 0) := by have hlim : Tendsto (fun n => 1 / ((returnBracketSequence hα hlo hhi n).Q : ℝ)) atTop (nhds 0) := tendsto_one_div_atTop_nhds_zero_nat.comp (returnBracketSequence_Q_tendsto hα hlo hhi) exact squeeze_zero (fun n => (returnBracketSequence hα hlo hhi n).lower_pos.le) (fun n => (returnBracketSequence hα hlo hhi n).lower_error_lt.le) hlim noncomputable def rotationReturns : ℕ → ReturnBracket rotationSlope := returnBracketSequence rotationSlope_irrational rotationSlope_bounds.1 rotationSlope_bounds.2 def rotationReturns_denominators_tendsto : Tendsto (fun n => (rotationReturns n).q) atTop atTop ∧ Tendsto (fun n => (rotationReturns n).Q) atTop atTop := ⟨returnBracketSequence_q_tendsto _ _ _, returnBracketSequence_Q_tendsto _ _ _⟩ def rotationReturns_error_tendsto : Tendsto (fun n => ((rotationReturns n).q : ℝ) * rotationSlope - (rotationReturns n).p) atTop (nhds 0) := returnBracketSequence_error_tendsto _ _ _ end Bounty end SubmissionComponent_ReturnSequence /- Component ReturnScale; SHA256 13ff160f1964d8740c2042d0a088a38914b4159a1d650f0efba27eed6bcb568a -/ section SubmissionComponent_ReturnScale /- The common logarithmic scale of the two rotation codings. -/ open Filter open scoped Topology namespace Bounty noncomputable def returnScale (n : ℕ) : ℝ := (rotationReturns n).P * Real.log 3 def ReturnBracket.log_bounds (s : ReturnBracket rotationSlope) : (s.p : ℝ) * Real.log 3 < (s.q : ℝ) * Real.log 4 ∧ (s.q : ℝ) * Real.log 4 ≤ (s.Q : ℝ) * Real.log 4 ∧ (s.Q : ℝ) * Real.log 4 < (s.P : ℝ) * Real.log 3 ∧ (s.P : ℝ) * Real.log 3 ≤ 2 * ((s.Q : ℝ) * Real.log 4) := by have h3 : 0 < Real.log 3 := Real.log_pos (by norm_num) have h4 : 0 < Real.log 4 := Real.log_pos (by norm_num) have h34 : Real.log 3 < Real.log 4 := Real.log_lt_log (by norm_num) (by norm_num) have hrel : rotationSlope * Real.log 3 = Real.log 4 := by dsimp [rotationSlope] exact div_mul_cancel₀ _ (ne_of_gt h3) have hd := mul_pos s.lower_pos h3 have he := mul_pos s.upper_pos h3 have hlo : (s.p : ℝ) * Real.log 3 < (s.q : ℝ) * Real.log 4 := by nlinarith [hrel] have hhi : (s.Q : ℝ) * Real.log 4 < (s.P : ℝ) * Real.log 3 := by nlinarith [hrel] have hqQ : (s.q : ℝ) ≤ s.Q := by exact_mod_cast s.q_le_Q have hmid := mul_le_mul_of_nonneg_right hqQ h4.le have hP : (s.P : ℝ) ≤ 2 * s.Q := by exact_mod_cast (s.numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2).2.2.2.1 have hQ : (0 : ℝ) < s.Q := by exact_mod_cast s.Q_pos have hPln := mul_le_mul_of_nonneg_right hP h3.le refine ⟨hlo, hmid, hhi, ?_⟩ nlinarith def returnScale_pos (n : ℕ) : 0 < returnScale n := by have h3 : 0 < Real.log 3 := Real.log_pos (by norm_num) have hh := (rotationReturns n).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hQ := (rotationReturns n).Q_pos have hP : (0 : ℝ) < (rotationReturns n).P := by exact_mod_cast (by omega : 0 < (rotationReturns n).P) exact mul_pos hP h3 def returnScale_bounds (n : ℕ) : ((rotationReturns n).q : ℝ) * Real.log 4 ≤ returnScale n ∧ ((rotationReturns n).p : ℝ) * Real.log 3 ≤ returnScale n ∧ returnScale n / 2 ≤ ((rotationReturns n).Q : ℝ) * Real.log 4 ∧ ((rotationReturns n).Q : ℝ) * Real.log 4 ≤ returnScale n := by have hh := (rotationReturns n).log_bounds dsimp only [returnScale] constructor · exact hh.2.1.trans hh.2.2.1.le constructor · exact (hh.1.trans_le hh.2.1).le.trans hh.2.2.1.le constructor · linarith [hh.2.2.2] · exact hh.2.2.1.le def returnScale_tendsto : Tendsto returnScale atTop atTop := by have hQ : Tendsto (fun n => ((rotationReturns n).Q : ℝ)) atTop atTop := tendsto_natCast_atTop_atTop.comp rotationReturns_denominators_tendsto.2 have hh : Tendsto (fun n => ((rotationReturns n).Q : ℝ) * Real.log 4) atTop atTop := (tendsto_mul_const_atTop_of_pos (Real.log_pos (by norm_num : (1 : ℝ) < 4))).2 hQ exact tendsto_atTop_mono (fun n => (returnScale_bounds n).2.2.2) hh end Bounty end SubmissionComponent_ReturnScale /- Component RotationOrbitSeparation; SHA256 975abbb0963357e1a5555aa26c5c4b89e887d1fa20146f782a7bdb977be8048f -/ section SubmissionComponent_RotationOrbitSeparation /- Uniform separation of shrinking visits to different rotation orbits. -/ open Filter open scoped Topology namespace Bounty noncomputable def integerDistance (x : ℝ) : ℝ := min (Int.fract x) (1 - Int.fract x) def integerDistance_pos {x : ℝ} (hx : ∀ k : ℤ, x ≠ k) : 0 < integerDistance x := by exact lt_min (Int.fract_pos.mpr (hx ⌊x⌋)) (sub_pos.mpr (Int.fract_lt_one x)) def integerDistance_le_abs (x : ℝ) (k : ℤ) : integerDistance x ≤ |x - k| := by by_cases hk : k ≤ ⌊x⌋ · have hkr : (k : ℝ) ≤ (⌊x⌋ : ℝ) := by exact_mod_cast hk have hf : Int.fract x ≤ x - k := by change x - (⌊x⌋ : ℝ) ≤ x - k linarith exact (min_le_left _ _).trans (hf.trans (le_abs_self _)) · have hk' : ⌊x⌋ + 1 ≤ k := by omega have hkr : (⌊x⌋ : ℝ) + 1 ≤ k := by exact_mod_cast hk' have hf : 1 - Int.fract x ≤ -(x - k) := by change 1 - (x - (⌊x⌋ : ℝ)) ≤ -(x - k) linarith exact (min_le_right _ _).trans (hf.trans (neg_le_abs _)) def two_visits_distance_lt {α t u δ : ℝ} {i j : ℤ} (hi : Int.fract ((i : ℝ) * α - t) < δ) (hj : Int.fract ((j : ℝ) * α - u) < δ) : integerDistance (((j - i : ℤ) : ℝ) * α - (u - t)) < δ := by let x : ℝ := (i : ℝ) * α - t let y : ℝ := (j : ℝ) * α - u have he : (((j - i : ℤ) : ℝ) * α - (u - t)) - ((⌊y⌋ - ⌊x⌋ : ℤ) : ℝ) = Int.fract y - Int.fract x := by change _ = (y - (⌊y⌋ : ℝ)) - (x - (⌊x⌋ : ℝ)) dsimp only [x, y] push_cast ring have hh := integerDistance_le_abs (((j - i : ℤ) : ℝ) * α - (u - t)) (⌊y⌋ - ⌊x⌋) rw [he] at hh have hh' : |Int.fract y - Int.fract x| < δ := by have hxn := Int.fract_nonneg x have hyn := Int.fract_nonneg y rw [abs_lt] constructor <;> linarith exact hh.trans_lt hh' def distinct_orbit_visits_separate {α t u : ℝ} {δ : ℕ → ℝ} (hδ : Tendsto δ atTop (nhds 0)) (horbit : ∀ h k : ℤ, (h : ℝ) * α - (u - t) ≠ k) (M : ℕ) : ∀ᶠ r in atTop, ∀ i j : ℤ, Int.fract ((i : ℝ) * α - t) < δ r → Int.fract ((j : ℝ) * α - u) < δ r → (M : ℤ) < |j - i| := by have hsmall : ∀ᶠ r in atTop, ∀ h ∈ Finset.Icc (-(M : ℤ)) M, δ r < integerDistance ((h : ℝ) * α - (u - t)) := by apply (eventually_all_finset _).mpr intro h hh exact hδ.eventually (gt_mem_nhds (integerDistance_pos (horbit h))) filter_upwards [hsmall] with r hr i j hi hj by_contra hh have habs : |j - i| ≤ (M : ℤ) := le_of_not_gt hh have hmem : j - i ∈ Finset.Icc (-(M : ℤ)) M := by simpa only [Finset.mem_Icc, abs_le] using habs have hlarge := hr (j - i) hmem have hclose := two_visits_distance_lt hi hj linarith end Bounty end SubmissionComponent_RotationOrbitSeparation /- Component JumpOrbitArithmetic; SHA256 3e5bd5dd7bf3f67ac9e88879f3255eb517f9238077437c3b7f28b9d116a54af1 -/ section SubmissionComponent_JumpOrbitArithmetic /- Prime valuations distinguish all four jump orbits in either coding. -/ namespace Bounty def rationalPrimeMonomial (a b c : ℤ) : ℚ := (2 : ℚ) ^ a * (3 : ℚ) ^ b * (5 : ℚ) ^ c def rationalPrimeMonomial_pos (a b c : ℤ) : 0 < rationalPrimeMonomial a b c := by unfold rationalPrimeMonomial positivity def padicValRat_nat_zero {p n : ℕ} (h : ¬ p ∣ n) : padicValRat p (n : ℚ) = 0 := by rw [padicValRat.of_nat, padicValNat.eq_zero_of_not_dvd h, Nat.cast_zero] def rationalPrimeMonomial_val_two (a b c : ℤ) : padicValRat 2 (rationalPrimeMonomial a b c) = a := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ have h2 : padicValRat 2 2 = 1 := padicValRat.self (by norm_num) have h3 : padicValRat 2 3 = 0 := padicValRat_nat_zero (by norm_num : ¬ 2 ∣ 3) have h5 : padicValRat 2 5 = 0 := padicValRat_nat_zero (by norm_num : ¬ 2 ∣ 5) unfold rationalPrimeMonomial rw [padicValRat.mul (by positivity) (by positivity), padicValRat.mul (by positivity) (by positivity)] simp only [padicValRat.zpow, h2, h3, h5] ring def rationalPrimeMonomial_val_five (a b c : ℤ) : padicValRat 5 (rationalPrimeMonomial a b c) = c := by let : Fact (Nat.Prime 5) := ⟨by norm_num⟩ have h2 : padicValRat 5 2 = 0 := padicValRat_nat_zero (by norm_num : ¬ 5 ∣ 2) have h3 : padicValRat 5 3 = 0 := padicValRat_nat_zero (by norm_num : ¬ 5 ∣ 3) have h5 : padicValRat 5 5 = 1 := padicValRat.self (by norm_num) unfold rationalPrimeMonomial rw [padicValRat.mul (by positivity) (by positivity), padicValRat.mul (by positivity) (by positivity)] simp only [padicValRat.zpow, h2, h3, h5] ring def rationalPrimeMonomial_mul (a b c x y z : ℤ) : rationalPrimeMonomial a b c * rationalPrimeMonomial x y z = rationalPrimeMonomial (a + x) (b + y) (c + z) := by unfold rationalPrimeMonomial rw [zpow_add₀ (by norm_num : (2 : ℚ) ≠ 0), zpow_add₀ (by norm_num : (3 : ℚ) ≠ 0), zpow_add₀ (by norm_num : (5 : ℚ) ≠ 0)] ring def rational_four_three_monomial (h k : ℤ) : (4 : ℚ) ^ h * (3 : ℚ) ^ k = rationalPrimeMonomial (2 * h) k 0 := by unfold rationalPrimeMonomial have hh : (4 : ℚ) ^ h = (2 : ℚ) ^ (2 * h) := by rw [zpow_mul] norm_num simp only [hh, zpow_zero, mul_one] def jumpExponent4 (i : Fin 4) : ℤ := ![0, 1, 0, 1] i def jumpExponent3 (i : Fin 4) : ℤ := ![0, 1, 3, -2] i def jumpFiveExponent (i : Fin 4) : ℤ := ![0, 0, -1, 1] i def jumpThreeExponent4 (i : Fin 4) : ℤ := ![0, 0, 2, -2] i def jumpRepresentative4 (i : Fin 4) : ℚ := rationalPrimeMonomial (jumpExponent4 i) (jumpThreeExponent4 i) (jumpFiveExponent i) def jumpRepresentative3 (i : Fin 4) : ℚ := rationalPrimeMonomial (jumpExponent3 i) 0 (jumpFiveExponent i) def jumpRepresentative4_table : jumpRepresentative4 = ![1, 2, 9 / 5, 10 / 9] := by funext i fin_cases i <;> norm_num [jumpRepresentative4, jumpExponent4, jumpThreeExponent4, jumpFiveExponent, rationalPrimeMonomial] def jumpRepresentative3_table : jumpRepresentative3 = ![1, 2, 8 / 5, 5 / 4] := by funext i fin_cases i <;> norm_num [jumpRepresentative3, jumpExponent3, jumpFiveExponent, rationalPrimeMonomial] def jumpRepresentative4_distinct_orbits {i j : Fin 4} (hij : i ≠ j) (h k : ℤ) : jumpRepresentative4 i ≠ jumpRepresentative4 j * ((4 : ℚ) ^ h * (3 : ℚ) ^ k) := by intro he rw [rational_four_three_monomial, jumpRepresentative4, jumpRepresentative4, rationalPrimeMonomial_mul] at he have h2 := congrArg (padicValRat 2) he have h5 := congrArg (padicValRat 5) he simp only [rationalPrimeMonomial_val_two] at h2 simp only [rationalPrimeMonomial_val_five] at h5 fin_cases i <;> fin_cases j <;> norm_num [jumpExponent4] at h2 <;> norm_num [jumpFiveExponent] at h5 <;> omega def jumpRepresentative3_distinct_orbits {i j : Fin 4} (hij : i ≠ j) (h k : ℤ) : jumpRepresentative3 i ≠ jumpRepresentative3 j * ((4 : ℚ) ^ h * (3 : ℚ) ^ k) := by intro he rw [rational_four_three_monomial, jumpRepresentative3, jumpRepresentative3, rationalPrimeMonomial_mul] at he have h2 := congrArg (padicValRat 2) he have h5 := congrArg (padicValRat 5) he simp only [rationalPrimeMonomial_val_two] at h2 simp only [rationalPrimeMonomial_val_five] at h5 fin_cases i <;> fin_cases j <;> norm_num [jumpExponent3] at h2 <;> norm_num [jumpFiveExponent] at h5 <;> omega end Bounty end SubmissionComponent_JumpOrbitArithmetic /- Component ReciprocalReturns; SHA256 e0c1440bcbbd126242ff54590d6645485c482c46249143837b13fd34f2ae8264 -/ section SubmissionComponent_ReciprocalReturns /- Transfer the return pair to the reciprocal rotation by reversing its sign. -/ namespace Bounty def ReturnBracket.negativeInverse {α : ℝ} (s : ReturnBracket α) (hlo : 1 < α) (hhi : α < 2) : ReturnBracket (-1 / α) := by have hb := s.numerator_bounds hlo hhi have hq := s.q_pos have hQ := s.Q_pos have hp : 0 < s.p := by omega have hP : 0 < s.P := by omega have hα : 0 < α := by linarith have hpZ : (s.p.toNat : ℤ) = s.p := Int.toNat_of_nonneg hp.le have hPZ : (s.P.toNat : ℤ) = s.P := Int.toNat_of_nonneg hP.le have hpR : (s.p.toNat : ℝ) = s.p := by exact_mod_cast hpZ have hPR : (s.P.toNat : ℝ) = s.P := by exact_mod_cast hPZ have hlower : (s.p.toNat : ℝ) * (-1 / α) - ((-(s.q : ℤ) : ℤ) : ℝ) = ((s.q : ℝ) * α - s.p) / α := by rw [hpR] push_cast field_simp ring have hupper : ((-(s.Q : ℤ) : ℤ) : ℝ) - (s.P.toNat : ℝ) * (-1 / α) = ((s.P : ℝ) - s.Q * α) / α := by rw [hPR] push_cast field_simp ring refine { p := -(s.q : ℤ), P := -(s.Q : ℤ), q := s.p.toNat, Q := s.P.toNat, q_pos := Int.pos_iff_toNat_pos.mp hp, Q_pos := Int.pos_iff_toNat_pos.mp hP, q_le_Q := Int.toNat_le_toNat hb.2.2.2.2.le, determinant := ?_, lower_pos := ?_, upper_pos := ?_, upper_lt_lower := ?_ } · rw [hpZ, hPZ] nlinarith [s.determinant] · rw [hlower] exact div_pos s.lower_pos hα · rw [hupper] exact div_pos s.upper_pos hα · rw [hupper, hlower] exact div_lt_div_of_pos_right s.upper_lt_lower hα def ReturnBracket.reciprocal_best_approximation {α : ℝ} (s : ReturnBracket α) (hlo : 1 < α) (hhi : α < 2) {n : ℕ} (hn : 0 < n) (hnP : n < s.P.toNat) (k : ℤ) : ((s.q : ℝ) * α - s.p) / α ≤ |(n : ℝ) / α - k| := by let t := s.negativeInverse hlo hhi have hp : 0 < s.p := by have hb := s.numerator_bounds hlo hhi have hq := s.q_pos omega have hpR : (s.p.toNat : ℝ) = s.p := by exact_mod_cast Int.toNat_of_nonneg hp.le have hh := return_pair_best_approximation (α := -1 / α) (-k) t.q_pos hn hnP t.determinant t.lower_pos t.upper_pos change (s.p.toNat : ℝ) * (-1 / α) - ((-(s.q : ℤ) : ℤ) : ℝ) ≤ |(n : ℝ) * (-1 / α) - ((-k : ℤ) : ℝ)| at hh have he : (s.p.toNat : ℝ) * (-1 / α) - ((-(s.q : ℤ) : ℤ) : ℝ) = ((s.q : ℝ) * α - s.p) / α := by rw [hpR] push_cast field_simp ring have he' : (n : ℝ) * (-1 / α) - ((-k : ℤ) : ℝ) = -((n : ℝ) / α - k) := by push_cast ring simpa only [he, he', abs_neg] using hh end Bounty end SubmissionComponent_ReciprocalReturns /- Component JumpOrbits; SHA256 f44b7eee2553f15d1225b2c68f2dcf5c55dcfebbce65e9e1f33fe7c62f7b656a -/ section SubmissionComponent_JumpOrbits /- The logarithmic jump locations lie in pairwise distinct rotation orbits. -/ namespace Bounty def logarithmic_relation_implies_monomial {a b r s : ℚ} (ha : 0 < a) (hb : 1 < b) (hr : 0 < r) (hs : 0 < s) (h k : ℤ) (he : (h : ℝ) * (Real.log (a : ℝ) / Real.log (b : ℝ)) - (Real.logb (b : ℝ) (s : ℝ) - Real.logb (b : ℝ) (r : ℝ)) = k) : s = r * (a ^ h * b ^ (-k)) := by have haR : (0 : ℝ) < a := by exact_mod_cast ha have hbR : (1 : ℝ) < b := by exact_mod_cast hb have hrR : (0 : ℝ) < r := by exact_mod_cast hr have hsR : (0 : ℝ) < s := by exact_mod_cast hs have hlog : Real.log (b : ℝ) ≠ 0 := ne_of_gt (Real.log_pos hbR) have hratio : ((h : ℝ) * Real.log (a : ℝ) - (Real.log (s : ℝ) - Real.log (r : ℝ))) / Real.log (b : ℝ) = k := by calc _ = (h : ℝ) * (Real.log (a : ℝ) / Real.log (b : ℝ)) - (Real.log (s : ℝ) / Real.log (b : ℝ) - Real.log (r : ℝ) / Real.log (b : ℝ)) := by ring _ = k := by simpa only [Real.logb] using he have hcross := (div_eq_iff hlog).mp hratio have hapos : (0 : ℝ) < (a : ℝ) ^ h := zpow_pos haR h have hbpos : (0 : ℝ) < (b : ℝ) ^ (-k) := zpow_pos (by linarith) (-k) have hprod : (0 : ℝ) < (r : ℝ) * ((a : ℝ) ^ h * (b : ℝ) ^ (-k)) := mul_pos hrR (mul_pos hapos hbpos) have hlogs : Real.log ((r : ℝ) * ((a : ℝ) ^ h * (b : ℝ) ^ (-k))) = Real.log (s : ℝ) := by rw [Real.log_mul (ne_of_gt hrR) (ne_of_gt (mul_pos hapos hbpos)), Real.log_mul (ne_of_gt hapos) (ne_of_gt hbpos), Real.log_zpow, Real.log_zpow, Int.cast_neg] linarith have hreal : (s : ℝ) = (r : ℝ) * ((a : ℝ) ^ h * (b : ℝ) ^ (-k)) := (Real.log_injOn_pos hprod hsR hlogs).symm exact_mod_cast hreal noncomputable def jumpCoordinate4 (i : Fin 4) : ℝ := Real.logb 3 (jumpRepresentative4 i) noncomputable def jumpCoordinate3 (i : Fin 4) : ℝ := Real.logb 4 (jumpRepresentative3 i) def jumpOrbits4_distinct {i j : Fin 4} (hij : i ≠ j) (h k : ℤ) : (h : ℝ) * rotationSlope - (jumpCoordinate4 j - jumpCoordinate4 i) ≠ k := by intro he have hi : 0 < jumpRepresentative4 i := rationalPrimeMonomial_pos _ _ _ have hj : 0 < jumpRepresentative4 j := rationalPrimeMonomial_pos _ _ _ have hh := logarithmic_relation_implies_monomial (a := 4) (b := 3) (by norm_num) (by norm_num) hi hj h k (by simpa only [Rat.cast_ofNat, rotationSlope, jumpCoordinate4] using he) exact jumpRepresentative4_distinct_orbits (Ne.symm hij) h (-k) hh def jumpOrbits3_distinct {i j : Fin 4} (hij : i ≠ j) (h k : ℤ) : (h : ℝ) * (1 / rotationSlope) - (jumpCoordinate3 j - jumpCoordinate3 i) ≠ k := by intro he have hi : 0 < jumpRepresentative3 i := rationalPrimeMonomial_pos _ _ _ have hj : 0 < jumpRepresentative3 j := rationalPrimeMonomial_pos _ _ _ have hh := logarithmic_relation_implies_monomial (a := 3) (b := 4) (by norm_num) (by norm_num) hi hj h k (by simpa only [Rat.cast_ofNat, ← inverse_rotationSlope, Real.logb, jumpCoordinate3] using he) rw [mul_comm ((3 : ℚ) ^ h) ((4 : ℚ) ^ (-k))] at hh exact jumpRepresentative3_distinct_orbits (Ne.symm hij) (-k) h hh def jumpCoordinate4_zero : jumpCoordinate4 0 = 0 := by rw [jumpCoordinate4, jumpRepresentative4_table] norm_num [Real.logb] def jumpCoordinate3_zero : jumpCoordinate3 0 = 0 := by rw [jumpCoordinate3, jumpRepresentative3_table] norm_num [Real.logb] end Bounty end SubmissionComponent_JumpOrbits /- Component SmallRotationJumps; SHA256 e0aa8d4c0ea48ca11f96f75adeec3334882a6c78fa295c2a074a65b931079535 -/ section SubmissionComponent_SmallRotationJumps /- Half-open circular jump indicators, with exact floor-difference identities. -/ namespace Bounty noncomputable def forwardJump (δ t x : ℝ) : ℤ := by classical exact if 1 - δ ≤ Int.fract (x - t) then 1 else 0 noncomputable def backwardJump (δ t x : ℝ) : ℤ := by classical exact if Int.fract (x - t) < δ then 1 else 0 def floor_forward_jump {δ : ℝ} (hd0 : 0 ≤ δ) (hd1 : δ < 1) (x : ℝ) : ⌊x + δ⌋ - ⌊x⌋ = forwardJump δ 0 x := by classical have hf0 := Int.fract_nonneg x have hf1 := Int.fract_lt_one x have hfx : Int.fract x = x - (⌊x⌋ : ℝ) := rfl by_cases h : 1 - δ ≤ Int.fract x · have he : ⌊x + δ⌋ = ⌊x⌋ + 1 := by apply Int.floor_eq_iff.mpr push_cast constructor <;> linarith simp only [forwardJump, sub_zero, if_pos h, he] omega · have he : ⌊x + δ⌋ = ⌊x⌋ := by apply Int.floor_eq_iff.mpr constructor <;> linarith simp only [forwardJump, sub_zero, if_neg h, he, sub_self] def floor_backward_jump {δ : ℝ} (hd0 : 0 ≤ δ) (hd1 : δ < 1) (x : ℝ) : ⌊x - δ⌋ - ⌊x⌋ = -backwardJump δ 0 x := by classical have hf0 := Int.fract_nonneg x have hf1 := Int.fract_lt_one x have hfx : Int.fract x = x - (⌊x⌋ : ℝ) := rfl by_cases h : Int.fract x < δ · have he : ⌊x - δ⌋ = ⌊x⌋ - 1 := by apply Int.floor_eq_iff.mpr push_cast constructor <;> linarith simp only [backwardJump, sub_zero, if_pos h, he] omega · have he : ⌊x - δ⌋ = ⌊x⌋ := by apply Int.floor_eq_iff.mpr constructor <;> linarith simp only [backwardJump, sub_zero, if_neg h, he, sub_self, neg_zero] noncomputable def circleStep (t x : ℝ) : ℤ := by classical exact if t ≤ Int.fract x then 1 else 0 def circleStep_eq_floors {t : ℝ} (ht0 : 0 ≤ t) (ht1 : t < 1) (x : ℝ) : circleStep t x = 1 + ⌊x - t⌋ - ⌊x⌋ := by classical have hh := floor_backward_jump ht0 ht1 x by_cases h : t ≤ Int.fract x · have hn : ¬ Int.fract x < t := not_lt_of_ge h simp only [circleStep, if_pos h, backwardJump, sub_zero, if_neg hn, neg_zero] at * omega · have hn : Int.fract x < t := lt_of_not_ge h simp only [circleStep, if_neg h, backwardJump, sub_zero, if_pos hn] at * omega def circleStep_forward_difference {t δ : ℝ} (ht0 : 0 ≤ t) (ht1 : t < 1) (hd0 : 0 ≤ δ) (hd1 : δ < 1) (x : ℝ) : circleStep t (x + δ) - circleStep t x = forwardJump δ t x - forwardJump δ 0 x := by rw [circleStep_eq_floors ht0 ht1, circleStep_eq_floors ht0 ht1] have hh := floor_forward_jump hd0 hd1 (x - t) have hh' := floor_forward_jump hd0 hd1 x have he : x - t + δ = x + δ - t := by ring rw [he] at hh have hj : forwardJump δ 0 (x - t) = forwardJump δ t x := by simp only [forwardJump, sub_zero] rw [hj] at hh omega def circleStep_backward_difference {t δ : ℝ} (ht0 : 0 ≤ t) (ht1 : t < 1) (hd0 : 0 ≤ δ) (hd1 : δ < 1) (x : ℝ) : circleStep t (x - δ) - circleStep t x = -backwardJump δ t x + backwardJump δ 0 x := by rw [circleStep_eq_floors ht0 ht1, circleStep_eq_floors ht0 ht1] have hh := floor_backward_jump hd0 hd1 (x - t) have hh' := floor_backward_jump hd0 hd1 x have he : x - t - δ = x - δ - t := by ring rw [he] at hh have hj : backwardJump δ 0 (x - t) = backwardJump δ t x := by simp only [backwardJump, sub_zero] rw [hj] at hh omega def forwardJump_integer_shift (δ t x : ℝ) (k : ℤ) : forwardJump δ (t + k) x = forwardJump δ t x := by have he : x - (t + (k : ℝ)) = (x - t) - k := by ring simp only [forwardJump, he, Int.fract_sub_intCast] def backwardJump_integer_shift (δ t x : ℝ) (k : ℤ) : backwardJump δ (t + k) x = backwardJump δ t x := by have he : x - (t + (k : ℝ)) = (x - t) - k := by ring simp only [backwardJump, he, Int.fract_sub_intCast] def forwardJump_orbit_shift (δ t α : ℝ) (n k : ℤ) : forwardJump δ (t + (k : ℝ) * α) ((n : ℝ) * α) = forwardJump δ t (((n - k : ℤ) : ℝ) * α) := by have he : (n : ℝ) * α - (t + (k : ℝ) * α) = ((n - k : ℤ) : ℝ) * α - t := by push_cast ring simp only [forwardJump, he] def backwardJump_orbit_shift (δ t α : ℝ) (n k : ℤ) : backwardJump δ (t + (k : ℝ) * α) ((n : ℝ) * α) = backwardJump δ t (((n - k : ℤ) : ℝ) * α) := by have he : (n : ℝ) * α - (t + (k : ℝ) * α) = ((n - k : ℤ) : ℝ) * α - t := by push_cast ring simp only [backwardJump, he] end Bounty end SubmissionComponent_SmallRotationJumps /- Component VanishingJumps; SHA256 90be37583a6485a86d9d2ea122bf13167efb9dc1caac4524ebf22520ef4dc2ea -/ section SubmissionComponent_VanishingJumps /- Exact initial visits and disappearance of all other fixed-index jump terms. -/ open Filter open scoped Topology namespace Bounty def irrational_int_mul_ne_int {α : ℝ} (hα : Irrational α) {n : ℤ} (hn : n ≠ 0) (k : ℤ) : (n : ℝ) * α ≠ k := by intro he apply hα.ne_rational k n have hnR : (n : ℝ) ≠ 0 := by exact_mod_cast hn apply (eq_div_iff hnR).mpr nlinarith def jumpOrbit4_int_index_ne {i : Fin 4} {n : ℤ} (hn : i ≠ 0 ∨ n ≠ 0) (k : ℤ) : (n : ℝ) * rotationSlope - jumpCoordinate4 i ≠ k := by by_cases hi : i = 0 · subst i rw [jumpCoordinate4_zero, sub_zero] exact irrational_int_mul_ne_int rotationSlope_irrational (hn.resolve_left (by simp)) k · simpa only [jumpCoordinate4_zero, sub_zero] using jumpOrbits4_distinct (i := 0) (j := i) (Ne.symm hi) n k def jumpOrbit3_int_index_ne {i : Fin 4} {n : ℤ} (hn : i ≠ 0 ∨ n ≠ 0) (k : ℤ) : (n : ℝ) * (1 / rotationSlope) - jumpCoordinate3 i ≠ k := by by_cases hi : i = 0 · subst i rw [jumpCoordinate3_zero, sub_zero] have hIrr : Irrational (1 / rotationSlope) := by simpa only [one_div] using rotationSlope_irrational.inv exact irrational_int_mul_ne_int hIrr (hn.resolve_left (by simp)) k · simpa only [jumpCoordinate3_zero, sub_zero] using jumpOrbits3_distinct (i := 0) (j := i) (Ne.symm hi) n k def jumps_eventually_zero {δ : ℕ → ℝ} (hδ : Tendsto δ atTop (nhds 0)) {x t : ℝ} (hx : ∀ k : ℤ, x - t ≠ k) : ∀ᶠ r in atTop, forwardJump (δ r) t x = 0 ∧ backwardJump (δ r) t x = 0 := by classical have hh := hδ.eventually (gt_mem_nhds (integerDistance_pos hx)) filter_upwards [hh] with r hr have hleft := lt_of_lt_of_le hr (min_le_left (Int.fract (x - t)) (1 - Int.fract (x - t))) have hright := lt_of_lt_of_le hr (min_le_right (Int.fract (x - t)) (1 - Int.fract (x - t))) have hf : ¬ 1 - δ r ≤ Int.fract (x - t) := by linarith have hb : ¬ Int.fract (x - t) < δ r := by linarith simp only [forwardJump, backwardJump, if_neg hf, if_neg hb, and_self] noncomputable def returnError (r : ℕ) : ℝ := ((rotationReturns r).q : ℝ) * rotationSlope - (rotationReturns r).p def returnError_pos (r : ℕ) : 0 < returnError r := (rotationReturns r).lower_pos def returnError_lt_one (r : ℕ) : returnError r < 1 := (rotationReturns r).lower_error_lt_one def returnError_tendsto : Tendsto returnError atTop (nhds 0) := rotationReturns_error_tendsto def reciprocal_returnError_tendsto : Tendsto (fun r => returnError r / rotationSlope) atTop (nhds 0) := by simpa only [zero_div] using returnError_tendsto.div_const rotationSlope noncomputable def jumpVisit4 (r : ℕ) (i : Fin 4) (n : ℤ) : ℤ := forwardJump (returnError r) (jumpCoordinate4 i) ((n : ℝ) * rotationSlope) noncomputable def jumpVisit3 (r : ℕ) (i : Fin 4) (n : ℤ) : ℤ := backwardJump (returnError r / rotationSlope) (jumpCoordinate3 i) ((n : ℝ) / rotationSlope) def jumpVisit4_initial (r : ℕ) : jumpVisit4 r 0 0 = 0 := by classical have hh : ¬ 1 - returnError r ≤ 0 := by linarith [returnError_lt_one r] simp only [jumpVisit4, jumpCoordinate4_zero, Int.cast_zero, zero_mul, forwardJump, sub_zero, Int.fract_zero, if_neg hh] def jumpVisit3_initial (r : ℕ) : jumpVisit3 r 0 0 = 1 := by classical have hh : 0 < returnError r / rotationSlope := div_pos (returnError_pos r) (by linarith [rotationSlope_bounds.1]) simp only [jumpVisit3, jumpCoordinate3_zero, Int.cast_zero, zero_div, backwardJump, sub_zero, Int.fract_zero, if_pos hh] def jumpVisit4_fixed_eventually_zero {i : Fin 4} {n : ℤ} (hn : i ≠ 0 ∨ n ≠ 0) : ∀ᶠ r in atTop, jumpVisit4 r i n = 0 := by have hh := jumps_eventually_zero returnError_tendsto (jumpOrbit4_int_index_ne hn) exact hh.mono (fun r hr => hr.1) def jumpVisit3_fixed_eventually_zero {i : Fin 4} {n : ℤ} (hn : i ≠ 0 ∨ n ≠ 0) : ∀ᶠ r in atTop, jumpVisit3 r i n = 0 := by have horbit : ∀ k : ℤ, (n : ℝ) / rotationSlope - jumpCoordinate3 i ≠ k := by simpa only [mul_one_div] using jumpOrbit3_int_index_ne hn have hh := jumps_eventually_zero reciprocal_returnError_tendsto horbit exact hh.mono (fun r hr => hr.2) end Bounty end SubmissionComponent_VanishingJumps /- Component JumpVisitSpacing; SHA256 11cce2fe1611c20ac1629b15f934e9978300b75cfaf718ae592c68d964ef190c -/ section SubmissionComponent_JumpVisitSpacing /- Quantitative separation of the actual forward and backward visit sequences. -/ namespace Bounty def forwardJump_lift {δ t x : ℝ} (h : forwardJump δ t x ≠ 0) : t - δ ≤ x - ((⌊x - t⌋ + 1 : ℤ) : ℝ) ∧ x - ((⌊x - t⌋ + 1 : ℤ) : ℝ) < t := by classical have hh : 1 - δ ≤ Int.fract (x - t) := by by_contra hn simp only [forwardJump, if_neg hn, ne_eq, not_true_eq_false] at h have hu := Int.fract_lt_one (x - t) change 1 - δ ≤ x - t - (⌊x - t⌋ : ℝ) at hh change x - t - (⌊x - t⌋ : ℝ) < 1 at hu push_cast constructor <;> linarith def backwardJump_lift {δ t x : ℝ} (h : backwardJump δ t x ≠ 0) : t ≤ x - (⌊x - t⌋ : ℝ) ∧ x - (⌊x - t⌋ : ℝ) < t + δ := by classical have hh : Int.fract (x - t) < δ := by by_contra hn simp only [backwardJump, if_neg hn, ne_eq, not_true_eq_false] at h have hl := Int.fract_nonneg (x - t) change x - t - (⌊x - t⌋ : ℝ) < δ at hh change 0 ≤ x - t - (⌊x - t⌋ : ℝ) at hl constructor <;> linarith def short_lifted_visits_separated {α δ t : ℝ} {Q i j : ℕ} {a b : ℤ} (happrox : ∀ n : ℕ, 0 < n → n < Q → ∀ k : ℤ, δ ≤ |(n : ℝ) * α - k|) (hij : i < j) (hi : t ≤ (i : ℝ) * α - a ∧ (i : ℝ) * α - a < t + δ) (hj : t ≤ (j : ℝ) * α - b ∧ (j : ℝ) * α - b < t + δ) : Q ≤ j - i := by by_contra hh have hl := happrox (j - i) (by omega) (by omega) (b - a) have he : ((j - i : ℕ) : ℝ) * α - ((b - a : ℤ) : ℝ) = ((j : ℝ) * α - b) - ((i : ℝ) * α - a) := by rw [Nat.cast_sub (by omega : i ≤ j), Int.cast_sub] ring rw [he] at hl have hs : |((j : ℝ) * α - b) - ((i : ℝ) * α - a)| < δ := by rw [abs_lt] constructor <;> linarith [hi.1, hi.2, hj.1, hj.2] linarith def jumpVisit4_separated (r : ℕ) (i : Fin 4) {m n : ℕ} (hmn : m < n) (hm : jumpVisit4 r i m ≠ 0) (hn : jumpVisit4 r i n ≠ 0) : (rotationReturns r).Q ≤ n - m := by have hm' := forwardJump_lift hm have hn' := forwardJump_lift hn simp only [Int.cast_natCast] at hm' hn' have hap (k : ℕ) (hk : 0 < k) (hkQ : k < (rotationReturns r).Q) (l : ℤ) : returnError r ≤ |(k : ℝ) * rotationSlope - l| := return_pair_best_approximation l (rotationReturns r).q_pos hk hkQ (rotationReturns r).determinant (rotationReturns r).lower_pos (rotationReturns r).upper_pos exact short_lifted_visits_separated hap hmn ⟨hm'.1, by linarith [hm'.2]⟩ ⟨hn'.1, by linarith [hn'.2]⟩ def jumpVisit3_separated (r : ℕ) (i : Fin 4) {m n : ℕ} (hmn : m < n) (hm : jumpVisit3 r i m ≠ 0) (hn : jumpVisit3 r i n ≠ 0) : (rotationReturns r).P.toNat ≤ n - m := by have hm' := backwardJump_lift hm have hn' := backwardJump_lift hn simp only [Int.cast_natCast] at hm' hn' have hap (k : ℕ) (hk : 0 < k) (hkP : k < (rotationReturns r).P.toNat) (l : ℤ) : returnError r / rotationSlope ≤ |(k : ℝ) * (1 / rotationSlope) - l| := by simpa only [returnError, mul_one_div] using (rotationReturns r).reciprocal_best_approximation rotationSlope_bounds.1 rotationSlope_bounds.2 hk hkP l apply short_lifted_visits_separated hap hmn · simpa only [mul_one_div] using hm' · simpa only [mul_one_div] using hn' def jumpVisit4_time_separation (r : ℕ) (i : Fin 4) {m n : ℕ} (hmn : m < n) (hm : jumpVisit4 r i m ≠ 0) (hn : jumpVisit4 r i n ≠ 0) : returnScale r / 2 ≤ (n : ℝ) * Real.log 4 - (m : ℝ) * Real.log 4 := by have hh : ((rotationReturns r).Q : ℝ) ≤ ((n - m : ℕ) : ℝ) := by exact_mod_cast jumpVisit4_separated r i hmn hm hn rw [Nat.cast_sub hmn.le] at hh have hl := mul_le_mul_of_nonneg_right hh (Real.log_pos (by norm_num : (1 : ℝ) < 4)).le have hs := (returnScale_bounds r).2.2.1 nlinarith def jumpVisit3_time_separation (r : ℕ) (i : Fin 4) {m n : ℕ} (hmn : m < n) (hm : jumpVisit3 r i m ≠ 0) (hn : jumpVisit3 r i n ≠ 0) : returnScale r ≤ (n : ℝ) * Real.log 3 - (m : ℝ) * Real.log 3 := by have hh : ((rotationReturns r).P.toNat : ℝ) ≤ ((n - m : ℕ) : ℝ) := by exact_mod_cast jumpVisit3_separated r i hmn hm hn have hP : 0 ≤ (rotationReturns r).P := by have hb := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hQ := (rotationReturns r).Q_pos omega have he : ((rotationReturns r).P.toNat : ℝ) = (rotationReturns r).P := by exact_mod_cast Int.toNat_of_nonneg hP rw [he, Nat.cast_sub hmn.le] at hh have hl := mul_le_mul_of_nonneg_right hh (Real.log_pos (by norm_num : (1 : ℝ) < 3)).le unfold returnScale nlinarith end Bounty end SubmissionComponent_JumpVisitSpacing /- Component ReturnEventFamilies; SHA256 a1cf329568775017fa1aa72bfa6a0c7d16f966cd9063e9e14ef9893f00158656 -/ section SubmissionComponent_ReturnEventFamilies /- The sixteen logarithmic event sequences of the exact remainder, and their two cutoffs. -/ namespace Bounty abbrev ReturnEventFamily := Fin 4 × Fin 4 noncomputable def returnEventStep (i : ReturnEventFamily) : ℝ := if i.1 < 2 then Real.log 4 else Real.log 3 noncomputable def returnEventOffset (r : ℕ) (i : ReturnEventFamily) : ℝ := if i.1 = 0 then ((rotationReturns r).p.toNat : ℝ) * Real.log 3 else if i.1 = 2 then ((rotationReturns r).q : ℝ) * Real.log 4 else 0 noncomputable def returnEventVisit (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : Prop := 0 < n ∧ if i.1 < 2 then jumpVisit4 r i.2 n ≠ 0 else jumpVisit3 r i.2 n ≠ 0 noncomputable def returnEventTime (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : ℝ := (n : ℝ) * returnEventStep i - returnEventOffset r i def returnEventStep_pos (i : ReturnEventFamily) : 0 < returnEventStep i := by unfold returnEventStep split <;> exact Real.log_pos (by norm_num) def returnEventVisit_separation (r : ℕ) (i : ReturnEventFamily) {m n : ℕ} (hm : returnEventVisit r i m) (hn : returnEventVisit r i n) (hmn : m < n) : returnScale r / 2 ≤ (n : ℝ) * returnEventStep i - (m : ℝ) * returnEventStep i := by by_cases hi : i.1 < 2 · have hm' : jumpVisit4 r i.2 m ≠ 0 := by simpa only [returnEventVisit, if_pos hi] using hm.2 have hn' : jumpVisit4 r i.2 n ≠ 0 := by simpa only [returnEventVisit, if_pos hi] using hn.2 simpa only [returnEventStep, if_pos hi] using jumpVisit4_time_separation r i.2 hmn hm' hn' · have hm' : jumpVisit3 r i.2 m ≠ 0 := by simpa only [returnEventVisit, if_neg hi] using hm.2 have hn' : jumpVisit3 r i.2 n ≠ 0 := by simpa only [returnEventVisit, if_neg hi] using hn.2 have hh := jumpVisit3_time_separation r i.2 hmn hm' hn' simp only [returnEventStep, if_neg hi] linarith [returnScale_pos r] def returnEventTime_gap (r : ℕ) (a : ℝ) : ∃ t : ℝ, a < t ∧ t + returnScale r / 0x64 < a + returnScale r ∧ ∀ i n, returnEventVisit r i n → returnEventTime r i n < t ∨ t + returnScale r / 0x64 < returnEventTime r i n := by exact linear_event_families_gap (by norm_num : Fintype.card ReturnEventFamily ≤ 16) returnEventStep (returnEventOffset r) (returnEventVisit r) returnEventStep_pos (returnScale_pos r) (fun i m n hm hn hmn => returnEventVisit_separation r i hm hn hmn) a end Bounty end SubmissionComponent_ReturnEventFamilies /- Component IntegerIndexSeries; SHA256 d133e28f528910f2edf079b063475b8b14584c1ee4f35c9fcb3f6eedcbb2716f -/ section SubmissionComponent_IntegerIndexSeries /- Weighted series under the integer shifts occurring in the jump-orbit tables. -/ namespace Bounty noncomputable def integerIndexSeries (b : ℝ) (f : ℤ → ℝ) : ℝ := ∑' n : ℕ, f (n : ℤ) / b ^ n def integerIndexSeries_summable {b M : ℝ} {f : ℤ → ℝ} (hb : 1 < b) (hf : ∀ k, |f k| ≤ M) : Summable (fun n : ℕ => f (n : ℤ) / b ^ n) := weighted_summable hb (fun n => hf (n : ℤ)) def integerIndexSeries_up_one {b M : ℝ} {f : ℤ → ℝ} (hb : 1 < b) (hf : ∀ k, |f k| ≤ M) : integerIndexSeries b (fun k => f (k + 1)) = b * (integerIndexSeries b f - f 0) := by have hb0 : b ≠ 0 := ne_of_gt (by linarith : 0 < b) have ht := hasSum_nat_tail_sub (integerIndexSeries_summable hb hf) simp only [Nat.cast_add, Nat.cast_one, Nat.cast_zero, pow_zero, div_one] at ht have hs : HasSum (fun n : ℕ => f ((n : ℤ) + 1) / b ^ n) (b * (integerIndexSeries b f - f 0)) := by apply (ht.mul_left b).congr_fun intro n rw [pow_succ] field_simp exact hs.tsum_eq def integerIndexSeries_down_one {b M : ℝ} {f : ℤ → ℝ} (hb : 1 < b) (hf : ∀ k, |f k| ≤ M) : integerIndexSeries b (fun k => f (k - 1)) = f (-1) + integerIndexSeries b f / b := by have hb0 : b ≠ 0 := ne_of_gt (by linarith : 0 < b) have hh := integerIndexSeries_up_one hb (fun k => hf (k - 1)) simp only [add_sub_cancel_right, zero_sub] at hh field_simp nlinarith def integerIndexSeries_down_two {b M : ℝ} {f : ℤ → ℝ} (hb : 1 < b) (hf : ∀ k, |f k| ≤ M) : integerIndexSeries b (fun k => f (k - 2)) = f (-2) + f (-1) / b + integerIndexSeries b f / b ^ 2 := by have hh := integerIndexSeries_down_one hb (fun k => hf (k - 1)) change integerIndexSeries b (fun k => f ((k - 1) - 1)) = f ((-1 : ℤ) - 1) + integerIndexSeries b (fun k => f (k - 1)) / b at hh have he : (fun k : ℤ => f ((k - 1) - 1)) = (fun k : ℤ => f (k - 2)) := by funext k congr 1 ring rw [he, show (-1 : ℤ) - 1 = -2 by norm_num, integerIndexSeries_down_one hb hf] at hh rw [hh] simp only [add_div, div_div, pow_two] ring end Bounty end SubmissionComponent_IntegerIndexSeries /- Component CoefficientSteps; SHA256 cda139637f48df8ce7e69bceeb02a0b5dd738c31128953a15331ddb9b494e5d3 -/ section SubmissionComponent_CoefficientSteps /- Write both coefficient tables as finite sums of circular steps. -/ namespace Bounty noncomputable def coefficientCut (a c x : ℝ) : ℤ := by classical exact if a * x < c then 0 else 1 def realCoefficient4_eq_cuts (x : ℝ) : realCoefficient4 x = 78 - 48 * coefficientCut 15 16 x - 60 * coefficientCut 9 10 x + 60 * coefficientCut 3 4 x - 30 * coefficientCut 2 3 x - 60 * coefficientCut 1 2 x + 48 * coefficientCut 3 8 x := by classical simp only [realCoefficient4, coefficientCut, one_mul] split_ifs <;> norm_num at * <;> linarith def realCoefficient3_eq_cuts (x : ℝ) : realCoefficient3 x = 30 + 5 * coefficientCut 3 4 x - 6 * coefficientCut 5 8 x - 5 * coefficientCut 3 5 x - 84 * coefficientCut 1 2 x := by classical simp only [realCoefficient3, coefficientCut, one_mul] split_ifs <;> norm_num at * <;> linarith def circleStep_logb_cut {a b c : ℝ} (ha : 0 < a) (hb : 1 < b) (hc : 0 < c) (x : ℝ) : circleStep (Real.logb b (c / a)) x = coefficientCut a c (b ^ Int.fract x) := by classical have hh : Real.logb b (c / a) ≤ Int.fract x ↔ c ≤ a * b ^ Int.fract x := by rw [Real.logb_le_iff_le_rpow hb (div_pos hc ha), div_le_iff₀ ha, mul_comm] simp only [circleStep, coefficientCut, hh] by_cases h : a * b ^ Int.fract x < c · simp only [h, if_true, not_le_of_gt h, if_false] · simp only [h, if_false, le_of_not_gt h, if_true] def coefficient4_circle_steps (x : ℝ) : realCoefficient4 ((3 : ℝ) ^ Int.fract x) = 78 - 48 * circleStep (Real.logb 3 (16 / 15)) x - 60 * circleStep (Real.logb 3 (10 / 9)) x + 60 * circleStep (Real.logb 3 (4 / 3)) x - 30 * circleStep (Real.logb 3 (3 / 2)) x - 60 * circleStep (Real.logb 3 2) x + 48 * circleStep (Real.logb 3 (8 / 3)) x := by rw [realCoefficient4_eq_cuts] have hh (a c : ℝ) (ha : 0 < a) (hc : 0 < c) := circleStep_logb_cut ha (by norm_num : (1 : ℝ) < 3) hc x rw [hh 15 16 (by norm_num) (by norm_num), hh 9 10 (by norm_num) (by norm_num), hh 3 4 (by norm_num) (by norm_num), hh 2 3 (by norm_num) (by norm_num), hh 3 8 (by norm_num) (by norm_num)] have h2 := hh 1 2 (by norm_num) (by norm_num) norm_num only [div_one] at h2 rw [h2] def coefficient3_circle_steps (x : ℝ) : realCoefficient3 ((4 : ℝ) ^ Int.fract x) = 30 + 5 * circleStep (Real.logb 4 (4 / 3)) x - 6 * circleStep (Real.logb 4 (8 / 5)) x - 5 * circleStep (Real.logb 4 (5 / 3)) x - 84 * circleStep (Real.logb 4 2) x := by rw [realCoefficient3_eq_cuts] have hh (a c : ℝ) (ha : 0 < a) (hc : 0 < c) := circleStep_logb_cut ha (by norm_num : (1 : ℝ) < 4) hc x rw [hh 3 4 (by norm_num) (by norm_num), hh 5 8 (by norm_num) (by norm_num), hh 3 5 (by norm_num) (by norm_num)] have h2 := hh 1 2 (by norm_num) (by norm_num) norm_num only [div_one] at h2 rw [h2] end Bounty end SubmissionComponent_CoefficientSteps /- Component CoefficientJumps; SHA256 a74467303ff4aae8b31420d73b1a499539d0143b77423f2d12f22dd5e77d67b7 -/ section SubmissionComponent_CoefficientJumps /- Exact signed jump identities for the two coefficient tables. -/ namespace Bounty def logb_unit_interval {b y : ℝ} (hb : 1 < b) (hy : 1 ≤ y) (hyb : y < b) : 0 ≤ Real.logb b y ∧ Real.logb b y < 1 := by refine ⟨Real.logb_nonneg hb hy, ?_⟩ apply (Real.logb_lt_iff_lt_rpow hb (by linarith : 0 < y)).mpr simpa only [Real.rpow_one] using hyb def coefficient4_forward_jumps {δ : ℝ} (hd0 : 0 ≤ δ) (hd1 : δ < 1) (x : ℝ) : realCoefficient4 ((3 : ℝ) ^ Int.fract (x + δ)) - realCoefficient4 ((3 : ℝ) ^ Int.fract x) = 90 * forwardJump δ 0 x - 48 * forwardJump δ (Real.logb 3 (16 / 15)) x - 60 * forwardJump δ (Real.logb 3 (10 / 9)) x + 60 * forwardJump δ (Real.logb 3 (4 / 3)) x - 30 * forwardJump δ (Real.logb 3 (3 / 2)) x - 60 * forwardJump δ (Real.logb 3 2) x + 48 * forwardJump δ (Real.logb 3 (8 / 3)) x := by rw [coefficient4_circle_steps, coefficient4_circle_steps] have hh (y : ℝ) (hy : 1 ≤ y) (hyb : y < 3) := logb_unit_interval (by norm_num : (1 : ℝ) < 3) hy hyb have h1 := hh (16 / 15) (by norm_num) (by norm_num) have h2 := hh (10 / 9) (by norm_num) (by norm_num) have h3 := hh (4 / 3) (by norm_num) (by norm_num) have h4 := hh (3 / 2) (by norm_num) (by norm_num) have h5 := hh 2 (by norm_num) (by norm_num) have h6 := hh (8 / 3) (by norm_num) (by norm_num) have he1 := circleStep_forward_difference h1.1 h1.2 hd0 hd1 x have he2 := circleStep_forward_difference h2.1 h2.2 hd0 hd1 x have he3 := circleStep_forward_difference h3.1 h3.2 hd0 hd1 x have he4 := circleStep_forward_difference h4.1 h4.2 hd0 hd1 x have he5 := circleStep_forward_difference h5.1 h5.2 hd0 hd1 x have he6 := circleStep_forward_difference h6.1 h6.2 hd0 hd1 x omega def coefficient3_backward_jumps {δ : ℝ} (hd0 : 0 ≤ δ) (hd1 : δ < 1) (x : ℝ) : realCoefficient3 ((4 : ℝ) ^ Int.fract (x - δ)) - realCoefficient3 ((4 : ℝ) ^ Int.fract x) = -90 * backwardJump δ 0 x - 5 * backwardJump δ (Real.logb 4 (4 / 3)) x + 6 * backwardJump δ (Real.logb 4 (8 / 5)) x + 5 * backwardJump δ (Real.logb 4 (5 / 3)) x + 84 * backwardJump δ (Real.logb 4 2) x := by rw [coefficient3_circle_steps, coefficient3_circle_steps] have hh (y : ℝ) (hy : 1 ≤ y) (hyb : y < 4) := logb_unit_interval (by norm_num : (1 : ℝ) < 4) hy hyb have h1 := hh (4 / 3) (by norm_num) (by norm_num) have h2 := hh (8 / 5) (by norm_num) (by norm_num) have h3 := hh (5 / 3) (by norm_num) (by norm_num) have h4 := hh 2 (by norm_num) (by norm_num) have he1 := circleStep_backward_difference h1.1 h1.2 hd0 hd1 x have he2 := circleStep_backward_difference h2.1 h2.2 hd0 hd1 x have he3 := circleStep_backward_difference h3.1 h3.2 hd0 hd1 x have he4 := circleStep_backward_difference h4.1 h4.2 hd0 hd1 x omega end Bounty end SubmissionComponent_CoefficientJumps /- Component CoefficientReturnShifts; SHA256 4512f73aaabb9cb35501f37f574b23b006cf0934f440d74d2b75747eb5d141cd -/ section SubmissionComponent_CoefficientReturnShifts /- Relate integer index shifts to the small positive and negative rotations. -/ namespace Bounty def coefficient4_return_shift (r n : ℕ) : coefficient4 (n + (rotationReturns r).q) = realCoefficient4 ((3 : ℝ) ^ Int.fract ((n : ℝ) * rotationSlope + returnError r)) := by rw [coefficient4_rotation] have he : ((n + (rotationReturns r).q : ℕ) : ℝ) * rotationSlope = ((n : ℝ) * rotationSlope + returnError r) + (rotationReturns r).p := by dsimp only [returnError] push_cast ring rw [he, Int.fract_add_intCast] def coefficient3_return_shift (r n : ℕ) : coefficient3 (n + (rotationReturns r).p.toNat) = realCoefficient3 ((4 : ℝ) ^ Int.fract ((n : ℝ) / rotationSlope - returnError r / rotationSlope)) := by rw [coefficient3_rotation] have hb := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hq := (rotationReturns r).q_pos have hp : 0 ≤ (rotationReturns r).p := by omega have hpR : ((rotationReturns r).p.toNat : ℝ) = (rotationReturns r).p := by exact_mod_cast Int.toNat_of_nonneg hp have hα : rotationSlope ≠ 0 := ne_of_gt (by linarith [rotationSlope_bounds.1]) have he : ((n + (rotationReturns r).p.toNat : ℕ) : ℝ) / rotationSlope = ((n : ℝ) / rotationSlope - returnError r / rotationSlope) + (((rotationReturns r).q : ℤ) : ℝ) := by dsimp only [returnError] rw [Nat.cast_add, hpR, Int.cast_natCast] field_simp <;> ring rw [he, Int.fract_add_intCast] def reciprocal_returnError_lt_one (r : ℕ) : returnError r / rotationSlope < 1 := by have hα : 0 < rotationSlope := by linarith [rotationSlope_bounds.1] apply (div_lt_iff₀ hα).mpr linarith [returnError_lt_one r, rotationSlope_bounds.1] def coefficient4_difference_is_forward (r n : ℕ) : coefficient4 (n + (rotationReturns r).q) - coefficient4 n = realCoefficient4 ((3 : ℝ) ^ Int.fract ((n : ℝ) * rotationSlope + returnError r)) - realCoefficient4 ((3 : ℝ) ^ Int.fract ((n : ℝ) * rotationSlope)) := by rw [coefficient4_return_shift, coefficient4_rotation n] def coefficient3_difference_is_backward (r n : ℕ) : coefficient3 (n + (rotationReturns r).p.toNat) - coefficient3 n = realCoefficient3 ((4 : ℝ) ^ Int.fract ((n : ℝ) / rotationSlope - returnError r / rotationSlope)) - realCoefficient3 ((4 : ℝ) ^ Int.fract ((n : ℝ) / rotationSlope)) := by rw [coefficient3_return_shift, coefficient3_rotation n] end Bounty end SubmissionComponent_CoefficientReturnShifts /- Component JumpCoordinateShifts; SHA256 ec4bc4c901ccebe73af2f6e63d4c551317e7a5dd72690af963574f2af9bf5e62 -/ section SubmissionComponent_JumpCoordinateShifts /- Exact orbit shifts of every discontinuity in the coefficient tables. -/ namespace Bounty def logb_monomial {a b r : ℝ} (ha : 0 < a) (hb : 1 < b) (hr : 0 < r) (k l : ℤ) : Real.logb b (r * (a ^ k * b ^ l)) = Real.logb b r + (k : ℝ) * (Real.log a / Real.log b) + l := by have hlog : Real.log b ≠ 0 := ne_of_gt (Real.log_pos hb) have hak : 0 < a ^ k := zpow_pos ha k have hbl : 0 < b ^ l := zpow_pos (by linarith) l simp only [Real.logb] rw [Real.log_mul (ne_of_gt hr) (ne_of_gt (mul_pos hak hbl)), Real.log_mul (ne_of_gt hak) (ne_of_gt hbl), Real.log_zpow, Real.log_zpow] field_simp ring def jumpCoordinate4_table : jumpCoordinate4 = ![0, Real.logb 3 2, Real.logb 3 (9 / 5), Real.logb 3 (10 / 9)] := by funext i fin_cases i <;> norm_num [jumpCoordinate4, jumpRepresentative4_table, Real.logb] def jumpCoordinate3_table : jumpCoordinate3 = ![0, Real.logb 4 2, Real.logb 4 (8 / 5), Real.logb 4 (5 / 4)] := by funext i fin_cases i <;> norm_num [jumpCoordinate3, jumpRepresentative3_table, Real.logb] def jump4_four_thirds : Real.logb 3 (4 / 3) = jumpCoordinate4 0 + rotationSlope - 1 := by have hh := logb_monomial (a := 4) (b := 3) (r := 1) (by norm_num) (by norm_num) (by norm_num) 1 (-1) norm_num at hh simpa [jumpCoordinate4_zero, rotationSlope, sub_eq_add_neg] using hh def jump4_three_halves : Real.logb 3 (3 / 2) = jumpCoordinate4 1 - rotationSlope + 1 := by have hh := logb_monomial (a := 4) (b := 3) (r := 2) (by norm_num) (by norm_num) (by norm_num) (-1) 1 norm_num at hh simpa [jumpCoordinate4_table, rotationSlope, sub_eq_add_neg] using hh def jump4_eight_thirds : Real.logb 3 (8 / 3) = jumpCoordinate4 1 + rotationSlope - 1 := by have hh := logb_monomial (a := 4) (b := 3) (r := 2) (by norm_num) (by norm_num) (by norm_num) 1 (-1) norm_num at hh simpa [jumpCoordinate4_table, rotationSlope, sub_eq_add_neg] using hh def jump4_sixteen_fifteenths : Real.logb 3 (16 / 15) = jumpCoordinate4 2 + 2 * rotationSlope - 3 := by have hh := logb_monomial (a := 4) (b := 3) (r := 9 / 5) (by norm_num) (by norm_num) (by norm_num) 2 (-3) norm_num at hh simpa [jumpCoordinate4_table, rotationSlope, sub_eq_add_neg] using hh def jump3_four_thirds : Real.logb 4 (4 / 3) = jumpCoordinate3 0 - (1 / rotationSlope) + 1 := by have hh := logb_monomial (a := 3) (b := 4) (r := 1) (by norm_num) (by norm_num) (by norm_num) (-1) 1 norm_num at hh rw [← inverse_rotationSlope] simpa [jumpCoordinate3_zero, Real.logb, sub_eq_add_neg] using hh def jump3_five_thirds : Real.logb 4 (5 / 3) = jumpCoordinate3 3 - (1 / rotationSlope) + 1 := by have hh := logb_monomial (a := 3) (b := 4) (r := 5 / 4) (by norm_num) (by norm_num) (by norm_num) (-1) 1 norm_num at hh rw [← inverse_rotationSlope] simpa [jumpCoordinate3_table, Real.logb, sub_eq_add_neg] using hh end Bounty end SubmissionComponent_JumpCoordinateShifts /- Component OrbitJumpTables; SHA256 521809bd0966883052522674b4be7dc5558fd79ceac6d4f08a37ba5fdd44479f -/ section SubmissionComponent_OrbitJumpTables /- Rewrite the signed coefficient jumps in the four representative orbits. -/ namespace Bounty def forwardJump_two_shifts (δ t α : ℝ) (n k l : ℤ) : forwardJump δ (t + (k : ℝ) * α + l) ((n : ℝ) * α) = forwardJump δ t (((n - k : ℤ) : ℝ) * α) := by rw [forwardJump_integer_shift, forwardJump_orbit_shift] def backwardJump_two_shifts (δ t α : ℝ) (n k l : ℤ) : backwardJump δ (t + (k : ℝ) * α + l) ((n : ℝ) * α) = backwardJump δ t (((n - k : ℤ) : ℝ) * α) := by rw [backwardJump_integer_shift, backwardJump_orbit_shift] def coefficient4_forward_visits (r : ℕ) (n : ℤ) : realCoefficient4 ((3 : ℝ) ^ Int.fract ((n : ℝ) * rotationSlope + returnError r)) - realCoefficient4 ((3 : ℝ) ^ Int.fract ((n : ℝ) * rotationSlope)) = 90 * jumpVisit4 r 0 n - 48 * jumpVisit4 r 2 (n - 2) - 60 * jumpVisit4 r 3 n + 60 * jumpVisit4 r 0 (n - 1) - 30 * jumpVisit4 r 1 (n + 1) - 60 * jumpVisit4 r 1 n + 48 * jumpVisit4 r 1 (n - 1) := by rw [coefficient4_forward_jumps (returnError_pos r).le (returnError_lt_one r)] have hs (t : ℝ) (k l : ℤ) := forwardJump_two_shifts (returnError r) t rotationSlope n k l have h0 : forwardJump (returnError r) 0 ((n : ℝ) * rotationSlope) = jumpVisit4 r 0 n := by simp only [jumpVisit4, jumpCoordinate4_zero] have h16 : forwardJump (returnError r) (Real.logb 3 (16 / 15)) ((n : ℝ) * rotationSlope) = jumpVisit4 r 2 (n - 2) := by rw [jump4_sixteen_fifteenths] simpa only [jumpVisit4, Int.cast_ofNat, Int.cast_neg, sub_eq_add_neg] using hs (jumpCoordinate4 2) 2 (-3) have h10 : forwardJump (returnError r) (Real.logb 3 (10 / 9)) ((n : ℝ) * rotationSlope) = jumpVisit4 r 3 n := by have ht : jumpCoordinate4 3 = Real.logb 3 (10 / 9) := by rw [jumpCoordinate4_table]; rfl simp only [jumpVisit4, ht] have h4 : forwardJump (returnError r) (Real.logb 3 (4 / 3)) ((n : ℝ) * rotationSlope) = jumpVisit4 r 0 (n - 1) := by rw [jump4_four_thirds] simpa only [jumpVisit4, Int.cast_one, Int.cast_neg, one_mul, sub_eq_add_neg] using hs (jumpCoordinate4 0) 1 (-1) have h3 : forwardJump (returnError r) (Real.logb 3 (3 / 2)) ((n : ℝ) * rotationSlope) = jumpVisit4 r 1 (n + 1) := by rw [jump4_three_halves] simpa only [jumpVisit4, Int.cast_one, Int.cast_neg, neg_one_mul, sub_neg_eq_add, sub_eq_add_neg, neg_neg] using hs (jumpCoordinate4 1) (-1) 1 have h2 : forwardJump (returnError r) (Real.logb 3 2) ((n : ℝ) * rotationSlope) = jumpVisit4 r 1 n := by have ht : jumpCoordinate4 1 = Real.logb 3 2 := by rw [jumpCoordinate4_table]; rfl simp only [jumpVisit4, ht] have h8 : forwardJump (returnError r) (Real.logb 3 (8 / 3)) ((n : ℝ) * rotationSlope) = jumpVisit4 r 1 (n - 1) := by rw [jump4_eight_thirds] simpa only [jumpVisit4, Int.cast_one, Int.cast_neg, one_mul, sub_eq_add_neg] using hs (jumpCoordinate4 1) 1 (-1) rw [h0, h16, h10, h4, h3, h2, h8] def coefficient3_backward_visits (r : ℕ) (n : ℤ) : realCoefficient3 ((4 : ℝ) ^ Int.fract ((n : ℝ) / rotationSlope - returnError r / rotationSlope)) - realCoefficient3 ((4 : ℝ) ^ Int.fract ((n : ℝ) / rotationSlope)) = -90 * jumpVisit3 r 0 n - 5 * jumpVisit3 r 0 (n + 1) + 6 * jumpVisit3 r 2 n + 5 * jumpVisit3 r 3 (n + 1) + 84 * jumpVisit3 r 1 n := by have hd : 0 ≤ returnError r / rotationSlope := div_nonneg (returnError_pos r).le (by linarith [rotationSlope_bounds.1]) rw [coefficient3_backward_jumps hd (reciprocal_returnError_lt_one r)] have hs (t : ℝ) (k l : ℤ) := backwardJump_two_shifts (returnError r / rotationSlope) t (1 / rotationSlope) n k l have h0 : backwardJump (returnError r / rotationSlope) 0 ((n : ℝ) / rotationSlope) = jumpVisit3 r 0 n := by simp only [jumpVisit3, jumpCoordinate3_zero] have h4 : backwardJump (returnError r / rotationSlope) (Real.logb 4 (4 / 3)) ((n : ℝ) / rotationSlope) = jumpVisit3 r 0 (n + 1) := by rw [jump3_four_thirds] simpa only [jumpVisit3, Int.cast_one, Int.cast_neg, neg_one_mul, sub_neg_eq_add, sub_eq_add_neg, mul_one_div, neg_neg, neg_div] using hs (jumpCoordinate3 0) (-1) 1 have h8 : backwardJump (returnError r / rotationSlope) (Real.logb 4 (8 / 5)) ((n : ℝ) / rotationSlope) = jumpVisit3 r 2 n := by have ht : jumpCoordinate3 2 = Real.logb 4 (8 / 5) := by rw [jumpCoordinate3_table]; rfl simp only [jumpVisit3, ht] have h5 : backwardJump (returnError r / rotationSlope) (Real.logb 4 (5 / 3)) ((n : ℝ) / rotationSlope) = jumpVisit3 r 3 (n + 1) := by rw [jump3_five_thirds] simpa only [jumpVisit3, Int.cast_one, Int.cast_neg, neg_one_mul, sub_neg_eq_add, sub_eq_add_neg, mul_one_div, neg_neg, neg_div] using hs (jumpCoordinate3 3) (-1) 1 have h2 : backwardJump (returnError r / rotationSlope) (Real.logb 4 2) ((n : ℝ) / rotationSlope) = jumpVisit3 r 1 n := by have ht : jumpCoordinate3 1 = Real.logb 4 2 := by rw [jumpCoordinate3_table]; rfl simp only [jumpVisit3, ht] rw [h0, h4, h8, h5, h2] def coefficient4_return_visits (r n : ℕ) : coefficient4 (n + (rotationReturns r).q) - coefficient4 n = 90 * jumpVisit4 r 0 n - 48 * jumpVisit4 r 2 ((n : ℤ) - 2) - 60 * jumpVisit4 r 3 n + 60 * jumpVisit4 r 0 ((n : ℤ) - 1) - 30 * jumpVisit4 r 1 ((n : ℤ) + 1) - 60 * jumpVisit4 r 1 n + 48 * jumpVisit4 r 1 ((n : ℤ) - 1) := by rw [coefficient4_difference_is_forward] simpa only [Int.cast_natCast] using coefficient4_forward_visits r (n : ℤ) def coefficient3_return_visits (r n : ℕ) : coefficient3 (n + (rotationReturns r).p.toNat) - coefficient3 n = -90 * jumpVisit3 r 0 n - 5 * jumpVisit3 r 0 ((n : ℤ) + 1) + 6 * jumpVisit3 r 2 n + 5 * jumpVisit3 r 3 ((n : ℤ) + 1) + 84 * jumpVisit3 r 1 n := by rw [coefficient3_difference_is_backward] simpa only [Int.cast_natCast] using coefficient3_backward_visits r (n : ℤ) end Bounty end SubmissionComponent_OrbitJumpTables /- Component GroupedJumpSeries; SHA256 3a7f84ffb11af317c8912946eaa4f361e37dfad83e9a68b4d66e08024175e7d8 -/ section SubmissionComponent_GroupedJumpSeries /- Group the weighted jumps by representative orbit, including all initial terms. -/ open Filter open scoped Topology namespace Bounty def jumpVisit4_abs_le_one (r : ℕ) (i : Fin 4) (n : ℤ) : |(jumpVisit4 r i n : ℝ)| ≤ 1 := by classical unfold jumpVisit4 forwardJump split <;> norm_num def jumpVisit3_abs_le_one (r : ℕ) (i : Fin 4) (n : ℤ) : |(jumpVisit3 r i n : ℝ)| ≤ 1 := by classical unfold jumpVisit3 backwardJump split <;> norm_num noncomputable def positiveJumpSeries4 (r : ℕ) (i : Fin 4) : ℝ := ∑' n : ℕ, (jumpVisit4 r i (n + 1) : ℝ) / (4 : ℝ) ^ (n + 1) noncomputable def positiveJumpSeries3 (r : ℕ) (i : Fin 4) : ℝ := ∑' n : ℕ, (jumpVisit3 r i (n + 1) : ℝ) / (3 : ℝ) ^ (n + 1) def positiveJumpSeries4_eq (r : ℕ) (i : Fin 4) : positiveJumpSeries4 r i = integerIndexSeries 4 (fun k => (jumpVisit4 r i k : ℝ)) - jumpVisit4 r i 0 := by have hh := hasSum_nat_tail_sub (integerIndexSeries_summable (by norm_num : (1 : ℝ) < 4) (jumpVisit4_abs_le_one r i)) simp only [Nat.cast_add, Nat.cast_one, Nat.cast_zero, pow_zero, div_one] at hh exact hh.tsum_eq def positiveJumpSeries3_eq (r : ℕ) (i : Fin 4) : positiveJumpSeries3 r i = integerIndexSeries 3 (fun k => (jumpVisit3 r i k : ℝ)) - jumpVisit3 r i 0 := by have hh := hasSum_nat_tail_sub (integerIndexSeries_summable (by norm_num : (1 : ℝ) < 3) (jumpVisit3_abs_le_one r i)) simp only [Nat.cast_add, Nat.cast_one, Nat.cast_zero, pow_zero, div_one] at hh exact hh.tsum_eq def coefficient4_return_series_raw (r : ℕ) : (∑' n : ℕ, ((coefficient4 (n + (rotationReturns r).q) - coefficient4 n : ℤ) : ℝ) / (4 : ℝ) ^ n) = 90 * integerIndexSeries 4 (fun k => (jumpVisit4 r 0 k : ℝ)) - 48 * integerIndexSeries 4 (fun k => (jumpVisit4 r 2 (k - 2) : ℝ)) - 60 * integerIndexSeries 4 (fun k => (jumpVisit4 r 3 k : ℝ)) + 60 * integerIndexSeries 4 (fun k => (jumpVisit4 r 0 (k - 1) : ℝ)) - 30 * integerIndexSeries 4 (fun k => (jumpVisit4 r 1 (k + 1) : ℝ)) - 60 * integerIndexSeries 4 (fun k => (jumpVisit4 r 1 k : ℝ)) + 48 * integerIndexSeries 4 (fun k => (jumpVisit4 r 1 (k - 1) : ℝ)) := by have hs (i : Fin 4) (k : ℤ) := (integerIndexSeries_summable (by norm_num : (1 : ℝ) < 4) (fun n => jumpVisit4_abs_le_one r i (n + k))).hasSum have hh := ((((((hs 0 0).mul_left 90).sub ((hs 2 (-2)).mul_left 48)).sub ((hs 3 0).mul_left 60)).add ((hs 0 (-1)).mul_left 60)).sub ((hs 1 1).mul_left 30)).sub ((hs 1 0).mul_left 60) |>.add ((hs 1 (-1)).mul_left 48) simp only [add_zero, ← sub_eq_add_neg] at hh apply HasSum.tsum_eq apply hh.congr_fun intro n rw [coefficient4_return_visits] push_cast ring def coefficient3_return_series_raw (r : ℕ) : (∑' n : ℕ, ((coefficient3 (n + (rotationReturns r).p.toNat) - coefficient3 n : ℤ) : ℝ) / (3 : ℝ) ^ n) = -90 * integerIndexSeries 3 (fun k => (jumpVisit3 r 0 k : ℝ)) - 5 * integerIndexSeries 3 (fun k => (jumpVisit3 r 0 (k + 1) : ℝ)) + 6 * integerIndexSeries 3 (fun k => (jumpVisit3 r 2 k : ℝ)) + 5 * integerIndexSeries 3 (fun k => (jumpVisit3 r 3 (k + 1) : ℝ)) + 84 * integerIndexSeries 3 (fun k => (jumpVisit3 r 1 k : ℝ)) := by have hs (i : Fin 4) (k : ℤ) := (integerIndexSeries_summable (by norm_num : (1 : ℝ) < 3) (fun n => jumpVisit3_abs_le_one r i (n + k))).hasSum have hh := (((((hs 0 0).mul_left (-90)).sub ((hs 0 1).mul_left 5)).add ((hs 2 0).mul_left 6)).add ((hs 3 1).mul_left 5)).add ((hs 1 0).mul_left 84) simp only [add_zero] at hh apply HasSum.tsum_eq apply hh.congr_fun intro n rw [coefficient3_return_visits] push_cast ring def coefficient4_return_series_grouped : ∀ᶠ r in atTop, (∑' n : ℕ, ((coefficient4 (n + (rotationReturns r).q) - coefficient4 n : ℤ) : ℝ) / (4 : ℝ) ^ n) = 0x69 * positiveJumpSeries4 r 0 - 0xa8 * positiveJumpSeries4 r 1 - 3 * positiveJumpSeries4 r 2 - 60 * positiveJumpSeries4 r 3 := by have h01 := jumpVisit4_fixed_eventually_zero (i := 0) (n := -1) (by decide) have h11 := jumpVisit4_fixed_eventually_zero (i := 1) (n := -1) (by decide) have h10 := jumpVisit4_fixed_eventually_zero (i := 1) (n := 0) (by decide) have h21 := jumpVisit4_fixed_eventually_zero (i := 2) (n := -1) (by decide) have h22 := jumpVisit4_fixed_eventually_zero (i := 2) (n := -2) (by decide) have h20 := jumpVisit4_fixed_eventually_zero (i := 2) (n := 0) (by decide) have h30 := jumpVisit4_fixed_eventually_zero (i := 3) (n := 0) (by decide) filter_upwards [h01, h11, h10, h21, h22, h20, h30] with r h01 h11 h10 h21 h22 h20 h30 rw [coefficient4_return_series_raw] rw [integerIndexSeries_down_two (by norm_num : (1 : ℝ) < 4) (jumpVisit4_abs_le_one r 2), integerIndexSeries_down_one (by norm_num : (1 : ℝ) < 4) (jumpVisit4_abs_le_one r 0), integerIndexSeries_up_one (by norm_num : (1 : ℝ) < 4) (jumpVisit4_abs_le_one r 1), integerIndexSeries_down_one (by norm_num : (1 : ℝ) < 4) (jumpVisit4_abs_le_one r 1)] simp only [positiveJumpSeries4_eq, jumpVisit4_initial, h01, h11, h10, h21, h22, h20, h30, Int.cast_zero] ring def coefficient3_return_series_grouped : ∀ᶠ r in atTop, (∑' n : ℕ, ((coefficient3 (n + (rotationReturns r).p.toNat) - coefficient3 n : ℤ) : ℝ) / (3 : ℝ) ^ n) = -90 - 0x69 * positiveJumpSeries3 r 0 + 84 * positiveJumpSeries3 r 1 + 6 * positiveJumpSeries3 r 2 + 15 * positiveJumpSeries3 r 3 := by have h10 := jumpVisit3_fixed_eventually_zero (i := 1) (n := 0) (by decide) have h20 := jumpVisit3_fixed_eventually_zero (i := 2) (n := 0) (by decide) have h30 := jumpVisit3_fixed_eventually_zero (i := 3) (n := 0) (by decide) filter_upwards [h10, h20, h30] with r h10 h20 h30 rw [coefficient3_return_series_raw] rw [integerIndexSeries_up_one (by norm_num : (1 : ℝ) < 3) (jumpVisit3_abs_le_one r 0), integerIndexSeries_up_one (by norm_num : (1 : ℝ) < 3) (jumpVisit3_abs_le_one r 3)] simp only [positiveJumpSeries3_eq, jumpVisit3_initial, h10, h20, h30, Int.cast_zero, Int.cast_one] ring end Bounty end SubmissionComponent_GroupedJumpSeries /- Component ReturnDifferenceIdentity; SHA256 332603a11b26e82cad59ee40d4884e5a7f7167bd3264ae8dee8cf7a0e4826e03 -/ section SubmissionComponent_ReturnDifferenceIdentity /- An integer prefix and the exact four-family remainder for each small return. -/ open Filter open scoped Topology namespace Bounty noncomputable def groupedJump4 (r : ℕ) : ℝ := 0x69 * positiveJumpSeries4 r 0 - 0xa8 * positiveJumpSeries4 r 1 - 3 * positiveJumpSeries4 r 2 - 60 * positiveJumpSeries4 r 3 noncomputable def groupedJump3 (r : ℕ) : ℝ := -0x69 * positiveJumpSeries3 r 0 + 84 * positiveJumpSeries3 r 1 + 6 * positiveJumpSeries3 r 2 + 15 * positiveJumpSeries3 r 3 noncomputable def returnIntegerPrefix (r : ℕ) : ℤ := ((3 : ℤ) ^ (rotationReturns r).p.toNat - 1) * integerPrefix coefficient4 4 (rotationReturns r).q + ((4 : ℤ) ^ (rotationReturns r).q - 1) * (integerPrefix coefficient3 3 (rotationReturns r).p.toNat - 90) noncomputable def returnRemainder (r : ℕ) : ℝ := ((3 : ℝ) ^ (rotationReturns r).p.toNat - 1) * groupedJump4 r + ((4 : ℝ) ^ (rotationReturns r).q - 1) * groupedJump3 r def returnDifferenceIdentity : ∀ᶠ r in atTop, ((4 : ℝ) ^ (rotationReturns r).q - 1) * ((3 : ℝ) ^ (rotationReturns r).p.toNat - 1) * (0xb4 * explicitDensity - 32) - returnIntegerPrefix r = returnRemainder r := by filter_upwards [coefficient4_return_series_grouped, coefficient3_return_series_grouped] with r h4 h3 have ha := integer_weighted_shift (by norm_num : 1 < (4 : ℕ)) coefficient4_bound (rotationReturns r).q have hb := integer_weighted_shift (by norm_num : 1 < (3 : ℕ)) coefficient3_bound (rotationReturns r).p.toNat norm_num only [Nat.cast_ofNat] at ha hb rw [h4] at ha rw [h3] at hb have hz : 0xb4 * explicitDensity - 32 = (∑' n : ℕ, (coefficient4 n : ℝ) / (4 : ℝ) ^ n) + (∑' n : ℕ, (coefficient3 n : ℝ) / (3 : ℝ) ^ n) := by unfold explicitDensity ring rw [hz] calc _ = ((3 : ℝ) ^ (rotationReturns r).p.toNat - 1) * (((4 : ℝ) ^ (rotationReturns r).q - 1) * (∑' n : ℕ, (coefficient4 n : ℝ) / (4 : ℝ) ^ n)) + ((4 : ℝ) ^ (rotationReturns r).q - 1) * (((3 : ℝ) ^ (rotationReturns r).p.toNat - 1) * (∑' n : ℕ, (coefficient3 n : ℝ) / (3 : ℝ) ^ n)) - returnIntegerPrefix r := by ring _ = returnRemainder r := by rw [ha, hb] unfold returnIntegerPrefix returnRemainder groupedJump4 groupedJump3 push_cast ring end Bounty end SubmissionComponent_ReturnDifferenceIdentity /- Component ReturnEventSeries; SHA256 f58e196b7ba93d2326f2c6a08e99d6b8716dd77f314bd6e3378eb22a549fc664 -/ section SubmissionComponent_ReturnEventSeries /- The exact remainder as sixteen absolutely convergent exponential event series. -/ namespace Bounty def returnEventCoefficient4 (i : Fin 4) : ℤ := ![0x69, -0xa8, -3, -60] i def returnEventCoefficient3 (i : Fin 4) : ℤ := ![0x69, -84, -6, -15] i def returnEventCoefficient (i : ReturnEventFamily) : ℤ := if i.1 = 0 then returnEventCoefficient4 i.2 else if i.1 = 1 then -returnEventCoefficient4 i.2 else if i.1 = 2 then -returnEventCoefficient3 i.2 else returnEventCoefficient3 i.2 noncomputable def returnEventTerm (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : ℝ := by classical exact if returnEventVisit r i n then (returnEventCoefficient i : ℝ) * Real.exp (-returnEventTime r i n) else 0 def jumpVisit4_eq_one_of_ne_zero {r : ℕ} {i : Fin 4} {n : ℤ} (h : jumpVisit4 r i n ≠ 0) : jumpVisit4 r i n = 1 := by unfold jumpVisit4 forwardJump at * split at * <;> simp_all def jumpVisit3_eq_one_of_ne_zero {r : ℕ} {i : Fin 4} {n : ℤ} (h : jumpVisit3 r i n ≠ 0) : jumpVisit3 r i n = 1 := by unfold jumpVisit3 backwardJump at * split at * <;> simp_all def exp_neg_event_time {b : ℝ} (hb : 0 < b) (offset : ℝ) (n : ℕ) : Real.exp (-((n : ℝ) * Real.log b - offset)) = Real.exp offset / b ^ n := by rw [neg_sub, Real.exp_sub, Real.exp_nat_mul, Real.exp_log hb] def returnEventTerm_eq_weighted (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : returnEventTerm r i n = if 0 < n then (returnEventCoefficient i : ℝ) * Real.exp (returnEventOffset r i) * (if i.1 < 2 then (jumpVisit4 r i.2 n : ℝ) / (4 : ℝ) ^ n else (jumpVisit3 r i.2 n : ℝ) / (3 : ℝ) ^ n) else 0 := by classical by_cases hn : 0 < n · by_cases hi : i.1 < 2 · by_cases hj : jumpVisit4 r i.2 n ≠ 0 · have he := jumpVisit4_eq_one_of_ne_zero hj have hv : returnEventVisit r i n := by simpa only [returnEventVisit, if_pos hi] using And.intro hn hj rw [returnEventTerm, if_pos hv, if_pos hn, if_pos hi, he, Int.cast_one] simp only [returnEventTime, returnEventStep, if_pos hi] rw [exp_neg_event_time (by norm_num : (0 : ℝ) < 4)] ring · have he : jumpVisit4 r i.2 n = 0 := not_ne_iff.mp hj simp [returnEventTerm, returnEventVisit, hn, hi, he] · by_cases hj : jumpVisit3 r i.2 n ≠ 0 · have he := jumpVisit3_eq_one_of_ne_zero hj have hv : returnEventVisit r i n := by simpa only [returnEventVisit, if_neg hi] using And.intro hn hj rw [returnEventTerm, if_pos hv, if_pos hn, if_neg hi, he, Int.cast_one] simp only [returnEventTime, returnEventStep, if_neg hi] rw [exp_neg_event_time (by norm_num : (0 : ℝ) < 3)] ring · have he : jumpVisit3 r i.2 n = 0 := not_ne_iff.mp hj simp [returnEventTerm, returnEventVisit, hn, hi, he] · simp [returnEventTerm, returnEventVisit, hn] def returnEventTerm_hasSum (r : ℕ) (i : ReturnEventFamily) : HasSum (returnEventTerm r i) ((returnEventCoefficient i : ℝ) * Real.exp (returnEventOffset r i) * (if i.1 < 2 then positiveJumpSeries4 r i.2 else positiveJumpSeries3 r i.2)) := by classical rw [← hasSum_nat_add_iff' 1] simp only [Finset.sum_range_one, returnEventTerm_eq_weighted, Nat.lt_irrefl, if_false, sub_zero] by_cases hi : i.1 < 2 · have hs := ((summable_nat_add_iff 1).mpr (integerIndexSeries_summable (by norm_num : (1 : ℝ) < 4) (jumpVisit4_abs_le_one r i.2))).hasSum have hh := hs.mul_left ((returnEventCoefficient i : ℝ) * Real.exp (returnEventOffset r i)) simpa only [Nat.cast_add, Nat.cast_one, Nat.zero_lt_succ, if_pos, hi, positiveJumpSeries4] using hh · have hs := ((summable_nat_add_iff 1).mpr (integerIndexSeries_summable (by norm_num : (1 : ℝ) < 3) (jumpVisit3_abs_le_one r i.2))).hasSum have hh := hs.mul_left ((returnEventCoefficient i : ℝ) * Real.exp (returnEventOffset r i)) simpa only [Nat.cast_add, Nat.cast_one, Nat.zero_lt_succ, if_pos, if_neg hi, positiveJumpSeries3] using hh def returnEventTerm_summable (r : ℕ) (i : ReturnEventFamily) : Summable (returnEventTerm r i) := (returnEventTerm_hasSum r i).summable def returnEventTerm_tsum (r : ℕ) (i : ReturnEventFamily) : (∑' n : ℕ, returnEventTerm r i n) = (returnEventCoefficient i : ℝ) * Real.exp (returnEventOffset r i) * (if i.1 < 2 then positiveJumpSeries4 r i.2 else positiveJumpSeries3 r i.2) := (returnEventTerm_hasSum r i).tsum_eq def returnRemainder_event_series (r : ℕ) : returnRemainder r = ∑ i : ReturnEventFamily, ∑' n : ℕ, returnEventTerm r i n := by simp only [returnEventTerm_tsum, Fintype.sum_prod_type, Fin.sum_univ_four] norm_num [Fin.lt_def, Fin.ext_iff, Matrix.cons_val_two, Matrix.cons_val_three, returnEventCoefficient, returnEventCoefficient4, returnEventCoefficient3, returnEventOffset, Real.exp_nat_mul, Real.exp_log (by norm_num : (0 : ℝ) < 3), Real.exp_log (by norm_num : (0 : ℝ) < 4)] unfold returnRemainder groupedJump4 groupedJump3 ring end Bounty end SubmissionComponent_ReturnEventSeries /- Component SparseGeometricTail; SHA256 0c64c5aa3060bb0b59e167193718d8021131fc7d14f8bde100cc6a728f407e89 -/ section SubmissionComponent_SparseGeometricTail /- Geometric tails supported on separated natural-number indices. -/ namespace Bounty /-- A finite set of indices with spacing at least `Q` has geometric mass at most that of the progression starting at any lower bound `N`. -/ def sparse_geometric_finset_bound {r : ℝ} (hr0 : 0 ≤ r) (hr1 : r < 1) {Q : ℕ} (hQ : 0 < Q) (s : Finset ℕ) (N : ℕ) (hN : ∀ n ∈ s, N ≤ n) (hsep : ∀ m ∈ s, ∀ n ∈ s, m < n → Q ≤ n - m) : ∑ n ∈ s, r ^ n ≤ r ^ N / (1 - r ^ Q) := by classical have hd : 0 < 1 - r ^ Q := sub_pos.mpr (pow_lt_one₀ hr0 hr1 (Nat.ne_of_gt hQ)) induction s using Finset.strongInductionOn generalizing N with | _ s ih => by_cases hs : s.Nonempty · let m := s.min' hs have hm : m ∈ s := Finset.min'_mem s hs have hmin (n : ℕ) (hn : n ∈ s) : m ≤ n := Finset.min'_le s n hn have hrest : ∑ n ∈ s.erase m, r ^ n ≤ r ^ (m + Q) / (1 - r ^ Q) := by apply ih (s.erase m) (Finset.erase_ssubset hm) (m + Q) · intro n hn have hn' := Finset.mem_erase.mp hn have hmn : m < n := lt_of_le_of_ne (hmin n hn'.2) (Ne.symm hn'.1) have hg := hsep m hm n hn'.2 hmn omega · intro a ha b hb hab exact hsep a (Finset.mem_of_mem_erase ha) b (Finset.mem_of_mem_erase hb) hab calc ∑ n ∈ s, r ^ n = r ^ m + ∑ n ∈ s.erase m, r ^ n := by rw [← Finset.sum_erase_add _ _ hm] ring _ ≤ r ^ m + r ^ (m + Q) / (1 - r ^ Q) := add_le_add le_rfl hrest _ = r ^ m / (1 - r ^ Q) := by rw [pow_add] field_simp <;> ring _ ≤ r ^ N / (1 - r ^ Q) := div_le_div_of_nonneg_right (pow_le_pow_of_le_one hr0 hr1.le (hN m hm)) hd.le · have he : s = ∅ := Finset.not_nonempty_iff_eq_empty.mp hs subst s simpa using div_nonneg (pow_nonneg hr0 N) hd.le /-- Summability and the sharp geometric upper bound for separated visits. -/ def sparse_geometric_tail_pow {r : ℝ} (hr0 : 0 ≤ r) (hr1 : r < 1) {Q : ℕ} (hQ : 0 < Q) (V : ℕ → Prop) [DecidablePred V] (N : ℕ) (hsep : ∀ m n, V m → V n → m < n → Q ≤ n - m) : Summable (fun n => if V n ∧ N ≤ n then r ^ n else 0) ∧ (∑' n, if V n ∧ N ≤ n then r ^ n else 0) ≤ r ^ N / (1 - r ^ Q) := by classical have hnonneg : 0 ≤ (fun n => if V n ∧ N ≤ n then r ^ n else 0) := by intro n dsimp only [Pi.zero_apply] split_ifs <;> positivity have hbound (s : Finset ℕ) : ∑ n ∈ s, (if V n ∧ N ≤ n then r ^ n else 0) ≤ r ^ N / (1 - r ^ Q) := by rw [← Finset.sum_filter] apply sparse_geometric_finset_bound hr0 hr1 hQ · intro n hn exact (Finset.mem_filter.mp hn).2.2 · intro m hm n hn hmn exact hsep m n (Finset.mem_filter.mp hm).2.1 (Finset.mem_filter.mp hn).2.1 hmn exact ⟨summable_of_sum_le hnonneg hbound, Real.tsum_le_of_sum_le hnonneg hbound⟩ end Bounty end SubmissionComponent_SparseGeometricTail /- Component SparseExponentialTail; SHA256 09025d47469001596818f18079809f9940e664b5e7e6f1d240e49d7f1ac286b3 -/ section SubmissionComponent_SparseExponentialTail /- Sparse exponential tails with a real event-time cutoff. -/ namespace Bounty /-- Event times `n * step - offset` separated by at least `Q * step` have a geometric tail bound measured directly from the real cutoff `T`. -/ def sparse_exponential_tail {step : ℝ} (hstep : 0 < step) {Q : ℕ} (hQ : 0 < Q) (offset T : ℝ) (V : ℕ → Prop) [DecidablePred V] (hsep : ∀ m n, V m → V n → m < n → Q ≤ n - m) (htime : ∀ n, V n → T ≤ (n : ℝ) * step - offset) : Summable (fun n => if V n then Real.exp (-((n : ℝ) * step - offset)) else 0) ∧ (∑' n, if V n then Real.exp (-((n : ℝ) * step - offset)) else 0) ≤ Real.exp (-T) / (1 - Real.exp (-(Q : ℝ) * step)) := by classical have hr0 : 0 ≤ Real.exp (-step) := (Real.exp_pos _).le have hr1 : Real.exp (-step) < 1 := Real.exp_lt_one_iff.mpr (by linarith) have hpow (n : ℕ) : Real.exp (-step) ^ n = Real.exp (-(n : ℝ) * step) := by rw [← Real.exp_nat_mul] congr 1 ring have hweight (n : ℕ) : Real.exp (-((n : ℝ) * step - offset)) = Real.exp offset * Real.exp (-step) ^ n := by rw [hpow, ← Real.exp_add] congr 1 ring have hd : 0 < 1 - Real.exp (-(Q : ℝ) * step) := by apply sub_pos.mpr apply Real.exp_lt_one_iff.mpr have hQr : 0 < (Q : ℝ) := by exact_mod_cast hQ nlinarith [mul_pos hQr hstep] by_cases hex : ∃ n, V n · let N := Nat.find hex have hVN : V N := Nat.find_spec hex have hN (n : ℕ) (hn : V n) : N ≤ n := Nat.find_min' hex hn obtain ⟨hsum, hbound⟩ := sparse_geometric_tail_pow hr0 hr1 hQ V N hsep have hfun : (fun n => if V n then Real.exp (-((n : ℝ) * step - offset)) else 0) = (fun n => Real.exp offset * (if V n ∧ N ≤ n then Real.exp (-step) ^ n else 0)) := by funext n by_cases hn : V n · simp only [hn, hN n hn, and_self, ite_true, hweight] · simp only [hn, false_and, ite_false, mul_zero] rw [hfun] refine ⟨hsum.mul_left _, ?_⟩ rw [tsum_mul_left] calc Real.exp offset * (∑' n, if V n ∧ N ≤ n then Real.exp (-step) ^ n else 0) ≤ Real.exp offset * (Real.exp (-step) ^ N / (1 - Real.exp (-step) ^ Q)) := mul_le_mul_of_nonneg_left hbound (Real.exp_pos _).le _ = Real.exp (-((N : ℝ) * step - offset)) / (1 - Real.exp (-(Q : ℝ) * step)) := by rw [← mul_div_assoc, ← hweight, hpow Q] _ ≤ Real.exp (-T) / (1 - Real.exp (-(Q : ℝ) * step)) := by apply div_le_div_of_nonneg_right _ hd.le apply Real.exp_le_exp.mpr linarith [htime N hVN] · have hempty (n : ℕ) : ¬V n := fun hn => hex ⟨n, hn⟩ simp only [hempty, ite_false, summable_zero, tsum_zero, true_and] exact div_nonneg (Real.exp_pos _).le hd.le end Bounty end SubmissionComponent_SparseExponentialTail /- Component ReturnEventTail; SHA256 836a7bd83088527d5905085bec240c1f7d414050a3fd5e3e783018b1711c83f7 -/ section SubmissionComponent_ReturnEventTail /- Quantitative tails of the sixteen return-event series. -/ namespace Bounty noncomputable def returnEventOmittedTerm (r : ℕ) (T : ℝ) (i : ReturnEventFamily) (n : ℕ) : ℝ := by classical exact if T ≤ returnEventTime r i n then returnEventTerm r i n else 0 noncomputable def returnEventTailWeight (r : ℕ) (T : ℝ) (i : ReturnEventFamily) (n : ℕ) : ℝ := by classical exact if returnEventVisit r i n ∧ T ≤ returnEventTime r i n then Real.exp (-returnEventTime r i n) else 0 def returnEventCoefficient_abs_le (i : ReturnEventFamily) : |(returnEventCoefficient i : ℝ)| ≤ 0xa8 := by rcases i with ⟨j, k⟩ fin_cases j <;> fin_cases k <;> norm_num [returnEventCoefficient, returnEventCoefficient4, returnEventCoefficient3, Fin.ext_iff] def returnEventOmittedTerm_summable (r : ℕ) (T : ℝ) (i : ReturnEventFamily) : Summable (returnEventOmittedTerm r T i) := by classical have hs := (returnEventTerm_summable r i).indicator {n | T ≤ returnEventTime r i n} exact hs.congr (fun n => by by_cases ht : T ≤ returnEventTime r i n <;> simp [ht, returnEventOmittedTerm]) def returnEventTailWeight_nonneg (r : ℕ) (T : ℝ) (i : ReturnEventFamily) (n : ℕ) : 0 ≤ returnEventTailWeight r T i n := by unfold returnEventTailWeight split_ifs <;> positivity def returnEventOmittedTerm_eq (r : ℕ) (T : ℝ) (i : ReturnEventFamily) (n : ℕ) : returnEventOmittedTerm r T i n = (returnEventCoefficient i : ℝ) * returnEventTailWeight r T i n := by classical by_cases hv : returnEventVisit r i n <;> by_cases ht : T ≤ returnEventTime r i n <;> simp [returnEventOmittedTerm, returnEventTerm, returnEventTailWeight, hv, ht] /-- Each event family has an integral index spacing whose time spacing is at least half the scale. -/ def returnEventVisit_discrete_spacing (r : ℕ) (i : ReturnEventFamily) : ∃ q : ℕ, 0 < q ∧ returnScale r / 2 ≤ (q : ℝ) * returnEventStep i ∧ ∀ m n, returnEventVisit r i m → returnEventVisit r i n → m < n → q ≤ n - m := by by_cases hi : i.1 < 2 · refine ⟨(rotationReturns r).Q, (rotationReturns r).Q_pos, ?_, ?_⟩ · simpa only [returnEventStep, if_pos hi] using (returnScale_bounds r).2.2.1 · intro m n hm hn hmn apply jumpVisit4_separated r i.2 hmn · simpa only [returnEventVisit, if_pos hi] using hm.2 · simpa only [returnEventVisit, if_pos hi] using hn.2 · have hP : 0 < (rotationReturns r).P := by have hb := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hQ := (rotationReturns r).Q_pos omega have hPn : 0 < (rotationReturns r).P.toNat := by omega have hcast : ((rotationReturns r).P.toNat : ℝ) = (rotationReturns r).P := by exact_mod_cast Int.toNat_of_nonneg hP.le refine ⟨(rotationReturns r).P.toNat, hPn, ?_, ?_⟩ · rw [returnEventStep, if_neg hi, hcast] change returnScale r / 2 ≤ returnScale r linarith [returnScale_pos r] · intro m n hm hn hmn apply jumpVisit3_separated r i.2 hmn · simpa only [returnEventVisit, if_neg hi] using hm.2 · simpa only [returnEventVisit, if_neg hi] using hn.2 def returnEventTail_denominator_pos (r : ℕ) : 0 < 1 - Real.exp (-returnScale r / 2) := by apply sub_pos.mpr apply Real.exp_lt_one_iff.mpr linarith [returnScale_pos r] /-- Removing all terms before an empty interval gains the full length of that interval. -/ def returnEventTailWeight_bound (r : ℕ) (T : ℝ) (i : ReturnEventFamily) (hgap : ∀ n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) : Summable (returnEventTailWeight r T i) ∧ (∑' n, returnEventTailWeight r T i n) ≤ Real.exp (-T - returnScale r / 0x64) / (1 - Real.exp (-returnScale r / 2)) := by classical obtain ⟨q, hq, hscale, hsep⟩ := returnEventVisit_discrete_spacing r i let V : ℕ → Prop := fun n => returnEventVisit r i n ∧ T ≤ returnEventTime r i n have htime (n : ℕ) (hn : V n) : T + returnScale r / 0x64 ≤ (n : ℝ) * returnEventStep i - returnEventOffset r i := by change T + returnScale r / 0x64 ≤ returnEventTime r i n rcases hgap n hn.1 with h | h · linarith [hn.2] · exact h.le obtain ⟨hsum, hbound⟩ := sparse_exponential_tail (returnEventStep_pos i) hq (returnEventOffset r i) (T + returnScale r / 0x64) V (fun m n hm hn hmn => hsep m n hm.1 hn.1 hmn) htime have hsum' : Summable (returnEventTailWeight r T i) := by change Summable (fun n => if returnEventVisit r i n ∧ T ≤ returnEventTime r i n then Real.exp (-returnEventTime r i n) else 0) simpa only [returnEventTime, V] using hsum have hb : (∑' n, returnEventTailWeight r T i n) ≤ Real.exp (-T - returnScale r / 0x64) / (1 - Real.exp (-(q : ℝ) * returnEventStep i)) := by simpa only [returnEventTailWeight, returnEventTime, V, neg_add_rev, sub_eq_add_neg, add_comm] using hbound refine ⟨hsum', hb.trans ?_⟩ apply div_le_div_of_nonneg_left (Real.exp_pos _).le (returnEventTail_denominator_pos r) have hexp : Real.exp (-(q : ℝ) * returnEventStep i) ≤ Real.exp (-returnScale r / 2) := by apply Real.exp_le_exp.mpr linarith linarith def returnEventOmittedTerm_family_bound (r : ℕ) (T : ℝ) (i : ReturnEventFamily) (hgap : ∀ n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) : |∑' n, returnEventOmittedTerm r T i n| ≤ 0xa8 * Real.exp (-T - returnScale r / 0x64) / (1 - Real.exp (-returnScale r / 2)) := by have hb := (returnEventTailWeight_bound r T i hgap).2 have hnonneg : 0 ≤ ∑' n, returnEventTailWeight r T i n := tsum_nonneg (returnEventTailWeight_nonneg r T i) have hfun : returnEventOmittedTerm r T i = fun n => (returnEventCoefficient i : ℝ) * returnEventTailWeight r T i n := by funext n exact returnEventOmittedTerm_eq r T i n rw [hfun, tsum_mul_left, abs_mul, abs_of_nonneg hnonneg] calc |(returnEventCoefficient i : ℝ)| * (∑' n, returnEventTailWeight r T i n) ≤ 0xa8 * (Real.exp (-T - returnScale r / 0x64) / (1 - Real.exp (-returnScale r / 2))) := mul_le_mul (returnEventCoefficient_abs_le i) hb hnonneg (by norm_num) _ = _ := by ring def returnEventOmittedTerm_total_bound (r : ℕ) (T : ℝ) (hgap : ∀ i n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) : |∑ i : ReturnEventFamily, ∑' n, returnEventOmittedTerm r T i n| ≤ (16 * 0xa8 : ℝ) * Real.exp (-T - returnScale r / 0x64) / (1 - Real.exp (-returnScale r / 2)) := by calc |∑ i : ReturnEventFamily, ∑' n, returnEventOmittedTerm r T i n| ≤ ∑ i : ReturnEventFamily, |∑' n, returnEventOmittedTerm r T i n| := Finset.abs_sum_le_sum_abs _ _ _ ≤ ∑ _i : ReturnEventFamily, 0xa8 * Real.exp (-T - returnScale r / 0x64) / (1 - Real.exp (-returnScale r / 2)) := Finset.sum_le_sum (fun i _ => returnEventOmittedTerm_family_bound r T i (hgap i)) _ = _ := by norm_num [ReturnEventFamily]; ring end Bounty end SubmissionComponent_ReturnEventTail /- Component ReturnEventBounds; SHA256 e05d18a97b07da3007f7881de0e40be70c622180361706dde82fe51f8bc8ba7c -/ section SubmissionComponent_ReturnEventBounds /- Bounds for the offsets, exponents, and number of coordinates below a return cutoff. -/ namespace Bounty def returnEventOffset_bounds (r : ℕ) (i : ReturnEventFamily) : 0 ≤ returnEventOffset r i ∧ returnEventOffset r i ≤ returnScale r := by have h3 : 0 < Real.log 3 := Real.log_pos (by norm_num) have h4 : 0 < Real.log 4 := Real.log_pos (by norm_num) have hp : 0 ≤ (rotationReturns r).p := by have hb := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hq := (rotationReturns r).q_pos omega have he : ((rotationReturns r).p.toNat : ℝ) = (rotationReturns r).p := by exact_mod_cast Int.toNat_of_nonneg hp unfold returnEventOffset split · constructor · positivity · rw [he] exact (returnScale_bounds r).2.1 · split · exact ⟨by positivity, (returnScale_bounds r).1⟩ · exact ⟨le_refl 0, (returnScale_pos r).le⟩ def returnEventTime_gt_neg_scale (r : ℕ) (i : ReturnEventFamily) {n : ℕ} (hn : returnEventVisit r i n) : -returnScale r < returnEventTime r i n := by have hnR : (0 : ℝ) < n := by exact_mod_cast hn.1 have hh := mul_pos hnR (returnEventStep_pos i) have ho := (returnEventOffset_bounds r i).2 unfold returnEventTime linarith def returnEventExponent_le (r : ℕ) (i : ReturnEventFamily) {n : ℕ} {k : ℝ} (hn : returnEventTime r i n ≤ k * returnScale r) : (n : ℝ) * returnEventStep i ≤ (k + 1) * returnScale r := by have ho := (returnEventOffset_bounds r i).2 unfold returnEventTime at hn nlinarith def separated_events_card_le_bins (E : Finset ℝ) {a gap : ℝ} (N : ℕ) (hgap : 0 < gap) (hbounds : ∀ x ∈ E, a ≤ x ∧ x ≤ a + (N : ℝ) * gap) (hsep : ∀ x ∈ E, ∀ y ∈ E, x ≠ y → gap ≤ |x - y|) : E.card ≤ N + 1 := by classical have hz (x : E) : 0 ≤ ((x : ℝ) - a) / gap ∧ ((x : ℝ) - a) / gap ≤ N := by have hx := hbounds x x.property constructor · exact div_nonneg (by linarith) hgap.le · apply (div_le_iff₀ hgap).mpr linarith let f : E → ↥(Finset.Icc (0 : ℤ) (N : ℤ)) := fun x => ⟨⌊((x : ℝ) - a) / gap⌋, Finset.mem_Icc.mpr ⟨Int.floor_nonneg.mpr (hz x).1, Int.floor_le_iff.mpr (by push_cast linarith [(hz x).2])⟩⟩ have hinj : Function.Injective f := by intro x y hf apply Subtype.ext by_contra hxy have heq : ⌊((x : ℝ) - a) / gap⌋ = ⌊((y : ℝ) - a) / gap⌋ := congrArg Subtype.val hf have hh := Int.abs_sub_lt_one_of_floor_eq_floor heq have he : ((x : ℝ) - a) / gap - ((y : ℝ) - a) / gap = ((x : ℝ) - y) / gap := by ring rw [he, abs_div, abs_of_pos hgap] at hh have hsmall := (div_lt_iff₀ hgap).mp hh have hlarge := hsep x x.property y y.property hxy linarith have hc := Fintype.card_le_of_injective f hinj simpa using hc def returnEventWindow_card (r k : ℕ) (i : ReturnEventFamily) : (linearEventWindow (returnEventStep i) (returnEventOffset r i) (-returnScale r) ((k : ℝ) * returnScale r) (returnEventVisit r i)).card ≤ 2 * k + 3 := by have hc : (linearEventWindow (returnEventStep i) (returnEventOffset r i) (-returnScale r) ((k : ℝ) * returnScale r) (returnEventVisit r i)).card ≤ (2 * k + 2) + 1 := by apply separated_events_card_le_bins _ (2 * k + 2) (show 0 < returnScale r / 2 by linarith [returnScale_pos r]) · intro x hx obtain ⟨n, hv, he, hlo, hhi⟩ := (mem_linearEventWindow (returnEventStep_pos i)).mp hx refine ⟨hlo, ?_⟩ push_cast nlinarith · intro x hx y hy hxy obtain ⟨m, hm, rfl, _, _⟩ := (mem_linearEventWindow (returnEventStep_pos i)).mp hx obtain ⟨n, hn, rfl, _, _⟩ := (mem_linearEventWindow (returnEventStep_pos i)).mp hy have hmn : m ≠ n := by rintro rfl; exact hxy rfl rcases lt_or_gt_of_ne hmn with hlt | hgt · have hh := returnEventVisit_separation r i hm hn hlt have ha := neg_le_abs (((m : ℝ) * returnEventStep i - returnEventOffset r i) - ((n : ℝ) * returnEventStep i - returnEventOffset r i)) linarith · have hh := returnEventVisit_separation r i hn hm hgt have ha := le_abs_self (((m : ℝ) * returnEventStep i - returnEventOffset r i) - ((n : ℝ) * returnEventStep i - returnEventOffset r i)) linarith omega end Bounty end SubmissionComponent_ReturnEventBounds /- Component ReturnEventTruncation; SHA256 206f46103455ab5d78632f7ce33e9c08abcb129ea1d0742935dcac10b042f709 -/ section SubmissionComponent_ReturnEventTruncation /- Finite truncations of the actual return series and their quantified errors. -/ open Filter open scoped Topology namespace Bounty noncomputable def returnTruncationIndices (r : ℕ) (T : ℝ) (i : ReturnEventFamily) : Finset ℕ := by classical exact (Finset.range (⌈(T + returnEventOffset r i) / returnEventStep i⌉₊ + 1)).filter (fun n => returnEventVisit r i n ∧ returnEventTime r i n < T) def mem_returnTruncationIndices (r : ℕ) (T : ℝ) (i : ReturnEventFamily) (n : ℕ) : n ∈ returnTruncationIndices r T i ↔ returnEventVisit r i n ∧ returnEventTime r i n < T := by classical constructor · intro hn exact (Finset.mem_filter.mp hn).2 · intro hn have hnr : (n : ℝ) ≤ (T + returnEventOffset r i) / returnEventStep i := by apply (le_div_iff₀ (returnEventStep_pos i)).mpr have hh := hn.2 unfold returnEventTime at hh linarith have hnat : n ≤ ⌈(T + returnEventOffset r i) / returnEventStep i⌉₊ := by exact_mod_cast hnr.trans (Nat.le_ceil _) exact Finset.mem_filter.mpr ⟨Finset.mem_range.mpr (by omega), hn⟩ noncomputable def returnTruncation (r : ℕ) (T : ℝ) : ℝ := ∑ i : ReturnEventFamily, ∑ n ∈ returnTruncationIndices r T i, returnEventTerm r i n def returnEventTerm_retained_tsum (r : ℕ) (T : ℝ) (i : ReturnEventFamily) : (∑' n : ℕ, if returnEventTime r i n < T then returnEventTerm r i n else 0) = ∑ n ∈ returnTruncationIndices r T i, returnEventTerm r i n := by classical calc _ = ∑ n ∈ returnTruncationIndices r T i, (if returnEventTime r i n < T then returnEventTerm r i n else 0) := by apply tsum_eq_sum intro n hn by_cases ht : returnEventTime r i n < T · have hv : ¬ returnEventVisit r i n := by intro hv exact hn ((mem_returnTruncationIndices r T i n).mpr ⟨hv, ht⟩) simp only [if_pos ht, returnEventTerm, if_neg hv] · simp only [if_neg ht] _ = _ := by apply Finset.sum_congr rfl intro n hn exact if_pos ((mem_returnTruncationIndices r T i n).mp hn).2 def returnEventTerm_split_at_cutoff (r : ℕ) (T : ℝ) (i : ReturnEventFamily) : (∑' n : ℕ, returnEventTerm r i n) = (∑ n ∈ returnTruncationIndices r T i, returnEventTerm r i n) + ∑' n : ℕ, returnEventOmittedTerm r T i n := by classical have hret : Summable (fun n : ℕ => if returnEventTime r i n < T then returnEventTerm r i n else 0) := by have hs := (returnEventTerm_summable r i).indicator {n | returnEventTime r i n < T} exact hs.congr (fun n => by simp only [Set.indicator_apply, Set.mem_ofPred_eq]) have hsplit (n : ℕ) : returnEventTerm r i n = (if returnEventTime r i n < T then returnEventTerm r i n else 0) + returnEventOmittedTerm r T i n := by unfold returnEventOmittedTerm by_cases ht : returnEventTime r i n < T · simp only [if_pos ht, if_neg (not_le_of_gt ht), add_zero] · simp only [if_neg ht, if_pos (le_of_not_gt ht), zero_add] calc _ = ∑' n : ℕ, ((if returnEventTime r i n < T then returnEventTerm r i n else 0) + returnEventOmittedTerm r T i n) := tsum_congr hsplit _ = (∑' n : ℕ, if returnEventTime r i n < T then returnEventTerm r i n else 0) + ∑' n : ℕ, returnEventOmittedTerm r T i n := (hret.hasSum.add (returnEventOmittedTerm_summable r T i).hasSum).tsum_eq _ = _ := by rw [returnEventTerm_retained_tsum] def returnRemainder_split_at_cutoff (r : ℕ) (T : ℝ) : returnRemainder r = returnTruncation r T + ∑ i : ReturnEventFamily, ∑' n : ℕ, returnEventOmittedTerm r T i n := by rw [returnRemainder_event_series] simp only [returnEventTerm_split_at_cutoff r T, Finset.sum_add_distrib, returnTruncation] def returnTruncation_error_bound (r : ℕ) (T : ℝ) (hgap : ∀ i n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) : |returnRemainder r - returnTruncation r T| ≤ (16 * 0xa8 : ℝ) * Real.exp (-T - returnScale r / 0x64) / (1 - Real.exp (-returnScale r / 2)) := by rw [returnRemainder_split_at_cutoff r T] simpa only [add_sub_cancel_left] using returnEventOmittedTerm_total_bound r T hgap end Bounty end SubmissionComponent_ReturnEventTruncation /- Component ReturnRationalUnits; SHA256 0fe91e0b79a760a14c9ba8159b256520a1476d5deb8de1e8bfd1b47cd57ec98e -/ section SubmissionComponent_ReturnRationalUnits /- Rational units, with prime support in {2, 3}, for the finite return truncations. -/ namespace Bounty noncomputable section def returnRationalUnit (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : ℚ := if i.1 = 0 then (3 : ℚ) ^ (rotationReturns r).p.toNat / (4 : ℚ) ^ n else if i.1 = 1 then 1 / (4 : ℚ) ^ n else if i.1 = 2 then (4 : ℚ) ^ (rotationReturns r).q / (3 : ℚ) ^ n else 1 / (3 : ℚ) ^ n def returnRationalUnit_pos (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : 0 < returnRationalUnit r i n := by unfold returnRationalUnit split · positivity · split · positivity · split <;> positivity def returnRationalUnit_ne_zero (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : returnRationalUnit r i n ≠ 0 := ne_of_gt (returnRationalUnit_pos r i n) def returnRationalUnit_cast (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : (returnRationalUnit r i n : ℝ) = Real.exp (-returnEventTime r i n) := by rcases i with ⟨j, k⟩ fin_cases j <;> norm_num [returnRationalUnit, returnEventTime, returnEventStep, returnEventOffset, Fin.lt_def, Fin.ext_iff, exp_neg_event_time (by norm_num : (0 : ℝ) < 4), exp_neg_event_time (by norm_num : (0 : ℝ) < 3), Real.exp_sub, Real.exp_neg, Real.exp_nat_mul, Real.exp_log (by norm_num : (0 : ℝ) < 3), Real.exp_log (by norm_num : (0 : ℝ) < 4)] def returnUnitFourExponent (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : ℤ := if i.1 < 2 then -(n : ℤ) else if i.1 = 2 then ((rotationReturns r).q : ℤ) else 0 def returnUnitThreeExponent (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : ℤ := if i.1 = 0 then ((rotationReturns r).p.toNat : ℤ) else if i.1 < 2 then 0 else -(n : ℤ) def returnRationalUnit_eq_four_three_zpow (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : returnRationalUnit r i n = (4 : ℚ) ^ returnUnitFourExponent r i n * (3 : ℚ) ^ returnUnitThreeExponent r i n := by rcases i with ⟨j, k⟩ dsimp only [returnRationalUnit, returnUnitFourExponent, returnUnitThreeExponent] generalize hp : (rotationReturns r).p.toNat = p fin_cases j <;> norm_num [returnRationalUnit, returnUnitFourExponent, returnUnitThreeExponent, Fin.lt_def, Fin.ext_iff, zpow_neg, div_eq_mul_inv, mul_comm] def returnRationalUnit_primeMonomial (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : returnRationalUnit r i n = rationalPrimeMonomial (2 * returnUnitFourExponent r i n) (returnUnitThreeExponent r i n) 0 := by rw [returnRationalUnit_eq_four_three_zpow, rational_four_three_monomial] def returnRationalTruncation (r : ℕ) (T : ℝ) : ℚ := ∑ i : ReturnEventFamily, ∑ n ∈ returnTruncationIndices r T i, (returnEventCoefficient i : ℚ) * returnRationalUnit r i n def returnRationalTruncation_cast (r : ℕ) (T : ℝ) : (returnRationalTruncation r T : ℝ) = returnTruncation r T := by classical unfold returnRationalTruncation returnTruncation push_cast apply Finset.sum_congr rfl intro i hi apply Finset.sum_congr rfl intro n hn have hv := ((mem_returnTruncationIndices r T i n).mp hn).1 rw [returnEventTerm, if_pos hv, returnRationalUnit_cast] end end Bounty end SubmissionComponent_ReturnRationalUnits /- Component ReturnTruncationSize; SHA256 c8217a9efd11b4cc681d76ca8d6a555eff050da23023247060fc9395938d82d4 -/ section SubmissionComponent_ReturnTruncationSize /- Coordinate counts and exponent bounds for the actual finite return truncations. -/ namespace Bounty def returnEventTime_injective (r : ℕ) (i : ReturnEventFamily) : Function.Injective (returnEventTime r i) := by intro m n h have hm : (m : ℝ) * returnEventStep i = (n : ℝ) * returnEventStep i := by unfold returnEventTime at h linarith exact_mod_cast mul_right_cancel₀ (ne_of_gt (returnEventStep_pos i)) hm def returnTruncationIndices_card (r k : ℕ) (T : ℝ) (i : ReturnEventFamily) (hT : T ≤ (k : ℝ) * returnScale r) : (returnTruncationIndices r T i).card ≤ 2 * k + 3 := by classical have hsub : (returnTruncationIndices r T i).image (returnEventTime r i) ⊆ linearEventWindow (returnEventStep i) (returnEventOffset r i) (-returnScale r) ((k : ℝ) * returnScale r) (returnEventVisit r i) := by intro t ht obtain ⟨n, hn, rfl⟩ := Finset.mem_image.mp ht obtain ⟨hv, hlt⟩ := (mem_returnTruncationIndices r T i n).mp hn exact (mem_linearEventWindow (returnEventStep_pos i)).mpr ⟨n, hv, rfl, (returnEventTime_gt_neg_scale r i hv).le, hlt.le.trans hT⟩ calc (returnTruncationIndices r T i).card = ((returnTruncationIndices r T i).image (returnEventTime r i)).card := (Finset.card_image_of_injective _ (returnEventTime_injective r i)).symm _ ≤ (linearEventWindow (returnEventStep i) (returnEventOffset r i) (-returnScale r) ((k : ℝ) * returnScale r) (returnEventVisit r i)).card := Finset.card_le_card hsub _ ≤ 2 * k + 3 := returnEventWindow_card r k i def returnTruncationIndices_total_card (r k : ℕ) (T : ℝ) (hT : T ≤ (k : ℝ) * returnScale r) : (∑ i : ReturnEventFamily, (returnTruncationIndices r T i).card) ≤ 16 * (2 * k + 3) := by calc _ ≤ ∑ _i : ReturnEventFamily, (2 * k + 3) := Finset.sum_le_sum (fun i _ => returnTruncationIndices_card r k T i hT) _ = 16 * (2 * k + 3) := by simp [ReturnEventFamily, mul_comm] def returnTruncationIndices_exponent_le (r k : ℕ) (T : ℝ) (i : ReturnEventFamily) {n : ℕ} (hT : T ≤ (k : ℝ) * returnScale r) (hn : n ∈ returnTruncationIndices r T i) : (n : ℝ) * returnEventStep i ≤ ((k : ℝ) + 1) * returnScale r := by exact returnEventExponent_le r i (((mem_returnTruncationIndices r T i n).mp hn).2.le.trans hT) end Bounty end SubmissionComponent_ReturnTruncationSize /- Component ReturnTruncationError; SHA256 efb54cd73ade5b50f0ffe4ab8955d4d85deffde024a983af4eb1c446d3143e42 -/ section SubmissionComponent_ReturnTruncationError /- Absorb the uniform geometric-tail constant into an exponential gain. -/ open Filter open scoped Topology namespace Bounty def returnEventTail_denominator_eventually : ∀ᶠ r in atTop, (1 : ℝ) / 2 ≤ 1 - Real.exp (-returnScale r / 2) := by have hh := returnScale_tendsto.eventually (eventually_ge_atTop (2 * Real.log 2)) filter_upwards [hh] with r hr have he : Real.exp (-Real.log 2) = (1 : ℝ) / 2 := by rw [Real.exp_neg, Real.exp_log (by norm_num : (0 : ℝ) < 2)] norm_num have hx : Real.exp (-returnScale r / 2) ≤ Real.exp (-Real.log 2) := Real.exp_le_exp.mpr (by linarith) rw [he] at hx linarith def returnTruncation_error_uniform : ∀ᶠ r in atTop, ∀ T : ℝ, (∀ i n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) → |returnRemainder r - returnTruncation r T| ≤ 0x1500 * Real.exp (-T - returnScale r / 0x64) := by filter_upwards [returnEventTail_denominator_eventually] with r hr T hgap have hh := returnTruncation_error_bound r T hgap apply hh.trans apply (div_le_iff₀ (returnEventTail_denominator_pos r)).mpr have hm := mul_le_mul_of_nonneg_left hr (Real.exp_pos (-T - returnScale r / 0x64)).le nlinarith def returnTruncation_error_exponential : ∀ᶠ r in atTop, ∀ T : ℝ, (∀ i n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) → |returnRemainder r - returnTruncation r T| ≤ Real.exp (-T - returnScale r / 0xc8) := by have hlarge := returnScale_tendsto.eventually (eventually_ge_atTop (0xc8 * Real.log 0x1500)) filter_upwards [returnTruncation_error_uniform, hlarge] with r hr hL T hgap calc _ ≤ 0x1500 * Real.exp (-T - returnScale r / 0x64) := hr T hgap _ = Real.exp (Real.log 0x1500 - T - returnScale r / 0x64) := by rw [show Real.log 0x1500 - T - returnScale r / 0x64 = Real.log 0x1500 + (-T - returnScale r / 0x64) by ring, Real.exp_add, Real.exp_log (by norm_num : (0 : ℝ) < 0x1500)] _ ≤ Real.exp (-T - returnScale r / 0xc8) := Real.exp_le_exp.mpr (by linarith) def returnDensity_truncation_exponential : ∀ᶠ r in atTop, ∀ T : ℝ, (∀ i n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) → |((4 : ℝ) ^ (rotationReturns r).q - 1) * ((3 : ℝ) ^ (rotationReturns r).p.toNat - 1) * (0xb4 * explicitDensity - 32) - returnIntegerPrefix r - returnTruncation r T| ≤ Real.exp (-T - returnScale r / 0xc8) := by filter_upwards [returnDifferenceIdentity, returnTruncation_error_exponential] with r hid herr T hgap rw [hid] exact herr T hgap end Bounty end SubmissionComponent_ReturnTruncationError /- Component ReturnPrefixBounds; SHA256 3009413143d21752f9f6509ca5d40d5024ec8181c9f882356070ae158fa32441 -/ section SubmissionComponent_ReturnPrefixBounds /- Archimedean size bounds for the integer coordinates in the return approximation. -/ open Filter open scoped Topology namespace Bounty def integerPrefix_abs_le {a : ℕ → ℤ} {b : ℕ} {M : ℝ} (hb : 1 < b) (ha : ∀ n, |(a n : ℝ)| ≤ M) (q : ℕ) : |(integerPrefix a b q : ℝ)| ≤ 2 * M * (b : ℝ) ^ q := by have hb0 : 0 < (b : ℝ) := by exact_mod_cast (by omega : 0 < b) have hb1 : 1 < (b : ℝ) := by exact_mod_cast hb have hb2 : 2 ≤ (b : ℝ) := by exact_mod_cast (by omega : 2 ≤ b) have hM : 0 ≤ M := (abs_nonneg _).trans (ha 0) have hinv : 1 / (b : ℝ) ≤ (1 : ℝ) / 2 := by apply (div_le_iff₀ hb0).mpr linarith have hden : 0 < 1 - 1 / (b : ℝ) := by linarith have hgeo : (∑ n ∈ Finset.range q, (1 / (b : ℝ)) ^ n) ≤ 2 := by have hh := sparse_geometric_finset_bound (by positivity : 0 ≤ 1 / (b : ℝ)) (by simpa only [one_div] using inv_lt_one_of_one_lt₀ hb1) (by omega : 0 < (1 : ℕ)) (Finset.range q) 0 (fun n _ => Nat.zero_le n) (fun m _ n _ hmn => by omega) simp only [pow_zero, pow_one] at hh apply hh.trans apply (div_le_iff₀ hden).mpr linarith have hsum : |∑ n ∈ Finset.range q, (a n : ℝ) / (b : ℝ) ^ n| ≤ 2 * M := by calc _ ≤ ∑ n ∈ Finset.range q, |(a n : ℝ) / (b : ℝ) ^ n| := Finset.abs_sum_le_sum_abs _ _ _ ≤ ∑ n ∈ Finset.range q, M * (1 / (b : ℝ)) ^ n := by apply Finset.sum_le_sum intro n _ calc |(a n : ℝ) / (b : ℝ) ^ n| = |(a n : ℝ)| / (b : ℝ) ^ n := by rw [abs_div, abs_of_pos (pow_pos hb0 n)] _ ≤ M / (b : ℝ) ^ n := div_le_div_of_nonneg_right (ha n) (pow_pos hb0 n).le _ = M * (1 / (b : ℝ)) ^ n := by rw [one_div, inv_pow, div_eq_mul_inv] _ = M * ∑ n ∈ Finset.range q, (1 / (b : ℝ)) ^ n := (Finset.mul_sum _ _ _).symm _ ≤ M * 2 := mul_le_mul_of_nonneg_left hgeo hM _ = 2 * M := mul_comm _ _ rw [integerPrefix_cast a (by omega) q, abs_mul, abs_of_pos (pow_pos hb0 q)] calc _ ≤ (b : ℝ) ^ q * (2 * M) := mul_le_mul_of_nonneg_left hsum (pow_pos hb0 q).le _ = _ := by ring def returnPrefix_base_power_bounds (r : ℕ) : (4 : ℝ) ^ (rotationReturns r).q ≤ Real.exp (returnScale r) ∧ (3 : ℝ) ^ (rotationReturns r).p.toNat ≤ Real.exp (returnScale r) := by have hp : 0 ≤ (rotationReturns r).p := by have hb := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hq := (rotationReturns r).q_pos omega have hcast : ((rotationReturns r).p.toNat : ℝ) = (rotationReturns r).p := by exact_mod_cast Int.toNat_of_nonneg hp constructor · have he : Real.exp (((rotationReturns r).q : ℝ) * Real.log 4) = (4 : ℝ) ^ (rotationReturns r).q := by rw [Real.exp_nat_mul, Real.exp_log (by norm_num : (0 : ℝ) < 4)] rw [← he] exact Real.exp_le_exp.mpr (returnScale_bounds r).1 · have he : Real.exp (((rotationReturns r).p.toNat : ℝ) * Real.log 3) = (3 : ℝ) ^ (rotationReturns r).p.toNat := by rw [Real.exp_nat_mul, Real.exp_log (by norm_num : (0 : ℝ) < 3)] rw [← he] apply Real.exp_le_exp.mpr rw [hcast] exact (returnScale_bounds r).2.1 def returnPrefix_power_product_bound (r : ℕ) : (4 : ℝ) ^ (rotationReturns r).q * (3 : ℝ) ^ (rotationReturns r).p.toNat ≤ Real.exp (2 * returnScale r) := by have hh := returnPrefix_base_power_bounds r calc _ ≤ Real.exp (returnScale r) * Real.exp (returnScale r) := mul_le_mul hh.1 hh.2 (by positivity) (Real.exp_pos _).le _ = Real.exp (2 * returnScale r) := by rw [← Real.exp_add]; congr 1; ring def returnIntegerPrefix_abs_le_power_product (r : ℕ) : |(returnIntegerPrefix r : ℝ)| ≤ 0x16e * (4 : ℝ) ^ (rotationReturns r).q * (3 : ℝ) ^ (rotationReturns r).p.toNat := by let A : ℝ := (4 : ℝ) ^ (rotationReturns r).q let B : ℝ := (3 : ℝ) ^ (rotationReturns r).p.toNat let IA : ℝ := (integerPrefix coefficient4 4 (rotationReturns r).q : ℝ) let IB : ℝ := (integerPrefix coefficient3 3 (rotationReturns r).p.toNat : ℝ) have hA1 : 1 ≤ A := one_le_pow₀ (by norm_num : (1 : ℝ) ≤ 4) have hB1 : 1 ≤ B := one_le_pow₀ (by norm_num : (1 : ℝ) ≤ 3) have hIA : |IA| ≤ 0x9c * A := by have hh := integerPrefix_abs_le (by norm_num : 1 < (4 : ℕ)) coefficient4_bound (rotationReturns r).q norm_num at hh exact hh have hIB : |IB| ≤ 0x78 * B := by have hh := integerPrefix_abs_le (by norm_num : 1 < (3 : ℕ)) coefficient3_bound (rotationReturns r).p.toNat norm_num at hh exact hh have hIB90 : |IB - 90| ≤ 0xd2 * B := by have hh : |IB - 90| ≤ |IB| + 90 := by simpa only [sub_eq_add_neg, abs_neg, abs_of_nonneg (by norm_num : (0 : ℝ) ≤ 90)] using abs_add_le IB (-90) linarith have hAm1 : |A - 1| ≤ A := by rw [abs_of_nonneg (by linarith : 0 ≤ A - 1)]; linarith have hBm1 : |B - 1| ≤ B := by rw [abs_of_nonneg (by linarith : 0 ≤ B - 1)]; linarith have he : (returnIntegerPrefix r : ℝ) = (B - 1) * IA + (A - 1) * (IB - 90) := by simp [returnIntegerPrefix, A, B, IA, IB] rw [he] change |(B - 1) * IA + (A - 1) * (IB - 90)| ≤ 0x16e * A * B calc _ ≤ |(B - 1) * IA| + |(A - 1) * (IB - 90)| := abs_add_le _ _ _ ≤ B * (0x9c * A) + A * (0xd2 * B) := by rw [abs_mul, abs_mul] exact add_le_add (mul_le_mul hBm1 hIA (abs_nonneg _) (by linarith)) (mul_le_mul hAm1 hIB90 (abs_nonneg _) (by linarith)) _ = 0x16e * A * B := by ring def returnIntegerPrefix_abs_le_exp (r : ℕ) : |(returnIntegerPrefix r : ℝ)| ≤ 0x16e * Real.exp (2 * returnScale r) := by calc _ ≤ 0x16e * (4 : ℝ) ^ (rotationReturns r).q * (3 : ℝ) ^ (rotationReturns r).p.toNat := returnIntegerPrefix_abs_le_power_product r _ = 0x16e * ((4 : ℝ) ^ (rotationReturns r).q * (3 : ℝ) ^ (rotationReturns r).p.toNat) := by ring _ ≤ 0x16e * Real.exp (2 * returnScale r) := mul_le_mul_of_nonneg_left (returnPrefix_power_product_bound r) (by norm_num) noncomputable def returnClearedIntegerHead (z : ℚ) (r : ℕ) : ℤ := z.num * (((4 : ℤ) ^ (rotationReturns r).q - 1) * ((3 : ℤ) ^ (rotationReturns r).p.toNat - 1)) - (z.den : ℤ) * returnIntegerPrefix r def returnClearedIntegerHead_cast (z : ℚ) (r : ℕ) : (returnClearedIntegerHead z r : ℝ) = (z.den : ℝ) * (((4 : ℝ) ^ (rotationReturns r).q - 1) * ((3 : ℝ) ^ (rotationReturns r).p.toNat - 1) * (z : ℝ) - returnIntegerPrefix r) := by have hden : (z.den : ℝ) ≠ 0 := by exact_mod_cast z.den_nz have hnum : (z.num : ℝ) = (z.den : ℝ) * (z : ℝ) := by rw [Rat.cast_def] field_simp unfold returnClearedIntegerHead push_cast rw [hnum] ring def returnClearedIntegerHead_abs_le_exp (z : ℚ) (r : ℕ) : |(returnClearedIntegerHead z r : ℝ)| ≤ (|(z.num : ℝ)| + 0x16e * (z.den : ℝ)) * Real.exp (2 * returnScale r) := by let A : ℝ := (4 : ℝ) ^ (rotationReturns r).q let B : ℝ := (3 : ℝ) ^ (rotationReturns r).p.toNat have hA1 : 1 ≤ A := one_le_pow₀ (by norm_num : (1 : ℝ) ≤ 4) have hB1 : 1 ≤ B := one_le_pow₀ (by norm_num : (1 : ℝ) ≤ 3) have hAm1 : |A - 1| ≤ A := by rw [abs_of_nonneg (by linarith : 0 ≤ A - 1)]; linarith have hBm1 : |B - 1| ≤ B := by rw [abs_of_nonneg (by linarith : 0 ≤ B - 1)]; linarith have hprod : |(A - 1) * (B - 1)| ≤ Real.exp (2 * returnScale r) := by rw [abs_mul] exact (mul_le_mul hAm1 hBm1 (abs_nonneg _) (by linarith)).trans (returnPrefix_power_product_bound r) have hden : 0 ≤ (z.den : ℝ) := Nat.cast_nonneg _ have he : (returnClearedIntegerHead z r : ℝ) = (z.num : ℝ) * ((A - 1) * (B - 1)) - (z.den : ℝ) * (returnIntegerPrefix r : ℝ) := by simp [returnClearedIntegerHead, A, B] rw [he, sub_eq_add_neg] calc _ ≤ |(z.num : ℝ) * ((A - 1) * (B - 1))| + |-((z.den : ℝ) * (returnIntegerPrefix r : ℝ))| := abs_add_le _ _ _ = |(z.num : ℝ)| * |(A - 1) * (B - 1)| + (z.den : ℝ) * |(returnIntegerPrefix r : ℝ)| := by simp only [abs_neg, abs_mul, abs_of_nonneg hden] _ ≤ |(z.num : ℝ)| * Real.exp (2 * returnScale r) + (z.den : ℝ) * (0x16e * Real.exp (2 * returnScale r)) := add_le_add (mul_le_mul_of_nonneg_left hprod (abs_nonneg _)) (mul_le_mul_of_nonneg_left (returnIntegerPrefix_abs_le_exp r) hden) _ = _ := by ring def returnClearedIntegerHead_eventually_exp (z : ℚ) : ∀ᶠ r in atTop, |(returnClearedIntegerHead z r : ℝ)| ≤ Real.exp (3 * returnScale r) := by let C : ℝ := |(z.num : ℝ)| + 0x16e * (z.den : ℝ) have hden : 0 < (z.den : ℝ) := by exact_mod_cast z.den_pos have hC : 0 < C := by dsimp [C]; positivity have hlarge := returnScale_tendsto.eventually (eventually_ge_atTop (Real.log C)) filter_upwards [hlarge] with r hr calc _ ≤ C * Real.exp (2 * returnScale r) := returnClearedIntegerHead_abs_le_exp z r _ = Real.exp (Real.log C + 2 * returnScale r) := by rw [Real.exp_add, Real.exp_log hC] _ ≤ Real.exp (3 * returnScale r) := Real.exp_le_exp.mpr (by linarith) def returnClearedIntegerHead_of_rational_density (h : ¬Irrational explicitDensity) : ∃ z : ℚ, (z : ℝ) = 0xb4 * explicitDensity - 32 ∧ (∀ r : ℕ, (returnClearedIntegerHead z r : ℝ) = (z.den : ℝ) * (((4 : ℝ) ^ (rotationReturns r).q - 1) * ((3 : ℝ) ^ (rotationReturns r).p.toNat - 1) * (0xb4 * explicitDensity - 32) - returnIntegerPrefix r)) ∧ ∀ᶠ r in atTop, |(returnClearedIntegerHead z r : ℝ)| ≤ Real.exp (3 * returnScale r) := by obtain ⟨a, ha⟩ := exists_rat_of_not_irrational h let z : ℚ := 0xb4 * a - 32 have hz : (z : ℝ) = 0xb4 * explicitDensity - 32 := by dsimp [z] push_cast rw [ha] refine ⟨z, hz, ?_, returnClearedIntegerHead_eventually_exp z⟩ intro r rw [returnClearedIntegerHead_cast, hz] end Bounty end SubmissionComponent_ReturnPrefixBounds /- Component ReturnCoordinateHeight; SHA256 d1c928de757918ab5bc37515261b495ee6767b291ae8936cd9f44b6e380566e1 -/ section SubmissionComponent_ReturnCoordinateHeight /- Common denominators and projective height bounds for return coordinates. -/ open Filter open scoped Topology namespace Bounty noncomputable section def returnHeadUnit (r : ℕ) (j : Fin 4) : ℚ := if j = 0 then (4 : ℚ) ^ (rotationReturns r).q * (3 : ℚ) ^ (rotationReturns r).p.toNat else if j = 1 then (4 : ℚ) ^ (rotationReturns r).q else if j = 2 then (3 : ℚ) ^ (rotationReturns r).p.toNat else 1 def returnHeadFourExponent (r : ℕ) (j : Fin 4) : ℤ := if j < 2 then ((rotationReturns r).q : ℤ) else 0 def returnHeadThreeExponent (r : ℕ) (j : Fin 4) : ℤ := if j = 0 ∨ j = 2 then ((rotationReturns r).p.toNat : ℤ) else 0 def returnHeadUnit_pos (r : ℕ) (j : Fin 4) : 0 < returnHeadUnit r j := by unfold returnHeadUnit split_ifs <;> positivity def returnHeadUnit_ne_zero (r : ℕ) (j : Fin 4) : returnHeadUnit r j ≠ 0 := ne_of_gt (returnHeadUnit_pos r j) def returnHeadUnit_eq_four_three_zpow (r : ℕ) (j : Fin 4) : returnHeadUnit r j = (4 : ℚ) ^ returnHeadFourExponent r j * (3 : ℚ) ^ returnHeadThreeExponent r j := by dsimp only [returnHeadUnit, returnHeadFourExponent, returnHeadThreeExponent] generalize hp : (rotationReturns r).p.toNat = p fin_cases j <;> norm_num [returnHeadUnit, returnHeadFourExponent, returnHeadThreeExponent, Fin.ext_iff, Fin.lt_def] def returnHeadUnit_primeMonomial (r : ℕ) (j : Fin 4) : returnHeadUnit r j = rationalPrimeMonomial (2 * returnHeadFourExponent r j) (returnHeadThreeExponent r j) 0 := by rw [returnHeadUnit_eq_four_three_zpow, rational_four_three_monomial] def returnHeadUnit_den (r : ℕ) (j : Fin 4) : (returnHeadUnit r j).den = 1 := by fin_cases j <;> simp [returnHeadUnit, Fin.ext_iff] have he : (4 : ℚ) ^ (rotationReturns r).q * (3 : ℚ) ^ (rotationReturns r).p.toNat = ((4 ^ (rotationReturns r).q * 3 ^ (rotationReturns r).p.toNat : ℕ) : ℚ) := by push_cast rfl rw [he] exact Rat.den_natCast _ /-- A finite integer tuple has projective height at most any common absolute-value bound at least one. -/ def rational_integer_tuple_height_le {ι : Type*} [Fintype ι] (x : ι → ℤ) {B : ℝ} (hB : 1 ≤ B) (hx : ∀ i, |(x i : ℝ)| ≤ B) : Height.mulHeight (fun i => (x i : ℚ)) ≤ B := by classical let y : Option ι → ℤ := fun j => match j with | none => 1 | some i => x i have hg : Finset.univ.gcd y = 1 := by rw [← Finset.insert_erase (Finset.mem_univ (none : Option ι)), Finset.gcd_insert] simp [y] have hh := Rat.mulHeight_eq_max_abs_of_gcd_eq_one hg rw [Finite.map_iSup_of_monotone _ Int.cast_mono] at hh simp only [Int.cast_abs] at hh have hcomp : Height.mulHeight (fun i => (x i : ℚ)) ≤ Height.mulHeight (fun j : Option ι => (y j : ℚ)) := by simpa only [Function.comp_def, y] using Height.mulHeight_comp_le (some : ι → Option ι) (fun j : Option ι => (y j : ℚ)) apply hcomp.trans rw [show Height.mulHeight (fun j : Option ι => (y j : ℚ)) = ⨆ j : Option ι, |(y j : ℝ)| by exact hh] apply ciSup_le intro j cases j with | none => simpa [y] using hB | some i => simpa [y] using hx i def returnDenominatorExponent (r k : ℕ) (b : ℝ) : ℕ := ⌊((k : ℝ) + 1) * returnScale r / Real.log b⌋₊ def returnCommonDenominator (r k : ℕ) : ℕ := 4 ^ returnDenominatorExponent r k 4 * 3 ^ returnDenominatorExponent r k 3 def returnCommonDenominator_pos (r k : ℕ) : 0 < returnCommonDenominator r k := by unfold returnCommonDenominator positivity def returnDenominatorExponent_bound (r k : ℕ) {b : ℝ} (hb : 1 < b) : (returnDenominatorExponent r k b : ℝ) * Real.log b ≤ ((k : ℝ) + 1) * returnScale r := by have hl : 0 < Real.log b := Real.log_pos hb have hL := returnScale_pos r apply (le_div_iff₀ hl).mp exact Nat.floor_le (by positivity) def returnCommonDenominator_bound (r k : ℕ) : (returnCommonDenominator r k : ℝ) ≤ Real.exp ((2 * (k : ℝ) + 2) * returnScale r) := by have h4 := returnDenominatorExponent_bound r k (by norm_num : (1 : ℝ) < 4) have h3 := returnDenominatorExponent_bound r k (by norm_num : (1 : ℝ) < 3) have he4 : Real.exp ((returnDenominatorExponent r k 4 : ℝ) * Real.log 4) = (4 : ℝ) ^ returnDenominatorExponent r k 4 := by rw [Real.exp_nat_mul, Real.exp_log (by norm_num : (0 : ℝ) < 4)] have he3 : Real.exp ((returnDenominatorExponent r k 3 : ℝ) * Real.log 3) = (3 : ℝ) ^ returnDenominatorExponent r k 3 := by rw [Real.exp_nat_mul, Real.exp_log (by norm_num : (0 : ℝ) < 3)] simp only [returnCommonDenominator, Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat] rw [← he4, ← he3, ← Real.exp_add] apply Real.exp_le_exp.mpr nlinarith def rational_nat_div_den_dvd (a b : ℕ) : ((a : ℚ) / b).den ∣ b := by have hh : ((((a : ℚ) / b).den : ℤ)) ∣ (b : ℤ) := by simpa only [Rat.divInt_eq_div, Int.cast_natCast] using Rat.den_dvd (a : ℤ) (b : ℤ) exact Int.natCast_dvd_natCast.mp hh def returnRationalUnit_den_dvd_base_power (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : (returnRationalUnit r i n).den ∣ (if i.1 < 2 then 4 ^ n else 3 ^ n) := by rcases i with ⟨j, l⟩ fin_cases j · simpa [returnRationalUnit, Fin.ext_iff, Fin.lt_def] using rational_nat_div_den_dvd (3 ^ (rotationReturns r).p.toNat) (4 ^ n) · simpa [returnRationalUnit, Fin.ext_iff, Fin.lt_def] using rational_nat_div_den_dvd 1 (4 ^ n) · simpa [returnRationalUnit, Fin.ext_iff, Fin.lt_def] using rational_nat_div_den_dvd (4 ^ (rotationReturns r).q) (3 ^ n) · simpa [returnRationalUnit, Fin.ext_iff, Fin.lt_def] using rational_nat_div_den_dvd 1 (3 ^ n) def returnRationalUnit_den_dvd_common (r k : ℕ) (T : ℝ) (i : ReturnEventFamily) {n : ℕ} (hT : T ≤ (k : ℝ) * returnScale r) (hn : n ∈ returnTruncationIndices r T i) : (returnRationalUnit r i n).den ∣ returnCommonDenominator r k := by have he := returnTruncationIndices_exponent_le r k T i hT hn have hd := returnRationalUnit_den_dvd_base_power r i n by_cases hi : i.1 < 2 · simp only [returnEventStep, if_pos hi] at he simp only [if_pos hi] at hd have hnM : n ≤ returnDenominatorExponent r k 4 := Nat.le_floor ((le_div_iff₀ (Real.log_pos (by norm_num : (1 : ℝ) < 4))).mpr he) exact hd.trans ((pow_dvd_pow 4 hnM).trans (dvd_mul_right _ _)) · simp only [returnEventStep, if_neg hi] at he simp only [if_neg hi] at hd have hnM : n ≤ returnDenominatorExponent r k 3 := Nat.le_floor ((le_div_iff₀ (Real.log_pos (by norm_num : (1 : ℝ) < 3))).mpr he) exact hd.trans ((pow_dvd_pow 3 hnM).trans (dvd_mul_left _ _)) /-- Any enumeration of the integer prefix, four heads, and actual retained units is permitted. -/ def IsReturnCoordinate (r : ℕ) (T : ℝ) (x : ℚ) : Prop := x = (returnIntegerPrefix r : ℚ) ∨ (∃ j : Fin 4, x = returnHeadUnit r j) ∨ ∃ i n, n ∈ returnTruncationIndices r T i ∧ x = returnRationalUnit r i n def returnCoordinate_den_dvd_common (r k : ℕ) (T : ℝ) {x : ℚ} (hT : T ≤ (k : ℝ) * returnScale r) (hx : IsReturnCoordinate r T x) : x.den ∣ returnCommonDenominator r k := by rcases hx with rfl | ⟨j, rfl⟩ | ⟨i, n, hn, rfl⟩ · simpa only [Rat.den_intCast] using one_dvd (returnCommonDenominator r k) · rw [returnHeadUnit_den] exact one_dvd _ · exact returnRationalUnit_den_dvd_common r k T i hT hn def returnHeadUnit_abs_le_exp (r : ℕ) (j : Fin 4) : |(returnHeadUnit r j : ℝ)| ≤ Real.exp (2 * returnScale r) := by have hpos : 0 < (returnHeadUnit r j : ℝ) := by exact_mod_cast returnHeadUnit_pos r j rw [abs_of_pos hpos] have hh := returnPrefix_base_power_bounds r have hscale : Real.exp (returnScale r) ≤ Real.exp (2 * returnScale r) := Real.exp_le_exp.mpr (by linarith [returnScale_pos r]) have hone : 1 ≤ Real.exp (2 * returnScale r) := Real.one_le_exp_iff.mpr (by linarith [returnScale_pos r]) fin_cases j · simpa [returnHeadUnit, Fin.ext_iff] using returnPrefix_power_product_bound r · simpa [returnHeadUnit, Fin.ext_iff] using hh.1.trans hscale · simpa [returnHeadUnit, Fin.ext_iff] using hh.2.trans hscale · simpa [returnHeadUnit, Fin.ext_iff] using hone def returnCoordinate_abs_le_exp (r : ℕ) (T : ℝ) {x : ℚ} (hx : IsReturnCoordinate r T x) : |(x : ℝ)| ≤ 0x16e * Real.exp (2 * returnScale r) := by rcases hx with rfl | ⟨j, rfl⟩ | ⟨i, n, hn, rfl⟩ · simpa using returnIntegerPrefix_abs_le_exp r · have hh := returnHeadUnit_abs_le_exp r j nlinarith [Real.exp_pos (2 * returnScale r)] · rw [returnRationalUnit_cast, abs_of_pos (Real.exp_pos _)] have hv := ((mem_returnTruncationIndices r T i n).mp hn).1 have hh : Real.exp (-returnEventTime r i n) ≤ Real.exp (2 * returnScale r) := by apply Real.exp_le_exp.mpr linarith [returnEventTime_gt_neg_scale r i hv, returnScale_pos r] nlinarith [Real.exp_pos (2 * returnScale r)] def rational_clear_of_den_dvd {x : ℚ} {D : ℕ} (hd : x.den ∣ D) : ∃ a : ℤ, (D : ℚ) * x = a := by obtain ⟨m, hm⟩ := hd refine ⟨(m : ℤ) * x.num, ?_⟩ rw [hm, Nat.cast_mul, mul_right_comm, Rat.den_mul_eq_num] push_cast ring def rational_tuple_height_le_of_den_dvd {ι : Type*} [Fintype ι] (x : ι → ℚ) {D : ℕ} (hD : 0 < D) (hd : ∀ i, (x i).den ∣ D) {B : ℝ} (hB : 1 ≤ B) (hx : ∀ i, |(D : ℝ) * (x i : ℝ)| ≤ B) : Height.mulHeight x ≤ B := by classical choose y hy using fun i => rational_clear_of_den_dvd (hd i) have hh : Height.mulHeight (fun i => (y i : ℚ)) ≤ B := by apply rational_integer_tuple_height_le y hB intro i have he : (y i : ℝ) = (D : ℝ) * (x i : ℝ) := by exact_mod_cast (hy i).symm rw [he] exact hx i have hfun : (fun i => (y i : ℚ)) = (D : ℚ) • x := by funext i exact (hy i).symm rw [hfun, Height.mulHeight_smul_eq_mulHeight x (by exact_mod_cast hD.ne')] at hh exact hh def returnCoordinate_cleared_abs_le (r k : ℕ) (T : ℝ) {x : ℚ} (hx : IsReturnCoordinate r T x) : |(returnCommonDenominator r k : ℝ) * (x : ℝ)| ≤ 0x16e * Real.exp ((2 * (k : ℝ) + 4) * returnScale r) := by rw [abs_mul, abs_of_nonneg (Nat.cast_nonneg _)] calc _ ≤ Real.exp ((2 * (k : ℝ) + 2) * returnScale r) * (0x16e * Real.exp (2 * returnScale r)) := mul_le_mul (returnCommonDenominator_bound r k) (returnCoordinate_abs_le_exp r T hx) (abs_nonneg _) (Real.exp_pos _).le _ = 0x16e * Real.exp ((2 * (k : ℝ) + 4) * returnScale r) := by rw [mul_left_comm, ← Real.exp_add] congr 1 ring /-- The full tuple may use any finite actual-label index type; no padding or repeated units is needed. -/ def returnCoordinateHeight_bound {ι : Type*} [Fintype ι] (r k : ℕ) (T : ℝ) (x : ι → ℚ) (hT : T ≤ (k : ℝ) * returnScale r) (hx : ∀ i, IsReturnCoordinate r T (x i)) : Height.mulHeight x ≤ 0x16e * Real.exp ((2 * (k : ℝ) + 4) * returnScale r) := by have hL := returnScale_pos r have hone : 1 ≤ Real.exp ((2 * (k : ℝ) + 4) * returnScale r) := Real.one_le_exp_iff.mpr (by positivity) apply rational_tuple_height_le_of_den_dvd x (returnCommonDenominator_pos r k) (fun i => returnCoordinate_den_dvd_common r k T hT (hx i)) (by linarith) exact fun i => returnCoordinate_cleared_abs_le r k T (hx i) def returnCoordinateHeight_eventually : ∀ᶠ r in atTop, ∀ (k : ℕ) (T : ℝ) (ι : Type) [Fintype ι] (x : ι → ℚ), T ≤ (k : ℝ) * returnScale r → (∀ i, IsReturnCoordinate r T (x i)) → Height.mulHeight x ≤ Real.exp ((2 * (k : ℝ) + 5) * returnScale r) := by have hlarge := returnScale_tendsto.eventually (eventually_ge_atTop (Real.log 0x16e)) filter_upwards [hlarge] with r hr k T ι inst x hT hx calc _ ≤ 0x16e * Real.exp ((2 * (k : ℝ) + 4) * returnScale r) := returnCoordinateHeight_bound r k T x hT hx _ = Real.exp (Real.log 0x16e + (2 * (k : ℝ) + 4) * returnScale r) := by rw [Real.exp_add, Real.exp_log (by norm_num : (0 : ℝ) < 0x16e)] _ ≤ Real.exp ((2 * (k : ℝ) + 5) * returnScale r) := Real.exp_le_exp.mpr (by nlinarith) def returnCoordinateHeight_eventually_eleven : ∀ᶠ r in atTop, ∀ (T : ℝ) (ι : Type) [Fintype ι] (x : ι → ℚ), T ≤ 11 * returnScale r → (∀ i, IsReturnCoordinate r T (x i)) → Height.mulHeight x ≤ Real.exp (27 * returnScale r) := by filter_upwards [returnCoordinateHeight_eventually] with r hr T ι inst x hT hx have hh := hr 11 T ι x hT hx norm_num at hh exact hh end end Bounty end SubmissionComponent_ReturnCoordinateHeight /- Component ReturnFiniteApproximation; SHA256 7ba0967cb028c8f6e0c6f6a53189afe3d3b8d339157291c83a5b8b0bdf8049ea -/ section SubmissionComponent_ReturnFiniteApproximation /- Exact finite rational linear forms underlying the two return approximations. -/ open Filter open scoped Topology namespace Bounty noncomputable section abbrev ReturnTailLabel (r : ℕ) (T : ℝ) := Σ i : ReturnEventFamily, {n : ℕ // n ∈ returnTruncationIndices r T i} abbrev ReturnApproximationLabel (r : ℕ) (T : ℝ) := Fin 4 ⊕ ReturnTailLabel r T def returnApproximationUnit (r : ℕ) (T : ℝ) : ReturnApproximationLabel r T → ℚ := Sum.elim (returnHeadUnit r) (fun a => returnRationalUnit r a.1 a.2.1) def returnApproximationCoefficient (z : ℚ) (r : ℕ) (T : ℝ) : ReturnApproximationLabel r T → ℚ := Sum.elim (fun j => if j = 0 ∨ j = 3 then z else -z) (fun a => -(returnEventCoefficient a.1 : ℚ)) def returnCoefficientPalette (z : ℚ) : Finset ℚ := {z, -z} ∪ Finset.univ.image (fun i : ReturnEventFamily => -(returnEventCoefficient i : ℚ)) def returnApproximationUnit_pos (r : ℕ) (T : ℝ) (i : ReturnApproximationLabel r T) : 0 < returnApproximationUnit r T i := by cases i with | inl j => exact returnHeadUnit_pos r j | inr a => exact returnRationalUnit_pos r a.1 a.2.1 def returnApproximationCoefficient_mem (z : ℚ) (r : ℕ) (T : ℝ) (i : ReturnApproximationLabel r T) : returnApproximationCoefficient z r T i ∈ returnCoefficientPalette z := by classical cases i with | inl j => change (if j = 0 ∨ j = 3 then z else -z) ∈ _ split_ifs <;> simp [returnCoefficientPalette] | inr a => apply Finset.mem_union_right exact Finset.mem_image.mpr ⟨a.1, Finset.mem_univ _, rfl⟩ def returnApproximationLabel_card (r k : ℕ) (T : ℝ) (hT : T ≤ (k : ℝ) * returnScale r) : Fintype.card (ReturnApproximationLabel r T) ≤ 4 + 16 * (2 * k + 3) := by classical have hh := returnTruncationIndices_total_card r k T hT simpa [ReturnApproximationLabel, ReturnTailLabel, Fintype.card_sigma] using Nat.add_le_add_left hh 4 def returnHeadUnit_one_le (r : ℕ) (j : Fin 4) : (1 : ℚ) ≤ returnHeadUnit r j := by have h4 : (1 : ℚ) ≤ 4 ^ (rotationReturns r).q := one_le_pow₀ (by norm_num) have h3 : (1 : ℚ) ≤ 3 ^ (rotationReturns r).p.toNat := one_le_pow₀ (by norm_num) unfold returnHeadUnit split_ifs · exact one_le_mul_of_one_le_of_one_le h4 h3 · exact h4 · exact h3 · rfl def returnApproximationUnit_lower (r : ℕ) (T : ℝ) (hT : 0 ≤ T) (i : ReturnApproximationLabel r T) : Real.exp (-T) ≤ (returnApproximationUnit r T i : ℝ) := by cases i with | inl j => have hh : (1 : ℝ) ≤ (returnHeadUnit r j : ℝ) := by exact_mod_cast returnHeadUnit_one_le r j have he : Real.exp (-T) ≤ 1 := by rw [← Real.exp_zero] exact Real.exp_le_exp.mpr (by linarith) exact he.trans hh | inr a => have ht := ((mem_returnTruncationIndices r T a.1 a.2.1).mp a.2.2).2 change Real.exp (-T) ≤ (returnRationalUnit r a.1 a.2.1 : ℝ) rw [returnRationalUnit_cast] exact Real.exp_le_exp.mpr (by linarith) def returnApproximation_linear_form (z : ℚ) (r : ℕ) (T : ℝ) : (∑ i : ReturnApproximationLabel r T, returnApproximationCoefficient z r T i * returnApproximationUnit r T i) - (returnIntegerPrefix r : ℚ) = ((4 : ℚ) ^ (rotationReturns r).q - 1) * ((3 : ℚ) ^ (rotationReturns r).p.toNat - 1) * z - returnIntegerPrefix r - returnRationalTruncation r T := by classical have htail : (∑ a : ReturnTailLabel r T, (returnEventCoefficient a.1 : ℚ) * returnRationalUnit r a.1 a.2.1) = returnRationalTruncation r T := by simp only [ReturnTailLabel, returnRationalTruncation, Fintype.sum_sigma, Finset.univ_eq_attach] apply Finset.sum_congr rfl intro i _ exact Finset.sum_attach (returnTruncationIndices r T i) (fun n : ℕ => (returnEventCoefficient i : ℚ) * returnRationalUnit r i n) rw [Fintype.sum_sum_type] change (∑ j : Fin 4, (if j = 0 ∨ j = 3 then z else -z) * returnHeadUnit r j) + (∑ a : ReturnTailLabel r T, -(returnEventCoefficient a.1 : ℚ) * returnRationalUnit r a.1 a.2.1) - _ = _ simp_rw [neg_mul] rw [Finset.sum_neg_distrib, htail] simp only [Fin.sum_univ_four] norm_num [returnHeadUnit, Fin.ext_iff] ring def returnApproximation_error (z : ℚ) (hz : (z : ℝ) = 0xb4 * explicitDensity - 32) : ∀ᶠ r in atTop, ∀ T : ℝ, (∀ i n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) → |(((∑ i : ReturnApproximationLabel r T, returnApproximationCoefficient z r T i * returnApproximationUnit r T i) - (returnIntegerPrefix r : ℚ) : ℚ) : ℝ)| ≤ Real.exp (-T - returnScale r / 0xc8) := by filter_upwards [returnDensity_truncation_exponential] with r hr T hgap rw [returnApproximation_linear_form] push_cast rw [hz, returnRationalTruncation_cast] exact hr T hgap end end Bounty end SubmissionComponent_ReturnFiniteApproximation /- Component EventIndexDivergence; SHA256 9afd2b78a6efa14f404f05b116d19adef02dabe3a21c493ab059e1f73b4e3bed -/ section SubmissionComponent_EventIndexDivergence /- Uniform disappearance of bounded indices and separation between distinct jump orbits. -/ open Filter open scoped Topology namespace Bounty def two_forward_visits_distance_lt {α t u δ : ℝ} {i j : ℤ} (hi : 1 - δ ≤ Int.fract ((i : ℝ) * α - t)) (hj : 1 - δ ≤ Int.fract ((j : ℝ) * α - u)) : integerDistance (((j - i : ℤ) : ℝ) * α - (u - t)) < δ := by let x : ℝ := (i : ℝ) * α - t let y : ℝ := (j : ℝ) * α - u have he : (((j - i : ℤ) : ℝ) * α - (u - t)) - ((⌊y⌋ - ⌊x⌋ : ℤ) : ℝ) = Int.fract y - Int.fract x := by change _ = (y - (⌊y⌋ : ℝ)) - (x - (⌊x⌋ : ℝ)) dsimp only [x, y] push_cast ring have hh := integerDistance_le_abs (((j - i : ℤ) : ℝ) * α - (u - t)) (⌊y⌋ - ⌊x⌋) rw [he] at hh have hs : |Int.fract y - Int.fract x| < δ := by have hxu := Int.fract_lt_one x have hyu := Int.fract_lt_one y rw [abs_lt] constructor <;> linarith exact hh.trans_lt hs def distinct_orbit_forward_visits_separate {α t u : ℝ} {δ : ℕ → ℝ} (hδ : Tendsto δ atTop (nhds 0)) (horbit : ∀ h k : ℤ, (h : ℝ) * α - (u - t) ≠ k) (M : ℕ) : ∀ᶠ r in atTop, ∀ i j : ℤ, 1 - δ r ≤ Int.fract ((i : ℝ) * α - t) → 1 - δ r ≤ Int.fract ((j : ℝ) * α - u) → (M : ℤ) < |j - i| := by have hsmall : ∀ᶠ r in atTop, ∀ h ∈ Finset.Icc (-(M : ℤ)) M, δ r < integerDistance ((h : ℝ) * α - (u - t)) := by apply (eventually_all_finset _).mpr intro h _ exact hδ.eventually (gt_mem_nhds (integerDistance_pos (horbit h))) filter_upwards [hsmall] with r hr i j hi hj by_contra hh have habs : |j - i| ≤ (M : ℤ) := le_of_not_gt hh have hmem : j - i ∈ Finset.Icc (-(M : ℤ)) M := by simpa only [Finset.mem_Icc, abs_le] using habs have hlarge := hr (j - i) hmem have hclose := two_forward_visits_distance_lt hi hj linarith def jumpVisit4_distinct_orbits_separate {i j : Fin 4} (hij : i ≠ j) (M : ℕ) : ∀ᶠ r in atTop, ∀ m n : ℤ, jumpVisit4 r i m ≠ 0 → jumpVisit4 r j n ≠ 0 → (M : ℤ) < |n - m| := by have hh := distinct_orbit_forward_visits_separate returnError_tendsto (jumpOrbits4_distinct hij) M filter_upwards [hh] with r hr m n hm hn apply hr m n · by_contra hx simp only [jumpVisit4, forwardJump, if_neg hx, ne_eq, not_true_eq_false] at hm · by_contra hx simp only [jumpVisit4, forwardJump, if_neg hx, ne_eq, not_true_eq_false] at hn def jumpVisit3_distinct_orbits_separate {i j : Fin 4} (hij : i ≠ j) (M : ℕ) : ∀ᶠ r in atTop, ∀ m n : ℤ, jumpVisit3 r i m ≠ 0 → jumpVisit3 r j n ≠ 0 → (M : ℤ) < |n - m| := by have hh := distinct_orbit_visits_separate reciprocal_returnError_tendsto (jumpOrbits3_distinct hij) M filter_upwards [hh] with r hr m n hm hn apply hr m n · by_contra hx simp only [mul_one_div] at hx simp only [jumpVisit3, backwardJump, if_neg hx, ne_eq, not_true_eq_false] at hm · by_contra hx simp only [mul_one_div] at hx simp only [jumpVisit3, backwardJump, if_neg hx, ne_eq, not_true_eq_false] at hn def returnEventVisit_fixed_disappears (i : ReturnEventFamily) (n : ℕ) : ∀ᶠ r in atTop, ¬ returnEventVisit r i n := by by_cases hn : n = 0 · subst n exact Eventually.of_forall (fun _ h => (Nat.lt_irrefl 0) h.1) have hnZ : (n : ℤ) ≠ 0 := by exact_mod_cast hn by_cases hi : i.1 < 2 · have hh := jumpVisit4_fixed_eventually_zero (i := i.2) (n := n) (Or.inr hnZ) filter_upwards [hh] with r hr hv have hv' : jumpVisit4 r i.2 n ≠ 0 := by simpa only [if_pos hi] using hv.2 exact hv' hr · have hh := jumpVisit3_fixed_eventually_zero (i := i.2) (n := n) (Or.inr hnZ) filter_upwards [hh] with r hr hv have hv' : jumpVisit3 r i.2 n ≠ 0 := by simpa only [if_neg hi] using hv.2 exact hv' hr def returnEventVisit_indices_diverge (M : ℕ) : ∀ᶠ r in atTop, ∀ i n, returnEventVisit r i n → M < n := by have hh : ∀ᶠ r in atTop, ∀ i ∈ (Finset.univ : Finset ReturnEventFamily), ∀ n ∈ Finset.range (M + 1), ¬ returnEventVisit r i n := by apply (eventually_all_finset _).mpr intro i _ apply (eventually_all_finset _).mpr intro n _ exact returnEventVisit_fixed_disappears i n filter_upwards [hh] with r hr i n hv by_contra hn exact hr i (Finset.mem_univ i) n (Finset.mem_range.mpr (by omega)) hv end Bounty end SubmissionComponent_EventIndexDivergence /- Component ReturnVisitCoverage; SHA256 193c806ef7b5f7bfc91486c7022b3cc923da025b28eecc7c7731cf9ee63d7e1a -/ section SubmissionComponent_ReturnVisitCoverage /- Positive jump visits cover bounded index blocks and logarithmic intervals. -/ open Filter open scoped Topology namespace Bounty def forwardJump_eq_one_of_shifted_fract {δ t x : ℝ} (hδ : 0 ≤ δ) (h : Int.fract (x - (t - δ)) < δ) : forwardJump δ t x = 1 := by classical have hf : 1 - δ ≤ Int.fract (x - t) := by by_contra hh have hu : Int.fract (x - t) + δ < 1 := by linarith have he : x - (t - δ) = (Int.fract (x - t) + δ) + (⌊x - t⌋ : ℝ) := by rw [Int.fract] ring have hfract : Int.fract (x - (t - δ)) = Int.fract (x - t) + δ := by rw [he, Int.fract_add_intCast] exact Int.fract_eq_self.mpr ⟨by linarith [Int.fract_nonneg (x - t)], hu⟩ rw [hfract] at h linarith [Int.fract_nonneg (x - t)] exact if_pos hf def jumpVisit4_covered_block (r : ℕ) (i : Fin 4) (N : ℕ) : ∃ n : ℕ, N ≤ n ∧ n < N + (rotationReturns r).q + (rotationReturns r).Q ∧ jumpVisit4 r i n = 1 := by obtain ⟨n, hlo, hhi, hv⟩ := return_pair_arc_covered_block (rotationReturns r).q_pos (rotationReturns r).Q_pos (rotationReturns r).lower_pos (rotationReturns r).upper_pos (rotationReturns r).upper_lt_lower.le (jumpCoordinate4 i - returnError r) N refine ⟨n, hlo, hhi, ?_⟩ simpa only [jumpVisit4, Int.cast_natCast] using forwardJump_eq_one_of_shifted_fract (returnError_pos r).le hv def returnVisitBlock_log_lt (r : ℕ) : (((rotationReturns r).q + (rotationReturns r).Q : ℕ) : ℝ) * Real.log 4 < 2 * returnScale r := by have hh := (rotationReturns r).log_bounds rw [Nat.cast_add, add_mul] unfold returnScale linarith [hh.2.1, hh.2.2.1] def jumpVisit4_log_covered (r : ℕ) (i : Fin 4) (T : ℝ) (hT : 2 * returnScale r < T) : ∃ n : ℕ, 0 < n ∧ T - 2 * returnScale r < (n : ℝ) * Real.log 4 ∧ (n : ℝ) * Real.log 4 < T ∧ jumpVisit4 r i n = 1 := by let K : ℕ := (rotationReturns r).q + (rotationReturns r).Q let G : ℝ := (K : ℝ) * Real.log 4 have hlog : 0 < Real.log 4 := Real.log_pos (by norm_num) have hG : G < 2 * returnScale r := returnVisitBlock_log_lt r let a : ℝ := (T - G) / Real.log 4 have ha : 0 < a := div_pos (by linarith) hlog let N : ℕ := ⌈a⌉₊ obtain ⟨n, hnlo, hnhi, hv⟩ := jumpVisit4_covered_block r i N have hNpos : 0 < N := Nat.ceil_pos.mpr ha have hNa : a ≤ (N : ℝ) := Nat.le_ceil a have hNa' : (N : ℝ) < a + 1 := Nat.ceil_lt_add_one ha.le have hnr : (N : ℝ) ≤ n := by exact_mod_cast hnlo have hnK : (n : ℝ) + 1 ≤ (N : ℝ) + K := by have hh : n + 1 ≤ N + K := by dsimp only [K]; omega exact_mod_cast hh have hcross : a * Real.log 4 = T - G := by dsimp only [a] exact div_mul_cancel₀ _ (ne_of_gt hlog) have hlo := mul_le_mul_of_nonneg_right (hNa.trans hnr) hlog.le have hhi := mul_lt_mul_of_pos_right (by linarith : (n : ℝ) < a + K) hlog refine ⟨n, by omega, ?_, ?_, hv⟩ · rw [hcross] at hlo linarith · rw [add_mul, hcross] at hhi change (n : ℝ) * Real.log 4 < T - G + G at hhi linarith def jumpVisit4_all_indices_separate (M : ℕ) : ∀ᶠ r in atTop, ∀ (i j : Fin 4) (m n : ℕ), jumpVisit4 r i m ≠ 0 → jumpVisit4 r j n ≠ 0 → (i ≠ j ∨ m ≠ n) → (M : ℤ) < |(n : ℤ) - m| := by have horbits : ∀ᶠ r in atTop, ∀ i ∈ (Finset.univ : Finset (Fin 4)), ∀ j ∈ (Finset.univ : Finset (Fin 4)), i ≠ j → ∀ m n : ℤ, jumpVisit4 r i m ≠ 0 → jumpVisit4 r j n ≠ 0 → (M : ℤ) < |n - m| := by apply (eventually_all_finset _).mpr intro i _ apply (eventually_all_finset _).mpr intro j _ by_cases hij : i = j · exact Eventually.of_forall (fun _ h => False.elim (h hij)) · exact (jumpVisit4_distinct_orbits_separate hij M).mono (fun _ h _ => h) have hQ := rotationReturns_denominators_tendsto.2.eventually (eventually_ge_atTop (M + 1)) filter_upwards [horbits, hQ] with r hr hQr i j m n hm hn hne by_cases hij : i = j · subst j have hmn : m ≠ n := hne.resolve_left (by simp) rcases lt_or_gt_of_ne hmn with hlt | hgt · have hh := jumpVisit4_separated r i hlt hm hn rw [abs_of_nonneg (by omega : (0 : ℤ) ≤ (n : ℤ) - m)] omega · have hh := jumpVisit4_separated r i hgt hn hm rw [abs_of_nonpos (by omega : (n : ℤ) - m ≤ 0)] omega · exact hr i (Finset.mem_univ i) j (Finset.mem_univ j) hij m n hm hn def returnEventTime_nonvanishing_cutoffs (r : ℕ) : ∃ T₁ T₂ : ℝ, 4 * returnScale r < T₁ ∧ T₁ < 5 * returnScale r ∧ 10 * returnScale r < T₂ ∧ T₂ < 11 * returnScale r ∧ (∀ i n, returnEventVisit r i n → returnEventTime r i n < T₁ ∨ T₁ + returnScale r / 0x64 < returnEventTime r i n) ∧ (∀ i n, returnEventVisit r i n → returnEventTime r i n < T₂ ∨ T₂ + returnScale r / 0x64 < returnEventTime r i n) := by obtain ⟨T₁, hlo₁, hhi₁, hgap₁⟩ := returnEventTime_gap r (4 * returnScale r) obtain ⟨T₂, hlo₂, hhi₂, hgap₂⟩ := returnEventTime_gap r (10 * returnScale r) have hL := returnScale_pos r exact ⟨T₁, T₂, hlo₁, by linarith, hlo₂, by linarith, hgap₁, hgap₂⟩ end Bounty end SubmissionComponent_ReturnVisitCoverage /- Component ReturnApproximationConditions; SHA256 27ea1e303b3ca0214e6a4677d74e4f6e76603b0f2e87547155caf5fc98d70db2 -/ section SubmissionComponent_ReturnApproximationConditions /- Packaged analytic, size, and coefficient conditions for both return approximations. -/ open Filter open scoped Topology namespace Bounty noncomputable section /-- `none` is the integral prefix, while `some i` is the corresponding positive unit. -/ def returnApproximationVector (r : ℕ) (T : ℝ) : Option (ReturnApproximationLabel r T) → ℚ := fun i => match i with | none => (returnIntegerPrefix r : ℚ) | some j => returnApproximationUnit r T j def returnApproximationError (z : ℚ) (r : ℕ) (T : ℝ) : ℝ := (((∑ i : ReturnApproximationLabel r T, returnApproximationCoefficient z r T i * returnApproximationUnit r T i) - (returnIntegerPrefix r : ℚ) : ℚ) : ℝ) def returnApproximationVector_coordinate (r : ℕ) (T : ℝ) (i : Option (ReturnApproximationLabel r T)) : IsReturnCoordinate r T (returnApproximationVector r T i) := by cases i with | none => exact Or.inl rfl | some j => cases j with | inl a => exact Or.inr (Or.inl ⟨a, rfl⟩) | inr a => exact Or.inr (Or.inr ⟨a.1, a.2.1, a.2.2, rfl⟩) def returnApproximationLabel_card_lower (r : ℕ) (T : ℝ) : 4 ≤ Fintype.card (ReturnApproximationLabel r T) := by classical simp [ReturnApproximationLabel] def returnApproximationLabel_card_eleven (r : ℕ) (T : ℝ) (hT : T ≤ 11 * returnScale r) : Fintype.card (ReturnApproximationLabel r T) ≤ 0x194 := by simpa using returnApproximationLabel_card r 11 T hT def returnApproximationVector_height : ∀ᶠ r in atTop, ∀ T : ℝ, T ≤ 11 * returnScale r → Height.mulHeight (returnApproximationVector r T) ≤ Real.exp (27 * returnScale r) := by filter_upwards [returnCoordinateHeight_eventually_eleven] with r hr T hT exact hr T (Option (ReturnApproximationLabel r T)) (returnApproximationVector r T) hT (returnApproximationVector_coordinate r T) /-- Conditions for a bounded finite unit sum to approximate the shared integral prefix. -/ def ReturnApproximationConditions (z : ℚ) (r : ℕ) (T : ℝ) : Prop := Fintype.card (ReturnApproximationLabel r T) ≤ 0x194 ∧ (∀ i : ReturnApproximationLabel r T, returnApproximationCoefficient z r T i ∈ returnCoefficientPalette z) ∧ (∀ i : ReturnApproximationLabel r T, 0 < returnApproximationUnit r T i) ∧ (∀ i : ReturnApproximationLabel r T, Real.exp (-T) ≤ (returnApproximationUnit r T i : ℝ)) ∧ Height.mulHeight (returnApproximationVector r T) ≤ Real.exp (27 * returnScale r) ∧ |returnApproximationError z r T| ≤ Real.exp (-T - returnScale r / 0xc8) def returnApproximation_conditions (z : ℚ) (hz : (z : ℝ) = 0xb4 * explicitDensity - 32) : ∀ᶠ r in atTop, ∀ T : ℝ, 0 ≤ T → T ≤ 11 * returnScale r → (∀ i n, returnEventVisit r i n → returnEventTime r i n < T ∨ T + returnScale r / 0x64 < returnEventTime r i n) → ReturnApproximationConditions z r T := by filter_upwards [returnApproximationVector_height, returnApproximation_error z hz] with r hheight herror T hT0 hT hgap refine ⟨returnApproximationLabel_card_eleven r T hT, returnApproximationCoefficient_mem z r T, returnApproximationUnit_pos r T, returnApproximationUnit_lower r T hT0, hheight T hT, ?_⟩ exact herror T hgap /-- The two cutoffs have a gap of more than five scales and both satisfy all approximation bounds. -/ def returnApproximation_two_cutoffs (z : ℚ) (hz : (z : ℝ) = 0xb4 * explicitDensity - 32) : ∀ᶠ r in atTop, ∃ T₁ T₂ : ℝ, 4 * returnScale r < T₁ ∧ T₁ < 5 * returnScale r ∧ 10 * returnScale r < T₂ ∧ T₂ < 11 * returnScale r ∧ 5 * returnScale r < T₂ - T₁ ∧ ReturnApproximationConditions z r T₁ ∧ ReturnApproximationConditions z r T₂ ∧ (∀ i n, returnEventVisit r i n → returnEventTime r i n < T₁ ∨ T₁ + returnScale r / 0x64 < returnEventTime r i n) ∧ (∀ i n, returnEventVisit r i n → returnEventTime r i n < T₂ ∨ T₂ + returnScale r / 0x64 < returnEventTime r i n) := by filter_upwards [returnApproximation_conditions z hz] with r hr obtain ⟨T₁, T₂, hlo₁, hhi₁, hlo₂, hhi₂, hgap₁, hgap₂⟩ := returnEventTime_nonvanishing_cutoffs r have hL := returnScale_pos r refine ⟨T₁, T₂, hlo₁, hhi₁, hlo₂, hhi₂, ?_, ?_, ?_, hgap₁, hgap₂⟩ · linarith · exact hr T₁ (by linarith) (by linarith) hgap₁ · exact hr T₂ (by linarith) hhi₂.le hgap₂ end end Bounty end SubmissionComponent_ReturnApproximationConditions /- Component ReturnApproximationSUnits; SHA256 defb2db749cacfdf1489b593c19e337bdd511598dedbf273b9bf09b181f96cff -/ section SubmissionComponent_ReturnApproximationSUnits /- The finite approximation units have prime support exactly within {2,3}. -/ namespace Bounty def TwoThreeUnit (x : ℚ) : Prop := ∃ a b : ℤ, x = (2 : ℚ) ^ a * (3 : ℚ) ^ b def TwoThreeInteger (x : ℚ) : Prop := ∃ a b : ℕ, ∃ z : ℤ, x = (z : ℚ) / ((2 : ℚ) ^ a * (3 : ℚ) ^ b) def returnApproximationUnit_twoThreeUnit (r : ℕ) (T : ℝ) (i : ReturnApproximationLabel r T) : TwoThreeUnit (returnApproximationUnit r T i) := by cases i with | inl j => refine ⟨2 * returnHeadFourExponent r j, returnHeadThreeExponent r j, ?_⟩ change returnHeadUnit r j = _ rw [returnHeadUnit_primeMonomial] simp only [rationalPrimeMonomial, zpow_zero, mul_one] | inr a => refine ⟨2 * returnUnitFourExponent r a.1 a.2.1, returnUnitThreeExponent r a.1 a.2.1, ?_⟩ change returnRationalUnit r a.1 a.2.1 = _ rw [returnRationalUnit_primeMonomial] simp only [rationalPrimeMonomial, zpow_zero, mul_one] end Bounty end SubmissionComponent_ReturnApproximationSUnits /- Component TwoThreeProductFormula; SHA256 cc84f294510e33414a2f32794604551572bc1467300225a98a6f497075674dee -/ section SubmissionComponent_TwoThreeProductFormula /- Exact finite-place products for the remaining arithmetic argument. No Subspace Theorem or irrationality assertion is assumed in this module. -/ namespace Bounty noncomputable section def twoThreeUnit_pos {x : ℚ} (hx : TwoThreeUnit x) : 0 < x := by obtain ⟨a, b, rfl⟩ := hx positivity def twoThreeUnit_product_formula {x : ℚ} (hx : TwoThreeUnit x) : |x| * (padicNorm 2 x * padicNorm 3 x) = 1 := by obtain ⟨a, b, rfl⟩ := hx have h2 : (2 : ℚ) ^ a ≠ 0 := zpow_ne_zero a (by norm_num) have h3 : (3 : ℚ) ^ b ≠ 0 := zpow_ne_zero b (by norm_num) have hpos : 0 < (2 : ℚ) ^ a * (3 : ℚ) ^ b := by positivity have hv2 : padicValRat 2 ((2 : ℚ) ^ a * (3 : ℚ) ^ b) = a := by have hs : padicValRat 2 2 = 1 := padicValRat.self (by norm_num) have ht : padicValRat 2 3 = 0 := padicValRat_nat_zero (by norm_num : ¬ 2 ∣ 3) rw [padicValRat.mul h2 h3] simp only [padicValRat.zpow, hs, ht, mul_one, mul_zero, add_zero] have hv3 : padicValRat 3 ((2 : ℚ) ^ a * (3 : ℚ) ^ b) = b := by have hs : padicValRat 3 3 = 1 := padicValRat.self (by norm_num) have ht : padicValRat 3 2 = 0 := padicValRat_nat_zero (by norm_num : ¬ 3 ∣ 2) rw [padicValRat.mul h2 h3] simp only [padicValRat.zpow, hs, ht, mul_one, mul_zero, zero_add] rw [abs_of_pos hpos, padicNorm.eq_zpow_of_nonzero (mul_ne_zero h2 h3), padicNorm.eq_zpow_of_nonzero (mul_ne_zero h2 h3), hv2, hv3] simp only [Nat.cast_ofNat, zpow_neg] field_simp def twoThree_integer_finite_norm_bound (P : ℤ) : padicNorm 2 (P : ℚ) * padicNorm 3 (P : ℚ) ≤ 1 := by exact (mul_le_mul (padicNorm.of_int P) (padicNorm.of_int P) (padicNorm.nonneg _) (by norm_num)).trans_eq (one_mul 1) def twoThreeOneFormProduct {ι : Type*} [Fintype ι] [DecidableEq ι] (d x : ι → ℚ) (k : ι) : ℚ := |∑ i, d i * x i| * (∏ i ∈ Finset.univ.erase k, |x i|) * ∏ i, (padicNorm 2 (x i) * padicNorm 3 (x i)) def twoThreeOneFormProduct_units {ι : Type*} [Fintype ι] [DecidableEq ι] (d x : ι → ℚ) (k : ι) (hx : ∀ i, TwoThreeUnit (x i)) : twoThreeOneFormProduct d x k = |∑ i, d i * x i| / |x k| := by have hpos : 0 < |x k| := abs_pos.mpr (twoThreeUnit_pos (hx k)).ne' apply (eq_div_iff hpos.ne').mpr have he : (∏ i ∈ Finset.univ.erase k, |x i|) * |x k| = ∏ i, |x i| := Finset.prod_erase_mul _ _ (Finset.mem_univ k) calc twoThreeOneFormProduct d x k * |x k| = |∑ i, d i * x i| * ((∏ i ∈ Finset.univ.erase k, |x i|) * |x k|) * (∏ i, (padicNorm 2 (x i) * padicNorm 3 (x i))) := by unfold twoThreeOneFormProduct ring _ = |∑ i, d i * x i| * (∏ i, |x i| * (padicNorm 2 (x i) * padicNorm 3 (x i))) := by rw [he] simp only [Finset.prod_mul_distrib, mul_assoc] _ = |∑ i, d i * x i| := by simp only [twoThreeUnit_product_formula (hx _), Finset.prod_const_one, mul_one] def finite_prod_option_erase_none {ι : Type*} [Fintype ι] [DecidableEq ι] (f : Option ι → ℚ) : (∏ i ∈ Finset.univ.erase none, f i) = ∏ i, f (some i) := by have he : (Finset.univ : Finset (Option ι)).erase none = (Finset.univ : Finset ι).map Function.Embedding.some := by ext i cases i <;> simp rw [he, Finset.prod_map] rfl def twoThreeOneFormProduct_integer {ι : Type*} [Fintype ι] [DecidableEq ι] (d : Option ι → ℚ) (P : ℤ) (u : ι → ℚ) (hu : ∀ i, TwoThreeUnit (u i)) : twoThreeOneFormProduct d (fun i => i.elim (P : ℚ) u) none = |∑ i, d i * i.elim (P : ℚ) u| * (padicNorm 2 (P : ℚ) * padicNorm 3 (P : ℚ)) := by unfold twoThreeOneFormProduct rw [finite_prod_option_erase_none, Fintype.prod_option] simp only [Option.elim_some, Option.elim_none] have hprod : (∏ i, |u i|) * (∏ i, (padicNorm 2 (u i) * padicNorm 3 (u i))) = 1 := by rw [← Finset.prod_mul_distrib] simp only [twoThreeUnit_product_formula (hu _), Finset.prod_const_one] calc _ = |∑ i, d i * i.elim (P : ℚ) u| * (padicNorm 2 (P : ℚ) * padicNorm 3 (P : ℚ)) * ((∏ i, |u i|) * ∏ i, (padicNorm 2 (u i) * padicNorm 3 (u i))) := by ring _ = _ := by rw [hprod, mul_one] def twoThreeOneFormProduct_integer_le {ι : Type*} [Fintype ι] [DecidableEq ι] (d : Option ι → ℚ) (P : ℤ) (u : ι → ℚ) (hu : ∀ i, TwoThreeUnit (u i)) : twoThreeOneFormProduct d (fun i => i.elim (P : ℚ) u) none ≤ |∑ i, d i * i.elim (P : ℚ) u| := by rw [twoThreeOneFormProduct_integer d P u hu] exact mul_le_of_le_one_right (abs_nonneg _) (twoThree_integer_finite_norm_bound P) end end Bounty end SubmissionComponent_TwoThreeProductFormula /- Component OneFormDenominatorClearing; SHA256 61e96d39cc05adf9e393425b739d9eec9fd8867631a63fbe8e94c682bddb9494 -/ section SubmissionComponent_OneFormDenominatorClearing /- Clear a common {2,3}-unit denominator without changing the one-form product. -/ namespace Bounty noncomputable section /-- Every finite tuple of {2,3}-integers can be cleared by one positive natural denominator which is itself a {2,3}-unit. This includes the empty tuple. -/ def twoThreeInteger_common_denominator {ι : Type*} [Fintype ι] (x : ι → ℚ) (hx : ∀ i, TwoThreeInteger (x i)) : ∃ D : ℕ, 0 < D ∧ TwoThreeUnit (D : ℚ) ∧ ∀ i, ∃ z : ℤ, (D : ℚ) * x i = (z : ℚ) := by classical choose a b z hz using hx let den : ι → ℕ := fun i => 2 ^ a i * 3 ^ b i let D : ℕ := ∏ i, den i have hd (i : ι) : 0 < den i := by dsimp only [den] positivity have hD : 0 < D := Finset.prod_pos fun i hi => hd i have hunit : TwoThreeUnit (D : ℚ) := by refine ⟨((∑ i, a i : ℕ) : ℤ), ((∑ i, b i : ℕ) : ℤ), ?_⟩ simp only [D, den, Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat, zpow_natCast, Finset.prod_mul_distrib, Finset.prod_pow_eq_pow_sum] refine ⟨D, hD, hunit, ?_⟩ intro i let rest : ℕ := ∏ j ∈ Finset.univ.erase i, den j have hprod : rest * den i = D := Finset.prod_erase_mul Finset.univ den (Finset.mem_univ i) have hprodQ : (D : ℚ) = (rest : ℚ) * (den i : ℚ) := by exact_mod_cast hprod.symm have hxi : x i = (z i : ℚ) / (den i : ℚ) := by simpa only [den, Nat.cast_mul, Nat.cast_pow, Nat.cast_ofNat] using hz i have hden : (den i : ℚ) ≠ 0 := by exact_mod_cast (hd i).ne' refine ⟨(rest : ℤ) * z i, ?_⟩ rw [hprodQ, hxi] simp only [Int.cast_mul, Int.cast_natCast] field_simp [hden] /-- The product is invariant under scaling by a {2,3}-unit, even when the distinguished coordinate, another coordinate, or the linear form is zero. -/ def twoThreeOneFormProduct_unit_scale {ι : Type*} [Fintype ι] [DecidableEq ι] (d x : ι → ℚ) (k : ι) {c : ℚ} (hc : TwoThreeUnit c) : twoThreeOneFormProduct d (fun i => c * x i) k = twoThreeOneFormProduct d x k := by have hsum : (∑ i, d i * (c * x i)) = c * ∑ i, d i * x i := by rw [Finset.mul_sum] apply Finset.sum_congr rfl intro i hi ring have harch : (∏ i ∈ Finset.univ.erase k, |c * x i|) = (∏ i ∈ Finset.univ.erase k, |c|) * (∏ i ∈ Finset.univ.erase k, |x i|) := by simp only [abs_mul, Finset.prod_mul_distrib] have hnorm (i : ι) : padicNorm 2 (c * x i) * padicNorm 3 (c * x i) = (padicNorm 2 c * padicNorm 3 c) * (padicNorm 2 (x i) * padicNorm 3 (x i)) := by rw [padicNorm.mul, padicNorm.mul] ring have hfinite : (∏ i, (padicNorm 2 (c * x i) * padicNorm 3 (c * x i))) = (∏ _i : ι, (padicNorm 2 c * padicNorm 3 c)) * ∏ i, (padicNorm 2 (x i) * padicNorm 3 (x i)) := by simp only [hnorm, Finset.prod_mul_distrib] have hfactor : |c| * (∏ i ∈ Finset.univ.erase k, |c|) * (∏ _i : ι, (padicNorm 2 c * padicNorm 3 c)) = 1 := by rw [Finset.mul_prod_erase Finset.univ (fun _ : ι => |c|) (Finset.mem_univ k)] rw [← Finset.prod_mul_distrib] simp only [twoThreeUnit_product_formula hc, Finset.prod_const_one] unfold twoThreeOneFormProduct rw [hsum, abs_mul, harch, hfinite] calc _ = (|c| * (∏ i ∈ Finset.univ.erase k, |c|) * (∏ _i : ι, (padicNorm 2 c * padicNorm 3 c))) * (|∑ i, d i * x i| * (∏ i ∈ Finset.univ.erase k, |x i|) * ∏ i, (padicNorm 2 (x i) * padicNorm 3 (x i))) := by ring _ = _ := by rw [hfactor, one_mul] end end Bounty end SubmissionComponent_OneFormDenominatorClearing /- Component OneFormIntegerBridge; SHA256 05422bc5b7a8d984cd8a7e41f2f3c350f987201f76069f1ca7e3fbb36bdf0e8e -/ section SubmissionComponent_OneFormIntegerBridge /- A finite cover for integer points gives the identical cover for {2,3}-integers. The covering theorem is an explicit hypothesis; no arithmetic axiom is added. -/ namespace Bounty noncomputable section def oneForm_integer_cover_to_sInteger {I : Type*} [Fintype I] [DecidableEq I] (d : I → ℚ) (k : I) (ε : ℝ) (F : Finset (I → ℚ)) (hcover : ∀ z : I → ℤ, z ≠ 0 → (twoThreeOneFormProduct d (fun i => (z i : ℚ)) k : ℝ) < Height.mulHeight (fun i => (z i : ℚ)) ^ (-ε) → ∃ a ∈ F, (∑ i, a i * (z i : ℚ)) = 0) (x : I → ℚ) (hSI : ∀ i, TwoThreeInteger (x i)) (hx : x ≠ 0) (hsmall : (twoThreeOneFormProduct d x k : ℝ) < Height.mulHeight x ^ (-ε)) : ∃ a ∈ F, (∑ i, a i * x i) = 0 := by classical obtain ⟨D, hD, hDU, hclear⟩ := twoThreeInteger_common_denominator x hSI choose z hz using hclear have hD0 : (D : ℚ) ≠ 0 := by exact_mod_cast hD.ne' have he : (fun i => (z i : ℚ)) = (fun i => (D : ℚ) * x i) := by funext i exact (hz i).symm have hz0 : z ≠ 0 := by intro hzero apply hx funext i have hh : (D : ℚ) * x i = 0 := by rw [hz i, hzero]; rfl exact (mul_eq_zero.mp hh).resolve_left hD0 have hheight : Height.mulHeight (fun i => (z i : ℚ)) = Height.mulHeight x := by rw [he] exact Height.mulHeight_smul_eq_mulHeight x hD0 have hproduct : twoThreeOneFormProduct d (fun i => (z i : ℚ)) k = twoThreeOneFormProduct d x k := by rw [he] exact twoThreeOneFormProduct_unit_scale d x k hDU obtain ⟨a, ha, haz⟩ := hcover z hz0 (by simpa only [hheight, hproduct] using hsmall) refine ⟨a, ha, ?_⟩ have hs : (D : ℚ) * (∑ i, a i * x i) = ∑ i, a i * (z i : ℚ) := by rw [Finset.mul_sum] apply Finset.sum_congr rfl intro i hi rw [← hz i] ring exact (mul_eq_zero.mp (hs.trans haz)).resolve_left hD0 end end Bounty end SubmissionComponent_OneFormIntegerBridge /- Component PrimitiveOneFormReduction; SHA256 69e5ab39381a1bee816e6fee1d0f14997a2c17f890fdda82fe47b50e3e0e14ac -/ section SubmissionComponent_PrimitiveOneFormReduction /- Primitive normalization preserves the strict one-form approximation inequality. -/ namespace Bounty noncomputable section open scoped BigOperators def twoThreeOneFormProduct_nonneg {I : Type*} [Fintype I] [DecidableEq I] (d x : I → ℚ) (k : I) : 0 ≤ twoThreeOneFormProduct d x k := by exact mul_nonneg (mul_nonneg (abs_nonneg _) (Finset.prod_nonneg (fun i _ => abs_nonneg _))) (Finset.prod_nonneg (fun i _ => mul_nonneg (padicNorm.nonneg _) (padicNorm.nonneg _))) def twoThreeOneFormProduct_scale {I : Type*} [Fintype I] [DecidableEq I] (d x : I → ℚ) (k : I) (c : ℚ) : twoThreeOneFormProduct d (fun i => c * x i) k = (|c| * padicNorm 2 c * padicNorm 3 c) ^ Fintype.card I * twoThreeOneFormProduct d x k := by have hsum : (∑ i, d i * (c * x i)) = c * ∑ i, d i * x i := by rw [Finset.mul_sum] apply Finset.sum_congr rfl intro i _ ring have harch : (∏ i ∈ Finset.univ.erase k, |c * x i|) = (∏ i ∈ Finset.univ.erase k, |c|) * (∏ i ∈ Finset.univ.erase k, |x i|) := by simp only [abs_mul, Finset.prod_mul_distrib] have hnorm (i : I) : padicNorm 2 (c * x i) * padicNorm 3 (c * x i) = (padicNorm 2 c * padicNorm 3 c) * (padicNorm 2 (x i) * padicNorm 3 (x i)) := by rw [padicNorm.mul, padicNorm.mul] ring have hfinite : (∏ i, (padicNorm 2 (c * x i) * padicNorm 3 (c * x i))) = (∏ _i : I, (padicNorm 2 c * padicNorm 3 c)) * ∏ i, (padicNorm 2 (x i) * padicNorm 3 (x i)) := by simp only [hnorm, Finset.prod_mul_distrib] have hfactor : |c| * (∏ i ∈ Finset.univ.erase k, |c|) * (∏ _i : I, (padicNorm 2 c * padicNorm 3 c)) = (|c| * padicNorm 2 c * padicNorm 3 c) ^ Fintype.card I := by rw [Finset.mul_prod_erase Finset.univ (fun _ : I => |c|) (Finset.mem_univ k)] rw [← Finset.prod_mul_distrib] simp only [Finset.prod_const, Finset.card_univ] congr 1 ring unfold twoThreeOneFormProduct rw [hsum, abs_mul, harch, hfinite] calc _ = (|c| * (∏ i ∈ Finset.univ.erase k, |c|) * (∏ _i : I, (padicNorm 2 c * padicNorm 3 c))) * (|∑ i, d i * x i| * (∏ i ∈ Finset.univ.erase k, |x i|) * ∏ i, (padicNorm 2 (x i) * padicNorm 3 (x i))) := by ring _ = _ := by rw [hfactor] def twoThreeOneFormProduct_le_integer_scale {I : Type*} [Fintype I] [DecidableEq I] (d x : I → ℚ) (k : I) (g : ℤ) (hg : g ≠ 0) : twoThreeOneFormProduct d x k ≤ twoThreeOneFormProduct d (fun i => (g : ℚ) * x i) k := by rw [twoThreeOneFormProduct_scale] have hpow : (1 : ℚ) ≤ (|(g : ℚ)| * padicNorm 2 (g : ℚ) * padicNorm 3 (g : ℚ)) ^ Fintype.card I := one_le_pow₀ (integer_three_place_product_lower_rat g hg) exact le_mul_of_one_le_left (twoThreeOneFormProduct_nonneg d x k) hpow def exists_primitive_oneForm_approximation {I : Type*} [Fintype I] [DecidableEq I] (d : I → ℚ) (k : I) (ε : ℝ) (x : I → ℤ) (hx : x ≠ 0) (hsmall : (twoThreeOneFormProduct d (fun i => (x i : ℚ)) k : ℝ) < Height.mulHeight (fun i => (x i : ℚ)) ^ (-ε)) : ∃ (g : ℤ) (a : I → ℤ), 0 < g ∧ a ≠ 0 ∧ Finset.univ.gcd a = 1 ∧ (∀ i, x i = g * a i) ∧ (twoThreeOneFormProduct d (fun i => (a i : ℚ)) k : ℝ) < Height.mulHeight (fun i => (a i : ℚ)) ^ (-ε) := by obtain ⟨g, a, hg, ha, hprim, hfactor⟩ := integer_vector_primitive_factor x hx refine ⟨g, a, hg, ha, hprim, hfactor, ?_⟩ have hcast : (fun i => (x i : ℚ)) = fun i => (g : ℚ) * (a i : ℚ) := by funext i rw [hfactor i, Int.cast_mul] have hheight : Height.mulHeight (fun i => (x i : ℚ)) = Height.mulHeight (fun i => (a i : ℚ)) := by rw [hcast] exact Height.mulHeight_smul_eq_mulHeight _ (by exact_mod_cast hg.ne') have hle : (twoThreeOneFormProduct d (fun i => (a i : ℚ)) k : ℝ) ≤ (twoThreeOneFormProduct d (fun i => (x i : ℚ)) k : ℝ) := by rw [hcast] exact_mod_cast twoThreeOneFormProduct_le_integer_scale d (fun i => (a i : ℚ)) k g hg.ne' exact hle.trans_lt (by simpa only [hheight] using hsmall) def oneForm_primitive_cover_to_integer {I : Type*} [Fintype I] [DecidableEq I] (d : I → ℚ) (k : I) (ε : ℝ) (F : Finset (I → ℚ)) (hcover : ∀ a : I → ℤ, a ≠ 0 → Finset.univ.gcd a = 1 → (twoThreeOneFormProduct d (fun i => (a i : ℚ)) k : ℝ) < Height.mulHeight (fun i => (a i : ℚ)) ^ (-ε) → ∃ b ∈ F, (∑ i, b i * (a i : ℚ)) = 0) (x : I → ℤ) (hx : x ≠ 0) (hsmall : (twoThreeOneFormProduct d (fun i => (x i : ℚ)) k : ℝ) < Height.mulHeight (fun i => (x i : ℚ)) ^ (-ε)) : ∃ b ∈ F, (∑ i, b i * (x i : ℚ)) = 0 := by obtain ⟨g, a, _, ha, hprim, hfactor, hsmall⟩ := exists_primitive_oneForm_approximation d k ε x hx hsmall obtain ⟨b, hb, hba⟩ := hcover a ha hprim hsmall refine ⟨b, hb, ?_⟩ calc _ = (g : ℚ) * ∑ i, b i * (a i : ℚ) := by rw [Finset.mul_sum] apply Finset.sum_congr rfl intro i _ rw [hfactor i, Int.cast_mul] ring _ = 0 := by rw [hba, mul_zero] end end Bounty end SubmissionComponent_PrimitiveOneFormReduction /- Component OneFormMatrixProfiles; SHA256 8e9471e0f398bc0fad20a0e76502c8f244824ab0446d8ad3217b00b3a40594b6 -/ section SubmissionComponent_OneFormMatrixProfiles /- Replacing one identity row by the given rational form realizes exactly the one-form three-place product, and hence the finite-profile reduction. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def oneFormRowMatrix {I : Type*} [Fintype I] [DecidableEq I] (a : I → ℚ) (k : I) : Matrix I I ℚ := (1 : Matrix I I ℚ).updateRow k a def oneFormRowMatrix_mulVec {I : Type*} [Fintype I] [DecidableEq I] (a x : I → ℚ) (k : I) : (oneFormRowMatrix a k).mulVec x = Function.update x k (∑ i, a i * x i) := by rw [oneFormRowMatrix, Matrix.updateRow_mulVec, Matrix.one_mulVec] rfl def oneFormRowMatrix_det {I : Type*} [Fintype I] [DecidableEq I] (a : I → ℚ) (k : I) : (oneFormRowMatrix a k).det = a k := by have h := Matrix.det_updateRow_sum (1 : Matrix I I ℚ) k a have he : (∑ i, a i • (1 : Matrix I I ℚ) i) = a := by ext j simp [Matrix.one_apply, Finset.sum_apply] simpa [he, oneFormRowMatrix] using h def oneFormRowMatrix_values_ne_zero {I : Type*} [Fintype I] [DecidableEq I] (a x : I → ℚ) (k : I) (hx : ∀ i, x i ≠ 0) (hax : (∑ i, a i * x i) ≠ 0) : ∀ i, (oneFormRowMatrix a k).mulVec x i ≠ 0 := by intro i rw [oneFormRowMatrix_mulVec] by_cases hi : i = k · simpa [hi] using hax · simpa [Function.update_of_ne hi] using hx i def oneFormRowMatrix_abs_product {I : Type*} [Fintype I] [DecidableEq I] (a x : I → ℚ) (k : I) : (∏ i, |(oneFormRowMatrix a k).mulVec x i|) = |∑ i, a i * x i| * ∏ i ∈ Finset.univ.erase k, |x i| := by have he : (fun i => |(oneFormRowMatrix a k).mulVec x i|) = Function.update (fun i => |x i|) k |∑ i, a i * x i| := by ext i rw [oneFormRowMatrix_mulVec] by_cases hi : i = k <;> simp [hi] rw [he, Finset.prod_update_of_mem (Finset.mem_univ k)] simp only [Finset.sdiff_singleton_eq_erase] def rational_norm_eq_cast_abs (x : ℚ) : ‖x‖ = ((|x| : ℚ) : ℝ) := by rw [← Rat.norm_cast_real, Real.norm_eq_abs, Rat.cast_abs] def oneForm_actual_three_place_product {d : ℕ} (a : Fin d → ℚ) (k : Fin d) (x : Fin d → ℤ) : (∏ v, ∏ i, actualThreePlaceValues (oneFormRowMatrix a k) x v i) = (twoThreeOneFormProduct a (fun i => (x i : ℚ)) k : ℝ) := by calc _ = (((∏ i, |(oneFormRowMatrix a k).mulVec (fun j => (x j : ℚ)) i|) * (∏ i, padicNorm 2 (x i : ℚ)) * (∏ i, padicNorm 3 (x i : ℚ)) : ℚ) : ℝ) := by simp [actualThreePlaceValues, Fin.prod_univ_succ, rational_norm_eq_cast_abs, Rat.cast_prod, Rat.cast_mul, mul_assoc] _ = _ := by congr 1 rw [oneFormRowMatrix_abs_product] simp only [twoThreeOneFormProduct, Finset.prod_mul_distrib] ring def exists_finite_primitive_oneForm_profiles {d : ℕ} (hd : 0 < d) (a : Fin d → ℚ) (k : Fin d) (ρ : ℝ) (hρ : 0 < ρ) : ∃ M : ℝ, 1 ≤ M ∧ ∃ C : Finset (Fin 3 → Fin d → ℝ), (∀ c ∈ C, (∀ v i, |c v i| ≤ M + ρ / (6 * d)) ∧ (∑ v, ∑ i, c v i) ≤ -ρ / 2 ∧ (∀ v i, v ≠ 0 → c v i ≤ 0)) ∧ ∀ x : Fin d → ℤ, Finset.univ.gcd x = 1 → 1 ≤ Height.logHeight (fun i => (x i : ℚ)) → (∀ i, x i ≠ 0) → (∑ i, a i * (x i : ℚ)) ≠ 0 → (twoThreeOneFormProduct a (fun i => (x i : ℚ)) k : ℝ) < Height.mulHeight (fun i => (x i : ℚ)) ^ (-ρ) → ∃ c ∈ C, ∀ v i, actualThreePlaceValues (oneFormRowMatrix a k) x v i ≤ Real.exp (c v i * Height.logHeight (fun i => (x i : ℚ))) := by obtain ⟨M, hM, C, hC, hcover⟩ := exists_finite_primitive_three_place_profiles hd (oneFormRowMatrix a k) ρ hρ refine ⟨M, hM, C, hC, ?_⟩ intro x hprim hq hxn hax hprod apply hcover x hprim hq hxn · exact oneFormRowMatrix_values_ne_zero a (fun i => (x i : ℚ)) k (fun i => by exact_mod_cast hxn i) hax · rw [oneForm_actual_three_place_product] exact hprod.le end end Bounty end SubmissionComponent_OneFormMatrixProfiles /- Component RationalSubspaceCoverExceptions; SHA256 9b4470b3a211e26300f6696672059eef6ec311b62cfb0d8fe455af03f8b5912e -/ section SubmissionComponent_RationalSubspaceCoverExceptions /- Concrete finite exceptional families and conversion of proper rational subspaces to nonzero rational equations. No covering theorem is assumed here. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def proper_rational_subspace_normal {I : Type*} [Fintype I] [DecidableEq I] (V : Submodule ℚ (I → ℚ)) (hV : V ≠ ⊤) : ∃ a : I → ℚ, a ≠ 0 ∧ ∀ x ∈ V, (∑ i, a i * x i) = 0 := by obtain ⟨f, hf, hker⟩ := V.exists_le_ker_of_lt_top hV.lt_top let a : I → ℚ := fun i => f (Pi.single i 1) have he (x : I → ℚ) : (∑ i, a i * x i) = f x := by have hx : x = ∑ i, x i • Pi.single i (1 : ℚ) := by ext i; simp [Pi.single_apply] conv_rhs => rw [hx, map_sum] apply Finset.sum_congr rfl intro i _ simp [a, mul_comm] refine ⟨a, ?_, ?_⟩ · intro ha apply hf apply LinearMap.ext intro x simpa [ha] using (he x).symm · intro x hx rw [he] exact hker hx def finite_proper_subspaces_normals {I : Type*} [Fintype I] [DecidableEq I] (F : Finset (Submodule ℚ (I → ℚ))) (hF : ∀ V ∈ F, V ≠ ⊤) : ∃ G : Finset (I → ℚ), (∀ a ∈ G, a ≠ 0) ∧ ∀ x : I → ℚ, (∃ V ∈ F, x ∈ V) → ∃ a ∈ G, (∑ i, a i * x i) = 0 := by classical choose a ha hvan using fun V : ↥F => proper_rational_subspace_normal V.val (hF V.val V.property) refine ⟨Finset.univ.image a, ?_, ?_⟩ · intro b hb obtain ⟨V, _, rfl⟩ := Finset.mem_image.mp hb exact ha V · rintro x ⟨V, hV, hx⟩ exact ⟨a ⟨V, hV⟩, Finset.mem_image.mpr ⟨⟨V, hV⟩, Finset.mem_univ _, rfl⟩, hvan ⟨V, hV⟩ x hx⟩ def finite_primitive_integer_small_height {I : Type*} [Fintype I] [Nonempty I] : Set.Finite {x : I → ℤ | x ≠ 0 ∧ Finset.univ.gcd x = 1 ∧ Height.logHeight (fun i => (x i : ℚ)) < 1} := by classical let N : ℤ := ⌈Real.exp 1⌉ apply (Set.finite_Icc (a := fun _ : I => -N) (b := fun _ : I => N)).subset rintro x ⟨hx, hprim, hsmall⟩ have hH : 0 < integerVectorMax x := lt_of_lt_of_le (by norm_num) (integerVectorMax_ge_one x hx) have hHsmall : integerVectorMax x < Real.exp 1 := by rw [← Real.exp_log hH] exact Real.exp_lt_exp.mpr (by simpa [primitive_integer_logHeight x hprim] using hsmall) have hcoord (i : I) : |(x i : ℝ)| ≤ (N : ℝ) := (integer_coord_abs_le_max x i).trans (hHsmall.le.trans (Int.le_ceil _)) constructor <;> intro i · exact_mod_cast (abs_le.mp (hcoord i)).1 · exact_mod_cast (abs_le.mp (hcoord i)).2 def rational_singleton_span_ne_top {I : Type*} [Fintype I] (hI : 2 ≤ Fintype.card I) (x : I → ℚ) : Submodule.span ℚ {x} ≠ ⊤ := by classical have hdim : Module.finrank ℚ (Submodule.span ℚ {x}) ≤ 1 := by simpa using (finrank_span_le_card ({x} : Set (I → ℚ))) intro htop rw [htop, finrank_top, Module.finrank_pi] at hdim omega def finite_small_height_normal_cover {I : Type*} [Fintype I] [DecidableEq I] (hI : 2 ≤ Fintype.card I) : ∃ G : Finset (I → ℚ), (∀ a ∈ G, a ≠ 0) ∧ ∀ x : I → ℤ, x ≠ 0 → Finset.univ.gcd x = 1 → Height.logHeight (fun i => (x i : ℚ)) < 1 → ∃ a ∈ G, (∑ i, a i * (x i : ℚ)) = 0 := by classical let : Nonempty I := Fintype.card_pos_iff.mp (by omega) let S := (finite_primitive_integer_small_height (I := I)).toFinset let F := S.image (fun x : I → ℤ => Submodule.span ℚ {fun i => (x i : ℚ)}) obtain ⟨G, hG, hcover⟩ := finite_proper_subspaces_normals F (by intro V hV obtain ⟨x, _, rfl⟩ := Finset.mem_image.mp hV exact rational_singleton_span_ne_top hI _) refine ⟨G, hG, ?_⟩ intro x hx hprim hsmall apply hcover refine ⟨_, Finset.mem_image.mpr ⟨x, ?_, rfl⟩, Submodule.subset_span (Set.mem_singleton _)⟩ exact (Set.Finite.mem_toFinset _).mpr ⟨hx, hprim, hsmall⟩ end end Bounty end SubmissionComponent_RationalSubspaceCoverExceptions /- Component BoundedBoxSubspaceCover; SHA256 7f91d940265c2f52223db9bf0d1cd452e98f801cb3bee120107744b650adfadf -/ section SubmissionComponent_BoundedBoxSubspaceCover /- Bounded logarithmic parameters contribute an actual finite proper-subspace cover. -/ namespace Bounty noncomputable section open scoped BigOperators def exists_bounded_exponential_subspace_cover {d : ℕ} (hd : 2 ≤ d) (A : Matrix (Fin d) (Fin d) ℚ) (hA : A.det ≠ 0) (c : Fin d → ℝ) (T : ℝ) : ∃ F : Finset (Submodule ℚ (Fin d → ℚ)), (∀ V ∈ F, V ≠ ⊤) ∧ ∀ q : ℝ, 0 ≤ q → q ≤ T → ∀ x : Fin d → ℤ, (∀ i, ‖A.mulVec (fun j => (x j : ℚ)) i‖ ≤ Real.exp (c i * q)) → ∃ V ∈ F, (fun i => (x i : ℚ)) ∈ V := by classical let S := (finite_bounded_exponential_integer_points A hA c T).toFinset refine ⟨S.image (fun x : Fin d → ℤ => Submodule.span ℚ {fun i => (x i : ℚ)}), ?_, ?_⟩ · intro V hV obtain ⟨x, _, rfl⟩ := Finset.mem_image.mp hV exact rational_singleton_span_ne_top (by simpa using hd) _ · intro q hq hqT x hx refine ⟨Submodule.span ℚ {fun i => (x i : ℚ)}, Finset.mem_image.mpr ⟨x, ?_, rfl⟩, Submodule.subset_span (Set.mem_singleton _)⟩ change x ∈ (finite_bounded_exponential_integer_points A hA c T).toFinset rw [Set.Finite.mem_toFinset] refine ⟨q, hq, hqT, fun i => ?_⟩ rw [← Real.norm_eq_abs, Rat.norm_cast_real] exact hx i end end Bounty end SubmissionComponent_BoundedBoxSubspaceCover /- Component RationalThreePlaceSubspaceCover; SHA256 fcaca9dca9f10a8c58d0dc845ce09c19a331820d665725bfe1d986bd45c0edf3 -/ section SubmissionComponent_RationalThreePlaceSubspaceCover /- The precise geometric covering contract used by the final arithmetic application. This file defines a proposition; it does not assert the contract. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def RationalThreePlaceSubspaceCover : Prop := ∀ (I : Type) [Fintype I] [DecidableEq I], 2 ≤ Fintype.card I → ∀ (A : Matrix I I ℚ), A.det ≠ 0 → ∀ (c : Fin 3 → I → ℝ) (ρ : ℝ), 0 < ρ → (∑ v, ∑ i, c v i) ≤ -ρ → (∀ v i, v ≠ 0 → c v i ≤ 0) → ∃ F : Finset (Submodule ℚ (I → ℚ)), (∀ V ∈ F, V ≠ ⊤) ∧ ∀ (q : ℝ), 0 ≤ q → ∀ x : I → ℤ, (∀ i, ‖A.mulVec (fun j => (x j : ℚ)) i‖ ≤ Real.exp (c 0 i * q)) → (∀ i, (padicNorm 2 (x i : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) → (∀ i, (padicNorm 3 (x i : ℚ) : ℝ) ≤ Real.exp (c 2 i * q)) → ∃ V ∈ F, (fun i => (x i : ℚ)) ∈ V def three_place_subspace_cover_normals (h : RationalThreePlaceSubspaceCover) (I : Type) [Fintype I] [DecidableEq I] (hI : 2 ≤ Fintype.card I) (A : Matrix I I ℚ) (hA : A.det ≠ 0) (c : Fin 3 → I → ℝ) (ρ : ℝ) (hρ : 0 < ρ) (hc : (∑ v, ∑ i, c v i) ≤ -ρ) (hcfin : ∀ v i, v ≠ 0 → c v i ≤ 0) : ∃ G : Finset (I → ℚ), (∀ a ∈ G, a ≠ 0) ∧ ∀ (q : ℝ), 0 ≤ q → ∀ x : I → ℤ, (∀ i, ‖A.mulVec (fun j => (x j : ℚ)) i‖ ≤ Real.exp (c 0 i * q)) → (∀ i, (padicNorm 2 (x i : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) → (∀ i, (padicNorm 3 (x i : ℚ) : ℝ) ≤ Real.exp (c 2 i * q)) → ∃ a ∈ G, (∑ i, a i * (x i : ℚ)) = 0 := by obtain ⟨F, hF, hcover⟩ := h I hI A hA c ρ hρ hc hcfin obtain ⟨G, hG, hnormal⟩ := finite_proper_subspaces_normals F hF exact ⟨G, hG, fun q hq x h₀ h₂ h₃ => hnormal _ (hcover q hq x h₀ h₂ h₃)⟩ end end Bounty end SubmissionComponent_RationalThreePlaceSubspaceCover /- Component ThreePlaceSubspaceCoverReindex; SHA256 7f94130876bd3a0d33f01049ff63ce775d9763335bfc3e07c4180c5d2de86d71 -/ section SubmissionComponent_ThreePlaceSubspaceCoverReindex /- Exact finite-coordinate transport of the three-place rational subspace-cover contract. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix /-- The same geometric contract on the standard finite coordinate types. -/ def RationalThreePlaceSubspaceCoverFin : Prop := ∀ d : ℕ, 2 ≤ d → ∀ A : Matrix (Fin d) (Fin d) ℚ, A.det ≠ 0 → ∀ (c : Fin 3 → Fin d → ℝ) (ρ : ℝ), 0 < ρ → (∑ v, ∑ i, c v i) ≤ -ρ → (∀ v i, v ≠ 0 → c v i ≤ 0) → ∃ F : Finset (Submodule ℚ (Fin d → ℚ)), (∀ V ∈ F, V ≠ ⊤) ∧ ∀ (q : ℝ), 0 ≤ q → ∀ x : Fin d → ℤ, (∀ i, ‖A.mulVec (fun j => (x j : ℚ)) i‖ ≤ Real.exp (c 0 i * q)) → (∀ i, (padicNorm 2 (x i : ℚ) : ℝ) ≤ Real.exp (c 1 i * q)) → (∀ i, (padicNorm 3 (x i : ℚ) : ℝ) ≤ Real.exp (c 2 i * q)) → ∃ V ∈ F, (fun i => (x i : ℚ)) ∈ V def profile_mulVec_reindex {I I' : Type*} [Fintype I] [Fintype I'] (e : I ≃ I') (A : Matrix I I ℚ) (x : I → ℚ) : (Matrix.reindex e e A).mulVec (profileCoordinateEquiv e x) = profileCoordinateEquiv e (A.mulVec x) := by change (A.submatrix e.symm e.symm).mulVec (x ∘ e.symm) = (A.mulVec x) ∘ e.symm rw [Matrix.submatrix_mulVec_equiv] simp only [Equiv.symm_symm, Function.comp_assoc, Equiv.symm_comp_self, Function.comp_id] def rationalThreePlaceSubspaceCover_of_fin (hfin : RationalThreePlaceSubspaceCoverFin) : RationalThreePlaceSubspaceCover := by classical intro I _ _ hI A hA c ρ hρ hc hcfin let e : I ≃ Fin (Fintype.card I) := Fintype.equivFin I let E := profileCoordinateEquiv e let A' := Matrix.reindex e e A let c' : Fin 3 → Fin (Fintype.card I) → ℝ := fun v i => c v (e.symm i) have hA' : A'.det ≠ 0 := by simpa only [A', Matrix.det_reindex_self] using hA have hc' : (∑ v, ∑ i, c' v i) ≤ -ρ := by simpa only [c', Equiv.sum_comp] using hc have hcfin' : ∀ v i, v ≠ 0 → c' v i ≤ 0 := fun v i hv => hcfin v (e.symm i) hv obtain ⟨F, hF, hcover⟩ := hfin (Fintype.card I) hI A' hA' c' ρ hρ hc' hcfin' refine ⟨F.image (fun V => V.map E.symm.toLinearMap), ?_, ?_⟩ · intro V hV obtain ⟨W, hW, rfl⟩ := Finset.mem_image.mp hV exact Submodule.map_ne_top_iff.mpr (hF W hW) · intro q hq x hInf hTwo hThree let x' : Fin (Fintype.card I) → ℤ := fun i => x (e.symm i) have hInf' : ∀ i, ‖A'.mulVec (fun j => (x' j : ℚ)) i‖ ≤ Real.exp (c' 0 i * q) := by have heq := profile_mulVec_reindex e A (fun j => (x j : ℚ)) change A'.mulVec (fun j => (x' j : ℚ)) = profileCoordinateEquiv e (A.mulVec (fun j => (x j : ℚ))) at heq intro i rw [heq] exact hInf (e.symm i) have hTwo' : ∀ i, (padicNorm 2 (x' i : ℚ) : ℝ) ≤ Real.exp (c' 1 i * q) := fun i => hTwo (e.symm i) have hThree' : ∀ i, (padicNorm 3 (x' i : ℚ) : ℝ) ≤ Real.exp (c' 2 i * q) := fun i => hThree (e.symm i) obtain ⟨V, hV, hxV⟩ := hcover q hq x' hInf' hTwo' hThree' refine ⟨V.map E.symm.toLinearMap, Finset.mem_image.mpr ⟨V, hV, rfl⟩, ?_⟩ refine Submodule.mem_map.mpr ⟨(fun i => (x' i : ℚ)), hxV, ?_⟩ change E.symm (E (fun i => (x i : ℚ))) = _ exact E.symm_apply_apply _ end end Bounty end SubmissionComponent_ThreePlaceSubspaceCoverReindex /- Component RationalThreePlaceSubspaceTheorem; SHA256 8268d47b982520135b40928dde99c90448e87c0e19e55c98c35e93bd081babce -/ section SubmissionComponent_RationalThreePlaceSubspaceTheorem /- The rational three-place Subspace Theorem for integer coordinate forms at 2 and 3. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def rational_three_place_subspace_cover_fin : RationalThreePlaceSubspaceCoverFin := by classical intro d hd A hA c ρ hρ hsum hcfin let : NeZero d := ⟨by omega⟩ let M : ℝ := ∑ v, ∑ i, |c v i| have hcBound : ∀ v i, |c v i| ≤ M := by intro v i exact (Finset.single_le_sum (fun j _ => abs_nonneg (c v j)) (Finset.mem_univ i)).trans (Finset.single_le_sum (fun w _ => Finset.sum_nonneg (fun j _ => abs_nonneg (c w j))) (Finset.mem_univ v)) obtain ⟨C, T, _, hT, hwitness⟩ := exists_threePlace_compound_witnesses hd A hA M ρ hρ let S : Set ℝ := {q | T ≤ q ∧ ∃ x ∈ rationalThreePlaceDomain A c q, x ≠ 0} have hS (q : ℝ) (hq : q ∈ S) : 0 ≤ q := le_trans (by linarith) hq.1 have hex : ∀ q : ℝ, ∃ (k : Fin d) (p : Equiv.Perm (Fin d)) (H : Matrix (Fin d) (Fin d) ℤ), q ∈ S → ThreePlaceCompoundWitnessData A c q hA C ρ k p H := by intro q by_cases hq : q ∈ S · obtain ⟨k, p, H, hdata⟩ := hwitness c q hcBound (fun i => hcfin 1 i (by decide)) (fun i => hcfin 2 i (by decide)) hsum hq.1 hq.2 exact ⟨k, p, H, fun _ => hdata⟩ · exact ⟨⟨1, by omega⟩, Equiv.refl _, 1, fun h => False.elim (hq h)⟩ choose cut p H hdata using hex let K := {k : Fin d // 1 ≤ k.val} let U (k : K) : Set ℝ := {q | q ∈ S ∧ cut q = k.val} have hfam (k : K) : ∃ G : Finset (Submodule ℚ (Fin d → ℚ)), (∀ V ∈ G, V ≠ ⊤) ∧ ∀ q ∈ U k, Submodule.span ℚ (((H q).map (Int.castRingHom ℚ)).col '' {i : Fin d | i.val < k.val.val}) ∈ G := by refine exists_finite_varying_profile_prefix_family k.property k.val.isLt A hA (fun q => threePlaceCompoundProfile A c q hA (p q) k.val) C (threePlaceGapRate d ρ / 2) (by exact div_pos (threePlaceGapRate_pos hd hρ) (by norm_num)) (U k) (fun q hq => hS q hq.1) ?_ ?_ H ?_ ?_ ?_ ?_ · intro q hq v s have hh := (hdata q hq.1).2.2.1 rw [hq.2] at hh exact hh v s · intro q hq have hh := (hdata q hq.1).2.2.2.1 rw [hq.2] at hh exact hh · intro q hq exact (hdata q hq.1).2.1 · intro q hq i t ht have hh := (hdata q hq.1).2.2.2.2.1 rw [hq.2] at hh have hmap : compoundMatrix (d - k.val.val) ((H q).map (Int.castRingHom ℚ)) = (compoundMatrix (d - k.val.val) (H q)).map (Int.castRingHom ℚ) := compoundMatrix_map (Int.castRingHom ℚ) _ (H q) rw [hmap] exact (hh t ht).1 i · intro q hq i t ht have hh := (hdata q hq.1).2.2.2.2.1 rw [hq.2] at hh have hmap : compoundMatrix (d - k.val.val) ((H q).map (Int.castRingHom ℚ)) = (compoundMatrix (d - k.val.val) (H q)).map (Int.castRingHom ℚ) := compoundMatrix_map (Int.castRingHom ℚ) _ (H q) rw [hmap] exact (hh t ht).2.1 i · intro q hq i t ht have hh := (hdata q hq.1).2.2.2.2.1 rw [hq.2] at hh have hmap : compoundMatrix (d - k.val.val) ((H q).map (Int.castRingHom ℚ)) = (compoundMatrix (d - k.val.val) (H q)).map (Int.castRingHom ℚ) := compoundMatrix_map (Int.castRingHom ℚ) _ (H q) rw [hmap] exact (hh t ht).2.2 i choose G hG hcover using hfam obtain ⟨B, hB, hsmall⟩ := exists_bounded_exponential_subspace_cover hd A hA (c 0) T let F : Finset (Submodule ℚ (Fin d → ℚ)) := B ∪ ({⊥} ∪ Finset.univ.biUnion G) refine ⟨F, ?_, ?_⟩ · intro V hV rcases Finset.mem_union.mp hV with hV | hV · exact hB V hV · rcases Finset.mem_union.mp hV with hV | hV · have hv : V = ⊥ := Finset.mem_singleton.mp hV rw [hv] exact bot_ne_top · obtain ⟨k, _, hk⟩ := Finset.mem_biUnion.mp hV exact hG k V hk · intro q hq x hInf hTwo hThree by_cases hx : x = 0 · refine ⟨⊥, Finset.mem_union_right _ (Finset.mem_union_left _ (Finset.mem_singleton_self _)), ?_⟩ simp only [hx, Pi.zero_apply, Int.cast_zero, Submodule.mem_bot] rfl by_cases hqT : q ≤ T · obtain ⟨V, hV, hxV⟩ := hsmall q hq hqT x hInf exact ⟨V, Finset.mem_union_left _ hV, hxV⟩ have hxD : x ∈ rationalThreePlaceDomain A c q := by refine ⟨?_, hTwo, hThree⟩ intro i have hh := hInf i rw [← Rat.norm_cast_real, Real.norm_eq_abs] at hh simpa [Matrix.mulVec, dotProduct, Matrix.map_apply, Rat.cast_sum, Rat.cast_mul] using hh have hqS : q ∈ S := ⟨le_of_not_ge hqT, x, hxD, hx⟩ let k : K := ⟨cut q, (hdata q hqS).1⟩ let V := Submodule.span ℚ (((H q).map (Int.castRingHom ℚ)).col '' {i : Fin d | i.val < (cut q).val}) refine ⟨V, Finset.mem_union_right _ (Finset.mem_union_right _ ?_), ?_⟩ · apply Finset.mem_biUnion.mpr exact ⟨k, Finset.mem_univ k, hcover k q ⟨hqS, rfl⟩⟩ · exact (hdata q hqS).2.2.2.2.2 x hxD def rational_three_place_subspace_cover : RationalThreePlaceSubspaceCover := rationalThreePlaceSubspaceCover_of_fin rational_three_place_subspace_cover_fin end end Bounty end SubmissionComponent_RationalThreePlaceSubspaceTheorem /- Component ThreePlaceOneFormFiniteCover; SHA256 92a2aa7d7d20125da3544ce3517209561ab7868d469a2b9242b3de1ee471be42 -/ section SubmissionComponent_ThreePlaceOneFormFiniteCover /- The geometric cover implies the actual integer one-form cover in each finite dimension. Zero values and small primitive heights are included. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def integer_oneForm_finite_cover_of_three_place (hST : RationalThreePlaceSubspaceCover) {d : ℕ} (hd : 2 ≤ d) (a : Fin d → ℚ) (k : Fin d) (hak : a k ≠ 0) (ε : ℝ) (hε : 0 < ε) : ∃ G : Finset (Fin d → ℚ), (∀ b ∈ G, b ≠ 0) ∧ ∀ x : Fin d → ℤ, x ≠ 0 → (twoThreeOneFormProduct a (fun i => (x i : ℚ)) k : ℝ) < Height.mulHeight (fun i => (x i : ℚ)) ^ (-ε) → ∃ b ∈ G, (∑ i, b i * (x i : ℚ)) = 0 := by classical have hd' : 2 ≤ Fintype.card (Fin d) := by simpa using hd obtain ⟨M, hM, C, hC, hprofile⟩ := exists_finite_primitive_oneForm_profiles (by omega : 0 < d) a k ε hε have hAc : (oneFormRowMatrix a k).det ≠ 0 := by rwa [oneFormRowMatrix_det] have hcovers (c : ↥C) := three_place_subspace_cover_normals hST (Fin d) hd' (oneFormRowMatrix a k) hAc c.val (ε / 2) (by positivity) (by simpa only [neg_div] using (hC c.val c.property).2.1) (hC c.val c.property).2.2 choose F hF hcover using hcovers obtain ⟨S, hS, hsmallcover⟩ := finite_small_height_normal_cover hd' let E : Finset (Fin d → ℚ) := Finset.univ.image (fun i => Pi.single i 1) let P : Finset (Fin d → ℚ) := Finset.univ.biUnion F let G : Finset (Fin d → ℚ) := P ∪ (S ∪ ({a} ∪ E)) have ha : a ≠ 0 := by intro h; exact hak (congrFun h k) have hE : ∀ b ∈ E, b ≠ 0 := by intro b hb obtain ⟨i, _, rfl⟩ := Finset.mem_image.mp hb intro h have hh := congrFun h i simpa using hh have hG : ∀ b ∈ G, b ≠ 0 := by intro b hb rcases Finset.mem_union.mp hb with hb | hb · obtain ⟨c, _, hc⟩ := Finset.mem_biUnion.mp hb exact hF c b hc · rcases Finset.mem_union.mp hb with hb | hb · exact hS b hb · rcases Finset.mem_union.mp hb with hb | hb · simpa only [Finset.mem_singleton.mp hb] using ha · exact hE b hb refine ⟨G, hG, ?_⟩ apply oneForm_primitive_cover_to_integer a k ε G intro x hx hprim hprod by_cases hcoords : ∀ i, x i ≠ 0 · by_cases hax : (∑ i, a i * (x i : ℚ)) = 0 · exact ⟨a, by simp [G], hax⟩ · by_cases hheight : 1 ≤ Height.logHeight (fun i => (x i : ℚ)) · obtain ⟨c, hc, hp⟩ := hprofile x hprim hheight hcoords hax hprod obtain ⟨b, hb, hbx⟩ := hcover ⟨c, hc⟩ (Height.logHeight (fun i => (x i : ℚ))) (by linarith) x (fun i => hp 0 i) (fun i => hp 1 i) (fun i => hp 2 i) refine ⟨b, Finset.mem_union_left _ ?_, hbx⟩ exact Finset.mem_biUnion.mpr ⟨⟨c, hc⟩, Finset.mem_univ _, hb⟩ · obtain ⟨b, hb, hbx⟩ := hsmallcover x hx hprim (lt_of_not_ge hheight) exact ⟨b, Finset.mem_union_right _ (Finset.mem_union_left _ hb), hbx⟩ · push_neg at hcoords obtain ⟨i, hi⟩ := hcoords refine ⟨Pi.single i 1, ?_, ?_⟩ · apply Finset.mem_union_right apply Finset.mem_union_right apply Finset.mem_union_right exact Finset.mem_image.mpr ⟨i, Finset.mem_univ _, rfl⟩ · simp [Pi.single_apply, hi] end end Bounty end SubmissionComponent_ThreePlaceOneFormFiniteCover /- Component FiniteHyperplaneElimination; SHA256 914801643fb8c3288c4f6723f2932ed213ba1febb5f159342fc387ce3d531e16 -/ section SubmissionComponent_FiniteHyperplaneElimination /- Exact deletion of a coordinate subject to a fixed rational hyperplane relation. -/ namespace Bounty universe u def hyperplaneDeleteCoefficient {I : Type u} (a d : I → ℚ) (k : I) : {i : I // i ≠ k} → ℚ := fun i => d i - d k * a i / a k /-- Substitute for a coordinate with nonzero hyperplane coefficient. The remaining coordinates are the original coordinates restricted to the complement of the pivot. -/ def finite_hyperplane_eliminate {I : Type u} [Fintype I] [DecidableEq I] (a d x : I → ℚ) (k : I) (hak : a k ≠ 0) (hax : ∑ i, a i * x i = 0) : (∑ i, d i * x i) = ∑ i : {i : I // i ≠ k}, hyperplaneDeleteCoefficient a d k i * x i := by have hfull : (∑ i, (d i - d k * a i / a k) * x i) = ∑ i, d i * x i := by calc _ = (∑ i, d i * x i) - (d k / a k) * ∑ i, a i * x i := by rw [Finset.mul_sum, ← Finset.sum_sub_distrib] apply Finset.sum_congr rfl intro i hi ring _ = _ := by rw [hax, mul_zero, sub_zero] have hpivot : (d k - d k * a k / a k) * x k = 0 := by field_simp [hak] ring have hdelete := Fintype.sum_eq_add_sum_subtype_ne (fun i => (d i - d k * a i / a k) * x i) k rw [hpivot, zero_add] at hdelete exact hfull.symm.trans hdelete /-- A nonzero coefficient vector supplies a single pivot that works for every target linear form and every vector on the hyperplane. -/ def finite_hyperplane_exists_elimination {I : Type u} [Fintype I] [DecidableEq I] (a : I → ℚ) (ha : a ≠ 0) : ∃ k : I, a k ≠ 0 ∧ ∀ d x : I → ℚ, (∑ i, a i * x i) = 0 → (∑ i, d i * x i) = ∑ i : {i : I // i ≠ k}, hyperplaneDeleteCoefficient a d k i * x i := by have hex : ∃ k, a k ≠ 0 := by by_contra! hh apply ha funext i exact hh i obtain ⟨k, hk⟩ := hex exact ⟨k, hk, fun d x hx => finite_hyperplane_eliminate a d x k hk hx⟩ def finite_hyperplane_delete_card_lt {I : Type u} [Fintype I] [DecidableEq I] (k : I) : Fintype.card {i : I // i ≠ k} < Fintype.card I := Fintype.card_subtype_lt (x := k) (by simp) def hyperplaneOptionVector {I : Type u} (P : ℚ) (x : I → ℚ) : Option I → ℚ | none => P | some i => x i /-- If the integer coordinate has nonzero hyperplane coefficient, removing it converts the integer approximation error into a linear form in the unit coordinates. -/ def finite_option_hyperplane_eliminate_integer {I : Type u} [Fintype I] (a : Option I → ℚ) (d x : I → ℚ) (P : ℤ) (ha : a none ≠ 0) (hax : ∑ j, a j * hyperplaneOptionVector (P : ℚ) x j = 0) : (∑ i, d i * x i) - (P : ℚ) = ∑ i, (d i + a (some i) / a none) * x i := by have hh : a none * (P : ℚ) + ∑ i, a (some i) * x i = 0 := by simpa only [Fintype.sum_option, hyperplaneOptionVector] using hax have hP : (P : ℚ) = -(∑ i, a (some i) * x i) / a none := by apply (eq_div_iff ha).mpr linear_combination hh rw [hP] calc _ = (∑ i, d i * x i) + (∑ i, a (some i) * x i) / a none := by ring _ = (∑ i, d i * x i) + ∑ i, (a (some i) / a none) * x i := by rw [Finset.sum_div] congr 1 apply Finset.sum_congr rfl intro i hi ring _ = _ := by rw [← Finset.sum_add_distrib] apply Finset.sum_congr rfl intro i hi ring /-- If the hyperplane omits the integer coordinate, the integer stays unchanged while one of the other coordinates is deleted. -/ def finite_option_hyperplane_eliminate_unit {I : Type u} [Fintype I] [DecidableEq I] (a : Option I → ℚ) (d x : I → ℚ) (P : ℤ) (ha : a none = 0) (k : I) (hak : a (some k) ≠ 0) (hax : ∑ j, a j * hyperplaneOptionVector (P : ℚ) x j = 0) : (∑ i, d i * x i) - (P : ℚ) = (∑ i : {i : I // i ≠ k}, hyperplaneDeleteCoefficient (fun j => a (some j)) d k i * x i) - (P : ℚ) := by have hh : ∑ i, a (some i) * x i = 0 := by simpa only [Fintype.sum_option, hyperplaneOptionVector, ha, zero_mul, zero_add] using hax rw [finite_hyperplane_eliminate (fun j => a (some j)) d x k hak hh] end Bounty end SubmissionComponent_FiniteHyperplaneElimination /- Component OneFormRigidity; SHA256 f0c0e2c69242908ef6d6778e2ad990a015476f5af5f5f8158396e4ecce1dd438 -/ section SubmissionComponent_OneFormRigidity /- Finite-hyperplane induction conditional on the actual one-form S-arithmetic Subspace Theorem. No arithmetic axiom or unconditional target is introduced. -/ namespace Bounty noncomputable section open scoped BigOperators def oneFormExponent : ℝ := 1 / 0x2a30 def oneFormHeightFactor {I : Type*} [Fintype I] (x : I → ℚ) : ℝ := Height.mulHeight x ^ (-oneFormExponent) def oneFormHeightFactor_pos {I : Type*} [Fintype I] (x : I → ℚ) : 0 < oneFormHeightFactor x := Real.rpow_pos_of_pos (Height.mulHeight_pos x) _ def oneFormHeightFactor_le_one {I : Type*} [Fintype I] (x : I → ℚ) : oneFormHeightFactor x ≤ 1 := by apply Real.rpow_le_one_of_one_le_of_nonpos (Height.one_le_mulHeight x) norm_num [oneFormExponent] def oneFormHeightFactor_project {I J : Type*} [Fintype I] [Fintype J] (f : J → I) (x : I → ℚ) : oneFormHeightFactor x ≤ oneFormHeightFactor (x ∘ f) := by apply Real.rpow_le_rpow_of_nonpos (Height.mulHeight_pos (x ∘ f)) (Height.mulHeight_comp_le f x) norm_num [oneFormExponent] def twoThreeInteger_of_int (P : ℤ) : TwoThreeInteger (P : ℚ) := by exact ⟨0, 0, P, by simp⟩ def twoThreeInteger_of_unit {x : ℚ} (hx : TwoThreeUnit x) : TwoThreeInteger x := by obtain ⟨a, b, rfl⟩ := hx cases a with | ofNat a => cases b with | ofNat b => refine ⟨0, 0, (2 : ℤ) ^ a * (3 : ℤ) ^ b, ?_⟩ simp | negSucc b => refine ⟨0, b + 1, (2 : ℤ) ^ a, ?_⟩ simp [zpow_negSucc, div_eq_mul_inv] | negSucc a => cases b with | ofNat b => refine ⟨a + 1, 0, (3 : ℤ) ^ b, ?_⟩ simp [zpow_negSucc, div_eq_mul_inv, mul_comm] | negSucc b => refine ⟨a + 1, b + 1, 1, ?_⟩ simp [zpow_negSucc, div_eq_mul_inv, mul_comm] /-- The actual finite rational hyperplane-cover assertion, specialized only in dimension, places, and exponent. This is a proposition, not an axiom. -/ def OneFormCover405 : Prop := ∀ (I : Type) [Fintype I] [DecidableEq I], 2 ≤ Fintype.card I → Fintype.card I ≤ 0x195 → ∀ (d : I → ℚ) (k : I), d k ≠ 0 → ∃ F : Finset (I → ℚ), (∀ a ∈ F, a ≠ 0) ∧ ∀ x : I → ℚ, (∀ i, TwoThreeInteger (x i)) → x ≠ 0 → (twoThreeOneFormProduct d x k : ℝ) < oneFormHeightFactor x → ∃ a ∈ F, (∑ i, a i * x i) = 0 private def positive_common_bound {A : Type*} [Fintype A] (c : A → ℝ) (hc : ∀ a, 0 < c a) : ∃ C : ℝ, 0 < C ∧ C ≤ 1 ∧ ∀ a, C ≤ c a := by classical have hh : ∀ s : Finset A, (∀ a ∈ s, 0 < c a) → ∃ C : ℝ, 0 < C ∧ C ≤ 1 ∧ ∀ a ∈ s, C ≤ c a := by intro s induction s using Finset.induction_on with | empty => intro hs exact ⟨1, by norm_num, le_rfl, by simp⟩ | @insert a s ha ih => intro hs obtain ⟨C, hC, hC1, hCs⟩ := ih (fun b hb => hs b (by simp [hb])) refine ⟨min (c a) C, lt_min (hs a (by simp)) hC, (min_le_right _ _).trans hC1, ?_⟩ intro b hb rcases Finset.mem_insert.mp hb with rfl | hb · exact min_le_left _ _ · exact (min_le_right _ _).trans (hCs b hb) obtain ⟨C, hC, hC1, hCs⟩ := hh Finset.univ (fun a _ => hc a) exact ⟨C, hC, hC1, fun a => hCs a (Finset.mem_univ a)⟩ def UnitOneFormLowerBound {I : Type} [Fintype I] (d : I → ℚ) : Prop := ∃ C : ℝ, 0 < C ∧ ∀ (u : I → ℚ), (∀ i, TwoThreeUnit (u i)) → ∀ t : ℝ, 0 < t → (∀ i, t ≤ |(u i : ℝ)|) → (∑ i, d i * u i) ≠ 0 → C * t * oneFormHeightFactor u ≤ |((∑ i, d i * u i : ℚ) : ℝ)| def oneForm_unit_rigidity (hST : OneFormCover405) {I : Type} [Fintype I] [DecidableEq I] (hI : Fintype.card I ≤ 0x195) (d : I → ℚ) : UnitOneFormLowerBound d := by classical suffices h : ∀ n : ℕ, ∀ (J : Type) [Fintype J] [DecidableEq J], Fintype.card J = n → n ≤ 0x195 → ∀ c : J → ℚ, UnitOneFormLowerBound c by exact h (Fintype.card I) I rfl hI d intro n induction n using Nat.strong_induction_on with | h n ih => intro J instF instD hcard hmax c by_cases hc : c = 0 · refine ⟨1, by norm_num, ?_⟩ intro u hu t ht htu hn simp [hc] at hn have hex : ∃ k, c k ≠ 0 := by by_contra! hh exact hc (funext hh) obtain ⟨k, hk⟩ := hex by_cases hlarge : 2 ≤ Fintype.card J · obtain ⟨F, hF, hcover⟩ := hST J hlarge (by omega) c k hk have hlocal : ∀ a : F, ∃ C : ℝ, 0 < C ∧ ∀ (u : J → ℚ), (∀ i, TwoThreeUnit (u i)) → ∀ t : ℝ, 0 < t → (∀ i, t ≤ |(u i : ℝ)|) → (∑ i, c i * u i) ≠ 0 → (∑ i, a.1 i * u i) = 0 → C * t * oneFormHeightFactor u ≤ |((∑ i, c i * u i : ℚ) : ℝ)| := by intro a obtain ⟨l, hl, _⟩ := finite_hyperplane_exists_elimination a.1 (hF a.1 a.2) let K := {i : J // i ≠ l} have hlt : Fintype.card K < n := by simpa only [K, ← hcard] using finite_hyperplane_delete_card_lt l obtain ⟨C, hC, hbound⟩ := ih (Fintype.card K) hlt K rfl (by omega) (hyperplaneDeleteCoefficient a.1 c l) refine ⟨C, hC, ?_⟩ intro u hu t ht htu hn hax have heq := finite_hyperplane_eliminate a.1 c u l hl hax have hn' : (∑ i : K, hyperplaneDeleteCoefficient a.1 c l i * u i) ≠ 0 := by rw [← heq] exact hn have hb := hbound (fun i : K => u i) (fun i => hu i) t ht (fun i => htu i) hn' rw [← heq] at hb calc C * t * oneFormHeightFactor u ≤ C * t * oneFormHeightFactor (fun i : K => u i) := mul_le_mul_of_nonneg_left (oneFormHeightFactor_project Subtype.val u) (mul_nonneg hC.le ht.le) _ ≤ _ := hb choose C hC hbound using hlocal obtain ⟨B, hB, hB1, hBC⟩ := positive_common_bound C hC refine ⟨B, hB, ?_⟩ intro u hu t ht htu hn by_cases hp : (twoThreeOneFormProduct c u k : ℝ) < oneFormHeightFactor u · have hune : u ≠ 0 := by intro hzero simp [hzero] at hn obtain ⟨a, ha, hax⟩ := hcover u (fun i => twoThreeInteger_of_unit (hu i)) hune hp let af : F := ⟨a, ha⟩ calc B * t * oneFormHeightFactor u ≤ C af * t * oneFormHeightFactor u := mul_le_mul_of_nonneg_right (mul_le_mul_of_nonneg_right (hBC af) ht.le) (oneFormHeightFactor_pos u).le _ ≤ _ := hbound af u hu t ht htu hn hax · have hdiv : oneFormHeightFactor u ≤ |((∑ i, c i * u i : ℚ) : ℝ)| / |(u k : ℝ)| := by have hh := le_of_not_gt hp rw [twoThreeOneFormProduct_units c u k hu] at hh simpa only [Rat.cast_div, Rat.cast_abs] using hh have huk : 0 < |(u k : ℝ)| := by exact_mod_cast abs_pos.mpr (twoThreeUnit_pos (hu k)).ne' have hm := (le_div_iff₀ huk).mp hdiv have hBt : B * t ≤ |(u k : ℝ)| := (mul_le_mul_of_nonneg_right hB1 ht.le).trans (by simpa using htu k) exact (mul_le_mul_of_nonneg_right hBt (oneFormHeightFactor_pos u).le).trans (by simpa only [mul_comm] using hm) · haveI : Subsingleton J := Fintype.card_le_one_iff_subsingleton.mp (by omega) have hck : 0 < |(c k : ℝ)| := by exact_mod_cast abs_pos.mpr hk refine ⟨|(c k : ℝ)|, hck, ?_⟩ intro u hu t ht htu hn have hs : (∑ i, c i * u i) = c k * u k := by apply Fintype.sum_eq_single k intro i hi exact False.elim (hi (Subsingleton.elim i k)) rw [hs, Rat.cast_mul, abs_mul] calc |(c k : ℝ)| * t * oneFormHeightFactor u ≤ |(c k : ℝ)| * |(u k : ℝ)| * oneFormHeightFactor u := mul_le_mul_of_nonneg_right (mul_le_mul_of_nonneg_left (htu k) hck.le) (oneFormHeightFactor_pos u).le _ ≤ _ := mul_le_of_le_one_right (by positivity) (oneFormHeightFactor_le_one u) def optionOneFormCoefficient {I : Type*} (d : I → ℚ) : Option I → ℚ | none => -1 | some i => d i def optionOneFormCoefficient_sum {I : Type*} [Fintype I] (d u : I → ℚ) (P : ℤ) : (∑ j, optionOneFormCoefficient d j * hyperplaneOptionVector (P : ℚ) u j) = (∑ i, d i * u i) - (P : ℚ) := by simp only [Fintype.sum_option, optionOneFormCoefficient, hyperplaneOptionVector] ring def oneFormHeightFactor_option_project {I J : Type*} [Fintype I] [Fintype J] (f : J → I) (P : ℚ) (u : I → ℚ) : oneFormHeightFactor (hyperplaneOptionVector P u) ≤ oneFormHeightFactor (hyperplaneOptionVector P (u ∘ f)) := by have he : hyperplaneOptionVector P u ∘ Option.map f = hyperplaneOptionVector P (u ∘ f) := by funext j cases j <;> rfl simpa only [he] using oneFormHeightFactor_project (Option.map f) (hyperplaneOptionVector P u) def oneForm_integer_product_le {I : Type*} [Fintype I] [DecidableEq I] (d u : I → ℚ) (P : ℤ) (hu : ∀ i, TwoThreeUnit (u i)) : (twoThreeOneFormProduct (optionOneFormCoefficient d) (hyperplaneOptionVector (P : ℚ) u) none : ℝ) ≤ |(((∑ i, d i * u i) - (P : ℚ) : ℚ) : ℝ)| := by have hh := twoThreeOneFormProduct_integer_le (optionOneFormCoefficient d) P u hu have he : (fun i : Option I => i.elim (P : ℚ) u) = hyperplaneOptionVector (P : ℚ) u := by funext i cases i <;> rfl rw [he] at hh have he' (i : Option I) : i.elim (P : ℚ) u = hyperplaneOptionVector (P : ℚ) u i := congrFun he i simp_rw [he'] at hh rw [optionOneFormCoefficient_sum] at hh exact_mod_cast hh def IntegerOneFormLowerBound {I : Type} [Fintype I] (d : I → ℚ) : Prop := ∃ C : ℝ, 0 < C ∧ ∀ (P : ℤ) (u : I → ℚ), (∀ i, TwoThreeUnit (u i)) → ∀ t : ℝ, 0 < t → t ≤ 1 → (∀ i, t ≤ |(u i : ℝ)|) → ((∑ i, d i * u i) - (P : ℚ)) ≠ 0 → C * t * oneFormHeightFactor (hyperplaneOptionVector (P : ℚ) u) ≤ |(((∑ i, d i * u i) - (P : ℚ) : ℚ) : ℝ)| def oneForm_integer_rigidity (hST : OneFormCover405) {I : Type} [Fintype I] [DecidableEq I] (hI : Fintype.card I + 1 ≤ 0x195) (d : I → ℚ) : IntegerOneFormLowerBound d := by classical suffices h : ∀ n : ℕ, ∀ (J : Type) [Fintype J] [DecidableEq J], Fintype.card J = n → n + 1 ≤ 0x195 → ∀ c : J → ℚ, IntegerOneFormLowerBound c by exact h (Fintype.card I) I rfl hI d intro n induction n using Nat.strong_induction_on with | h n ih => intro J instF instD hcard hmax c by_cases hz : Fintype.card J = 0 · haveI : IsEmpty J := Fintype.card_eq_zero_iff.mp hz refine ⟨1, by norm_num, ?_⟩ intro P u hu t ht ht1 htu hn have hP : P ≠ 0 := by intro hzero simp [hzero] at hn have hPabs : 1 ≤ |(P : ℝ)| := by have hp : (0 : ℤ) < |P| := abs_pos.mpr hP have hp1 : (1 : ℤ) ≤ |P| := by omega exact_mod_cast hp1 have he : |(((∑ i, c i * u i) - (P : ℚ) : ℚ) : ℝ)| = |(P : ℝ)| := by simp rw [he, one_mul] exact ((mul_le_mul_of_nonneg_right ht1 (oneFormHeightFactor_pos (hyperplaneOptionVector (P : ℚ) u)).le).trans (by simpa using oneFormHeightFactor_le_one (hyperplaneOptionVector (P : ℚ) u))).trans hPabs · obtain ⟨F, hF, hcover⟩ := hST (Option J) (by simp; omega) (by simpa only [Fintype.card_option, hcard] using hmax) (optionOneFormCoefficient c) none (by simp [optionOneFormCoefficient]) have hlocal : ∀ a : F, ∃ C : ℝ, 0 < C ∧ ∀ (P : ℤ) (u : J → ℚ), (∀ i, TwoThreeUnit (u i)) → ∀ t : ℝ, 0 < t → t ≤ 1 → (∀ i, t ≤ |(u i : ℝ)|) → ((∑ i, c i * u i) - (P : ℚ)) ≠ 0 → (∑ j, a.1 j * hyperplaneOptionVector (P : ℚ) u j) = 0 → C * t * oneFormHeightFactor (hyperplaneOptionVector (P : ℚ) u) ≤ |(((∑ i, c i * u i) - (P : ℚ) : ℚ) : ℝ)| := by intro a by_cases ha0 : a.1 none = 0 · have hex : ∃ l : J, a.1 (some l) ≠ 0 := by by_contra! hh apply hF a.1 a.2 funext j cases j with | none => exact ha0 | some i => exact hh i obtain ⟨l, hl⟩ := hex let K := {i : J // i ≠ l} have hlt : Fintype.card K < n := by simpa only [K, ← hcard] using finite_hyperplane_delete_card_lt l obtain ⟨C, hC, hbound⟩ := ih (Fintype.card K) hlt K rfl (by omega) (hyperplaneDeleteCoefficient (fun i => a.1 (some i)) c l) refine ⟨C, hC, ?_⟩ intro P u hu t ht ht1 htu hn hax have heq := finite_option_hyperplane_eliminate_unit a.1 c u P ha0 l hl hax have hn' : ((∑ i : K, hyperplaneDeleteCoefficient (fun j => a.1 (some j)) c l i * u i) - (P : ℚ)) ≠ 0 := by rw [← heq] exact hn have hb := hbound P (fun i : K => u i) (fun i => hu i) t ht ht1 (fun i => htu i) hn' rw [← heq] at hb calc C * t * oneFormHeightFactor (hyperplaneOptionVector (P : ℚ) u) ≤ C * t * oneFormHeightFactor (hyperplaneOptionVector (P : ℚ) (fun i : K => u i)) := mul_le_mul_of_nonneg_left (oneFormHeightFactor_option_project Subtype.val (P : ℚ) u) (mul_nonneg hC.le ht.le) _ ≤ _ := hb · obtain ⟨C, hC, hbound⟩ := oneForm_unit_rigidity hST (by omega : Fintype.card J ≤ 0x195) (fun i => c i + a.1 (some i) / a.1 none) refine ⟨C, hC, ?_⟩ intro P u hu t ht ht1 htu hn hax have heq := finite_option_hyperplane_eliminate_integer a.1 c u P ha0 hax have hn' : (∑ i, (c i + a.1 (some i) / a.1 none) * u i) ≠ 0 := by rw [← heq] exact hn have hb := hbound u hu t ht htu hn' rw [← heq] at hb calc C * t * oneFormHeightFactor (hyperplaneOptionVector (P : ℚ) u) ≤ C * t * oneFormHeightFactor u := mul_le_mul_of_nonneg_left (oneFormHeightFactor_project some (hyperplaneOptionVector (P : ℚ) u)) (mul_nonneg hC.le ht.le) _ ≤ _ := hb choose C hC hbound using hlocal obtain ⟨B, hB, hB1, hBC⟩ := positive_common_bound C hC refine ⟨B, hB, ?_⟩ intro P u hu t ht ht1 htu hn let x := hyperplaneOptionVector (P : ℚ) u by_cases hp : (twoThreeOneFormProduct (optionOneFormCoefficient c) x none : ℝ) < oneFormHeightFactor x · have hxs : ∀ j, TwoThreeInteger (x j) := by intro j cases j with | none => exact twoThreeInteger_of_int P | some i => exact twoThreeInteger_of_unit (hu i) have hxne : x ≠ 0 := by intro hzero have he := optionOneFormCoefficient_sum c u P change (∑ j, optionOneFormCoefficient c j * x j) = _ at he simp only [hzero, Pi.zero_apply, mul_zero, Finset.sum_const_zero] at he exact hn he.symm obtain ⟨a, ha, hax⟩ := hcover x hxs hxne hp let af : F := ⟨a, ha⟩ calc B * t * oneFormHeightFactor x ≤ C af * t * oneFormHeightFactor x := mul_le_mul_of_nonneg_right (mul_le_mul_of_nonneg_right (hBC af) ht.le) (oneFormHeightFactor_pos x).le _ ≤ _ := hbound af P u hu t ht ht1 htu hn hax · have hfac : oneFormHeightFactor x ≤ |(((∑ i, c i * u i) - (P : ℚ) : ℚ) : ℝ)| := (le_of_not_gt hp).trans (oneForm_integer_product_le c u P hu) have hBt : B * t ≤ 1 := (mul_le_mul_of_nonneg_right hB1 ht.le).trans (by simpa using ht1) exact (mul_le_mul_of_nonneg_right hBt (oneFormHeightFactor_pos x).le).trans (by simpa using hfac) end end Bounty end SubmissionComponent_OneFormRigidity /- Component ReturnTruncationNonzero; SHA256 bf4cf6c23eff274b784d81d78fbca28bb84906c97bc8418bc32151c6452ef6ff -/ section SubmissionComponent_ReturnTruncationNonzero /- Elementary valuation lemmas for nonvanishing of separated return truncations. -/ namespace Bounty open Filter open scoped Topology def returnCoefficient4_ne_zero (i : Fin 4) : returnEventCoefficient4 i ≠ 0 := by fin_cases i <;> norm_num [returnEventCoefficient4] def returnCoefficient4_twoAdic (i : Fin 4) : padicValRat 2 (returnEventCoefficient4 i : ℚ) = (![0, 3, 0, 2] : Fin 4 → ℤ) i := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ have h2 : padicValRat 2 (2 : ℚ) = 1 := padicValRat.self (by norm_num) have h105 : padicValRat 2 (0x69 : ℚ) = 0 := padicValRat_nat_zero (by norm_num) have h3 : padicValRat 2 (3 : ℚ) = 0 := padicValRat_nat_zero (by norm_num) have h21 : padicValRat 2 (21 : ℚ) = 0 := padicValRat_nat_zero (by norm_num) have h15 : padicValRat 2 (15 : ℚ) = 0 := padicValRat_nat_zero (by norm_num) have h168 : padicValRat 2 (0xa8 : ℚ) = 3 := by rw [show (0xa8 : ℚ) = (2 : ℚ) ^ 3 * 21 by norm_num, padicValRat.mul (by norm_num) (by norm_num), padicValRat.pow, h2, h21] norm_num have h60 : padicValRat 2 (60 : ℚ) = 2 := by rw [show (60 : ℚ) = (2 : ℚ) ^ 2 * 15 by norm_num, padicValRat.mul (by norm_num) (by norm_num), padicValRat.pow, h2, h15] norm_num fin_cases i <;> norm_num [returnEventCoefficient4, h105, h168, h3, h60] def returnCoefficient4_twoAdic_bounds (i : Fin 4) : 0 ≤ padicValRat 2 (returnEventCoefficient4 i : ℚ) ∧ padicValRat 2 (returnEventCoefficient4 i : ℚ) ≤ 3 := by rw [returnCoefficient4_twoAdic] fin_cases i <;> norm_num def twoAdic_int_nonneg (z : ℤ) : 0 ≤ padicValRat 2 (z : ℚ) := by rw [padicValRat.of_int] positivity def twoAdic_four : padicValRat 2 (4 : ℚ) = 2 := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ have h2 : padicValRat 2 (2 : ℚ) = 1 := padicValRat.self (by norm_num) rw [show (4 : ℚ) = (2 : ℚ) ^ 2 by norm_num, padicValRat.pow, h2] norm_num def twoAdic_three : padicValRat 2 (3 : ℚ) = 0 := padicValRat_nat_zero (by norm_num : ¬ 2 ∣ 3) def twoAdic_dyadic_int (z : ℤ) (hz : z ≠ 0) (n : ℕ) : padicValRat 2 ((z : ℚ) / (4 : ℚ) ^ n) = padicValRat 2 (z : ℚ) - 2 * n := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ have hzQ : (z : ℚ) ≠ 0 := by exact_mod_cast hz rw [padicValRat.div hzQ (by positivity), padicValRat.pow, twoAdic_four] ring def twoAdic_add_ne_zero_of_lt {x y : ℚ} (hval : padicValRat 2 x < padicValRat 2 y) : x + y ≠ 0 := by intro hzero have he : x = -y := eq_neg_of_add_eq_zero_left hzero rw [he, padicValRat.neg] at hval exact (lt_irrefl _ hval) def twoAdic_sum_lower_bound {ι : Type*} (s : Finset ι) (f : ι → ℚ) (k : ℤ) (hf : ∀ i ∈ s, f i ≠ 0 → k ≤ padicValRat 2 (f i)) (hs : (∑ i ∈ s, f i) ≠ 0) : k ≤ padicValRat 2 (∑ i ∈ s, f i) := by classical let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ revert hf hs induction s using Finset.induction_on with | empty => simp | @insert a s ha ih => intro hf hs rw [Finset.sum_insert ha] at hs ⊢ have hrest : ∀ i ∈ s, f i ≠ 0 → k ≤ padicValRat 2 (f i) := fun i hi => hf i (Finset.mem_insert_of_mem hi) by_cases hfa : f a = 0 · simp only [hfa, zero_add] at hs ⊢ exact ih hrest hs by_cases hfs : (∑ i ∈ s, f i) = 0 · simp only [hfs, add_zero] exact hf a (Finset.mem_insert_self a s) hfa exact (le_min (hf a (Finset.mem_insert_self a s) hfa) (ih hrest hfs)).trans (padicValRat.min_le_padicValRat_add hs) def twoAdic_sum_unique_min {ι : Type*} (s : Finset ι) (f : ι → ℚ) {a : ι} (ha : a ∈ s) (hfa : f a ≠ 0) (hmin : ∀ i ∈ s, i ≠ a → f i ≠ 0 → padicValRat 2 (f a) < padicValRat 2 (f i)) : (∑ i ∈ s, f i) ≠ 0 ∧ padicValRat 2 (∑ i ∈ s, f i) = padicValRat 2 (f a) := by classical let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ rw [← Finset.add_sum_erase s f ha] by_cases hz : (∑ i ∈ s.erase a, f i) = 0 · simp only [hz, add_zero] exact ⟨hfa, trivial⟩ have hbound : padicValRat 2 (f a) + 1 ≤ padicValRat 2 (∑ i ∈ s.erase a, f i) := by apply twoAdic_sum_lower_bound (s.erase a) f _ _ hz intro i hi hfi have hh := hmin i (Finset.mem_of_mem_erase hi) (Finset.ne_of_mem_erase hi) hfi omega have hlt : padicValRat 2 (f a) < padicValRat 2 (∑ i ∈ s.erase a, f i) := by omega have hne := twoAdic_add_ne_zero_of_lt hlt exact ⟨hne, padicValRat.add_eq_of_lt hne hfa hz hlt⟩ def dyadic_integer_sum_unique_largest {ι : Type*} (s : Finset ι) (c : ι → ℤ) (n : ι → ℕ) {a : ι} (ha : a ∈ s) (hca : c a ≠ 0) (hgap : ∀ i ∈ s, i ≠ a → padicValRat 2 (c a : ℚ) < 2 * ((n a : ℤ) - n i)) : (∑ i ∈ s, (c i : ℚ) / (4 : ℚ) ^ n i) ≠ 0 ∧ padicValRat 2 (∑ i ∈ s, (c i : ℚ) / (4 : ℚ) ^ n i) = padicValRat 2 (c a : ℚ) - 2 * n a := by have hcaQ : (c a : ℚ) ≠ 0 := by exact_mod_cast hca have haTerm : (c a : ℚ) / (4 : ℚ) ^ n a ≠ 0 := div_ne_zero hcaQ (by positivity) have hh := twoAdic_sum_unique_min s (fun i => (c i : ℚ) / (4 : ℚ) ^ n i) ha haTerm (by intro i hi hia hfi have hci : c i ≠ 0 := by intro hz simp [hz] at hfi rw [twoAdic_dyadic_int _ hca, twoAdic_dyadic_int _ hci] have hb := twoAdic_int_nonneg (c i) have hg := hgap i hi hia omega) simpa only [twoAdic_dyadic_int _ hca] using hh def twoAdic_nat_log_bound (N : ℕ) (hN : 0 < N) : (padicValRat 2 (N : ℚ) : ℝ) * Real.log 2 ≤ Real.log (N : ℝ) := by have hdvd : (2 : ℕ) ^ padicValNat 2 N ∣ N := pow_padicValNat_dvd have hle : (2 : ℕ) ^ padicValNat 2 N ≤ N := Nat.le_of_dvd hN hdvd have hleR : (2 : ℝ) ^ padicValNat 2 N ≤ (N : ℝ) := by exact_mod_cast hle have hh := Real.log_le_log (by positivity : (0 : ℝ) < (2 : ℝ) ^ padicValNat 2 N) hleR rw [Real.log_pow] at hh simpa only [padicValRat.of_nat, Int.cast_natCast] using hh def twoAdic_three_pow_sub_one_log_bound (p : ℕ) (hp : 0 < p) : (padicValRat 2 ((3 : ℚ) ^ p - 1) : ℝ) * Real.log 2 ≤ (p : ℝ) * Real.log 3 := by have hpw : 1 < (3 : ℕ) ^ p := one_lt_pow₀ (by norm_num) (by omega) have hN : 0 < (3 : ℕ) ^ p - 1 := Nat.sub_pos_of_lt hpw have hcast : (((3 : ℕ) ^ p - 1 : ℕ) : ℚ) = (3 : ℚ) ^ p - 1 := by rw [Nat.cast_sub hpw.le] norm_num have hh := twoAdic_nat_log_bound ((3 : ℕ) ^ p - 1) hN rw [hcast] at hh have hNreal : (0 : ℝ) < (((3 : ℕ) ^ p - 1 : ℕ) : ℝ) := by exact_mod_cast hN have hleR : (((3 : ℕ) ^ p - 1 : ℕ) : ℝ) ≤ ((3 : ℕ) ^ p : ℝ) := by exact_mod_cast (Nat.sub_le ((3 : ℕ) ^ p) 1) have hlog := Real.log_le_log hNreal hleR norm_num only [Nat.cast_pow, Nat.cast_ofNat, Real.log_pow] at hlog exact hh.trans hlog def returnCoefficient4_shifted_twoAdic (p : ℕ) (i : Fin 4) : padicValRat 2 ((3 : ℚ) ^ p * (returnEventCoefficient4 i : ℚ)) = padicValRat 2 (returnEventCoefficient4 i : ℚ) := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ have hc : (returnEventCoefficient4 i : ℚ) ≠ 0 := by exact_mod_cast returnCoefficient4_ne_zero i rw [padicValRat.mul (by positivity) hc, padicValRat.pow, twoAdic_three] ring def returnMiddleCoefficient_twoAdic_bound (r : ℕ) (i : Fin 4) : (padicValRat 2 (((3 : ℚ) ^ (rotationReturns r).p.toNat - 1) * (returnEventCoefficient4 i : ℚ)) : ℝ) * Real.log 2 ≤ returnScale r + 3 * Real.log 2 := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ have hp : 0 < (rotationReturns r).p.toNat := by have hb := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hq := (rotationReturns r).q_pos omega have hfactor : (3 : ℚ) ^ (rotationReturns r).p.toNat - 1 ≠ 0 := ne_of_gt (sub_pos.mpr (one_lt_pow₀ (by norm_num) (by omega))) have hc : (returnEventCoefficient4 i : ℚ) ≠ 0 := by exact_mod_cast returnCoefficient4_ne_zero i have hv := twoAdic_three_pow_sub_one_log_bound (rotationReturns r).p.toNat hp have hC : (padicValRat 2 (returnEventCoefficient4 i : ℚ) : ℝ) ≤ 3 := by exact_mod_cast (returnCoefficient4_twoAdic_bounds i).2 have hlog : 0 < Real.log 2 := Real.log_pos (by norm_num) have hCb := mul_le_mul_of_nonneg_right hC hlog.le have hoffset : ((rotationReturns r).p.toNat : ℝ) * Real.log 3 ≤ returnScale r := by simpa [returnEventOffset, Fin.ext_iff] using (returnEventOffset_bounds r (0, 0)).2 rw [padicValRat.mul hfactor hc, Int.cast_add, add_mul] linarith def twoAdic_sum_nonneg {ι : Type*} (s : Finset ι) (f : ι → ℚ) (hf : ∀ i ∈ s, 0 ≤ padicValRat 2 (f i)) : 0 ≤ padicValRat 2 (∑ i ∈ s, f i) := by by_cases hz : (∑ i ∈ s, f i) = 0 · simp [hz] exact twoAdic_sum_lower_bound s f 0 (fun i hi _ => hf i hi) hz def twoAdic_add_nonneg {x y : ℚ} (hx : 0 ≤ padicValRat 2 x) (hy : 0 ≤ padicValRat 2 y) : 0 ≤ padicValRat 2 (x + y) := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ by_cases hz : x + y = 0 · simp [hz] exact (le_min hx hy).trans (padicValRat.min_le_padicValRat_add hz) def twoAdic_sub_nonneg {x y : ℚ} (hx : 0 ≤ padicValRat 2 x) (hy : 0 ≤ padicValRat 2 y) : 0 ≤ padicValRat 2 (x - y) := by rw [sub_eq_add_neg] exact twoAdic_add_nonneg hx (by simpa only [padicValRat.neg] using hy) def returnTernaryWeightedUnit_twoAdic (r : ℕ) (i : ReturnEventFamily) (n : ℕ) (hi : 2 ≤ i.1) : 0 ≤ padicValRat 2 ((returnEventCoefficient i : ℚ) * returnRationalUnit r i n) := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ by_cases hc : returnEventCoefficient i = 0 · simp [hc] have hcQ : (returnEventCoefficient i : ℚ) ≠ 0 := by exact_mod_cast hc rw [padicValRat.mul hcQ (returnRationalUnit_ne_zero r i n), returnRationalUnit_primeMonomial, rationalPrimeMonomial_val_two] apply add_nonneg (twoAdic_int_nonneg _) unfold returnUnitFourExponent rw [if_neg (not_lt.mpr hi)] split <;> positivity noncomputable def returnDyadicTruncation (r : ℕ) (T : ℝ) : ℚ := ∑ i : Fin 4, ((∑ n ∈ returnTruncationIndices r T (0, i), (returnEventCoefficient (0, i) : ℚ) * returnRationalUnit r (0, i) n) + (∑ n ∈ returnTruncationIndices r T (1, i), (returnEventCoefficient (1, i) : ℚ) * returnRationalUnit r (1, i) n)) noncomputable def returnTernaryTruncation (r : ℕ) (T : ℝ) : ℚ := ∑ i : Fin 4, ((∑ n ∈ returnTruncationIndices r T (2, i), (returnEventCoefficient (2, i) : ℚ) * returnRationalUnit r (2, i) n) + (∑ n ∈ returnTruncationIndices r T (3, i), (returnEventCoefficient (3, i) : ℚ) * returnRationalUnit r (3, i) n)) def returnRationalTruncation_split_primes (r : ℕ) (T : ℝ) : returnRationalTruncation r T = returnDyadicTruncation r T + returnTernaryTruncation r T := by simp only [returnRationalTruncation, returnDyadicTruncation, returnTernaryTruncation, Fintype.sum_prod_type, Fin.sum_univ_four] ring def returnTernaryTruncation_twoAdic (r : ℕ) (T : ℝ) : 0 ≤ padicValRat 2 (returnTernaryTruncation r T) := by unfold returnTernaryTruncation apply twoAdic_sum_nonneg intro i _ apply twoAdic_add_nonneg · apply twoAdic_sum_nonneg intro n _ exact returnTernaryWeightedUnit_twoAdic r (2, i) n (by norm_num [Fin.le_def]) · apply twoAdic_sum_nonneg intro n _ exact returnTernaryWeightedUnit_twoAdic r (3, i) n (by norm_num [Fin.le_def]) def returnTernaryTruncation_difference_twoAdic (r : ℕ) (T₁ T₂ : ℝ) : 0 ≤ padicValRat 2 (returnTernaryTruncation r T₂ - returnTernaryTruncation r T₁) := twoAdic_sub_nonneg (returnTernaryTruncation_twoAdic r T₂) (returnTernaryTruncation_twoAdic r T₁) def returnRationalTruncation_ne_of_dyadic_valuation (r : ℕ) (T₁ T₂ : ℝ) (hdyadic : padicValRat 2 (returnDyadicTruncation r T₂ - returnDyadicTruncation r T₁) < 0) : returnRationalTruncation r T₂ ≠ returnRationalTruncation r T₁ := by have hternary := returnTernaryTruncation_difference_twoAdic r T₁ T₂ have hne := twoAdic_add_ne_zero_of_lt (hdyadic.trans_le hternary) intro he apply hne rw [returnRationalTruncation_split_primes, returnRationalTruncation_split_primes] at he linear_combination he abbrev ReturnDyadicIndex := Σ _ : Fin 4, ℕ noncomputable def returnDyadicIndices (r : ℕ) (T : ℝ) : Finset ReturnDyadicIndex := Finset.univ.sigma (fun i => returnTruncationIndices r T (0, i)) noncomputable def returnDyadicNumerator (r : ℕ) (T : ℝ) (a : ReturnDyadicIndex) : ℤ := by classical exact returnEventCoefficient4 a.1 * ((3 : ℤ) ^ (rotationReturns r).p.toNat - if (a.2 : ℝ) * Real.log 4 < T then 1 else 0) def mem_returnDyadicIndices (r : ℕ) (T : ℝ) (a : ReturnDyadicIndex) : a ∈ returnDyadicIndices r T ↔ 0 < a.2 ∧ jumpVisit4 r a.1 a.2 ≠ 0 ∧ (a.2 : ℝ) * Real.log 4 - ((rotationReturns r).p.toNat : ℝ) * Real.log 3 < T := by classical simp [returnDyadicIndices, mem_returnTruncationIndices, returnEventVisit, returnEventTime, returnEventStep, returnEventOffset, Fin.lt_def, and_assoc] def mem_returnUnshiftedDyadicIndices (r : ℕ) (T : ℝ) (i : Fin 4) (n : ℕ) : n ∈ returnTruncationIndices r T (1, i) ↔ 0 < n ∧ jumpVisit4 r i n ≠ 0 ∧ (n : ℝ) * Real.log 4 < T := by classical simp [mem_returnTruncationIndices, returnEventVisit, returnEventTime, returnEventStep, returnEventOffset, Fin.lt_def, Fin.ext_iff, and_assoc] def returnUnshiftedDyadicIndices_subset (r : ℕ) (T : ℝ) (i : Fin 4) : returnTruncationIndices r T (1, i) ⊆ returnTruncationIndices r T (0, i) := by intro n hn have hh := (mem_returnUnshiftedDyadicIndices r T i n).mp hn have ho : 0 ≤ ((rotationReturns r).p.toNat : ℝ) * Real.log 3 := by positivity have hmem : (⟨i, n⟩ : ReturnDyadicIndex) ∈ returnDyadicIndices r T := by apply (mem_returnDyadicIndices r T ⟨i, n⟩).mpr exact ⟨hh.1, hh.2.1, by linarith [hh.2.2]⟩ simpa only [returnDyadicIndices, Finset.mem_sigma, Finset.mem_univ, true_and] using hmem def returnDyadicTruncation_expanded (r : ℕ) (T : ℝ) : returnDyadicTruncation r T = ∑ i : Fin 4, ((3 : ℚ) ^ (rotationReturns r).p.toNat * (∑ n ∈ returnTruncationIndices r T (0, i), (returnEventCoefficient4 i : ℚ) / (4 : ℚ) ^ n) - ∑ n ∈ returnTruncationIndices r T (1, i), (returnEventCoefficient4 i : ℚ) / (4 : ℚ) ^ n) := by unfold returnDyadicTruncation apply Finset.sum_congr rfl intro i _ rw [Finset.mul_sum, sub_eq_add_neg, ← Finset.sum_neg_distrib] congr 1 · apply Finset.sum_congr rfl intro n _ norm_num [returnEventCoefficient, returnRationalUnit, Fin.ext_iff] ring · apply Finset.sum_congr rfl intro n _ norm_num [returnEventCoefficient, returnRationalUnit, Fin.ext_iff] ring def returnDyadicTruncation_as_integer_sum (r : ℕ) (T : ℝ) : returnDyadicTruncation r T = ∑ a ∈ returnDyadicIndices r T, (returnDyadicNumerator r T a : ℚ) / (4 : ℚ) ^ a.2 := by classical rw [returnDyadicTruncation_expanded] simp only [returnDyadicIndices, Finset.sum_sigma] apply Finset.sum_congr rfl intro i _ have hsub := returnUnshiftedDyadicIndices_subset r T i have hsum : (∑ n ∈ returnTruncationIndices r T (1, i), (returnEventCoefficient4 i : ℚ) / (4 : ℚ) ^ n) = ∑ n ∈ returnTruncationIndices r T (0, i), if (n : ℝ) * Real.log 4 < T then (returnEventCoefficient4 i : ℚ) / (4 : ℚ) ^ n else 0 := by apply Finset.sum_subset_zero_on_sdiff hsub · intro n hn have hns := (Finset.mem_sdiff.mp hn).1 have hnu := (Finset.mem_sdiff.mp hn).2 have hmem : (⟨i, n⟩ : ReturnDyadicIndex) ∈ returnDyadicIndices r T := by simpa only [returnDyadicIndices, Finset.mem_sigma, Finset.mem_univ, true_and] using hns have hh := (mem_returnDyadicIndices r T ⟨i, n⟩).mp hmem have ht : ¬ (n : ℝ) * Real.log 4 < T := by intro ht exact hnu ((mem_returnUnshiftedDyadicIndices r T i n).mpr ⟨hh.1, hh.2.1, ht⟩) simp only [if_neg ht] · intro n hn have ht := ((mem_returnUnshiftedDyadicIndices r T i n).mp hn).2.2 simp only [if_pos ht] rw [hsum, Finset.mul_sum, ← Finset.sum_sub_distrib] apply Finset.sum_congr rfl intro n _ by_cases ht : (n : ℝ) * Real.log 4 < T <;> simp [returnDyadicNumerator, ht] <;> ring def twoAdic_sum_scaled_lower_bound {ι : Type*} (s : Finset ι) (f : ι → ℚ) (k c : ℝ) (hc : 0 < c) (hf : ∀ i ∈ s, f i ≠ 0 → k < (padicValRat 2 (f i) : ℝ) * c) (hs : (∑ i ∈ s, f i) ≠ 0) : k < (padicValRat 2 (∑ i ∈ s, f i) : ℝ) * c := by classical let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ revert hf hs induction s using Finset.induction_on with | empty => simp | @insert a s ha ih => intro hf hs rw [Finset.sum_insert ha] at hs ⊢ have hrest : ∀ i ∈ s, f i ≠ 0 → k < (padicValRat 2 (f i) : ℝ) * c := fun i hi => hf i (Finset.mem_insert_of_mem hi) by_cases hfa : f a = 0 · simp only [hfa, zero_add] at hs ⊢ exact ih hrest hs by_cases hfs : (∑ i ∈ s, f i) = 0 · simp only [hfs, add_zero] exact hf a (Finset.mem_insert_self a s) hfa have hmin := padicValRat.min_le_padicValRat_add (p := 2) hs rcases le_total (padicValRat 2 (f a)) (padicValRat 2 (∑ i ∈ s, f i)) with hle | hle · rw [min_eq_left hle] at hmin have hminR : (padicValRat 2 (f a) : ℝ) ≤ (padicValRat 2 (f a + ∑ i ∈ s, f i) : ℝ) := by exact_mod_cast hmin exact (hf a (Finset.mem_insert_self a s) hfa).trans_le (mul_le_mul_of_nonneg_right hminR hc.le) · rw [min_eq_right hle] at hmin have hminR : (padicValRat 2 (∑ i ∈ s, f i) : ℝ) ≤ (padicValRat 2 (f a + ∑ i ∈ s, f i) : ℝ) := by exact_mod_cast hmin exact (ih hrest hfs).trans_le (mul_le_mul_of_nonneg_right hminR hc.le) def return_log_four_eq_two_log_two : Real.log 4 = 2 * Real.log 2 := by rw [show (4 : ℝ) = (2 : ℝ) ^ 2 by norm_num, Real.log_pow] norm_num def returnDyadicTruncation_small_cutoff (r : ℕ) (T : ℝ) (hT : T < 5 * returnScale r) : -6 * returnScale r < (padicValRat 2 (returnDyadicTruncation r T) : ℝ) * Real.log 2 := by have hlog : 0 < Real.log 2 := Real.log_pos (by norm_num) have hL := returnScale_pos r by_cases hz : returnDyadicTruncation r T = 0 · simp only [hz, padicValRat.zero, Int.cast_zero, zero_mul] linarith rw [returnDyadicTruncation_as_integer_sum] at hz ⊢ apply twoAdic_sum_scaled_lower_bound _ _ _ _ hlog _ hz intro a ha hterm have hnum : returnDyadicNumerator r T a ≠ 0 := by intro he simp [he] at hterm rw [twoAdic_dyadic_int _ hnum] have hidx := ((mem_returnDyadicIndices r T a).mp ha).2.2 have hoffset : ((rotationReturns r).p.toNat : ℝ) * Real.log 3 ≤ returnScale r := by simpa [returnEventOffset, Fin.ext_iff] using (returnEventOffset_bounds r (0, 0)).2 have hval : (0 : ℝ) ≤ (padicValRat 2 (returnDyadicNumerator r T a : ℚ) : ℝ) := by exact_mod_cast twoAdic_int_nonneg (returnDyadicNumerator r T a) have hpos := mul_nonneg hval hlog.le rw [return_log_four_eq_two_log_two] at hidx push_cast nlinarith def returnDyadicIndices_largest (r : ℕ) (T : ℝ) (hT : 2 * returnScale r < T) (hsep : ∀ (i j : Fin 4) (m n : ℕ), jumpVisit4 r i m ≠ 0 → jumpVisit4 r j n ≠ 0 → (i ≠ j ∨ m ≠ n) → (1 : ℤ) < |(n : ℤ) - m|) : ∃ a ∈ returnDyadicIndices r T, T - 2 * returnScale r < (a.2 : ℝ) * Real.log 4 ∧ (∀ b ∈ returnDyadicIndices r T, b.2 ≤ a.2) ∧ (∀ b ∈ returnDyadicIndices r T, b ≠ a → b.2 + 2 ≤ a.2) := by classical obtain ⟨n, hn, hlow, hupp, hvisit⟩ := jumpVisit4_log_covered r 0 T hT have hnmem : (⟨0, n⟩ : ReturnDyadicIndex) ∈ returnDyadicIndices r T := by apply (mem_returnDyadicIndices r T ⟨0, n⟩).mpr have ho : 0 ≤ ((rotationReturns r).p.toNat : ℝ) * Real.log 3 := by positivity exact ⟨hn, by rw [hvisit]; norm_num, by linarith⟩ obtain ⟨a, ha, hmax⟩ := Finset.exists_max_image (returnDyadicIndices r T) (fun a => a.2) ⟨⟨0, n⟩, hnmem⟩ have hlog : 0 < Real.log 4 := Real.log_pos (by norm_num) refine ⟨a, ha, ?_, hmax, ?_⟩ · have hna : (n : ℝ) ≤ (a.2 : ℝ) := by exact_mod_cast hmax ⟨0, n⟩ hnmem exact hlow.trans_le (mul_le_mul_of_nonneg_right hna hlog.le) · intro b hb hba have hne : b.1 ≠ a.1 ∨ b.2 ≠ a.2 := by by_contra hh push Not at hh exact hba (Sigma.ext hh.1 (heq_of_eq hh.2)) have hs := hsep b.1 a.1 b.2 a.2 ((mem_returnDyadicIndices r T b).mp hb).2.1 ((mem_returnDyadicIndices r T a).mp ha).2.1 hne have hm := hmax b hb rw [abs_of_nonneg (by omega : (0 : ℤ) ≤ (a.2 : ℤ) - b.2)] at hs omega def returnDyadicTruncation_large_cutoff (r : ℕ) (T : ℝ) (hL : 3 * Real.log 2 < returnScale r) (hT : 10 * returnScale r < T) (hsep : ∀ (i j : Fin 4) (m n : ℕ), jumpVisit4 r i m ≠ 0 → jumpVisit4 r j n ≠ 0 → (i ≠ j ∨ m ≠ n) → (1 : ℤ) < |(n : ℤ) - m|) : returnDyadicTruncation r T ≠ 0 ∧ (padicValRat 2 (returnDyadicTruncation r T) : ℝ) * Real.log 2 < -6 * returnScale r := by classical let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ have hlog : 0 < Real.log 2 := Real.log_pos (by norm_num) have hscale := returnScale_pos r obtain ⟨a, ha, hlow, hmax, hgap⟩ := returnDyadicIndices_largest r T (by linarith) hsep have hidx : 8 * returnScale r < (a.2 : ℝ) * (2 * Real.log 2) := by rw [return_log_four_eq_two_log_two] at hlow linarith by_cases ht : (a.2 : ℝ) * Real.log 4 < T · have hnum : ∀ b ∈ returnDyadicIndices r T, returnDyadicNumerator r T b = returnEventCoefficient4 b.1 * ((3 : ℤ) ^ (rotationReturns r).p.toNat - 1) := by intro b hb have hba : (b.2 : ℝ) ≤ (a.2 : ℝ) := by exact_mod_cast hmax b hb have hbt : (b.2 : ℝ) * Real.log 4 < T := (mul_le_mul_of_nonneg_right hba (Real.log_pos (by norm_num)).le).trans_lt ht simp [returnDyadicNumerator, hbt] have hsum := dyadic_integer_sum_unique_largest (returnDyadicIndices r T) (fun b => returnEventCoefficient4 b.1) (fun b => b.2) ha (returnCoefficient4_ne_zero a.1) (by intro b hb hba have hv := (returnCoefficient4_twoAdic_bounds a.1).2 have hg := hgap b hb hba omega) have hp : 0 < (rotationReturns r).p.toNat := by have hb := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hq := (rotationReturns r).q_pos omega have hfactor : (3 : ℚ) ^ (rotationReturns r).p.toNat - 1 ≠ 0 := ne_of_gt (sub_pos.mpr (one_lt_pow₀ (by norm_num) (by omega))) have hc : (returnEventCoefficient4 a.1 : ℚ) ≠ 0 := by exact_mod_cast returnCoefficient4_ne_zero a.1 have hD : returnDyadicTruncation r T = ((3 : ℚ) ^ (rotationReturns r).p.toNat - 1) * (∑ b ∈ returnDyadicIndices r T, (returnEventCoefficient4 b.1 : ℚ) / (4 : ℚ) ^ b.2) := by rw [returnDyadicTruncation_as_integer_sum, Finset.mul_sum] apply Finset.sum_congr rfl intro b hb rw [hnum b hb] push_cast ring have hv : padicValRat 2 (returnDyadicTruncation r T) = padicValRat 2 (((3 : ℚ) ^ (rotationReturns r).p.toNat - 1) * (returnEventCoefficient4 a.1 : ℚ)) - 2 * a.2 := by rw [hD, padicValRat.mul hfactor hsum.1, hsum.2, padicValRat.mul hfactor hc] ring refine ⟨by rw [hD]; exact mul_ne_zero hfactor hsum.1, ?_⟩ have hb := returnMiddleCoefficient_twoAdic_bound r a.1 rw [hv] push_cast nlinarith · have hnum : returnDyadicNumerator r T a = returnEventCoefficient4 a.1 * (3 : ℤ) ^ (rotationReturns r).p.toNat := by simp [returnDyadicNumerator, ht] have hnum_ne : returnDyadicNumerator r T a ≠ 0 := by rw [hnum] exact mul_ne_zero (returnCoefficient4_ne_zero a.1) (by positivity) have hval : padicValRat 2 (returnDyadicNumerator r T a : ℚ) = padicValRat 2 (returnEventCoefficient4 a.1 : ℚ) := by rw [hnum] push_cast rw [mul_comm, returnCoefficient4_shifted_twoAdic] have hsum := dyadic_integer_sum_unique_largest (returnDyadicIndices r T) (returnDyadicNumerator r T) (fun b => b.2) ha hnum_ne (by intro b hb hba rw [hval] have hv := (returnCoefficient4_twoAdic_bounds a.1).2 have hg := hgap b hb hba omega) rw [returnDyadicTruncation_as_integer_sum] refine ⟨hsum.1, ?_⟩ rw [hsum.2, hval] have hv : (padicValRat 2 (returnEventCoefficient4 a.1 : ℚ) : ℝ) ≤ 3 := by exact_mod_cast (returnCoefficient4_twoAdic_bounds a.1).2 have hvbound := mul_le_mul_of_nonneg_right hv hlog.le push_cast nlinarith def returnDyadicTruncation_difference_negative (r : ℕ) (T₁ T₂ : ℝ) (hL : 3 * Real.log 2 < returnScale r) (hT₁ : T₁ < 5 * returnScale r) (hT₂ : 10 * returnScale r < T₂) (hsep : ∀ (i j : Fin 4) (m n : ℕ), jumpVisit4 r i m ≠ 0 → jumpVisit4 r j n ≠ 0 → (i ≠ j ∨ m ≠ n) → (1 : ℤ) < |(n : ℤ) - m|) : padicValRat 2 (returnDyadicTruncation r T₂ - returnDyadicTruncation r T₁) < 0 := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ have hlog : 0 < Real.log 2 := Real.log_pos (by norm_num) have hfirst := returnDyadicTruncation_small_cutoff r T₁ hT₁ have hsecond := returnDyadicTruncation_large_cutoff r T₂ hL hT₂ hsep have hltR : (padicValRat 2 (returnDyadicTruncation r T₂) : ℝ) < (padicValRat 2 (returnDyadicTruncation r T₁) : ℝ) := by nlinarith [hsecond.2] have hlt : padicValRat 2 (returnDyadicTruncation r T₂) < padicValRat 2 (returnDyadicTruncation r T₁) := by exact_mod_cast hltR have hneg : padicValRat 2 (returnDyadicTruncation r T₂) < 0 := by have hscale := returnScale_pos r have hnegR : (padicValRat 2 (returnDyadicTruncation r T₂) : ℝ) < 0 := by nlinarith [hsecond.2] exact_mod_cast hnegR by_cases hzero : returnDyadicTruncation r T₁ = 0 · simpa only [hzero, sub_zero] using hneg have hneg_ne : -returnDyadicTruncation r T₁ ≠ 0 := neg_ne_zero.mpr hzero have hltneg : padicValRat 2 (returnDyadicTruncation r T₂) < padicValRat 2 (-returnDyadicTruncation r T₁) := by simpa only [padicValRat.neg] using hlt have hsum_ne := twoAdic_add_ne_zero_of_lt hltneg rw [sub_eq_add_neg, padicValRat.add_eq_of_lt hsum_ne hsecond.1 hneg_ne hltneg] exact hneg /-- The actual rational truncations at the two cutoff scales are eventually distinct. This conclusion uses only visit coverage, visit separation, and integer valuations. -/ def returnRationalTruncation_separated_cutoffs : ∀ᶠ r in atTop, ∀ T₁ T₂ : ℝ, T₁ < 5 * returnScale r → 10 * returnScale r < T₂ → returnRationalTruncation r T₂ ≠ returnRationalTruncation r T₁ := by have hscale := returnScale_tendsto.eventually (eventually_gt_atTop (3 * Real.log 2)) filter_upwards [hscale, jumpVisit4_all_indices_separate 1] with r hr hsep T₁ T₂ hT₁ hT₂ exact returnRationalTruncation_ne_of_dyadic_valuation r T₁ T₂ (returnDyadicTruncation_difference_negative r T₁ T₂ hr hT₁ hT₂ hsep) end Bounty end SubmissionComponent_ReturnTruncationNonzero /- Component ReturnErrorDifference; SHA256 a922b78606dc12375ed413c10bb570c9cfea0021b1a5a18d882ed1534cf4ca7e -/ section SubmissionComponent_ReturnErrorDifference /- The two errors have a common rational head and integral prefix. -/ namespace Bounty def returnApproximationError_difference (z : ℚ) (r : ℕ) (T U : ℝ) : returnApproximationError z r U - returnApproximationError z r T = (returnRationalTruncation r T : ℝ) - (returnRationalTruncation r U : ℝ) := by unfold returnApproximationError rw [returnApproximation_linear_form, returnApproximation_linear_form] push_cast ring def returnApproximationError_ne_zero_of_truncations_ne (z : ℚ) (r : ℕ) (T U : ℝ) (h : returnRationalTruncation r T ≠ returnRationalTruncation r U) : returnApproximationError z r T ≠ 0 ∨ returnApproximationError z r U ≠ 0 := by by_contra hh push Not at hh have he := returnApproximationError_difference z r T U rw [hh.1, hh.2, sub_self] at he have hr : (returnRationalTruncation r T : ℝ) = (returnRationalTruncation r U : ℝ) := by linarith exact h (Rat.cast_injective hr) end Bounty end SubmissionComponent_ReturnErrorDifference /- Component ReturnUnitSeparation; SHA256 f648432f13523998682a8090dec82db6677fc4c02e63d1538c1d7f43e3cfdbf3 -/ section SubmissionComponent_ReturnUnitSeparation /- Uniform arithmetic separation of the moving rational event units. -/ open Filter open scoped Topology namespace Bounty def rationalPrimeMonomial_val_three (a b c : ℤ) : padicValRat 3 (rationalPrimeMonomial a b c) = b := by let : Fact (Nat.Prime 3) := ⟨by norm_num⟩ have h2 : padicValRat 3 2 = 0 := padicValRat_nat_zero (by norm_num : ¬ 3 ∣ 2) have h3 : padicValRat 3 3 = 1 := padicValRat.self (by norm_num) have h5 : padicValRat 3 5 = 0 := padicValRat_nat_zero (by norm_num : ¬ 3 ∣ 5) unfold rationalPrimeMonomial rw [padicValRat.mul (by positivity) (by positivity), padicValRat.mul (by positivity) (by positivity)] simp only [padicValRat.zpow, h2, h3, h5] ring def returnRationalUnit_val_two (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : padicValRat 2 (returnRationalUnit r i n) = 2 * returnUnitFourExponent r i n := by rw [returnRationalUnit_primeMonomial, rationalPrimeMonomial_val_two] def returnRationalUnit_val_three (r : ℕ) (i : ReturnEventFamily) (n : ℕ) : padicValRat 3 (returnRationalUnit r i n) = returnUnitThreeExponent r i n := by rw [returnRationalUnit_primeMonomial, rationalPrimeMonomial_val_three] def jumpVisit3_all_indices_separate (M : ℕ) : ∀ᶠ r in atTop, ∀ i j : Fin 4, ∀ m n : ℕ, jumpVisit3 r i m ≠ 0 → jumpVisit3 r j n ≠ 0 → (i ≠ j ∨ m ≠ n) → (M : ℤ) < |(n : ℤ) - m| := by have hQ := rotationReturns_denominators_tendsto.2.eventually (eventually_gt_atTop M) have hh : ∀ᶠ r in atTop, ∀ i ∈ (Finset.univ : Finset (Fin 4)), ∀ j ∈ (Finset.univ : Finset (Fin 4)), ∀ m n : ℕ, jumpVisit3 r i m ≠ 0 → jumpVisit3 r j n ≠ 0 → (i ≠ j ∨ m ≠ n) → (M : ℤ) < |(n : ℤ) - m| := by apply (eventually_all_finset _).mpr intro i _ apply (eventually_all_finset _).mpr intro j _ by_cases hij : i = j · subst j filter_upwards [hQ] with r hr m n hm hn hne have hP := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hmn : m ≠ n := hne.resolve_left (not_not.mpr rfl) rcases lt_or_gt_of_ne hmn with hlt | hlt · have hs := jumpVisit3_separated r i hlt hm hn rw [abs_of_nonneg (by omega : (0 : ℤ) ≤ (n : ℤ) - m)] omega · have hs := jumpVisit3_separated r i hlt hn hm rw [abs_of_nonpos (by omega : (n : ℤ) - m ≤ 0)] omega · filter_upwards [jumpVisit3_distinct_orbits_separate hij M] with r hr m n hm hn _ exact hr m n hm hn filter_upwards [hh] with r hr i j exact hr i (Finset.mem_univ i) j (Finset.mem_univ j) def returnUnitExponent_separate (M : ℕ) : ∀ᶠ r in atTop, ∀ i j : ReturnEventFamily, ∀ m n : ℕ, returnEventVisit r i m → returnEventVisit r j n → (i ≠ j ∨ m ≠ n) → (M : ℤ) < |returnUnitFourExponent r i m - returnUnitFourExponent r j n| ∨ (M : ℤ) < |returnUnitThreeExponent r i m - returnUnitThreeExponent r j n| := by have hq := rotationReturns_denominators_tendsto.1.eventually (eventually_gt_atTop M) filter_upwards [hq, returnEventVisit_indices_diverge M, jumpVisit4_all_indices_separate M, jumpVisit3_all_indices_separate M] with r hqr hidx h4 h3 i j m n hm hn hne have hmr : M < m := hidx i m hm have hnr : M < n := hidx j n hn have hnum := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hpr : (M : ℤ) < (rotationReturns r).p.toNat := by omega rcases i with ⟨a, b⟩ rcases j with ⟨c, d⟩ by_cases hac : a = c · subst c have hbd : b ≠ d ∨ m ≠ n := by by_contra hh push Not at hh have he : (a, b) = (a, d) := by rw [hh.1] exact hne.elim (fun h => h he) (fun h => h hh.2) by_cases ha : a < 2 · have hm' : jumpVisit4 r b m ≠ 0 := by simpa only [returnEventVisit, if_pos ha] using hm.2 have hn' : jumpVisit4 r d n ≠ 0 := by simpa only [returnEventVisit, if_pos ha] using hn.2 have hs := h4 b d m n hm' hn' hbd left simpa only [returnUnitFourExponent, if_pos ha, neg_sub_neg] using hs · have hm' : jumpVisit3 r b m ≠ 0 := by simpa only [returnEventVisit, if_neg ha] using hm.2 have hn' : jumpVisit3 r d n ≠ 0 := by simpa only [returnEventVisit, if_neg ha] using hn.2 have hs := h3 b d m n hm' hn' hbd have ha0 : a ≠ 0 := by intro he; subst a; norm_num [Fin.lt_def] at ha right simpa only [returnUnitThreeExponent, if_neg ha0, if_neg ha, neg_sub_neg] using hs · fin_cases a <;> fin_cases c <;> norm_num [Fin.ext_iff] at hac <;> norm_num [returnUnitFourExponent, returnUnitThreeExponent, Fin.lt_def, Fin.ext_iff] <;> (try simp only [lt_abs]) <;> omega def returnRationalUnit_quotient_valuations_separate (M : ℕ) : ∀ᶠ r in atTop, ∀ i j : ReturnEventFamily, ∀ m n : ℕ, returnEventVisit r i m → returnEventVisit r j n → (i ≠ j ∨ m ≠ n) → (M : ℤ) < |padicValRat 2 (returnRationalUnit r i m / returnRationalUnit r j n)| ∨ (M : ℤ) < |padicValRat 3 (returnRationalUnit r i m / returnRationalUnit r j n)| := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ let : Fact (Nat.Prime 3) := ⟨by norm_num⟩ filter_upwards [returnUnitExponent_separate M] with r hr i j m n hm hn hne rw [padicValRat.div (returnRationalUnit_ne_zero r i m) (returnRationalUnit_ne_zero r j n), padicValRat.div (returnRationalUnit_ne_zero r i m) (returnRationalUnit_ne_zero r j n), returnRationalUnit_val_two, returnRationalUnit_val_two, returnRationalUnit_val_three, returnRationalUnit_val_three] rcases hr i j m n hm hn hne with h | h · left rw [← mul_sub, abs_mul] norm_num omega · exact Or.inr h def returnRationalUnit_quotient_escapes_finset (s : Finset ℚ) : ∀ᶠ r in atTop, ∀ i j : ReturnEventFamily, ∀ m n : ℕ, returnEventVisit r i m → returnEventVisit r j n → (i ≠ j ∨ m ≠ n) → returnRationalUnit r i m / returnRationalUnit r j n ∉ s := by let f : ℚ → ℕ := fun x => max (padicValRat 2 x).natAbs (padicValRat 3 x).natAbs let M := s.sup f have hb (x : ℚ) (hx : x ∈ s) : |padicValRat 2 x| ≤ (M : ℤ) ∧ |padicValRat 3 x| ≤ (M : ℤ) := by have hh : f x ≤ M := Finset.le_sup hx have h2 : (padicValRat 2 x).natAbs ≤ M := (le_max_left _ _).trans hh have h3 : (padicValRat 3 x).natAbs ≤ M := (le_max_right _ _).trans hh constructor · simpa only [Int.natCast_natAbs] using (Nat.cast_le.mpr h2 : ((padicValRat 2 x).natAbs : ℤ) ≤ (M : ℤ)) · simpa only [Int.natCast_natAbs] using (Nat.cast_le.mpr h3 : ((padicValRat 3 x).natAbs : ℤ) ≤ (M : ℤ)) filter_upwards [returnRationalUnit_quotient_valuations_separate M] with r hr i j m n hm hn hne hmem have hb' := hb _ hmem exact (hr i j m n hm hn hne).elim (fun h => (not_lt_of_ge hb'.1) h) (fun h => (not_lt_of_ge hb'.2) h) def returnRationalUnit_quotient_height_diverge (B : ℝ) : ∀ᶠ r in atTop, ∀ i j : ReturnEventFamily, ∀ m n : ℕ, returnEventVisit r i m → returnEventVisit r j n → (i ≠ j ∨ m ≠ n) → B < Height.mulHeight₁ (returnRationalUnit r i m / returnRationalUnit r j n) := by classical let s := (NumberField.finite_setOfPred_mulHeight₁_le ℚ B).toFinset filter_upwards [returnRationalUnit_quotient_escapes_finset s] with r hr i j m n hm hn hne apply lt_of_not_ge intro h apply hr i j m n hm hn hne simpa only [s, Set.Finite.mem_toFinset, Set.mem_ofPred_eq] using h end Bounty end SubmissionComponent_ReturnUnitSeparation /- Component ReturnHeadSeparation; SHA256 5a2111dedc756cb181cfddb6e39d7bf02bfb393f59aaead62405a2775ca522e1 -/ section SubmissionComponent_ReturnHeadSeparation /- Head-to-head and head-to-tail arithmetic separation. -/ open Filter open scoped Topology namespace Bounty def rational_height_escape_of_valuations (V : ℕ → ℚ → Prop) (hV : ∀ M : ℕ, ∀ᶠ r in atTop, ∀ x : ℚ, V r x → (M : ℤ) < |padicValRat 2 x| ∨ (M : ℤ) < |padicValRat 3 x|) (B : ℝ) : ∀ᶠ r in atTop, ∀ x : ℚ, V r x → B < Height.mulHeight₁ x := by classical let s := (NumberField.finite_setOfPred_mulHeight₁_le ℚ B).toFinset let f : ℚ → ℕ := fun x => max (padicValRat 2 x).natAbs (padicValRat 3 x).natAbs let M := s.sup f have hb (x : ℚ) (hx : x ∈ s) : |padicValRat 2 x| ≤ (M : ℤ) ∧ |padicValRat 3 x| ≤ (M : ℤ) := by have hh : f x ≤ M := Finset.le_sup hx have h2 : (padicValRat 2 x).natAbs ≤ M := (le_max_left _ _).trans hh have h3 : (padicValRat 3 x).natAbs ≤ M := (le_max_right _ _).trans hh constructor · simpa only [Int.natCast_natAbs] using (Nat.cast_le.mpr h2 : ((padicValRat 2 x).natAbs : ℤ) ≤ (M : ℤ)) · simpa only [Int.natCast_natAbs] using (Nat.cast_le.mpr h3 : ((padicValRat 3 x).natAbs : ℤ) ≤ (M : ℤ)) filter_upwards [hV M] with r hr x hx apply lt_of_not_ge intro h have hmem : x ∈ s := by simpa only [s, Set.Finite.mem_toFinset, Set.mem_ofPred_eq] using h have hb' := hb x hmem exact (hr x hx).elim (fun hh => (not_lt_of_ge hb'.1) hh) (fun hh => (not_lt_of_ge hb'.2) hh) def returnHeadUnit_val_two (r : ℕ) (j : Fin 4) : padicValRat 2 (returnHeadUnit r j) = 2 * returnHeadFourExponent r j := by rw [returnHeadUnit_primeMonomial, rationalPrimeMonomial_val_two] def returnHeadUnit_val_three (r : ℕ) (j : Fin 4) : padicValRat 3 (returnHeadUnit r j) = returnHeadThreeExponent r j := by rw [returnHeadUnit_primeMonomial, rationalPrimeMonomial_val_three] def returnHeadUnit_quotient_valuations_separate (M : ℕ) : ∀ᶠ r in atTop, ∀ i j : Fin 4, i ≠ j → (M : ℤ) < |padicValRat 2 (returnHeadUnit r i / returnHeadUnit r j)| ∨ (M : ℤ) < |padicValRat 3 (returnHeadUnit r i / returnHeadUnit r j)| := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ let : Fact (Nat.Prime 3) := ⟨by norm_num⟩ have hq := rotationReturns_denominators_tendsto.1.eventually (eventually_gt_atTop M) filter_upwards [hq] with r hqr i j hij have hnum := (rotationReturns r).numerator_bounds rotationSlope_bounds.1 rotationSlope_bounds.2 have hpr : (M : ℤ) < (rotationReturns r).p.toNat := by omega rw [padicValRat.div (returnHeadUnit_ne_zero r i) (returnHeadUnit_ne_zero r j), padicValRat.div (returnHeadUnit_ne_zero r i) (returnHeadUnit_ne_zero r j), returnHeadUnit_val_two, returnHeadUnit_val_two, returnHeadUnit_val_three, returnHeadUnit_val_three] fin_cases i <;> fin_cases j <;> norm_num [Fin.ext_iff] at hij <;> norm_num [returnHeadFourExponent, returnHeadThreeExponent, Fin.lt_def, Fin.ext_iff] <;> (try simp only [lt_abs]) <;> omega def returnHeadTail_quotient_valuations_separate (M : ℕ) : ∀ᶠ r in atTop, ∀ j : Fin 4, ∀ i : ReturnEventFamily, ∀ n : ℕ, returnEventVisit r i n → (M : ℤ) < |padicValRat 2 (returnHeadUnit r j / returnRationalUnit r i n)| ∨ (M : ℤ) < |padicValRat 3 (returnHeadUnit r j / returnRationalUnit r i n)| := by let : Fact (Nat.Prime 2) := ⟨Nat.prime_two⟩ let : Fact (Nat.Prime 3) := ⟨by norm_num⟩ filter_upwards [returnEventVisit_indices_diverge M] with r hr j i n hn have hnr := hr i n hn have h4 : 0 ≤ returnHeadFourExponent r j := by unfold returnHeadFourExponent split_ifs <;> omega have h3 : 0 ≤ returnHeadThreeExponent r j := by unfold returnHeadThreeExponent split_ifs <;> omega rw [padicValRat.div (returnHeadUnit_ne_zero r j) (returnRationalUnit_ne_zero r i n), padicValRat.div (returnHeadUnit_ne_zero r j) (returnRationalUnit_ne_zero r i n), returnHeadUnit_val_two, returnRationalUnit_val_two, returnHeadUnit_val_three, returnRationalUnit_val_three] by_cases hi : i.1 < 2 · left rw [returnUnitFourExponent, if_pos hi] apply lt_abs.mpr left omega · right have hi0 : i.1 ≠ 0 := by intro he; rw [he] at hi; norm_num [Fin.lt_def] at hi rw [returnUnitThreeExponent, if_neg hi0, if_neg hi] apply lt_abs.mpr left omega def returnHeadUnit_quotient_height_diverge (B : ℝ) : ∀ᶠ r in atTop, ∀ i j : Fin 4, i ≠ j → B < Height.mulHeight₁ (returnHeadUnit r i / returnHeadUnit r j) := by let V : ℕ → ℚ → Prop := fun r x => ∃ i j : Fin 4, i ≠ j ∧ x = returnHeadUnit r i / returnHeadUnit r j have hV (M : ℕ) : ∀ᶠ r in atTop, ∀ x : ℚ, V r x → (M : ℤ) < |padicValRat 2 x| ∨ (M : ℤ) < |padicValRat 3 x| := by filter_upwards [returnHeadUnit_quotient_valuations_separate M] with r hr x hx obtain ⟨i, j, hij, rfl⟩ := hx exact hr i j hij filter_upwards [rational_height_escape_of_valuations V hV B] with r hr i j hij exact hr _ ⟨i, j, hij, rfl⟩ def returnHeadTail_quotient_height_diverge (B : ℝ) : ∀ᶠ r in atTop, ∀ j : Fin 4, ∀ i : ReturnEventFamily, ∀ n : ℕ, returnEventVisit r i n → B < Height.mulHeight₁ (returnHeadUnit r j / returnRationalUnit r i n) := by let V : ℕ → ℚ → Prop := fun r x => ∃ j : Fin 4, ∃ i : ReturnEventFamily, ∃ n : ℕ, returnEventVisit r i n ∧ x = returnHeadUnit r j / returnRationalUnit r i n have hV (M : ℕ) : ∀ᶠ r in atTop, ∀ x : ℚ, V r x → (M : ℤ) < |padicValRat 2 x| ∨ (M : ℤ) < |padicValRat 3 x| := by filter_upwards [returnHeadTail_quotient_valuations_separate M] with r hr x hx obtain ⟨j, i, n, hn, rfl⟩ := hx exact hr j i n hn filter_upwards [rational_height_escape_of_valuations V hV B] with r hr j i n hn exact hr _ ⟨j, i, n, hn, rfl⟩ end Bounty end SubmissionComponent_ReturnHeadSeparation /- Component ReturnApproximationSeparation; SHA256 979896e4db78ee31dbadea053e7e761bafe90ea4559da05108f970ae17fe8ad8 -/ section SubmissionComponent_ReturnApproximationSeparation /- Separation is uniform across both changing cutoff sets, including their four heads. -/ open Filter open scoped Topology namespace Bounty abbrev ReturnUnitKey := Fin 4 ⊕ (ReturnEventFamily × ℕ) def returnApproximationKey {r : ℕ} {T : ℝ} : ReturnApproximationLabel r T → ReturnUnitKey := Sum.elim Sum.inl (fun a => Sum.inr (a.1, a.2.1)) def returnApproximationKey_injective (r : ℕ) (T : ℝ) : Function.Injective (returnApproximationKey (r := r) (T := T)) := by intro i j h cases i with | inl a => cases j with | inl b => exact congrArg Sum.inl (Sum.inl.inj h) | inr b => cases h | inr a => cases j with | inl b => cases h | inr b => have he : a.1 = b.1 ∧ a.2.1 = b.2.1 := by have hh := Sum.inr.inj h exact ⟨congrArg Prod.fst hh, congrArg Prod.snd hh⟩ obtain ⟨a, m, hm⟩ := a obtain ⟨b, n, hn⟩ := b dsimp only at he rcases he with ⟨rfl, rfl⟩ rfl def returnApproximationUnit_quotient_height_diverge (B : ℝ) : ∀ᶠ r in atTop, ∀ T U : ℝ, ∀ i : ReturnApproximationLabel r T, ∀ j : ReturnApproximationLabel r U, returnApproximationKey i ≠ returnApproximationKey j → B < Height.mulHeight₁ (returnApproximationUnit r T i / returnApproximationUnit r U j) := by filter_upwards [returnHeadUnit_quotient_height_diverge B, returnHeadTail_quotient_height_diverge B, returnRationalUnit_quotient_height_diverge B] with r hhead hcross htail T U i j hij cases i with | inl a => cases j with | inl b => exact hhead a b (fun he => hij (by cases he; rfl)) | inr b => exact hcross a b.1 b.2.1 ((mem_returnTruncationIndices r U b.1 b.2.1).mp b.2.2).1 | inr a => cases j with | inl b => change B < Height.mulHeight₁ (returnRationalUnit r a.1 a.2.1 / returnHeadUnit r b) rw [show returnRationalUnit r a.1 a.2.1 / returnHeadUnit r b = (returnHeadUnit r b / returnRationalUnit r a.1 a.2.1)⁻¹ by rw [inv_div], Height.mulHeight₁_inv] exact hcross b a.1 a.2.1 ((mem_returnTruncationIndices r T a.1 a.2.1).mp a.2.2).1 | inr b => have hdiff : a.1 ≠ b.1 ∨ a.2.1 ≠ b.2.1 := by by_contra hh push Not at hh apply hij exact congrArg Sum.inr (Prod.ext hh.1 hh.2) exact htail a.1 b.1 a.2.1 b.2.1 ((mem_returnTruncationIndices r T a.1 a.2.1).mp a.2.2).1 ((mem_returnTruncationIndices r U b.1 b.2.1).mp b.2.2).1 hdiff end Bounty end SubmissionComponent_ReturnApproximationSeparation /- Component ReturnApproximationObstruction; SHA256 16bc16627d0259379b6ee8a764306c4d88535330d7c00b06ebe0d43ecc6d5ec7 -/ section SubmissionComponent_ReturnApproximationObstruction /- Rationality would give nonzero exceptionally small finite return approximations. -/ open Filter open scoped Topology namespace Bounty def returnApproximation_two_errors_not_zero (z : ℚ) : ∀ᶠ r in atTop, ∀ T U : ℝ, T < 5 * returnScale r → 10 * returnScale r < U → returnApproximationError z r T ≠ 0 ∨ returnApproximationError z r U ≠ 0 := by filter_upwards [returnRationalTruncation_separated_cutoffs] with r hr T U hT hU exact returnApproximationError_ne_zero_of_truncations_ne z r T U (hr T U hT hU).symm def returnApproximation_nonzero_witness (z : ℚ) (hz : (z : ℝ) = 0xb4 * explicitDensity - 32) : ∀ᶠ r in atTop, ∃ T : ℝ, 4 * returnScale r < T ∧ T < 11 * returnScale r ∧ ReturnApproximationConditions z r T ∧ returnApproximationError z r T ≠ 0 := by filter_upwards [returnApproximation_two_cutoffs z hz, returnApproximation_two_errors_not_zero z] with r hcut hnz obtain ⟨T, U, hTlo, hThi, hUlo, hUhi, hdiff, hT, hU, hgapT, hgapU⟩ := hcut have hL := returnScale_pos r rcases hnz T U hThi hUlo with h | h · exact ⟨T, hTlo, by linarith, hT, h⟩ · exact ⟨U, by linarith, hUhi, hU, h⟩ def rational_density_nonzero_return_approximations (h : ¬Irrational explicitDensity) : ∃ z : ℚ, (z : ℝ) = 0xb4 * explicitDensity - 32 ∧ ∀ᶠ r in atTop, ∃ T : ℝ, 4 * returnScale r < T ∧ T < 11 * returnScale r ∧ ReturnApproximationConditions z r T ∧ returnApproximationError z r T ≠ 0 := by obtain ⟨z, hz, _, _⟩ := returnClearedIntegerHead_of_rational_density h exact ⟨z, hz, returnApproximation_nonzero_witness z hz⟩ def rational_density_nonzero_return_approximation_sequence (h : ¬Irrational explicitDensity) : ∃ z : ℚ, ∃ T : ℕ → ℝ, (z : ℝ) = 0xb4 * explicitDensity - 32 ∧ ∀ᶠ r in atTop, 4 * returnScale r < T r ∧ T r < 11 * returnScale r ∧ ReturnApproximationConditions z r (T r) ∧ returnApproximationError z r (T r) ≠ 0 := by classical obtain ⟨z, hz, hh⟩ := rational_density_nonzero_return_approximations h obtain ⟨N, hN⟩ := eventually_atTop.mp hh have hex (r : ℕ) : ∃ T : ℝ, N ≤ r → 4 * returnScale r < T ∧ T < 11 * returnScale r ∧ ReturnApproximationConditions z r T ∧ returnApproximationError z r T ≠ 0 := by by_cases hr : N ≤ r · obtain ⟨T, hT⟩ := hN r hr exact ⟨T, fun _ => hT⟩ · exact ⟨0, fun h => False.elim (hr h)⟩ choose T hT using hex refine ⟨z, T, hz, ?_⟩ exact eventually_atTop.mpr ⟨N, hT⟩ end Bounty end SubmissionComponent_ReturnApproximationObstruction /- Component BoundedCoefficientPatterns; SHA256 d204d8d4a98d27eed4975b59696d022f833bd098844c6472ea6dcce29a635ffe -/ section SubmissionComponent_BoundedCoefficientPatterns /- Extract one coefficient pattern from rows of bounded finite size. -/ open Filter namespace Bounty universe u v /-- A sequence in a finite type is constant along a strictly increasing subsequence. -/ def finite_constant_subsequence {α : Type u} [Finite α] (f : ℕ → α) : ∃ a : α, ∃ σ : ℕ → ℕ, StrictMono σ ∧ ∀ n, f (σ n) = a := by have h : ∃ᶠ n in atTop, ∃ a : α, f n = a := Frequently.of_forall fun n => ⟨f n, rfl⟩ obtain ⟨a, ha⟩ := frequently_exists.mp h obtain ⟨σ, hσ, hconst⟩ := extraction_of_frequently_atTop ha exact ⟨a, σ, hσ, hconst⟩ /-- Bounded row sizes and a finite palette give one fixed ordered coefficient row on an increasing subsequence. The row equivalences retain every actual label. -/ def bounded_coefficient_patterns {α : Type u} [DecidableEq α] (I : ℕ → Type v) [∀ n, Fintype (I n)] (N : ℕ) (C : Finset α) (c : (n : ℕ) → I n → α) (hcard : ∀ n, Fintype.card (I n) ≤ N) (hC : ∀ n i, c n i ∈ C) : ∃ m ≤ N, ∃ d : Fin m → α, ∃ σ : ℕ → ℕ, StrictMono σ ∧ ∃ e : (n : ℕ) → Fin m ≃ I (σ n), (∀ i, d i ∈ C) ∧ ∀ n i, c (σ n) (e n i) = d i := by classical let Pattern := Σ m : Fin (N + 1), Fin m.val → ↥C let row : ℕ → Pattern := fun n => ⟨⟨Fintype.card (I n), Nat.lt_succ_of_le (hcard n)⟩, fun i => ⟨c n ((Fintype.equivFin (I n)).symm i), hC n _⟩⟩ have row_equiv (n : ℕ) (p : Pattern) (hp : row n = p) : ∃ e : Fin p.1.val ≃ I n, ∀ i, c n (e i) = (p.2 i).val := by subst p exact ⟨(Fintype.equivFin (I n)).symm, fun _ => rfl⟩ obtain ⟨p, σ, hσ, hrow⟩ := finite_constant_subsequence row choose e he using fun n => row_equiv (σ n) p (hrow n) exact ⟨p.1.val, Nat.le_of_lt_succ p.1.isLt, fun i => (p.2 i).val, σ, hσ, e, fun i => (p.2 i).property, he⟩ /-- The same extraction works when the bounds and palette are only eventually valid. -/ def bounded_coefficient_patterns_eventually {α : Type u} [DecidableEq α] (I : ℕ → Type v) [∀ n, Fintype (I n)] (N : ℕ) (C : Finset α) (c : (n : ℕ) → I n → α) (hcard : ∀ᶠ n in atTop, Fintype.card (I n) ≤ N) (hC : ∀ᶠ n in atTop, ∀ i, c n i ∈ C) : ∃ m ≤ N, ∃ d : Fin m → α, ∃ σ : ℕ → ℕ, StrictMono σ ∧ ∃ e : (n : ℕ) → Fin m ≃ I (σ n), (∀ i, d i ∈ C) ∧ ∀ n i, c (σ n) (e n i) = d i := by have h : ∀ᶠ n in atTop, Fintype.card (I n) ≤ N ∧ ∀ i, c n i ∈ C := hcard.and hC obtain ⟨K, hK⟩ := eventually_atTop.mp h obtain ⟨m, hm, d, σ, hσ, e, hd, he⟩ := bounded_coefficient_patterns (fun n => I (K + n)) N C (fun n => c (K + n)) (fun n => (hK (K + n) (Nat.le_add_right K n)).1) (fun n => (hK (K + n) (Nat.le_add_right K n)).2) refine ⟨m, hm, d, (fun n => K + σ n), ?_, e, hd, he⟩ exact fun _ _ hij => Nat.add_lt_add_left (hσ hij) K end Bounty end SubmissionComponent_BoundedCoefficientPatterns /- Component ReturnFixedApproximation; SHA256 db39dae26c9cac3193889998aa53e3f024c7dce75e2253a2254d0346bbff5d1d -/ section SubmissionComponent_ReturnFixedApproximation /- The elementary reduction to a fixed finite sum of {2,3}-units. -/ open Filter open scoped Topology namespace Bounty noncomputable section def fixedApproximationVector {m : ℕ} (P : ℤ) (u : Fin m → ℚ) : Option (Fin m) → ℚ | none => (P : ℚ) | some i => u i def fixedApproximationError {m : ℕ} (d u : Fin m → ℚ) (P : ℤ) : ℚ := (∑ i, d i * u i) - (P : ℚ) def fixedApproximationVector_return_height {m : ℕ} (r : ℕ) (T : ℝ) (e : Fin m ≃ ReturnApproximationLabel r T) : Height.mulHeight (fixedApproximationVector (returnIntegerPrefix r) (fun i => returnApproximationUnit r T (e i))) = Height.mulHeight (returnApproximationVector r T) := by have h : fixedApproximationVector (returnIntegerPrefix r) (fun i => returnApproximationUnit r T (e i)) = returnApproximationVector r T ∘ e.optionCongr := by funext i cases i <;> rfl rw [h] exact Height.mulHeight_comp_equiv e.optionCongr (returnApproximationVector r T) def fixedApproximationError_return {m : ℕ} (z : ℚ) (r : ℕ) (T : ℝ) (d : Fin m → ℚ) (e : Fin m ≃ ReturnApproximationLabel r T) (hd : ∀ i, returnApproximationCoefficient z r T (e i) = d i) : ((fixedApproximationError d (fun i => returnApproximationUnit r T (e i)) (returnIntegerPrefix r) : ℚ) : ℝ) = returnApproximationError z r T := by have hs : (∑ i, d i * returnApproximationUnit r T (e i)) = ∑ j, returnApproximationCoefficient z r T j * returnApproximationUnit r T j := by calc _ = ∑ i, returnApproximationCoefficient z r T (e i) * returnApproximationUnit r T (e i) := by simp only [hd] _ = _ := e.sum_comp (fun j => returnApproximationCoefficient z r T j * returnApproximationUnit r T j) simpa only [fixedApproximationError, returnApproximationError, hs] /-- A fixed-dimensional family with the exact numerical bounds needed in the arithmetic argument. All coefficients are independent of the sequence index. -/ structure FixedReturnApproximation where dimension : ℕ dimension_lower : 4 ≤ dimension dimension_upper : dimension ≤ 0x194 coefficient : Fin dimension → ℚ unit : ℕ → Fin dimension → ℚ integerPart : ℕ → ℤ scale : ℕ → ℝ cutoff : ℕ → ℝ scale_tendsto : Tendsto scale atTop atTop unit_twoThreeUnit : ∀ n i, TwoThreeUnit (unit n i) unit_pos : ∀ n i, 0 < unit n i eventual_estimates : ∀ᶠ n in atTop, scale n ≤ cutoff n ∧ (∀ i, Real.exp (-cutoff n) ≤ (unit n i : ℝ)) ∧ Height.mulHeight (fixedApproximationVector (integerPart n) (unit n)) ≤ Real.exp (27 * scale n) ∧ fixedApproximationError coefficient (unit n) (integerPart n) ≠ 0 ∧ |((fixedApproximationError coefficient (unit n) (integerPart n) : ℚ) : ℝ)| ≤ Real.exp (-cutoff n - scale n / 0xc8) quotient_height_diverge : ∀ B : ℝ, ∀ᶠ n in atTop, ∀ i j : Fin dimension, i ≠ j → B < Height.mulHeight₁ (unit n i / unit n j) def rational_density_fixed_return_approximation (h : ¬Irrational explicitDensity) : Nonempty FixedReturnApproximation := by classical obtain ⟨z, T, hz, hgood⟩ := rational_density_nonzero_return_approximation_sequence h let I : ℕ → Type := fun r => ReturnApproximationLabel r (T r) let c : (r : ℕ) → I r → ℚ := fun r => returnApproximationCoefficient z r (T r) have hcard : ∀ᶠ r in atTop, Fintype.card (I r) ≤ 0x194 := by filter_upwards [hgood] with r hr exact hr.2.2.1.1 have hC : ∀ᶠ r in atTop, ∀ i, c r i ∈ returnCoefficientPalette z := Eventually.of_forall fun r => returnApproximationCoefficient_mem z r (T r) obtain ⟨m, hm, d, σ, hσ, e, hd, he⟩ := bounded_coefficient_patterns_eventually I 0x194 (returnCoefficientPalette z) c hcard hC have hmlo : 4 ≤ m := by have hc : Fintype.card (I (σ 0)) = m := by simpa only [Fintype.card_fin] using (Fintype.card_congr (e 0)).symm rw [← hc] exact returnApproximationLabel_card_lower (σ 0) (T (σ 0)) let u : ℕ → Fin m → ℚ := fun n i => returnApproximationUnit (σ n) (T (σ n)) (e n i) let P : ℕ → ℤ := fun n => returnIntegerPrefix (σ n) let L : ℕ → ℝ := fun n => returnScale (σ n) let U : ℕ → ℝ := fun n => T (σ n) have herr (n : ℕ) : ((fixedApproximationError d (u n) (P n) : ℚ) : ℝ) = returnApproximationError z (σ n) (T (σ n)) := fixedApproximationError_return z (σ n) (T (σ n)) d (e n) (he n) have hheight (n : ℕ) : Height.mulHeight (fixedApproximationVector (P n) (u n)) = Height.mulHeight (returnApproximationVector (σ n) (T (σ n))) := fixedApproximationVector_return_height (σ n) (T (σ n)) (e n) refine ⟨{ dimension := m dimension_lower := hmlo dimension_upper := hm coefficient := d unit := u integerPart := P scale := L cutoff := U scale_tendsto := returnScale_tendsto.comp hσ.tendsto_atTop unit_twoThreeUnit := fun n i => returnApproximationUnit_twoThreeUnit (σ n) (T (σ n)) (e n i) unit_pos := fun n i => returnApproximationUnit_pos (σ n) (T (σ n)) (e n i) eventual_estimates := ?_ quotient_height_diverge := ?_ }⟩ · filter_upwards [hσ.tendsto_atTop.eventually hgood] with n hn rcases hn with ⟨hTlo, hThi, hcond, hnz⟩ rcases hcond with ⟨_, _, _, hlower, hH, herror⟩ have hL := returnScale_pos (σ n) refine ⟨?_, fun i => hlower (e n i), ?_, ?_, ?_⟩ · change returnScale (σ n) ≤ T (σ n) linarith · rw [hheight n] exact hH · intro hzero apply hnz rw [← herr n, hzero, Rat.cast_zero] · rw [herr n] exact herror · intro B filter_upwards [hσ.tendsto_atTop.eventually (returnApproximationUnit_quotient_height_diverge B)] with n hn i j hij apply hn (T (σ n)) (T (σ n)) (e n i) (e n j) intro hk exact hij ((e n).injective (returnApproximationKey_injective (σ n) (T (σ n)) hk)) end end Bounty end SubmissionComponent_ReturnFixedApproximation /- Component ExistenceLimit; SHA256 be4fd53db1fc9b9f11cf041def94f41cc8c1693802099414005a1031a4a3d64c -/ section SubmissionComponent_ExistenceLimit /- The extremal density exists and equals the absolutely convergent signed-jump series. -/ open Filter open scoped Topology namespace Bounty def tendsto_f_jumpDensity : Tendsto (fun n : ℕ => (Erdos1062.f n : ℝ) / n) atTop (nhds jumpDensity) := tendsto_f_of_exact_and_summable_jumps f_eq_globalUpper signedRank_jumps_summable def target_iff_irrational_jumpDensity : (fcTypeOfName% "Erdos1062.erdos_1062.parts.ii") ↔ Irrational jumpDensity := by simp only [iff_true] constructor · rintro ⟨l, hl, hi⟩ have he : l = jumpDensity := tendsto_nhds_unique hl tendsto_f_jumpDensity rwa [he] at hi · intro hi exact ⟨jumpDensity, tendsto_f_jumpDensity, hi⟩ end Bounty end SubmissionComponent_ExistenceLimit /- Component ExplicitLimit; SHA256 f7d3ef3aa538186f49d1be8257a1515d87d77a97e98bdc62cda44fc3ee6bb61a -/ section SubmissionComponent_ExplicitLimit /- The extremal ratio converges to the manuscript's explicit coefficient series. -/ open Filter open scoped Topology namespace Bounty def target_iff_irrational_explicitDensity : (fcTypeOfName% "Erdos1062.erdos_1062.parts.ii") ↔ Irrational explicitDensity := by rw [target_iff_irrational_jumpDensity, jumpDensity_eq_explicitDensity] end Bounty end SubmissionComponent_ExplicitLimit /- Component OneFormReturnContradiction; SHA256 1e3c3fc81a0ee1d7e30ae7473371ddb2a5e8c698e2442b561064c48a5ca44f1a -/ section SubmissionComponent_OneFormReturnContradiction /- The exact remaining arithmetic implication. The covering theorem is an explicit hypothesis, not a proved theorem or an added axiom. -/ open Filter open scoped Topology namespace Bounty noncomputable section def oneFormHeightFactor_of_exponential_bound {I : Type*} [Fintype I] (x : I → ℚ) (L : ℝ) (hH : Height.mulHeight x ≤ Real.exp (27 * L)) : Real.exp (-L / 0x190) ≤ oneFormHeightFactor x := by have hh := Real.rpow_le_rpow_of_nonpos (Height.mulHeight_pos x) hH (show -oneFormExponent ≤ 0 by norm_num [oneFormExponent]) have he : Real.exp (27 * L) ^ (-oneFormExponent) = Real.exp (-L / 0x190) := by rw [Real.rpow_def_of_pos (Real.exp_pos _), Real.log_exp] congr 1 norm_num [oneFormExponent] ring simpa only [he, oneFormHeightFactor] using hh def no_fixedReturnApproximation_of_oneForm_cover (hST : OneFormCover405) : ¬Nonempty FixedReturnApproximation := by rintro ⟨a⟩ have hdim : Fintype.card (Fin a.dimension) + 1 ≤ 0x195 := by simpa only [Fintype.card_fin] using Nat.add_le_add_right a.dimension_upper 1 obtain ⟨C, hC, hbound⟩ := oneForm_integer_rigidity hST hdim a.coefficient have hlarge : ∀ᶠ n in atTop, -0x190 * Real.log C < a.scale n := a.scale_tendsto.eventually (eventually_gt_atTop _) have hpositive : ∀ᶠ n in atTop, 0 ≤ a.scale n := a.scale_tendsto.eventually (eventually_ge_atTop _) obtain ⟨n, hn, hLn, hL0⟩ := (a.eventual_estimates.and (hlarge.and hpositive)).exists rcases hn with ⟨hLT, hu, hH, hne, herror⟩ have hT0 : 0 ≤ a.cutoff n := hL0.trans hLT have htu : ∀ i, Real.exp (-a.cutoff n) ≤ |(a.unit n i : ℝ)| := by intro i rw [abs_of_pos (by exact_mod_cast a.unit_pos n i)] exact hu i have ht1 : Real.exp (-a.cutoff n) ≤ 1 := by rw [Real.exp_le_one_iff] linarith have hlower := hbound (a.integerPart n) (a.unit n) (a.unit_twoThreeUnit n) (Real.exp (-a.cutoff n)) (Real.exp_pos _) ht1 htu hne have hvec : hyperplaneOptionVector ((a.integerPart n : ℤ) : ℚ) (a.unit n) = fixedApproximationVector (a.integerPart n) (a.unit n) := by funext i cases i <;> rfl rw [hvec] at hlower have hfac := oneFormHeightFactor_of_exponential_bound (fixedApproximationVector (a.integerPart n) (a.unit n)) (a.scale n) hH have he : C * Real.exp (-a.cutoff n) * Real.exp (-a.scale n / 0x190) ≤ Real.exp (-a.cutoff n - a.scale n / 0xc8) := by exact (mul_le_mul_of_nonneg_left hfac (mul_nonneg hC.le (Real.exp_pos _).le)).trans (hlower.trans herror) have hexp : Real.exp (-a.cutoff n - a.scale n / 0xc8) = Real.exp (-a.scale n / 0x190) * (Real.exp (-a.cutoff n) * Real.exp (-a.scale n / 0x190)) := by rw [← Real.exp_add, ← Real.exp_add] congr 1 ring rw [hexp, mul_assoc] at he have hsmall : C ≤ Real.exp (-a.scale n / 0x190) := le_of_mul_le_mul_right he (mul_pos (Real.exp_pos _) (Real.exp_pos _)) have hstrict : Real.exp (-a.scale n / 0x190) < C := by rw [← Real.exp_log hC] apply Real.exp_lt_exp.mpr linarith exact (not_lt_of_ge hsmall) hstrict def irrational_explicitDensity_of_oneForm_cover (hST : OneFormCover405) : Irrational explicitDensity := by by_contra h exact no_fixedReturnApproximation_of_oneForm_cover hST (rational_density_fixed_return_approximation h) def target_of_oneForm_cover (hST : OneFormCover405) : fcTypeOfName% "Erdos1062.erdos_1062.parts.ii" := by exact target_iff_irrational_explicitDensity.mpr (irrational_explicitDensity_of_oneForm_cover hST) /-- The remaining theorem can be stated using integer vectors alone. -/ def IntegerOneFormCover405 : Prop := ∀ (I : Type) [Fintype I] [DecidableEq I], 2 ≤ Fintype.card I → Fintype.card I ≤ 0x195 → ∀ (d : I → ℚ) (k : I), d k ≠ 0 → ∃ F : Finset (I → ℚ), (∀ a ∈ F, a ≠ 0) ∧ ∀ x : I → ℤ, x ≠ 0 → (twoThreeOneFormProduct d (fun i => (x i : ℚ)) k : ℝ) < oneFormHeightFactor (fun i => (x i : ℚ)) → ∃ a ∈ F, (∑ i, a i * (x i : ℚ)) = 0 def oneForm_cover_of_integer_cover (h : IntegerOneFormCover405) : OneFormCover405 := by intro I instF instD hmin hmax d k hdk obtain ⟨F, hF, hcover⟩ := h I hmin hmax d k hdk refine ⟨F, hF, ?_⟩ intro x hx hne hsmall exact oneForm_integer_cover_to_sInteger d k oneFormExponent F hcover x hx hne hsmall def target_of_integer_oneForm_cover (h : IntegerOneFormCover405) : fcTypeOfName% "Erdos1062.erdos_1062.parts.ii" := target_of_oneForm_cover (oneForm_cover_of_integer_cover h) end end Bounty end SubmissionComponent_OneFormReturnContradiction /- Component OneFormCoverReindex; SHA256 77cfa3568f678b3c482ff8abcca6135f5707f6f0f41e58e8dc3dd2eaa3752d9c -/ section SubmissionComponent_OneFormCoverReindex /- Reindexing the actual one-form product completes the conditional bridge to the existing arithmetic application. The geometric contract remains an explicit hypothesis throughout; no unconditional target is declared. -/ namespace Bounty noncomputable section open scoped BigOperators Matrix def twoThreeOneFormProduct_comp_equiv {I J : Type*} [Fintype I] [DecidableEq I] [Fintype J] [DecidableEq J] (e : I ≃ J) (a x : J → ℚ) (k : I) : twoThreeOneFormProduct (a ∘ e) (x ∘ e) k = twoThreeOneFormProduct a x (e k) := by have hs : (∑ i, a (e i) * x (e i)) = ∑ j, a j * x j := Equiv.sum_comp e (fun j => a j * x j) have hp : (∏ i ∈ Finset.univ.erase k, |x (e i)|) = ∏ j ∈ Finset.univ.erase (e k), |x j| := by apply Finset.prod_equiv e · intro i simp · intro i _ rfl have hf : (∏ i, padicNorm 2 (x (e i)) * padicNorm 3 (x (e i))) = ∏ j, padicNorm 2 (x j) * padicNorm 3 (x j) := Equiv.prod_comp e (fun j => padicNorm 2 (x j) * padicNorm 3 (x j)) simpa only [twoThreeOneFormProduct, Function.comp_apply, hs, hp, hf] def integer_oneForm_cover_of_three_place (hST : RationalThreePlaceSubspaceCover) : IntegerOneFormCover405 := by classical intro I instF instD hmin _hmax a k hak let e : Fin (Fintype.card I) ≃ I := (Fintype.equivFin I).symm obtain ⟨F, hF, hcover⟩ := integer_oneForm_finite_cover_of_three_place hST hmin (a ∘ e) (e.symm k) (by simpa using hak) oneFormExponent (by norm_num [oneFormExponent]) refine ⟨F.image (fun b => b ∘ e.symm), ?_, ?_⟩ · intro b hb obtain ⟨b', hb', rfl⟩ := Finset.mem_image.mp hb intro hz apply hF b' hb' funext i have hh := congrFun hz (e i) simpa using hh · intro x hx hsmall have hx' : (x ∘ e) ≠ 0 := by intro hz apply hx funext i have hh := congrFun hz (e.symm i) simpa using hh have hp : twoThreeOneFormProduct (a ∘ e) (fun i => ((x ∘ e) i : ℚ)) (e.symm k) = twoThreeOneFormProduct a (fun i => (x i : ℚ)) k := by simpa only [Function.comp_def, Equiv.apply_symm_apply] using twoThreeOneFormProduct_comp_equiv e a (fun i => (x i : ℚ)) (e.symm k) have hH : Height.mulHeight (fun i => ((x ∘ e) i : ℚ)) = Height.mulHeight (fun i => (x i : ℚ)) := Height.mulHeight_comp_equiv e (fun i => (x i : ℚ)) obtain ⟨b, hb, hbx⟩ := hcover (x ∘ e) hx' (by simpa only [hp, hH, oneFormHeightFactor] using hsmall) refine ⟨b ∘ e.symm, Finset.mem_image.mpr ⟨b, hb, rfl⟩, ?_⟩ have heq := Equiv.sum_comp e (fun i => (b ∘ e.symm) i * (x i : ℚ)) exact heq.symm.trans (by simpa using hbx) end end Bounty end SubmissionComponent_OneFormCoverReindex /- Component FinalErdos1062; SHA256 fd6c1baa34ce01ee343bef278c958f26beed86202c799d0fea253b3bfb7501b7 -/ section SubmissionComponent_FinalErdos1062 /- The exact Erdős 1062(ii) challenge, with the three-place covering theorem proved. -/ namespace Bounty theorem target : fcTypeOfName% "Erdos1062.erdos_1062.parts.ii" := target_of_integer_oneForm_cover (integer_oneForm_cover_of_three_place rational_three_place_subspace_cover) end Bounty end SubmissionComponent_FinalErdos1062 end PolicySubmissionPart89 namespace Bounty