Equations
Equations
- Solution.instBEqParam.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- Solution.instReprParam.repr Solution.Param.θ₁ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Solution.Param.θ₁")).group prec✝
- Solution.instReprParam.repr Solution.Param.φ₁ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Solution.Param.φ₁")).group prec✝
- Solution.instReprParam.repr Solution.Param.θ₂ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Solution.Param.θ₂")).group prec✝
- Solution.instReprParam.repr Solution.Param.φ₂ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Solution.Param.φ₂")).group prec✝
- Solution.instReprParam.repr Solution.Param.α prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Solution.Param.α")).group prec✝
Instances For
Equations
- Solution.instReprParam = { reprPrec := Solution.instReprParam.repr }
Equations
- Solution.instFintypeParam = { elems := { val := ↑Solution.Param.enumList, nodup := Solution.Param.enumList_nodup }, complete := Solution.instFintypeParam._proof_1 }
Equations
- q.getParam Solution.Param.θ₁ = q.θ₁
- q.getParam Solution.Param.φ₁ = q.φ₁
- q.getParam Solution.Param.θ₂ = q.θ₂
- q.getParam Solution.Param.φ₂ = q.φ₂
- q.getParam Solution.Param.α = q.α
Instances For
Equations
- One or more equations did not get rendered due to their size.
A Solution.Row aims to closely model of exactly the data in Steininger and Yurkevich's big CSV file.
IDs start from zero. See [SY25] §7.1 for the meaning of all these fields.
- ID : ℕ
- nodeType : ℕ
- nrChildren : ℕ
- IDfirstChild : ℕ
- split : ℕ
- interval : Interval
- S_index : Fin 30
- wx_numerator : ℤ
- wy_numerator : ℤ
- w_denominator : ℕ
- P1_index : ℕ
- P2_index : ℕ
- P3_index : ℕ
- Q1_index : ℕ
- Q2_index : ℕ
- Q3_index : ℕ
- r : ℤ
- sigma_Q : ↥(Finset.Icc 0 1)
Instances For
@[reducible, inline]
Equations
Instances For
Equations
- Solution.Row.ValidGlobal tab row = (row.nodeType = 1 ∧ sorry)
Instances For
instance
Solution.instDecidableValidGlobal
(tab : Table)
(row : Row)
:
Decidable (Row.ValidGlobal tab row)
Equations
- Solution.instDecidableValidGlobal tab row = sorry
Equations
- Solution.Row.ValidLocal tab row = (row.nodeType = 2 ∧ sorry)
Instances For
instance
Solution.instDecidableValidLocal
(tab : Table)
(row : Row)
:
Decidable (Row.ValidLocal tab row)
Equations
- Solution.instDecidableValidLocal tab row = sorry
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
instance
Solution.instDecidableValidSplitParam
(tab : Table)
(row : Row)
(param : Param)
:
Decidable (Row.ValidSplitParam tab row param)
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
Solution.Row.instDecidableValidBinarySplit
(tab : Table)
(row : Row)
:
Decidable (ValidBinarySplit tab row)
Equations
cubeFold fs b as, takes a list of functions fs and a starting value b and a list of
coordinates as and returns a list of length |fs|^|as| consisting of all the ways
of folding the initial value b through some sequence of functions in fs, using values from as.
Equations
- Solution.cubeFold fs b [] = [b]
- Solution.cubeFold fs b (h :: tl) = List.flatMap (fun (f : α → β → β) => Solution.cubeFold fs (f h b) tl) fs
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
Solution.Table.instDecidableHasIntervals
(tab : Table)
(start : ℕ)
(intervals : List Interval)
:
Decidable (tab.HasIntervals start intervals)
Equations
- tab.instDecidableHasIntervals start intervals = Nat.decidableForallFin fun (i : Fin intervals.length) => ∃ (h : start + ↑i < Array.size tab), tab[start + ↑i].interval = intervals[i]
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
Solution.Row.instDecidableValidFullSplit
(tab : Table)
(row : Row)
:
Decidable (ValidFullSplit tab row)
Equations
Equations
- Solution.Row.ValidSplit tab row = (row.nodeType = 3 ∧ (Solution.Row.ValidBinarySplit tab row ∨ Solution.Row.ValidFullSplit tab row))
Instances For
instance
Solution.Row.instDecidableValidSplit
(tab : Table)
(row : Row)
:
Decidable (ValidSplit tab row)
Equations
- asSplit {tab : Table} {row : Row} : ValidSplit tab row → Valid tab row
- asGlobal {tab : Table} {row : Row} : ValidGlobal tab row → Valid tab row
- asLocal {tab : Table} {row : Row} : ValidLocal tab row → Valid tab row
Instances For
Equations
- Solution.instDecidableValid tab row = decidable_of_iff (Solution.Row.ValidSplit tab row ∨ Solution.Row.ValidGlobal tab row ∨ Solution.Row.ValidLocal tab row) ⋯
Equations
- Solution.Row.ValidIx tab i row = (row.ID = i ∧ Solution.Row.Valid tab row ∧ row.ID < Array.size tab)
Instances For
Equations
Equations
- tab.Valid = ∀ (i : Fin (Array.size tab)), Solution.Row.ValidIx tab (↑i) tab[i]
Instances For
Equations
- tab.instDecidableValid = Nat.decidableForallFin fun (i : Fin (Array.size tab)) => Solution.Row.ValidIx tab (↑i) tab[i]
theorem
Solution.Table.Valid.valid_at
{tab : Table}
(htab : tab.Valid)
{i : ℕ}
(hi : i < Array.size tab)
:
Row.ValidIx tab i tab[i]
Equations
Instances For
The common denominator of θ₁, θ₂, φ₁, φ₂, α rational representation in the table. See [SY25 §7.2]
Equations
- Solution.DENOM = 15360000
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- row.toPoseInterval = row.interval.toPoseInterval
Instances For
Equations
- Solution.instCoeIntervalSetPose = { coe := fun (iv : Solution.Interval) => {q : Pose | q ∈ iv.toPoseInterval} }
theorem
Solution.has_intervals_start_in_table
(tab : Table)
(n : ℕ)
(ivs : List Interval)
(hivs : 1 ≤ ivs.length)
(hi : tab.HasIntervals n ivs)
:
theorem
Solution.has_intervals_concat
(tab : Table)
(start : ℕ)
(ivs1 ivs2 : List Interval)
:
tab.HasIntervals start (ivs1 ++ ivs2) ↔ tab.HasIntervals start ivs1 ∧ tab.HasIntervals (start + ivs1.length) ivs2