diff --git a/HexIntervalMathlib/Experiment/PntBKLNWExp.lean b/HexIntervalMathlib/Experiment/PntBKLNWExp.lean index d9b6f82278..f2cfca9183 100644 --- a/HexIntervalMathlib/Experiment/PntBKLNWExp.lean +++ b/HexIntervalMathlib/Experiment/PntBKLNWExp.lean @@ -192,7 +192,6 @@ theorem expSumWithTail {b N : Nat} (atLeast : 64 ≤ N) : _ = ((N - 63 : Nat) : ℝ) * upperBaseValue 64 ^ b := by congr 2 norm_num [Nat.card_Icc] - omega constructor · calc 1 + lowerBand b 63 ≤ diff --git a/HexIntervalMathlib/Experiment/PntBKLNWPow.lean b/HexIntervalMathlib/Experiment/PntBKLNWPow.lean index b055634d03..97452de716 100644 --- a/HexIntervalMathlib/Experiment/PntBKLNWPow.lean +++ b/HexIntervalMathlib/Experiment/PntBKLNWPow.lean @@ -110,7 +110,6 @@ theorem powSumUpper {M a b : Nat} (hM : 5 ≤ M) _ = ((M - 4 : Nat) : ℝ) / (2 : ℝ) ^ b := by congr 2 norm_num [Nat.card_Icc] - omega private theorem alphaRatio : (1 + 193571378 / (10 : ℝ) ^ 16) = @@ -317,7 +316,6 @@ theorem finePowSumUpper {M : Nat} (hM : 21 ≤ M) : _ = ((M - 20 : Nat) : ℝ) * baseValue 21 ^ M := by congr 2 norm_num [Nat.card_Icc] - omega private theorem exactBaseRatio (M : Nat) : exactBaseSum M = diff --git a/HexIntervalMathlib/Experiment/PntTable10A2.lean b/HexIntervalMathlib/Experiment/PntTable10A2.lean index 9ae7de7eaa..d1e53ab60b 100644 --- a/HexIntervalMathlib/Experiment/PntTable10A2.lean +++ b/HexIntervalMathlib/Experiment/PntTable10A2.lean @@ -210,7 +210,6 @@ private theorem expSumUpper (value : Certificate) (valid : Valid value) : PntBKLNWExp.upperBaseValue 13 ^ value.argument := by congr 2 norm_num [Nat.card_Icc, tailCardinality] - omega linarith private theorem sourceExpLeSucc (value : Certificate) (valid : Valid value) : diff --git a/HexMatrixMathlib/Hadamard.lean b/HexMatrixMathlib/Hadamard.lean index 15bd050448..d3f1f32c95 100644 --- a/HexMatrixMathlib/Hadamard.lean +++ b/HexMatrixMathlib/Hadamard.lean @@ -96,7 +96,7 @@ theorem norm_det_le_prod_norm_column (A : Matrix n n 𝕜) : -- Cauchy-Schwarz on each diagonal factor. have hbound : ‖e.toBasis.det f‖ ≤ ∏ j, ‖f j‖ := by rw [hdet, norm_prod] - refine Finset.prod_le_prod (fun i _ => norm_nonneg _) (fun i _ => ?_) + refine Finset.prod_le_prod₀ (fun i _ => norm_nonneg _) (fun i _ => ?_) calc ‖inner 𝕜 (e i) (f i)‖ ≤ ‖e i‖ * ‖f i‖ := norm_inner_le_norm _ _ _ = ‖f i‖ := by rw [e.orthonormal.norm_eq_one, one_mul] calc ‖A.det‖ = ‖e.toBasis.det f‖ := hchange.symm diff --git a/HexMatrixMathlib/Literal.lean b/HexMatrixMathlib/Literal.lean index 1b6a2d212a..14eb430746 100644 --- a/HexMatrixMathlib/Literal.lean +++ b/HexMatrixMathlib/Literal.lean @@ -281,7 +281,7 @@ def evalEntry (e : Expr) : MetaM Rat := do catch _ => let ctx ← Simp.mkContext (config := { decide := true }) (simpTheorems := #[← getSimpTheorems]) (congrTheorems := ← getSimpCongrTheorems) - let r ← Mathlib.Meta.NormNum.deriveSimp ctx true e + let r ← Mathlib.Meta.NormNum.deriveSimp ctx #[] true e Mathlib.Tactic.Echelon.evalRatEntry true r.expr /-- Evaluate every entry to a rational. -/ diff --git a/HexModularMatrixMathlib/Bound.lean b/HexModularMatrixMathlib/Bound.lean index 7704fe4387..3d20de2dff 100644 --- a/HexModularMatrixMathlib/Bound.lean +++ b/HexModularMatrixMathlib/Bound.lean @@ -50,7 +50,7 @@ private theorem column_bound (A : Hex.Matrix Int n n) : exact_mod_cast HexArith.Nat.le_ceilSqrt_sq (Hex.Matrix.DetBound.sum (fun i : Fin n => A[(i, j)].natAbs ^ 2)) have h := (Matrix.norm_det_le_prod_norm_column B).trans - (Finset.prod_le_prod (fun _ _ => Real.sqrt_nonneg _) (fun j _ => hc j)) + (Finset.prod_le_prod₀ (fun _ _ => Real.sqrt_nonneg _) (fun j _ => hc j)) rw [hd] at h rw [prod_eq] exact_mod_cast (by simpa only [Nat.cast_natAbs, Int.cast_abs, Real.norm_eq_abs, Nat.cast_prod] using h : diff --git a/HexMvPolyMathlib/Equiv.lean b/HexMvPolyMathlib/Equiv.lean index 070eeca179..6859f41831 100644 --- a/HexMvPolyMathlib/Equiv.lean +++ b/HexMvPolyMathlib/Equiv.lean @@ -152,7 +152,7 @@ theorem toMvPolynomial_eq_sum [CommSemiring R] [DecidableEq R] /-- Forward conversion preserves every coefficient. -/ @[simp] theorem coeff_toMvPolynomial [CommSemiring R] [DecidableEq R] (m : Mono n) (p : MvPoly n R cmp) : - MvPolynomial.coeff (monoEquiv m) (toMvPolynomial p) = coeff m p := by + (toMvPolynomial p).coeff (monoEquiv m) = coeff m p := by rw [toMvPolynomial, MvPolynomial.coeff_sum] simp [MvPolynomial.coeff_monomial, monoEquiv.injective.eq_iff, mem_monomials_iff, eq_comm] @@ -243,13 +243,13 @@ polynomial's finite support. -/ def ofMvPolynomial [CommSemiring R] [DecidableEq R] (p : MvPolynomial (Fin n) R) : MvPoly n R cmp := ofTerms <| p.support.toList.map fun d => - (monoEquiv.symm d, MvPolynomial.coeff d p) + (monoEquiv.symm d, p.coeff d) /-- Backward conversion preserves every coefficient. -/ @[simp] theorem coeff_ofMvPolynomial [CommSemiring R] [DecidableEq R] (m : Mono n) (p : MvPolynomial (Fin n) R) : coeff m (ofMvPolynomial (cmp := cmp) p) = - MvPolynomial.coeff (monoEquiv m) p := by + p.coeff (monoEquiv m) := by rw [ofMvPolynomial, coeff_ofTerms] rw [List.foldl_filter, List.foldl_map] simp only [Equiv.symm_apply_eq] @@ -276,9 +276,9 @@ def ofMvPolynomial [CommSemiring R] [DecidableEq R] · have hqd : q ≠ d := Ne.symm hdq rw [ite_eq_right (by simp [hdq]), ih hds] simp [hqd] - rw [fold_pick (monoEquiv m) (fun d => MvPolynomial.coeff d p) + rw [fold_pick (monoEquiv m) (fun d => p.coeff d) p.support.toList p.support.nodup_toList] - by_cases hcoeff : MvPolynomial.coeff (monoEquiv m) p = 0 + by_cases hcoeff : p.coeff (monoEquiv m) = 0 · simp [hcoeff] · simp [hcoeff] diff --git a/HexMvPolyMathlib/Recursive.lean b/HexMvPolyMathlib/Recursive.lean index c634a84e2c..4139ca4086 100644 --- a/HexMvPolyMathlib/Recursive.lean +++ b/HexMvPolyMathlib/Recursive.lean @@ -85,7 +85,7 @@ theorem recursiveMap_injective [CommSemiring R] [DecidableEq R] : intro m have hc := congrArg (fun f => - MvPolynomial.coeff (monoEquiv m) (Polynomial.coeff f e)) h + (Polynomial.coeff f e).coeff (monoEquiv m)) h simpa [recursiveMap] using hc /-- The comparison map preserves zero. -/ diff --git a/HexNumberFieldMathlib/Interval.lean b/HexNumberFieldMathlib/Interval.lean index 251f8788c8..febf2bc4c0 100644 --- a/HexNumberFieldMathlib/Interval.lean +++ b/HexNumberFieldMathlib/Interval.lean @@ -14,10 +14,10 @@ open HexRootsMathlib /-- Both coordinate projections lie in the dyadic radius bounds. -/ theorem bounds {p : ZPoly} (a : RefinedIsolation p) : - (Dyadic.toReal (a.1.square.re - a.1.square.radiusHi) ≤ a.root.re ∧ - a.root.re ≤ Dyadic.toReal (a.1.square.re + a.1.square.radiusHi)) ∧ - (Dyadic.toReal (a.1.square.im - a.1.square.radiusHi) ≤ a.root.im ∧ - a.root.im ≤ Dyadic.toReal (a.1.square.im + a.1.square.radiusHi)) := by + (HexRootsMathlib.Dyadic.toReal (a.1.square.re - a.1.square.radiusHi) ≤ a.root.re ∧ + a.root.re ≤ HexRootsMathlib.Dyadic.toReal (a.1.square.re + a.1.square.radiusHi)) ∧ + (HexRootsMathlib.Dyadic.toReal (a.1.square.im - a.1.square.radiusHi) ≤ a.root.im ∧ + a.root.im ≤ HexRootsMathlib.Dyadic.toReal (a.1.square.im + a.1.square.radiusHi)) := by have hd := RefinedIsolation.root_mem_closedDisc a change dist a.root (HexRootsMathlib.DyadicSquare.center a.1.square) ≤ HexRootsMathlib.DyadicSquare.radius a.1.square at hd rw [dist_eq_norm] at hd @@ -27,7 +27,7 @@ theorem bounds {p : ZPoly} (a : RefinedIsolation p) : (hd.trans (DyadicSquare.radius_lt_radiusHi _).le) simp only [Complex.sub_re, Complex.sub_im, DyadicSquare.center_eq, Hex.DyadicSquare.center, GaussDyadic.toComplex] at hre him - simp only [Dyadic.toReal_sub, Dyadic.toReal_add] + simp only [HexRootsMathlib.Dyadic.toReal_sub, HexRootsMathlib.Dyadic.toReal_add] obtain ⟨hrl, hru⟩ := abs_le.mp hre obtain ⟨hil, hiu⟩ := abs_le.mp him constructor <;> constructor <;> linarith @@ -42,12 +42,12 @@ theorem realOrder?_sound {p q : ZPoly} (a : RefinedIsolation p) (b : RefinedIsol split at h · rename_i hlt have : a.root.re < b.root.re := lt_of_le_of_lt ha.1.2 - ((Dyadic.toReal_lt_toReal_iff.mpr hlt).trans_le hb.1.1) + ((HexRootsMathlib.Dyadic.toReal_lt_toReal_iff.mpr hlt).trans_le hb.1.1) exact (compare_lt_iff_lt.mpr this).trans (Option.some.inj h) · split at h · rename_i hgt have : b.root.re < a.root.re := lt_of_le_of_lt hb.1.2 - ((Dyadic.toReal_lt_toReal_iff.mpr hgt).trans_le ha.1.1) + ((HexRootsMathlib.Dyadic.toReal_lt_toReal_iff.mpr hgt).trans_le ha.1.1) exact (compare_gt_iff_gt.mpr this).trans (Option.some.inj h) · contradiction @@ -58,8 +58,8 @@ theorem imagApart_sound {p q : ZPoly} (a : RefinedIsolation p) (b : RefinedIsola have hb := (bounds b).2 simp only [imagApart, Bool.or_eq_true, decide_eq_true_eq] at h rcases h with h | h - · exact ne_of_lt (ha.2.trans_lt ((Dyadic.toReal_lt_toReal_iff.mpr h).trans_le hb.1)) - · exact ne_of_gt (hb.2.trans_lt ((Dyadic.toReal_lt_toReal_iff.mpr h).trans_le ha.1)) + · exact ne_of_lt (ha.2.trans_lt ((HexRootsMathlib.Dyadic.toReal_lt_toReal_iff.mpr h).trans_le hb.1)) + · exact ne_of_gt (hb.2.trans_lt ((HexRootsMathlib.Dyadic.toReal_lt_toReal_iff.mpr h).trans_le ha.1)) /-- A strict-order rejection is sound. -/ theorem notLt_sound {p q : ZPoly} (a : RefinedIsolation p) (b : RefinedIsolation q) @@ -67,7 +67,7 @@ theorem notLt_sound {p q : ZPoly} (a : RefinedIsolation p) (b : RefinedIsolation have ha := (bounds a).1 have hb := (bounds b).1 simp only [notLt, decide_eq_true_eq] at h - exact not_lt_of_ge (hb.2.trans ((Dyadic.toReal_le_toReal_iff.mpr h).trans ha.1)) + exact not_lt_of_ge (hb.2.trans ((HexRootsMathlib.Dyadic.toReal_le_toReal_iff.mpr h).trans ha.1)) /-- A non-strict-order rejection is sound. -/ theorem notLe_sound {p q : ZPoly} (a : RefinedIsolation p) (b : RefinedIsolation q) @@ -75,7 +75,7 @@ theorem notLe_sound {p q : ZPoly} (a : RefinedIsolation p) (b : RefinedIsolation have ha := (bounds a).1 have hb := (bounds b).1 simp only [notLe, decide_eq_true_eq] at h - exact not_le_of_gt (hb.2.trans_lt ((Dyadic.toReal_lt_toReal_iff.mpr h).trans_le ha.1)) + exact not_le_of_gt (hb.2.trans_lt ((HexRootsMathlib.Dyadic.toReal_lt_toReal_iff.mpr h).trans_le ha.1)) /-- Threaded refinement preserves any sound coordinate probe. -/ theorem search_sound {α : Type} (probe : DyadicSquare → DyadicSquare → Option α) diff --git a/HexNumberFieldMathlib/Nearest.lean b/HexNumberFieldMathlib/Nearest.lean index 9081476d96..3a09fe831b 100644 --- a/HexNumberFieldMathlib/Nearest.lean +++ b/HexNumberFieldMathlib/Nearest.lean @@ -32,10 +32,10 @@ namespace Hex namespace DyadicComplexBall /-- The centre of a ball, componentwise. -/ -theorem center_re (b : DyadicComplexBall) : b.center.re = Dyadic.toReal b.re := +theorem center_re (b : DyadicComplexBall) : b.center.re = HexRootsMathlib.Dyadic.toReal b.re := GaussDyadic.toComplex_re (b.re, b.im) -theorem center_im (b : DyadicComplexBall) : b.center.im = Dyadic.toReal b.im := +theorem center_im (b : DyadicComplexBall) : b.center.im = HexRootsMathlib.Dyadic.toReal b.im := GaussDyadic.toComplex_im (b.re, b.im) /-- A point of a ball is within the radius of the centre. -/ @@ -52,8 +52,8 @@ theorem radius_nonneg_of_mem {b : DyadicComplexBall} {z : ℂ} (h : z ∈ b.set) theorem meets_of_mem_set {b₁ b₂ : DyadicComplexBall} {z : ℂ} (h₁ : z ∈ b₁.set) (h₂ : z ∈ b₂.set) : b₁.meets b₂ = true := by unfold meets - rw [decide_eq_true_eq, ← Dyadic.toReal_le_toReal_iff, Dyadic.toReal_mul, - Dyadic.toReal_add, DyadicSquare.toReal_distSq] + rw [decide_eq_true_eq, ← HexRootsMathlib.Dyadic.toReal_le_toReal_iff, HexRootsMathlib.Dyadic.toReal_mul, + HexRootsMathlib.Dyadic.toReal_add, DyadicSquare.toReal_distSq] have h₁' := dist_le_of_mem h₁ have h₂' := dist_le_of_mem h₂ have htri : dist b₁.center b₂.center ≤ b₁.realRadius + b₂.realRadius := by @@ -70,8 +70,8 @@ theorem dist_le_of_meets {b₁ b₂ : DyadicComplexBall} {z w : ℂ} (h : b₁.meets b₂ = true) (hz : z ∈ b₁.set) (hw : w ∈ b₂.set) : dist z w ≤ 2 * (b₁.realRadius + b₂.realRadius) := by unfold meets at h - rw [decide_eq_true_eq, ← Dyadic.toReal_le_toReal_iff, Dyadic.toReal_mul, - Dyadic.toReal_add, DyadicSquare.toReal_distSq] at h + rw [decide_eq_true_eq, ← HexRootsMathlib.Dyadic.toReal_le_toReal_iff, HexRootsMathlib.Dyadic.toReal_mul, + HexRootsMathlib.Dyadic.toReal_add, DyadicSquare.toReal_distSq] at h have hnn : 0 ≤ b₁.realRadius + b₂.realRadius := add_nonneg (radius_nonneg_of_mem hz) (radius_nonneg_of_mem hw) have hcenters : dist b₁.center b₂.center ≤ b₁.realRadius + b₂.realRadius := by @@ -101,7 +101,7 @@ theorem conj_mem_mirrorBall {b : DyadicComplexBall} {z : ℂ} (h : z ∈ b.set) apply Complex.ext · rw [DyadicComplexBall.center_re, Complex.conj_re, DyadicComplexBall.center_re, hre] · rw [DyadicComplexBall.center_im, Complex.conj_im, DyadicComplexBall.center_im, him, - Dyadic.toReal_neg] + HexRootsMathlib.Dyadic.toReal_neg] have hradius : (mirrorBall b).realRadius = b.realRadius := rfl rw [DyadicComplexBall.set, Metric.mem_closedBall, hcenter, hradius, Complex.dist_conj_conj] exact DyadicComplexBall.dist_le_of_mem h @@ -183,7 +183,7 @@ theorem mul_p_ne_zero (a b : AlgebraicNumber) : a.p * b.p ≠ 0 := by /-- The real part of a number is within the ball radius of the centre's. -/ theorem abs_re_sub_center_le (a : AlgebraicNumber) (prec : Int) : - |a.toComplex.re - Dyadic.toReal (a.approx prec).re| ≤ (a.approx prec).realRadius := by + |a.toComplex.re - HexRootsMathlib.Dyadic.toReal (a.approx prec).re| ≤ (a.approx prec).realRadius := by have h := DyadicComplexBall.dist_le_of_mem (approx_mem a prec) rw [dist_eq_norm] at h have h' := Complex.abs_re_le_norm (a.toComplex - (a.approx prec).center) @@ -220,7 +220,7 @@ theorem realCompareExact_eq (a b : AlgebraicNumber) (ha : a.isReal = true) then Ordering.lt else Ordering.gt) = _ split · rename_i hlt - have hlt' := Dyadic.toReal_lt_toReal_iff.mpr hlt + have hlt' := HexRootsMathlib.Dyadic.toReal_lt_toReal_iff.mpr hlt symm rw [compare_lt_iff_lt] by_contra hge @@ -228,9 +228,9 @@ theorem realCompareExact_eq (a b : AlgebraicNumber) (ha : a.isReal = true) rw [abs_of_nonneg (by linarith)] at hsep linarith · rename_i hnlt - have hge' : Dyadic.toReal (b.approx (separationPrec (a.p * b.p))).re ≤ - Dyadic.toReal (a.approx (separationPrec (a.p * b.p))).re := - not_lt.mp fun h => hnlt (Dyadic.toReal_lt_toReal_iff.mp h) + have hge' : HexRootsMathlib.Dyadic.toReal (b.approx (separationPrec (a.p * b.p))).re ≤ + HexRootsMathlib.Dyadic.toReal (a.approx (separationPrec (a.p * b.p))).re := + not_lt.mp fun h => hnlt (HexRootsMathlib.Dyadic.toReal_lt_toReal_iff.mp h) symm rw [compare_gt_iff_gt] by_contra hle @@ -303,9 +303,9 @@ theorem square_im_pos_iff {d : AlgebraicNumber} have hdist : dist d.toComplex (HexRootsMathlib.DyadicSquare.center s) ≤ HexRootsMathlib.DyadicSquare.radius s := by simpa only [HexRootsMathlib.DyadicSquare.closedDisc, Metric.mem_closedBall] using hmem - have hcenter : (HexRootsMathlib.DyadicSquare.center s).im = Dyadic.toReal s.im := by + have hcenter : (HexRootsMathlib.DyadicSquare.center s).im = HexRootsMathlib.Dyadic.toReal s.im := by simp [HexRootsMathlib.DyadicSquare.center_eq, Hex.DyadicSquare.center] - have himDist : |d.toComplex.im - Dyadic.toReal s.im| ≤ + have himDist : |d.toComplex.im - HexRootsMathlib.Dyadic.toReal s.im| ≤ HexRootsMathlib.DyadicSquare.radius s := by have h := Complex.abs_im_le_norm (d.toComplex - HexRootsMathlib.DyadicSquare.center s) rw [Complex.sub_im, hcenter] at h @@ -326,7 +326,7 @@ theorem square_im_pos_iff {d : AlgebraicNumber} mul_lt_mul_of_pos_left hsqrt hpos _ ≤ (2 : ℝ) ^ (-(3 : ℤ)) * 2 := by gcongr _ = 1 / 4 := by norm_num - rw [← Dyadic.toReal_lt_toReal_iff, Dyadic.toReal_zero] + rw [← HexRootsMathlib.Dyadic.toReal_lt_toReal_iff, HexRootsMathlib.Dyadic.toReal_zero] rw [abs_le] at himDist rcases hcases with h | h · rw [h] at himDist ⊢ @@ -439,7 +439,7 @@ theorem ballDistSq_cast (b : DyadicComplexBall) (re im : Rat) : rw [Complex.sq_norm, Complex.normSq_apply, Complex.sub_re, Complex.sub_im, DyadicComplexBall.center_re, DyadicComplexBall.center_im] simp only [point, Complex.add_re, Complex.add_im, Complex.mul_re, Complex.mul_im, - Complex.I_re, Complex.I_im, Dyadic.toReal, Complex.ratCast_re, Complex.ratCast_im] + Complex.I_re, Complex.I_im, HexRootsMathlib.Dyadic.toReal, Complex.ratCast_re, Complex.ratCast_im] push_cast ring @@ -453,7 +453,7 @@ theorem norm_center_sub_le (b : DyadicComplexBall) (re im : Rat) : rw [Complex.sub_re, Complex.sub_im, DyadicComplexBall.center_re, DyadicComplexBall.center_im] at h simp only [point, Complex.add_re, Complex.add_im, Complex.mul_re, Complex.mul_im, - Complex.I_re, Complex.I_im, Dyadic.toReal, Complex.ratCast_re, Complex.ratCast_im] at h + Complex.I_re, Complex.I_im, HexRootsMathlib.Dyadic.toReal, Complex.ratCast_re, Complex.ratCast_im] at h push_cast simpa using h diff --git a/HexPolyZMathlib/MahlerSeparation.lean b/HexPolyZMathlib/MahlerSeparation.lean index 7cf4564461..452afc7ffb 100644 --- a/HexPolyZMathlib/MahlerSeparation.lean +++ b/HexPolyZMathlib/MahlerSeparation.lean @@ -245,7 +245,7 @@ theorem norm_det_vandermonde_le {N : ℕ} (hN : 2 ≤ N) (c : ℂ) (α : Fin N rw [← Finset.mul_prod_erase univ _ (Finset.mem_univ i₁)] refine mul_le_mul hRi1 ?_ (Finset.prod_nonneg (fun j _ => Real.sqrt_nonneg _)) (mul_nonneg (mul_nonneg (pow_nonneg (hB0 i₁) _) (norm_nonneg _)) (Real.sqrt_nonneg _)) - exact Finset.prod_le_prod (fun j _ => Real.sqrt_nonneg _) + exact Finset.prod_le_prod₀ (fun j _ => Real.sqrt_nonneg _) (fun j hj => hRj j (Finset.mem_erase.mp hj).1) have hprodrw : ∏ j ∈ univ.erase i₁, (Real.sqrt N * B j ^ (N - 1)) = Real.sqrt N ^ (N - 1) * (∏ j ∈ univ.erase i₁, B j) ^ (N - 1) := by diff --git a/HexPolyZMathlib/RobinsonForm.lean b/HexPolyZMathlib/RobinsonForm.lean index d1552a03d9..efab89c270 100644 --- a/HexPolyZMathlib/RobinsonForm.lean +++ b/HexPolyZMathlib/RobinsonForm.lean @@ -392,7 +392,7 @@ theorem mahlerMeasure_le_circleAverage_norm (p : ℂ[X]) : have : IsFiniteMeasure (volume.restrict (uIoc 0 (2 * Real.pi))) := by rw [uIoc_of_le (by positivity)] infer_instance - have : NeZero (volume (uIoc 0 (2 * Real.pi))) := ⟨by simp⟩ + have : NeZero (volume (uIoc 0 (2 * Real.pi))) := ⟨by simp [Real.pi_pos]⟩ by_cases hp : p = 0 · rw [hp, mahlerMeasure_zero] exact Real.circleAverage_nonneg_of_nonneg (fun z _ => norm_nonneg (eval z (0 : ℂ[X]))) diff --git a/HexRCF/Cells.lean b/HexRCF/Cells.lean index f2fb9df143..cbc6cceefa 100644 --- a/HexRCF/Cells.lean +++ b/HexRCF/Cells.lean @@ -111,7 +111,7 @@ theorem openPoint_mem {f : ZPoly} {replay : SturmReplay} (hstrict : cert.checkStrict replay = true) (cut : Fin (cert.intervals.size + 1)) : Sem (cert.rootModel hreplay hstrict) (.open cut) - (Dyadic.toReal (cert.openPoint cut)) := by + (HexRealRootsMathlib.Dyadic.toReal (cert.openPoint cut)) := by classical by_cases hzero : cert.intervals.size = 0 · simp [Sem, hzero] @@ -176,22 +176,22 @@ theorem openPoint_mem {f : ZPoly} {replay : SturmReplay} have hmu := toReal_lt_toReal (midpoint_lt_upper gap) simp only [Literal.InInterval] at hprev hnext have hsem : (cert.rootModel hreplay hstrict).root - ⟨cut.val - 1, by omega⟩ < Dyadic.toReal gap.midpoint ∧ - Dyadic.toReal gap.midpoint < + ⟨cut.val - 1, by omega⟩ < HexRealRootsMathlib.Dyadic.toReal gap.midpoint ∧ + HexRealRootsMathlib.Dyadic.toReal gap.midpoint < (cert.rootModel hreplay hstrict).root ⟨cut.val, by omega⟩ := ⟨lt_of_le_of_lt hprev.2 hlm, lt_trans hmu hnext.1⟩ - have hraw : Dyadic.toReal + have hraw : HexRealRootsMathlib.Dyadic.toReal (((cert.intervals[cut.val - 1]'(by omega)).upper + (cert.intervals[cut.val]'(by omega)).lower) >>> (1 : Int)) = - (Dyadic.toReal (cert.intervals[cut.val - 1]'(by omega)).upper + - Dyadic.toReal (cert.intervals[cut.val]'(by omega)).lower) / 2 := by + (HexRealRootsMathlib.Dyadic.toReal (cert.intervals[cut.val - 1]'(by omega)).upper + + HexRealRootsMathlib.Dyadic.toReal (cert.intervals[cut.val]'(by omega)).lower) / 2 := by rw [toReal_shiftRight, toReal_add] norm_num ring - have hmid : Dyadic.toReal + have hmid : HexRealRootsMathlib.Dyadic.toReal (((cert.intervals[cut.val - 1]'(by omega)).upper + (cert.intervals[cut.val]'(by omega)).lower) >>> (1 : Int)) = - Dyadic.toReal gap.midpoint := by + HexRealRootsMathlib.Dyadic.toReal gap.midpoint := by rw [hraw, toReal_midpoint] rw [← hmid] at hsem simpa [Sem, IsolationCert.openPoint, hzero, hleft, hright] using hsem @@ -493,16 +493,16 @@ theorem holds_of_check {f : ZPoly} {replay : SturmReplay} (hcmps : check f replay cert a b cmps = true) (i : Fin cert.intervals.size) : cmps.lower[i].Holds ((cert.rootModel hreplay hstrict).root i) - (Dyadic.toReal a) ∧ + (HexRealRootsMathlib.Dyadic.toReal a) ∧ cmps.upper[i].Holds ((cert.rootModel hreplay hstrict).root i) - (Dyadic.toReal b) := by + (HexRealRootsMathlib.Dyadic.toReal b) := by have hmem : i.val ∈ List.range cert.intervals.size := List.mem_range.mpr i.isLt have hstep := (List.all_eq_true.mp hcmps) i.val hmem simp only [i.isLt, dite_true, Bool.and_eq_true] at hstep have cmpHolds (endpoint : Dyadic) (claim : Separation.RootCmp) (hclaim : Separation.checkCmp f replay cert.intervals[i] endpoint claim = true) : claim.Holds ((cert.rootModel hreplay hstrict).root i) - (Dyadic.toReal endpoint) := by + (HexRealRootsMathlib.Dyadic.toReal endpoint) := by obtain ⟨root, hroot, -⟩ := Separation.checkCmp_sound hreplay (IsolationCert.check_of_checkStrict hstrict) i endpoint claim hclaim have hrootAt := cert.rootAt_unique hreplay @@ -542,17 +542,17 @@ private theorem eq_lt_iff {cmp : Separation.RootCmp} {root endpoint : ℝ} nonempty half-open interval. -/ theorem meetsIoc_iff {f : ZPoly} {cert : IsolationCert} (M : RootModel f cert) (cmps : IocCmps cert.intervals.size) - (a b : Dyadic) (hab : Dyadic.toReal a < Dyadic.toReal b) + (a b : Dyadic) (hab : HexRealRootsMathlib.Dyadic.toReal a < HexRealRootsMathlib.Dyadic.toReal b) (hlower : ∀ i : Fin cert.intervals.size, - Separation.RootCmp.Holds cmps.lower[i] (M.root i) (Dyadic.toReal a)) + Separation.RootCmp.Holds cmps.lower[i] (M.root i) (HexRealRootsMathlib.Dyadic.toReal a)) (hupper : ∀ i : Fin cert.intervals.size, - Separation.RootCmp.Holds cmps.upper[i] (M.root i) (Dyadic.toReal b)) + Separation.RootCmp.Holds cmps.upper[i] (M.root i) (HexRealRootsMathlib.Dyadic.toReal b)) (c : Cell cert.intervals.size) : meetsIoc cmps c = true ↔ ∃ x : ℝ, Sem M c x ∧ - x ∈ Set.Ioc (Dyadic.toReal a) (Dyadic.toReal b) := by - let A := Dyadic.toReal a - let B := Dyadic.toReal b + x ∈ Set.Ioc (HexRealRootsMathlib.Dyadic.toReal a) (HexRealRootsMathlib.Dyadic.toReal b) := by + let A := HexRealRootsMathlib.Dyadic.toReal a + let B := HexRealRootsMathlib.Dyadic.toReal b change meetsIoc cmps c = true ↔ ∃ x : ℝ, Sem M c x ∧ x ∈ Set.Ioc A B change A < B at hab @@ -660,11 +660,11 @@ theorem meetsIoc_iff_of_check {f : ZPoly} {replay : SturmReplay} (a b : Dyadic) (hreplay : replay.check f = true) (hstrict : cert.checkStrict replay = true) (hcmps : IocCmps.check f replay cert a b cmps = true) - (hab : Dyadic.toReal a < Dyadic.toReal b) + (hab : HexRealRootsMathlib.Dyadic.toReal a < HexRealRootsMathlib.Dyadic.toReal b) (c : Cell cert.intervals.size) : meetsIoc cmps c = true ↔ ∃ x : ℝ, Sem (cert.rootModel hreplay hstrict) c x ∧ - x ∈ Set.Ioc (Dyadic.toReal a) (Dyadic.toReal b) := by + x ∈ Set.Ioc (HexRealRootsMathlib.Dyadic.toReal a) (HexRealRootsMathlib.Dyadic.toReal b) := by apply meetsIoc_iff (cert.rootModel hreplay hstrict) cmps a b hab · intro i exact (cmps.holds_of_check a b hreplay hstrict hcmps i).1 @@ -680,7 +680,7 @@ theorem meetsIocOn_iff_of_check {f : ZPoly} {replay : SturmReplay} (c : Cell cert.intervals.size) : meetsIocOn a b cmps c = true ↔ ∃ x : ℝ, Sem (cert.rootModel hreplay hstrict) c x ∧ - x ∈ Set.Ioc (Dyadic.toReal a) (Dyadic.toReal b) := by + x ∈ Set.Ioc (HexRealRootsMathlib.Dyadic.toReal a) (HexRealRootsMathlib.Dyadic.toReal b) := by by_cases hab : a < b · simp only [meetsIocOn, hab, decide_true] exact meetsIoc_iff_of_check cmps a b hreplay hstrict hcmps @@ -688,7 +688,7 @@ theorem meetsIocOn_iff_of_check {f : ZPoly} {replay : SturmReplay} · constructor · simp [meetsIocOn, hab] · rintro ⟨x, -, hax, hxb⟩ - have hreal : ¬Dyadic.toReal a < Dyadic.toReal b := by + have hreal : ¬HexRealRootsMathlib.Dyadic.toReal a < HexRealRootsMathlib.Dyadic.toReal b := by simpa [toReal_lt_toReal_iff] using hab exact (hreal (lt_of_lt_of_le hax hxb)).elim diff --git a/HexRCF/CellsTests.lean b/HexRCF/CellsTests.lean index e5a30b89d2..26788d7ed0 100644 --- a/HexRCF/CellsTests.lean +++ b/HexRCF/CellsTests.lean @@ -57,7 +57,7 @@ example : strict.openPoint ⟨2, by decide⟩ = Dyadic.ofInt 3 := by decide /-- The proof-facing sample and partition APIs consume the same checked data. -/ example : Cell.Sem (strict.rootModel (f := quad) (replay := replay) replay_ok strict_ok) - (Cell.open ⟨1, by decide⟩) (Dyadic.toReal (strict.openPoint ⟨1, by decide⟩)) := + (Cell.open ⟨1, by decide⟩) (HexRealRootsMathlib.Dyadic.toReal (strict.openPoint ⟨1, by decide⟩)) := Cell.openPoint_mem (f := quad) (replay := replay) strict replay_ok strict_ok ⟨1, by decide⟩ @@ -96,8 +96,8 @@ example (c : Cell strict.intervals.size) : Cell.meetsIoc cmps c = true ↔ ∃ z : ℝ, Cell.Sem (strict.rootModel (f := quad) (replay := replay) replay_ok strict_ok) c z ∧ - z ∈ Set.Ioc (Dyadic.toReal (Dyadic.ofInt (-1))) - (Dyadic.toReal (Dyadic.ofInt 1)) := + z ∈ Set.Ioc (HexRealRootsMathlib.Dyadic.toReal (Dyadic.ofInt (-1))) + (HexRealRootsMathlib.Dyadic.toReal (Dyadic.ofInt 1)) := Cell.meetsIoc_iff_of_check (f := quad) (replay := replay) (cert := strict) cmps (Dyadic.ofInt (-1)) (Dyadic.ofInt 1) replay_ok strict_ok cmps_ok diff --git a/HexRCF/Language.lean b/HexRCF/Language.lean index 5dde838c49..d91fd3aec2 100644 --- a/HexRCF/Language.lean +++ b/HexRCF/Language.lean @@ -22,7 +22,7 @@ construction. Rational coefficients are handled by the tactic's reifier, which clears denominators before constructing an `Atom`. Reification relates atom evaluation and dyadic endpoints propositionally -using the `aeval` and `Dyadic.toReal` lemmas. Normalisation and +using the `aeval` and `HexRealRootsMathlib.Dyadic.toReal` lemmas. Normalisation and denominator clearing are not expected to make the reflected semantics definitionally equal to the source goal. -/ diff --git a/HexRCF/Separation.lean b/HexRCF/Separation.lean index 56b1d26787..d8b7f15bfe 100644 --- a/HexRCF/Separation.lean +++ b/HexRCF/Separation.lean @@ -59,7 +59,7 @@ theorem classify_sound {f : ZPoly} {replay : SturmReplay} (hcmp : classify? f replay cert.intervals[i] endpoint = some cmp) : ∃! root : ℝ, (toPolyℝ f).IsRoot root ∧ Literal.InInterval cert.intervals[i] root ∧ - cmp.Holds root (Dyadic.toReal endpoint) := by + cmp.Holds root (HexRealRootsMathlib.Dyadic.toReal endpoint) := by classical obtain ⟨root, hroot, huniq⟩ := IsolationCert.existsUnique_root hreplay hcert i @@ -125,17 +125,17 @@ theorem classify_sound {f : ZPoly} {replay : SturmReplay} le_trans hymem.2.2 (toReal_le_toReal hend)⟩ have hyr : y = root := huniq y ⟨(Polynomial.mem_roots'.mp hymem.1).2, hyI⟩ - have hrootEnd : root ≤ Dyadic.toReal endpoint := by + have hrootEnd : root ≤ HexRealRootsMathlib.Dyadic.toReal endpoint := by rw [← hyr] exact hymem.2.2 split at hcmp next heval => have heq : RootCmp.eq = cmp := Option.some.inj hcmp subst cmp - have hendRoot : (toPolyℝ f).IsRoot (Dyadic.toReal endpoint) := + have hendRoot : (toPolyℝ f).IsRoot (HexRealRootsMathlib.Dyadic.toReal endpoint) := (evalSign_zero_iff f endpoint).mp heval have hendI : Literal.InInterval cert.intervals[i] - (Dyadic.toReal endpoint) := by + (HexRealRootsMathlib.Dyadic.toReal endpoint) := by exact ⟨toReal_lt_toReal (Dyadic.not_lt.mp hleft), toReal_le_toReal hend⟩ exact (huniq _ ⟨hendRoot, hendI⟩).symm @@ -217,7 +217,7 @@ theorem checkCmp_sound {f : ZPoly} {replay : SturmReplay} (hclaim : checkCmp f replay cert.intervals[i] endpoint claim = true) : ∃! root : ℝ, (toPolyℝ f).IsRoot root ∧ Literal.InInterval cert.intervals[i] root ∧ - claim.Holds root (Dyadic.toReal endpoint) := by + claim.Holds root (HexRealRootsMathlib.Dyadic.toReal endpoint) := by apply classify_sound hreplay hcert i endpoint exact of_decide_eq_true hclaim diff --git a/HexRCF/SeparationTests.lean b/HexRCF/SeparationTests.lean index 196b9619b1..c1fdcc03c7 100644 --- a/HexRCF/SeparationTests.lean +++ b/HexRCF/SeparationTests.lean @@ -230,7 +230,7 @@ example : Separation.checkCmp quad replay left (Dyadic.ofInt (-1)) .lt = false : /-- Checked endpoint claims expose their semantic order in the kernel. -/ example : ∃! root : ℝ, (HexRealRootsMathlib.toPolyℝ quad).IsRoot root ∧ HexRealRootsMathlib.Literal.InInterval touching.intervals[0] root ∧ - Separation.RootCmp.eq.Holds root (Dyadic.toReal (Dyadic.ofInt (-1))) := + Separation.RootCmp.eq.Holds root (HexRealRootsMathlib.Dyadic.toReal (Dyadic.ofInt (-1))) := Separation.checkCmp_sound (f := quad) (replay := replay) (cert := touching) (by decide) (by decide) ⟨0, by decide⟩ (Dyadic.ofInt (-1)) .eq (by decide) diff --git a/HexRCF/SignMatrix.lean b/HexRCF/SignMatrix.lean index 0b9af13250..9f2cf546eb 100644 --- a/HexRCF/SignMatrix.lean +++ b/HexRCF/SignMatrix.lean @@ -78,7 +78,7 @@ open HexRealRootsMathlib Polynomial real-polynomial evaluation. -/ theorem evalSign_spec (p : ZPoly) (x : Dyadic) : SignType.sign (((evalSign p x).toInt : Int) : ℝ) = - SignType.sign ((toPolyℝ p).eval (Dyadic.toReal x)) := by + SignType.sign ((toPolyℝ p).eval (HexRealRootsMathlib.Dyadic.toReal x)) := by rw [evalSign, Sign.ofInt_spec, ← toReal_evalDyadic] exact sign_dyadicSign _ @@ -102,7 +102,7 @@ theorem sign_eval_eq_open {carrier : ZPoly} {replay : SturmReplay} (cut : Fin (isolations.intervals.size + 1)) {x : ℝ} (hx : Cell.Sem (isolations.rootModel hreplay hstrict) (.open cut) x) : SignType.sign ((toPolyℝ atom).eval - (Dyadic.toReal (isolations.openPoint cut))) = + (HexRealRootsMathlib.Dyadic.toReal (isolations.openPoint cut))) = SignType.sign ((toPolyℝ atom).eval x) := by let model := isolations.rootModel hreplay hstrict apply Polynomial.sign_eq_of_noRoot (Cell.isPreconnected_open model cut) @@ -211,12 +211,12 @@ theorem evalSign_commonLeft /-- Exact evaluation cannot report zero at a certified nonroot. -/ theorem evalSign_ne_zero (p : ZPoly) (x : Dyadic) - (hroot : ¬(toPolyℝ p).IsRoot (Dyadic.toReal x)) : + (hroot : ¬(toPolyℝ p).IsRoot (HexRealRootsMathlib.Dyadic.toReal x)) : evalSign p x ≠ .zero := by intro hzero have hsign := evalSign_spec p x rw [hzero] at hsign - have heval : (toPolyℝ p).eval (Dyadic.toReal x) = 0 := by + have heval : (toPolyℝ p).eval (HexRealRootsMathlib.Dyadic.toReal x) = 0 := by apply sign_eq_zero_iff.mp simpa [Sign.toInt] using hsign.symm exact hroot heval @@ -246,10 +246,10 @@ theorem openCellSign_spec {sentence : Sentence} {carrier : CarrierCert} intro z hz exact (carrier.isRoot_iff_atom hcarrier z).2 ⟨p, hpmem, hz⟩ have hsample : Cell.Sem model (.open cut) - (Dyadic.toReal (isolations.openPoint cut)) := + (HexRealRootsMathlib.Dyadic.toReal (isolations.openPoint cut)) := Cell.openPoint_mem isolations hreplay hstrict cut have hnotroot : ¬(toPolyℝ p).IsRoot - (Dyadic.toReal (isolations.openPoint cut)) := by + (HexRealRootsMathlib.Dyadic.toReal (isolations.openPoint cut)) := by intro hpRoot exact Cell.open_not_root model hsample (hroot _ hpRoot) have hnonzero : evalSign p (isolations.openPoint cut) ≠ .zero := @@ -294,7 +294,7 @@ theorem signWith?_spec {sentence : Sentence} {carrier : CarrierCert} cases cell with | «open» cut => have hsample : Cell.Sem model (.open cut) - (Dyadic.toReal (isolations.openPoint cut)) := + (HexRealRootsMathlib.Dyadic.toReal (isolations.openPoint cut)) := Cell.openPoint_mem isolations hreplay hstrict cut obtain ⟨sign, hsign, _⟩ := openCellSign_spec hcarrier hstrict hp cut hsample @@ -333,10 +333,10 @@ theorem signWith?_spec {sentence : Sentence} {carrier : CarrierCert} have hhasFalse' : common.hasRoot isolations.intervals[↑i] = false := by simpa using hhasFalse have hsample : Cell.Sem model (.open i.castSucc) - (Dyadic.toReal (isolations.openPoint i.castSucc)) := + (HexRealRootsMathlib.Dyadic.toReal (isolations.openPoint i.castSucc)) := Cell.openPoint_mem isolations hreplay hstrict i.castSucc have hnotroot : ¬(toPolyℝ p).IsRoot - (Dyadic.toReal (isolations.openPoint i.castSucc)) := by + (HexRealRootsMathlib.Dyadic.toReal (isolations.openPoint i.castSucc)) := by intro hpRoot exact Cell.open_not_root model hsample (hroot _ hpRoot) have hnonzero : evalSign p (isolations.openPoint i.castSucc) ≠ .zero := diff --git a/HexRCF/Soundness.lean b/HexRCF/Soundness.lean index 0a9a119de3..8719a657ea 100644 --- a/HexRCF/Soundness.lean +++ b/HexRCF/Soundness.lean @@ -337,10 +337,11 @@ theorem forallIoc_spec {carrier : ZPoly} {replay : SturmReplay} ∃ value, allWhereArray (Cell.all cert.intervals.size) (Cell.meetsIocOn a b cmps) eval = some value ∧ - (value = true ↔ ∀ x, x ∈ Set.Ioc (Dyadic.toReal a) (Dyadic.toReal b) → P x) := by + (value = true ↔ ∀ x, + x ∈ Set.Ioc (HexRealRootsMathlib.Dyadic.toReal a) (HexRealRootsMathlib.Dyadic.toReal b) → P x) := by apply forallWhere_spec (cert.rootModel hreplay hstrict) eval (Cell.meetsIocOn a b cmps) - (fun x => x ∈ Set.Ioc (Dyadic.toReal a) (Dyadic.toReal b)) P hcell + (fun x => x ∈ Set.Ioc (HexRealRootsMathlib.Dyadic.toReal a) (HexRealRootsMathlib.Dyadic.toReal b)) P hcell exact fun c => Cell.meetsIocOn_iff_of_check cmps a b hreplay hstrict hcmps c /-- @@ -358,10 +359,11 @@ theorem existsIoc_spec {carrier : ZPoly} {replay : SturmReplay} ∃ value, anyWhereArray (Cell.all cert.intervals.size) (Cell.meetsIocOn a b cmps) eval = some value ∧ - (value = true ↔ ∃ x, x ∈ Set.Ioc (Dyadic.toReal a) (Dyadic.toReal b) ∧ P x) := by + (value = true ↔ ∃ x, + x ∈ Set.Ioc (HexRealRootsMathlib.Dyadic.toReal a) (HexRealRootsMathlib.Dyadic.toReal b) ∧ P x) := by apply existsWhere_spec (cert.rootModel hreplay hstrict) eval (Cell.meetsIocOn a b cmps) - (fun x => x ∈ Set.Ioc (Dyadic.toReal a) (Dyadic.toReal b)) P hcell + (fun x => x ∈ Set.Ioc (HexRealRootsMathlib.Dyadic.toReal a) (HexRealRootsMathlib.Dyadic.toReal b)) P hcell exact fun c => Cell.meetsIocOn_iff_of_check cmps a b hreplay hstrict hcmps c end CellFold @@ -397,7 +399,7 @@ theorem Certificate.emptyIoc_sound {s : Sentence} · simp at h · rename_i hab intro x hx - have hreal : ¬Dyadic.toReal a < Dyadic.toReal b := by + have hreal : ¬HexRealRootsMathlib.Dyadic.toReal a < HexRealRootsMathlib.Dyadic.toReal b := by simpa [toReal_lt_toReal_iff] using hab exact (hreal (lt_of_lt_of_le hx.1 hx.2)).elim | existsIoc a b formula => diff --git a/HexRankMathlib/Cert.lean b/HexRankMathlib/Cert.lean index 1e4c3f5214..69be1e9b0e 100644 --- a/HexRankMathlib/Cert.lean +++ b/HexRankMathlib/Cert.lean @@ -83,7 +83,6 @@ theorem cols_subset_reduceStep {quot : R → R → R} (S : Hex.Matrix.ReducedFor cases hp : Hex.Matrix.findPivotRow? S.matrix S.profile.rows.toList j with | none => rw [Hex.Matrix.reduceStep_skip hp] - exact List.Subset.refl _ | some p => rw [Hex.Matrix.reduceStep_pivot_profile hp] simp only [Vector.toList_push] diff --git a/HexRealRootsMathlib/ChainCorrespond.lean b/HexRealRootsMathlib/ChainCorrespond.lean index 8e29110971..6b6ae4301b 100644 --- a/HexRealRootsMathlib/ChainCorrespond.lean +++ b/HexRealRootsMathlib/ChainCorrespond.lean @@ -201,16 +201,6 @@ theorem evalSign_zero_iff (p : Hex.ZPoly) (x : Dyadic) : sign_eq_zero_iff.mp hs exact_mod_cast hz -/-- Filtering the real casts by nonzero commutes with filtering the integers by -nonzero: casting to `ℝ` neither creates nor destroys zero entries. -/ -private theorem filter_map_ne_zero (l : List Int) : - (l.map (Int.cast : ℤ → ℝ)).filter (fun v => decide (v ≠ 0)) - = (l.filter (· != 0)).map (Int.cast : ℤ → ℝ) := by - have hp : ((fun v => decide (v ≠ 0)) ∘ (Int.cast : ℤ → ℝ)) = (· != 0) := by - funext i - by_cases h : i = 0 <;> simp [Function.comp_apply, h] - rw [List.filter_map, hp] - /-- Two nonzero leading entries: `signVar` peels one sign-change decision and recurses. Phrased through the public `Hex.signVar` (the internal `go` recursor is module-private), using that a nonzero head survives the zero-filter. -/ @@ -225,29 +215,25 @@ private theorem signVar_cons_cons {a b : Int} (rest : List Int) (ha : a ≠ 0) ( rw [fa, fb] rfl -/-- On a zero-free integer list, the executable count matches the abstract real -count of the casts. Structural recursion peeling two elements; each retained -entry is nonzero, so the executable and real sign tests agree pairwise. -/ +/-- On a zero-free integer list, the executable count agrees with Mathlib's count. -/ private theorem signVar_zeroFree : ∀ m : List Int, (∀ x ∈ m, x ≠ 0) → - Hex.signVar m = Sturm.countSignChanges (m.map (Int.cast : ℤ → ℝ)) + Hex.signVar m = m.signVariations | [], _ => rfl | [a], ha => by have ha0 : a ≠ 0 := ha a (by simp) - unfold Hex.signVar - rw [List.filter_cons, ite_eq_left (by simpa using ha0), List.filter_nil] - rfl + simp [Hex.signVar, Hex.signVar.go, ha0] | a :: b :: rest, hne => by have ha : a ≠ 0 := hne a (by simp) have hb : b ≠ 0 := hne b (by simp) have hbne : ∀ x ∈ b :: rest, x ≠ 0 := fun x hx => hne x (List.mem_cons_of_mem _ hx) - rw [signVar_cons_cons rest ha hb, signVar_zeroFree (b :: rest) hbne, - List.map_cons, List.map_cons, List.map_cons, Sturm.countSignChanges_cons_cons] + rw [signVar_cons_cons rest ha hb, List.signVariations_cons_cons_of_ne_zero rest ha hb, + signVar_zeroFree (b :: rest) hbne, Nat.add_comm] congr 1 - have hcast : (a : ℝ) * (b : ℝ) = ((a * b : Int) : ℝ) := by push_cast; ring - rw [hcast] - by_cases h : a * b < 0 - · rw [ite_eq_left h, ite_eq_left (by exact_mod_cast h)] - · rw [ite_eq_right h, ite_eq_right (by exact_mod_cast h)] + simp only [← sign_eq_neg_one_iff, sign_mul] + have ha' : SignType.sign a ≠ 0 := by simpa using ha + have hb' : SignType.sign b ≠ 0 := by simpa using hb + revert ha' hb' + cases SignType.sign a <;> cases SignType.sign b <;> decide /-- `signVar` reads only the zero-filtered list, so it is unchanged by pre-filtering out zeros. -/ @@ -257,15 +243,18 @@ private theorem signVar_filter (l : List Int) : rw [List.filter_filter] simp only [Bool.and_self] -/-- **Sign-variation count correspondence.** The executable integer -sign-variation count of a list equals the abstract real sign-variation count of -the list cast to `ℝ`. -/ -theorem signVar_eq (l : List Int) : - Hex.signVar l = Sturm.signVariations (l.map (Int.cast : ℤ → ℝ)) := by - rw [Sturm.signVariations, filter_map_ne_zero, signVar_filter] +/-- The executable integer sign-variation count agrees with Mathlib's list API. -/ +theorem signVar_eq_list (l : List Int) : Hex.signVar l = l.signVariations := by + rw [signVar_filter, ← List.signVariations_filter_ne_zero l] exact signVar_zeroFree (l.filter (· != 0)) (fun x hx => by simpa using (List.mem_filter.mp hx).2) +/-- Casting the executable integer sign-variation count to real inputs preserves the count. -/ +theorem signVar_eq (l : List Int) : + Hex.signVar l = List.signVariations (l.map (Int.cast : ℤ → ℝ)) := by + rw [List.signVariations_map (fun n => sign_intCast n)] + exact signVar_eq_list l + /-- **Sign-variation correspondence.** The executable Sturm sign-variation count of a chain at a dyadic point equals the abstract `Sturm.sturmVar` of the mapped real chain at the real value of the point. Positive scaling of chain elements is @@ -275,11 +264,10 @@ theorem sturmVarAt_eq (chain : Array Hex.ZPoly) (x : Dyadic) : Hex.sturmVarAt chain x = Sturm.sturmVar (chain.toList.map toPolyℝ) (Dyadic.toReal x) := by rw [Hex.sturmVarAt, signVar_eq, Sturm.sturmVar] - apply Sturm.signVariations_congr + apply List.signVariations_congr simp only [List.map_map] - rw [List.forall₂_map_left_iff, List.forall₂_map_right_iff, List.forall₂_same] - intro q _ - rw [Function.comp_apply, Function.comp_apply, sign_dyadicSign, toReal_evalDyadic] + refine List.map_congr_left fun q _ => ?_ + simp only [Function.comp_apply, sign_dyadicSign, toReal_evalDyadic] /-! # `spem` correspondence: the sign-managed pseudo-remainder over `ℝ` @@ -1424,24 +1412,18 @@ theorem sturmCount_eq_card_roots (p : Hex.ZPoly) (hp : 1 ≤ p.natDegree) /-- Casting an integer's sign to `ℝ` preserves `SignType.sign`. -/ private theorem sign_intCast_sign (n : Int) : SignType.sign ((n.sign : ℝ)) = SignType.sign ((n : ℝ)) := by - rcases lt_trichotomy n 0 with h | h | h - · rw [Int.sign_eq_neg_one_of_neg h] - have h2 : (n : ℝ) < 0 := by exact_mod_cast h - rw [show ((-1 : Int) : ℝ) = -1 by norm_num, sign_neg (by norm_num), sign_neg h2] - · subst h; simp - · rw [Int.sign_eq_one_of_pos h] - have h2 : (0:ℝ) < (n : ℝ) := by exact_mod_cast h - rw [show ((1 : Int) : ℝ) = 1 by norm_num, sign_pos (by norm_num), sign_pos h2] + simp only [sign_intCast] + rw [Int.sign_eq_sign] + cases SignType.sign n <;> decide /-- The executable `+∞` variation count matches the abstract one: both read the signs of the leading coefficients. -/ theorem sturmVarPosInf_eq (chain : Array Hex.ZPoly) : Hex.sturmVarPosInf chain = Sturm.sturmVarPosInf (chain.toList.map toPolyℝ) := by rw [Hex.sturmVarPosInf, signVar_eq, Sturm.sturmVarPosInf] - apply Sturm.signVariations_congr + apply List.signVariations_congr simp only [List.map_map] - rw [List.forall₂_map_left_iff, List.forall₂_map_right_iff, List.forall₂_same] - intro q _ + refine List.map_congr_left fun q _ => ?_ simp only [Function.comp_apply] rw [leadingCoeff_toPolyℝ] exact sign_intCast_sign _ @@ -1451,10 +1433,9 @@ theorem sturmVarPosInf_eq (chain : Array Hex.ZPoly) : theorem sturmVarNegInf_eq (chain : Array Hex.ZPoly) : Hex.sturmVarNegInf chain = Sturm.sturmVarNegInf (chain.toList.map toPolyℝ) := by rw [Hex.sturmVarNegInf, signVar_eq, Sturm.sturmVarNegInf] - apply Sturm.signVariations_congr + apply List.signVariations_congr simp only [List.map_map] - rw [List.forall₂_map_left_iff, List.forall₂_map_right_iff, List.forall₂_same] - intro q _ + refine List.map_congr_left fun q _ => ?_ simp only [Function.comp_apply] rw [leadingCoeff_toPolyℝ, natDegree_toPolyℝ] by_cases hpar : (q).natDegree % 2 = 1 diff --git a/HexRealRootsMathlib/MobiusCorrespond.lean b/HexRealRootsMathlib/MobiusCorrespond.lean index 537bc9e309..31f0bbba04 100644 --- a/HexRealRootsMathlib/MobiusCorrespond.lean +++ b/HexRealRootsMathlib/MobiusCorrespond.lean @@ -556,124 +556,45 @@ theorem roots_mobiusPoly {a b : ℂ} (hab : a ≠ b) {P : Polynomial ℂ} (hP : /-! # The Descartes variation-count bridge -`Hex.descartesVar` counts sign variations of the *ascending* coefficient list via -`Hex.signVar` (adjacent opposite-sign pairs), while `Polynomial.signVariations` -counts them on the *descending* `coeffList` via a `destutter`. We bridge the two -by (i) reversal invariance of the adjacent count and (ii) an -adjacent-count↔`destutter`-length identity on a zero-free list. -/ - -/-- Appending a single entry adds one variation exactly when it is opposite in -sign to the previous entry. -/ -private theorem countSignChanges_concat : ∀ (l : List ℝ) (x : ℝ), - Sturm.countSignChanges (l ++ [x]) = - Sturm.countSignChanges l + (l.getLast?).elim 0 (fun y => if y * x < 0 then 1 else 0) - | [], x => by simp [Sturm.countSignChanges] - | [a], x => by simp [Sturm.countSignChanges] - | a :: b :: t, x => by - rw [List.cons_append, List.cons_append, Sturm.countSignChanges_cons_cons, - ← List.cons_append, countSignChanges_concat (b :: t) x, - Sturm.countSignChanges_cons_cons, List.getLast?_cons_cons] - ring - -/-- The adjacent-opposite-sign count is invariant under reversal. -/ -private theorem countSignChanges_reverse : ∀ l : List ℝ, - Sturm.countSignChanges l.reverse = Sturm.countSignChanges l - | [] => rfl - | a :: t => by - rw [List.reverse_cons, countSignChanges_concat, countSignChanges_reverse t] - cases t with - | nil => simp [Sturm.countSignChanges] - | cons b t' => - rw [Sturm.countSignChanges_cons_cons, List.getLast?_reverse, List.head?_cons, - Option.elim_some, mul_comm b a] - ring - -/-- `Sturm.signVariations` is invariant under reversal (reading the coefficient -list forwards or backwards gives the same count). -/ -theorem signVariations_reverse (l : List ℝ) : - Sturm.signVariations l.reverse = Sturm.signVariations l := by - unfold Sturm.signVariations - rw [List.filter_reverse, countSignChanges_reverse] - -/-- For nonzero reals, `a * b < 0` iff the two entries have different signs. -/ -private theorem mul_neg_iff_sign_ne {a b : ℝ} (ha : a ≠ 0) (hb : b ≠ 0) : - (a * b < 0) ↔ (SignType.sign a ≠ SignType.sign b) := by - have hsa : SignType.sign a ≠ 0 := fun h => ha (sign_eq_zero_iff.mp h) - have hsb : SignType.sign b ≠ 0 := fun h => hb (sign_eq_zero_iff.mp h) - rw [← sign_eq_neg_one_iff, sign_mul] - cases ha' : SignType.sign a <;> cases hb' : SignType.sign b <;> simp_all - -/-- **Adjacent-count ↔ `destutter'` length.** On a zero-free real tail `m` with -a nonzero lead `a`, the adjacent-opposite-sign count of `a :: m` equals the -length of the accumulator-form `destutter'` (seeded with `sign a`) minus one. -/ -private theorem countSignChanges_destutter' : ∀ (m : List ℝ) (a : ℝ), a ≠ 0 → - (∀ x ∈ m, x ≠ 0) → - Sturm.countSignChanges (a :: m) - = ((m.map SignType.sign).destutter' (· ≠ ·) (SignType.sign a)).length - 1 - | [], a, _, _ => by simp [Sturm.countSignChanges, List.destutter'_nil] - | b :: t, a, ha, hm => by - have hb : b ≠ 0 := hm b (by simp) - have ht : ∀ x ∈ t, x ≠ 0 := fun x hx => hm x (List.mem_cons_of_mem _ hx) - have hIH := countSignChanges_destutter' t b hb ht - rw [Sturm.countSignChanges_cons_cons, List.map_cons] - by_cases hsab : SignType.sign a ≠ SignType.sign b - · rw [List.destutter'_cons_pos _ hsab, List.length_cons, - ite_eq_left ((mul_neg_iff_sign_ne ha hb).mpr hsab), hIH, Nat.add_sub_cancel] - exact Nat.add_sub_cancel' - (List.length_pos_of_ne_nil (List.destutter'_ne_nil _ _)) - · rw [List.destutter'_cons_neg _ hsab, - ite_eq_right (fun h => hsab ((mul_neg_iff_sign_ne ha hb).mp h)), Nat.zero_add, - not_not.mp hsab] - exact hIH - -/-- **Adjacent-count ↔ destutter length.** On a zero-free real list, the number -of adjacent opposite-sign pairs equals the length of the sign-`destutter` minus -one: `Sturm.countSignChanges` matches Mathlib's `destutter`-based count. -/ -private theorem countSignChanges_eq_destutter (m : List ℝ) (hm : ∀ x ∈ m, x ≠ 0) : - Sturm.countSignChanges m = ((m.map SignType.sign).destutter (· ≠ ·)).length - 1 := by - cases m with - | nil => simp [Sturm.countSignChanges] - | cons a t => - have ha : a ≠ 0 := hm a (by simp) - have ht : ∀ x ∈ t, x ≠ 0 := fun x hx => hm x (List.mem_cons_of_mem _ hx) - rw [List.map_cons, List.destutter_cons', countSignChanges_destutter' t a ha ht] - -/-- **Descending-list variation bridge.** For any real polynomial, the abstract -`Sturm.signVariations` of the ascending coefficient list equals Mathlib's -`Polynomial.signVariations` (which reads the descending `coeffList`). -/ +`Hex.descartesVar` and `Polynomial.signVariations` both agree with `List.signVariations`. +The executable reads coefficients in ascending order, while `Polynomial.coeffList` reads them +in descending order, so the remaining bridge is reversal invariance. -/ + +/-- Reading a list forwards or backwards gives the same number of sign variations. -/ +theorem signVariations_reverse {α : Type*} [Zero α] [LinearOrder α] (l : List α) : + List.signVariations l.reverse = List.signVariations l := by + have h (m : List SignType) : + (m.reverse.destutter (· ≠ ·)).length ≤ (m.destutter (· ≠ ·)).length := by + have hc : (m.reverse.destutter (· ≠ ·)).reverse.IsChain (· ≠ ·) := by + rw [List.isChain_reverse] + simpa only [ne_comm] using List.isChain_destutter (· ≠ ·) m.reverse + simpa using hc.length_le_length_destutter_ne + (by simpa using (List.destutter_sublist (· ≠ ·) m.reverse).reverse) + have heq (m : List SignType) : + (m.reverse.destutter (· ≠ ·)).length = (m.destutter (· ≠ ·)).length := + Nat.le_antisymm (h m) (by simpa using h m.reverse) + simp only [List.signVariations, List.map_reverse, List.filter_reverse, heq] + +/-- Sign variations of the ascending coefficient list equal those of the descending +`Polynomial.coeffList`. -/ theorem sturm_signVariations_range_eq (P : Polynomial ℝ) : - Sturm.signVariations ((List.range (P.natDegree + 1)).map P.coeff) + List.signVariations ((List.range (P.natDegree + 1)).map P.coeff) = Polynomial.signVariations P := by by_cases hP : P = 0 - · subst hP - simp [Sturm.signVariations] + · subst P + simp have hasc_rev : ((List.range (P.natDegree + 1)).map P.coeff).reverse = P.coeffList := by rw [Polynomial.coeffList, Polynomial.withBotSucc_degree_eq_natDegree_add_one hP, List.map_reverse] rw [← signVariations_reverse ((List.range (P.natDegree + 1)).map P.coeff), hasc_rev] - -- Now: Sturm.signVariations (coeffList P) = Polynomial.signVariations P. - have hp : ((fun s : SignType => decide (s ≠ 0)) ∘ SignType.sign) - = (fun v : ℝ => decide (v ≠ 0)) := by - funext v - by_cases h : v = 0 <;> simp [Function.comp_apply, h, sign_eq_zero_iff] - have hfilters : (P.coeffList.filter (fun v : ℝ => decide (v ≠ 0))).map SignType.sign - = (P.coeffList.map SignType.sign).filter (fun s : SignType => decide (s ≠ 0)) := by - rw [List.filter_map, hp] - simp only [Sturm.signVariations, Polynomial.signVariations] - rw [countSignChanges_eq_destutter _ (fun x hx => by simpa using (List.mem_filter.mp hx).2), - hfilters] + rfl /-- Casting an integer's sign to `ℝ` preserves `SignType.sign`. -/ private theorem sign_intCast_sign' (n : Int) : SignType.sign ((n.sign : ℝ)) = SignType.sign ((n : ℝ)) := by - rcases lt_trichotomy n 0 with h | h | h - · rw [Int.sign_eq_neg_one_of_neg h] - have h2 : (n : ℝ) < 0 := by exact_mod_cast h - rw [show ((-1 : Int) : ℝ) = -1 by norm_num, sign_neg (by norm_num), sign_neg h2] - · subst h; simp - · rw [Int.sign_eq_one_of_pos h] - have h2 : (0 : ℝ) < (n : ℝ) := by exact_mod_cast h - rw [show ((1 : Int) : ℝ) = 1 by norm_num, sign_pos (by norm_num), sign_pos h2] + simp only [sign_intCast] + rw [Int.sign_eq_sign] + cases SignType.sign n <;> decide /-- The stored coefficient list is the range map of the coefficient function. -/ private theorem toArray_toList_eq_range_map (q : Hex.ZPoly) : @@ -690,7 +611,7 @@ private theorem toArray_toList_eq_range_map (q : Hex.ZPoly) : /-- **Descartes variation bridge.** The executable `Hex.descartesVar q` equals Mathlib's `Polynomial.signVariations (toPolyℝ q)`. The executable count is on the ascending sign list; the abstract count on the descending `coeffList`; the two -agree by reversal invariance and the `destutter` identity above. -/ +agree by reversal invariance. -/ theorem descartesVar_eq_signVariations (q : Hex.ZPoly) : Hex.descartesVar q = Polynomial.signVariations (toPolyℝ q) := by by_cases hq : q = 0 @@ -714,14 +635,13 @@ theorem descartesVar_eq_signVariations (q : Hex.ZPoly) : simp show Hex.signVar (q.toArray.toList.map Int.sign) = _ rw [signVar_eq, - show Sturm.signVariations ((q.toArray.toList.map Int.sign).map (Int.cast : ℤ → ℝ)) - = Sturm.signVariations (q.toArray.toList.map (Int.cast : ℤ → ℝ)) from ?_, + show List.signVariations ((q.toArray.toList.map Int.sign).map (Int.cast : ℤ → ℝ)) + = List.signVariations (q.toArray.toList.map (Int.cast : ℤ → ℝ)) from ?_, hlist] · exact sturm_signVariations_range_eq (toPolyℝ q) - · apply Sturm.signVariations_congr - rw [List.map_map, List.forall₂_map_left_iff, List.forall₂_map_right_iff, - List.forall₂_same] - intro x _ + · apply List.signVariations_congr + simp only [List.map_map] + refine List.map_congr_left fun x _ => ?_ exact sign_intCast_sign' x /-! # The executable bridge: `Hex.mobiusTransform` is `mobiusPoly` up to `2^{s·n}` diff --git a/HexRealRootsMathlib/README.md b/HexRealRootsMathlib/README.md index 25bef8e2cf..00ac9dc277 100644 --- a/HexRealRootsMathlib/README.md +++ b/HexRealRootsMathlib/README.md @@ -55,7 +55,9 @@ of the chain certifies separability as well as the root count. The general Sturm theorems use only Mathlib types. `Sturm.IsSturmChain.sturm_Ioc` counts roots on `(a, b]`, including equal endpoints, and `Sturm.IsSturmChain.sturm` counts roots on the real line. Their hypothesis is that the multiset of real -roots has no duplicates. +roots has no duplicates. The variation counts use Mathlib’s `List.signVariations`; +`HexRealRootsMathlib.signVar_eq_list` identifies the Mathlib-free executable counter +with this API. The corresponding Mathlib sources can be checked with `python3 scripts/check_sturm_sync.py /path/to/mathlib` from `hex-dev`. diff --git a/HexRealRootsMathlib/RealRootCount.lean b/HexRealRootsMathlib/RealRootCount.lean index 83b3aa96a9..45304a0108 100644 --- a/HexRealRootsMathlib/RealRootCount.lean +++ b/HexRealRootsMathlib/RealRootCount.lean @@ -11,6 +11,7 @@ public import Mathlib.Tactic.ComputeDegree public import Mathlib.Tactic.NormNum public import HexPolyZMathlib.PolyParse public meta import HexPolyZMathlib.PolyParse +public meta import Mathlib.Data.List.SignVariations public meta import HexRealRoots.Chain public meta import HexPoly.Euclid.DivGcd @@ -65,15 +66,6 @@ private def remainderIdentity (p q r : Array Int) : RemainderIdentity := Id.run return ⟨left, quotient.coeffs.map (fun c => (c * (left : Rat)).num), (right * (left : Rat)).num⟩ -private def variations (xs : Array Int) : Nat := Id.run do - let mut last := 0 - let mut n := 0 - for x in xs do - if x != 0 then - if last * x < 0 then n := n + 1 - last := x - return n - private def emit (pStx : TSyntax `term) (p : Hex.ZPoly) (unfolds : Array (TSyntax ``Parser.Tactic.simpLemma)) : TermElabM (TSyntax `term) := do let _ : Inhabited Hex.ZPoly := ⟨Hex.DensePoly.C 0⟩ @@ -123,8 +115,8 @@ private def emit (pStx : TSyntax `term) (p : Hex.ZPoly) (show (0 : ℝ) < $a by norm_num) (show (0 : ℝ) < $b by norm_num) (by norm_num [map_ofNat] <;> ring)) let a ← intTerm ((p.coeff (p.size - 1) * (p.size - 1 : Nat)) / cs[1]!.back!) - let pos := variations (cs.map Array.back!) - let neg := variations (cs.map fun c => c.back! * (-1) ^ (c.size - 1)) + let pos := (cs.map Array.back!).toList.signVariations + let neg := (cs.map fun c => c.back! * (-1) ^ (c.size - 1)).toList.signVariations let n := Syntax.mkNumLit (toString (neg - pos)) `(by $facts:tactic* @@ -135,7 +127,7 @@ private def emit (pStx : TSyntax `term) (p : Hex.ZPoly) (by norm_num [map_ofNat, $unfolds,*] <;> ring) (by simp only [Sturm.sturmVarNegInf, Sturm.sturmVarPosInf, List.map_cons, List.map_nil, *] - norm_num [Sturm.signVariations, Sturm.countSignChanges])) + norm_num [List.signVariations_cons_cons_of_ne_zero, sign_apply])) /-- Compute and certify the number of distinct real roots of a closed squarefree integer-coefficient polynomial over `ℚ` of positive degree. -/ diff --git a/HexRealRootsMathlib/SPEC/hex-real-roots-mathlib.md b/HexRealRootsMathlib/SPEC/hex-real-roots-mathlib.md index 7c2dcfbb56..04cd2d26cc 100644 --- a/HexRealRootsMathlib/SPEC/hex-real-roots-mathlib.md +++ b/HexRealRootsMathlib/SPEC/hex-real-roots-mathlib.md @@ -50,7 +50,9 @@ All names checked against the current Mathlib revision: ## Sturm development (self-contained, upstreamable) -Stated for `Polynomial ℝ`, with no reference to Hex types. +Stated for `Polynomial ℝ`, with no reference to Hex types. The pointwise and infinity +counts use Mathlib’s `List.signVariations`, including its zero-skipping and sign-congruence +API. The bridge proves that the Mathlib-free `Hex.signVar` agrees with this count. ```lean /-- A generalised Sturm chain for `p`: the sign axioms that the diff --git a/HexRealRootsMathlib/Separation.lean b/HexRealRootsMathlib/Separation.lean index 5e22c8c7a1..2657789cdf 100644 --- a/HexRealRootsMathlib/Separation.lean +++ b/HexRealRootsMathlib/Separation.lean @@ -45,9 +45,7 @@ noncomputable section /-- Real value of a dyadic number, through `Dyadic.toRat`. -/ def Dyadic.toReal (x : Dyadic) : ℝ := (x.toRat : ℝ) -/-- `Dyadic.toReal` is the rational cast of `toRat`. A plain-import restatement -of the definition, so downstream modules that do not `import all` this file can -still bridge `Dyadic.toReal` to the `ℚ`-valued endpoints of an isolation. -/ +/-- The real value of a dyadic is the cast of its rational value. -/ @[simp] theorem toReal_eq_cast_toRat (x : Dyadic) : Dyadic.toReal x = (x.toRat : ℝ) := by unfold Dyadic.toReal rfl diff --git a/HexRealRootsMathlib/SturmChainDefs.lean b/HexRealRootsMathlib/SturmChainDefs.lean index 487c8a69db..b662d05c48 100644 --- a/HexRealRootsMathlib/SturmChainDefs.lean +++ b/HexRealRootsMathlib/SturmChainDefs.lean @@ -6,7 +6,7 @@ Authors: Kim Morrison module -public import Mathlib.Data.Sign.Basic +public import Mathlib.Data.List.SignVariations public import Mathlib.Algebra.Polynomial.Eval.Defs public import Mathlib.Algebra.Polynomial.Degree.Defs public import Mathlib.Topology.Instances.Real.Lemmas @@ -24,7 +24,7 @@ Sturm's theorem. The chain need not be produced by Euclidean division. ## Main definitions -* `Sturm.signVariations`: sign variations with zero entries removed. +* `List.signVariations`: sign variations with zero entries removed. * `Sturm.sturmVar`: sign variations of polynomial evaluations at a real point. * `Sturm.sturmVarPosInf` and `Sturm.sturmVarNegInf`: sign variations at infinity. * `Sturm.IsSturmChain`: the local sign conditions for a generalized Sturm chain. @@ -36,52 +36,11 @@ open Filter Topology namespace Sturm -/-- Count the sign changes of a real list: the number of adjacent pairs -whose product is negative. Callers first drop the zero entries (see -`Sturm.signVariations`), so on a zero-free list this is exactly the number -of adjacent opposite-sign pairs. -/ -@[expose] -noncomputable def countSignChanges : List ℝ → ℕ - | a :: b :: rest => (if a * b < 0 then 1 else 0) + countSignChanges (b :: rest) - | _ => 0 - -@[simp] theorem countSignChanges_nil : countSignChanges [] = 0 := rfl - -@[simp] theorem countSignChanges_singleton (a : ℝ) : countSignChanges [a] = 0 := rfl - -theorem countSignChanges_cons_cons (a b : ℝ) (rest : List ℝ) : - countSignChanges (a :: b :: rest) = - (if a * b < 0 then 1 else 0) + countSignChanges (b :: rest) := rfl - -/-- Zero-skipping sign variations of a real list: drop the zeros, then count -the adjacent opposite-sign pairs. This is the variation count that both the -pointwise chain evaluations and the leading-coefficient signs at `±∞` feed -into. -/ -@[expose] -noncomputable def signVariations (l : List ℝ) : ℕ := - countSignChanges (l.filter (fun v => decide (v ≠ 0))) - -@[simp] theorem signVariations_nil : signVariations [] = 0 := rfl - -@[simp] theorem signVariations_singleton (a : ℝ) : signVariations [a] = 0 := by - by_cases ha : a = 0 <;> simp [signVariations, ha] - -/-- Prepending a zero entry does not change the sign variations. -/ -@[simp] theorem signVariations_cons_zero (l : List ℝ) : - signVariations (0 :: l) = signVariations l := by - simp [signVariations] - -/-- A nonzero first entry survives removal of zero entries. -/ -theorem signVariations_cons_ne (a : ℝ) (l : List ℝ) (ha : a ≠ 0) : - signVariations (a :: l) = - countSignChanges (a :: l.filter (fun v => decide (v ≠ 0))) := by - simp [signVariations, ha] - /-- Zero-skipping sign variations of the chain `chain` evaluated at `x`: the sign variations of the list of evaluations `chain.map (·.eval x)`. -/ @[expose] noncomputable def sturmVar (chain : List (Polynomial ℝ)) (x : ℝ) : ℕ := - signVariations (chain.map (Polynomial.eval x)) + List.signVariations (chain.map (Polynomial.eval x)) @[simp] theorem sturmVar_nil (x : ℝ) : sturmVar [] x = 0 := rfl @@ -90,46 +49,7 @@ noncomputable def sturmVar (chain : List (Polynomial ℝ)) (x : ℝ) : ℕ := theorem sturmVar_cons_zero {q : Polynomial ℝ} {x : ℝ} (h : q.eval x = 0) (chain : List (Polynomial ℝ)) : sturmVar (q :: chain) x = sturmVar chain x := by - simp [sturmVar, List.map_cons, signVariations, h] - -/-- Two real lists whose entries have pointwise equal signs have equal -`countSignChanges`: the sign-change count reads only the signs of the entries. -/ -theorem countSignChanges_congr {l₁ l₂ : List ℝ} - (h : List.Forall₂ (fun u v => SignType.sign u = SignType.sign v) l₁ l₂) : - countSignChanges l₁ = countSignChanges l₂ := by - induction h with - | nil => rfl - | @cons a b l₁' l₂' hab htail ih => - cases htail with - | nil => rfl - | @cons c d l₁'' l₂'' hcd _ => - rw [countSignChanges_cons_cons, countSignChanges_cons_cons] - have hiff : (a * c < 0) ↔ (b * d < 0) := by - rw [← sign_eq_neg_one_iff, ← sign_eq_neg_one_iff, sign_mul, sign_mul, hab, hcd] - simp only [hiff, ih] - -/-- Dropping the zero entries commutes with a pointwise sign-equal -correspondence: the filtered lists remain pointwise sign-equal. -/ -private theorem filter_ne_zero_congr {l₁ l₂ : List ℝ} - (h : List.Forall₂ (fun u v => SignType.sign u = SignType.sign v) l₁ l₂) : - List.Forall₂ (fun u v => SignType.sign u = SignType.sign v) - (l₁.filter (fun v => decide (v ≠ 0))) (l₂.filter (fun v => decide (v ≠ 0))) := by - induction h with - | nil => exact List.Forall₂.nil - | @cons a b l₁' l₂' hab htail ih => - have hzero : (a = 0) ↔ (b = 0) := by - rw [← sign_eq_zero_iff (a := a), ← sign_eq_zero_iff (a := b), hab] - by_cases ha : a = 0 - · simpa [ha, hzero.mp ha] using ih - · simpa [ha, mt hzero.mpr ha] using - List.Forall₂.cons (R := fun u v : ℝ => SignType.sign u = SignType.sign v) hab ih - -/-- `signVariations` reads only the signs of the entries: two real lists whose -entries are pointwise sign-equal have equal sign variations. -/ -theorem signVariations_congr {l₁ l₂ : List ℝ} - (h : List.Forall₂ (fun u v => SignType.sign u = SignType.sign v) l₁ l₂) : - signVariations l₁ = signVariations l₂ := - countSignChanges_congr (filter_ne_zero_congr h) + simp [sturmVar, h] /-- The sign of the first nonzero entry of a real list, or `0` if every entry is zero. -/ @[expose] @@ -145,29 +65,26 @@ noncomputable def firstSign (l : List ℝ) : SignType := firstSign (a :: l) = SignType.sign a := by simp [firstSign, ha] -private theorem sign_mul_eq_neg_one {a b : ℝ} : - (SignType.sign a * SignType.sign b = -1) ↔ a * b < 0 := by - rw [← sign_mul, sign_eq_neg_one_iff] - /-- Prepending a nonzero entry `a` adds one variation exactly when its sign is opposite the sign of the next surviving entry. -/ theorem signVariations_cons {a : ℝ} (l : List ℝ) (ha : a ≠ 0) : - signVariations (a :: l) = - (if SignType.sign a * firstSign l = -1 then 1 else 0) + signVariations l := by + List.signVariations (a :: l) = + (if SignType.sign a * firstSign l = -1 then 1 else 0) + List.signVariations l := by induction l with - | nil => rw [signVariations_cons_ne a [] ha]; simp [firstSign] - | cons b l' ih => + | nil => simp [firstSign] + | cons b l ih => by_cases hb : b = 0 - · subst hb - rw [firstSign_cons_zero l', signVariations_cons_zero l', - signVariations_cons_ne a (0 :: l') ha, List.filter_cons_of_neg (by simp), - ← signVariations_cons_ne a l' ha] - exact ih - · rw [firstSign_cons_ne l' hb, signVariations_cons_ne a (b :: l') ha, - List.filter_cons_of_pos (by simp [hb]), countSignChanges_cons_cons, - ← signVariations_cons_ne b l' hb] - congr 1 - simp only [sign_mul_eq_neg_one] + · subst b + simpa only [List.signVariations_cons_zero_cons, List.signVariations_zero_cons, + firstSign_cons_zero] using ih + · rw [firstSign_cons_ne l hb, List.signVariations_cons_cons_of_ne_zero l ha hb] + have ha' : SignType.sign a ≠ 0 := by simpa using ha + have hb' : SignType.sign b ≠ 0 := by simpa using hb + have h : (if SignType.sign a = SignType.sign b then (0 : ℕ) else 1) = + (if SignType.sign a * SignType.sign b = -1 then 1 else 0) := by + revert ha' hb' + cases SignType.sign a <;> cases SignType.sign b <;> decide + rw [h, Nat.add_comm] /-- Sign variations of the chain at `+∞`: the sign of each element there is the sign of its leading coefficient, so this is the zero-skipping variation count @@ -175,14 +92,14 @@ of the leading coefficients. The zero polynomial contributes leading coefficient `0`, which the zero-skipping convention drops. -/ @[expose] noncomputable def sturmVarPosInf (chain : List (Polynomial ℝ)) : ℕ := - signVariations (chain.map Polynomial.leadingCoeff) + List.signVariations (chain.map Polynomial.leadingCoeff) /-- Sign variations of the chain at `−∞`: the sign of an element there is the sign of its leading coefficient times `(-1) ^ degree`, so this is the zero-skipping variation count of `leadingCoeff · (-1) ^ natDegree`. -/ @[expose] noncomputable def sturmVarNegInf (chain : List (Polynomial ℝ)) : ℕ := - signVariations (chain.map (fun q => q.leadingCoeff * (-1) ^ q.natDegree)) + List.signVariations (chain.map (fun q => q.leadingCoeff * (-1) ^ q.natDegree)) /-- A generalized Sturm chain for a real polynomial. diff --git a/HexRealRootsMathlib/SturmTests.lean b/HexRealRootsMathlib/SturmTests.lean index 7e597a3fad..c3dee4678f 100644 --- a/HexRealRootsMathlib/SturmTests.lean +++ b/HexRealRootsMathlib/SturmTests.lean @@ -16,18 +16,18 @@ private theorem linearChain : IsSturmChain (X : ℝ[X]) [X, 1] := by -- A root at the right endpoint is counted. example : ((X : ℝ[X]).roots.filter (fun r => r ∈ Set.Ioc (-1) 0)).card = 1 := by - simpa [sturmVar, signVariations, countSignChanges] using + simpa [sturmVar, List.signVariations_cons_cons_of_ne_zero, sign_apply] using linearChain.sturm_Ioc (by simp) (show (-1 : ℝ) ≤ 0 by norm_num) -- A root at the left endpoint is excluded. example : ((X : ℝ[X]).roots.filter (fun r => r ∈ Set.Ioc 0 1)).card = 0 := by convert linearChain.sturm_Ioc (by simp) (show (0 : ℝ) ≤ 1 by norm_num) using 1 <;> - norm_num [sturmVar, signVariations, countSignChanges] + norm_num [sturmVar, List.signVariations_cons_cons_of_ne_zero, sign_apply] -- Equal endpoints are permitted, including when that endpoint is a root. example : ((X : ℝ[X]).roots.filter (fun r => r ∈ Set.Ioc 0 0)).card = 0 := by convert linearChain.sturm_Ioc (by simp) (le_refl (0 : ℝ)) using 1 <;> - norm_num [sturmVar, signVariations, countSignChanges] + norm_num [sturmVar, List.signVariations_cons_cons_of_ne_zero, sign_apply] -- The single-entry chain of a nonzero constant is a valid Sturm chain. private theorem constantChain : IsSturmChain (1 : ℝ[X]) [1] where @@ -41,4 +41,4 @@ private theorem constantChain : IsSturmChain (1 : ℝ[X]) [1] where example : (1 : ℝ[X]).roots.card = 0 := by convert constantChain.sturm (by simp) using 1 <;> - norm_num [sturmVarNegInf, sturmVarPosInf, signVariations, countSignChanges] + norm_num [sturmVarNegInf, sturmVarPosInf, List.signVariations_cons_cons_of_ne_zero, sign_apply] diff --git a/HexRealRootsMathlib/SturmTheorem.lean b/HexRealRootsMathlib/SturmTheorem.lean index 509ec50fa7..51a0c78b98 100644 --- a/HexRealRootsMathlib/SturmTheorem.lean +++ b/HexRealRootsMathlib/SturmTheorem.lean @@ -42,7 +42,7 @@ namespace Sturm /-- A local sign-pattern relation between two real lists: they agree entry by entry except that a nonzero entry flanked by two opposite-sign neighbours may -collapse to `0`. Such a collapse is variation-neutral, so `signVariations` and +collapse to `0`. Such a collapse is variation-neutral, so `List.signVariations` and the leading sign are preserved (`SignRelation.signVariations_eq`). -/ private inductive SignRelation : List ℝ → List ℝ → Prop | nil : SignRelation [] [] @@ -63,7 +63,7 @@ private theorem sign_changes_of_opposite (u v w : SignType) (huw : u * w = -1) ( /-- Lists related by `SignRelation` have equal sign variations and equal leading signs. -/ private theorem SignRelation.signVariations_eq {L M : List ℝ} (h : SignRelation L M) : - signVariations L = signVariations M ∧ firstSign L = firstSign M := by + List.signVariations L = List.signVariations M ∧ firstSign L = firstSign M := by induction h with | nil => exact ⟨rfl, rfl⟩ | @same x y l m hx hy hs h ih => @@ -76,13 +76,12 @@ private theorem SignRelation.signVariations_eq {L M : List ℝ} (h : SignRelatio have hx' : x' ≠ 0 := by intro hx0; rw [hx0, sign_zero] at hsx; exact hx (sign_eq_zero_iff.mp hsx) refine ⟨?_, ?_⟩ - · -- signVariations L - rw [signVariations_cons (X :: y :: l) hx, + · rw [signVariations_cons (X :: y :: l) hx, firstSign_cons_ne (y :: l) hX, signVariations_cons (y :: l) hX, firstSign_cons_ne l hy] rw [signVariations_cons (0 :: y' :: m) hx', firstSign_cons_zero (y' :: m), firstSign_cons_ne m hy', - signVariations_cons_zero] + List.signVariations_zero_cons] rw [← add_assoc, ih.1] congr 1 rw [← hsx, ← hsy, ite_eq_left hopp] @@ -184,11 +183,11 @@ theorem sturmVar_const_of_no_zero (a b : ℝ) (hab : a ≤ b) (hz : ∀ q ∈ chain, ∀ x ∈ Set.Icc a b, q.eval x ≠ 0) : sturmVar chain a = sturmVar chain b := by - change signVariations (chain.map (Polynomial.eval a)) - = signVariations (chain.map (Polynomial.eval b)) - apply signVariations_congr - rw [List.forall₂_map_left_iff, List.forall₂_map_right_iff, List.forall₂_same] - intro q hq + change List.signVariations (chain.map (Polynomial.eval a)) + = List.signVariations (chain.map (Polynomial.eval b)) + apply List.signVariations_congr + simp only [List.map_map] + refine List.map_congr_left fun q hq => ?_ exact eval_sign_eq_of_no_zero hab (fun x hx => hz q hq x hx) /-- Crossing a zero of an interior entry preserves the variation count. -/ @@ -208,16 +207,16 @@ theorem sturmVar_interior_cross (hchain : IsSturmChain p chain) (r : ℝ) q0.eval r ≠ 0 ∧ q2.eval r ≠ 0 ∧ q0.eval r * q2.eval r < 0 := fun i q0 q1 q2 h0 h1 h2 hz => hchain.interior_alternates i r q0 q1 q2 h0 h1 h2 hz constructor - · change signVariations (chain.map (Polynomial.eval a)) - = signVariations (chain.map (Polynomial.eval r)) + · change List.signVariations (chain.map (Polynomial.eval a)) + = List.signVariations (chain.map (Polynomial.eval r)) refine (signRelation_eval a r chain (fun q hq => hz q hq a ⟨le_refl a, hab⟩ (ne_of_lt har)) hfront hlast halt (fun q hq hqr => ?_)).signVariations_eq.1 exact eval_sign_eq_of_no_zero har.le (fun x hx => by by_cases hxr : x = r · rw [hxr]; exact hqr · exact hz q hq x ⟨hx.1, hx.2.trans hrb.le⟩ hxr) - · change signVariations (chain.map (Polynomial.eval r)) - = signVariations (chain.map (Polynomial.eval b)) + · change List.signVariations (chain.map (Polynomial.eval r)) + = List.signVariations (chain.map (Polynomial.eval b)) refine ((signRelation_eval b r chain (fun q hq => hz q hq b ⟨hab, le_refl b⟩ (ne_of_lt hrb).symm) hfront hlast halt (fun q hq hqr => ?_)).signVariations_eq.1).symm @@ -316,21 +315,21 @@ theorem sturmVar_root_cross (hchain : IsSturmChain p chain) (r : ℝ) (hr : p.Is hfront_rest hlast_rest halt_rest hsame_b).signVariations_eq.1 -- Head-pair bookkeeping at each point. have hSVa : sturmVar (p :: q :: tail) a = 1 + sturmVar (q :: tail) a := by - change signVariations (p.eval a :: (q :: tail).map (Polynomial.eval a)) - = 1 + signVariations ((q :: tail).map (Polynomial.eval a)) + change List.signVariations (p.eval a :: (q :: tail).map (Polynomial.eval a)) + = 1 + List.signVariations ((q :: tail).map (Polynomial.eval a)) rw [signVariations_cons _ hpa] simp only [List.map_cons] rw [firstSign_cons_ne _ hqa, ite_eq_left hsignA] have hSVb : sturmVar (p :: q :: tail) b = sturmVar (q :: tail) b := by - change signVariations (p.eval b :: (q :: tail).map (Polynomial.eval b)) - = signVariations ((q :: tail).map (Polynomial.eval b)) + change List.signVariations (p.eval b :: (q :: tail).map (Polynomial.eval b)) + = List.signVariations ((q :: tail).map (Polynomial.eval b)) rw [signVariations_cons _ hpb] simp only [List.map_cons] rw [firstSign_cons_ne _ hqb, ite_eq_right hsignB, zero_add] have hSVr : sturmVar (p :: q :: tail) r = sturmVar (q :: tail) r := by - change signVariations (p.eval r :: (q :: tail).map (Polynomial.eval r)) - = signVariations ((q :: tail).map (Polynomial.eval r)) - rw [hpr0]; exact signVariations_cons_zero _ + change List.signVariations (p.eval r :: (q :: tail).map (Polynomial.eval r)) + = List.signVariations ((q :: tail).map (Polynomial.eval r)) + rw [hpr0]; exact List.signVariations_zero_cons _ refine ⟨?_, ?_⟩ · rw [hSVa, hSVb, hEqA, hEqB]; omega · rw [hSVr, hSVb]; exact hEqB.symm @@ -593,17 +592,17 @@ theorem IsSturmChain.sturm (hchain : IsSturmChain p chain) (hnod : p.roots.Nodup have hya := hM y hyz; rw [abs_lt] at hya; exact hya.1 -- Hence `sturmVar` at `±M` equals the `±∞` counts. have hMposEq : sturmVar chain M = sturmVarPosInf chain := by - change signVariations (chain.map (Polynomial.eval M)) - = signVariations (chain.map Polynomial.leadingCoeff) - apply signVariations_congr - rw [List.forall₂_map_left_iff, List.forall₂_map_right_iff, List.forall₂_same] - exact hpos + change List.signVariations (chain.map (Polynomial.eval M)) + = List.signVariations (chain.map Polynomial.leadingCoeff) + apply List.signVariations_congr + simp only [List.map_map] + exact List.map_congr_left hpos have hMnegEq : sturmVar chain (-M) = sturmVarNegInf chain := by - change signVariations (chain.map (Polynomial.eval (-M))) - = signVariations (chain.map (fun q => q.leadingCoeff * (-1) ^ q.natDegree)) - apply signVariations_congr - rw [List.forall₂_map_left_iff, List.forall₂_map_right_iff, List.forall₂_same] - exact hneg + change List.signVariations (chain.map (Polynomial.eval (-M))) + = List.signVariations (chain.map (fun q => q.leadingCoeff * (-1) ^ q.natDegree)) + apply List.signVariations_congr + simp only [List.map_map] + exact List.map_congr_left hneg -- Apply the half-open form on `(-M, M]`, which catches every root. have hkey := hchain.sturm_Ioc hnod (a := -M) (b := M) (by linarith) have hfilter : p.roots.filter (fun r => r ∈ Set.Ioc (-M) M) = p.roots := by diff --git a/HexTruncatedSeriesMathlib/Newton.lean b/HexTruncatedSeriesMathlib/Newton.lean index ea401ea089..a2488ce4cb 100644 --- a/HexTruncatedSeriesMathlib/Newton.lean +++ b/HexTruncatedSeriesMathlib/Newton.lean @@ -244,15 +244,15 @@ theorem ofPowerSeries_exp [CommRing R] [Algebra ℚ R] rw [coeff_ofPowerSeries _ 0 hnpos, PowerSeries.coeff_zero_eq_constantCoeff_apply, PowerSeries.constantCoeff_exp] - have hchain : PowerSeries.derivative R ((PowerSeries.exp R).subst f) = - (PowerSeries.exp R).subst f * PowerSeries.derivative R f := by + have hchain : PowerSeries.derivative ((PowerSeries.exp R).subst f) = + (PowerSeries.exp R).subst f * PowerSeries.derivative f := by calc - PowerSeries.derivative R ((PowerSeries.exp R).subst f) = - (PowerSeries.derivative R (PowerSeries.exp R)).subst f * - PowerSeries.derivative R f := + PowerSeries.derivative ((PowerSeries.exp R).subst f) = + (PowerSeries.derivative (PowerSeries.exp R)).subst f * + PowerSeries.derivative f := PowerSeries.derivative_subst (PowerSeries.HasSubst.of_constantCoeff_zero' h) - _ = (PowerSeries.exp R).subst f * PowerSeries.derivative R f := by + _ = (PowerSeries.exp R).subst f * PowerSeries.derivative f := by rw [PowerSeries.derivative_exp] have ht := congrArg (ofPowerSeriesHom (R := R) (n := n - 1)) hchain simp only [RingHom.map_mul, ofPowerSeriesHom_apply] at ht @@ -352,17 +352,17 @@ theorem ofPowerSeries_logOf [CommRing R] [Algebra ℚ R] _ = 1 := by simpa only [PowerSeries.coe_substAlgHom] using (map_one (PowerSeries.substAlgHom hqSub)) - have hchain : PowerSeries.derivative R (PowerSeries.logOf f) = - g * PowerSeries.derivative R f := by + have hchain : PowerSeries.derivative (PowerSeries.logOf f) = + g * PowerSeries.derivative f := by rw [PowerSeries.logOf_eq] calc - PowerSeries.derivative R ((PowerSeries.log R).subst q) = - (PowerSeries.derivative R (PowerSeries.log R)).subst q * - PowerSeries.derivative R q := + PowerSeries.derivative ((PowerSeries.log R).subst q) = + (PowerSeries.derivative (PowerSeries.log R)).subst q * + PowerSeries.derivative q := PowerSeries.derivative_subst hqSub - _ = g * PowerSeries.derivative R q := by - rw [PowerSeries.deriv_log] - _ = g * PowerSeries.derivative R f := by + _ = g * PowerSeries.derivative q := by + simp [PowerSeries.derivative_log, g, geom] + _ = g * PowerSeries.derivative f := by dsimp only [q] simp have ha0 : a.coeff 0 = 1 := by diff --git a/HexTruncatedSeriesMathlib/Ops.lean b/HexTruncatedSeriesMathlib/Ops.lean index 98dd0b8572..561bcdcd8e 100644 --- a/HexTruncatedSeriesMathlib/Ops.lean +++ b/HexTruncatedSeriesMathlib/Ops.lean @@ -115,7 +115,7 @@ derivative wherever both are represented. -/ theorem coeff_deriv_ofPowerSeries [CommRing R] (f : PowerSeries R) (i : Nat) (hi : i < n - 1) : (deriv (ofPowerSeries (n := n) f)).coeff i = - PowerSeries.coeff i (PowerSeries.derivative R f) := by + PowerSeries.coeff i (PowerSeries.derivative f) := by rw [Hex.TSeries.coeff_deriv _ i hi, coeff_ofPowerSeries f (i + 1) (by omega), PowerSeries.coeff_derivative] simp only [Nat.cast_add, Nat.cast_one] @@ -126,7 +126,7 @@ lost by differentiation. -/ @[simp] theorem deriv_ofPowerSeries [CommRing R] (f : PowerSeries R) : (ofPowerSeries (n := n) f).deriv = - ofPowerSeries (n := n - 1) (PowerSeries.derivative R f) := by + ofPowerSeries (n := n - 1) (PowerSeries.derivative f) := by apply Hex.TSeries.ext intro i hi rw [coeff_ofPowerSeries _ i hi] diff --git a/conformance/HexRealRootsMathlib/Conformance.lean b/conformance/HexRealRootsMathlib/Conformance.lean index c83fa13c39..4ee03891ab 100644 --- a/conformance/HexRealRootsMathlib/Conformance.lean +++ b/conformance/HexRealRootsMathlib/Conformance.lean @@ -91,7 +91,7 @@ private theorem toPolyℝ_linear : toPolyℝ linear = X - C 5 := by match n with | 0 => norm_num [Array.getD] | 1 => norm_num [Array.getD] - | (k + 2) => norm_num [Array.getD]; omega + | (k + 2) => norm_num [Array.getD] private theorem toPolyℝ_quadPair : toPolyℝ quadPair = X ^ 2 - C 1 := by apply Polynomial.ext; intro n @@ -101,7 +101,7 @@ private theorem toPolyℝ_quadPair : toPolyℝ quadPair = X ^ 2 - C 1 := by | 0 => norm_num [Array.getD] | 1 => norm_num [Array.getD] | 2 => norm_num [Array.getD] - | (k + 3) => norm_num [Array.getD]; omega + | (k + 3) => norm_num [Array.getD] private theorem toPolyℝ_quadNone : toPolyℝ quadNone = X ^ 2 + C 1 := by apply Polynomial.ext; intro n @@ -111,7 +111,7 @@ private theorem toPolyℝ_quadNone : toPolyℝ quadNone = X ^ 2 + C 1 := by | 0 => norm_num [Array.getD] | 1 => norm_num [Array.getD] | 2 => norm_num [Array.getD] - | (k + 3) => norm_num [Array.getD]; omega + | (k + 3) => norm_num [Array.getD] private theorem toPolyℝ_cubicTriple : toPolyℝ cubicTriple = X ^ 3 - X := by apply Polynomial.ext; intro n @@ -122,7 +122,7 @@ private theorem toPolyℝ_cubicTriple : toPolyℝ cubicTriple = X ^ 3 - X := by | 1 => norm_num [Array.getD] | 2 => norm_num [Array.getD] | 3 => norm_num [Array.getD] - | (k + 4) => norm_num [Array.getD]; omega + | (k + 4) => norm_num [Array.getD] private theorem toPolyℝ_const7 : toPolyℝ const7 = C 7 := by apply Polynomial.ext; intro n @@ -202,7 +202,7 @@ private theorem toPolyℚ_linear : toPolyℚ linear = X - C 5 := by match n with | 0 => norm_num [Array.getD] | 1 => norm_num [Array.getD] - | (k + 2) => norm_num [Array.getD]; omega + | (k + 2) => norm_num [Array.getD] private theorem squareFreeRat_linear : Hex.ZPoly.SquareFreeRat linear := by rw [squareFreeRat_iff linear (by decide)] diff --git a/lake-manifest.json b/lake-manifest.json index d153f06e7a..d67d814e95 100644 --- a/lake-manifest.json +++ b/lake-manifest.json @@ -5,10 +5,10 @@ "type": "git", "subDir": null, "scope": "", - "rev": "85e3a25e006c35636f0e53b0e9296caca2685bc0", + "rev": "1cf325a0cf67aca2b04d76b5380ff6a9e410aefa", "name": "mathlib", "manifestFile": "lake-manifest.json", - "inputRev": "v4.34.0-rc2", + "inputRev": "1cf325a0cf67aca2b04d76b5380ff6a9e410aefa", "inherited": false, "configFile": "lakefile.lean"}, {"url": "https://github.com/kim-em/lean-bench.git", @@ -35,17 +35,17 @@ "type": "git", "subDir": null, "scope": "", - "rev": "90c688db9db7280364c8bd7f8264c82a01582fd4", + "rev": "cad4b633e75ea769b851f12f9ca3b4f0dfcc625f", "name": "verso", "manifestFile": "lake-manifest.json", - "inputRev": "v4.34.0-rc2", + "inputRev": "v4.34.0", "inherited": false, "configFile": "lakefile.lean"}, {"url": "https://github.com/leanprover-community/plausible", "type": "git", "subDir": null, "scope": "leanprover-community", - "rev": "d9598f07b1bc701f1e3aae163d2681c1fd978793", + "rev": "118aa17ee84656b8bd727fef7c458ee8c833385c", "name": "plausible", "manifestFile": "lake-manifest.json", "inputRev": "main", @@ -55,7 +55,7 @@ "type": "git", "subDir": null, "scope": "leanprover-community", - "rev": "ba67e212be1197b84c1f1f6299488a10a3002713", + "rev": "ddf04cf3949fa556442341e87d47f9f6e6074707", "name": "LeanSearchClient", "manifestFile": "lake-manifest.json", "inputRev": "main", @@ -65,7 +65,7 @@ "type": "git", "subDir": null, "scope": "leanprover-community", - "rev": "d8823026ac7ef130c253089d95685f9877b95323", + "rev": "e928b72544873815af278d38681b31c0293588e3", "name": "importGraph", "manifestFile": "lake-manifest.json", "inputRev": "main", @@ -75,7 +75,7 @@ "type": "git", "subDir": null, "scope": "leanprover-community", - "rev": "a8acbfd87375ff4abe14ce09db5b7664d383bc7f", + "rev": "106ff4fafc74ef4ac99d81dbf3ab399118f497a5", "name": "proofwidgets", "manifestFile": "lake-manifest.json", "inputRev": "main", @@ -85,7 +85,7 @@ "type": "git", "subDir": null, "scope": "leanprover-community", - "rev": "18889deb9e83ea7420ef51c160d6f88552e744e3", + "rev": "355695d523e41d0554926416cba2a2b3544fbbc9", "name": "aesop", "manifestFile": "lake-manifest.json", "inputRev": "master", @@ -95,7 +95,7 @@ "type": "git", "subDir": null, "scope": "leanprover-community", - "rev": "507746ab8f4b643ccdacb2ec4cdb5853fa9f8ab3", + "rev": "6a489d9af5d0c47e5b259e2e8bcdfc1811b5a259", "name": "Qq", "manifestFile": "lake-manifest.json", "inputRev": "master", @@ -105,7 +105,7 @@ "type": "git", "subDir": null, "scope": "leanprover-community", - "rev": "d54dddc581e08be364c278052863524bff7a99a9", + "rev": "f2effa3d803fda822b1f97b806c47cf2adfbcbc2", "name": "batteries", "manifestFile": "lake-manifest.json", "inputRev": "main", @@ -115,17 +115,17 @@ "type": "git", "subDir": null, "scope": "leanprover", - "rev": "ab3a82db9fea14cf0fd7f5a2de650f4b534640af", + "rev": "e92c9f15fdfacc8536f31cfb3b7ad26c3c8cd204", "name": "Cli", "manifestFile": "lake-manifest.json", - "inputRev": "v4.34.0-rc2", + "inputRev": "v4.34.0", "inherited": true, "configFile": "lakefile.toml"}, {"url": "https://github.com/leanprover/illuminate", "type": "git", "subDir": null, "scope": "", - "rev": "6e558472c981dbee8cb9fcde92fa9593daf04228", + "rev": "a1a61c9678da010e958ed24cdfa6f635b85f172a", "name": "illuminate", "manifestFile": "lake-manifest.json", "inputRev": "main", @@ -145,7 +145,7 @@ "type": "git", "subDir": null, "scope": "", - "rev": "847084e80500726e4331dded5f17007ddaf89c31", + "rev": "9b90b7f938d6169246325df002351014f49945ef", "name": "subverso", "manifestFile": "lake-manifest.json", "inputRev": "main", diff --git a/lakefile.lean b/lakefile.lean index 2d076ae63d..327c99caca 100644 --- a/lakefile.lean +++ b/lakefile.lean @@ -12,7 +12,7 @@ package Hex where leanOptions := #[⟨`doc.verso, true⟩, ⟨`doc.verso.suggestions, false⟩] require verso from git - "https://github.com/leanprover/verso.git" @ "v4.34.0-rc2" + "https://github.com/leanprover/verso.git" @ "v4.34.0" -- Test-only native oracle. Released Hex libraries do not depend on it. require NautyFFI from git @@ -23,7 +23,8 @@ require «lean-bench» from git "https://github.com/kim-em/lean-bench.git" @ "master" require mathlib from git - "https://github.com/leanprover-community/mathlib4.git" @ "v4.34.0-rc2" + "https://github.com/leanprover-community/mathlib4.git" @ + "1cf325a0cf67aca2b04d76b5380ff6a9e410aefa" private def clmulOTarget (pkg : Package) : FetchM (Job FilePath) := do let oFile := pkg.dir / defaultBuildDir / "HexGF2" / "ffi" / "clmul.o" diff --git a/lean-toolchain b/lean-toolchain index b814d987e0..12359f928f 100644 --- a/lean-toolchain +++ b/lean-toolchain @@ -1 +1 @@ -leanprover/lean4:v4.34.0-rc2 +leanprover/lean4:v4.34.0 diff --git a/reports/bench-results/hexbz-factor-hex-factor-590a45eb7aeb.manifest b/reports/bench-results/hexbz-factor-hex-factor-590a45eb7aeb.manifest new file mode 100644 index 0000000000..4e463b1067 --- /dev/null +++ b/reports/bench-results/hexbz-factor-hex-factor-590a45eb7aeb.manifest @@ -0,0 +1,191 @@ +100644 21e0d7dfe2ef602d6c61b6c4e70c7d2233897efc 0 Hex/BenchOracle/Carriers.lean +100644 f86e97c524fad7fcdfd96c49491bb4b157ebe647 0 Hex/BenchOracle/Flint.lean +100644 b40ff92191f6d955b4a5fcde35cc1eb03ebc5b3c 0 Hex/BenchOracle/Modular.lean +100644 b3933da429eee62caf86122fa2b91646e3b65764 0 Hex/BenchOracle/Nauty.lean +100644 67864822cc40d953e1324bc2f4224ab6d6f24e89 0 Hex/BenchOracle/Pari.lean +100644 40e74af6db3c1bf7993ec50e6d91346076a2dbef 0 Hex/Conformance/Emit.lean +100644 37049f16fd4de8d71e4fea95acf0da85bdf420ce 0 HexArith/Barrett/Accumulator.lean +100644 9ce91028d8103d3f9a8d704365c4b8aa6028bc71 0 HexArith/Barrett/Context.lean +100644 5e8e8f82b207b40d514011c462a06b13b061e93c 0 HexArith/Barrett/Reduce.lean +100644 e7c27fd38459bb8cea2e7d7b38717ae70ed270de 0 HexArith/Barrett/ReduceNat.lean +100644 28f3b16ef5ab02837d08c48e921db253e3a8ccaf 0 HexArith/ExactDiv.lean +100644 7ac113b408c1c247b76434760fe4534befeda9ac 0 HexArith/ExtGcd.lean +100644 96432dfbfd48de30418e99c170115b5d57c21edc 0 HexArith/Montgomery/Context.lean +100644 8d9fbf0bf282af9fdc45c8bc64c8c5a32a66633d 0 HexArith/Montgomery/InvNat.lean +100644 3e51b8b921374e508004114e4d5839267603dc97 0 HexArith/Montgomery/Redc.lean +100644 f404c64465d1dc58bd343c1d13f9a17c5d5c65e4 0 HexArith/Montgomery/RedcNat.lean +100644 72bc18c4080ed5d7daf368ce41f67527be699b37 0 HexArith/Nat/ModArith.lean +100644 ad523f08c614335af242c32d0483518fb7be3626 0 HexArith/Nat/Pow.lean +100644 79835bd403b7f80148457fdaaa135ced6340ae5c 0 HexArith/Nat/Prime.lean +100644 d8e0eab8dd4f5868fb9bc81e2324f0edd111e120 0 HexArith/Nat/Sqrt.lean +100644 56a55c1fb12787775e4eb1dd35f1d5ced7f11d42 0 HexArith/UInt64/Wide.lean +100644 c230ced97dc4e6a54b6ba8fdbf929d68444903e3 0 HexBareiss/Bareiss.lean +100644 78f9ee652b72523cfd0d6eb9e8715e11581ce8d4 0 HexBareiss/BorderedMinor.lean +100644 0f54e50e7192f5005537fcab7e3d4ba2ba2045cb 0 HexBareiss/Kernel.lean +100644 73fed11de8bd8a43208cbd6836f087714d568eae 0 HexBareiss/Polynomial.lean +100644 25e2ef4207843776854211debddd6af069de698b 0 HexBasic/ArrayDecEq.lean +100644 d248144c8f256834a51e427a3f37df1efd56ae94 0 HexBasic/ExactDiv.lean +100644 11d2d37c19c04011947fa7dacf3fc04c8cd954a7 0 HexBasic/ExtTreeMap.lean +100644 103d2a8178f881c04590c6da5fe84f441dd09cc7 0 HexBasic/Fold.lean +100644 e495f2df26b2591ebadf97831bf3d1cc24dabf06 0 HexBasic/List.lean +100644 43f10afab3b325a23687c3e634e21d3fd9f7bc25 0 HexBasic/ListShim.lean +100644 baf5160104823c81e6c7d16ebecdc9e5ec929727 0 HexBasic/ModuleBoundaryTests.lean +100644 72a79162cc362c9c3a4701652436694d6784bfaf 0 HexBasic/OfFn.lean +100644 ae4a0ab74c3f7e4bdb6f05d56502803f5e037610 0 HexBasic/Rand.lean +100644 349ad9397c8ee2d8d27ea967fafef3e4370b8497 0 HexBasic/Sort.lean +100644 6ecb260329bf11be59dbd1a1c502532ab2102bea 0 HexBasic/Vector/Modify.lean +100644 547f6745d95fffb31d4109afcac4c3a7fe540f4d 0 HexBerlekamp/BerlekampMatrix.lean +100644 53123447e2f9886ee67f84e1902fc00c8833f5a4 0 HexBerlekamp/CertificateSyntax.lean +100644 af1cec5bf48e7c0719a9f9ca386829bc2ebf14e5 0 HexBerlekamp/DegreePattern.lean +100644 c17e430d7bd078519cfaea928e3a3f6f4e84e7c0 0 HexBerlekamp/DelayedKernel.lean +100644 a1917611f7ad3aae6b52e152093c4ee6d8afb7ad 0 HexBerlekamp/DistinctDegree.lean +100644 9df825e44201a7e606a268d5c04a0614abe21cd7 0 HexBerlekamp/Factor.lean +100644 dd813f31f9277710e2bb3de58de2d1171717901a 0 HexBerlekamp/FactorPolyElab.lean +100644 fee8fe75719af1879b3b599b11615bd70880ed78 0 HexBerlekamp/Factored.lean +100644 2d4713f173f5e85877f48e3a47dc5ed9e5c452ab 0 HexBerlekamp/Irreducibility.lean +100644 16e3e61a3fbe2da597b3d27e180078b9ba6dfc91 0 HexBerlekamp/IrreducibilityElab.lean +100644 3f627634a70376e9165523ad12e6e0d457e5bea4 0 HexBerlekamp/IrreducibleDecide.lean +100644 8d895f77f0c50a588416f9ff59f562b16d04e6b6 0 HexBerlekamp/LinearFactors.lean +100644 291fbe1cbcb094c8abd1ca705ae6e44757f441d0 0 HexBerlekamp/PackedKernel.lean +100644 2d501f2ff596cfd0ddeeaacf08bbe407a4dc8c18 0 HexBerlekamp/PolynomialTactic.lean +100644 39aae3e6e08f60508d0b60d6a8006830e9c85897 0 HexBerlekamp/RabinSoundness.lean +100644 b45a035862ad2b117089e3f8f88b9509378e3507 0 HexBerlekamp/RabinSoundness/KernelWitness.lean +100644 3fd7f4d6b08fff50873c229e6d8838ee46c12a2f 0 HexBerlekamp/RabinSoundness/RabinCore.lean +100644 37d6ddfedadd735e25c0d3b57beb9248b5cc1e6f 0 HexBerlekamp/RabinSoundness/RabinShape.lean +100644 d2e39f3cfbddb53b80500209c5c70d719c2e0d54 0 HexBerlekampZassenhaus/All.lean +100644 a2a9fa39987137973849a63a47bd9b79e765c427 0 HexBerlekampZassenhaus/BhksCandidates.lean +100644 78585034031f7343c72bf3c4c566f7a11bf6f2ee 0 HexBerlekampZassenhaus/BhksRecover.lean +100644 e2800da2586a8ed479985bd08743a7a83ee4d865 0 HexBerlekampZassenhaus/Certificate.lean +100644 0221169d3d26d2a7e95dbd22fbeb4c85862071f0 0 HexBerlekampZassenhaus/CertificateSyntax.lean +100644 eb5221b322415afbf1244fb7d41e9f0724e810d8 0 HexBerlekampZassenhaus/ChoosePrimeData.lean +100644 e22e0a7374a22c8cc74859853196c184988a1ecc 0 HexBerlekampZassenhaus/Classical/Candidate.lean +100644 7cbab5c0eb653c12e3fbb0fed43ad35036acae6b 0 HexBerlekampZassenhaus/Classical/CombinationIterator.lean +100644 7af88f4cf8b5df99ae5810b39ee9ce75794b9ee7 0 HexBerlekampZassenhaus/Classical/Factorization.lean +100644 2135fd4f9fe33dfc40dab57c664c537959d5b36f 0 HexBerlekampZassenhaus/Classical/Obstruction.lean +100644 0c4cc16d368e9253adc62cfd0a7354e034bd82d3 0 HexBerlekampZassenhaus/Classical/Search.lean +100644 425a59c285a4f8f11667ff5a294e513f7c8323f0 0 HexBerlekampZassenhaus/EisensteinCriterion.lean +100644 8b96f1a198aee766296290734695f096216c3b16 0 HexBerlekampZassenhaus/FactorIrreducibility.lean +100644 b1baa668a8f87d5546e4400905d7dbc8de94ecf2 0 HexBerlekampZassenhaus/FactorProduct.lean +100644 fa093db4b7244a8c42005c479c9aa1ffcc40fa9f 0 HexBerlekampZassenhaus/FactorTactic.lean +100644 cdc3738ba193c1eeab5704362b2cd258286c6f6e 0 HexBerlekampZassenhaus/Factored.lean +100644 81e7e3db14de09e1be8a50c20d63b3bb802bf22c 0 HexBerlekampZassenhaus/Factorization.lean +100644 8a49cfb38c203da541c78fe06a3695de01de5257 0 HexBerlekampZassenhaus/FactorizationData.lean +100644 3236245e582c664151107600bc937857af667117 0 HexBerlekampZassenhaus/FactorizationResult.lean +100644 eccd6d7e907c586e5a7c73545d1a39569a592342 0 HexBerlekampZassenhaus/Hensel/DirectLift.lean +100644 467d63722080f9322cfdcd8f13a7fa01a5dd7ef1 0 HexBerlekampZassenhaus/IrreducibleDecide.lean +100644 9c860caac0a1c797e43ac25c4a38e52355b16ca5 0 HexBerlekampZassenhaus/Lattice.lean +100644 e6ce96fbf345d9a0de384a4b893977ae9d0d1e7b 0 HexBerlekampZassenhaus/Modular/PrimePlan.lean +100644 fde38178743eab8ee03f015f030f09298905bb38 0 HexBerlekampZassenhaus/PrimeSelection.lean +100644 7c036b868e9bae5bf625f3018bf96d3ce513f1ef 0 HexBerlekampZassenhaus/PrimitiveFactors.lean +100644 307c46190adacbec9e02f03c5936103237d01dcb 0 HexBerlekampZassenhaus/QuadraticFactors.lean +100644 1e390cb2985f73ee45c4892dac543dcebbb8f178 0 HexBerlekampZassenhaus/QuadraticNorm.lean +100644 29150d05f8640ea66baca37cdf5e35d834825540 0 HexBerlekampZassenhaus/QuadraticNormRecover.lean +100644 97a17fc8c98a42c89316ae39ff6f8ff4643db506 0 HexBerlekampZassenhaus/RatSquarefree.lean +100644 f703a0f0aa1e1ed49b1fda04737213a26f0cebec 0 HexBerlekampZassenhaus/Recombination.lean +100644 a90975264d7958b6187cee8a907f3f24181081d9 0 HexBerlekampZassenhaus/RecombinationFactors.lean +100644 d23a69d76524d9bea275017f706b4fd0b514be25 0 HexBerlekampZassenhaus/SmallModSingleton.lean +100644 f5d79f0b310559108ba4a876929a809da89808cb 0 HexBerlekampZassenhaus/SquareFreeInput.lean +100644 32803f9efbbe23134965db1fdc38144c66d5c4b1 0 HexBerlekampZassenhaus/SquareFreeModularCert.lean +100644 c887e0f8366ee05f6f5634149e6926ac0ec69dc2 0 HexBerlekampZassenhaus/TrialFactorization.lean +100644 7d9faa20481ddacd7eac87974a5e3ff397892a58 0 HexBerlekampZassenhaus/WordCld.lean +100644 a3cfae13a214203603d0e07bc146e662fbb74bb4 0 HexHensel/Linear.lean +100644 5c38fe22f8eef067916567f53d3c6306c4c3b360 0 HexHensel/ModularDivision.lean +100644 33f14c3f18316921e4d6bc80feb2a78cea906d58 0 HexHensel/ModularPolynomial.lean +100644 ae823d182d80a91f907835f044fc0e4d7dede197 0 HexHensel/Multifactor.lean +100644 6229243aea83e4956d9d929cefa779fde630c194 0 HexHensel/Quadratic.lean +100644 5ec80407d198d9283d30f7541f37ff884aaec5ee 0 HexHensel/QuadraticMultifactor.lean +100644 2483d223a08998b001256778c3f52e1ea9178a14 0 HexHensel/WordMul.lean +100644 728bfaaf690d26d8f5d61cf7aecb4396309e1887 0 HexHensel/WordStep.lean +100644 606adc0834a9c5cedbfec7fd336785842091b166 0 HexHensel/WordTransport.lean +100644 0030ff8748a9cce918ab64ed0fe4127483b1d95e 0 HexLLL/Certificate.lean +100644 ed2becd0baa622d6fba27ad76a34a9f07b61a4bc 0 HexLLL/Checker.lean +100644 6dea5bdef4af6e9d12ef202be2ecac854a870df0 0 HexLLL/ExternalReducer.lean +100644 ffb1a074548aa716ed198a51389bdc8677f787e8 0 HexLLL/ExternalReduction.lean +100644 b1abcad3d8ddb9c8d19773acac08fdd297b1f69b 0 HexLLL/Interval.lean +100644 b82aa0eb2ae3c57f9069c6fe080462a9d88ccb8d 0 HexLLL/Lattice.lean +100644 406e80a9f91a85f89aa84502fb8b09161b95d180 0 HexLLL/Native.lean +100644 baff54b4a36030da67279b8837345adc17802454 0 HexLLL/Reduced.lean +100644 c3fbe8de418bf8cb0cebbf4cda7f6bd693fde9e9 0 HexLLL/Reduction.lean +100644 66a6448eaad9825f614df3a2e1f01fe036551f81 0 HexMatrix/Basic.lean +100644 c55904fffa8114939ee14598dbb9f7334c5baf6d 0 HexMatrix/Block.lean +100644 51b369757ef1e1fe74aee81ba0f9be3be1f8f0a9 0 HexMatrix/Certificate.lean +100644 3d982cb7d9298f32c17e12b53a38f79910e3c298 0 HexMatrix/Diagonal.lean +100644 4b823b3f77e37b7f6fff87bbb974d2aee75284af 0 HexMatrix/DotProduct.lean +100644 ee51555dfefd6c58faa2def9afa8c98e40d9dc9d 0 HexMatrix/Elementary.lean +100644 7319cb57eb638be8bc4fd82a269c0b5fb4a89482 0 HexMatrix/ElementaryAlgebra.lean +100644 4094f87ea847c3848e3108b68b039f76c0d09609 0 HexMatrix/Gram.lean +100644 123b6cced8cba585f3d77f08aa65bd1795dc1846 0 HexMatrix/Lattice.lean +100644 20a9f21bd8880ad4307e422c362797fe22c5c5b8 0 HexMatrix/Lists.lean +100644 7be2254ea732a2e52a3945ca0c31f870ed3c8a9b 0 HexMatrix/MatrixAlgebra.lean +100644 5e07525a5587fdee142e2164637c9e25187f725e 0 HexMatrix/Notation.lean +100644 aa20ee8670db32387ef19fea806e1c1c51e13bdd 0 HexMatrix/Packed.lean +100644 6a0cf098f7b84ab1731d4beb170713a48e7f0fae 0 HexMatrix/Pad.lean +100644 40bf18fdc2dc4f30286c257c5c0986fedfabae8f 0 HexMatrix/Region.lean +100644 a69f627817fd4403771b40a4089f72b4ea7bb38c 0 HexMatrix/Scaled.lean +100644 9d594e041dd6dd932ad867a4351e589534b900f4 0 HexMatrix/Strassen.lean +100644 6b407d7310c15dd6419ccf6e448e47dc40649bca 0 HexMatrix/Submatrix.lean +100644 d4328c6717fde5c6ed6c83f680cfbd29a13a0067 0 HexMatrix/Vector/Insert.lean +100644 2ff968b785fd12e656011f56fe83d446d7db4b0f 0 HexMatrix/Winograd.lean +100644 ce0d15dc25c16520746c52cd82bc71ca692f9bec 0 HexModArith/HotLoop.lean +100644 b3ad521be3b86e7f05fd3004c36f2e51af3d9252 0 HexModArith/Modulus.lean +100644 9b5389e653f39aa062619b14e430909d28987de6 0 HexModArith/Ntt/Butterfly.lean +100644 ab4a4b723e6a6460b3487e25c527097451e6df6d 0 HexModArith/Ntt/Catalogue.lean +100644 4d68a5cddf67990cbc7e0bb7ac7ffcec3b70d1a8 0 HexModArith/Ntt/Convolution.lean +100644 7ec5e278225bee41282981d8d24612e9856a76d4 0 HexModArith/Ntt/CrtInput.lean +100644 3e3f8efb7eaaab2dd0541640ebce94bd88a7f30f 0 HexModArith/Ntt/Dft.lean +100644 cb9bbdaf9fb43a9298d5abbc227306c7df2cb265 0 HexModArith/Ntt/Plan.lean +100644 1b6811d3246c9cc87a060b849d896fcfa7d0450b 0 HexModArith/Ntt/Transform.lean +100644 a3adefb685a093ee5fe08b599a994cca28e1dee4 0 HexModArith/Prime.lean +100644 cb1b75eb3131f20a17483aaa29b0fd78403ec315 0 HexModArith/Residue.lean +100644 25d77491b7f1d9cde974c883e5907ce7874a617c 0 HexModArith/Ring.lean +100644 791c19eed7a203e0ebc8c8fce0265aebf88f30e6 0 HexModArith/WordMod.lean +100644 8fdad67b02691640a31ffa0ae08a9ed0e33cdca5 0 HexPoly/Coprime.lean +100644 1bbbf518bd5dcb280077749329fc402c45fa72f2 0 HexPoly/Dense.lean +100644 157493bcd65779d1a29f65eae824176d69b33257 0 HexPoly/Euclid.lean +100644 9d7237c33b7ac4c2160219a474414f9594c75a88 0 HexPoly/Euclid/Content.lean +100644 6d50041774147bb8767cb726c4de1d5f87d51cbe 0 HexPoly/Euclid/DivGcd.lean +100644 648a31b58dcdf4dadfb9d27bdc9e690ec259d744 0 HexPoly/Euclid/EvalMul.lean +100644 07cea8d2168585c52f76e610594ddc20b5e02fb5 0 HexPoly/Euclid/MonicUnique.lean +100644 ccc4934e98c5f244cf2385cd5a6770eaeb68be63 0 HexPoly/Euclid/MulRing.lean +100644 56075f0d4d4ecdf0223495ae45007f562d27d384 0 HexPoly/Euclid/Reconstruction.lean +100644 83ce9457ad014b45a316fb3b13788c58fc62c746 0 HexPoly/Field.lean +100644 e95b8e1845ad7baeaec261923df0fd8a776efe02 0 HexPoly/Instances.lean +100644 4dcaab4cf72512fbb783c58fa5f8010a1c4c8b3c 0 HexPoly/Lcm.lean +100644 213fb228b9e8117db1ca6d777f1e98f675ade554 0 HexPoly/Monic.lean +100644 fe580f0cf92a96a79637e1d47e5f88f8a0021491 0 HexPoly/Operations.lean +100644 d681bc47f06b65c45651f73e30af5593b5b5ccae 0 HexPolyFp/Compose.lean +100644 8d5b969350978864f0b6e5cd71c3785a87d604f7 0 HexPolyFp/Degree.lean +100644 ffaeeb842a6b78db9c39422a73af190369a41aad 0 HexPolyFp/Enumeration.lean +100644 a357bf3ecbb39d23a097b275754a7cdd5fe475f9 0 HexPolyFp/Field.lean +100644 6ed1f23beb15fbd1a5ea79dcbe5f60eed5adb72c 0 HexPolyFp/Frobenius.lean +100644 dc9f9382a8515d04c73dd335cef8447180e33041 0 HexPolyFp/ModCompose.lean +100644 a2e3dd492addd5d0d9b0e10bc9640fcef1f73ed9 0 HexPolyFp/NttMul.lean +100644 b07fc4c59be0f81b7a0b7cf4995731797e3c4c65 0 HexPolyFp/Packed.lean +100644 d4b97104b9259345b6f67cdf8e0c0614821ae9ab 0 HexPolyFp/PackedMul.lean +100644 2066432524a0c6fb262feafa383bfa2b9c29bbc7 0 HexPolyFp/PrimeField.lean +100644 b94e4172abb4892e419e3a543a980300deab4bfe 0 HexPolyFp/Quotient.lean +100644 e1448652ebb2b4fe4654b6f5e1f57dd719949784 0 HexPolyFp/Quotient/Ring.lean +100644 3bf02f20447dcfd6e341a2d3ade65c01dc411c08 0 HexPolyFp/QuotientCompose.lean +100644 166c9b8d90a16822422490ced83abdf62b7988ff 0 HexPolyFp/QuotientFrobenius.lean +100644 ecae2c81fcddd76d79a7dd5ee60aeb9f433be3d4 0 HexPolyFp/Ring.lean +100644 f2fc2e74288a630fc49490e9bea3602e8e165ebb 0 HexPolyFp/SquareFree.lean +100644 05aa8ada2b4c2e50e7123fac059d17bd00ba7c8c 0 HexPolyFp/SquareFree/Algebra.lean +100644 1e3e8d4aa7360d6ad9af651ebece68fba6f5e79a 0 HexPolyFp/SquareFree/YunContribution.lean +100644 8b84551b4835a0d6754476a525a4f75431b59fe6 0 HexPolyFp/SquareFree/YunCorrect.lean +100644 3c1937ed1621f4dfd2e0176c985c7d940ecd0915 0 HexPolyFp/SquareFree/YunMeasure.lean +100644 204c65fdd0f707dbf21cb6e6cbb1b6ada425369b 0 HexPolyFp/SquareFree/YunReduce.lean +100644 e15ecef15c1ee71a3db1228bf52a84dd5d1c11e4 0 HexPolyZ/Decomposition.lean +100644 eaf86ba69fdd6c680427aef23c1538a27d84fc91 0 HexPolyZ/ExactDivision.lean +100644 c77677c6530fb8e8bcd7e44be9c4123f3a6e86aa 0 HexPolyZ/IntegerPolynomial.lean +100644 732857bdcc110866c697deb70d6afdd382f429c2 0 HexPolyZ/Kronecker.lean +100644 d80abc039e3c701172e1b83a922252bb0a4e932d 0 HexPolyZ/KroneckerMulti.lean +100644 38d79850b04562d53b5595b2e769258b5d0507ba 0 HexPolyZ/Mignotte.lean +100644 4f8b8a90f924a199c3e775dd0ac742e4710875bc 0 HexPolyZ/NttMul.lean +100644 89f345e1cf84eb4ee4e710a584a70b52aafe2657 0 HexPolyZ/Rational.lean +100644 42a92774972718ec4910a8423201beea2695c719 0 HexPrimality/Table.lean +100644 9114099faf18a3ee9118b4a21378e2acbb952518 0 bench/HexBench/FactorService.lean +100644 fca0e4d607d0b0ff4bb5b063cf16f8d894fe80b4 0 bench/corpus/hexbz-factor-corpus.jsonl +100644 d67d814e95ba55353eb4f38c5e9fc71658053381 0 lake-manifest.json +100644 327c99cacafccb757254a4ec924e9b7f90d3b9e3 0 lakefile.lean +100644 12359f928f18e4a89ebd1444a0310b025931b17d 0 lean-toolchain +100644 ae416347447b5406f6c51b592c0bb6e4241d658a 0 scripts/bench/factor_sweep.py diff --git a/reports/bench-results/hexbz-factor-sweep-e3892faf-chungus2.json b/reports/bench-results/hexbz-factor-sweep-e3892faf-chungus2.json new file mode 100644 index 0000000000..e1d9649654 --- /dev/null +++ b/reports/bench-results/hexbz-factor-sweep-e3892faf-chungus2.json @@ -0,0 +1,6043 @@ +{ + "env": { + "lean_version": null, + "lean_toolchain": "leanprover/lean4:v4.34.0", + "platform_target": null, + "os": "linux", + "arch": "x86_64", + "cpu_model": null, + "cpu_cores": 96, + "hostname": "chungus2", + "exe_name": "factor_sweep", + "lean_bench_version": null, + "git_commit": "e3892faf10eed2aaf0b7865fd5e012320f1bb1e8", + "git_dirty": false, + "timestamp_unix_ms": 1789446559781, + "timestamp_iso": "2026-09-15T04:29:19Z", + "cpu_affinity": [ + 5 + ], + "source_fingerprints": { + "hex-factor": "590a45eb7aeb" + } + }, + "config": { + "cutoff_seconds": 10.0, + "repeats_policy": "median-of-5 when first call < 1s, else single call", + "overhead_repeats": 21, + "corpus_path": "bench/corpus/hexbz-factor-corpus.jsonl", + "corpus_sha256": "619913904240834c912489e6cc23ba136e8cc5ebf0ea95f83397e0682387284d", + "early_terminate_run": 3, + "early_terminate_families": [ + "conway", + "hoeij-zimmermann", + "sd-products", + "swinnerton-dyer" + ], + "systems": [ + "hex-factor" + ], + "system_versions": { + "hex-factor": "leanprover/lean4:v4.34.0" + }, + "per_system_overhead_nanos": { + "hex-factor": 22032 + } + }, + "results": [ + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi5", + "degree": 4, + "status": "ok", + "median_nanos": 32398, + "min_nanos": 31367, + "max_nanos": 48963, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi7", + "degree": 6, + "status": "ok", + "median_nanos": 41031, + "min_nanos": 39689, + "max_nanos": 44325, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi15", + "degree": 8, + "status": "ok", + "median_nanos": 105656, + "min_nanos": 97073, + "max_nanos": 130072, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi11", + "degree": 10, + "status": "ok", + "median_nanos": 96373, + "min_nanos": 93398, + "max_nanos": 109923, + "factor_count": 1, + "factor_degrees": [ + 10 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi13", + "degree": 12, + "status": "ok", + "median_nanos": 216130, + "min_nanos": 206607, + "max_nanos": 243041, + "factor_count": 1, + "factor_degrees": [ + 12 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi17", + "degree": 16, + "status": "ok", + "median_nanos": 102121, + "min_nanos": 100079, + "max_nanos": 105947, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi19", + "degree": 18, + "status": "ok", + "median_nanos": 115291, + "min_nanos": 114049, + "max_nanos": 118475, + "factor_count": 1, + "factor_degrees": [ + 18 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi25", + "degree": 20, + "status": "ok", + "median_nanos": 128761, + "min_nanos": 123133, + "max_nanos": 141710, + "factor_count": 1, + "factor_degrees": [ + 20 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi23", + "degree": 22, + "status": "ok", + "median_nanos": 249560, + "min_nanos": 245023, + "max_nanos": 274637, + "factor_count": 1, + "factor_degrees": [ + 22 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi35", + "degree": 24, + "status": "ok", + "median_nanos": 355116, + "min_nanos": 343360, + "max_nanos": 387475, + "factor_count": 1, + "factor_degrees": [ + 24 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi29", + "degree": 28, + "status": "ok", + "median_nanos": 202420, + "min_nanos": 201159, + "max_nanos": 210902, + "factor_count": 1, + "factor_degrees": [ + 28 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi64", + "degree": 32, + "status": "ok", + "median_nanos": 328627, + "min_nanos": 323800, + "max_nanos": 344150, + "factor_count": 1, + "factor_degrees": [ + 32 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi37", + "degree": 36, + "status": "ok", + "median_nanos": 652828, + "min_nanos": 628652, + "max_nanos": 697044, + "factor_count": 1, + "factor_degrees": [ + 36 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi41", + "degree": 40, + "status": "ok", + "median_nanos": 1979706, + "min_nanos": 1967017, + "max_nanos": 2117330, + "factor_count": 1, + "factor_degrees": [ + 40 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi49", + "degree": 42, + "status": "ok", + "median_nanos": 374795, + "min_nanos": 370620, + "max_nanos": 380975, + "factor_count": 1, + "factor_degrees": [ + 42 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi105", + "degree": 48, + "status": "ok", + "median_nanos": 5238938, + "min_nanos": 5213630, + "max_nanos": 5384213, + "factor_count": 1, + "factor_degrees": [ + 48 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi53", + "degree": 52, + "status": "ok", + "median_nanos": 546800, + "min_nanos": 538839, + "max_nanos": 617666, + "factor_count": 1, + "factor_degrees": [ + 52 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi81", + "degree": 54, + "status": "ok", + "median_nanos": 677164, + "min_nanos": 663484, + "max_nanos": 772585, + "factor_count": 1, + "factor_degrees": [ + 54 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi61", + "degree": 60, + "status": "ok", + "median_nanos": 6433650, + "min_nanos": 6391607, + "max_nanos": 6839892, + "factor_count": 1, + "factor_degrees": [ + 60 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi128", + "degree": 64, + "status": "ok", + "median_nanos": 973163, + "min_nanos": 967995, + "max_nanos": 1060042, + "factor_count": 1, + "factor_degrees": [ + 64 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi165", + "degree": 80, + "status": "ok", + "median_nanos": 7786525, + "min_nanos": 7776441, + "max_nanos": 7842408, + "factor_count": 1, + "factor_degrees": [ + 80 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi89", + "degree": 88, + "status": "ok", + "median_nanos": 1323062, + "min_nanos": 1314840, + "max_nanos": 1348549, + "factor_count": 1, + "factor_degrees": [ + 88 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi121", + "degree": 110, + "status": "ok", + "median_nanos": 18899553, + "min_nanos": 18856498, + "max_nanos": 19024468, + "factor_count": 1, + "factor_degrees": [ + 110 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi256", + "degree": 128, + "status": "ok", + "median_nanos": 3735208, + "min_nanos": 3699575, + "max_nanos": 3822518, + "factor_count": 1, + "factor_degrees": [ + 128 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi151", + "degree": 150, + "status": "ok", + "median_nanos": 29816179, + "min_nanos": 29756150, + "max_nanos": 30121151, + "factor_count": 1, + "factor_degrees": [ + 150 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi243", + "degree": 162, + "status": "ok", + "median_nanos": 5032972, + "min_nanos": 5023368, + "max_nanos": 5565653, + "factor_count": 1, + "factor_degrees": [ + 162 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi179", + "degree": 178, + "status": "ok", + "median_nanos": 32634718, + "min_nanos": 32487350, + "max_nanos": 32916887, + "factor_count": 1, + "factor_degrees": [ + 178 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi275", + "degree": 200, + "status": "ok", + "median_nanos": 637991562, + "min_nanos": 632633348, + "max_nanos": 641858535, + "factor_count": 1, + "factor_degrees": [ + 200 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi385", + "degree": 240, + "status": "ok", + "median_nanos": 110527301, + "min_nanos": 108412866, + "max_nanos": 113093065, + "factor_count": 1, + "factor_degrees": [ + 240 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi257", + "degree": 256, + "status": "ok", + "median_nanos": 9820951, + "min_nanos": 9643980, + "max_nanos": 9946789, + "factor_count": 1, + "factor_degrees": [ + 256 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi331", + "degree": 330, + "status": "ok", + "median_nanos": 16166580, + "min_nanos": 16086742, + "max_nanos": 16328000, + "factor_count": 1, + "factor_degrees": [ + 330 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi625", + "degree": 500, + "status": "ok", + "median_nanos": 40583033, + "min_nanos": 40056613, + "max_nanos": 41369369, + "factor_count": 1, + "factor_degrees": [ + 500 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi509", + "degree": 508, + "status": "ok", + "median_nanos": 38229905, + "min_nanos": 37893756, + "max_nanos": 38739240, + "factor_count": 1, + "factor_degrees": [ + 508 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic", + "name": "cyclo_phi1031", + "degree": 1030, + "status": "ok", + "median_nanos": 2564232605, + "min_nanos": 2564232605, + "max_nanos": 2564232605, + "factor_count": 1, + "factor_degrees": [ + 1030 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow6_minus1", + "degree": 6, + "status": "ok", + "median_nanos": 146687, + "min_nanos": 99608, + "max_nanos": 222950, + "factor_count": 4, + "factor_degrees": [ + 1, + 1, + 2, + 2 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow12_minus1", + "degree": 12, + "status": "ok", + "median_nanos": 234878, + "min_nanos": 226085, + "max_nanos": 295939, + "factor_count": 6, + "factor_degrees": [ + 1, + 1, + 2, + 2, + 2, + 4 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow15_minus1", + "degree": 15, + "status": "ok", + "median_nanos": 316029, + "min_nanos": 278173, + "max_nanos": 467753, + "factor_count": 4, + "factor_degrees": [ + 1, + 2, + 4, + 8 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "cyclo_phi12_x_phi13", + "degree": 16, + "status": "ok", + "median_nanos": 403799, + "min_nanos": 371320, + "max_nanos": 561603, + "factor_count": 2, + "factor_degrees": [ + 4, + 12 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "cyclo_phi7_x_phi11", + "degree": 16, + "status": "ok", + "median_nanos": 264352, + "min_nanos": 243070, + "max_nanos": 368397, + "factor_count": 2, + "factor_degrees": [ + 6, + 10 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow20_minus1", + "degree": 20, + "status": "ok", + "median_nanos": 504899, + "min_nanos": 460022, + "max_nanos": 717995, + "factor_count": 6, + "factor_degrees": [ + 1, + 1, + 2, + 4, + 4, + 8 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "cyclo_phi15_x_phi17", + "degree": 24, + "status": "ok", + "median_nanos": 671866, + "min_nanos": 600991, + "max_nanos": 883710, + "factor_count": 2, + "factor_degrees": [ + 8, + 16 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow24_minus1", + "degree": 24, + "status": "ok", + "median_nanos": 2732121, + "min_nanos": 2491975, + "max_nanos": 2992016, + "factor_count": 8, + "factor_degrees": [ + 1, + 1, + 2, + 2, + 2, + 4, + 4, + 8 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow30_minus1", + "degree": 30, + "status": "ok", + "median_nanos": 1617098, + "min_nanos": 1600092, + "max_nanos": 1672129, + "factor_count": 8, + "factor_degrees": [ + 1, + 1, + 2, + 2, + 4, + 4, + 8, + 8 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "cyclo_phi24_x_phi35", + "degree": 32, + "status": "ok", + "median_nanos": 6211180, + "min_nanos": 6154806, + "max_nanos": 6274864, + "factor_count": 2, + "factor_degrees": [ + 8, + 24 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow36_minus1", + "degree": 36, + "status": "ok", + "median_nanos": 2364636, + "min_nanos": 2339138, + "max_nanos": 2400109, + "factor_count": 9, + "factor_degrees": [ + 1, + 1, + 2, + 2, + 2, + 4, + 6, + 6, + 12 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "cyclo_phi32_x_phi45", + "degree": 40, + "status": "ok", + "median_nanos": 2416883, + "min_nanos": 2398547, + "max_nanos": 2440368, + "factor_count": 2, + "factor_degrees": [ + 16, + 24 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow48_minus1", + "degree": 48, + "status": "ok", + "median_nanos": 10269367, + "min_nanos": 10143320, + "max_nanos": 10496904, + "factor_count": 10, + "factor_degrees": [ + 1, + 1, + 2, + 2, + 2, + 4, + 4, + 8, + 8, + 16 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow60_minus1", + "degree": 60, + "status": "ok", + "median_nanos": 5092871, + "min_nanos": 5069487, + "max_nanos": 5117908, + "factor_count": 12, + "factor_degrees": [ + 1, + 1, + 2, + 2, + 2, + 4, + 4, + 4, + 8, + 8, + 8, + 16 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "cyclo_phi64_x_phi105", + "degree": 80, + "status": "ok", + "median_nanos": 16328491, + "min_nanos": 16280819, + "max_nanos": 16955630, + "factor_count": 2, + "factor_degrees": [ + 32, + 48 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow105_minus1", + "degree": 105, + "status": "ok", + "median_nanos": 38402070, + "min_nanos": 38312587, + "max_nanos": 38772859, + "factor_count": 8, + "factor_degrees": [ + 1, + 2, + 4, + 6, + 8, + 12, + 24, + 48 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "cyclo_phi105_x_phi128", + "degree": 112, + "status": "ok", + "median_nanos": 28418387, + "min_nanos": 28101086, + "max_nanos": 28631261, + "factor_count": 2, + "factor_degrees": [ + 48, + 64 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "xpow120_minus1", + "degree": 120, + "status": "ok", + "median_nanos": 143109220, + "min_nanos": 141863273, + "max_nanos": 143225413, + "factor_count": 16, + "factor_degrees": [ + 1, + 1, + 2, + 2, + 2, + 4, + 4, + 4, + 4, + 8, + 8, + 8, + 8, + 16, + 16, + 32 + ] + }, + { + "system": "hex-factor", + "family": "cyclotomic-products", + "name": "cyclo_phi128_x_phi165", + "degree": 144, + "status": "ok", + "median_nanos": 61200944, + "min_nanos": 60854480, + "max_nanos": 61595780, + "factor_count": 2, + "factor_degrees": [ + 64, + 80 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd2", + "degree": 4, + "status": "ok", + "median_nanos": 51596, + "min_nanos": 46739, + "max_nanos": 98727, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd2_shift1", + "degree": 4, + "status": "ok", + "median_nanos": 50916, + "min_nanos": 49353, + "max_nanos": 55783, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd3", + "degree": 8, + "status": "ok", + "median_nanos": 161759, + "min_nanos": 157474, + "max_nanos": 191253, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd3_shift1", + "degree": 8, + "status": "ok", + "median_nanos": 159726, + "min_nanos": 157203, + "max_nanos": 175510, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd3_shift2", + "degree": 8, + "status": "ok", + "median_nanos": 159386, + "min_nanos": 156482, + "max_nanos": 164463, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd4", + "degree": 16, + "status": "ok", + "median_nanos": 842078, + "min_nanos": 816070, + "max_nanos": 865163, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd4_shift1", + "degree": 16, + "status": "ok", + "median_nanos": 766806, + "min_nanos": 756512, + "max_nanos": 789421, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd4_shift3", + "degree": 16, + "status": "ok", + "median_nanos": 835740, + "min_nanos": 821899, + "max_nanos": 859214, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd5", + "degree": 32, + "status": "ok", + "median_nanos": 6554298, + "min_nanos": 6450735, + "max_nanos": 6622950, + "factor_count": 1, + "factor_degrees": [ + 32 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd5_shift1", + "degree": 32, + "status": "ok", + "median_nanos": 7011696, + "min_nanos": 6820413, + "max_nanos": 7082532, + "factor_count": 1, + "factor_degrees": [ + 32 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd5_shift2", + "degree": 32, + "status": "ok", + "median_nanos": 8555225, + "min_nanos": 8441246, + "max_nanos": 8586471, + "factor_count": 1, + "factor_degrees": [ + 32 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd6", + "degree": 64, + "status": "ok", + "median_nanos": 26539611, + "min_nanos": 26356409, + "max_nanos": 27086391, + "factor_count": 1, + "factor_degrees": [ + 64 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd6_shift1", + "degree": 64, + "status": "ok", + "median_nanos": 30951913, + "min_nanos": 30821289, + "max_nanos": 31222464, + "factor_count": 1, + "factor_degrees": [ + 64 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd6_shift5", + "degree": 64, + "status": "ok", + "median_nanos": 29697353, + "min_nanos": 29366913, + "max_nanos": 30296140, + "factor_count": 1, + "factor_degrees": [ + 64 + ] + }, + { + "system": "hex-factor", + "family": "swinnerton-dyer", + "name": "sd7", + "degree": 128, + "status": "ok", + "median_nanos": 188206648, + "min_nanos": 187316117, + "max_nanos": 188585990, + "factor_count": 1, + "factor_degrees": [ + 128 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd2_x_phi12", + "degree": 8, + "status": "ok", + "median_nanos": 134220, + "min_nanos": 126197, + "max_nanos": 231453, + "factor_count": 2, + "factor_degrees": [ + 4, + 4 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd2_x_sd2shift1", + "degree": 8, + "status": "ok", + "median_nanos": 133678, + "min_nanos": 131335, + "max_nanos": 154619, + "factor_count": 2, + "factor_degrees": [ + 4, + 4 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd3_x_phi15", + "degree": 16, + "status": "ok", + "median_nanos": 486952, + "min_nanos": 474844, + "max_nanos": 526932, + "factor_count": 2, + "factor_degrees": [ + 8, + 8 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd3_x_phi24", + "degree": 16, + "status": "ok", + "median_nanos": 554672, + "min_nanos": 552990, + "max_nanos": 584898, + "factor_count": 2, + "factor_degrees": [ + 8, + 8 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd3_x_sd3shift1", + "degree": 16, + "status": "ok", + "median_nanos": 844412, + "min_nanos": 828779, + "max_nanos": 871682, + "factor_count": 2, + "factor_degrees": [ + 8, + 8 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd4_x_phi17", + "degree": 32, + "status": "ok", + "median_nanos": 2653034, + "min_nanos": 2636990, + "max_nanos": 2806181, + "factor_count": 2, + "factor_degrees": [ + 16, + 16 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd4_x_sd4shift1", + "degree": 32, + "status": "ok", + "median_nanos": 13908913, + "min_nanos": 13640115, + "max_nanos": 14032196, + "factor_count": 2, + "factor_degrees": [ + 16, + 16 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd4_x_phi35", + "degree": 40, + "status": "ok", + "median_nanos": 14278280, + "min_nanos": 14138333, + "max_nanos": 14364168, + "factor_count": 2, + "factor_degrees": [ + 16, + 24 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd5_x_phi11", + "degree": 42, + "status": "ok", + "median_nanos": 109104091, + "min_nanos": 108916723, + "max_nanos": 109863237, + "factor_count": 2, + "factor_degrees": [ + 10, + 32 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd5_x_phi45", + "degree": 56, + "status": "ok", + "median_nanos": 243611177, + "min_nanos": 242869407, + "max_nanos": 247736584, + "factor_count": 2, + "factor_degrees": [ + 24, + 32 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd5_x_sd5shift1", + "degree": 64, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd6_x_phi13", + "degree": 76, + "status": "ok", + "median_nanos": 2839671043, + "min_nanos": 2839671043, + "max_nanos": 2839671043, + "factor_count": 2, + "factor_degrees": [ + 12, + 64 + ] + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd6_x_phi105", + "degree": 112, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "sd-products", + "name": "sd6_x_sd6shift1", + "degree": 128, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T3", + "degree": 3, + "status": "ok", + "median_nanos": 50545, + "min_nanos": 33669, + "max_nanos": 23237134, + "factor_count": 2, + "factor_degrees": [ + 1, + 2 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U3", + "degree": 3, + "status": "ok", + "median_nanos": 29935, + "min_nanos": 29304, + "max_nanos": 37115, + "factor_count": 2, + "factor_degrees": [ + 1, + 2 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T4", + "degree": 4, + "status": "ok", + "median_nanos": 52528, + "min_nanos": 50805, + "max_nanos": 63234, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U4", + "degree": 4, + "status": "ok", + "median_nanos": 72949, + "min_nanos": 54311, + "max_nanos": 106999, + "factor_count": 2, + "factor_degrees": [ + 2, + 2 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T5", + "degree": 5, + "status": "ok", + "median_nanos": 40600, + "min_nanos": 37516, + "max_nanos": 45277, + "factor_count": 2, + "factor_degrees": [ + 1, + 4 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U5", + "degree": 5, + "status": "ok", + "median_nanos": 91185, + "min_nanos": 65637, + "max_nanos": 107690, + "factor_count": 4, + "factor_degrees": [ + 1, + 1, + 1, + 2 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T6", + "degree": 6, + "status": "ok", + "median_nanos": 135140, + "min_nanos": 107699, + "max_nanos": 141780, + "factor_count": 2, + "factor_degrees": [ + 2, + 4 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U6", + "degree": 6, + "status": "ok", + "median_nanos": 87540, + "min_nanos": 67831, + "max_nanos": 112257, + "factor_count": 2, + "factor_degrees": [ + 3, + 3 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T7", + "degree": 7, + "status": "ok", + "median_nanos": 98937, + "min_nanos": 73078, + "max_nanos": 105397, + "factor_count": 2, + "factor_degrees": [ + 1, + 6 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U7", + "degree": 7, + "status": "ok", + "median_nanos": 73469, + "min_nanos": 66659, + "max_nanos": 93008, + "factor_count": 3, + "factor_degrees": [ + 1, + 2, + 4 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T8", + "degree": 8, + "status": "ok", + "median_nanos": 83193, + "min_nanos": 80610, + "max_nanos": 88822, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U8", + "degree": 8, + "status": "ok", + "median_nanos": 205786, + "min_nanos": 142160, + "max_nanos": 216171, + "factor_count": 4, + "factor_degrees": [ + 1, + 1, + 3, + 3 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T9", + "degree": 9, + "status": "ok", + "median_nanos": 128531, + "min_nanos": 91086, + "max_nanos": 142732, + "factor_count": 3, + "factor_degrees": [ + 1, + 2, + 6 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U9", + "degree": 9, + "status": "ok", + "median_nanos": 133488, + "min_nanos": 126688, + "max_nanos": 184023, + "factor_count": 4, + "factor_degrees": [ + 1, + 2, + 2, + 4 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T10", + "degree": 10, + "status": "ok", + "median_nanos": 153628, + "min_nanos": 143904, + "max_nanos": 177573, + "factor_count": 2, + "factor_degrees": [ + 2, + 8 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U10", + "degree": 10, + "status": "ok", + "median_nanos": 138065, + "min_nanos": 123493, + "max_nanos": 167779, + "factor_count": 2, + "factor_degrees": [ + 5, + 5 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T12", + "degree": 12, + "status": "ok", + "median_nanos": 247246, + "min_nanos": 182421, + "max_nanos": 255158, + "factor_count": 2, + "factor_degrees": [ + 4, + 8 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U12", + "degree": 12, + "status": "ok", + "median_nanos": 196311, + "min_nanos": 190713, + "max_nanos": 259575, + "factor_count": 2, + "factor_degrees": [ + 6, + 6 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T15", + "degree": 15, + "status": "ok", + "median_nanos": 371311, + "min_nanos": 299314, + "max_nanos": 454694, + "factor_count": 4, + "factor_degrees": [ + 1, + 2, + 4, + 8 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U15", + "degree": 15, + "status": "ok", + "median_nanos": 274167, + "min_nanos": 241408, + "max_nanos": 300256, + "factor_count": 4, + "factor_degrees": [ + 1, + 2, + 4, + 8 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T16", + "degree": 16, + "status": "ok", + "median_nanos": 175871, + "min_nanos": 139998, + "max_nanos": 200608, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U16", + "degree": 16, + "status": "ok", + "median_nanos": 347074, + "min_nanos": 241157, + "max_nanos": 351891, + "factor_count": 2, + "factor_degrees": [ + 8, + 8 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T18", + "degree": 18, + "status": "ok", + "median_nanos": 645357, + "min_nanos": 547932, + "max_nanos": 695551, + "factor_count": 3, + "factor_degrees": [ + 2, + 4, + 12 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U18", + "degree": 18, + "status": "ok", + "median_nanos": 324882, + "min_nanos": 276540, + "max_nanos": 412592, + "factor_count": 2, + "factor_degrees": [ + 9, + 9 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T20", + "degree": 20, + "status": "ok", + "median_nanos": 628081, + "min_nanos": 552119, + "max_nanos": 776702, + "factor_count": 2, + "factor_degrees": [ + 4, + 16 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U20", + "degree": 20, + "status": "ok", + "median_nanos": 912212, + "min_nanos": 825334, + "max_nanos": 957089, + "factor_count": 6, + "factor_degrees": [ + 1, + 1, + 3, + 3, + 6, + 6 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_T24", + "degree": 24, + "status": "ok", + "median_nanos": 539861, + "min_nanos": 501514, + "max_nanos": 627520, + "factor_count": 2, + "factor_degrees": [ + 8, + 16 + ] + }, + { + "system": "hex-factor", + "family": "chebyshev", + "name": "chebyshev_U24", + "degree": 24, + "status": "ok", + "median_nanos": 592218, + "min_nanos": 573831, + "max_nanos": 632718, + "factor_count": 4, + "factor_degrees": [ + 2, + 2, + 10, + 10 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P3", + "degree": 3, + "status": "ok", + "median_nanos": 37065, + "min_nanos": 35452, + "max_nanos": 48832, + "factor_count": 2, + "factor_degrees": [ + 1, + 2 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P4", + "degree": 4, + "status": "ok", + "median_nanos": 39338, + "min_nanos": 34612, + "max_nanos": 46519, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P5", + "degree": 5, + "status": "ok", + "median_nanos": 71126, + "min_nanos": 63474, + "max_nanos": 74661, + "factor_count": 2, + "factor_degrees": [ + 1, + 4 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P6", + "degree": 6, + "status": "ok", + "median_nanos": 95311, + "min_nanos": 90754, + "max_nanos": 110463, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P7", + "degree": 7, + "status": "ok", + "median_nanos": 77805, + "min_nanos": 74220, + "max_nanos": 81531, + "factor_count": 2, + "factor_degrees": [ + 1, + 6 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P8", + "degree": 8, + "status": "ok", + "median_nanos": 163402, + "min_nanos": 161089, + "max_nanos": 183953, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P9", + "degree": 9, + "status": "ok", + "median_nanos": 179376, + "min_nanos": 175530, + "max_nanos": 195580, + "factor_count": 2, + "factor_degrees": [ + 1, + 8 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P10", + "degree": 10, + "status": "ok", + "median_nanos": 291823, + "min_nanos": 283120, + "max_nanos": 317791, + "factor_count": 1, + "factor_degrees": [ + 10 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P12", + "degree": 12, + "status": "ok", + "median_nanos": 235489, + "min_nanos": 230472, + "max_nanos": 257992, + "factor_count": 1, + "factor_degrees": [ + 12 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P14", + "degree": 14, + "status": "ok", + "median_nanos": 666729, + "min_nanos": 637776, + "max_nanos": 741851, + "factor_count": 1, + "factor_degrees": [ + 14 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P16", + "degree": 16, + "status": "ok", + "median_nanos": 690664, + "min_nanos": 600320, + "max_nanos": 721270, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P18", + "degree": 18, + "status": "ok", + "median_nanos": 1483380, + "min_nanos": 1296322, + "max_nanos": 1666811, + "factor_count": 1, + "factor_degrees": [ + 18 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P20", + "degree": 20, + "status": "ok", + "median_nanos": 2209917, + "min_nanos": 2054867, + "max_nanos": 2659414, + "factor_count": 1, + "factor_degrees": [ + 20 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P22", + "degree": 22, + "status": "ok", + "median_nanos": 1156414, + "min_nanos": 1093141, + "max_nanos": 1266247, + "factor_count": 1, + "factor_degrees": [ + 22 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P24", + "degree": 24, + "status": "ok", + "median_nanos": 2100584, + "min_nanos": 1901570, + "max_nanos": 2267322, + "factor_count": 1, + "factor_degrees": [ + 24 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P26", + "degree": 26, + "status": "ok", + "median_nanos": 7464578, + "min_nanos": 7272353, + "max_nanos": 7708560, + "factor_count": 1, + "factor_degrees": [ + 26 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P28", + "degree": 28, + "status": "ok", + "median_nanos": 2481570, + "min_nanos": 2036760, + "max_nanos": 2592704, + "factor_count": 1, + "factor_degrees": [ + 28 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P30", + "degree": 30, + "status": "ok", + "median_nanos": 9243745, + "min_nanos": 8639690, + "max_nanos": 9408860, + "factor_count": 1, + "factor_degrees": [ + 30 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P34", + "degree": 34, + "status": "ok", + "median_nanos": 3579127, + "min_nanos": 3378449, + "max_nanos": 3975164, + "factor_count": 1, + "factor_degrees": [ + 34 + ] + }, + { + "system": "hex-factor", + "family": "legendre", + "name": "legendre_P38", + "degree": 38, + "status": "ok", + "median_nanos": 4823272, + "min_nanos": 4310151, + "max_nanos": 5037429, + "factor_count": 1, + "factor_degrees": [ + 38 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L3", + "degree": 3, + "status": "ok", + "median_nanos": 43455, + "min_nanos": 37465, + "max_nanos": 76063, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L4", + "degree": 4, + "status": "ok", + "median_nanos": 87009, + "min_nanos": 64796, + "max_nanos": 122342, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L5", + "degree": 5, + "status": "ok", + "median_nanos": 135040, + "min_nanos": 97014, + "max_nanos": 137204, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L6", + "degree": 6, + "status": "ok", + "median_nanos": 148220, + "min_nanos": 125576, + "max_nanos": 156222, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L7", + "degree": 7, + "status": "ok", + "median_nanos": 197292, + "min_nanos": 171003, + "max_nanos": 263640, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L8", + "degree": 8, + "status": "ok", + "median_nanos": 178384, + "min_nanos": 146827, + "max_nanos": 202760, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L9", + "degree": 9, + "status": "ok", + "median_nanos": 131736, + "min_nanos": 123854, + "max_nanos": 141950, + "factor_count": 1, + "factor_degrees": [ + 9 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L10", + "degree": 10, + "status": "ok", + "median_nanos": 282329, + "min_nanos": 269359, + "max_nanos": 333865, + "factor_count": 1, + "factor_degrees": [ + 10 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L11", + "degree": 11, + "status": "ok", + "median_nanos": 190663, + "min_nanos": 185925, + "max_nanos": 243321, + "factor_count": 1, + "factor_degrees": [ + 11 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L12", + "degree": 12, + "status": "ok", + "median_nanos": 505229, + "min_nanos": 447954, + "max_nanos": 600500, + "factor_count": 1, + "factor_degrees": [ + 12 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L13", + "degree": 13, + "status": "ok", + "median_nanos": 492610, + "min_nanos": 477288, + "max_nanos": 548784, + "factor_count": 1, + "factor_degrees": [ + 13 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L14", + "degree": 14, + "status": "ok", + "median_nanos": 780838, + "min_nanos": 704895, + "max_nanos": 806836, + "factor_count": 1, + "factor_degrees": [ + 14 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L15", + "degree": 15, + "status": "ok", + "median_nanos": 861297, + "min_nanos": 810642, + "max_nanos": 927695, + "factor_count": 1, + "factor_degrees": [ + 15 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L16", + "degree": 16, + "status": "ok", + "median_nanos": 1206008, + "min_nanos": 1074132, + "max_nanos": 1290202, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L18", + "degree": 18, + "status": "ok", + "median_nanos": 1319025, + "min_nanos": 1167962, + "max_nanos": 1425063, + "factor_count": 1, + "factor_degrees": [ + 18 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L20", + "degree": 20, + "status": "ok", + "median_nanos": 1757616, + "min_nanos": 1713751, + "max_nanos": 2347140, + "factor_count": 1, + "factor_degrees": [ + 20 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L22", + "degree": 22, + "status": "ok", + "median_nanos": 1019141, + "min_nanos": 972172, + "max_nanos": 1085250, + "factor_count": 1, + "factor_degrees": [ + 22 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L24", + "degree": 24, + "status": "ok", + "median_nanos": 1932835, + "min_nanos": 1820660, + "max_nanos": 2150178, + "factor_count": 1, + "factor_degrees": [ + 24 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L28", + "degree": 28, + "status": "ok", + "median_nanos": 2987219, + "min_nanos": 2951155, + "max_nanos": 3196760, + "factor_count": 1, + "factor_degrees": [ + 28 + ] + }, + { + "system": "hex-factor", + "family": "laguerre", + "name": "laguerre_L32", + "degree": 32, + "status": "ok", + "median_nanos": 6003041, + "min_nanos": 5470852, + "max_nanos": 6185371, + "factor_count": 1, + "factor_degrees": [ + 32 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_4", + "degree": 4, + "status": "ok", + "median_nanos": 120819, + "min_nanos": 104125, + "max_nanos": 164414, + "factor_count": 4, + "factor_degrees": [ + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_6", + "degree": 6, + "status": "ok", + "median_nanos": 165746, + "min_nanos": 135420, + "max_nanos": 211343, + "factor_count": 6, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_8", + "degree": 8, + "status": "ok", + "median_nanos": 233887, + "min_nanos": 207548, + "max_nanos": 305523, + "factor_count": 8, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_10", + "degree": 10, + "status": "ok", + "median_nanos": 604056, + "min_nanos": 499260, + "max_nanos": 642963, + "factor_count": 10, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_12", + "degree": 12, + "status": "ok", + "median_nanos": 675592, + "min_nanos": 611808, + "max_nanos": 811113, + "factor_count": 12, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_14", + "degree": 14, + "status": "ok", + "median_nanos": 1085620, + "min_nanos": 954115, + "max_nanos": 1127372, + "factor_count": 14, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_16", + "degree": 16, + "status": "ok", + "median_nanos": 1447867, + "min_nanos": 1395169, + "max_nanos": 1545120, + "factor_count": 16, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_18", + "degree": 18, + "status": "ok", + "median_nanos": 2010701, + "min_nanos": 1898706, + "max_nanos": 2157659, + "factor_count": 18, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_20", + "degree": 20, + "status": "ok", + "median_nanos": 2659954, + "min_nanos": 2236076, + "max_nanos": 2736227, + "factor_count": 20, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_24", + "degree": 24, + "status": "ok", + "median_nanos": 4121651, + "min_nanos": 3943277, + "max_nanos": 4436088, + "factor_count": 24, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_28", + "degree": 28, + "status": "ok", + "median_nanos": 5980718, + "min_nanos": 5831867, + "max_nanos": 6611513, + "factor_count": 28, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_32", + "degree": 32, + "status": "ok", + "median_nanos": 7683923, + "min_nanos": 7507061, + "max_nanos": 8419204, + "factor_count": 32, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_40", + "degree": 40, + "status": "ok", + "median_nanos": 11163672, + "min_nanos": 10898629, + "max_nanos": 13204819, + "factor_count": 40, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_48", + "degree": 48, + "status": "ok", + "median_nanos": 18341105, + "min_nanos": 18176962, + "max_nanos": 19627722, + "factor_count": 48, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "wilkinson", + "name": "wilkinson_56", + "degree": 56, + "status": "ok", + "median_nanos": 24133443, + "min_nanos": 23230414, + "max_nanos": 26854528, + "factor_count": 56, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_26", + "degree": 6, + "status": "ok", + "median_nanos": 147649, + "min_nanos": 119507, + "max_nanos": 196191, + "factor_count": 2, + "factor_degrees": [ + 3, + 3 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_22", + "degree": 9, + "status": "ok", + "median_nanos": 336720, + "min_nanos": 281107, + "max_nanos": 385261, + "factor_count": 2, + "factor_degrees": [ + 4, + 5 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_23", + "degree": 9, + "status": "ok", + "median_nanos": 305944, + "min_nanos": 278573, + "max_nanos": 342178, + "factor_count": 2, + "factor_degrees": [ + 3, + 6 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_25", + "degree": 9, + "status": "ok", + "median_nanos": 337681, + "min_nanos": 324652, + "max_nanos": 343980, + "factor_count": 2, + "factor_degrees": [ + 4, + 5 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_07", + "degree": 10, + "status": "ok", + "median_nanos": 297080, + "min_nanos": 277652, + "max_nanos": 319924, + "factor_count": 2, + "factor_degrees": [ + 5, + 5 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_13", + "degree": 11, + "status": "ok", + "median_nanos": 380774, + "min_nanos": 367665, + "max_nanos": 384160, + "factor_count": 3, + "factor_degrees": [ + 1, + 4, + 6 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_09", + "degree": 12, + "status": "ok", + "median_nanos": 540882, + "min_nanos": 393593, + "max_nanos": 558388, + "factor_count": 3, + "factor_degrees": [ + 3, + 4, + 5 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_14", + "degree": 12, + "status": "ok", + "median_nanos": 348166, + "min_nanos": 252965, + "max_nanos": 378632, + "factor_count": 2, + "factor_degrees": [ + 5, + 7 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_04", + "degree": 13, + "status": "ok", + "median_nanos": 648833, + "min_nanos": 623735, + "max_nanos": 669853, + "factor_count": 2, + "factor_degrees": [ + 4, + 9 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_08", + "degree": 13, + "status": "ok", + "median_nanos": 667881, + "min_nanos": 661000, + "max_nanos": 687410, + "factor_count": 2, + "factor_degrees": [ + 5, + 8 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_16", + "degree": 13, + "status": "ok", + "median_nanos": 426382, + "min_nanos": 422777, + "max_nanos": 464158, + "factor_count": 2, + "factor_degrees": [ + 5, + 8 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_20", + "degree": 13, + "status": "ok", + "median_nanos": 584877, + "min_nanos": 560471, + "max_nanos": 600781, + "factor_count": 2, + "factor_degrees": [ + 5, + 8 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_28", + "degree": 13, + "status": "ok", + "median_nanos": 1015355, + "min_nanos": 998010, + "max_nanos": 1095885, + "factor_count": 5, + "factor_degrees": [ + 1, + 1, + 1, + 1, + 9 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_29", + "degree": 13, + "status": "ok", + "median_nanos": 604977, + "min_nanos": 526580, + "max_nanos": 625527, + "factor_count": 2, + "factor_degrees": [ + 5, + 8 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_06", + "degree": 14, + "status": "ok", + "median_nanos": 655471, + "min_nanos": 639739, + "max_nanos": 688140, + "factor_count": 3, + "factor_degrees": [ + 4, + 4, + 6 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_17", + "degree": 14, + "status": "ok", + "median_nanos": 456837, + "min_nanos": 449366, + "max_nanos": 488755, + "factor_count": 2, + "factor_degrees": [ + 4, + 10 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_01", + "degree": 15, + "status": "ok", + "median_nanos": 506351, + "min_nanos": 485180, + "max_nanos": 532960, + "factor_count": 2, + "factor_degrees": [ + 6, + 9 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_05", + "degree": 15, + "status": "ok", + "median_nanos": 589424, + "min_nanos": 578098, + "max_nanos": 630224, + "factor_count": 2, + "factor_degrees": [ + 5, + 10 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_19", + "degree": 15, + "status": "ok", + "median_nanos": 454184, + "min_nanos": 438100, + "max_nanos": 474574, + "factor_count": 2, + "factor_degrees": [ + 7, + 8 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_27", + "degree": 16, + "status": "ok", + "median_nanos": 743172, + "min_nanos": 603345, + "max_nanos": 807437, + "factor_count": 4, + "factor_degrees": [ + 1, + 2, + 4, + 9 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_11", + "degree": 17, + "status": "ok", + "median_nanos": 702261, + "min_nanos": 438381, + "max_nanos": 722852, + "factor_count": 3, + "factor_degrees": [ + 1, + 7, + 9 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_00", + "degree": 18, + "status": "ok", + "median_nanos": 1064128, + "min_nanos": 934846, + "max_nanos": 1119650, + "factor_count": 3, + "factor_degrees": [ + 5, + 5, + 8 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_03", + "degree": 18, + "status": "ok", + "median_nanos": 1010399, + "min_nanos": 976358, + "max_nanos": 1079791, + "factor_count": 4, + "factor_degrees": [ + 2, + 2, + 4, + 10 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_12", + "degree": 18, + "status": "ok", + "median_nanos": 596023, + "min_nanos": 565839, + "max_nanos": 621712, + "factor_count": 4, + "factor_degrees": [ + 1, + 3, + 7, + 7 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_24", + "degree": 18, + "status": "ok", + "median_nanos": 638446, + "min_nanos": 633420, + "max_nanos": 694880, + "factor_count": 3, + "factor_degrees": [ + 3, + 5, + 10 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_02", + "degree": 19, + "status": "ok", + "median_nanos": 1221271, + "min_nanos": 1049666, + "max_nanos": 1223655, + "factor_count": 2, + "factor_degrees": [ + 9, + 10 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_10", + "degree": 20, + "status": "ok", + "median_nanos": 944230, + "min_nanos": 646809, + "max_nanos": 964951, + "factor_count": 2, + "factor_degrees": [ + 10, + 10 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_15", + "degree": 21, + "status": "ok", + "median_nanos": 867536, + "min_nanos": 758014, + "max_nanos": 958051, + "factor_count": 4, + "factor_degrees": [ + 1, + 5, + 7, + 8 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_18", + "degree": 22, + "status": "ok", + "median_nanos": 1118669, + "min_nanos": 1082115, + "max_nanos": 1242552, + "factor_count": 3, + "factor_degrees": [ + 6, + 6, + 10 + ] + }, + { + "system": "hex-factor", + "family": "random-products", + "name": "randprod_21", + "degree": 24, + "status": "ok", + "median_nanos": 1693511, + "min_nanos": 1522056, + "max_nanos": 2034336, + "factor_count": 3, + "factor_degrees": [ + 7, + 8, + 9 + ] + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_S7", + "degree": 128, + "status": "ok", + "median_nanos": 232137775, + "min_nanos": 228094339, + "max_nanos": 238790940, + "factor_count": 1, + "factor_degrees": [ + 128 + ] + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_M12_f132", + "degree": 132, + "status": "ok", + "median_nanos": 1085021461, + "min_nanos": 1085021461, + "max_nanos": 1085021461, + "factor_count": 1, + "factor_degrees": [ + 132 + ] + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_F190", + "degree": 190, + "status": "ok", + "median_nanos": 3083745677, + "min_nanos": 3083745677, + "max_nanos": 3083745677, + "factor_count": 3, + "factor_degrees": [ + 10, + 90, + 90 + ] + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_F192", + "degree": 192, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_F256", + "degree": 256, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_S8", + "degree": 256, + "status": "ok", + "median_nanos": 3823633482, + "min_nanos": 3823633482, + "max_nanos": 3823633482, + "factor_count": 1, + "factor_degrees": [ + 256 + ] + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_F351", + "degree": 351, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_P7", + "degree": 384, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_S9", + "degree": 512, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "hoeij-zimmermann", + "name": "hoeij_F630", + "degree": 630, + "status": "timeout", + "median_nanos": null, + "min_nanos": null, + "max_nanos": null, + "factor_count": null, + "early_terminated": true, + "factor_degrees": null + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p11_n1", + "degree": 1, + "status": "ok", + "median_nanos": 29144, + "min_nanos": 22233, + "max_nanos": 20449511, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p13_n1", + "degree": 1, + "status": "ok", + "median_nanos": 23074, + "min_nanos": 22133, + "max_nanos": 25057, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n1", + "degree": 1, + "status": "ok", + "median_nanos": 21903, + "min_nanos": 21592, + "max_nanos": 22584, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n1", + "degree": 1, + "status": "ok", + "median_nanos": 22383, + "min_nanos": 21712, + "max_nanos": 26930, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p521_n1", + "degree": 1, + "status": "ok", + "median_nanos": 22264, + "min_nanos": 21943, + "max_nanos": 23234, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n1", + "degree": 1, + "status": "ok", + "median_nanos": 20941, + "min_nanos": 20701, + "max_nanos": 21983, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p65537_n1", + "degree": 1, + "status": "ok", + "median_nanos": 22063, + "min_nanos": 21842, + "max_nanos": 23315, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n1", + "degree": 1, + "status": "ok", + "median_nanos": 21252, + "min_nanos": 21171, + "max_nanos": 21722, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p97_n1", + "degree": 1, + "status": "ok", + "median_nanos": 21351, + "min_nanos": 21252, + "max_nanos": 21893, + "factor_count": 1, + "factor_degrees": [ + 1 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p11_n2", + "degree": 2, + "status": "ok", + "median_nanos": 26730, + "min_nanos": 26189, + "max_nanos": 34471, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p13_n2", + "degree": 2, + "status": "ok", + "median_nanos": 36304, + "min_nanos": 33540, + "max_nanos": 57455, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n2", + "degree": 2, + "status": "ok", + "median_nanos": 27290, + "min_nanos": 24477, + "max_nanos": 29113, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n2", + "degree": 2, + "status": "ok", + "median_nanos": 26339, + "min_nanos": 25488, + "max_nanos": 27451, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p521_n2", + "degree": 2, + "status": "ok", + "median_nanos": 35964, + "min_nanos": 35442, + "max_nanos": 38518, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n2", + "degree": 2, + "status": "ok", + "median_nanos": 26439, + "min_nanos": 24557, + "max_nanos": 27501, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p65537_n2", + "degree": 2, + "status": "ok", + "median_nanos": 39188, + "min_nanos": 34801, + "max_nanos": 44205, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n2", + "degree": 2, + "status": "ok", + "median_nanos": 31937, + "min_nanos": 30866, + "max_nanos": 38006, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p97_n2", + "degree": 2, + "status": "ok", + "median_nanos": 33098, + "min_nanos": 32038, + "max_nanos": 34732, + "factor_count": 1, + "factor_degrees": [ + 2 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p11_n3", + "degree": 3, + "status": "ok", + "median_nanos": 43375, + "min_nanos": 41601, + "max_nanos": 51947, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p13_n3", + "degree": 3, + "status": "ok", + "median_nanos": 25989, + "min_nanos": 25608, + "max_nanos": 29684, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n3", + "degree": 3, + "status": "ok", + "median_nanos": 38357, + "min_nanos": 37145, + "max_nanos": 41411, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n3", + "degree": 3, + "status": "ok", + "median_nanos": 25799, + "min_nanos": 25408, + "max_nanos": 27141, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p521_n3", + "degree": 3, + "status": "ok", + "median_nanos": 41391, + "min_nanos": 38497, + "max_nanos": 42503, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n3", + "degree": 3, + "status": "ok", + "median_nanos": 28041, + "min_nanos": 27710, + "max_nanos": 30775, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p65537_n3", + "degree": 3, + "status": "ok", + "median_nanos": 28923, + "min_nanos": 28282, + "max_nanos": 29453, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n3", + "degree": 3, + "status": "ok", + "median_nanos": 39088, + "min_nanos": 38387, + "max_nanos": 42703, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p97_n3", + "degree": 3, + "status": "ok", + "median_nanos": 29174, + "min_nanos": 28022, + "max_nanos": 33219, + "factor_count": 1, + "factor_degrees": [ + 3 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p11_n4", + "degree": 4, + "status": "ok", + "median_nanos": 56694, + "min_nanos": 54831, + "max_nanos": 67009, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p13_n4", + "degree": 4, + "status": "ok", + "median_nanos": 57475, + "min_nanos": 56794, + "max_nanos": 63644, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n4", + "degree": 4, + "status": "ok", + "median_nanos": 43174, + "min_nanos": 41812, + "max_nanos": 46900, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n4", + "degree": 4, + "status": "ok", + "median_nanos": 34021, + "min_nanos": 33500, + "max_nanos": 36615, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p521_n4", + "degree": 4, + "status": "ok", + "median_nanos": 35112, + "min_nanos": 34561, + "max_nanos": 36855, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n4", + "degree": 4, + "status": "ok", + "median_nanos": 47711, + "min_nanos": 47210, + "max_nanos": 52117, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p65537_n4", + "degree": 4, + "status": "ok", + "median_nanos": 67320, + "min_nanos": 65157, + "max_nanos": 72247, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n4", + "degree": 4, + "status": "ok", + "median_nanos": 46900, + "min_nanos": 45837, + "max_nanos": 48402, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p97_n4", + "degree": 4, + "status": "ok", + "median_nanos": 32829, + "min_nanos": 31747, + "max_nanos": 36294, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p11_n5", + "degree": 5, + "status": "ok", + "median_nanos": 42473, + "min_nanos": 41892, + "max_nanos": 48742, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p13_n5", + "degree": 5, + "status": "ok", + "median_nanos": 36153, + "min_nanos": 35433, + "max_nanos": 40339, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n5", + "degree": 5, + "status": "ok", + "median_nanos": 49484, + "min_nanos": 47942, + "max_nanos": 54381, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n5", + "degree": 5, + "status": "ok", + "median_nanos": 35452, + "min_nanos": 34792, + "max_nanos": 40890, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p521_n5", + "degree": 5, + "status": "ok", + "median_nanos": 54771, + "min_nanos": 53489, + "max_nanos": 58877, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n5", + "degree": 5, + "status": "ok", + "median_nanos": 67320, + "min_nanos": 64225, + "max_nanos": 76644, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n5", + "degree": 5, + "status": "ok", + "median_nanos": 63635, + "min_nanos": 61852, + "max_nanos": 69132, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p97_n5", + "degree": 5, + "status": "ok", + "median_nanos": 53028, + "min_nanos": 50635, + "max_nanos": 53880, + "factor_count": 1, + "factor_degrees": [ + 5 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p11_n6", + "degree": 6, + "status": "ok", + "median_nanos": 44956, + "min_nanos": 41922, + "max_nanos": 47000, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p13_n6", + "degree": 6, + "status": "ok", + "median_nanos": 63694, + "min_nanos": 61171, + "max_nanos": 69293, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n6", + "degree": 6, + "status": "ok", + "median_nanos": 43615, + "min_nanos": 42573, + "max_nanos": 47420, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n6", + "degree": 6, + "status": "ok", + "median_nanos": 42093, + "min_nanos": 40780, + "max_nanos": 45938, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p521_n6", + "degree": 6, + "status": "ok", + "median_nanos": 81330, + "min_nanos": 78346, + "max_nanos": 97545, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n6", + "degree": 6, + "status": "ok", + "median_nanos": 51817, + "min_nanos": 50675, + "max_nanos": 55432, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n6", + "degree": 6, + "status": "ok", + "median_nanos": 73088, + "min_nanos": 69193, + "max_nanos": 74441, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p97_n6", + "degree": 6, + "status": "ok", + "median_nanos": 46238, + "min_nanos": 43034, + "max_nanos": 47270, + "factor_count": 1, + "factor_degrees": [ + 6 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p11_n7", + "degree": 7, + "status": "ok", + "median_nanos": 77905, + "min_nanos": 74500, + "max_nanos": 83203, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p13_n7", + "degree": 7, + "status": "ok", + "median_nanos": 66028, + "min_nanos": 62122, + "max_nanos": 68152, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n7", + "degree": 7, + "status": "ok", + "median_nanos": 65126, + "min_nanos": 63104, + "max_nanos": 66759, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n7", + "degree": 7, + "status": "ok", + "median_nanos": 45307, + "min_nanos": 44897, + "max_nanos": 46779, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p521_n7", + "degree": 7, + "status": "ok", + "median_nanos": 67340, + "min_nanos": 67079, + "max_nanos": 71296, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n7", + "degree": 7, + "status": "ok", + "median_nanos": 52458, + "min_nanos": 51727, + "max_nanos": 55542, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n7", + "degree": 7, + "status": "ok", + "median_nanos": 61140, + "min_nanos": 60329, + "max_nanos": 65477, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p97_n7", + "degree": 7, + "status": "ok", + "median_nanos": 71385, + "min_nanos": 67390, + "max_nanos": 76083, + "factor_count": 1, + "factor_degrees": [ + 7 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p11_n8", + "degree": 8, + "status": "ok", + "median_nanos": 98967, + "min_nanos": 94030, + "max_nanos": 109072, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p13_n8", + "degree": 8, + "status": "ok", + "median_nanos": 70865, + "min_nanos": 70153, + "max_nanos": 78437, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n8", + "degree": 8, + "status": "ok", + "median_nanos": 100719, + "min_nanos": 98957, + "max_nanos": 109382, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n8", + "degree": 8, + "status": "ok", + "median_nanos": 59208, + "min_nanos": 56304, + "max_nanos": 61030, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p521_n8", + "degree": 8, + "status": "ok", + "median_nanos": 98987, + "min_nanos": 97505, + "max_nanos": 106729, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n8", + "degree": 8, + "status": "ok", + "median_nanos": 79157, + "min_nanos": 77224, + "max_nanos": 82792, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n8", + "degree": 8, + "status": "ok", + "median_nanos": 76974, + "min_nanos": 71567, + "max_nanos": 81892, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p97_n8", + "degree": 8, + "status": "ok", + "median_nanos": 85456, + "min_nanos": 82582, + "max_nanos": 87159, + "factor_count": 1, + "factor_degrees": [ + 8 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n9", + "degree": 9, + "status": "ok", + "median_nanos": 83354, + "min_nanos": 80850, + "max_nanos": 88251, + "factor_count": 1, + "factor_degrees": [ + 9 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n9", + "degree": 9, + "status": "ok", + "median_nanos": 59068, + "min_nanos": 58467, + "max_nanos": 64276, + "factor_count": 1, + "factor_degrees": [ + 9 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n9", + "degree": 9, + "status": "ok", + "median_nanos": 91455, + "min_nanos": 90504, + "max_nanos": 101771, + "factor_count": 1, + "factor_degrees": [ + 9 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n9", + "degree": 9, + "status": "ok", + "median_nanos": 104735, + "min_nanos": 96934, + "max_nanos": 111425, + "factor_count": 1, + "factor_degrees": [ + 9 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n10", + "degree": 10, + "status": "ok", + "median_nanos": 108121, + "min_nanos": 103945, + "max_nanos": 115261, + "factor_count": 1, + "factor_degrees": [ + 10 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n10", + "degree": 10, + "status": "ok", + "median_nanos": 74170, + "min_nanos": 71897, + "max_nanos": 75151, + "factor_count": 1, + "factor_degrees": [ + 10 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n10", + "degree": 10, + "status": "ok", + "median_nanos": 68371, + "min_nanos": 67189, + "max_nanos": 69483, + "factor_count": 1, + "factor_degrees": [ + 10 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n10", + "degree": 10, + "status": "ok", + "median_nanos": 155821, + "min_nanos": 152617, + "max_nanos": 174980, + "factor_count": 1, + "factor_degrees": [ + 10 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n11", + "degree": 11, + "status": "ok", + "median_nanos": 131675, + "min_nanos": 113528, + "max_nanos": 133077, + "factor_count": 1, + "factor_degrees": [ + 11 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n11", + "degree": 11, + "status": "ok", + "median_nanos": 69062, + "min_nanos": 68442, + "max_nanos": 70113, + "factor_count": 1, + "factor_degrees": [ + 11 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n11", + "degree": 11, + "status": "ok", + "median_nanos": 77856, + "min_nanos": 74912, + "max_nanos": 86498, + "factor_count": 1, + "factor_degrees": [ + 11 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n11", + "degree": 11, + "status": "ok", + "median_nanos": 147980, + "min_nanos": 145055, + "max_nanos": 164384, + "factor_count": 1, + "factor_degrees": [ + 11 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n12", + "degree": 12, + "status": "ok", + "median_nanos": 127609, + "min_nanos": 125757, + "max_nanos": 147018, + "factor_count": 1, + "factor_degrees": [ + 12 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n12", + "degree": 12, + "status": "ok", + "median_nanos": 88401, + "min_nanos": 85887, + "max_nanos": 90765, + "factor_count": 1, + "factor_degrees": [ + 12 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n12", + "degree": 12, + "status": "ok", + "median_nanos": 204843, + "min_nanos": 199186, + "max_nanos": 243161, + "factor_count": 1, + "factor_degrees": [ + 12 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n12", + "degree": 12, + "status": "ok", + "median_nanos": 174018, + "min_nanos": 168410, + "max_nanos": 188149, + "factor_count": 1, + "factor_degrees": [ + 12 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n13", + "degree": 13, + "status": "ok", + "median_nanos": 93869, + "min_nanos": 87300, + "max_nanos": 98856, + "factor_count": 1, + "factor_degrees": [ + 13 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n13", + "degree": 13, + "status": "ok", + "median_nanos": 78587, + "min_nanos": 75351, + "max_nanos": 79628, + "factor_count": 1, + "factor_degrees": [ + 13 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n13", + "degree": 13, + "status": "ok", + "median_nanos": 103383, + "min_nanos": 99708, + "max_nanos": 105336, + "factor_count": 1, + "factor_degrees": [ + 13 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n13", + "degree": 13, + "status": "ok", + "median_nanos": 219315, + "min_nanos": 207118, + "max_nanos": 245835, + "factor_count": 1, + "factor_degrees": [ + 13 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n14", + "degree": 14, + "status": "ok", + "median_nanos": 151665, + "min_nanos": 148681, + "max_nanos": 177614, + "factor_count": 1, + "factor_degrees": [ + 14 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n14", + "degree": 14, + "status": "ok", + "median_nanos": 114890, + "min_nanos": 113960, + "max_nanos": 118977, + "factor_count": 1, + "factor_degrees": [ + 14 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n14", + "degree": 14, + "status": "ok", + "median_nanos": 133398, + "min_nanos": 132436, + "max_nanos": 137194, + "factor_count": 1, + "factor_degrees": [ + 14 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n14", + "degree": 14, + "status": "ok", + "median_nanos": 159987, + "min_nanos": 159056, + "max_nanos": 166677, + "factor_count": 1, + "factor_degrees": [ + 14 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n15", + "degree": 15, + "status": "ok", + "median_nanos": 211173, + "min_nanos": 210492, + "max_nanos": 238574, + "factor_count": 1, + "factor_degrees": [ + 15 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n15", + "degree": 15, + "status": "ok", + "median_nanos": 113598, + "min_nanos": 112728, + "max_nanos": 120208, + "factor_count": 1, + "factor_degrees": [ + 15 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n15", + "degree": 15, + "status": "ok", + "median_nanos": 148039, + "min_nanos": 140678, + "max_nanos": 157414, + "factor_count": 1, + "factor_degrees": [ + 15 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n15", + "degree": 15, + "status": "ok", + "median_nanos": 186676, + "min_nanos": 185335, + "max_nanos": 194799, + "factor_count": 1, + "factor_degrees": [ + 15 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n16", + "degree": 16, + "status": "ok", + "median_nanos": 131746, + "min_nanos": 121400, + "max_nanos": 215520, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n16", + "degree": 16, + "status": "ok", + "median_nanos": 127579, + "min_nanos": 123994, + "max_nanos": 163242, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n16", + "degree": 16, + "status": "ok", + "median_nanos": 292424, + "min_nanos": 281788, + "max_nanos": 367205, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n16", + "degree": 16, + "status": "ok", + "median_nanos": 275929, + "min_nanos": 260396, + "max_nanos": 298953, + "factor_count": 1, + "factor_degrees": [ + 16 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n17", + "degree": 17, + "status": "ok", + "median_nanos": 294486, + "min_nanos": 252735, + "max_nanos": 445981, + "factor_count": 1, + "factor_degrees": [ + 17 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n17", + "degree": 17, + "status": "ok", + "median_nanos": 109092, + "min_nanos": 105697, + "max_nanos": 192886, + "factor_count": 1, + "factor_degrees": [ + 17 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n17", + "degree": 17, + "status": "ok", + "median_nanos": 461074, + "min_nanos": 404620, + "max_nanos": 730223, + "factor_count": 1, + "factor_degrees": [ + 17 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n17", + "degree": 17, + "status": "ok", + "median_nanos": 299484, + "min_nanos": 290611, + "max_nanos": 346344, + "factor_count": 1, + "factor_degrees": [ + 17 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n18", + "degree": 18, + "status": "ok", + "median_nanos": 329749, + "min_nanos": 324571, + "max_nanos": 357981, + "factor_count": 1, + "factor_degrees": [ + 18 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n18", + "degree": 18, + "status": "ok", + "median_nanos": 158504, + "min_nanos": 151324, + "max_nanos": 208359, + "factor_count": 1, + "factor_degrees": [ + 18 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n18", + "degree": 18, + "status": "ok", + "median_nanos": 233146, + "min_nanos": 227738, + "max_nanos": 306234, + "factor_count": 1, + "factor_degrees": [ + 18 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n18", + "degree": 18, + "status": "ok", + "median_nanos": 302669, + "min_nanos": 278784, + "max_nanos": 318202, + "factor_count": 1, + "factor_degrees": [ + 18 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n19", + "degree": 19, + "status": "ok", + "median_nanos": 268698, + "min_nanos": 264032, + "max_nanos": 289720, + "factor_count": 1, + "factor_degrees": [ + 19 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n19", + "degree": 19, + "status": "ok", + "median_nanos": 126317, + "min_nanos": 124986, + "max_nanos": 129082, + "factor_count": 1, + "factor_degrees": [ + 19 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n19", + "degree": 19, + "status": "ok", + "median_nanos": 353565, + "min_nanos": 336219, + "max_nanos": 385372, + "factor_count": 1, + "factor_degrees": [ + 19 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n19", + "degree": 19, + "status": "ok", + "median_nanos": 127589, + "min_nanos": 124464, + "max_nanos": 180468, + "factor_count": 1, + "factor_degrees": [ + 19 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n20", + "degree": 20, + "status": "ok", + "median_nanos": 351330, + "min_nanos": 329569, + "max_nanos": 424289, + "factor_count": 1, + "factor_degrees": [ + 20 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n20", + "degree": 20, + "status": "ok", + "median_nanos": 190783, + "min_nanos": 187147, + "max_nanos": 197763, + "factor_count": 1, + "factor_degrees": [ + 20 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n20", + "degree": 20, + "status": "ok", + "median_nanos": 262249, + "min_nanos": 253767, + "max_nanos": 277451, + "factor_count": 1, + "factor_degrees": [ + 20 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n20", + "degree": 20, + "status": "ok", + "median_nanos": 241648, + "min_nanos": 235669, + "max_nanos": 276870, + "factor_count": 1, + "factor_degrees": [ + 20 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n21", + "degree": 21, + "status": "ok", + "median_nanos": 282268, + "min_nanos": 270712, + "max_nanos": 334486, + "factor_count": 1, + "factor_degrees": [ + 21 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n21", + "degree": 21, + "status": "ok", + "median_nanos": 287206, + "min_nanos": 188579, + "max_nanos": 316459, + "factor_count": 1, + "factor_degrees": [ + 21 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n21", + "degree": 21, + "status": "ok", + "median_nanos": 295327, + "min_nanos": 281918, + "max_nanos": 500182, + "factor_count": 1, + "factor_degrees": [ + 21 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n21", + "degree": 21, + "status": "ok", + "median_nanos": 272474, + "min_nanos": 256500, + "max_nanos": 411260, + "factor_count": 1, + "factor_degrees": [ + 21 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n22", + "degree": 22, + "status": "ok", + "median_nanos": 480001, + "min_nanos": 459732, + "max_nanos": 514192, + "factor_count": 1, + "factor_degrees": [ + 22 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n22", + "degree": 22, + "status": "ok", + "median_nanos": 210192, + "min_nanos": 205535, + "max_nanos": 219826, + "factor_count": 1, + "factor_degrees": [ + 22 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n22", + "degree": 22, + "status": "ok", + "median_nanos": 387955, + "min_nanos": 368968, + "max_nanos": 454273, + "factor_count": 1, + "factor_degrees": [ + 22 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n22", + "degree": 22, + "status": "ok", + "median_nanos": 439702, + "min_nanos": 417689, + "max_nanos": 459481, + "factor_count": 1, + "factor_degrees": [ + 22 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n23", + "degree": 23, + "status": "ok", + "median_nanos": 472261, + "min_nanos": 448195, + "max_nanos": 528784, + "factor_count": 1, + "factor_degrees": [ + 23 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n23", + "degree": 23, + "status": "ok", + "median_nanos": 174078, + "min_nanos": 171374, + "max_nanos": 180999, + "factor_count": 1, + "factor_degrees": [ + 23 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n23", + "degree": 23, + "status": "ok", + "median_nanos": 200878, + "min_nanos": 196562, + "max_nanos": 204644, + "factor_count": 1, + "factor_degrees": [ + 23 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n23", + "degree": 23, + "status": "ok", + "median_nanos": 287516, + "min_nanos": 283520, + "max_nanos": 313545, + "factor_count": 1, + "factor_degrees": [ + 23 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n24", + "degree": 24, + "status": "ok", + "median_nanos": 375146, + "min_nanos": 368306, + "max_nanos": 404089, + "factor_count": 1, + "factor_degrees": [ + 24 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n24", + "degree": 24, + "status": "ok", + "median_nanos": 229060, + "min_nanos": 228579, + "max_nanos": 236751, + "factor_count": 1, + "factor_degrees": [ + 24 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n24", + "degree": 24, + "status": "ok", + "median_nanos": 466311, + "min_nanos": 449787, + "max_nanos": 509005, + "factor_count": 1, + "factor_degrees": [ + 24 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n24", + "degree": 24, + "status": "ok", + "median_nanos": 439963, + "min_nanos": 431189, + "max_nanos": 475886, + "factor_count": 1, + "factor_degrees": [ + 24 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n25", + "degree": 25, + "status": "ok", + "median_nanos": 590365, + "min_nanos": 565999, + "max_nanos": 622333, + "factor_count": 1, + "factor_degrees": [ + 25 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n25", + "degree": 25, + "status": "ok", + "median_nanos": 216251, + "min_nanos": 214898, + "max_nanos": 224383, + "factor_count": 1, + "factor_degrees": [ + 25 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n25", + "degree": 25, + "status": "ok", + "median_nanos": 507593, + "min_nanos": 480882, + "max_nanos": 544387, + "factor_count": 1, + "factor_degrees": [ + 25 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n25", + "degree": 25, + "status": "ok", + "median_nanos": 439872, + "min_nanos": 425881, + "max_nanos": 472891, + "factor_count": 1, + "factor_degrees": [ + 25 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n26", + "degree": 26, + "status": "ok", + "median_nanos": 494072, + "min_nanos": 478169, + "max_nanos": 529055, + "factor_count": 1, + "factor_degrees": [ + 26 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n26", + "degree": 26, + "status": "ok", + "median_nanos": 270942, + "min_nanos": 268779, + "max_nanos": 276961, + "factor_count": 1, + "factor_degrees": [ + 26 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n26", + "degree": 26, + "status": "ok", + "median_nanos": 488914, + "min_nanos": 479080, + "max_nanos": 533792, + "factor_count": 1, + "factor_degrees": [ + 26 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n26", + "degree": 26, + "status": "ok", + "median_nanos": 524969, + "min_nanos": 502865, + "max_nanos": 560912, + "factor_count": 1, + "factor_degrees": [ + 26 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n27", + "degree": 27, + "status": "ok", + "median_nanos": 539199, + "min_nanos": 528393, + "max_nanos": 583115, + "factor_count": 1, + "factor_degrees": [ + 27 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n27", + "degree": 27, + "status": "ok", + "median_nanos": 206226, + "min_nanos": 205535, + "max_nanos": 214548, + "factor_count": 1, + "factor_degrees": [ + 27 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n27", + "degree": 27, + "status": "ok", + "median_nanos": 349779, + "min_nanos": 348657, + "max_nanos": 355878, + "factor_count": 1, + "factor_degrees": [ + 27 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n27", + "degree": 27, + "status": "ok", + "median_nanos": 587100, + "min_nanos": 559420, + "max_nanos": 626639, + "factor_count": 1, + "factor_degrees": [ + 27 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n28", + "degree": 28, + "status": "ok", + "median_nanos": 280666, + "min_nanos": 275879, + "max_nanos": 286414, + "factor_count": 1, + "factor_degrees": [ + 28 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n28", + "degree": 28, + "status": "ok", + "median_nanos": 300255, + "min_nanos": 299604, + "max_nanos": 304672, + "factor_count": 1, + "factor_degrees": [ + 28 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n28", + "degree": 28, + "status": "ok", + "median_nanos": 835319, + "min_nanos": 821127, + "max_nanos": 864301, + "factor_count": 1, + "factor_degrees": [ + 28 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n28", + "degree": 28, + "status": "ok", + "median_nanos": 658476, + "min_nanos": 639759, + "max_nanos": 708811, + "factor_count": 1, + "factor_degrees": [ + 28 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n29", + "degree": 29, + "status": "ok", + "median_nanos": 377970, + "min_nanos": 375487, + "max_nanos": 408746, + "factor_count": 1, + "factor_degrees": [ + 29 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n29", + "degree": 29, + "status": "ok", + "median_nanos": 230732, + "min_nanos": 227978, + "max_nanos": 232925, + "factor_count": 1, + "factor_degrees": [ + 29 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n29", + "degree": 29, + "status": "ok", + "median_nanos": 316910, + "min_nanos": 315838, + "max_nanos": 320725, + "factor_count": 1, + "factor_degrees": [ + 29 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n29", + "degree": 29, + "status": "ok", + "median_nanos": 345833, + "min_nanos": 328627, + "max_nanos": 394635, + "factor_count": 1, + "factor_degrees": [ + 29 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n30", + "degree": 30, + "status": "ok", + "median_nanos": 694620, + "min_nanos": 683403, + "max_nanos": 714490, + "factor_count": 1, + "factor_degrees": [ + 30 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n30", + "degree": 30, + "status": "ok", + "median_nanos": 362578, + "min_nanos": 358071, + "max_nanos": 365631, + "factor_count": 1, + "factor_degrees": [ + 30 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n30", + "degree": 30, + "status": "ok", + "median_nanos": 891261, + "min_nanos": 871422, + "max_nanos": 918091, + "factor_count": 1, + "factor_degrees": [ + 30 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n30", + "degree": 30, + "status": "ok", + "median_nanos": 938722, + "min_nanos": 933764, + "max_nanos": 960684, + "factor_count": 1, + "factor_degrees": [ + 30 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n31", + "degree": 31, + "status": "ok", + "median_nanos": 734159, + "min_nanos": 727398, + "max_nanos": 766897, + "factor_count": 1, + "factor_degrees": [ + 31 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n31", + "degree": 31, + "status": "ok", + "median_nanos": 270621, + "min_nanos": 269309, + "max_nanos": 275879, + "factor_count": 1, + "factor_degrees": [ + 31 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n31", + "degree": 31, + "status": "ok", + "median_nanos": 295428, + "min_nanos": 292544, + "max_nanos": 303149, + "factor_count": 1, + "factor_degrees": [ + 31 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n31", + "degree": 31, + "status": "ok", + "median_nanos": 673469, + "min_nanos": 655933, + "max_nanos": 691605, + "factor_count": 1, + "factor_degrees": [ + 31 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n32", + "degree": 32, + "status": "ok", + "median_nanos": 590696, + "min_nanos": 563055, + "max_nanos": 631756, + "factor_count": 1, + "factor_degrees": [ + 32 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n32", + "degree": 32, + "status": "ok", + "median_nanos": 353905, + "min_nanos": 350169, + "max_nanos": 355127, + "factor_count": 1, + "factor_degrees": [ + 32 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n33", + "degree": 33, + "status": "ok", + "median_nanos": 1131167, + "min_nanos": 1123226, + "max_nanos": 1161963, + "factor_count": 1, + "factor_degrees": [ + 33 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n33", + "degree": 33, + "status": "ok", + "median_nanos": 369988, + "min_nanos": 365982, + "max_nanos": 370529, + "factor_count": 1, + "factor_degrees": [ + 33 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n33", + "degree": 33, + "status": "ok", + "median_nanos": 508565, + "min_nanos": 503757, + "max_nanos": 510687, + "factor_count": 1, + "factor_degrees": [ + 33 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n34", + "degree": 34, + "status": "ok", + "median_nanos": 877632, + "min_nanos": 849059, + "max_nanos": 906875, + "factor_count": 1, + "factor_degrees": [ + 34 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n34", + "degree": 34, + "status": "ok", + "median_nanos": 432472, + "min_nanos": 429106, + "max_nanos": 438440, + "factor_count": 1, + "factor_degrees": [ + 34 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n35", + "degree": 35, + "status": "ok", + "median_nanos": 945352, + "min_nanos": 932783, + "max_nanos": 968336, + "factor_count": 1, + "factor_degrees": [ + 35 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n35", + "degree": 35, + "status": "ok", + "median_nanos": 386944, + "min_nanos": 384660, + "max_nanos": 392832, + "factor_count": 1, + "factor_degrees": [ + 35 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n35", + "degree": 35, + "status": "ok", + "median_nanos": 533581, + "min_nanos": 531208, + "max_nanos": 536826, + "factor_count": 1, + "factor_degrees": [ + 35 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n35", + "degree": 35, + "status": "ok", + "median_nanos": 1458974, + "min_nanos": 1433015, + "max_nanos": 1491471, + "factor_count": 1, + "factor_degrees": [ + 35 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n36", + "degree": 36, + "status": "ok", + "median_nanos": 940966, + "min_nanos": 923129, + "max_nanos": 963780, + "factor_count": 1, + "factor_degrees": [ + 36 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n36", + "degree": 36, + "status": "ok", + "median_nanos": 492179, + "min_nanos": 486752, + "max_nanos": 515674, + "factor_count": 1, + "factor_degrees": [ + 36 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n36", + "degree": 36, + "status": "ok", + "median_nanos": 988345, + "min_nanos": 964209, + "max_nanos": 1002076, + "factor_count": 1, + "factor_degrees": [ + 36 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n36", + "degree": 36, + "status": "ok", + "median_nanos": 1350462, + "min_nanos": 1335571, + "max_nanos": 1364663, + "factor_count": 1, + "factor_degrees": [ + 36 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n37", + "degree": 37, + "status": "ok", + "median_nanos": 1246519, + "min_nanos": 1244335, + "max_nanos": 1272096, + "factor_count": 1, + "factor_degrees": [ + 37 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n37", + "degree": 37, + "status": "ok", + "median_nanos": 376909, + "min_nanos": 366353, + "max_nanos": 382897, + "factor_count": 1, + "factor_degrees": [ + 37 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n37", + "degree": 37, + "status": "ok", + "median_nanos": 429957, + "min_nanos": 427264, + "max_nanos": 437498, + "factor_count": 1, + "factor_degrees": [ + 37 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p7_n37", + "degree": 37, + "status": "ok", + "median_nanos": 913114, + "min_nanos": 908607, + "max_nanos": 949969, + "factor_count": 1, + "factor_degrees": [ + 37 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n38", + "degree": 38, + "status": "ok", + "median_nanos": 1564891, + "min_nanos": 1561555, + "max_nanos": 1579662, + "factor_count": 1, + "factor_degrees": [ + 38 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n38", + "degree": 38, + "status": "ok", + "median_nanos": 530237, + "min_nanos": 528563, + "max_nanos": 539210, + "factor_count": 1, + "factor_degrees": [ + 38 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n39", + "degree": 39, + "status": "ok", + "median_nanos": 499651, + "min_nanos": 498830, + "max_nanos": 503546, + "factor_count": 1, + "factor_degrees": [ + 39 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n39", + "degree": 39, + "status": "ok", + "median_nanos": 474925, + "min_nanos": 470928, + "max_nanos": 486691, + "factor_count": 1, + "factor_degrees": [ + 39 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p5_n39", + "degree": 39, + "status": "ok", + "median_nanos": 1223594, + "min_nanos": 1220009, + "max_nanos": 1249372, + "factor_count": 1, + "factor_degrees": [ + 39 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p2_n40", + "degree": 40, + "status": "ok", + "median_nanos": 1333758, + "min_nanos": 1315961, + "max_nanos": 1560494, + "factor_count": 1, + "factor_degrees": [ + 40 + ] + }, + { + "system": "hex-factor", + "family": "conway", + "name": "conway_p3_n40", + "degree": 40, + "status": "ok", + "median_nanos": 569265, + "min_nanos": 567441, + "max_nanos": 574572, + "factor_count": 1, + "factor_degrees": [ + 40 + ] + }, + { + "system": "hex-factor", + "family": "certificate-boundary", + "name": "quartic_a4", + "degree": 4, + "status": "ok", + "median_nanos": 50264, + "min_nanos": 49123, + "max_nanos": 61952, + "factor_count": 1, + "factor_degrees": [ + 4 + ] + } + ], + "cross_check": { + "mismatches": [], + "ok": true + } +} diff --git a/reports/bench-results/hexgraphiso-cactus-f8c9bd340878-chungus2.jsonl b/reports/bench-results/hexgraphiso-cactus-f8c9bd340878-chungus2.jsonl new file mode 100644 index 0000000000..16415709a5 --- /dev/null +++ b/reports/bench-results/hexgraphiso-cactus-f8c9bd340878-chungus2.jsonl @@ -0,0 +1,98 @@ +{"family": "circulant-12", "name": "circulant8-1-2", "n": 8, "fast_ns": 22634, "nauty_ns": 1162, "nodes": 6} +{"family": "circulant-12", "name": "circulant12-1-2", "n": 12, "fast_ns": 35603, "nauty_ns": 1573, "nodes": 6} +{"family": "circulant-12", "name": "circulant16-1-2", "n": 16, "fast_ns": 51716, "nauty_ns": 2233, "nodes": 6} +{"family": "circulant-12", "name": "circulant20-1-2", "n": 20, "fast_ns": 70555, "nauty_ns": 3034, "nodes": 6} +{"family": "circulant-12", "name": "circulant24-1-2", "n": 24, "fast_ns": 91075, "nauty_ns": 3976, "nodes": 6} +{"family": "circulant-12", "name": "circulant28-1-2", "n": 28, "fast_ns": 114851, "nauty_ns": 4718, "nodes": 6} +{"family": "circulant-12", "name": "circulant32-1-2", "n": 32, "fast_ns": 141099, "nauty_ns": 5708, "nodes": 6} +{"family": "circulant-12", "name": "circulant40-1-2", "n": 40, "fast_ns": 202009, "nauty_ns": 8172, "nodes": 6} +{"family": "circulant-12", "name": "circulant48-1-2", "n": 48, "fast_ns": 272414, "nauty_ns": 11357, "nodes": 6} +{"family": "circulant-12", "name": "circulant56-1-2", "n": 56, "fast_ns": 353924, "nauty_ns": 14952, "nodes": 6} +{"family": "circulant-12", "name": "circulant64-1-2", "n": 64, "fast_ns": 491339, "nauty_ns": 19409, "nodes": 6} +{"family": "circulant-12", "name": "circulant96-1-2", "n": 96, "fast_ns": 1005531, "nauty_ns": 52838, "nodes": 6} +{"family": "circulant-12", "name": "circulant128-1-2", "n": 128, "fast_ns": 1847009, "nauty_ns": 89182, "nodes": 6} +{"family": "circulant-12", "name": "circulant160-1-2", "n": 160, "fast_ns": 2816205, "nauty_ns": 144244, "nodes": 6} +{"family": "circulant-12", "name": "circulant192-1-2", "n": 192, "fast_ns": 4261568, "nauty_ns": 195660, "nodes": 6} +{"family": "circulant-12", "name": "circulant224-1-2", "n": 224, "fast_ns": 5709666, "nauty_ns": 265203, "nodes": 6} +{"family": "circulant-12", "name": "circulant255-1-2", "n": 255, "fast_ns": 7906934, "nauty_ns": 341066, "nodes": 6} +{"family": "circulant-1248", "name": "circulant17-1-2-4-8", "n": 17, "fast_ns": 60520, "nauty_ns": 2594, "nodes": 6} +{"family": "circulant-1248", "name": "circulant25-1-2-4-8", "n": 25, "fast_ns": 108230, "nauty_ns": 4307, "nodes": 6} +{"family": "circulant-1248", "name": "circulant33-1-2-4-8", "n": 33, "fast_ns": 166757, "nauty_ns": 6309, "nodes": 6} +{"family": "circulant-1248", "name": "circulant41-1-2-4-8", "n": 41, "fast_ns": 233456, "nauty_ns": 9003, "nodes": 6} +{"family": "circulant-1248", "name": "circulant49-1-2-4-8", "n": 49, "fast_ns": 315928, "nauty_ns": 12689, "nodes": 6} +{"family": "circulant-1248", "name": "circulant57-1-2-4-8", "n": 57, "fast_ns": 407084, "nauty_ns": 15973, "nodes": 6} +{"family": "circulant-1248", "name": "circulant65-1-2-4-8", "n": 65, "fast_ns": 545188, "nauty_ns": 25478, "nodes": 6} +{"family": "circulant-1248", "name": "circulant97-1-2-4-8", "n": 97, "fast_ns": 1073652, "nauty_ns": 50625, "nodes": 6} +{"family": "circulant-1248", "name": "circulant129-1-2-4-8", "n": 129, "fast_ns": 1945285, "nauty_ns": 95482, "nodes": 6} +{"family": "circulant-1248", "name": "circulant161-1-2-4-8", "n": 161, "fast_ns": 2909484, "nauty_ns": 139517, "nodes": 6} +{"family": "circulant-1248", "name": "circulant193-1-2-4-8", "n": 193, "fast_ns": 4397110, "nauty_ns": 196791, "nodes": 6} +{"family": "circulant-1248", "name": "circulant225-1-2-4-8", "n": 225, "fast_ns": 5899698, "nauty_ns": 255128, "nodes": 6} +{"family": "grid", "name": "grid3x3", "n": 9, "fast_ns": 23255, "nauty_ns": 1121, "nodes": 6} +{"family": "grid", "name": "grid4x4", "n": 16, "fast_ns": 39859, "nauty_ns": 1703, "nodes": 4} +{"family": "grid", "name": "grid5x5", "n": 25, "fast_ns": 75783, "nauty_ns": 3125, "nodes": 4} +{"family": "grid", "name": "grid6x6", "n": 36, "fast_ns": 128110, "nauty_ns": 5127, "nodes": 4} +{"family": "grid", "name": "grid7x7", "n": 49, "fast_ns": 203372, "nauty_ns": 7651, "nodes": 4} +{"family": "grid", "name": "grid8x8", "n": 64, "fast_ns": 349087, "nauty_ns": 13981, "nodes": 4} +{"family": "grid", "name": "grid10x10", "n": 100, "fast_ns": 694169, "nauty_ns": 29113, "nodes": 4} +{"family": "grid", "name": "grid12x12", "n": 144, "fast_ns": 1442448, "nauty_ns": 67139, "nodes": 4} +{"family": "grid", "name": "grid14x14", "n": 196, "fast_ns": 2509291, "nauty_ns": 110914, "nodes": 4} +{"family": "grid", "name": "grid15x15", "n": 225, "fast_ns": 3355255, "nauty_ns": 147249, "nodes": 4} +{"family": "hypercube", "name": "q3", "n": 8, "fast_ns": 27120, "nauty_ns": 1342, "nodes": 10} +{"family": "hypercube", "name": "q4", "n": 16, "fast_ns": 70975, "nauty_ns": 3095, "nodes": 11} +{"family": "hypercube", "name": "q5", "n": 32, "fast_ns": 222931, "nauty_ns": 9014, "nodes": 17} +{"family": "hypercube", "name": "q6", "n": 64, "fast_ns": 823180, "nauty_ns": 31937, "nodes": 24} +{"family": "hypercube", "name": "q7", "n": 128, "fast_ns": 3248888, "nauty_ns": 164994, "nodes": 25} +{"family": "kneser", "name": "kneser5-2", "n": 10, "fast_ns": 39608, "nauty_ns": 1812, "nodes": 11} +{"family": "johnson", "name": "johnson5-2", "n": 10, "fast_ns": 44175, "nauty_ns": 1913, "nodes": 12} +{"family": "kneser", "name": "kneser6-2", "n": 15, "fast_ns": 83944, "nauty_ns": 3365, "nodes": 17} +{"family": "johnson", "name": "johnson6-2", "n": 15, "fast_ns": 90114, "nauty_ns": 3806, "nodes": 18} +{"family": "kneser", "name": "kneser7-2", "n": 21, "fast_ns": 152286, "nauty_ns": 6009, "nodes": 18} +{"family": "johnson", "name": "johnson7-2", "n": 21, "fast_ns": 163653, "nauty_ns": 6670, "nodes": 25} +{"family": "kneser", "name": "kneser8-2", "n": 28, "fast_ns": 284832, "nauty_ns": 11818, "nodes": 26} +{"family": "johnson", "name": "johnson8-2", "n": 28, "fast_ns": 273906, "nauty_ns": 10957, "nodes": 33} +{"family": "kneser", "name": "kneser9-2", "n": 36, "fast_ns": 470547, "nauty_ns": 19850, "nodes": 35} +{"family": "johnson", "name": "johnson9-2", "n": 36, "fast_ns": 435466, "nauty_ns": 17826, "nodes": 42} +{"family": "kneser", "name": "kneser12-2", "n": 66, "fast_ns": 1847038, "nauty_ns": 106328, "nodes": 59} +{"family": "johnson", "name": "johnson12-2", "n": 66, "fast_ns": 1466544, "nauty_ns": 73199, "nodes": 75} +{"family": "kneser", "name": "kneser15-2", "n": 105, "fast_ns": 5379336, "nauty_ns": 340795, "nodes": 89} +{"family": "johnson", "name": "johnson15-2", "n": 105, "fast_ns": 3667098, "nauty_ns": 196832, "nodes": 117} +{"family": "kneser", "name": "kneser17-2", "n": 136, "fast_ns": 10241135, "nauty_ns": 685867, "nodes": 107} +{"family": "johnson", "name": "johnson17-2", "n": 136, "fast_ns": 6394231, "nauty_ns": 375877, "nodes": 150} +{"family": "kneser", "name": "kneser20-2", "n": 190, "fast_ns": 23542216, "nauty_ns": 1603228, "nodes": 146} +{"family": "johnson", "name": "johnson20-2", "n": 190, "fast_ns": 13252660, "nauty_ns": 830541, "nodes": 207} +{"family": "kneser", "name": "kneser22-2", "n": 231, "fast_ns": 37992512, "nauty_ns": 2656789, "nodes": 168} +{"family": "johnson", "name": "johnson22-2", "n": 231, "fast_ns": 20189095, "nauty_ns": 1297634, "nodes": 250} +{"family": "paley", "name": "paley13", "n": 13, "fast_ns": 46869, "nauty_ns": 2033, "nodes": 7} +{"family": "paley", "name": "paley17", "n": 17, "fast_ns": 60700, "nauty_ns": 2564, "nodes": 6} +{"family": "paley", "name": "paley29", "n": 29, "fast_ns": 124144, "nauty_ns": 4466, "nodes": 6} +{"family": "paley", "name": "paley37", "n": 37, "fast_ns": 192245, "nauty_ns": 6770, "nodes": 6} +{"family": "paley", "name": "paley41", "n": 41, "fast_ns": 232595, "nauty_ns": 8232, "nodes": 6} +{"family": "paley", "name": "paley53", "n": 53, "fast_ns": 339153, "nauty_ns": 11187, "nodes": 6} +{"family": "paley", "name": "paley61", "n": 61, "fast_ns": 503106, "nauty_ns": 17716, "nodes": 7} +{"family": "paley", "name": "paley73", "n": 73, "fast_ns": 773116, "nauty_ns": 34701, "nodes": 7} +{"family": "paley", "name": "paley89", "n": 89, "fast_ns": 1092150, "nauty_ns": 48913, "nodes": 7} +{"family": "paley", "name": "paley113", "n": 113, "fast_ns": 1691538, "nauty_ns": 75973, "nodes": 7} +{"family": "paley", "name": "paley149", "n": 149, "fast_ns": 2458926, "nauty_ns": 96923, "nodes": 6} +{"family": "paley", "name": "paley181", "n": 181, "fast_ns": 3835707, "nauty_ns": 165835, "nodes": 7} +{"family": "paley", "name": "paley229", "n": 229, "fast_ns": 6077981, "nauty_ns": 329038, "nodes": 7} +{"family": "latin", "name": "latin5", "n": 25, "fast_ns": 179726, "nauty_ns": 7932, "nodes": 12} +{"family": "latin", "name": "latin9", "n": 81, "fast_ns": 1646551, "nauty_ns": 83594, "nodes": 17} +{"family": "latin", "name": "latin13", "n": 169, "fast_ns": 6147585, "nauty_ns": 385642, "nodes": 12} +{"family": "random", "name": "gnp10-seed1", "n": 10, "fast_ns": 13891, "nauty_ns": 611, "nodes": 1} +{"family": "random", "name": "gnp14-seed1", "n": 14, "fast_ns": 22383, "nauty_ns": 862, "nodes": 1} +{"family": "random", "name": "gnp18-seed1", "n": 18, "fast_ns": 35973, "nauty_ns": 1272, "nodes": 1} +{"family": "random", "name": "gnp22-seed1", "n": 22, "fast_ns": 49744, "nauty_ns": 1522, "nodes": 1} +{"family": "random", "name": "gnp26-seed1", "n": 26, "fast_ns": 67570, "nauty_ns": 1933, "nodes": 1} +{"family": "random", "name": "gnp30-seed1", "n": 30, "fast_ns": 88341, "nauty_ns": 2353, "nodes": 1} +{"family": "random", "name": "gnp36-seed1", "n": 36, "fast_ns": 118416, "nauty_ns": 3054, "nodes": 1} +{"family": "random", "name": "gnp42-seed1", "n": 42, "fast_ns": 156963, "nauty_ns": 3866, "nodes": 1} +{"family": "random", "name": "gnp48-seed1", "n": 48, "fast_ns": 203452, "nauty_ns": 4987, "nodes": 1} +{"family": "random", "name": "gnp56-seed1", "n": 56, "fast_ns": 276890, "nauty_ns": 6690, "nodes": 1} +{"family": "random", "name": "gnp64-seed1", "n": 64, "fast_ns": 368556, "nauty_ns": 8453, "nodes": 1} +{"family": "random", "name": "gnp80-seed1", "n": 80, "fast_ns": 555474, "nauty_ns": 13711, "nodes": 1} +{"family": "random", "name": "gnp96-seed1", "n": 96, "fast_ns": 778104, "nauty_ns": 19479, "nodes": 1} +{"family": "random", "name": "gnp128-seed1", "n": 128, "fast_ns": 1375700, "nauty_ns": 35362, "nodes": 1} +{"family": "random", "name": "gnp160-seed1", "n": 160, "fast_ns": 2144640, "nauty_ns": 70585, "nodes": 1} +{"family": "random", "name": "gnp192-seed1", "n": 192, "fast_ns": 3086407, "nauty_ns": 159206, "nodes": 1} +{"family": "random", "name": "gnp224-seed1", "n": 224, "fast_ns": 4198826, "nauty_ns": 242960, "nodes": 1} +{"family": "random", "name": "gnp255-seed1", "n": 255, "fast_ns": 5466024, "nauty_ns": 327186, "nodes": 1} diff --git a/reports/bench-results/hexgraphiso-cactus-f8c9bd340878-chungus2.meta.json b/reports/bench-results/hexgraphiso-cactus-f8c9bd340878-chungus2.meta.json new file mode 100644 index 0000000000..89ab0bf145 --- /dev/null +++ b/reports/bench-results/hexgraphiso-cactus-f8c9bd340878-chungus2.meta.json @@ -0,0 +1,7 @@ +{ + "fingerprint": "f8c9bd340878", + "host": "chungus2", + "date": "2026-09-15T04:37:50Z", + "describe": "e3892faf10ee", + "label": "Lean v4.34.0; CPU 7" +} diff --git a/reports/bench-results/hexgraphiso-cactus-f8c9bd340878.manifest b/reports/bench-results/hexgraphiso-cactus-f8c9bd340878.manifest new file mode 100644 index 0000000000..daafdd2752 --- /dev/null +++ b/reports/bench-results/hexgraphiso-cactus-f8c9bd340878.manifest @@ -0,0 +1,892 @@ +100644 b3933da429eee62caf86122fa2b91646e3b65764 0 Hex/BenchOracle/Nauty.lean +100644 0c50a44e5301d87fa8306dc023c1b0009fe8899b 0 Hex/BenchOracle/ffi/nauty_canon.c +100644 012a6a9a3327bb3930f7d6d3a31b88e1e472a29f 0 HexGraph.lean +100644 f8aa806d8376f6565fe4036d62f102f2c8557d29 0 HexGraph/Basic.lean +100644 505b2b28f385c24c3411e4a70d215665fddf018f 0 HexGraph/Sparse.lean +100644 34fcea3e79b7b31afef345e9f312f5f4cdccb7ee 0 HexGraph/Sparse/Build.lean +100644 9bc1946d7eb09a16d06e9afa466f4445ef543f61 0 HexGraph/Sparse/Normalize.lean +100644 5a586b94e870c3e60230642227177cc9af331368 0 HexGraph/Sparse/Pack.lean +100644 4868ec90322ca68c18a55f20019abdc7ba6feeb0 0 HexGraph/Sparse/Relabel.lean +100644 2a4ba284804ce0c5c4e7f4ddba2d57d76b7a8194 0 HexGraphIso.lean +100644 8827befc69ff1f5744f827877e68bc170343e7bf 0 HexGraphIso/AutComplete.lean +100644 d79f198db4d9c2fc9b0d73df6947708eb3d36636 0 HexGraphIso/AutGroup.lean +100644 5bb6c871b07fa98c28002861ec148294800afc82 0 HexGraphIso/AutIndiv.lean +100644 c7ac840da3f314bec506414e64c9e63599e94642 0 HexGraphIso/AutTrace.lean +100644 5fb305a8d0617a72f5c8acf7a9119913e5b55f92 0 HexGraphIso/Autom.lean +100644 7024f808bbf1f6c62cfe073e196968e8f39e45ce 0 HexGraphIso/Autos.lean +100644 1d81a46ad83b63b794efca3374c0ca3ba15fc970 0 HexGraphIso/Colored.lean +100644 39fbb07e6c90d91a7823f5172ed510e9f3fdd4d3 0 HexGraphIso/Families.lean +100644 91b9bb8ea206376eb893a743eb63b9b0e456ff77 0 HexGraphIso/Generated.lean +100644 b6f337ceb5daf8e02f579a4540dc867b78e49310 0 HexGraphIso/Iso.lean +100644 ea76a15651593d99490532b68e78c655cfb8540e 0 HexGraphIso/Kernel/CheckKey.lean +100644 8431bf67391e9c37a83fcd403a0deebc23424882 0 HexGraphIso/Kernel/IsoLit.lean +100644 2b96eab33298a0e7eba790afe9f37261e4ae629f 0 HexGraphIso/Kernel/Packed.lean +100644 46194b311f06e97cfa8a7318bb01fbfc0c8cd326 0 HexGraphIso/Kernel/RootCode.lean +100644 7fd95cce2fab1ed84027c382f1231a9a02c8963c 0 HexGraphIso/LabelArray.lean +100644 788c1606310344d819a38f7bf301f3d23497f182 0 HexGraphIso/Nauty/Cert/CanonForm.lean +100644 b0d1e615d0cf6313dd6c89ed11886be82aec9190 0 HexGraphIso/Nauty/Cert/Cert.lean +100644 e70beebb5c1b2fb5dbfa94a44a7951b28775d318 0 HexGraphIso/Nauty/Cert/CertAutom.lean +100644 afb04590820bf49dfe86fd3e3943641328aa3c4c 0 HexGraphIso/Nauty/Cert/CertReplay.lean +100644 7257b46de391f19b4357aeeca06fd93304e63eac 0 HexGraphIso/Nauty/Cert/CertStore.lean +100644 de9b9cbd4040731fef0784f9214ca602fcb3fa51 0 HexGraphIso/Nauty/Cert/CertTotal.lean +100644 3e6f0a1ace0b98af5a0c2d650dc7fc81856dc6d7 0 HexGraphIso/Nauty/Cert/Certify.lean +100644 1d359502c33a5fc3750d7ba48cb5ef38c089e6d9 0 HexGraphIso/Nauty/Cert/Translator.lean +100644 217f2d5e6b6b3b23d7fdcdf8dc55683eb0f20cec 0 HexGraphIso/Nauty/Equitable/Basic.lean +100644 651fd69ded58b42fce70d762b2f6b8ab44ef5c1f 0 HexGraphIso/Nauty/Equitable/Cells.lean +100644 8c5b90f7b4ea9cbf9a0c2cdbd62639f71ca3f966 0 HexGraphIso/Nauty/Equitable/Count.lean +100644 2d20ec8b94c1ed0c078013e47cfa789b2993a0ec 0 HexGraphIso/Nauty/Equitable/Fix.lean +100644 bbc29578c80166e367543890f9a68f61771d35bc 0 HexGraphIso/Nauty/Equitable/Individualize.lean +100644 4701fcd2ab70fbf2a0f0738d9bb3fc0d88f1e082 0 HexGraphIso/Nauty/Equitable/Root.lean +100644 e2d2b724668778befd7c914800457fcaf5dacc5a 0 HexGraphIso/Nauty/Equitable/Step.lean +100644 8dfc98cbb12c343a2cb350cd8470e5e358ee5805 0 HexGraphIso/Nauty/Generation/Canon.lean +100644 966a1ff9ac8610dd818418523c5bf192dc426464 0 HexGraphIso/Nauty/Generation/Cheap.lean +100644 9fd2479403ed4abf714eee3d364e69efa9f501af 0 HexGraphIso/Nauty/Generation/Counted.lean +100644 252dd610bc862b10254eb0deff5458ff40aacbaa 0 HexGraphIso/Nauty/Generation/Counter.lean +100644 f4003ae294aa9e3b2af0b415d5bb0003206c0f03 0 HexGraphIso/Nauty/Generation/Coverage.lean +100644 82adbd8aadaab135c6b11356cad19dd7d372c95c 0 HexGraphIso/Nauty/Generation/Frame.lean +100644 f7aabd95365b3d88de51b3daa00a120d7e5b0ac7 0 HexGraphIso/Nauty/Generation/Match.lean +100644 e7286cfa892d6c4cf495f798dd7b457dccfd4084 0 HexGraphIso/Nauty/Generation/Matching.lean +100644 08dbd9e566b3cf3152fd5b06075d0702b96e5ac4 0 HexGraphIso/Nauty/Generation/Orbit.lean +100644 7be3add3e6dd0c9d4dd50cd1711b462862a4edac 0 HexGraphIso/Nauty/Generation/PathCover.lean +100644 8f544971b31095e95f70cab7a9663eb58b9744b2 0 HexGraphIso/Nauty/Generation/RefPath.lean +100644 650721fe942d9919bd68e935e2b84e680a633ea3 0 HexGraphIso/Nauty/Generation/Reference.lean +100644 539d7204e918e1bec15f2eb1b73d55212c2750a9 0 HexGraphIso/Nauty/Generation/Reorder.lean +100644 3044f1098c756705b6f491a8205290a4a2d5524b 0 HexGraphIso/Nauty/Generation/Stabilizer.lean +100644 c209ca6a44ce39412dfdc6d18e30e9bf2f524df4 0 HexGraphIso/Nauty/Generation/Transport.lean +100644 975bdc583240d83f7c76286d75874de65dc55620 0 HexGraphIso/Nauty/Generation/Tree.lean +100644 e5348e1b1619c9c58b0fefe2e5b7127ab925927b 0 HexGraphIso/Nauty/Generation/Uniform.lean +100644 4fb669e3e21f9d11b228d0bb5786ae598130929c 0 HexGraphIso/Nauty/Generation/VisitCover.lean +100644 06b4801fdbec5ba49a15cebeb26accf9418c829e 0 HexGraphIso/Nauty/Invariant/Autos.lean +100644 0e9fe07b781592d6376c6f10e92c1675a3e0158d 0 HexGraphIso/Nauty/Invariant/Carrier.lean +100644 15e0c0d9b117d3bd81b2749ef5dac377acd384ea 0 HexGraphIso/Nauty/Invariant/Cheap.lean +100644 bbe4b44e1caff6795573c462f4a37979b5f03c68 0 HexGraphIso/Nauty/Invariant/Child.lean +100644 670549e72735ff564ed12544b10a0624cf4edb8b 0 HexGraphIso/Nauty/Invariant/Codes.lean +100644 2baa016d6e57a3717c7bc742a08403512d6f747e 0 HexGraphIso/Nauty/Invariant/Coverage.lean +100644 2ea63b5b3370d501cdcaa2e0ccacec8e60646e38 0 HexGraphIso/Nauty/Invariant/Cursor.lean +100644 7b5870bfb2f1aac3fcd1b0dbed0c423de54f2336 0 HexGraphIso/Nauty/Invariant/Domination.lean +100644 3676f07ce9f4c4bbe37cd82343fca74ca3408e06 0 HexGraphIso/Nauty/Invariant/Frame.lean +100644 494aec6796b31313eeaf2b410667296574b0333b 0 HexGraphIso/Nauty/Invariant/Leaves.lean +100644 2a108e68606501265529171c214434d3a8d8e2e8 0 HexGraphIso/Nauty/Invariant/OrbitComplete.lean +100644 7e1056f74f3892828e40e8005263e5a70b250578 0 HexGraphIso/Nauty/Invariant/Orbits.lean +100644 a324a323c5a26a6248c2905e37be7ce1c6d91977 0 HexGraphIso/Nauty/Invariant/PathStab.lean +100644 ed0523c69726048507933ce8d7a721ded0242753 0 HexGraphIso/Nauty/Invariant/Reach.lean +100644 3b76563241ad2a83bea1fe95795420502da59a96 0 HexGraphIso/Nauty/Invariant/Refine.lean +100644 4eafed0a3b390c8e5f80459a9fb9d0b67cc0364b 0 HexGraphIso/Nauty/Invariant/RelCover.lean +100644 6a7d808474ca6174d3d9b5b5e8b80787dac31e03 0 HexGraphIso/Nauty/Invariant/Shape.lean +100644 53a897fe36bdf91975870cd6e41d0b31de2104ac 0 HexGraphIso/Nauty/Invariant/Singleton.lean +100644 848980526c1d6d307fd6867dabb674491ea90516 0 HexGraphIso/Nauty/Invariant/Stabilize.lean +100644 a1788c28f8133755baeee18406e95e3c9e830018 0 HexGraphIso/Nauty/Invariant/Store.lean +100644 321c119cde2fd53794471592c45fd2e2fa596065 0 HexGraphIso/Nauty/Invariant/TargetCell.lean +100644 1b9412026cec46bfd3341fac9d957d1baa9310c0 0 HexGraphIso/Nauty/Invariant/Trace.lean +100644 f96f362cb3e7b5c0df4219f82efabba9b07b4536 0 HexGraphIso/Nauty/Policy/Admission.lean +100644 b3baacce843ec6efcf232209ce636e7de2bfb599 0 HexGraphIso/Nauty/Policy/Alignment.lean +100644 d32cc61bdae15736253a2fd208f6a6906b32cd25 0 HexGraphIso/Nauty/Policy/Boundary.lean +100644 44e98dab8421eed42f2b3c6f23e035807d30b76f 0 HexGraphIso/Nauty/Policy/Bounds.lean +100644 85eaca4b8e537d22e87f6f934fb80afe55b06a7e 0 HexGraphIso/Nauty/Policy/CallState.lean +100644 968d29ec9830017728ba4d494c543799082793c8 0 HexGraphIso/Nauty/Policy/Canon/Calls.lean +100644 ac1e0496f0aa41b73aed01101a08a08542c437a7 0 HexGraphIso/Nauty/Policy/Canon/Frame.lean +100644 026011a10678e0594f433d45402bb3a24d70c348 0 HexGraphIso/Nauty/Policy/Canon/Pair.lean +100644 527860c8c1b73d70d3a26752b6857771059fdbc3 0 HexGraphIso/Nauty/Policy/Canon/Ref.lean +100644 9329838543f55b2e983c6a63253ebf5557e37f15 0 HexGraphIso/Nauty/Policy/Canon/Scatter.lean +100644 b1b681a5467bb6384ec4552bbc037d76352ee9f6 0 HexGraphIso/Nauty/Policy/Canon/Verdict.lean +100644 00524e54adbc2fba154d961566d506088c124197 0 HexGraphIso/Nauty/Policy/Canon/Witness.lean +100644 f4e3a28abc7b0c6340cbddb34766e17d054acf9f 0 HexGraphIso/Nauty/Policy/Cheap/History.lean +100644 614f4683c6fd899655112c8ddc7249b3bb375c59 0 HexGraphIso/Nauty/Policy/Cheap/Key.lean +100644 439c64cc45656104da4e92a7a927506fa6f0f6b5 0 HexGraphIso/Nauty/Policy/Cheap/Shape.lean +100644 c2561e325f1aaf2a65ac059138a6f1244153d816 0 HexGraphIso/Nauty/Policy/ChildFrame.lean +100644 1b70505d404b2a939bf52522c87bdebe97bdff9b 0 HexGraphIso/Nauty/Policy/ChildKey.lean +100644 98946e829d35951aca53c474ad3d4284bfc39c5d 0 HexGraphIso/Nauty/Policy/Choice.lean +100644 d0e621f0e45fcdcd89e586376c3816e84c60205b 0 HexGraphIso/Nauty/Policy/Classify.lean +100644 3d95d8b44a9699a65b41e0f87f84c24c87ce61cc 0 HexGraphIso/Nauty/Policy/CodeCalls.lean +100644 6eb4260d647ae6b59643ceaeeabea4b6e9b8a0f0 0 HexGraphIso/Nauty/Policy/CodeState.lean +100644 1bd7e5b24c476889259003b9fe6a072a503dcdae 0 HexGraphIso/Nauty/Policy/Colors.lean +100644 06f388a7dbdc583fca8aec76fd6118496f39eda6 0 HexGraphIso/Nauty/Policy/Comparison.lean +100644 9b729e1cb94777b5105274814d1943f0f3cb572f 0 HexGraphIso/Nauty/Policy/Complete.lean +100644 5a0a03bc2d3e08917fbc294d1d06ccb8bd465fb3 0 HexGraphIso/Nauty/Policy/Controls.lean +100644 581c0b97a6965f1c91e874aba6e312bc9de67842 0 HexGraphIso/Nauty/Policy/Coset.lean +100644 295185fb5ff0ddb7482995bc43b4b9c22939158e 0 HexGraphIso/Nauty/Policy/Depth.lean +100644 bda100c646a1be10b3e09820d7776f5710e3a344 0 HexGraphIso/Nauty/Policy/Descent.lean +100644 a5cc09862794e66ead09295fed2327458a2f546d 0 HexGraphIso/Nauty/Policy/EarlyReturn.lean +100644 a4d55d0ee99f85456a59334ded277eb9cbcda729 0 HexGraphIso/Nauty/Policy/Effect.lean +100644 eefd5261495b6791191c2d878a09ec634f19a739 0 HexGraphIso/Nauty/Policy/Equitable.lean +100644 1c42c3f2f1598c05b9ee8ec2a9724f47ed4773bc 0 HexGraphIso/Nauty/Policy/EquitableState.lean +100644 55a2b816d31ec5d225817c05dc273e6f1aa9b11d 0 HexGraphIso/Nauty/Policy/FilterCover.lean +100644 0fe8b763018dca91a0d24d9a4a36e834227dd9b2 0 HexGraphIso/Nauty/Policy/FilterPair.lean +100644 f7ed6dc9064989ef649cce41d7e47ea9c91bd5a5 0 HexGraphIso/Nauty/Policy/Filters.lean +100644 d51d6083bd8fb40f317df89090a1df868c7e0037 0 HexGraphIso/Nauty/Policy/First/Boundary.lean +100644 f5eb87f4e8eead0ecf90738cec1a00acdb76ecbb 0 HexGraphIso/Nauty/Policy/First/Bounds.lean +100644 cba39ce49ac683c6508e2b582660213334417582 0 HexGraphIso/Nauty/Policy/First/Cheap.lean +100644 69eae8ad48f2483be8d4e7d5a61cb6a0508f9661 0 HexGraphIso/Nauty/Policy/First/Compare.lean +100644 7829baa8c976fb8d3884c130bbe88a4f3428e00b 0 HexGraphIso/Nauty/Policy/First/Complete.lean +100644 f6ff3c69eb33df473ad9bb9766362b2944ec9c81 0 HexGraphIso/Nauty/Policy/First/Count.lean +100644 be11dfc063d751135222ef8ea8da74c2e9471e4d 0 HexGraphIso/Nauty/Policy/First/Entry.lean +100644 92cd3841c92e6ad18060e95af3b8811e218d8a97 0 HexGraphIso/Nauty/Policy/First/History.lean +100644 29205a163d71755a467cc17abca0667e9ff14cfd 0 HexGraphIso/Nauty/Policy/First/Key.lean +100644 7700359d7c4e7de04ec6c7fb54aefb87c78be37f 0 HexGraphIso/Nauty/Policy/First/Path.lean +100644 b8224cad607b6cfcbb23f77428a8df8c3c0f2f14 0 HexGraphIso/Nauty/Policy/First/Ref.lean +100644 f19054787915eb0371ae95b2b1ce32af17604d8b 0 HexGraphIso/Nauty/Policy/First/Return.lean +100644 1febae876d9a51e82163e45b84f0939e23704de6 0 HexGraphIso/Nauty/Policy/First/Root.lean +100644 544ddd617c0549aa926d693354e1b8bb8c3288a7 0 HexGraphIso/Nauty/Policy/First/Run.lean +100644 b5c6078ae7c54d3f0d7bdbd44cb96209e86d7c5b 0 HexGraphIso/Nauty/Policy/First/State.lean +100644 d33b47755fb741bdc32c95c351283cf23b469f11 0 HexGraphIso/Nauty/Policy/First/Tail.lean +100644 882522f03466e075b44d86cc7333ccd8ed0cbef4 0 HexGraphIso/Nauty/Policy/First/Uniform.lean +100644 01852fd8e9ea3512fdc9e03b758f43cdd0d79839 0 HexGraphIso/Nauty/Policy/First/Witness.lean +100644 abc53fe3473a6db8d5fd5a715e31400ef7d9ddf0 0 HexGraphIso/Nauty/Policy/Fixed.lean +100644 677922791a258965bea9abc391dd48fc82a3f3b2 0 HexGraphIso/Nauty/Policy/FixedState.lean +100644 f3bffdb3dba121a444582b77e247fd9ea8b6e52a 0 HexGraphIso/Nauty/Policy/Generated/Complete.lean +100644 24889e55aa3cc2fbbaf584584cddf5a1c73888b7 0 HexGraphIso/Nauty/Policy/Generated/Cover.lean +100644 425f830aca297f7ff4b70a9b2ca7ba016bede24e 0 HexGraphIso/Nauty/Policy/Generated/Head.lean +100644 f992c47de52c434b4dcc0be49cbd27cb388aba5d 0 HexGraphIso/Nauty/Policy/Generated/Receipt.lean +100644 7623fb4b1aa9b562b30b003bc1e02c965c6ff90f 0 HexGraphIso/Nauty/Policy/Generated/Root.lean +100644 7e55a1b4be57fca3f0e3dea13e3bfc98f5e19a2b 0 HexGraphIso/Nauty/Policy/Generated/Tail.lean +100644 063926b66b650f479a87085b3bae1849f28be973 0 HexGraphIso/Nauty/Policy/Generated/Terminal.lean +100644 12c25488e688fcba5efc9d0df05d4a3ab2f23038 0 HexGraphIso/Nauty/Policy/Generated/Trace.lean +100644 71a4db9510ba78884f9d22675e2a454a4744e477 0 HexGraphIso/Nauty/Policy/GenerationRef.lean +100644 74ce7c0238bda50d66282299bf9c9067ddaa7a11 0 HexGraphIso/Nauty/Policy/Generic/Bounded.lean +100644 8b166c09d0bb3e9d4b3882b5ccccd366e175b5f0 0 HexGraphIso/Nauty/Policy/Generic/Calls.lean +100644 396caa0a3430fdb03cf2545816e2771a73a28a61 0 HexGraphIso/Nauty/Policy/Generic/Exhaustive.lean +100644 517260a5bf70aae188d50058ab5d0ede88da1594 0 HexGraphIso/Nauty/Policy/Generic/ExitBound.lean +100644 99a4730e417e55e2b2c0f7967575b58ec8ca68b5 0 HexGraphIso/Nauty/Policy/Generic/FirstBounded.lean +100644 d29e89a4d098d278cf873837a3af034520ff522f 0 HexGraphIso/Nauty/Policy/Generic/Fuel.lean +100644 af86795ffc2c7c3e31e8ce919ff13d5faf72e65f 0 HexGraphIso/Nauty/Policy/Generic/Leftmost.lean +100644 c6f1ffab48b09e9dbbb3d868cf1abd0492c0f63c 0 HexGraphIso/Nauty/Policy/Generic/MaxExit.lean +100644 eca4543bdca8f26bfbcb0571a14570e54c0551ba 0 HexGraphIso/Nauty/Policy/Generic/Maximum.lean +100644 603de07c43c35acd62316241e7a43ce7b4a10055 0 HexGraphIso/Nauty/Policy/Generic/Reach.lean +100644 225e0ae8819d7440e848940d14e264579b35b91b 0 HexGraphIso/Nauty/Policy/Generic/Reference.lean +100644 ce40b4406177d4ebec478eb59c55476c56bba2c8 0 HexGraphIso/Nauty/Policy/Generic/Short.lean +100644 701dc11bcefa8f12931af1499b54f58aaa56ea11 0 HexGraphIso/Nauty/Policy/Generic/Sound.lean +100644 f47bf83cfee188b90aed34a86453b9f41879bee0 0 HexGraphIso/Nauty/Policy/Generic/Stable.lean +100644 df3fcb8577571688dfb42ff1e047c710ded1aec4 0 HexGraphIso/Nauty/Policy/Generic/Trivial.lean +100644 ed5cfe32484f571e0342f658a36eb8b620ce5309 0 HexGraphIso/Nauty/Policy/Guided.lean +100644 e6487978acc9dd6909566cf9da8cf0155ecbc7bc 0 HexGraphIso/Nauty/Policy/History.lean +100644 a989e6e9d0a416b2d986dc918107092e76863631 0 HexGraphIso/Nauty/Policy/HistoryState.lean +100644 5c67c1d85165e555bccf1a7faadcf97681394d76 0 HexGraphIso/Nauty/Policy/Instance.lean +100644 41b95c79b64887a2591ea40b5d12b484e7f5974f 0 HexGraphIso/Nauty/Policy/Invariant.lean +100644 54b0969a772825f883e28fe8864415b517b40f90 0 HexGraphIso/Nauty/Policy/KeyComplete.lean +100644 47a05f1b512d3a5ebd76566593e28765f96ec0e1 0 HexGraphIso/Nauty/Policy/Max/Ancestors.lean +100644 01f4d7802f46de273829ff788315e4e62785743a 0 HexGraphIso/Nauty/Policy/Max/Auto.lean +100644 94ee97bc96ec0b4d4f34045cb55b9645c3f0156e 0 HexGraphIso/Nauty/Policy/Max/Bad.lean +100644 dfa371b89259787886b280326646a441fecfa41c 0 HexGraphIso/Nauty/Policy/Max/Bound.lean +100644 6391d386f225ac7dced334ab89edc9043912d82a 0 HexGraphIso/Nauty/Policy/Max/Boundary.lean +100644 c966ae2a15977b43e885993c8fab5d81b48dd5e8 0 HexGraphIso/Nauty/Policy/Max/Canon.lean +100644 9dfa11cec2b92c49e413c0eb35b022410ce84d4e 0 HexGraphIso/Nauty/Policy/Max/Carry.lean +100644 0b75b13a6089560a050e597e01988711c2c998df 0 HexGraphIso/Nauty/Policy/Max/Cheap.lean +100644 6757c709865aede9c536f72f7be9ca08962f4bf7 0 HexGraphIso/Nauty/Policy/Max/Choice.lean +100644 8dc6f9d40dd9894b2d4990d9de3266e9464fc976 0 HexGraphIso/Nauty/Policy/Max/Codes.lean +100644 19c1f16863692881295dae0f1aec080c82434b6a 0 HexGraphIso/Nauty/Policy/Max/Combine.lean +100644 79af3af956cd8d143abbd3456e2dabde862ff1b0 0 HexGraphIso/Nauty/Policy/Max/Context.lean +100644 83d2dfcac011106222db85c5009891e8bb691dbc 0 HexGraphIso/Nauty/Policy/Max/Contract.lean +100644 548b40a02a78473aaa21e207ede434ebb66032dd 0 HexGraphIso/Nauty/Policy/Max/Control.lean +100644 7a399542fb4e00fcca602a1f3db20524e4277087 0 HexGraphIso/Nauty/Policy/Max/Coset.lean +100644 0b44ec4da5b3912f94fbf896a712aed256ed8c12 0 HexGraphIso/Nauty/Policy/Max/Emit.lean +100644 26a46eb6c648f9510f96cc28cd1143c7eeec9e61 0 HexGraphIso/Nauty/Policy/Max/Entry.lean +100644 0497728b755ecd4bade1c695d2e8306195ee1627 0 HexGraphIso/Nauty/Policy/Max/Finish.lean +100644 6758e14ffefc31e5e08866da8fea15096e08a0b5 0 HexGraphIso/Nauty/Policy/Max/First.lean +100644 8670022184a52942b100ddeda5cd0d605967cf01 0 HexGraphIso/Nauty/Policy/Max/FirstLeaf.lean +100644 2d7fc649ae291e6d4b1987b6fc601005d4530d32 0 HexGraphIso/Nauty/Policy/Max/Frame.lean +100644 02ac1bf5c25800f89274f1cd6f3f9703e4ac2ca7 0 HexGraphIso/Nauty/Policy/Max/Init.lean +100644 f196149e90a7455a0ebb735b845ed04e5d5a7e6d 0 HexGraphIso/Nauty/Policy/Max/Leaf.lean +100644 287acdf05cf06df2cac8689c60f2d2a0de0e5082 0 HexGraphIso/Nauty/Policy/Max/Node.lean +100644 2ef4eb6d06ed2c4ddaf2154b9155b88cdfe90b0c 0 HexGraphIso/Nauty/Policy/Max/NodeTrace.lean +100644 36ab550014fcd061e6430695184a5420194b41a1 0 HexGraphIso/Nauty/Policy/Max/Position.lean +100644 8dd154c181d7ab0f93b05997c25db5e91e25b09c 0 HexGraphIso/Nauty/Policy/Max/Prefix.lean +100644 bbd7d6a60cf0a7d1561eaa994e1767ed70663db2 0 HexGraphIso/Nauty/Policy/Max/Prepare.lean +100644 67002286284e8a2ab500609ed077203fab8fbd53 0 HexGraphIso/Nauty/Policy/Max/Push.lean +100644 24827c16f686453544b3f052b8ccc7c1605a5d4a 0 HexGraphIso/Nauty/Policy/Max/Receive.lean +100644 e6c9ac0f34026a3873249ffc13a8b0cf67de8dc0 0 HexGraphIso/Nauty/Policy/Max/Restore.lean +100644 12941325d52d217472282a596c9a7072f77789bb 0 HexGraphIso/Nauty/Policy/Max/Resume.lean +100644 2c775ec0507bd128e9f765425a508b21a0866f83 0 HexGraphIso/Nauty/Policy/Max/ReturnTrace.lean +100644 2be35d0aec724c72cd1e6f787a2f17f3a6c5d308 0 HexGraphIso/Nauty/Policy/Max/Root.lean +100644 d0da0631a4c0ca7b38d7fdc3b716971c4dc6f53c 0 HexGraphIso/Nauty/Policy/Max/Rules.lean +100644 be7faf1fece02017cd143da48c35d79f09c79497 0 HexGraphIso/Nauty/Policy/Max/Scope.lean +100644 29531052926cd579211be66b14da4d2f1261a46e 0 HexGraphIso/Nauty/Policy/Max/Skip.lean +100644 effcafb561502ce9e87ca8693db2067a2ad8b2c7 0 HexGraphIso/Nauty/Policy/Max/Small.lean +100644 37801eed91962266e3c39a51a7b890f317e35ca7 0 HexGraphIso/Nauty/Policy/Max/Stab.lean +100644 340c89dfd8892b75b64008a3095cb4e10fde25e0 0 HexGraphIso/Nauty/Policy/Max/Suspend.lean +100644 c1acdd9fb89a376904570f74285cbd264b369438 0 HexGraphIso/Nauty/Policy/Max/SweepTrace.lean +100644 5f7d5f81598554c8ad6755331ff003b676b46412 0 HexGraphIso/Nauty/Policy/Max/Trace.lean +100644 5898849af934e769d614749ab86839d1e61b57a9 0 HexGraphIso/Nauty/Policy/Max/Unwind.lean +100644 c457f8d240e6b91a08f64d0bbeff54707bd47de6 0 HexGraphIso/Nauty/Policy/Max/Visit.lean +100644 573d9f70a8555f7d6c27f1021e78448ef8cad2df 0 HexGraphIso/Nauty/Policy/Orbits.lean +100644 814e8c5f7fe55bbe505130d5714c75a9df2077ab 0 HexGraphIso/Nauty/Policy/Pairs.lean +100644 60cc8db2d16a8a5ec34e90796a31676d847da72b 0 HexGraphIso/Nauty/Policy/Partition.lean +100644 86207015d2e75ebddbb28b6bc942ab8ebfa1d0fc 0 HexGraphIso/Nauty/Policy/PathFrame.lean +100644 e4b149a40a356f384af5345dedb97b6de235f59c 0 HexGraphIso/Nauty/Policy/PathState.lean +100644 62002f577f7981708eb7aeba4165e5994c2b2e83 0 HexGraphIso/Nauty/Policy/Positions.lean +100644 ee22fc575b3944a3fdb315b6171fb4c664fbc6a1 0 HexGraphIso/Nauty/Policy/Prepared.lean +100644 e471bcac00b8a0575153138362e1002dbf6d92c1 0 HexGraphIso/Nauty/Policy/Preserve.lean +100644 62f816cf031d0b613e062cf4af87b649bbc8e9ef 0 HexGraphIso/Nauty/Policy/Prune.lean +100644 4780a01ac24ff44fcad3922b5719918f02c38299 0 HexGraphIso/Nauty/Policy/README.md +100644 2531927e0ffac373c646d1e01f7323a14a8d25f8 0 HexGraphIso/Nauty/Policy/Recovery.lean +100644 ec3c3f2e22f49166ae54724933fdba0650e47080 0 HexGraphIso/Nauty/Policy/Reference/Complete.lean +100644 1ead4f2ab68f86191d24dce680b9b61e6734717b 0 HexGraphIso/Nauty/Policy/Reference/Descent.lean +100644 ab2d22c0c9d76a2ea5ad6b19402f2b4b470106f0 0 HexGraphIso/Nauty/Policy/Reference/Leaf.lean +100644 99ce0f01d5291e18af117ac020680c3231653d26 0 HexGraphIso/Nauty/Policy/Reference/Loop.lean +100644 d25b93a91b664e3074641d52376eb80eba26a207 0 HexGraphIso/Nauty/Policy/Reference/Node.lean +100644 73f7246d3066f23ff829018fe273b107f9beead5 0 HexGraphIso/Nauty/Policy/Reference/Return.lean +100644 4479b93b9c755419aa74fe381a503ef2e621ab07 0 HexGraphIso/Nauty/Policy/Reference/Sweep.lean +100644 a7b10904e1811fd8a546e2d166f7b97e5fecfc46 0 HexGraphIso/Nauty/Policy/Result.lean +100644 b10ee15b86a5f4e9b25d3fb5dccba261b26320ed 0 HexGraphIso/Nauty/Policy/ReturnCodes.lean +100644 c7de35fb9e4fe5d80bef643b75750c4668ec5269 0 HexGraphIso/Nauty/Policy/ReturnOrigin.lean +100644 8a450ebeed488bb809f024a61e9a0fe7cbf47496 0 HexGraphIso/Nauty/Policy/Route.lean +100644 cd5aa87d709d893e35ccc0ec48d3b34bbd71afc5 0 HexGraphIso/Nauty/Policy/RouteHistory.lean +100644 a00db91f302fab0160cf5188a7a233726f2d5538 0 HexGraphIso/Nauty/Policy/RouteKey.lean +100644 4009bc3c5946e92fccd211704b71a04db75e2eae 0 HexGraphIso/Nauty/Policy/RouteState.lean +100644 e95cad45261138c88d0f8b6f18c69ce42bafc1ed 0 HexGraphIso/Nauty/Policy/Safety.lean +100644 e16fc88113240a9adec8736b1f1052040fceafe0 0 HexGraphIso/Nauty/Policy/Scatter.lean +100644 3b4c5c2bc5f0b903f5beb512d499328e514925ea 0 HexGraphIso/Nauty/Policy/Scratch.lean +100644 dc6518fc2f317a78518f33b6a81f892385c32070 0 HexGraphIso/Nauty/Policy/Selection.lean +100644 21dc02178beeb38485097e4b36ca116906cc514d 0 HexGraphIso/Nauty/Policy/ShortPair.lean +100644 9f5c6d464a71ea40d3871e7e255194f8317c947f 0 HexGraphIso/Nauty/Policy/State.lean +100644 1cc82d6ce4d676cac21f48bdf0cb0f743cd65fd4 0 HexGraphIso/Nauty/Policy/Storage.lean +100644 26465c387ea570efcbe6717d7aff3bc9e8c862f8 0 HexGraphIso/Nauty/Policy/Store.lean +100644 c3c920d9c73af0f06b563b19ada9473a315045e2 0 HexGraphIso/Nauty/Policy/Target.lean +100644 773117bd3557d241eacb6794040d10d5a38fe1ce 0 HexGraphIso/Nauty/Policy/Trace.lean +100644 f760c4ff0a5b89561a0dbb3d6f72ff340d4e4d09 0 HexGraphIso/Nauty/Policy/TraceContains.lean +100644 93a3e3e58e67e4e2f5875434110446ffea0b3cab 0 HexGraphIso/Nauty/Policy/Tracking.lean +100644 484c165971d460b9aec6dabc6c863081641df7cc 0 HexGraphIso/Nauty/Policy/Transport.lean +100644 10c4ea47bb9a8b0667bde975364f9db44cebbc56 0 HexGraphIso/Nauty/Policy/Workspace.lean +100644 a3681d652c036d4615d169247c85954d50ea4c59 0 HexGraphIso/Nauty/Search/Bits.lean +100644 6391f387436e58d62b18b6980b658150c1b28762 0 HexGraphIso/Nauty/Search/Generic.lean +100644 496b184fe372463e25cb781e94ebfc33c506d5ff 0 HexGraphIso/Nauty/Search/Refine.lean +100644 25e2215cd53fa06c1fadbdf238f5a2fc666549b7 0 HexGraphIso/Nauty/Search/Search.lean +100644 75a3e842cc5e1be988ac74b85917d469cfb0f6b7 0 HexGraphIso/Nauty/Search/State.lean +100644 666827155714c900a4008c2693f9cca5d841bf86 0 HexGraphIso/Nauty/Search/VSet.lean +100644 650c580f9345720069016e87debcdeedfe16c943 0 HexGraphIso/Nauty/Search/VSet/Basic.lean +100644 5ff21a5d1b10fcb383b63367912a9bc9b42ff486 0 HexGraphIso/Nauty/Search/VSet/Card.lean +100644 18daa5da5eac1aa444cc3b2ccba07f7b559f9924 0 HexGraphIso/Nauty/Search/VSet/Nat.lean +100644 049d0b01653325ca6f60933751f6e9e7c8e9e414 0 HexGraphIso/Nauty/SmallCell/Count.lean +100644 7df1fa37831289a2a1bf37aaf6366353c69e449e 0 HexGraphIso/Nauty/SmallCell/Flip.lean +100644 920b31b9ffa533663d6b83b8d270bd13e41482e3 0 HexGraphIso/Nauty/SmallCell/Guard.lean +100644 822ea0fa37bb64ae79616df52e46bf1a996298ed 0 HexGraphIso/Nauty/SmallCell/Key.lean +100644 f22054a8f8f8b294c82d736caa749c95ba339cb3 0 HexGraphIso/Nauty/SmallCell/Monotone.lean +100644 f2286688d5119f73eee48a0b4cc9240dbf563c0b 0 HexGraphIso/Nauty/SmallCell/Pairs.lean +100644 1cb82c8cc14526a12cab57645d56067756ce2f9a 0 HexGraphIso/Nauty/SmallCell/Prefix.lean +100644 779bf437ff7d4b3d03d807ef881b1f53d694ce0b 0 HexGraphIso/Nauty/SmallCell/Shapes.lean +100644 3ed48626c3f6d0e787c02b37b977395b1a14bfeb 0 HexGraphIso/Nauty/SmallCell/Transitive.lean +100644 e170aa58fef54a25240f680e23b389e896f3f11c 0 HexGraphIso/Nauty/Sparse/ActiveCells.lean +100644 fcd304a75fdf6fbe237daa0ca6379cfe88344d73 0 HexGraphIso/Nauty/Sparse/ActiveQueue.lean +100644 9760ed6619cca7251a7f824d0152e499b53a1247 0 HexGraphIso/Nauty/Sparse/ActiveScan.lean +100644 96f691ca2f12e6d1a7977b614d1c3fd51575aed2 0 HexGraphIso/Nauty/Sparse/ActiveSpan.lean +100644 e05909cfbdc0556761e6480059a334067901ff68 0 HexGraphIso/Nauty/Sparse/AlignedTarget.lean +100644 301c0656a7db625790ee9eae7fdd7a825407d000 0 HexGraphIso/Nauty/Sparse/Alignment.lean +100644 24a92c2974493625bd8753a3eb26b1ac45866276 0 HexGraphIso/Nauty/Sparse/AncestorOrder.lean +100644 9ef57585b56e752332a02ac846934b37e4740a48 0 HexGraphIso/Nauty/Sparse/AncestorStab.lean +100644 ffed59f911213f517b89a58a84cd6d0d47e73a3d 0 HexGraphIso/Nauty/Sparse/Autom.lean +100644 5747c30ce999fb8e552b6b1c097dac2672d5f352 0 HexGraphIso/Nauty/Sparse/Bfs.lean +100644 3459f67bc429ddd4bc3b6fe7b9b73af2e15907fd 0 HexGraphIso/Nauty/Sparse/BfsRun.lean +100644 6dd61d3bbd955c7a23c5230897fd771d95892ddd 0 HexGraphIso/Nauty/Sparse/BfsScan.lean +100644 609ee715b3475a67601975923b18f89d4bc14cb4 0 HexGraphIso/Nauty/Sparse/BinaryCell.lean +100644 f926107e3a8a15d7a903c9d7f2c041f79fda1887 0 HexGraphIso/Nauty/Sparse/BinaryCells.lean +100644 06d41b62f2473ed43b389fb214d24c1c1c98f478 0 HexGraphIso/Nauty/Sparse/BinaryCongr.lean +100644 868e5d77c1baba122674d3237019a26b6a69c7a2 0 HexGraphIso/Nauty/Sparse/BinaryControl.lean +100644 9f62b024cdf96ab2180cbfc441fb323859389690 0 HexGraphIso/Nauty/Sparse/BinaryEquiv.lean +100644 ca7a092a3eb3389a98ea12565bae467bfa33da37 0 HexGraphIso/Nauty/Sparse/BinaryExecution.lean +100644 614588d4a41df353a7b7699dae7eef8fd6c882af 0 HexGraphIso/Nauty/Sparse/BinaryIndex.lean +100644 d4b20c50068d98ae0f313269efc1d6853d7613d2 0 HexGraphIso/Nauty/Sparse/BinaryLoop.lean +100644 c6c8eb6ad130f96007697c821970d23a7bd93571 0 HexGraphIso/Nauty/Sparse/BinaryPass.lean +100644 9ec004dd61816532c4da88a808ee19a0675313c6 0 HexGraphIso/Nauty/Sparse/BinaryProps.lean +100644 fe8c6dd5d10d2c3dbb0cabec3121a83b7068a34c 0 HexGraphIso/Nauty/Sparse/BinaryStep.lean +100644 10ee0d8c935fac0bcccf3b29a26589d5e996208a 0 HexGraphIso/Nauty/Sparse/Boundary.lean +100644 fa6dae6a3ad4d002e5e212a0ec54d61413f13a4f 0 HexGraphIso/Nauty/Sparse/BoundaryControl.lean +100644 5309a1e208924b286a5481ea37c4b944ed7b9723 0 HexGraphIso/Nauty/Sparse/CanonAutom.lean +100644 df59ceca0197f36447aa95b43e0a8a78cbba4788 0 HexGraphIso/Nauty/Sparse/CanonCalls.lean +100644 7c6c39a142a7925c0c480544fab7cb6334caee43 0 HexGraphIso/Nauty/Sparse/CanonControl.lean +100644 578ba46284935a6c42f7229653a254747bce13fe 0 HexGraphIso/Nauty/Sparse/CanonCover.lean +100644 cd749c7ec4c25bca2d0b47847dfb45de1065e0bd 0 HexGraphIso/Nauty/Sparse/CanonFrame.lean +100644 cfa88acd3b5f3de22f9a23174e9710d611678dc3 0 HexGraphIso/Nauty/Sparse/CanonGuide.lean +100644 891b34f8636fbaa874f6e8c82fc2f7f8b5eddec3 0 HexGraphIso/Nauty/Sparse/CanonLabel.lean +100644 7ae39297802cee1601291293a3220bf7d746b876 0 HexGraphIso/Nauty/Sparse/CanonNode.lean +100644 0767662ae7d5bd2c005272e28e2864edb933fcb9 0 HexGraphIso/Nauty/Sparse/CanonPair.lean +100644 cd21ea799fd3c284e74822557f4aed36bde8b5a5 0 HexGraphIso/Nauty/Sparse/CanonScatter.lean +100644 b007343653f96f5df316ddcf82fb9e95d23b5ca8 0 HexGraphIso/Nauty/Sparse/CanonSource.lean +100644 e7c17f9f9b89c2e48cee788a6849f4af7acc2e22 0 HexGraphIso/Nauty/Sparse/CanonSweep.lean +100644 9472512c425c4bc2dd83a6df351431a72c208da3 0 HexGraphIso/Nauty/Sparse/Canonical.lean +100644 22f3a60ff05794798c0b17f0082b31a6ac565343 0 HexGraphIso/Nauty/Sparse/Capacity.lean +100644 5ce2f9581800f8d21cb0aba296cb31c5553a8adb 0 HexGraphIso/Nauty/Sparse/CellClear.lean +100644 abb666ba6b15b4e8d953a8a08dbe1a4db9939094 0 HexGraphIso/Nauty/Sparse/CellCut.lean +100644 ceac93315bbec6ecbba4141c7f5552c683643f14 0 HexGraphIso/Nauty/Sparse/CellList.lean +100644 632b2cd763fcc3d92bf9184f4d6354891c50c51d 0 HexGraphIso/Nauty/Sparse/CellQueue.lean +100644 c982ea5a5124bd6e9c1421f9afafe032841c406d 0 HexGraphIso/Nauty/Sparse/Cells.lean +100644 0f7c27e90a8c20a5bc35ad555de1e01a1bcde27e 0 HexGraphIso/Nauty/Sparse/Cert/Autom.lean +100644 60109302dbce77e74fb42e3b881150b9f8aeabca 0 HexGraphIso/Nauty/Sparse/Cert/Candidate.lean +100644 e1d0f0908ff3caf707a72845d96e6fa3886645c2 0 HexGraphIso/Nauty/Sparse/Cert/Canon.lean +100644 28f90ea7e8143b4f7eca53fae163814628fbe896 0 HexGraphIso/Nauty/Sparse/Cert/Check.lean +100644 5ee23f5ab42baa0f898fc7408cad905a8d255907 0 HexGraphIso/Nauty/Sparse/Cert/Children.lean +100644 7a50008d36023f22a6fd0a6ffa861a017c3095b4 0 HexGraphIso/Nauty/Sparse/Cert/Code.lean +100644 abb0f3c4768d42321364a8cfe845a05f738ae374 0 HexGraphIso/Nauty/Sparse/Cert/Colors.lean +100644 7064c2f9ba0f40dc86756ab3e328d43bd84aa949 0 HexGraphIso/Nauty/Sparse/Cert/Compact.lean +100644 6cc1ed2eee9aaf804fa4e27f216ac6a6a6604e86 0 HexGraphIso/Nauty/Sparse/Cert/CompactCanon.lean +100644 d60897570df93f388f77f77d137322a18d9aaddb 0 HexGraphIso/Nauty/Sparse/Cert/CompactRoot.lean +100644 244dfec8655b1aa14755419f5edf333346ff6634 0 HexGraphIso/Nauty/Sparse/Cert/Complete.lean +100644 4efda26561ff1dc52f3290e89d2d6fb11487dbc0 0 HexGraphIso/Nauty/Sparse/Cert/Decision.lean +100644 bf0d3dfae815430275b566aba6fb8edfe9c8abf1 0 HexGraphIso/Nauty/Sparse/Cert/Emit.lean +100644 5a17590b33a8205d2fd1eb2315863862f10e2979 0 HexGraphIso/Nauty/Sparse/Cert/Generate.lean +100644 870fb6c4086c46ee60d82d13cd5f84fde3efbba6 0 HexGraphIso/Nauty/Sparse/Cert/GenerateComplete.lean +100644 bd49960eb281466a2c91e2306438ab5cf3630973 0 HexGraphIso/Nauty/Sparse/Cert/LimitComplete.lean +100644 bf65958998e33a7927cc4ffd8f31095035a8309f 0 HexGraphIso/Nauty/Sparse/Cert/Limited.lean +100644 bb80ba1210ac126bfd4c36154d2063c50804112f 0 HexGraphIso/Nauty/Sparse/Cert/Produce.lean +100644 b83a70911c463765ca1e4559c451510c7788bd5d 0 HexGraphIso/Nauty/Sparse/Cert/Quota.lean +100644 fb77bf952f0d86204f93c3157961827b63fda9bc 0 HexGraphIso/Nauty/Sparse/Cert/Records.lean +100644 4ef88626e48a53256de269f6ee354239ebd646ad 0 HexGraphIso/Nauty/Sparse/Cert/Root.lean +100644 c17b965bc2b7461231a4030cb7e57065a367c539 0 HexGraphIso/Nauty/Sparse/Cert/Rules.lean +100644 03455214d292526150eaa966940bed9e712de419 0 HexGraphIso/Nauty/Sparse/Cert/Siblings.lean +100644 136e1b9e55cedde1b972164e28b5fbdb06c2fc1e 0 HexGraphIso/Nauty/Sparse/Cert/Sound.lean +100644 6d80b60b311f366fe78d962d10cf1cdff66f6df8 0 HexGraphIso/Nauty/Sparse/CertState.lean +100644 5e3151ddcfb3d9d2259ce3f144232a7defc318c9 0 HexGraphIso/Nauty/Sparse/CheapAdmission.lean +100644 d6b6ee6570ad1473597381c21b4e56a9955c8109 0 HexGraphIso/Nauty/Sparse/CheapBoundary.lean +100644 d60756a595eabb8b5d41e451c0d7d54c57895810 0 HexGraphIso/Nauty/Sparse/CheapChildren.lean +100644 0cf79d54aae2254764f68a568507d8dc54908ac5 0 HexGraphIso/Nauty/Sparse/CheapHistory.lean +100644 097f2cc2292597c782c59191f7de84b408aa9c47 0 HexGraphIso/Nauty/Sparse/CheapLeaves.lean +100644 34bdf31dba42546909ea328ec2dda92d7fe61dfc 0 HexGraphIso/Nauty/Sparse/CheapPrefix.lean +100644 38b03964b8f772fe90df8c8818387142956c05b1 0 HexGraphIso/Nauty/Sparse/CheapTarget.lean +100644 25044769e21247b1ede1413b59097f8835f82ea2 0 HexGraphIso/Nauty/Sparse/ChildEntry.lean +100644 e902604e1ebc03a663b90e0c14721e09e5c31c7a 0 HexGraphIso/Nauty/Sparse/ChildFrame.lean +100644 bb09d383984370103f6683bf3f6eecd625f2c140 0 HexGraphIso/Nauty/Sparse/ChildPath.lean +100644 2590f548f0abe89a48f0b9efabaeeb1668313d7f 0 HexGraphIso/Nauty/Sparse/ChildTransport.lean +100644 e89e1e5822503644fe79a2bc52a142e243bc9251 0 HexGraphIso/Nauty/Sparse/Classify.lean +100644 d540ec1f7613c68e9086a9c64a92d6d440b7b74f 0 HexGraphIso/Nauty/Sparse/ClassifyStore.lean +100644 12c9678da2d05cc4bb6a5f88f7b78f5f3199d569 0 HexGraphIso/Nauty/Sparse/CodeAdvance.lean +100644 036b4ab5ff452f41d1716d831ee8c6d98ff67ad3 0 HexGraphIso/Nauty/Sparse/CodeBound.lean +100644 59925ea91c711fe044aed08d69b479bb8dcbe838 0 HexGraphIso/Nauty/Sparse/CodeBounds.lean +100644 50e7572b6a23a5691dd158facb53a221d8193fa6 0 HexGraphIso/Nauty/Sparse/CodeFields.lean +100644 c78dfe6f1523c968084f938a01c4e6d1f2c8490e 0 HexGraphIso/Nauty/Sparse/CodeNode.lean +100644 50b533a2ced1f1cc1e4631a63fe605176254e585 0 HexGraphIso/Nauty/Sparse/CodeOrder.lean +100644 1313174015c025188755477469a251da1843bc2f 0 HexGraphIso/Nauty/Sparse/CodePrefix.lean +100644 fc9b132301b129c1c0531a33a82cb8166f11bbb1 0 HexGraphIso/Nauty/Sparse/CodePrepare.lean +100644 a9857c6597b985b09b8f34c3116b3ec08b77e2b2 0 HexGraphIso/Nauty/Sparse/CodeRead.lean +100644 a6d1b686ec59ee541d07414c50de92e95614f8dc 0 HexGraphIso/Nauty/Sparse/CodeResult.lean +100644 46cd2b4ace838a3a7059e4d8ffb0cbf4b3d188cc 0 HexGraphIso/Nauty/Sparse/CodeScope.lean +100644 cace1f3ed11adaa9787bbc34ca33e771696f44db 0 HexGraphIso/Nauty/Sparse/CodeState.lean +100644 b0f414ce759e6709c354beb59bf4e02ea451f06c 0 HexGraphIso/Nauty/Sparse/CodeSweep.lean +100644 fc84da76a3cf3b56c42388473cea8cfad9488b98 0 HexGraphIso/Nauty/Sparse/CodeTransport.lean +100644 83c2f5a947c5d66102aaf0ee7799004f31ed31b2 0 HexGraphIso/Nauty/Sparse/Compact.lean +100644 96560e71c8d7e9132bd10cf243a3ea9d5514eb66 0 HexGraphIso/Nauty/Sparse/CompactClasses.lean +100644 90f3995c2ec3ed1e058e967fb0813ea4324d2849 0 HexGraphIso/Nauty/Sparse/CompactFinish.lean +100644 638a4aac230f975da61c7d0fb007e8da46a54980 0 HexGraphIso/Nauty/Sparse/CompactIndex.lean +100644 92d7031f1a3821f1980171260907c94da81a48f2 0 HexGraphIso/Nauty/Sparse/CompactKeys.lean +100644 51c47906b4b63231d77720d3deaa1878ab97c7eb 0 HexGraphIso/Nauty/Sparse/CompactRun.lean +100644 74b5cefd3602716d7cb0c851f52da9d33bf54df0 0 HexGraphIso/Nauty/Sparse/CompactScan.lean +100644 e54dd1328ede2fb39975fe3aaa00159603fe99bd 0 HexGraphIso/Nauty/Sparse/CompactTransport.lean +100644 b68871fc56e5dc8a5f2e08e72d39051f5d759d0f 0 HexGraphIso/Nauty/Sparse/Compare.lean +100644 6ed79358cc1f0b700c2320d524839405d229c9ed 0 HexGraphIso/Nauty/Sparse/CompareKey.lean +100644 485996a0fe5f9e2e4f21f88e41d2ec50e41e4a9c 0 HexGraphIso/Nauty/Sparse/CompareMarks.lean +100644 1992e002f402e3aca9a293fa365fd46411e5b31d 0 HexGraphIso/Nauty/Sparse/ComparePrefix.lean +100644 7bf5af75500ec973da552b0fa6096fb7f7faf8b0 0 HexGraphIso/Nauty/Sparse/CompareResult.lean +100644 707a9ebe2c0a096547452724d649285b6b532c50 0 HexGraphIso/Nauty/Sparse/CompareRow.lean +100644 08c7ed7b0301d84698000ffd149de07d6a6007de 0 HexGraphIso/Nauty/Sparse/Comparison.lean +100644 a09e9636c96cb7f2199cbe791d52ce442987cb00 0 HexGraphIso/Nauty/Sparse/ComparisonOps.lean +100644 31f300924b6c67b27e42dcf4da4689afe9978846 0 HexGraphIso/Nauty/Sparse/ContextMap.lean +100644 e86408be153784df567e27344e4511af049c5cdf 0 HexGraphIso/Nauty/Sparse/Controls.lean +100644 1970efad6b0993cfe2247f872367406967de8a5f 0 HexGraphIso/Nauty/Sparse/Coset.lean +100644 4df8553f29f85d76f42f6f7f4e9c113724202954 0 HexGraphIso/Nauty/Sparse/CountActivation.lean +100644 886763c5d6b0576d454cfa9ce22ff3484f415d3e 0 HexGraphIso/Nauty/Sparse/CountActive.lean +100644 47e5d6c64e7770418a30be82c88f2b1659bdc313 0 HexGraphIso/Nauty/Sparse/CountBound.lean +100644 7b650a2395abe732720cf0a387f593976d5a7447 0 HexGraphIso/Nauty/Sparse/CountCache.lean +100644 521e514cdc5656a50aa508419275efe54922d61f 0 HexGraphIso/Nauty/Sparse/CountCells.lean +100644 70fe6ec624ecfe8c1d6763ad5bf376c1d2ece7fa 0 HexGraphIso/Nauty/Sparse/CountClasses.lean +100644 0ca2b0869827cbd66963a877464a725128ac99b0 0 HexGraphIso/Nauty/Sparse/CountCompare.lean +100644 bd7c88e5d2063e50d690b421c1881007099cb539 0 HexGraphIso/Nauty/Sparse/CountCongr.lean +100644 34877f5cf15f61eedb3d4981fb036ef190af6d15 0 HexGraphIso/Nauty/Sparse/CountConstant.lean +100644 868b492039eeed494d6767f990e2d05700380d77 0 HexGraphIso/Nauty/Sparse/CountControl.lean +100644 bc5b127d5fbeb4272114454f9b9f6e27f2ad6082 0 HexGraphIso/Nauty/Sparse/CountExecution.lean +100644 502a23e5083e78a8a6667ca224305a88b4e0dcac 0 HexGraphIso/Nauty/Sparse/CountFinish.lean +100644 3820019c30d96d17608f8cd22e918ecb16db6830 0 HexGraphIso/Nauty/Sparse/CountFrame.lean +100644 e371fc1457b06f2e3ba0c9569aa29988ee9213f0 0 HexGraphIso/Nauty/Sparse/CountIndex.lean +100644 a3e56347b1dff4aadcd6bfcb1b62e5108ab6b8e7 0 HexGraphIso/Nauty/Sparse/CountInvariant.lean +100644 6b3c30bc18a13cca0468c10a8d5e933a483c995d 0 HexGraphIso/Nauty/Sparse/CountLab.lean +100644 51b3abe67421c1d4bee51be744cc8fadb2aa098f 0 HexGraphIso/Nauty/Sparse/CountLoop.lean +100644 3ec1a1028b9288603c58151c69b72b6b9c5a8410 0 HexGraphIso/Nauty/Sparse/CountNeighbors.lean +100644 2f4e61040b9d9b3ec0527a65180ac1d50e952b5c 0 HexGraphIso/Nauty/Sparse/CountOrder.lean +100644 17bd5846d40bebfca44694dd009755e02cf97368 0 HexGraphIso/Nauty/Sparse/CountOther.lean +100644 3223a09562446972fed4a6412891451029b7aff2 0 HexGraphIso/Nauty/Sparse/CountOutside.lean +100644 2ef48ebc249d088fd37c414c924725d621bc632d 0 HexGraphIso/Nauty/Sparse/CountPartition.lean +100644 27c2ccb913b55ccf060aab7e6cdc47d6394e5ca6 0 HexGraphIso/Nauty/Sparse/CountParts.lean +100644 678fd9dfbacb0865537776058a54cd646d11a9b5 0 HexGraphIso/Nauty/Sparse/CountPass.lean +100644 ac5ced524c96ded25750e63d83f6ee4ce3ea6e55 0 HexGraphIso/Nauty/Sparse/CountPassCongr.lean +100644 bfce5fec7a9f4bb7a69dc7ea606527dad2685d94 0 HexGraphIso/Nauty/Sparse/CountPassEquiv.lean +100644 d33a8adab41b992904257aed86c52c98055e1e98 0 HexGraphIso/Nauty/Sparse/CountPattern.lean +100644 0fc9adae94cc314f3716aef4a5141cc364f0c70d 0 HexGraphIso/Nauty/Sparse/CountPending.lean +100644 be45abb5b19ab301827f855072796ff03140aa79 0 HexGraphIso/Nauty/Sparse/CountPerm.lean +100644 104fcbcbb0ead270c2f2da4514a71d67988d8b3b 0 HexGraphIso/Nauty/Sparse/CountProgress.lean +100644 b49b4f26a51269a5878ab701543047f5bc73995d 0 HexGraphIso/Nauty/Sparse/CountQueue.lean +100644 4ebc6b52facdbc7121cc4bb05eb8d1b66648435e 0 HexGraphIso/Nauty/Sparse/CountReady.lean +100644 f311be6359234abb53421eb9b67967dbcfa2364a 0 HexGraphIso/Nauty/Sparse/CountResult.lean +100644 9ed48f1fd51edc72fbe8b02f27a7f06876c89aa2 0 HexGraphIso/Nauty/Sparse/CountRuns.lean +100644 e98ca8999d8e0cf72a3a996c78ae2df3c4d7f8c0 0 HexGraphIso/Nauty/Sparse/CountScan.lean +100644 755b5af087ac1a613d232f49b631e470afc3962c 0 HexGraphIso/Nauty/Sparse/CountSemantics.lean +100644 adaf8a623542f815993183e8f694bd2720fb98ec 0 HexGraphIso/Nauty/Sparse/CountSize.lean +100644 f4c90752137110560fdf3b894caff6982fecfbb4 0 HexGraphIso/Nauty/Sparse/CountTrace.lean +100644 9d525f9b1a5852bfa6b782947e0daf12abf8c560 0 HexGraphIso/Nauty/Sparse/CountTransport.lean +100644 930afeba1896097aceb1a0e1a78b0e5a22c20c7f 0 HexGraphIso/Nauty/Sparse/CountUniform.lean +100644 6db388dcda263098c3c4b56dd305f15684e9f679 0 HexGraphIso/Nauty/Sparse/CountValid.lean +100644 cdc7d163935c068d9089cdb324a4efafbee3334a 0 HexGraphIso/Nauty/Sparse/Counts.lean +100644 43e1e65e9d0f5f84b33e772d28afe7c457e6a1fc 0 HexGraphIso/Nauty/Sparse/CoverFrame.lean +100644 84c2c8919bdb5d9b72d4ec3cb7701e0bad497a57 0 HexGraphIso/Nauty/Sparse/Coverage.lean +100644 61af310c6799cd1ac777236184e2307ab2ad3c3e 0 HexGraphIso/Nauty/Sparse/CursorCover.lean +100644 719fd2526a5ce84f5181f0944be0812381f6b0aa 0 HexGraphIso/Nauty/Sparse/Cuts.lean +100644 45dc108f810cd5c381de6ff57abc562307a22afe 0 HexGraphIso/Nauty/Sparse/Depth.lean +100644 a36ca7aaa7d3e00c9c936cb8c27f123909cecfce 0 HexGraphIso/Nauty/Sparse/Descent.lean +100644 4a9c5fa4fc3577d49ff9461e52637faa86c3307d 0 HexGraphIso/Nauty/Sparse/DescentAt.lean +100644 66eb730cb8dba79c1f30bd2cd9bf74973ea80cf1 0 HexGraphIso/Nauty/Sparse/DispatchFrame.lean +100644 79e1e4f8efc094e8731b50d7a388ace3263ac6ea 0 HexGraphIso/Nauty/Sparse/Distance.lean +100644 4be07ca2602999893c2c35c6a2e058bc8868e12e 0 HexGraphIso/Nauty/Sparse/DistanceAdj.lean +100644 9a46c38a650af096ce442beaedf0de6c57430385 0 HexGraphIso/Nauty/Sparse/DistanceCert.lean +100644 620a280cfc1af2dd02bf29855bde1341d6faa444 0 HexGraphIso/Nauty/Sparse/DistanceCongr.lean +100644 c300bc09ab3844c460625644b972ce1ecef72bfc 0 HexGraphIso/Nauty/Sparse/DistanceEquiv.lean +100644 0e443a3ca1df12282708290327547af7d848962c 0 HexGraphIso/Nauty/Sparse/DistanceMap.lean +100644 1bc1ccb961eaf48908064c9d4504f6379cb4f73c 0 HexGraphIso/Nauty/Sparse/DistanceRun.lean +100644 f8a610e211cb17bea1293c5103946d11bbf36d7f 0 HexGraphIso/Nauty/Sparse/DistanceState.lean +100644 ffdfe0e59472d6a8ee07b20f0bff0375c1a7a5e1 0 HexGraphIso/Nauty/Sparse/DistanceTransport.lean +100644 a96a0fa2ccd8630530c784296e68629146bd7ca3 0 HexGraphIso/Nauty/Sparse/Divergence.lean +100644 aa52ec6c94bf3535a19c340e2632640677e04b05 0 HexGraphIso/Nauty/Sparse/EarlyReturn.lean +100644 51021e4d22242de2d0d5ea9bddf844ce1800a88b 0 HexGraphIso/Nauty/Sparse/Equitable.lean +100644 2869edd30331fb4754eaa1dbc79148b4e889b4df 0 HexGraphIso/Nauty/Sparse/ExitBound.lean +100644 44728e811ebda6d1082af74544e30f0103ac07d3 0 HexGraphIso/Nauty/Sparse/Fill.lean +100644 3ed7bdc25b66ab444599e111adccdc43efeb4063 0 HexGraphIso/Nauty/Sparse/FillIndex.lean +100644 00a7bfc7865807fc6be94d48c06f4fb29243f264 0 HexGraphIso/Nauty/Sparse/FillRun.lean +100644 5b48ebf76c6d2c5f365e0a8c4ea645546c5adab5 0 HexGraphIso/Nauty/Sparse/FilterCover.lean +100644 0f0240250f0832c2e07d77efadf9228e6989c686 0 HexGraphIso/Nauty/Sparse/FilterPrune.lean +100644 6ea7534f2ab0501b81f42e7035abc381662da1bb 0 HexGraphIso/Nauty/Sparse/FirstBoundary.lean +100644 de769e5daff52cf79596077f318f049d886e06af 0 HexGraphIso/Nauty/Sparse/FirstBounds.lean +100644 61b568a677079c588a9b9aa8af78bf2c07a8f34b 0 HexGraphIso/Nauty/Sparse/FirstCheap.lean +100644 5d23ee7a6d849656f8cc78ea3182876ca3e83139 0 HexGraphIso/Nauty/Sparse/FirstChoice.lean +100644 1982b9ed73ce10082942d379c42c1eb425f99958 0 HexGraphIso/Nauty/Sparse/FirstCodes.lean +100644 933701060aa89a011f06b1b36c93320a1505e02d 0 HexGraphIso/Nauty/Sparse/FirstCompare.lean +100644 7c54a96404796da72d04e363236062b592b428d4 0 HexGraphIso/Nauty/Sparse/FirstComplete.lean +100644 203a6a9fd776922eb4d2d8f8aa4566edff58f60b 0 HexGraphIso/Nauty/Sparse/FirstContains.lean +100644 6f937d01491fe1b76335d93ff705d6ece40c28e5 0 HexGraphIso/Nauty/Sparse/FirstCount.lean +100644 b191ed99ff0b4c6a6489db3442074f9423ea704e 0 HexGraphIso/Nauty/Sparse/FirstDrop.lean +100644 fbbee29ec930ce7709982c7b99ad1ea4c47a6427 0 HexGraphIso/Nauty/Sparse/FirstFields.lean +100644 3de7e3e94f59b1fbfcb9bde2666460d607ae4b38 0 HexGraphIso/Nauty/Sparse/FirstFrame.lean +100644 170bfe30f6695f3677ace754d365f54338bd0260 0 HexGraphIso/Nauty/Sparse/FirstHistory.lean +100644 c9e5af627eb74d10a5b6d97877f31031a154abd8 0 HexGraphIso/Nauty/Sparse/FirstPairs.lean +100644 cc17cdb81a1da18a231debaaad02193aff41da8e 0 HexGraphIso/Nauty/Sparse/FirstPath.lean +100644 a81e4ffd8fa5bfc3425156cbb6d73519f9ac782e 0 HexGraphIso/Nauty/Sparse/FirstPrepare.lean +100644 ad0f6fc8159d14cd93da147014275158848313fc 0 HexGraphIso/Nauty/Sparse/FirstRef.lean +100644 985d5d9205eef198c9ac307ce5153ff249d73f60 0 HexGraphIso/Nauty/Sparse/FirstResult.lean +100644 8329dd69b661982da554c57a957a1936a7a1d5f4 0 HexGraphIso/Nauty/Sparse/FirstReturn.lean +100644 c0b3ff05573edf3bfe7680a8f7f5cb32e63e3ce8 0 HexGraphIso/Nauty/Sparse/FirstRoute.lean +100644 a2e77fdbd4694f5fd29e0e57fbe2a8f3d918ac23 0 HexGraphIso/Nauty/Sparse/FirstStore.lean +100644 d6cd0b43fd3377dadfc0fa45b382a26d26587f56 0 HexGraphIso/Nauty/Sparse/FirstSuffix.lean +100644 c47de061bb4a24ad3443cec72fe839d0686e7751 0 HexGraphIso/Nauty/Sparse/FirstSweep.lean +100644 6e230696ca8385cac417278b3154f7f3f7e09d76 0 HexGraphIso/Nauty/Sparse/FirstTail.lean +100644 d468716eb5d23d8b653828866dabd43a318d6da5 0 HexGraphIso/Nauty/Sparse/FirstTrace.lean +100644 515ff9557a54626eafb51f2a889319e072138682 0 HexGraphIso/Nauty/Sparse/FirstTraceFrame.lean +100644 3b3aeb3b83427058177ebef93e335f617c66243e 0 HexGraphIso/Nauty/Sparse/FirstUniform.lean +100644 7b9ac20ce965d69dd8d7992be44c6d65641dedba 0 HexGraphIso/Nauty/Sparse/FirstWitness.lean +100644 e100ce7fa68ad1758f0cfbafab8b45354f95b804 0 HexGraphIso/Nauty/Sparse/Fixed.lean +100644 6b5bedb4c113fbdbac1be0fb753917e1facfcabf 0 HexGraphIso/Nauty/Sparse/FixedNode.lean +100644 6d4535711cfed54db3128a202fc13e4fc0e43f36 0 HexGraphIso/Nauty/Sparse/FixedState.lean +100644 33ad239364478aa0896dd4ada9dd330d53b68c01 0 HexGraphIso/Nauty/Sparse/FixedSweep.lean +100644 9584376ea0ef809f964f68abb36dff1e33308442 0 HexGraphIso/Nauty/Sparse/FollowsPerm.lean +100644 a73013d65382f6670948c1b89ee1a4013e88cae4 0 HexGraphIso/Nauty/Sparse/FrameOps.lean +100644 d75151d3b01df7831191eb994ef9d1363829fbd9 0 HexGraphIso/Nauty/Sparse/FrameReturn.lean +100644 a7da3981facff672cfe623e399bf69ec2a34a858 0 HexGraphIso/Nauty/Sparse/FrozenPrune.lean +100644 8dea1f72811d7401cdbe1c619a578f44dab4f686 0 HexGraphIso/Nauty/Sparse/Fuel.lean +100644 7fa11c58b04ea8ca728f9a404ceb675291bdef6b 0 HexGraphIso/Nauty/Sparse/FuelNode.lean +100644 459a6e248cbcb6bf7a6fd29a64eb0fe05b4483de 0 HexGraphIso/Nauty/Sparse/FuelSweep.lean +100644 fc3e9685d519d15f1ac91cea9d4ba69615f00e81 0 HexGraphIso/Nauty/Sparse/GeneratedComplete.lean +100644 38870e8216ffc7214453bfe5edc45ccbb2408d84 0 HexGraphIso/Nauty/Sparse/GeneratedHead.lean +100644 9a8140a286aa73f5d499ff8658a64fae754a5098 0 HexGraphIso/Nauty/Sparse/GeneratedReceipt.lean +100644 2ef0187a3dfcfcec2b3866e97f14250a63d79766 0 HexGraphIso/Nauty/Sparse/GeneratedRoot.lean +100644 3e619ccd82daea0dae643499f420329979296d6c 0 HexGraphIso/Nauty/Sparse/GeneratedTail.lean +100644 f8373eaa8ddce2c062bb2f2dcf9b3542ae71d1de 0 HexGraphIso/Nauty/Sparse/GeneratedVisit.lean +100644 384bc84b13e8d350fe0c7ecabeae3e2b90a90b6e 0 HexGraphIso/Nauty/Sparse/GenerationFrame.lean +100644 daf80bebcaa9c8da978cbc657c939434d0a61440 0 HexGraphIso/Nauty/Sparse/GenerationTrace.lean +100644 7e18e946956cb165712fa065c714701a0da1a8a6 0 HexGraphIso/Nauty/Sparse/Graph.lean +100644 0e94da11b2de356376432e80a6d27c8e6e454516 0 HexGraphIso/Nauty/Sparse/GraphProps.lean +100644 88769aa5db25eab0859e5457f8cd95e6d3083504 0 HexGraphIso/Nauty/Sparse/Guided.lean +100644 1216dbc22e80294f2a2d2c3ae687cc7b56ef1df4 0 HexGraphIso/Nauty/Sparse/GuidedLeaf.lean +100644 58c25c460a88ea8388ed8446d339ab48e120d139 0 HexGraphIso/Nauty/Sparse/GuidedPerm.lean +100644 9b5715e0e7a4dd20a96c7fa4198b2e3dab544434 0 HexGraphIso/Nauty/Sparse/Index.lean +100644 721d9f2223f1fd432afd5fbef54bcb0e38796f88 0 HexGraphIso/Nauty/Sparse/IndexBinary.lean +100644 59e4b75c6451299530e1f36746d6478be858137e 0 HexGraphIso/Nauty/Sparse/IndexCut.lean +100644 8af67c750733c87ab8bfc8ba8186f23b887f9659 0 HexGraphIso/Nauty/Sparse/IndexFinish.lean +100644 bbf948c9a4572fc2f1b8804cf934700c8249e134 0 HexGraphIso/Nauty/Sparse/IndexFrame.lean +100644 9df1539adbf6b237c63f33cd62daabdb12d40cab 0 HexGraphIso/Nauty/Sparse/IndexProps.lean +100644 94c7f3016fb4c644fc30384cb98aa57240a4c07c 0 HexGraphIso/Nauty/Sparse/IndexReindex.lean +100644 02c9b41ca3c5879cefef94d0760bb452cf700a14 0 HexGraphIso/Nauty/Sparse/IndexRun.lean +100644 938cb1417e589ac6a0c63ddd392e296462f5fd43 0 HexGraphIso/Nauty/Sparse/IndexRuns.lean +100644 dcc34a65f71211feea2caab7df1fca275d6a7afe 0 HexGraphIso/Nauty/Sparse/IndexScan.lean +100644 d2981c3ab422a9d5f7a8e8a7b1cd7733ced416b1 0 HexGraphIso/Nauty/Sparse/IndexSet.lean +100644 7254da748f5e2edd961f964de25b644bedc81206 0 HexGraphIso/Nauty/Sparse/IndexStart.lean +100644 8c37331ea4cbd8cc282d719a0ef0625cc4bcd3c3 0 HexGraphIso/Nauty/Sparse/IndexTail.lean +100644 da4df7f0bdc13fb4c753bf953449c6ba0060b4dd 0 HexGraphIso/Nauty/Sparse/IndexTransport.lean +100644 4efb7d946ee58f1420ce2c511b04d041ed8639d5 0 HexGraphIso/Nauty/Sparse/IndexTwo.lean +100644 53a39719ba727f1258caa3849abba0da085259b4 0 HexGraphIso/Nauty/Sparse/IndexVertex.lean +100644 8e15899b4487065dd9d29425bc5589c0e1e76b9d 0 HexGraphIso/Nauty/Sparse/IndexWitness.lean +100644 d7b2e3b0ff0fbce23e340cf28156c92a99b0eebe 0 HexGraphIso/Nauty/Sparse/IndexWrites.lean +100644 b84a683cec5a5d874eb60eeaac1cc06cdbe19a30 0 HexGraphIso/Nauty/Sparse/IndirectCongr.lean +100644 8f5bec204a8bbf12a8e01cda16f97e25c65fc78d 0 HexGraphIso/Nauty/Sparse/Initial.lean +100644 baa6454e1dcdbb6cbbc3972162e32f7868f5a5ff 0 HexGraphIso/Nauty/Sparse/Inverse.lean +100644 08267a49a2c13ed0399c4c1e31fdb39d11822223 0 HexGraphIso/Nauty/Sparse/JoinCount.lean +100644 648a5873b671705b582d5a6412b6c0349d94bdf0 0 HexGraphIso/Nauty/Sparse/JoinSweep.lean +100644 1f495ab452100ed5793f6d5184038d3954e72dec 0 HexGraphIso/Nauty/Sparse/Key.lean +100644 0e1dc036ad04738da9a8d611bfd54dd7567c8a69 0 HexGraphIso/Nauty/Sparse/LabelColors.lean +100644 71652cf433230f3b635644ec1af7f1bbc8f99dd8 0 HexGraphIso/Nauty/Sparse/LeafAutom.lean +100644 935fa935a36e039b1f00ce452d0499470dab3ea3 0 HexGraphIso/Nauty/Sparse/LeafBound.lean +100644 3313ecbd3b9b954edf0dbd72aa026559370147ef 0 HexGraphIso/Nauty/Sparse/LeafCodes.lean +100644 33820c24c74516568e740f1b19605971bd228c69 0 HexGraphIso/Nauty/Sparse/LeafPath.lean +100644 0fd86face9655264fdbd3dbb750e26c09ccfa3b9 0 HexGraphIso/Nauty/Sparse/LimitAgreement.lean +100644 c5129e5c28d169a9daa59ea5369184bced24e744 0 HexGraphIso/Nauty/Sparse/LimitBudget.lean +100644 b2eac748fb3ed357aee7fe79fcb1b313677de3e6 0 HexGraphIso/Nauty/Sparse/LimitCount.lean +100644 eb0e65674cd161b0dfc489cba7b4760c286003be 0 HexGraphIso/Nauty/Sparse/LimitNode.lean +100644 73daba66b292f331f8957982c7c16fcd52ceed6b 0 HexGraphIso/Nauty/Sparse/LimitProjection.lean +100644 8789f19bf27b7492b6f8a7f54a75b4ccbdce88c1 0 HexGraphIso/Nauty/Sparse/LimitSweep.lean +100644 d08272d9d3f12ed2736ac6eb51a94e0eaf02c957 0 HexGraphIso/Nauty/Sparse/Limited.lean +100644 399d5bf2c78e9be1c26033287e140d4bb8c8ac53 0 HexGraphIso/Nauty/Sparse/Literal/Autom.lean +100644 c7437fffe9d12ddd46ad9dd8b5e6247cd9f93d7a 0 HexGraphIso/Nauty/Sparse/Literal/Canon.lean +100644 8be1c299c579f0c2c5ea8b395b680e0b1dc852a4 0 HexGraphIso/Nauty/Sparse/Literal/Check.lean +100644 acafe5ebe05b4e2dded25e71dea3d535b1927b01 0 HexGraphIso/Nauty/Sparse/Literal/Compact.lean +100644 ba5ecd62bd89b08c72255b71fd91339343235e0a 0 HexGraphIso/Nauty/Sparse/Literal/Leaf.lean +100644 7ddc4bcc340f38cf34f0f6765b18ad77beaffe06 0 HexGraphIso/Nauty/Sparse/Literal/Range.lean +100644 6cc7d5fcd28cfdb0b7ac49987469f0047f1f56ba 0 HexGraphIso/Nauty/Sparse/Literal/Refine.lean +100644 85d5319890cf24bc0b75feb9429c6d3425656982 0 HexGraphIso/Nauty/Sparse/Literal/Sort.lean +100644 8cc787e117c1e315ba8434ed4f8d236413ac4d32 0 HexGraphIso/Nauty/Sparse/Literal/Target.lean +100644 779564ab1e3508edcc5d328c1f3caf60c214f0a0 0 HexGraphIso/Nauty/Sparse/LocalFrame.lean +100644 f02f8ae3a830ffea28abf57ea8d451e1c9423eb0 0 HexGraphIso/Nauty/Sparse/LoopCover.lean +100644 712de98681cc4e522bcad817791c917fc090e72c 0 HexGraphIso/Nauty/Sparse/LoopRel.lean +100644 a82909b3b988dc29410264997ce13e3ef76de037 0 HexGraphIso/Nauty/Sparse/MarkTransport.lean +100644 27a2ea7e3358fb092c9836420d2ce16d37dae4fb 0 HexGraphIso/Nauty/Sparse/Marks.lean +100644 e272b6c5f2bb86238ad472772a3b9b015c1fea9c 0 HexGraphIso/Nauty/Sparse/Matching.lean +100644 254c10193c4d50535e080ebc3c5f64735ae6f138 0 HexGraphIso/Nauty/Sparse/MatchingTarget.lean +100644 a94e5c8b8188b06b0e4eb1ae08bd84138da0acfd 0 HexGraphIso/Nauty/Sparse/MaxAncestor.lean +100644 a7aaf82c4a82d314306d250c977d4d423ca95ee6 0 HexGraphIso/Nauty/Sparse/MaxAutoCanon.lean +100644 676b4e690f900e981d3209ed702bef4c4054c018 0 HexGraphIso/Nauty/Sparse/MaxAutoFirst.lean +100644 60fb5c32729beccb40242eae736fd0647d143316 0 HexGraphIso/Nauty/Sparse/MaxCell.lean +100644 46c4beb04f5b910c5ff88a1e41e35145ede4ce20 0 HexGraphIso/Nauty/Sparse/MaxCheap.lean +100644 2c9fccf159b879b0c936f871bd814f81c9bb3af3 0 HexGraphIso/Nauty/Sparse/MaxChoice.lean +100644 f6df879cb0637a15a2edc20c637bf06c490b1b5f 0 HexGraphIso/Nauty/Sparse/MaxContext.lean +100644 d72813d82fe9b1cce1eb0fd4918c0c169bbc2e8a 0 HexGraphIso/Nauty/Sparse/MaxControl.lean +100644 56b0fa839b40311b1253634574c067f6bc187bd3 0 HexGraphIso/Nauty/Sparse/MaxCoset.lean +100644 b3938986a10b797b99b58f2132cd11ba68a05475 0 HexGraphIso/Nauty/Sparse/MaxCosetState.lean +100644 780e9b4752c6e22d4a6c05582b608fee7e3b0be1 0 HexGraphIso/Nauty/Sparse/MaxDescent.lean +100644 8c46f6e74c4467640f5e3fcf745e7fcc9b2f3069 0 HexGraphIso/Nauty/Sparse/MaxEmit.lean +100644 95e1517fb641bc1a0e8e75fed86d20915510fc0a 0 HexGraphIso/Nauty/Sparse/MaxEmitter.lean +100644 0c0a4b271b56736f5755c69efb7e27cb3cb0c5ec 0 HexGraphIso/Nauty/Sparse/MaxFirstCodes.lean +100644 c488e824b81a9d2a802b9e1483d51f7286c879fa 0 HexGraphIso/Nauty/Sparse/MaxFirstContext.lean +100644 f8aeda92818b981b129d256d6049899d49096198 0 HexGraphIso/Nauty/Sparse/MaxFirstEntry.lean +100644 420d881e0ddf10c74377e1249ec8b986683b86dd 0 HexGraphIso/Nauty/Sparse/MaxFirstFilter.lean +100644 059db46eaf75fd546e4041a302efebf10886d083 0 HexGraphIso/Nauty/Sparse/MaxFirstLeaf.lean +100644 fdbc01f6c7d17e2dbae1927576251ab531fb08d5 0 HexGraphIso/Nauty/Sparse/MaxFirstLower.lean +100644 370049aace8c129f2eedebeff28a59e0ff4c026e 0 HexGraphIso/Nauty/Sparse/MaxFirstNext.lean +100644 c347694bdc449c79936b4f352fe6634161386897 0 HexGraphIso/Nauty/Sparse/MaxFirstNode.lean +100644 84d5e5d145d91558635e165f1203fe2aec70bd5b 0 HexGraphIso/Nauty/Sparse/MaxFirstPairs.lean +100644 898c1d1873e2b569f7455ec014467718f985b4e8 0 HexGraphIso/Nauty/Sparse/MaxFirstResume.lean +100644 77abcf0b28f7a68632d0e9f2591b859f715233c6 0 HexGraphIso/Nauty/Sparse/MaxFirstSweep.lean +100644 f216d6f6f1e6b55f7992f7d482ebedbb2c423a11 0 HexGraphIso/Nauty/Sparse/MaxFirstUpper.lean +100644 ec3f3becce6f20ecbfc946d45e43b251b5ac9027 0 HexGraphIso/Nauty/Sparse/MaxFrame.lean +100644 dbb95446e3949246d80246debbb713e2c1947718 0 HexGraphIso/Nauty/Sparse/MaxGuideBack.lean +100644 57adddf848e34a0c93b942a5d11f84029998760b 0 HexGraphIso/Nauty/Sparse/MaxGuideFirst.lean +100644 44fbf15effb40dd03d75824addd49f0c871b674b 0 HexGraphIso/Nauty/Sparse/MaxGuideFrame.lean +100644 f3c4fb56dccfc9efdce17d5e5d0ceeb941149d6b 0 HexGraphIso/Nauty/Sparse/MaxGuideReturn.lean +100644 d580b6ac50961abcff124b147957870c8653e64d 0 HexGraphIso/Nauty/Sparse/MaxGuides.lean +100644 2d64a69a0dce63ebe1d01afeacba0e7502cbef40 0 HexGraphIso/Nauty/Sparse/MaxLoop.lean +100644 462d007538c11c2e6c9fa5a1aaf017538b9ccfb2 0 HexGraphIso/Nauty/Sparse/MaxNext.lean +100644 f291918bc8bb44f16890bf2b8efc58678de6b7f6 0 HexGraphIso/Nauty/Sparse/MaxNode.lean +100644 5c8f09fed18037ca0b5a400966ed69dacb5f80a5 0 HexGraphIso/Nauty/Sparse/MaxParent.lean +100644 0a09e19687471c54d32177ce3643ac9af00d5141 0 HexGraphIso/Nauty/Sparse/MaxPrepare.lean +100644 7d668bbdd77b9a8dc5e08bf086ce6fe041b5c044 0 HexGraphIso/Nauty/Sparse/MaxRank.lean +100644 c2de7c9ee82e71b5d5dc3538877a0e501336e8bc 0 HexGraphIso/Nauty/Sparse/MaxRecover.lean +100644 554f903879e83685f09b261d25a4e3406ff73928 0 HexGraphIso/Nauty/Sparse/MaxReject.lean +100644 ec8b7a938f16fd2df59e88d552a0bb99906b2d2a 0 HexGraphIso/Nauty/Sparse/MaxResult.lean +100644 99fd373c8f4873e69e184d20456aa62eac145d8b 0 HexGraphIso/Nauty/Sparse/MaxResume.lean +100644 c8ea730e8f78faa5ef599e17e0c062f799a64b5a 0 HexGraphIso/Nauty/Sparse/MaxRetain.lean +100644 a01ee4dde7fbb89f4fbd86e1185449dfbf3a6d81 0 HexGraphIso/Nauty/Sparse/MaxScatter.lean +100644 4a9e8cb39d405ee01971faffb541b6eb74368051 0 HexGraphIso/Nauty/Sparse/MaxScope.lean +100644 f4f378475c8588e469061c689748bb241a66e378 0 HexGraphIso/Nauty/Sparse/MaxStart.lean +100644 3eab3a14eb6a40c8eb9e703711350b688d9f654f 0 HexGraphIso/Nauty/Sparse/MaxSweep.lean +100644 7b9ae75bd7a8009d999206f4679da4326846956d 0 HexGraphIso/Nauty/Sparse/MaxTarget.lean +100644 9e760e1aa66ae108bcc60022b2d9d3f6bce2a8cf 0 HexGraphIso/Nauty/Sparse/MaxTerminal.lean +100644 6c5e59307e5c6fb6b805588232dca784abf386ab 0 HexGraphIso/Nauty/Sparse/MaxTrace.lean +100644 fed4bef90bd00bae031efbd56664d2c17cef037e 0 HexGraphIso/Nauty/Sparse/MaxUpperNode.lean +100644 d6213e94829eb8ab182611ff2603e7d3084b3a9f 0 HexGraphIso/Nauty/Sparse/MaxUpperResult.lean +100644 f6dd7d5daaa6a1003871517a04048f39b0eb5938 0 HexGraphIso/Nauty/Sparse/MaxUpperSweep.lean +100644 6d6a9a4c5abe31c98de1582aa68194d4c21ef483 0 HexGraphIso/Nauty/Sparse/Maximum.lean +100644 0d14bd20e20c7753cb7c2b1de893a7bce6405361 0 HexGraphIso/Nauty/Sparse/Minima.lean +100644 d3ab2c300eed925f57039953e6a49e6c66aa92d5 0 HexGraphIso/Nauty/Sparse/MinimaBound.lean +100644 1f0689fcc99a971182c2321c4b756200d95c3166 0 HexGraphIso/Nauty/Sparse/MinimaCongr.lean +100644 7b5cd2256338dcd7fe110efa8a4eee776edbccfd 0 HexGraphIso/Nauty/Sparse/MinimaPerm.lean +100644 204ccbd1fbd150b0d2812935aff039caa30ffd18 0 HexGraphIso/Nauty/Sparse/MinimaSort.lean +100644 507a71afbf9b3632c1ba9098239d7e552cdd2666 0 HexGraphIso/Nauty/Sparse/MinimaUnique.lean +100644 5398d86ce91f89689263875ec2a20bc2280820cf 0 HexGraphIso/Nauty/Sparse/NativeCounts.lean +100644 98ab62d3bfe0ade995d56000861aa531d2034a75 0 HexGraphIso/Nauty/Sparse/NontrivialCongr.lean +100644 7abee04b0a44201ec98e51b08558cb6be5333657 0 HexGraphIso/Nauty/Sparse/NontrivialEquiv.lean +100644 38b6b8f1866a6dfe2a5ef999c956530cbc003845 0 HexGraphIso/Nauty/Sparse/NontrivialIndex.lean +100644 7ab329a186c5c487f1aa330da636551c061bc597 0 HexGraphIso/Nauty/Sparse/NontrivialTrace.lean +100644 466768b15c81f872c8515069bc0fb043cb4ad4ae 0 HexGraphIso/Nauty/Sparse/OrbitClosure.lean +100644 0b34e8786236553226ef4aa913b0ee51f690415f 0 HexGraphIso/Nauty/Sparse/OrbitCover.lean +100644 0cdf05ca1a41440d4a3f9ca2450c371a2d0ebeda 0 HexGraphIso/Nauty/Sparse/OrbitExact.lean +100644 9fbbc68d5c90408b1f3fafb5ca9dca31127493b9 0 HexGraphIso/Nauty/Sparse/OrbitMark.lean +100644 1cf064d4ace919f0151d6abf501ac65be824bf15 0 HexGraphIso/Nauty/Sparse/OrbitReplay.lean +100644 8a0ab2a7237e3888da4b38c94eb6689f12b58985 0 HexGraphIso/Nauty/Sparse/Orbits.lean +100644 e842e58aa3ffe61650b1841e46a6cd7a3b910b43 0 HexGraphIso/Nauty/Sparse/OrderOps.lean +100644 dbd3d2f675aa9ecbb7d7f450b5f9908bdf6a963a 0 HexGraphIso/Nauty/Sparse/OrderStep.lean +100644 1f4b735bda8676848bff8b86201030a6a6aa4b1b 0 HexGraphIso/Nauty/Sparse/Pairs.lean +100644 920905168fd44703475ca15343bdb411b969ad05 0 HexGraphIso/Nauty/Sparse/PairsNode.lean +100644 a59c74b03e63bdeb0c7a319f5951f29696c68c7f 0 HexGraphIso/Nauty/Sparse/PairsResult.lean +100644 203af392bc87f6fa546fba581c556cbeff769e97 0 HexGraphIso/Nauty/Sparse/PairsState.lean +100644 b463ddc1b2a47c443ae6896b1ce88cbdf6d9e9aa 0 HexGraphIso/Nauty/Sparse/PairsSweep.lean +100644 a6c7e3aa57b16fff702d2c59ad54239d01760d3f 0 HexGraphIso/Nauty/Sparse/PartitionCongr.lean +100644 3f19f8f08a9b04200360505a379ea5c63aeabe96 0 HexGraphIso/Nauty/Sparse/PassCert.lean +100644 da2f2a51f5b2180b785af9f85ba155ba5dbc8ff2 0 HexGraphIso/Nauty/Sparse/PassCongr.lean +100644 ceb69b2329e7878ffc9064ed25a2f2a18423e46e 0 HexGraphIso/Nauty/Sparse/PassEquiv.lean +100644 ac5b9eb231746c178d39ae0da3b9bef8148d7ed0 0 HexGraphIso/Nauty/Sparse/Path.lean +100644 30447b1a5980319db054225494f0e84b72925065 0 HexGraphIso/Nauty/Sparse/PathCodes.lean +100644 17b4ca22a3f0831d2942e2edfa000e8d53ad7203 0 HexGraphIso/Nauty/Sparse/PathCover.lean +100644 d1f77645bc345bd84192f7d72b02cf0df103a961 0 HexGraphIso/Nauty/Sparse/PathFrame.lean +100644 38215c8c2c3f5d4d7c66077befd6fa0a9923f3de 0 HexGraphIso/Nauty/Sparse/PathState.lean +100644 4ee172bfbb9f383fe7f7b86a56401300d535e7c7 0 HexGraphIso/Nauty/Sparse/PathTransport.lean +100644 cf05b77f7d2f5027e19d3671d11c3b915235ba65 0 HexGraphIso/Nauty/Sparse/PolicyScratch.lean +100644 abf7328bc8bf6be3bb9f63c3c27bcbee4844dd2c 0 HexGraphIso/Nauty/Sparse/Positions.lean +100644 1ee36d44eea9bdd61ada45a7165b85e20aca1e89 0 HexGraphIso/Nauty/Sparse/PrefixKey.lean +100644 70cc61c4486afa211cdc527ea594084143533051 0 HexGraphIso/Nauty/Sparse/Preparation.lean +100644 3e172c56282344fea6a7dddda5875264a86eb08c 0 HexGraphIso/Nauty/Sparse/Prune.lean +100644 029c308049817f51de68fda6636b0a311cec2f0f 0 HexGraphIso/Nauty/Sparse/Queue.lean +100644 6cc92a386bdebb15d9e6a8ec3d7351ca30eb3262 0 HexGraphIso/Nauty/Sparse/QueueRemove.lean +100644 da824205b662f83214ac74a2b53016d67b1116fd 0 HexGraphIso/Nauty/Sparse/QueueReplace.lean +100644 d8b5adbd4c4b70bf6d6a8d5012704327dbd70d78 0 HexGraphIso/Nauty/Sparse/README.md +100644 b05627a5cacb28b62d3d96560838c734887a6426 0 HexGraphIso/Nauty/Sparse/Reach.lean +100644 b0410cd8d15ae612371f22e4744d5dd122852a9f 0 HexGraphIso/Nauty/Sparse/ReachNode.lean +100644 60a37f1e021bf4fa21d888368c3e8359059ae5a5 0 HexGraphIso/Nauty/Sparse/ReachSweep.lean +100644 16eb56505d412fe635eff6912830b2d16280f307 0 HexGraphIso/Nauty/Sparse/ReadyFrame.lean +100644 5f7de46a51c84af5dbb11acc5b2002325e31cf58 0 HexGraphIso/Nauty/Sparse/ReadyPerm.lean +100644 c0e84798f9f340ec64b28589b093793351ed94bf 0 HexGraphIso/Nauty/Sparse/ReadyTarget.lean +100644 009dc4eb10b3f617ebdeb9482375df7c04cfc790 0 HexGraphIso/Nauty/Sparse/ReceiveCover.lean +100644 e0d5485f72dbef60c501204c45cdaa64eb1b2353 0 HexGraphIso/Nauty/Sparse/Recover.lean +100644 3fcdd89b7c5127796fa9658277e362af16a31357 0 HexGraphIso/Nauty/Sparse/RefPath.lean +100644 6c60f35945c9aab5c592d0178b69bdf6dfa0d928 0 HexGraphIso/Nauty/Sparse/Reference.lean +100644 e1a1960b7d6665f832163fb8a195c85fc29b023d 0 HexGraphIso/Nauty/Sparse/ReferenceChild.lean +100644 5f7fff21d202928d5f6e0977fe9e5c75aa68cba3 0 HexGraphIso/Nauty/Sparse/ReferenceCode.lean +100644 b2d18500bf194454b035d747feee122e39cc04ed 0 HexGraphIso/Nauty/Sparse/ReferenceComplete.lean +100644 e65a2618e26403838fb8ac4c63557f9bad0600f5 0 HexGraphIso/Nauty/Sparse/ReferenceDescent.lean +100644 f8b9574f9f970275516661b105cac0f05ad87228 0 HexGraphIso/Nauty/Sparse/ReferenceEmit.lean +100644 8d2b2ff156c5ea028131bf9ef01b7b7ab28b3aa7 0 HexGraphIso/Nauty/Sparse/ReferenceFilter.lean +100644 914a16fdb4d2f79c56a179fd555a4e7f120d8760 0 HexGraphIso/Nauty/Sparse/ReferenceLeaf.lean +100644 9aaf74db35912c49e5b376d7b9844f899ff09912 0 HexGraphIso/Nauty/Sparse/ReferenceLoop.lean +100644 6da6493aed99df96f4ad8309c6ddd005d5d40bfb 0 HexGraphIso/Nauty/Sparse/ReferenceOrbit.lean +100644 ee031f57d130b114d7b0d343d970888a78a10174 0 HexGraphIso/Nauty/Sparse/ReferencePrepare.lean +100644 9f50e79af58f5cee200be45303b6f0a8184c5b76 0 HexGraphIso/Nauty/Sparse/ReferenceResult.lean +100644 d3409758b18d8fb446b985b2bb8ac30696945555 0 HexGraphIso/Nauty/Sparse/ReferenceResume.lean +100644 7f8ae6f313281b1d97b130d969e5058c6c81d882 0 HexGraphIso/Nauty/Sparse/ReferenceReturn.lean +100644 0e7263ec798fa3fa683123a255779c57229e9584 0 HexGraphIso/Nauty/Sparse/ReferenceStep.lean +100644 9ef089968f65f21509697b4ecbd8626a5827b3f4 0 HexGraphIso/Nauty/Sparse/ReferenceSweep.lean +100644 8828db065ce67365cd5f24669e79280133dd2f40 0 HexGraphIso/Nauty/Sparse/ReferenceTarget.lean +100644 81d33dcd9afcc09bb0927d59e55551590dd29ae7 0 HexGraphIso/Nauty/Sparse/ReferenceVisit.lean +100644 6be2cbbe1c17e49e4f1bb172681fac50e28a7312 0 HexGraphIso/Nauty/Sparse/Refine.lean +100644 f50782f09e0a3f28e2405f2e627cb5f76aa1ecbc 0 HexGraphIso/Nauty/Sparse/Refine/CountSpec.lean +100644 770671f33c7e56239e7b06e42da7a4f38d107cee 0 HexGraphIso/Nauty/Sparse/Refine/Counts.lean +100644 e30cce10759b532705865458454be85ea7a3e2dd 0 HexGraphIso/Nauty/Sparse/Refine/Minima.lean +100644 f76987d4f0a4efa3c61eab6e17b0e4a0f929cca9 0 HexGraphIso/Nauty/Sparse/Refine/State.lean +100644 3982a8ac7aa4ae8962c113e5b9b29347b864a333 0 HexGraphIso/Nauty/Sparse/RefineBoundary.lean +100644 b357a7d4a8839177efdca767bf2433cb3ce47bf5 0 HexGraphIso/Nauty/Sparse/RefineBounds.lean +100644 b30af98ab5d0ddd2b68d3decaad09cea019e21ad 0 HexGraphIso/Nauty/Sparse/RefineBranches.lean +100644 6aef39c0d99d127531fe321e27fee87374a8ba39 0 HexGraphIso/Nauty/Sparse/RefineBudget.lean +100644 0232eed5f93478370a264383315085ddb9a91b05 0 HexGraphIso/Nauty/Sparse/RefineCert.lean +100644 75a46753754f6d013483e9afa171b6f9df8543a2 0 HexGraphIso/Nauty/Sparse/RefineCongr.lean +100644 a86e6b6181620c8d25daa7904f2aba98a4ec5d35 0 HexGraphIso/Nauty/Sparse/RefineDistance.lean +100644 8a23a5e95642bc5d76296baad81b1ddcded3c27f 0 HexGraphIso/Nauty/Sparse/RefineEquiv.lean +100644 43616b15c00374958fd83d21616435a39bdc1d46 0 HexGraphIso/Nauty/Sparse/RefineFrame.lean +100644 58c3ca12aa793669c0f25d0a48e342b9ec4490d9 0 HexGraphIso/Nauty/Sparse/RefineFuel.lean +100644 ed621ce9f1d04e751cef7c2f71c2fd42213e5842 0 HexGraphIso/Nauty/Sparse/RefineIndex.lean +100644 e61f87b7163f26fbb06f8df1f35fb150720b1d89 0 HexGraphIso/Nauty/Sparse/RefineInitial.lean +100644 ea5dc3fa66f1dfaa3d735db67b53b1fbe3c00859 0 HexGraphIso/Nauty/Sparse/RefineLiteral.lean +100644 50501a30684f3544bae29a631beae042a0d004ea 0 HexGraphIso/Nauty/Sparse/RefineLoop.lean +100644 6de1426f27b1e2e16eabf0305c5f0d7aa96812b6 0 HexGraphIso/Nauty/Sparse/RefineParts.lean +100644 ad1e528f28b5e7058a59c53e6a6933b9649e838d 0 HexGraphIso/Nauty/Sparse/RefinePrefix.lean +100644 d8986542c5ba91931ecc380abb5f24c553cba12a 0 HexGraphIso/Nauty/Sparse/RefineSelect.lean +100644 c0d8e93dd87d1e57e3de48af710b6615b4743822 0 HexGraphIso/Nauty/Sparse/RefineState.lean +100644 d727314a017594ec64c8e2b2f6d3d1a1c6b2ca2a 0 HexGraphIso/Nauty/Sparse/RefineStop.lean +100644 6f27f9a220b1d34e000c6b42e9ddeacb009caffc 0 HexGraphIso/Nauty/Sparse/RefineTransport.lean +100644 6ca6ef91fc8fd806002ab12c2a2e376e8bfd9962 0 HexGraphIso/Nauty/Sparse/RefineVisit.lean +100644 1db8635c9d6e8399c0ab46e899423874ce02802d 0 HexGraphIso/Nauty/Sparse/RefinedNode.lean +100644 0949f2aa91f92e2af6e2f8d411137ea1ee1fac31 0 HexGraphIso/Nauty/Sparse/RefinedSmall.lean +100644 950afef73d698d3fb2903faf79f9bf9456eccacd 0 HexGraphIso/Nauty/Sparse/Renaming.lean +100644 01420aebbfaac69ba030b42d5502398a55490222 0 HexGraphIso/Nauty/Sparse/Result.lean +100644 11794e44e03e2b18312edb295c0db72eddf0942a 0 HexGraphIso/Nauty/Sparse/ResumeCover.lean +100644 e3c8c13b03a537d6b40f69ae8cc607f88a240d40 0 HexGraphIso/Nauty/Sparse/ReturnCodes.lean +100644 e9460aff77836a0460db9c0d68f44def0c56e59e 0 HexGraphIso/Nauty/Sparse/ReturnOrigin.lean +100644 b389fbc533b06aba9e4e8be1531f399aedc40595 0 HexGraphIso/Nauty/Sparse/Root.lean +100644 d4da0672c982e715503463150bed97632c3eeb99 0 HexGraphIso/Nauty/Sparse/RootHistory.lean +100644 873ef77c023ae165602194c8f7fdf8c71ec15147 0 HexGraphIso/Nauty/Sparse/Rotate.lean +100644 497c1a0c8c365fa3569d7fb18129c194fdddb64e 0 HexGraphIso/Nauty/Sparse/RouteAlignment.lean +100644 3127140397a404d0b43f5b4a0ae4ee1d671b66e5 0 HexGraphIso/Nauty/Sparse/RouteAt.lean +100644 1a78bfa6e2d10171de73bfb3c761e6ce4aa9bd11 0 HexGraphIso/Nauty/Sparse/RouteHistory.lean +100644 b548ceae511c1fd45d9c5675071c5f43e68e2717 0 HexGraphIso/Nauty/Sparse/RouteKey.lean +100644 25b6b5819b5574622eeb6d1be56d402039c28f14 0 HexGraphIso/Nauty/Sparse/RouteTarget.lean +100644 e07de0c2325e39222e345e009ad3269e3479c37e 0 HexGraphIso/Nauty/Sparse/RowOrder.lean +100644 056aa4417213f8333b14f5a23455ef95c252bcfd 0 HexGraphIso/Nauty/Sparse/RowTransport.lean +100644 b4e352802ee1574d2a7aa338b2a92dc0ab0d11eb 0 HexGraphIso/Nauty/Sparse/Rows.lean +100644 69ca5b76493b15396bea35e47436e9ed20504431 0 HexGraphIso/Nauty/Sparse/RowsTransport.lean +100644 f2a5393fd9233c387a28d17327dd410b68ad7295 0 HexGraphIso/Nauty/Sparse/Saved.lean +100644 930b943d6f5bc210df19982f915a36991328a0c9 0 HexGraphIso/Nauty/Sparse/ScanCompare.lean +100644 0f28c33a5b6fc9cdd50e6613bb3ec7e830708a57 0 HexGraphIso/Nauty/Sparse/ScanTransport.lean +100644 fa0a109f34532ed356357f75f38d9c55f82b780c 0 HexGraphIso/Nauty/Sparse/Scatter.lean +100644 24fa7da780012ac218b68503b465666a6e2a6ab3 0 HexGraphIso/Nauty/Sparse/Scratch.lean +100644 d15b2fdd3a1a781818c8b0a618cc2ffa48ff001e 0 HexGraphIso/Nauty/Sparse/ScratchSearch.lean +100644 8b163e0fd5b4bf074260ae9899f61d32afd07b0a 0 HexGraphIso/Nauty/Sparse/Search.lean +100644 2fa9dd5f1d596853bbb6849e34b560d292ad0236 0 HexGraphIso/Nauty/Sparse/SearchBounds.lean +100644 b5fea3194cddc91f529416d04fa701a4bcafffcf 0 HexGraphIso/Nauty/Sparse/SelectedCell.lean +100644 324802d426b84dada046a4fa0c5511213510b096 0 HexGraphIso/Nauty/Sparse/ShortPair.lean +100644 a1686611b88aba3cf0e076d61aef9bd5870de59c 0 HexGraphIso/Nauty/Sparse/SingletonCongr.lean +100644 cf02862411fc8a310828722b26cd4d1d2846f012 0 HexGraphIso/Nauty/Sparse/SingletonEquiv.lean +100644 78d09c2b45af2bc97059a986095640734697ae88 0 HexGraphIso/Nauty/Sparse/SingletonIndex.lean +100644 6e334ef9a1987d37d05db81b032f6946f5ba3027 0 HexGraphIso/Nauty/Sparse/SingletonMarks.lean +100644 e9634034f068eaad1153dd51bb88a3964e55ec66 0 HexGraphIso/Nauty/Sparse/SingletonPending.lean +100644 5b8cc500cdcb56c8f709bb7276be4b2ce88d0859 0 HexGraphIso/Nauty/Sparse/SingletonTrace.lean +100644 9129e3dd1b44da7bf225499b2be1d07efa2f32f4 0 HexGraphIso/Nauty/Sparse/SmallCell.lean +100644 719f858b96823a2e9301b4597f10a2cf26bb1684 0 HexGraphIso/Nauty/Sparse/SmallKey.lean +100644 93ac4226ab4cdc1b346aacc4320bedfb787e24e5 0 HexGraphIso/Nauty/Sparse/SmallStep.lean +100644 c4111346e64609fc95881a4ec9b686c9055df2dd 0 HexGraphIso/Nauty/Sparse/SmallUniform.lean +100644 10d1a1b3150790aa707043fd9a1555dd859ab608 0 HexGraphIso/Nauty/Sparse/Sort.lean +100644 e8bc86cd33a3f7fcc48563d5bf2a273d33135cc2 0 HexGraphIso/Nauty/Sparse/SortBlocks.lean +100644 da624a3cf6f7b6b2c5a54b453971d44b1b2a02c4 0 HexGraphIso/Nauty/Sparse/SortCongr.lean +100644 7117eb8696dc7bdc39ecfe7ec27e2fd6266f00ec 0 HexGraphIso/Nauty/Sparse/SortFinal.lean +100644 16c086c098f2b3ff6ead197aa0adfc2363bd80db 0 HexGraphIso/Nauty/Sparse/SortOrder.lean +100644 43f3a635120c8785878c81b799edc33cd92b691a 0 HexGraphIso/Nauty/Sparse/SortPartition.lean +100644 806925a501c15a8a285934224235c83fb89c7b1f 0 HexGraphIso/Nauty/Sparse/SortProps.lean +100644 d9df2c19ea48857ad72b3426cc8383018418afc6 0 HexGraphIso/Nauty/Sparse/SortSegments.lean +100644 364355b340bbfb7e7eec3e4ad6be715eb7393971 0 HexGraphIso/Nauty/Sparse/SortSorted.lean +100644 11aa9c3943307ae5cdb8c9702187e5e4769fffed 0 HexGraphIso/Nauty/Sparse/SortStack.lean +100644 07585a6d826bccb292c76852861ec1bc9466213a 0 HexGraphIso/Nauty/Sparse/SortedKeys.lean +100644 9c63b5de13044c80ea3702538aa27b1ed0d027bc 0 HexGraphIso/Nauty/Sparse/SpecBound.lean +100644 6e228f77795d2dde1d8aa1f234d2a69d9bb01d59 0 HexGraphIso/Nauty/Sparse/SpecCanon.lean +100644 3f77b1d07360c482c5c53d1bb0334d9e69533131 0 HexGraphIso/Nauty/Sparse/SpecChildMap.lean +100644 0d26ee759108a9321504cc85273f2f1daf5f7f0f 0 HexGraphIso/Nauty/Sparse/SpecColors.lean +100644 b5928c760e323cc472fce270a8379598c255f78c 0 HexGraphIso/Nauty/Sparse/SpecFuel.lean +100644 fb169df436719dd4e0d7f307e5f34f022bd21243 0 HexGraphIso/Nauty/Sparse/SpecIso.lean +100644 d531bcd7ff4657f316662e1475c6099b036dc0ee 0 HexGraphIso/Nauty/Sparse/SpecLeafMap.lean +100644 e638f13041e8dec94893b91fc33cca4f78089bcc 0 HexGraphIso/Nauty/Sparse/SpecMax.lean +100644 e50468596cc938f3e60d70de399431197d8ec9ae 0 HexGraphIso/Nauty/Sparse/SpecNode.lean +100644 2f6c21c34c545d7a3ab53e3483da55e6de67640f 0 HexGraphIso/Nauty/Sparse/SpecTransport.lean +100644 febe96b835736462d1b6db38be923e1381b0c6fc 0 HexGraphIso/Nauty/Sparse/SpecTree.lean +100644 4a87f5a5769b4a5df0fc1fd13c325e98f6e59a80 0 HexGraphIso/Nauty/Sparse/SplitBounds.lean +100644 e200ffa603850c5eb6404b1bac7157f6a4dd2153 0 HexGraphIso/Nauty/Sparse/SplitBudget.lean +100644 896459b572207d5d1b49ba27e0787d142100a457 0 HexGraphIso/Nauty/Sparse/SplitterConst.lean +100644 7fd2511b075ed08adcd3a08f1669371d2b1f6a72 0 HexGraphIso/Nauty/Sparse/Stabilize.lean +100644 a381a1602a851a63677279043619a1dfef6f901a 0 HexGraphIso/Nauty/Sparse/StabilizerHead.lean +100644 9d6851dd63bf24642466da44a59eaf3b04c2e581 0 HexGraphIso/Nauty/Sparse/StabilizerTail.lean +100644 b4b37b4b7543ad86f106a2cc9d28f1aff3fd14b7 0 HexGraphIso/Nauty/Sparse/StateFrame.lean +100644 eef32a905613b223298f7d66367b6194375c14e5 0 HexGraphIso/Nauty/Sparse/Store.lean +100644 52abef265fab59c793126280945ee5633d9dd526 0 HexGraphIso/Nauty/Sparse/StoreNode.lean +100644 0a35c271c4a47dd7a559b81bb59a0844e6fb328f 0 HexGraphIso/Nauty/Sparse/StoreOps.lean +100644 bbfecd125fbbe0dc901e18047b03aa3590a224d7 0 HexGraphIso/Nauty/Sparse/StoreResult.lean +100644 4b0974c39eeca89e79350e4f04c27511877f50b5 0 HexGraphIso/Nauty/Sparse/StoreSearch.lean +100644 ba711e527475e4dcd09a98dae97768cdf10d1a68 0 HexGraphIso/Nauty/Sparse/StoreSweep.lean +100644 2ca77c162ad92518e55f96d1653b9dac402222f6 0 HexGraphIso/Nauty/Sparse/SubtreeKey.lean +100644 7ffa3e45cd523e2a3a97a2bff7d892b16cdda357 0 HexGraphIso/Nauty/Sparse/SubtreeMap.lean +100644 8c3c7f4e64fb9745bfd3d86a1fe0dfcd007e1560 0 HexGraphIso/Nauty/Sparse/SubtreeSplit.lean +100644 a0c722247518d5c21c2563631ea9f258dad5ef31 0 HexGraphIso/Nauty/Sparse/Target.lean +100644 704d2c953fc9f33e0480ac72b46620f55d411f50 0 HexGraphIso/Nauty/Sparse/TargetBest.lean +100644 60b02054ed3e9411759fd4871f5ba5099bc541c3 0 HexGraphIso/Nauty/Sparse/TargetCache.lean +100644 fc64aa02ad802309f79bd19e103783eb1fb8cc1a 0 HexGraphIso/Nauty/Sparse/TargetCells.lean +100644 f596e79f4b0136f953dcab80e635082176ae5295 0 HexGraphIso/Nauty/Sparse/TargetCounts.lean +100644 49e34fb7c62c8cb249b94b6cb53c4983c98bc5b3 0 HexGraphIso/Nauty/Sparse/TargetDispatch.lean +100644 514a24b82461ce7d6203aeaa112ebf4db9c36fd1 0 HexGraphIso/Nauty/Sparse/TargetEncode.lean +100644 6c0bf53b39e300d01539e330f37565e7dab87e0b 0 HexGraphIso/Nauty/Sparse/TargetEquiv.lean +100644 db5dc9567a6264d13e9ecea1a169ad5fe0090fb3 0 HexGraphIso/Nauty/Sparse/TargetFrame.lean +100644 61c08efa531eafa739a6a9358207dc4735b210a3 0 HexGraphIso/Nauty/Sparse/TargetFresh.lean +100644 eb2a35cc87f6a899a9e545bf756d08ae941e7027 0 HexGraphIso/Nauty/Sparse/TargetHint.lean +100644 1c9117cee68574e164a80aab5e5faba656c84fd7 0 HexGraphIso/Nauty/Sparse/TargetInvariant.lean +100644 eafa1648207fa7c4985acd20e91775a958a886ca 0 HexGraphIso/Nauty/Sparse/TargetMap.lean +100644 5ec97e69c7f9772bc15ed386378e2c4aea3660cd 0 HexGraphIso/Nauty/Sparse/TargetMaximum.lean +100644 f73744c62f3e3f009373cd45c91582ad1e4da564 0 HexGraphIso/Nauty/Sparse/TargetPerm.lean +100644 00ad772491cd4e2d927426dca5afedc4b09fdc6a 0 HexGraphIso/Nauty/Sparse/TargetPrepare.lean +100644 1a944618283b4412811b17e14ba8938002684262 0 HexGraphIso/Nauty/Sparse/TargetProps.lean +100644 7121af6e49b926c87dce752f567556ef40d4d13b 0 HexGraphIso/Nauty/Sparse/TargetRank.lean +100644 4cd680963ce62c9f33a2378b6270f7ca1a93b7cb 0 HexGraphIso/Nauty/Sparse/TargetSelect.lean +100644 e35927255597b9d13b9d9ed11ba2075626c8dae7 0 HexGraphIso/Nauty/Sparse/TargetTransport.lean +100644 08b6327b79d5be730e1ec4261fb7fa88a71e5f0d 0 HexGraphIso/Nauty/Sparse/TargetValid.lean +100644 ae7d22fb459110c5505c0e40ebc4214624cf363b 0 HexGraphIso/Nauty/Sparse/TouchCompare.lean +100644 5aab63c463001ba24e1ac216bc6fe9b11ddb55ff 0 HexGraphIso/Nauty/Sparse/TouchRun.lean +100644 0cef2915fa72082c358ef32ba01c3f4996045953 0 HexGraphIso/Nauty/Sparse/TouchSort.lean +100644 3105d8ba678e993d29b5a459cf7b54c95464a3ab 0 HexGraphIso/Nauty/Sparse/Touched.lean +100644 45289981ab97538c84e8615a219b7e5b58acf1bc 0 HexGraphIso/Nauty/Sparse/Trace.lean +100644 959e00f5638408803d8cbfd89fe188b820d39ab9 0 HexGraphIso/Nauty/Sparse/TraceContains.lean +100644 50dc51331c6e696893ab210085e16e5f62514e9c 0 HexGraphIso/Nauty/Sparse/TraceFrame.lean +100644 3dbb3b4defcad6d20f538e902883aaed5d49f12e 0 HexGraphIso/Nauty/Sparse/TraceFrameCalls.lean +100644 8fcbf854df16fd1274198d98ff97dd02c6d91951 0 HexGraphIso/Nauty/Sparse/TraceFrameLeaf.lean +100644 3e80c81baef457546ae777e4e2b271dc6b9a3e18 0 HexGraphIso/Nauty/Sparse/TraceFrameNode.lean +100644 128550204f2bd4db677b9ad5756a36476b9d4b9f 0 HexGraphIso/Nauty/Sparse/TraceFrameOps.lean +100644 e5b40e268bba9288f781a5e03b8b16ce2e470305 0 HexGraphIso/Nauty/Sparse/TraceFrameSeed.lean +100644 3deab341e6935164857e12bff0dd87e3f2c93e7d 0 HexGraphIso/Nauty/Sparse/TraceFrameSweep.lean +100644 67b0038035492f8732cbc5696b2ab7d19b22976b 0 HexGraphIso/Nauty/Sparse/TraceNode.lean +100644 e874dbf48e1bcd9398ce635cfbf41426bb3471f6 0 HexGraphIso/Nauty/Sparse/TraceOrbit.lean +100644 21c2b725acd915e34c7ccf4ceab21b244b091319 0 HexGraphIso/Nauty/Sparse/TraceResult.lean +100644 f62ceffa8d23533153d51e6eb70b16c36e6abc32 0 HexGraphIso/Nauty/Sparse/TraceState.lean +100644 fe23dbf2ea1c11a2e02f073ebab6e20b845f096a 0 HexGraphIso/Nauty/Sparse/TraceSweep.lean +100644 06b5767fe12a63ccebf472f0fc215b68724051ce 0 HexGraphIso/Nauty/Sparse/Uniform.lean +100644 aa61bc868257214074d761ba0399c1f7cfeb4bfb 0 HexGraphIso/Nauty/Sparse/UniformReturn.lean +100644 13bc8dabfda14cab34e23e5df8dd0198d44f35ff 0 HexGraphIso/Nauty/Sparse/UniformStep.lean +100644 58be7e018ad2da4142ef2ef1a55743fbb87f3e25 0 HexGraphIso/Nauty/Sparse/Update.lean +100644 de73f8b279b1cf194eb2e7722d5a6d50ac3a1f99 0 HexGraphIso/Nauty/Sparse/VertexFrame.lean +100644 0ef66b48f1ccd5fdbadd2397d9fd1c88af1b8c0f 0 HexGraphIso/Nauty/Sparse/VertexKey.lean +100644 b5d002484327f297d127eef2b6cad615f104f8bf 0 HexGraphIso/Nauty/Sparse/VertexMarks.lean +100644 f3f48f90a817bcb37e8fc10243074f59c970dca9 0 HexGraphIso/Nauty/Sparse/VisitCover.lean +100644 7ff6be23fb0b70c4624a9cd4f3e3835c45968448 0 HexGraphIso/Nauty/Sparse/VisitFrame.lean +100644 dc8f4a842091d9fc7b9b7bb52673509640254828 0 HexGraphIso/Nauty/Sparse/VisitKey.lean +100644 dc1c7427877ff55b5d1f2880fcbbd7911d2f6890 0 HexGraphIso/Nauty/Sparse/VisitSplit.lean +100644 0650288af36266966eef431ed7b724cabb4bb617 0 HexGraphIso/Nauty/Sparse/VisitTarget.lean +100644 74a333a27cff48deaa96e06776489a4b13f32a24 0 HexGraphIso/Nauty/Sparse/Window.lean +100644 4ac268a3cc90799f58bd66130d4c71108e6319f2 0 HexGraphIso/Nauty/Sparse/WindowCells.lean +100644 91cbafbc9662c5653bb7135b24b1c1e418af7b33 0 HexGraphIso/Nauty/Sparse/WorkSize.lean +100644 e72ac1bdc19a9e10d05218754d8a13525cf1778f 0 HexGraphIso/Nauty/Spec/Achieved.lean +100644 21d5801d1fbabe5298f34832b64d33b35affb54b 0 HexGraphIso/Nauty/Spec/CanonSpec.lean +100644 3799aedefb7d5ac9e55eed307f879a35e61a6371 0 HexGraphIso/Nauty/Spec/CellPerm.lean +100644 366481b96814d519253edd052d5b3109c2d335f1 0 HexGraphIso/Nauty/Spec/CellPermLoop.lean +100644 4b02b61234589d9cd9588ee091b66c808cb0914b 0 HexGraphIso/Nauty/Spec/Descent.lean +100644 b23b5ed89abe692568f772c35bf31559648b8c59 0 HexGraphIso/Nauty/Spec/Equivariance.lean +100644 3a637eef7b41b0e8c860508cb2923927a15639b8 0 HexGraphIso/Nauty/Spec/FiniteRenaming.lean +100644 5ace960b2d541e46ba959447ae0fb0952c415c52 0 HexGraphIso/Nauty/Spec/KeyMax.lean +100644 3057fffaaca51aa5c5745921d51ca69900d27c80 0 HexGraphIso/Nauty/Spec/SpecCanon.lean +100644 9ef999a5af1e6c94126b7dc79a05edd76ae18e3a 0 HexGraphIso/Nauty/Spec/SpecIso.lean +100644 88d42cbb936c51a7b1a009974a35933441bdcd01 0 HexGraphIso/Nauty/Spec/Traced.lean +100644 23912335c49346ae6cc7de0cc461deca6b81eb8b 0 HexGraphIso/Ops.lean +100644 70c15ad5c791709276d470099debe6d42e98fb9b 0 HexGraphIso/Orbit.lean +100644 c5ce8b9a57b0295ec9c58638197462d92ff8cb55 0 HexGraphIso/Perm.lean +100644 1c469f752f3cdb941d7903a0fb824a24f7abf647 0 HexGraphIso/Random.lean +100644 dc4fd8910aa03d843e7c2a8e241ef606a9f22128 0 HexGraphIso/Sparse.lean +100644 26d593979b3155bf1fb2bbba4a21817119fa3bf1 0 HexGraphIso/Sparse/Autos.lean +100644 65d1b2de2da438371f84a282b351f8578603bbdc 0 HexGraphIso/Sparse/Canonical.lean +100644 9fc95df55ed9eec9cc446b21f10779b9e5eeaf6c 0 HexGraphIso/Sparse/Colored.lean +100644 afa626b0b65c6b2c845fdccf5f37f5f6286b89c1 0 HexGraphIso/Sparse/Iso.lean +100644 0187c6495d3371a9616a63424ac0469a4cfe650e 0 HexGraphIso/Sparse/Kernel.lean +100644 6e0773c5f62a7b725f426ed28c12ab839e1d08db 0 HexGraphIso/Sparse/Ops.lean +100644 cc74720856798f13c56eb84b3eec29fd855b686c 0 HexGraphIso/Sparse/Run.lean +100644 be0182839dacbb20c17095e59b585a417f433a79 0 HexGraphIso/Sparse/Tactic.lean +100644 cd121bf2bee2829eb344e23682bd2f15c8af7a31 0 HexGraphIso/Sparse/TacticSupport.lean +100644 8a835288159d9bd9cec893ee51f9bb4958194fc9 0 HexGraphIso/Sparse/Uncolored.lean +100644 4779f8ef3834addacd02e13c5d6b4d64bb642079 0 HexGraphIso/Sparse/UncoloredAutos.lean +100644 529d3208df28747e705ad6ce7f22a1ce64e4874f 0 HexGraphIso/Sparse/UncoloredOps.lean +100644 1d40d85a499d1fe242c570dba5275e5f30f0141a 0 HexGraphIso/SparseCertTests.lean +100644 6cc09ff15a131d733a56c31180d4ef82d88e450e 0 HexGraphIso/SparseKernelTests.lean +100644 725ff4ad648aab42835ac9d83f947fccc527ab12 0 HexGraphIso/SparseLimitTests.lean +100644 bd8e5551c5940756563448e7296e7d308ab84b2f 0 HexGraphIso/SparseTacticTests.lean +100644 72c3281ee2d9f7dd23f799a730a6123260bc02e5 0 HexGraphIso/SparseTestGraphs.lean +100644 32be8ab2cce38af4eab0855fcd74704632a95dc1 0 HexGraphIso/SparseTests.lean +100644 590ecdb292618283ccd76d1f81b8d440f699e4f5 0 HexGraphIso/Tactic.lean +100644 7f2b0413c8dfdb813ae8ff204e9cfa37f83f7f39 0 HexGraphIso/TestGraphs.lean +100644 e1ab58f1232b9b265ffc2f3efb2bdc8350251871 0 HexGraphIso/Uncolored.lean +100644 7ce46d1c29777c91e080bc7f55322400b7633ba5 0 HexGraphIso/UncoloredComplete.lean +100644 b68632d68c46b511c1f719e452f61235c9b0a59e 0 HexPermGroup/Perm.lean +100644 7ac9caa40af85db4fcfd6c39195cf90699dfda07 0 bench/HexGraphIso/Cactus.lean +100644 327c99cacafccb757254a4ec924e9b7f90d3b9e3 0 lakefile.lean +100644 12359f928f18e4a89ebd1444a0310b025931b17d 0 lean-toolchain +100644 32b0381f7e1b54bca237d69e2396f34e8f1f7058 0 scripts/plots/hexgraphiso-cactus.py +100644 66e5e555157fd638f75c5a865814689a2cd30e34 0 vendor/nauty-2.9.3/gtools.c +100644 5921c206f26ac8cf1fcd3b73d543d0c938df98c4 0 vendor/nauty-2.9.3/gtools.h +100644 e88e38d9c45dd1946b09098ea0a0173065a1d614 0 vendor/nauty-2.9.3/naugraph.c +100644 e268df871701903454bbbe38ec12dfafe6abec6d 0 vendor/nauty-2.9.3/naurng.c +100644 a4d8044ccc8fc6ba7e1bec2e97d7d8cce7cc23c3 0 vendor/nauty-2.9.3/naurng.h +100644 03639d4f0f67674eccd833794967eab423623c43 0 vendor/nauty-2.9.3/nausparse.c +100644 d5b23340dc6643bc4a3b7cb8ad733f4fc572ebcf 0 vendor/nauty-2.9.3/nausparse.h +100644 c2643fa65f73e68872df147908a9944a39ad6d14 0 vendor/nauty-2.9.3/nautil.c +100644 c93c8f75e9b16f033a44134500b8a4cc9c57b8de 0 vendor/nauty-2.9.3/naututil.h +100644 68e32eaaa76ddf4b025be71dbf9ef8c45a8d10b4 0 vendor/nauty-2.9.3/nauty.c +100644 55c2b467de8e36a3ed647df088235f91b6287fa2 0 vendor/nauty-2.9.3/nauty.h +100644 3c713d99849edfbb02e98b0edbe45eb452846d68 0 vendor/nauty-2.9.3/schreier.c +100644 b62d58b05c377c94baeb48ee6568a9de606f9dbc 0 vendor/nauty-2.9.3/schreier.h +100644 1245763d3ebe5023751c99f445fefb43c6a0c1b7 0 vendor/nauty-2.9.3/sorttemplates.c +100644 68f781e3324cae1c444927f440f3285d42dbe9e5 0 vendor/nauty-2.9.3/traces.c +100644 7a79468f985e06cb18d03f1808368444fd60a112 0 vendor/nauty-2.9.3/traces.h diff --git a/reports/bench-results/hexgraphiso-pairs-f8c9bd340878-chungus2.jsonl b/reports/bench-results/hexgraphiso-pairs-f8c9bd340878-chungus2.jsonl new file mode 100644 index 0000000000..e3e96b33fe --- /dev/null +++ b/reports/bench-results/hexgraphiso-pairs-f8c9bd340878-chungus2.jsonl @@ -0,0 +1,34 @@ +{"family": "circulant-12", "name": "pos-circulant8", "n": 8, "iso": true, "fast_ns": 83964, "nauty_ns": 2323, "exprA": "Graph.singleColor (Families.circulant 8 [1, 2])", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 8)).toLabel"} +{"family": "circulant-12", "name": "pos-circulant12", "n": 12, "iso": true, "fast_ns": 132496, "nauty_ns": 3375, "exprA": "Graph.singleColor (Families.circulant 12 [1, 2])", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 12)).toLabel"} +{"family": "circulant-12", "name": "pos-circulant16", "n": 16, "iso": true, "fast_ns": 191564, "nauty_ns": 4396, "exprA": "Graph.singleColor (Families.circulant 16 [1, 2])", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 16)).toLabel"} +{"family": "circulant-12", "name": "pos-circulant20", "n": 20, "iso": true, "fast_ns": 262830, "nauty_ns": 5989, "exprA": "Graph.singleColor (Families.circulant 20 [1, 2])", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 20)).toLabel"} +{"family": "circulant-12", "name": "pos-circulant24", "n": 24, "iso": true, "fast_ns": 341135, "nauty_ns": 7992, "exprA": "Graph.singleColor (Families.circulant 24 [1, 2])", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 24)).toLabel"} +{"family": "circulant-12", "name": "pos-circulant32", "n": 32, "iso": true, "fast_ns": 530116, "nauty_ns": 11827, "exprA": "Graph.singleColor (Families.circulant 32 [1, 2])", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 32)).toLabel"} +{"family": "grid", "name": "pos-grid3x3", "n": 9, "iso": true, "fast_ns": 95662, "nauty_ns": 2514, "exprA": "Graph.singleColor (Families.grid 3 3)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 9)).toLabel"} +{"family": "grid", "name": "pos-grid4x4", "n": 16, "iso": true, "fast_ns": 145205, "nauty_ns": 3365, "exprA": "Graph.singleColor (Families.grid 4 4)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 16)).toLabel"} +{"family": "grid", "name": "pos-grid5x5", "n": 25, "iso": true, "fast_ns": 277011, "nauty_ns": 6459, "exprA": "Graph.singleColor (Families.grid 5 5)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 25)).toLabel"} +{"family": "hypercube", "name": "pos-q3", "n": 8, "iso": true, "fast_ns": 112717, "nauty_ns": 2955, "exprA": "Graph.singleColor (Families.hypercube 3)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 8)).toLabel"} +{"family": "hypercube", "name": "pos-q4", "n": 16, "iso": true, "fast_ns": 296860, "nauty_ns": 6850, "exprA": "Graph.singleColor (Families.hypercube 4)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 16)).toLabel"} +{"family": "kneser", "name": "pos-kneser5-2", "n": 10, "iso": true, "fast_ns": 149391, "nauty_ns": 3304, "exprA": "Graph.singleColor (Families.kneser 5 2)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 10)).toLabel"} +{"family": "cycles", "name": "neg-c6-vs-2c3", "n": 6, "iso": false, "fast_ns": 43805, "nauty_ns": 2373, "exprA": "Graph.singleColor (Families.cycle 6)", "exprB": "Graph.singleColor (Families.copies 2 (Families.cycle 3))"} +{"family": "cycles", "name": "neg-c8-vs-2c4", "n": 8, "iso": false, "fast_ns": 54902, "nauty_ns": 2964, "exprA": "Graph.singleColor (Families.cycle 8)", "exprB": "Graph.singleColor (Families.copies 2 (Families.cycle 4))"} +{"family": "cycles", "name": "neg-c10-vs-2c5", "n": 10, "iso": false, "fast_ns": 73859, "nauty_ns": 3755, "exprA": "Graph.singleColor (Families.cycle 10)", "exprB": "Graph.singleColor (Families.copies 2 (Families.cycle 5))"} +{"family": "cycles", "name": "neg-c12-vs-2c6", "n": 12, "iso": false, "fast_ns": 89984, "nauty_ns": 4476, "exprA": "Graph.singleColor (Families.cycle 12)", "exprB": "Graph.singleColor (Families.copies 2 (Families.cycle 6))"} +{"family": "cycles", "name": "neg-c14-vs-2c7", "n": 14, "iso": false, "fast_ns": 108501, "nauty_ns": 5468, "exprA": "Graph.singleColor (Families.cycle 14)", "exprB": "Graph.singleColor (Families.copies 2 (Families.cycle 7))"} +{"family": "cycles", "name": "neg-c16-vs-2c8", "n": 16, "iso": false, "fast_ns": 125947, "nauty_ns": 6179, "exprA": "Graph.singleColor (Families.cycle 16)", "exprB": "Graph.singleColor (Families.copies 2 (Families.cycle 8))"} +{"family": "named", "name": "neg-circulant10-2-5-vs-1-5", "n": 10, "iso": false, "fast_ns": 52278, "nauty_ns": 2804, "exprA": "Graph.singleColor (Families.circulant 10 [2, 5])", "exprB": "Graph.singleColor (Families.circulant 10 [1, 5])"} +{"family": "named", "name": "neg-kneser72-vs-johnson72", "n": 21, "iso": false, "fast_ns": 304341, "nauty_ns": 12368, "exprA": "Graph.singleColor (Families.kneser 7 2)", "exprB": "Graph.singleColor (Families.johnson 7 2)"} +{"family": "irregular", "name": "neg-grid3x4-vs-circulant12", "n": 12, "iso": false, "fast_ns": 58757, "nauty_ns": 2975, "exprA": "Graph.singleColor (Families.grid 3 4)", "exprB": "Graph.singleColor (Families.circulant 12 [1, 2])"} +{"family": "irregular", "name": "neg-grid4x4-vs-q4", "n": 16, "iso": false, "fast_ns": 102833, "nauty_ns": 4657, "exprA": "Graph.singleColor (Families.grid 4 4)", "exprB": "Graph.singleColor (Families.hypercube 4)"} +{"family": "irregular", "name": "neg-grid4x5-vs-k8-12", "n": 20, "iso": false, "fast_ns": 460362, "nauty_ns": 17937, "exprA": "Graph.singleColor (Families.grid 4 5)", "exprB": "Graph.singleColor (Families.completeBipartite 8 12)"} +{"family": "irregular", "name": "neg-grid4x6-vs-2grid3x4", "n": 24, "iso": false, "fast_ns": 163683, "nauty_ns": 7080, "exprA": "Graph.singleColor (Families.grid 4 6)", "exprB": "Graph.singleColor (Families.copies 2 (Families.grid 3 4))"} +{"family": "circulant-12", "name": "pos-circulant64", "n": 64, "iso": true, "fast_ns": 1842872, "nauty_ns": 39368, "exprA": "Graph.singleColor (Families.circulant 64 [1, 2])", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 64)).toLabel"} +{"family": "circulant-12", "name": "pos-circulant128", "n": 128, "iso": true, "fast_ns": 6965858, "nauty_ns": 178845, "exprA": "Graph.singleColor (Families.circulant 128 [1, 2])", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 128)).toLabel"} +{"family": "hypercube", "name": "pos-q5", "n": 32, "iso": true, "fast_ns": 939173, "nauty_ns": 20060, "exprA": "Graph.singleColor (Families.hypercube 5)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 32)).toLabel"} +{"family": "hypercube", "name": "pos-q6", "n": 64, "iso": true, "fast_ns": 3428604, "nauty_ns": 70424, "exprA": "Graph.singleColor (Families.hypercube 6)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 64)).toLabel"} +{"family": "kneser", "name": "pos-kneser10-2", "n": 45, "iso": true, "fast_ns": 3032617, "nauty_ns": 65487, "exprA": "Graph.singleColor (Families.kneser 10 2)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 45)).toLabel"} +{"family": "paley", "name": "pos-paley61", "n": 61, "iso": true, "fast_ns": 1885606, "nauty_ns": 34261, "exprA": "Graph.singleColor (Families.paley 61)", "exprB": "A.relabel ((Perm.ofVector? (Vector.ofFn fun i => i + 1)).getD (Perm.id 61)).toLabel"} +{"family": "srg", "name": "neg-paley25-vs-latin5", "n": 25, "iso": false, "fast_ns": 794278, "nauty_ns": 30626, "exprA": "Graph.singleColor (Families.paley 25)", "exprB": "Graph.singleColor (Families.latinSquare 5)"} +{"family": "cycles-dense", "name": "neg-circ48-vs-2circ24", "n": 48, "iso": false, "fast_ns": 638487, "nauty_ns": 31687, "exprA": "Graph.singleColor (Families.circulant 48 [1, 2])", "exprB": "Graph.singleColor (Families.copies 2 (Families.circulant 24 [1, 2]))"} +{"family": "cycles-dense", "name": "neg-circ96-vs-2circ48", "n": 96, "iso": false, "fast_ns": 2230357, "nauty_ns": 138225, "exprA": "Graph.singleColor (Families.circulant 96 [1, 2])", "exprB": "Graph.singleColor (Families.copies 2 (Families.circulant 48 [1, 2]))"} +{"family": "srg", "name": "neg-paley61-vs-circulant61", "n": 61, "iso": false, "fast_ns": 1011299, "nauty_ns": 40019, "exprA": "Graph.singleColor (Families.paley 61)", "exprB": "Graph.singleColor (Families.circulant 61 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])"} diff --git a/reports/bench-results/hexgraphiso-pernode-f8c9bd340878-chungus2.md b/reports/bench-results/hexgraphiso-pernode-f8c9bd340878-chungus2.md new file mode 100644 index 0000000000..d9959d1291 --- /dev/null +++ b/reports/bench-results/hexgraphiso-pernode-f8c9bd340878-chungus2.md @@ -0,0 +1,15 @@ +per-node cost fit from hexgraphiso-cactus-f8c9bd340878-chungus2.jsonl + +| family | sizes | n range | hex n^e | nauty n^e | diff | X (n ≤ 64) | X (n > 64) | +|---|---|---|---|---|---|---|---| +| circulant-12 | 17 | 8–255 | 1.74 | 1.76 | -0.02 | 23.42 | 20.91 | +| circulant-1248 | 12 | 17–225 | 1.79 | 1.86 | -0.07 | 25.18 | 21.53 | +| grid | 10 | 9–225 | 1.66 | 1.66 | 0.00 | 24.09 | 22.67 | +| hypercube | 5 | 8–128 | 1.36 | 1.35 | 0.01 | 23.31 | 19.69 | +| johnson | 10 | 10–231 | 0.99 | 1.15 | -0.16 | 24.14 | 17.36 | +| kneser | 10 | 10–231 | 1.33 | 1.53 | -0.20 | 23.96 | 15.38 | +| latin | 3 | 25–169 | 1.82 | 2.00 | -0.18 | 22.66 | 17.72 | +| paley | 13 | 13–229 | 1.72 | 1.79 | -0.07 | 27.01 | 22.21 | +| random | 18 | 10–255 | 1.88 | 1.97 | -0.09 | 34.52 | 27.09 | + +overall X (geometric mean): n ≤ 64: 26.11, n > 64: 20.82 diff --git a/reports/bench-results/hexgraphiso-tactic-f8c9bd340878-chungus2.json b/reports/bench-results/hexgraphiso-tactic-f8c9bd340878-chungus2.json new file mode 100644 index 0000000000..a689af36c3 --- /dev/null +++ b/reports/bench-results/hexgraphiso-tactic-f8c9bd340878-chungus2.json @@ -0,0 +1,36 @@ +{ + "pos-circulant8": 0.017760920000000003, + "pos-circulant12": 0.04607336000000001, + "pos-circulant16": 0.020358849999999998, + "pos-circulant20": 0.025866149999999997, + "pos-circulant24": 0.08461981, + "pos-circulant32": 0.08987271999999999, + "pos-grid3x3": 0.027843589999999998, + "pos-grid4x4": 0.04042982, + "pos-grid5x5": 0.04810060000000001, + "pos-q3": 0.016851170000000002, + "pos-q4": 0.038934750000000004, + "pos-kneser5-2": 0.021775900000000004, + "neg-c6-vs-2c3": 0.39777425000000005, + "neg-c8-vs-2c4": 0.49485352, + "neg-c10-vs-2c5": 0.5366341499999999, + "neg-c12-vs-2c6": 1.33170207, + "neg-c14-vs-2c7": 1.81226541, + "neg-c16-vs-2c8": 3.3840112, + "neg-circulant10-2-5-vs-1-5": 0.4016506, + "neg-kneser72-vs-johnson72": 4.54548911, + "neg-grid3x4-vs-circulant12": 0.51210526, + "neg-grid4x4-vs-q4": 0.72289175, + "neg-grid4x5-vs-k8-12": 0.71058458, + "neg-grid4x6-vs-2grid3x4": 6.80216901, + "pos-circulant64": 0.14453829, + "pos-circulant128": 0.026455020000000003, + "pos-q5": 0.05175, + "pos-q6": 0.09311300999999998, + "pos-kneser10-2": 0.14359724, + "pos-paley61": 0.030105759999999995, + "neg-paley25-vs-latin5": 4.2800639600000006, + "neg-circ48-vs-2circ24": null, + "neg-circ96-vs-2circ48": null, + "neg-paley61-vs-circulant61": 45.47088024 +} \ No newline at end of file diff --git a/reports/figures/hexbz-cactus-certificate-boundary.svg b/reports/figures/hexbz-cactus-certificate-boundary.svg index 869ec03b6a..d54633985e 100644 --- a/reports/figures/hexbz-cactus-certificate-boundary.svg +++ b/reports/figures/hexbz-cactus-certificate-boundary.svg @@ -1037,7 +1037,7 @@ z - - + @@ -1791,7 +1791,7 @@ L 96.202344 96.641875 - + - @@ -1901,7 +1891,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-chebyshev.svg b/reports/figures/hexbz-cactus-chebyshev.svg index 66833206b6..c8378f93ce 100644 --- a/reports/figures/hexbz-cactus-chebyshev.svg +++ b/reports/figures/hexbz-cactus-chebyshev.svg @@ -1407,34 +1407,34 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2530,7 +2530,7 @@ z - + - + diff --git a/reports/figures/hexbz-cactus-combined.svg b/reports/figures/hexbz-cactus-combined.svg index 7dbfcdb8fb..d63d4377df 100644 --- a/reports/figures/hexbz-cactus-combined.svg +++ b/reports/figures/hexbz-cactus-combined.svg @@ -1656,63 +1656,60 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3740,7 +3737,7 @@ L 89.882344 96.641875 - + - @@ -3874,7 +3861,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-conway.svg b/reports/figures/hexbz-cactus-conway.svg index a708e3f564..0a8ffa041d 100644 --- a/reports/figures/hexbz-cactus-conway.svg +++ b/reports/figures/hexbz-cactus-conway.svg @@ -1637,41 +1637,40 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3788,7 +3787,7 @@ L 89.882344 96.641875 - + - + diff --git a/reports/figures/hexbz-cactus-cyclotomic-products.svg b/reports/figures/hexbz-cactus-cyclotomic-products.svg index 988a0d12e2..b99b9ff50d 100644 --- a/reports/figures/hexbz-cactus-cyclotomic-products.svg +++ b/reports/figures/hexbz-cactus-cyclotomic-products.svg @@ -1423,25 +1423,25 @@ z - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -2411,7 +2411,7 @@ L 89.882344 96.641875 - + + @@ -2541,7 +2580,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-cyclotomic.svg b/reports/figures/hexbz-cactus-cyclotomic.svg index 14ecbecb81..5941e422de 100644 --- a/reports/figures/hexbz-cactus-cyclotomic.svg +++ b/reports/figures/hexbz-cactus-cyclotomic.svg @@ -1503,40 +1503,40 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2643,7 +2643,7 @@ z - + + @@ -2780,7 +2819,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-hoeij-zimmermann.svg b/reports/figures/hexbz-cactus-hoeij-zimmermann.svg index f9b9f84b17..ab11eab9fb 100644 --- a/reports/figures/hexbz-cactus-hoeij-zimmermann.svg +++ b/reports/figures/hexbz-cactus-hoeij-zimmermann.svg @@ -791,8 +791,8 @@ z - @@ -802,12 +802,12 @@ L -3.5 0 " style="stroke: #000000; stroke-width: 0.8"/> - + - + - - + - + @@ -862,18 +862,18 @@ L 507.6 194.758907 - - + - + @@ -881,18 +881,18 @@ L 507.6 112.394659 - - + - + @@ -901,8 +901,8 @@ L 507.6 30.030412 - @@ -912,343 +912,343 @@ L -2 0 " style="stroke: #000000; stroke-width: 0.6"/> - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + @@ -1326,9 +1326,9 @@ z - @@ -1345,22 +1345,22 @@ z " style="stroke: #1f77b4"/> - - - + + + - - - - - - - - + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + @@ -1931,7 +1931,7 @@ z - + - + diff --git a/reports/figures/hexbz-cactus-laguerre.svg b/reports/figures/hexbz-cactus-laguerre.svg index fc03b6f8c4..2dccdf6805 100644 --- a/reports/figures/hexbz-cactus-laguerre.svg +++ b/reports/figures/hexbz-cactus-laguerre.svg @@ -1489,26 +1489,26 @@ z - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -2477,7 +2477,7 @@ L 89.882344 96.641875 - + + @@ -2624,7 +2663,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-legendre.svg b/reports/figures/hexbz-cactus-legendre.svg index f45c2617f7..29483c98cb 100644 --- a/reports/figures/hexbz-cactus-legendre.svg +++ b/reports/figures/hexbz-cactus-legendre.svg @@ -1477,26 +1477,26 @@ z - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -2480,7 +2480,7 @@ z - + + @@ -2627,7 +2666,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-random-products.svg b/reports/figures/hexbz-cactus-random-products.svg index 8dec9777d2..d2aedf746a 100644 --- a/reports/figures/hexbz-cactus-random-products.svg +++ b/reports/figures/hexbz-cactus-random-products.svg @@ -1439,36 +1439,36 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2526,7 +2526,7 @@ L 89.882344 96.641875 - + - @@ -2690,7 +2719,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-sd-products.svg b/reports/figures/hexbz-cactus-sd-products.svg index 05cefdfa1c..ccab2d7b5f 100644 --- a/reports/figures/hexbz-cactus-sd-products.svg +++ b/reports/figures/hexbz-cactus-sd-products.svg @@ -674,8 +674,8 @@ z - @@ -685,12 +685,12 @@ L -3.5 0 " style="stroke: #000000; stroke-width: 0.8"/> - + - + @@ -701,18 +701,18 @@ L -3.5 0 - - + - + @@ -721,18 +721,18 @@ L 507.6 224.486508 - - + - + @@ -742,18 +742,18 @@ L 507.6 171.552399 - - + - + @@ -764,18 +764,18 @@ L 507.6 118.61829 - - + - + @@ -783,8 +783,8 @@ L 507.6 65.684181 - @@ -794,499 +794,499 @@ L -2 0 " style="stroke: #000000; stroke-width: 0.6"/> - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + @@ -1364,16 +1364,16 @@ z - @@ -1390,34 +1390,34 @@ z " style="stroke: #1f77b4"/> - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - + + + + + @@ -2276,7 +2276,7 @@ z - + - @@ -2410,7 +2400,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-swinnerton-dyer.svg b/reports/figures/hexbz-cactus-swinnerton-dyer.svg index 1f046fd476..e1f1275128 100644 --- a/reports/figures/hexbz-cactus-swinnerton-dyer.svg +++ b/reports/figures/hexbz-cactus-swinnerton-dyer.svg @@ -1400,21 +1400,21 @@ z - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -2326,7 +2326,7 @@ L 89.882344 96.641875 - + - @@ -2443,7 +2433,7 @@ z - + diff --git a/reports/figures/hexbz-cactus-wilkinson.svg b/reports/figures/hexbz-cactus-wilkinson.svg index d610fcdbbd..281050b82d 100644 --- a/reports/figures/hexbz-cactus-wilkinson.svg +++ b/reports/figures/hexbz-cactus-wilkinson.svg @@ -1352,21 +1352,21 @@ z - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -2278,7 +2278,7 @@ L 89.882344 96.641875 - + - @@ -2412,7 +2402,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-certificate-boundary.svg b/reports/figures/hexbz-runtime-degree-certificate-boundary.svg index a23cd330ad..b0adfa235b 100644 --- a/reports/figures/hexbz-runtime-degree-certificate-boundary.svg +++ b/reports/figures/hexbz-runtime-degree-certificate-boundary.svg @@ -1139,7 +1139,7 @@ z - - + @@ -1851,7 +1851,7 @@ L 96.202344 96.641875 - + - @@ -1961,7 +1951,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-chebyshev.svg b/reports/figures/hexbz-runtime-degree-chebyshev.svg index e0504fa809..5773e8e1b4 100644 --- a/reports/figures/hexbz-runtime-degree-chebyshev.svg +++ b/reports/figures/hexbz-runtime-degree-chebyshev.svg @@ -1403,34 +1403,34 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2427,7 +2427,7 @@ L 89.882344 96.641875 - + - @@ -2574,7 +2603,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-conway.svg b/reports/figures/hexbz-runtime-degree-conway.svg index b3aa2f37c6..beb2254c67 100644 --- a/reports/figures/hexbz-runtime-degree-conway.svg +++ b/reports/figures/hexbz-runtime-degree-conway.svg @@ -1583,89 +1583,90 @@ z - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3864,7 +3865,7 @@ L 89.882344 96.641875 - + - @@ -4011,7 +4041,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-cyclotomic-products.svg b/reports/figures/hexbz-runtime-degree-cyclotomic-products.svg index 865259e809..dec0a02f17 100644 --- a/reports/figures/hexbz-runtime-degree-cyclotomic-products.svg +++ b/reports/figures/hexbz-runtime-degree-cyclotomic-products.svg @@ -1455,25 +1455,25 @@ z - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -2365,7 +2365,7 @@ L 89.882344 96.641875 - + - @@ -2482,7 +2472,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-cyclotomic.svg b/reports/figures/hexbz-runtime-degree-cyclotomic.svg index a78b62d659..bd4afb9020 100644 --- a/reports/figures/hexbz-runtime-degree-cyclotomic.svg +++ b/reports/figures/hexbz-runtime-degree-cyclotomic.svg @@ -1509,40 +1509,40 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2570,7 +2570,7 @@ L 89.882344 96.641875 - + - @@ -2687,7 +2677,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-hoeij-zimmermann.svg b/reports/figures/hexbz-runtime-degree-hoeij-zimmermann.svg index 42232da9b1..5a8766519b 100644 --- a/reports/figures/hexbz-runtime-degree-hoeij-zimmermann.svg +++ b/reports/figures/hexbz-runtime-degree-hoeij-zimmermann.svg @@ -600,8 +600,8 @@ z - @@ -611,12 +611,12 @@ L -3.5 0 " style="stroke: #000000; stroke-width: 0.8"/> - + - + - - + - + @@ -695,18 +695,18 @@ L 507.6 183.646852 - - + - + @@ -714,8 +714,8 @@ L 507.6 91.760143 - @@ -725,295 +725,295 @@ L -2 0 " style="stroke: #000000; stroke-width: 0.6"/> - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + @@ -1101,9 +1101,9 @@ z - @@ -1120,22 +1120,22 @@ z " style="stroke: #1f77b4"/> - - - + + + - - + - - - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + @@ -1711,7 +1711,7 @@ z - + - @@ -1828,7 +1857,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-laguerre.svg b/reports/figures/hexbz-runtime-degree-laguerre.svg index cdda5ae0fa..5a96c2efac 100644 --- a/reports/figures/hexbz-runtime-degree-laguerre.svg +++ b/reports/figures/hexbz-runtime-degree-laguerre.svg @@ -1424,26 +1424,26 @@ z - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -2347,7 +2347,7 @@ L 89.882344 96.641875 - + - @@ -2494,7 +2523,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-legendre.svg b/reports/figures/hexbz-runtime-degree-legendre.svg index e284acb825..4092572f7b 100644 --- a/reports/figures/hexbz-runtime-degree-legendre.svg +++ b/reports/figures/hexbz-runtime-degree-legendre.svg @@ -1443,26 +1443,26 @@ z - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -2360,7 +2360,7 @@ L 89.882344 96.641875 - + - @@ -2507,7 +2536,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-random-products.svg b/reports/figures/hexbz-runtime-degree-random-products.svg index 3087bab715..859eb35340 100644 --- a/reports/figures/hexbz-runtime-degree-random-products.svg +++ b/reports/figures/hexbz-runtime-degree-random-products.svg @@ -1419,36 +1419,36 @@ z - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2475,7 +2475,7 @@ L 89.882344 96.641875 - + + @@ -2605,7 +2644,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-sd-products.svg b/reports/figures/hexbz-runtime-degree-sd-products.svg index 287314fc9e..9436106c1f 100644 --- a/reports/figures/hexbz-runtime-degree-sd-products.svg +++ b/reports/figures/hexbz-runtime-degree-sd-products.svg @@ -612,8 +612,8 @@ z - @@ -623,12 +623,12 @@ L -3.5 0 " style="stroke: #000000; stroke-width: 0.8"/> - + - + - - + - + @@ -714,18 +714,18 @@ L 507.6 223.691642 - - + - + @@ -735,18 +735,18 @@ L 507.6 170.123729 - - + - + @@ -757,18 +757,18 @@ L 507.6 116.555817 - - + - + @@ -776,8 +776,8 @@ L 507.6 62.987904 - @@ -787,487 +787,487 @@ L -2 0 " style="stroke: #000000; stroke-width: 0.6"/> - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + @@ -1355,16 +1355,16 @@ z - @@ -1381,34 +1381,34 @@ z " style="stroke: #1f77b4"/> - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - + + + + + @@ -2181,7 +2181,7 @@ L 89.882344 96.641875 - + - @@ -2298,7 +2288,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-swinnerton-dyer.svg b/reports/figures/hexbz-runtime-degree-swinnerton-dyer.svg index 8721af126d..87120a6f62 100644 --- a/reports/figures/hexbz-runtime-degree-swinnerton-dyer.svg +++ b/reports/figures/hexbz-runtime-degree-swinnerton-dyer.svg @@ -1363,21 +1363,21 @@ z - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -2217,7 +2217,7 @@ L 89.882344 96.641875 - + - @@ -2334,7 +2324,7 @@ z - + diff --git a/reports/figures/hexbz-runtime-degree-wilkinson.svg b/reports/figures/hexbz-runtime-degree-wilkinson.svg index 07ca9ebd56..1a76de810b 100644 --- a/reports/figures/hexbz-runtime-degree-wilkinson.svg +++ b/reports/figures/hexbz-runtime-degree-wilkinson.svg @@ -1298,21 +1298,21 @@ z - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -2168,7 +2168,7 @@ L 89.882344 96.641875 - + - @@ -2315,7 +2344,7 @@ z - + diff --git a/reports/figures/hexgraphiso-canon-cactus.svg b/reports/figures/hexgraphiso-canon-cactus.svg index 2245c1ec0e..b7d77c4401 100644 --- a/reports/figures/hexgraphiso-canon-cactus.svg +++ b/reports/figures/hexgraphiso-canon-cactus.svg @@ -6,11 +6,11 @@ - 2026-09-12T20:41:10.000675 + 1980-01-01T00:00:00+00:00 image/svg+xml - Matplotlib v3.11.2, https://matplotlib.org/ + Matplotlib v3.11.1, https://matplotlib.org/ @@ -21,62 +21,62 @@ - - - + - - + - @@ -86,41 +86,41 @@ z - + - + - @@ -131,36 +131,36 @@ z - + - + - @@ -171,47 +171,47 @@ z - + - + - @@ -222,56 +222,56 @@ z - + - + - @@ -282,31 +282,31 @@ z - + - + - @@ -320,232 +320,232 @@ z - - - - - - - - - - - @@ -571,29 +571,29 @@ z - + - - + - + - @@ -606,42 +606,42 @@ z - + - + - + - @@ -654,18 +654,18 @@ z - + - + - + @@ -675,49 +675,49 @@ L 462.143574 189.124672 - + - + - + - @@ -730,18 +730,18 @@ z - + - + - + @@ -751,534 +751,522 @@ L 462.143574 77.266785 - + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - + @@ -1286,110 +1274,110 @@ L 462.143574 26.757917 - - - - - - @@ -1417,619 +1405,619 @@ z - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - @@ -2089,92 +2077,92 @@ z - - - + - + - - - - - @@ -2220,64 +2208,64 @@ z - - + - + - - - @@ -2320,23 +2308,23 @@ z - - - + + - + - + @@ -2347,14 +2335,14 @@ L 525.443136 26.16 - - + + - + - + @@ -2366,14 +2354,14 @@ L 600.205968 26.16 - - + + - + - + @@ -2386,14 +2374,14 @@ L 674.9688 26.16 - - + + - + - + @@ -2406,14 +2394,14 @@ L 749.731633 26.16 - - + + - + - + @@ -2426,14 +2414,14 @@ L 824.494465 26.16 - - + + - + - + @@ -2464,20 +2452,20 @@ L 899.257297 26.16 - - - + + + - + - + - + @@ -2485,20 +2473,20 @@ L 925.2 300.982558 - - - + + + - + - + - + @@ -2506,20 +2494,20 @@ L 925.2 245.053615 - - - + + + - + - + - + @@ -2527,20 +2515,20 @@ L 925.2 189.124672 - - - + + + - + - + - + @@ -2548,20 +2536,20 @@ L 925.2 133.195728 - - - + + + - + - + - + @@ -2569,531 +2557,519 @@ L 925.2 77.266785 + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + @@ -3124,714 +3100,714 @@ L 925.2 26.757917 - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - + + + + + + - - + + - - - - - - - + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - + + + + - - + + - - - - - + + + + - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - @@ -3879,25 +3855,25 @@ L 925.2 26.16 - - - + - + @@ -3917,13 +3893,13 @@ L 853.82 209.950781 - - + - + @@ -3945,13 +3921,13 @@ L 853.82 221.951406 - - + - + @@ -3963,13 +3939,13 @@ L 853.82 233.952031 - - + - + @@ -3986,13 +3962,13 @@ L 853.82 245.952656 - - + - + @@ -4007,31 +3983,31 @@ L 853.82 257.953281 - - + - + - @@ -4043,13 +4019,13 @@ z - - + - + @@ -4062,13 +4038,13 @@ L 853.82 281.954531 - - + - + @@ -4081,13 +4057,13 @@ L 853.82 293.955156 - - + - + @@ -4107,631 +4083,631 @@ L 853.82 305.955781 - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4862,10 +4838,10 @@ z - + - + diff --git a/reports/figures/hexgraphiso-pairs-cactus.svg b/reports/figures/hexgraphiso-pairs-cactus.svg index 6b40810fdb..6839ccfb16 100644 --- a/reports/figures/hexgraphiso-pairs-cactus.svg +++ b/reports/figures/hexgraphiso-pairs-cactus.svg @@ -6,11 +6,11 @@ - 2026-09-12T20:49:11.879904 + 1980-01-01T00:00:00+00:00 image/svg+xml - Matplotlib v3.11.2, https://matplotlib.org/ + Matplotlib v3.11.1, https://matplotlib.org/ @@ -21,65 +21,65 @@ - - - + - - + - @@ -89,36 +89,36 @@ z - + - + - @@ -128,47 +128,47 @@ z - + - + - @@ -178,56 +178,56 @@ z - + - + - @@ -237,52 +237,52 @@ z - + - + - - + @@ -293,13 +293,13 @@ z - + - + @@ -312,13 +312,13 @@ L 392.941887 26.16 - + - + @@ -331,13 +331,13 @@ L 450.313724 26.16 - + - + @@ -352,321 +352,321 @@ L 507.685561 26.16 - - - - - - - - - - + + + + + + + + + - - - - - + + + + @@ -704,54 +704,54 @@ z - + - - + - + - - + @@ -764,18 +764,18 @@ z - + - + - + @@ -785,49 +785,49 @@ L 529.2 221.696989 - + - + - + - @@ -840,18 +840,18 @@ z - + - + - + @@ -861,18 +861,18 @@ L 529.2 159.194786 - + - + - + @@ -882,18 +882,18 @@ L 529.2 127.943684 - + - + - + @@ -902,18 +902,18 @@ L 529.2 96.692582 - + - + - + @@ -922,18 +922,18 @@ L 529.2 65.44148 - + - + - + @@ -942,774 +942,774 @@ L 529.2 34.190378 - + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1717,30 +1717,30 @@ L 529.2 35.62035 - - + @@ -1769,299 +1769,299 @@ z - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + @@ -2133,139 +2133,139 @@ z - - - + - + - - - - - - - + + + + + + @@ -2312,38 +2312,38 @@ z - - + - + - - + @@ -2376,37 +2376,37 @@ z - - + - + - - + @@ -2465,390 +2465,390 @@ z - - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + @@ -2899,380 +2899,343 @@ z - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -3298,10 +3261,10 @@ z - + - - + + @@ -3351,8 +3314,8 @@ z - - + + @@ -3360,33 +3323,55 @@ z - - + + @@ -3434,7 +3419,7 @@ z - + diff --git a/reports/figures/hexgraphiso-tactic-times.json b/reports/figures/hexgraphiso-tactic-times.json index 748ebead99..a689af36c3 100644 --- a/reports/figures/hexgraphiso-tactic-times.json +++ b/reports/figures/hexgraphiso-tactic-times.json @@ -1,36 +1,36 @@ { - "pos-circulant8": 0.02202316, - "pos-circulant12": 0.029379750000000007, - "pos-circulant16": 0.02197957999999999, - "pos-circulant20": 0.02565749, - "pos-circulant24": 0.021296590000000004, - "pos-circulant32": 0.022631420000000003, - "pos-grid3x3": 0.020701390000000004, - "pos-grid4x4": 0.028708699999999997, - "pos-grid5x5": 0.027454190000000003, - "pos-q3": 0.024847150000000002, - "pos-q4": 0.024952389999999998, - "pos-kneser5-2": 0.022790130000000002, - "neg-c6-vs-2c3": 0.15629690000000002, - "neg-c8-vs-2c4": 0.27117411, - "neg-c10-vs-2c5": 0.92063605, - "neg-c12-vs-2c6": 0.7407745299999999, - "neg-c14-vs-2c7": 1.11065126, - "neg-c16-vs-2c8": 2.1769824100000004, - "neg-circulant10-2-5-vs-1-5": 0.56304461, - "neg-kneser72-vs-johnson72": 3.20789835, - "neg-grid3x4-vs-circulant12": 0.50481674, - "neg-grid4x4-vs-q4": 0.86244304, - "neg-grid4x5-vs-k8-12": 1.05066628, - "neg-grid4x6-vs-2grid3x4": 6.150000369999999, - "pos-circulant64": 0.027503060000000003, - "pos-circulant128": 0.04059861, - "pos-q5": 0.05916998, - "pos-q6": 0.0284033, - "pos-kneser10-2": 0.032111509999999996, - "pos-paley61": 0.02676119, - "neg-paley25-vs-latin5": 3.6272992499999996, + "pos-circulant8": 0.017760920000000003, + "pos-circulant12": 0.04607336000000001, + "pos-circulant16": 0.020358849999999998, + "pos-circulant20": 0.025866149999999997, + "pos-circulant24": 0.08461981, + "pos-circulant32": 0.08987271999999999, + "pos-grid3x3": 0.027843589999999998, + "pos-grid4x4": 0.04042982, + "pos-grid5x5": 0.04810060000000001, + "pos-q3": 0.016851170000000002, + "pos-q4": 0.038934750000000004, + "pos-kneser5-2": 0.021775900000000004, + "neg-c6-vs-2c3": 0.39777425000000005, + "neg-c8-vs-2c4": 0.49485352, + "neg-c10-vs-2c5": 0.5366341499999999, + "neg-c12-vs-2c6": 1.33170207, + "neg-c14-vs-2c7": 1.81226541, + "neg-c16-vs-2c8": 3.3840112, + "neg-circulant10-2-5-vs-1-5": 0.4016506, + "neg-kneser72-vs-johnson72": 4.54548911, + "neg-grid3x4-vs-circulant12": 0.51210526, + "neg-grid4x4-vs-q4": 0.72289175, + "neg-grid4x5-vs-k8-12": 0.71058458, + "neg-grid4x6-vs-2grid3x4": 6.80216901, + "pos-circulant64": 0.14453829, + "pos-circulant128": 0.026455020000000003, + "pos-q5": 0.05175, + "pos-q6": 0.09311300999999998, + "pos-kneser10-2": 0.14359724, + "pos-paley61": 0.030105759999999995, + "neg-paley25-vs-latin5": 4.2800639600000006, "neg-circ48-vs-2circ24": null, "neg-circ96-vs-2circ48": null, - "neg-paley61-vs-circulant61": 76.74024672 + "neg-paley61-vs-circulant61": 45.47088024 } \ No newline at end of file diff --git a/scripts/check_sturm_sync.py b/scripts/check_sturm_sync.py index 70480b9cee..b1ed5e2c73 100644 --- a/scripts/check_sturm_sync.py +++ b/scripts/check_sturm_sync.py @@ -21,10 +21,8 @@ } -# Mathlib master has moved the Sign modules since Hex's pinned Mathlib release. RENAMES = MODULES | { "HexRealRootsMathlib.Sign": "Mathlib.Topology.Instances.Sign.Connected", - "Mathlib.Data.Sign.Basic": "Mathlib.Basic.Sign.Basic", }