Documentation

GaudisCrypt.CounterExamples.FV

@[reducible, inline]
abbrev FV.FV :
Equations
Instances For
    noncomputable def FV.fv_getter {a : Type} {s : Type u_1} (getter : GaudisCrypt.Getter a s) :
    Equations
    Instances For
      noncomputable def FV.fv_setter {a : Type} {s : Type u_1} (setter : GaudisCrypt.Setter a s) :
      Equations
      Instances For
        def FV.fv_reduce {a : Type u_1} {b : Type u_2} (lens : GaudisCrypt.Lens a b) (range : DetermFootprint b) :
        Equations
        Instances For
          def FV.fv_extend {a : Type u_1} {b : Type u_2} (lens : GaudisCrypt.Lens a b) (range : DetermFootprint a) :
          Equations
          Instances For

            Properties of fv_reduce / fv_extend needed for fv_proc_instantiate. #

            These are stated as axioms for review. Once fv_reduce/fv_extend have real definitions they should become theorems. Note: the proof of fv_proc_instantiate needs no properties of fv_getter/fv_setter — they are used opaquely.

            theorem FV.fv_reduce_sup {a : Type u_1} {b : Type u_2} (lens : GaudisCrypt.Lens a b) (r₁ r₂ : DetermFootprint b) :
            fv_reduce lens (r₁ ⊔ r₂) = fv_reduce lens r₁ ⊔ fv_reduce lens r₂
            theorem FV.fv_extend_sup {a : Type u_1} {b : Type u_2} (lens : GaudisCrypt.Lens a b) (r₁ r₂ : DetermFootprint a) :
            fv_extend lens (r₁ ⊔ r₂) = fv_extend lens r₁ ⊔ fv_extend lens r₂

            fv_extend distributes over joins.

            theorem FV.fv_extend_updates {a : Type u_1} {b : Type u_2} (lens : GaudisCrypt.Lens a b) (range : DetermFootprint a) :
            (fv_extend lens range).updates = lens.liftFunction '' range.updates
            theorem FV.fv_reduce_extend {a : Type u_1} {b : Type u_2} (lens : GaudisCrypt.Lens a b) (r : DetermFootprint a) :
            fv_reduce lens (fv_extend lens r) ≤ r

            fv_reduce is a retraction of fv_extend: pushing a footprint forward along a lens and pulling it back recovers it. (Only ≤ is used in the proof.)

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              noncomputable def FV.fv {t : GaudisCrypt.ModuleTypeRep} (m : GaudisCrypt.Module t) :
              Equations
              Instances For
                @[implicit_reducible]
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For