Documentation

GaudisCrypt.Language.Modules.InductiveFunctions

structure GaudisCrypt.InductiveFunction [ProgramSpec] (t : Sort u_2) :
Sort (max (max 2 (u_1 + 1)) u_2)
Instances For
    Instances

      Evaluate an instantiation (a dependent tuple of procedures) by folding over the list inst.toList.

      This matches the evaluation of inst.toModuleTuple under evalMexpr (see evalMexpr_toModuleTuple).

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem GaudisCrypt.InductiveFunction.join_join_right_join_of_idem [ProgramSpec] {t : Type u_1} (ind : InductiveFunction t) [Reducible ind] (join_idem : ∀ (x : t), ind.join x x ≤ x) (x y e : t) :
        ind.join (ind.join x e) (ind.join y e) ≤ ind.join (ind.join x y) e
        Equations
        Instances For
          def GaudisCrypt.InductiveFunction.eval [ProgramSpec] {M : Type (max 1 u_1)} {t : Sort u_2} (ind : InductiveFunction t) [i : IsModule M] (m : M) :
          t
          Equations
          Instances For
            theorem GaudisCrypt.InductiveFunction.app' [ProgramSpec] {t : Type u_1} {A B : ModuleTypeRep} (ind : InductiveFunction t) [Reducible ind] (a : Module (A.arr B)) (b : Module A) :
            ind.eval' (a.app' b) ≤ ind.join (ind.eval a) (ind.eval b)
            theorem GaudisCrypt.InductiveFunction.app [ProgramSpec] {t : Type u_1} {A B : Type (max 1 u_2)} (ind : InductiveFunction t) [Reducible ind] [IsModule A] [IsModule B] (a : Module.Arr A B) (b : A) :
            ind.eval (Module.app a b) ≤ ind.join (ind.eval a) (ind.eval b)
            theorem GaudisCrypt.InductiveFunction.pair' [ProgramSpec] {t : Sort u_1} {A B : ModuleTypeRep} (ind : InductiveFunction t) (a : Module A) (b : Module B) :
            ind.eval' (a.pair' b) = ind.join (ind.eval' a) (ind.eval' b)
            theorem GaudisCrypt.InductiveFunction.pair [ProgramSpec] {t : Sort u_1} {A B : Type (max 1 u_2)} (ind : InductiveFunction t) [IsModule A] [IsModule B] (a : A) (b : B) :
            ind.eval (Module.pair a b) = ind.join (ind.eval a) (ind.eval b)
            theorem GaudisCrypt.InductiveFunction.fst' [ProgramSpec] {t : Type u_1} {A B : ModuleTypeRep} (ind : InductiveFunction t) [Reducible ind] (a : Module (A.prod B)) :
            ind.eval' a.fst' ≤ ind.eval a
            theorem GaudisCrypt.InductiveFunction.fst [ProgramSpec] {t : Type u_1} {A B : Type (max 1 u_2)} (ind : InductiveFunction t) [Reducible ind] [IsModule A] [IsModule B] (a : Module.Prod A B) :
            ind.eval (Module.fst a) ≤ ind.eval a
            theorem GaudisCrypt.InductiveFunction.snd' [ProgramSpec] {t : Type u_1} {A B : ModuleTypeRep} (ind : InductiveFunction t) [Reducible ind] (a : Module (A.prod B)) :
            ind.eval' a.snd' ≤ ind.eval a
            theorem GaudisCrypt.InductiveFunction.snd [ProgramSpec] {t : Type u_1} {A B : Type (max 1 u_2)} (ind : InductiveFunction t) [Reducible ind] [IsModule A] [IsModule B] (a : Module.Prod A B) :
            ind.eval (Module.snd a) ≤ ind.eval a
            • nothing {t : Type} : T t
            • join {t : Type} : T t → T t → T t
            • getter {a s : Type} : Getter a s → T s
            • setter {a s : Type} : Setter a s → T s
            • reduce {a b : Type} (lens : Lens a b) (x : T b) : T a
            • extend {a b : Type} (lens : Lens a b) (x : T a) : T b
            Instances For
              Equations
              Instances For
                Instances

                  Abstract join helpers (replacements for the lattice lemmas le_sup_*, sup_le, …). #

                  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.