Messages in the inbox of an honest participant signed by themselves are in that participants′ local database.

Unforgeability : StateProperty
Unforgeability s =  {p m}  _ : Honest p  
   m  (s  p) .inbox
   p  m ∙pid
    ────────────────────
    m  (s  p) .db

unforgeability : Invariant Unforgeability
unforgeability (_ , refl , (._ )) {p} m∈ refl
  rewrite let open ∣Base∣ p in lookup✓
  = case m∈ of λ ()
unforgeability {s′} (_ , refl , (_  s→  s ⟩←— tr))
  {p} {m} m∈ refl
  with Rs-, refl , tr
  with IH (m∈ : m  (s  p) .inbox)  unforgeability Rs m∈)
  with s→
... | Deliver {[ p′  m′ } env∈
  = QED
  where
  open ∣Deliver∣ p s env∈

  QED : m  (s′  p) .db
  QED
    with honest? p′
  ... | no _ = IH m∈ refl
  ... | yes hp′
    with p  p′
  ... | no p≢ rewrite lookup✖  hp′  p≢ = IH m∈ refl
  ... | yes refl rewrite lookup✓  it 
    with m  m′
  ... | yes refl = historySound Rs (networkComplete Rs env∈) refl
  ... | no m≢
    with ∈-∷ʳ⁻ m∈
  ... | inj₁ m∈ = IH m∈ refl
  ... | inj₂ m≡ = ⊥-elim $ m≢ m≡
... | AdvanceEpoch
  rewrite let open ∣AdvanceEpoch∣ p s in lookup✓
  = IH m∈ refl
... | Drop _
  = IH m∈ refl
... | LocalStep {p = p′}{mm}{ls′} ls→
  = QED
  where
  open ∣LocalStep∣ p p′ s mm ls′

  QED : m  (s′  p) .db
  QED with p  p′
  QED | no p≢ rewrite lookup✖′ p≢ = IH m∈inbox✖ refl
    where
    m∈inbox✖ : m  (s  m ∙pid) .inbox
    m∈inbox✖ rewrite sym $ lookup✖′ p≢ = m∈
  QED | yes refl rewrite lookup✓′ =
   case ls→ of λ where
    (ProposeBlock _ _ _ _) 
        let
          m∈db :  m  (s  p) .db
          m∈db = IH (m∈inbox✓ refl) refl
        in there m∈db
    (VoteBlock m∈ _ _ _ _ _) 
      let m∈inbox = ∈-─⁻ (AnyFirst⇒Any m∈) (m∈inbox✓ refl)
      in there $′ there $ IH m∈inbox refl
    (RegisterVote m∈ _) 
      let m∈inbox = ∈-─⁻ m∈ (m∈inbox✓ refl)
      in there $ IH m∈inbox refl
    (FinalizeBlock _ _ _ _) 
      IH (m∈inbox✓ refl) refl
   where
    m∈inbox✓ : p  p′  m  ls′ .inbox
    m∈inbox✓ refl rewrite sym lookup✓′ = m∈
... | DishonestLocalStep _ _
  = IH m∈ refl