Documentation

HexPermGroup.Kernel.Check

One level of a kernel certificate. orbit, reps, invs and parents are read at indices below size only.

  • base : Nat

    The base point.

  • size : Nat

    The number of orbit points.

  • gens : List Nat

    The packed generators of this level.

  • Orbit point j, with orbit.get 0 = base.

  • The packed transversal element mapping base to orbit point j.

  • The packed inverse of reps.get j.

  • parents : Lean.RArray (Nat × Nat)

    For 0 < j, the Schreier-tree edge (i, k) with reps.get j = gens[i] * reps.get k.

  • lookup : Nat

    Field x is j + 1 when x is orbit point j, and 0 off the orbit.

  • next : List (List (Nat × Nat))

    For each generator of the next level, the Schreier-pair indices (i, j) of the Schreier generators whose product it is.

  • inputWords : List (List Nat)

    At the first level only, for each generator, the indices of the inputs whose product it is. Ignored at later levels.

Instances For
    @[instance_reducible]
    Equations
    • One or more equations did not get rendered due to their size.
    @[reducible, inline]

    A kernel certificate: the nontrivial levels of a stabilizer chain.

    Equations
    Instances For

      Generator i of a level (0 out of range).

      Equations
      Instances For
        def Hex.PermGroup.Kernel.schreier (n W : Nat) (L : Level) (i j : Nat) :

        The Schreier generator t_k⁻¹ * s_i * t_j with t_k(base) = s_i(t_j(base)).

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Sift a packed permutation through the levels, accepting as soon as the residual is e.

          Equations
          Instances For
            def Hex.PermGroup.Kernel.pairsOk (n W e : Nat) (L : Level) (rest : List Level) (lo hi : Nat) :

            Items 3 and 5 of the SPEC's checker for the Schreier pairs p with lo ≤ p < hi, where pair p is generator p / size and orbit point p % size.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Item 1: the orbit and lookup table agree, and every point is below n.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                Item 4: the transversal follows its Schreier tree, and the stored inverses are inverses.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  The product of the Schreier generators at the given pairs, leftmost outermost; e for no pairs.

                  Equations
                  Instances For
                    def Hex.PermGroup.Kernel.nextOk (n W e : Nat) (L : Level) (nextGens : List Nat) :

                    Item 6: each generator of the next level is the product of the Schreier generators at its recorded indices.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For

                      The generators of the first of the given levels, or none.

                      Equations
                      Instances For
                        def Hex.PermGroup.Kernel.levelOk (n W e : Nat) (L : Level) (rest : List Level) :

                        Items 1, 4 and 6 for one level followed by rest. Generators need not be closed under inverses: in a finite group the inverse of a generator is one of its powers.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          def Hex.PermGroup.Kernel.inputProduct (n W e : Nat) (inputs : List Nat) :

                          The product of the inputs at the given indices, leftmost outermost; e for no indices.

                          Equations
                          Instances For
                            def Hex.PermGroup.Kernel.inputsOk (n W e : Nat) (inputs : List Nat) (c : List Level) :

                            Item 2 for the inputs: every input sifts through the certificate, and each first-level generator is the product of the inputs at its recorded indices.

                            Equations
                            Instances For

                              Every level checked, each against the levels after it.

                              Equations
                              Instances For

                                The complete kernel check of a certificate for packed inputs of degree n.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For

                                  The order certified by c: the product of its orbit sizes.

                                  Equations
                                  Instances For
                                    theorem Hex.PermGroup.Kernel.pairsOk_append (n W e : Nat) (L : Level) (rest : List Level) {lo mid hi : Nat} (h₁ : lo ≤ mid) (h₂ : mid ≤ hi) (ha : pairsOk n W e L rest lo mid = true) (hb : pairsOk n W e L rest mid hi = true) :
                                    pairsOk n W e L rest lo hi = true
                                    theorem Hex.PermGroup.Kernel.pairsOk_nil (n W e : Nat) (L : Level) (rest : List Level) (k : Nat) :
                                    pairsOk n W e L rest k k = true