Documentation

Noperthedron.SolutionTable.Basic

Validity over a row source #

The proof-producing kernel checker cannot use a flat Array: child lookup in a two-million-row literal would be linear in the child index. Runtime checking, on the other hand, naturally gets rows from an array. Both routes use the same validity predicates below, parameterized only by a total row getter and its logical size. The bounds in the predicates ensure that out-of-range values of the total getter are irrelevant.

structure Noperthedron.Solution.Row.ValidSplitParamAt (get : Row) (size : ) (row : Row) (param : Param) :
Instances For
    theorem Noperthedron.Solution.Row.validSplitParamAt_iff (get : Row) (size : ) (row : Row) (param : Param) :
    ValidSplitParamAt get size row param row.ID < row.IDfirstChild row.IDfirstChild + row.nrChildren size ∃ (nonzero_children : row.nrChildren 0), ∀ (n : Fin row.nrChildren), (get (row.IDfirstChild + n)).interval = Interval.nth_part param row.interval row.nrChildren n
    @[implicit_reducible]
    instance Noperthedron.Solution.instDecidableValidSplitParamAt (get : Row) (size : ) (row : Row) (param : Param) :
    Decidable (Row.ValidSplitParamAt get size row param)
    Equations
    • One or more equations did not get rendered due to their size.

    The row's split code selects a single parameter (via Param.ofSplitCode?), and the row is a valid split of its interval along that parameter.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[implicit_reducible]
      Equations
      • One or more equations did not get rendered due to their size.
      def Noperthedron.Solution.HasIntervalsAt (get : Row) (size start : ) (intervals : List Interval) :
      Equations
      Instances For
        @[implicit_reducible]
        instance Noperthedron.Solution.instDecidableHasIntervalsAt (get : Row) (size start : ) (intervals : List Interval) :
        Decidable (HasIntervalsAt get size start intervals)
        Equations
        def Noperthedron.Solution.Row.ValidFullSplitAt (get : Row) (size : ) (row : Row) :
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          def Noperthedron.Solution.Row.ValidSplitAt (get : Row) (size : ) (row : Row) :
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            inductive Noperthedron.Solution.Row.ValidAt (get : Row) (size : ) (row : Row) :
            Instances For
              theorem Noperthedron.Solution.Row.validAt_iff (get : Row) (size : ) (row : Row) :
              ValidAt get size row ValidSplitAt get size row row.ValidGlobal row.ValidLocal
              @[implicit_reducible]
              instance Noperthedron.Solution.instDecidableValidAt (get : Row) (size : ) (row : Row) :
              Decidable (Row.ValidAt get size row)
              Equations
              def Noperthedron.Solution.Row.ValidIxAt (get : Row) (size i : ) :
              Equations
              Instances For
                Equations
                Instances For

                  The minimum endpoint of an Interval, viewed as a Pose via Rat.cast.

                  Equations
                  Instances For

                    The maximum endpoint of an Interval, viewed as a Pose via Rat.cast.

                    Equations
                    Instances For

                      Each component of iv.toReal.center (real) is the Rat.cast of the corresponding iv.center (rational).

                      @[implicit_reducible]

                      The set of poses lying in the rational interval, defined as Set.Icc of the min/max endpoints; agrees definitionally with iv.toReal.

                      Equations
                      Instances For
                        theorem Noperthedron.Solution.cube_fold_nonempty_aux {α β : Type} {fs : List (αββ)} (hfs : fs []) (b : β) (as : List α) :
                        0 < (cubeFold fs b as).length
                        theorem Noperthedron.Solution.cube_fold_nonempty {α β : Type} {fs : List (αββ)} (hfs : fs []) (b : β) (as : List α) :
                        1 (cubeFold fs b as).length
                        theorem Noperthedron.Solution.cube_fold_halves (h : Param) (tl : List Param) (iv : Interval) (lower upper : ParamIntervalInterval) :
                        cubeFold [lower, upper] iv (h :: tl) = cubeFold [lower, upper] (lower h iv) tl ++ cubeFold [lower, upper] (upper h iv) tl
                        theorem Noperthedron.Solution.has_intervals_start_in_table (get : Row) (size n : ) (ivs : List Interval) (hivs : 1 ivs.length) (hi : HasIntervalsAt get size n ivs) :
                        n < size
                        theorem Noperthedron.Solution.has_intervals_concat (get : Row) (size start : ) (ivs1 ivs2 : List Interval) :
                        HasIntervalsAt get size start (ivs1 ++ ivs2) HasIntervalsAt get size start ivs1 HasIntervalsAt get size (start + ivs1.length) ivs2