Documentation

Examples.Ratchet.Proof

Instances
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem DY.Example.Ratchet.computeTranscriptHash_inj [HasProofTrace] (previousTxHash1 : Bytes) (elem1 : TranscriptElement) (previousTxHash2 : Bytes) (elem2 : TranscriptElement) :
      computeTranscriptHash previousTxHash1 elem1 = computeTranscriptHash previousTxHash2 elem2 → previousTxHash1 = previousTxHash2 ∧ elem1 = elem2
      Equations
      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem DY.Example.Ratchet.stateTxHashLabel_eq [HasProofTrace] (transcript : Transcript) (h : 2 ≤ List.length transcript) :
          stateTxHashLabel (transcriptToHash transcript) = (stateLabel transcript[0].recipient transcript).join (stateLabel transcript[1].recipient transcript)
          @[instance_reducible]
          Equations
          • One or more equations did not get rendered due to their size.
          Equations
          Instances For
            Equations
            Instances For
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem DY.Example.Ratchet.labelBeforeEvent_canFlow_labelBeforeTimestamp [HasProofTrace] (l : Label) (me other : Participant) (transcript : Transcript) (i : Nat) (tr : ExecTrace) :
                i ≤ Trace.length tr → (∃ (k : Bytes), Trace.EventLogged (RatchetEvent.ReceiveUpdate me other transcript k) (Trace.prefix tr i)) → (∀ (i' : Nat), i' < i → ¬∃ (k : Bytes), Trace.EventLogged (RatchetEvent.ReceiveUpdate me other transcript k) (Trace.prefix tr i')) → (labelBeforeEvent l me other transcript).canFlow (labelBeforeTimestamp l (i - 1)) tr
                @[irreducible]
                noncomputable def DY.Example.Ratchet.minimum.aux (p : Nat → Prop) (i1 i2 : Nat) :
                Equations
                Instances For
                  theorem DY.Example.Ratchet.minimum.aux.thm (p : Nat → Prop) (i1 i2 : Nat) :
                  (∀ (i : Nat), i < i1 → ¬p i) → p i2 → p (aux p i1 i2) ∧ ∀ (i : Nat), i < aux p i1 i2 → ¬p i
                  theorem DY.Example.Ratchet.minimum (p : Nat → Prop) (i : Nat) (h : p i) :
                  ∃ (min : Nat), p min ∧ ∀ (i' : Nat), i' < min → ¬p i'
                  theorem DY.Example.Ratchet.event_minimum_prefix [HasProofTrace] {EventT : Type} [ExecTraceTypes.Has (ProtocolEvent.ExecEntryT EventT)] (pred : EventT → Prop) (tr : ExecTrace) :
                  (∃ (ev : EventT), pred ev ∧ Trace.EventLogged ev tr) → ∃ (i : Nat), ∃ (ev' : EventT), pred ev' ∧ Trace.EventLoggedAt ev' i tr ∧ Trace.EventLogged ev' (Trace.prefix tr (i + 1)) ∧ ∀ (i' : Nat) (ev'' : EventT), i' ≤ i → pred ev'' → ¬Trace.EventLogged ev'' (Trace.prefix tr i')
                  Equations
                  Instances For
                    Equations
                    Instances For
                      Equations
                      Instances For
                        theorem DY.Example.Ratchet.keyLabelMyTurn_eq [HasProofTrace] (me other : Participant) (transcript : Transcript) :
                        2 ≤ List.length transcript → keyLabelMyTurn me other transcript = ((stateLabel me transcript).join (stateLabel other transcript)).join ((keyLabelOtherTurn me other (List.tail transcript)).meet ((stateLabel me (List.tail transcript)).join ((stateLabel other transcript).join (labelBeforeEvent (ltkLabel other) me other transcript))))
                        theorem DY.Example.Ratchet.keyLabelOtherTurn_eq [HasProofTrace] (me other : Participant) (transcript : Transcript) :
                        2 ≤ List.length transcript → keyLabelOtherTurn me other transcript = ((stateLabel me transcript).join (stateLabel other transcript)).join ((keyLabelMyTurn me other (List.tail transcript)).meet ((stateLabel me transcript).join ((stateLabel other (List.tail transcript)).join (labelBeforeEvent (ltkLabel other) me other (List.tail transcript)))))
                        @[instance_reducible]
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Equations
                        Instances For
                          @[instance_reducible]
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances
                            @[instance_reducible]
                            Equations
                            • One or more equations did not get rendered due to their size.
                            @[instance_reducible]
                            Equations
                            • One or more equations did not get rendered due to their size.
                            @[instance_reducible]
                            Equations
                            • One or more equations did not get rendered due to their size.
                            @[instance_reducible]
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances
                              instance DY.Example.Ratchet.computeTranscriptHash.proof [HasTraceInvariant] (previousTranscriptHash : Bytes) (elem : TranscriptElement) :
                              HoareTriplePure (computeTranscriptHash previousTranscriptHash elem) (fun (tr : ProofTrace) => previousTranscriptHash.Publishable tr ∧ elem.dhPk.Publishable tr) fun (res : Bytes) (tr : ProofTrace) => res.Publishable tr
                              instance DY.Example.Ratchet.initiate.proof [HasTraceInvariant] (me other : Participant) (mySigKeyHandle : Nat) :
                              HoareTriple (initiate me other mySigKeyHandle) (fun (x : ProofTrace) => True) fun (x : Nat × Nat) (x_1 : ProofTrace) => True
                              instance DY.Example.Ratchet.processInitiate.proof [HasTraceInvariant] (me other : Participant) (otherVerifKeyHandle msgHandle : Nat) :
                              HoareTriple (processInitiate me other otherVerifKeyHandle msgHandle) (fun (x : ProofTrace) => True) fun (x : Nat) (x_1 : ProofTrace) => True
                              instance DY.Example.Ratchet.sendUpdate.proof [HasTraceInvariant] (me : Participant) (mySigKeyHandle stHandle : Nat) :
                              HoareTriple (sendUpdate me mySigKeyHandle stHandle) (fun (x : ProofTrace) => True) fun (x : Nat × Nat) (x_1 : ProofTrace) => True
                              theorem DY.Example.Ratchet.eventLogged_receiveUpdate_dhPk_label [HasTraceInvariant] (me recipient : Participant) (transcript : Transcript) (k : Bytes) (tr : ProofTrace) (h_transcript : 2 ≤ List.length transcript) :
                              Trace.Invariant tr → Trace.EventLogged (RatchetEvent.ReceiveUpdate me recipient transcript k) (Trace.erase tr) → ((stateLabel recipient transcript).join (labelBeforeEvent (ltkLabel recipient) me recipient transcript)).canFlow ((List.head transcript ⋯).dhPk.dhSkLabel tr) (Trace.erase tr)
                              theorem DY.Example.Ratchet.eventLogged_receiveUpdate_key_label [HasTraceInvariant] (me recipient : Participant) (transcript : Transcript) (k : Bytes) (tr : ProofTrace) :
                              2 ≤ List.length transcript → Trace.Invariant tr → Trace.EventLogged (RatchetEvent.ReceiveUpdate me recipient transcript k) (Trace.erase tr) → (keyLabelMyTurn me recipient transcript).canFlow (k.label tr) (Trace.erase tr)
                              instance DY.Example.Ratchet.processUpdate.proof [HasTraceInvariant] (me : Participant) (otherVerifKeyHandle stHandle msgHandle : Nat) :
                              HoareTriple (processUpdate me otherVerifKeyHandle stHandle msgHandle) (fun (x : ProofTrace) => True) fun (x : Nat) (x_1 : ProofTrace) => True