class DY.SubBaseAttackerKnowledgeTheorem [ExecTraceTypes] [ProofTraceTypes] [TraceInvariant] [BytesFunctor] [BytesInvariants] {ExecEntryT : Type} (ProofEntryT : Type) [ErasableProofEntry ExecEntryT ProofEntryT] [SubTraceInvariant ProofEntryT] [ExecTraceTypes.Has ExecEntryT] [ProofTraceTypes.Has ProofEntryT] [TraceInvariant.Has ProofEntryT] (att : SubBaseAttackerKnowledge ExecEntryT) :
- pf (trBefore : ProofTrace) (entry : ProofEntryT) (b : Bytes) : SubTraceInvariant.invariant trBefore entry → att.attackerKnows (Trace.erase trBefore) (ErasableProofEntry.erase entry) b → b.Publishable trBefore
Instances
instance DY.instSubBaseAttackerKnowledgeTheoremCombine [ExecTraceTypes] [ProofTraceTypes] [TraceInvariant] [BytesFunctor] [BytesInvariants] {n : Nat} {ExecTypes ProofTypes : Fin n → Type} [(id : Fin n) → ErasableProofEntry (ExecTypes id) (ProofTypes id)] [(id : Fin n) → SubTraceInvariant (ProofTypes id)] [ExecTraceTypes.Has (ExecTraceTypes.combine ExecTypes)] [ProofTraceTypes.Has (ProofTraceTypes.combine ProofTypes)] [TraceInvariant.Has (ProofTraceTypes.combine ProofTypes)] (atts : (id : Fin n) → SubBaseAttackerKnowledge (ExecTypes id)) [attThms : ∀ (id : Fin n), SubBaseAttackerKnowledgeTheorem (ProofTypes id) (atts id)] :
SubBaseAttackerKnowledgeTheorem (ProofTraceTypes.combine ProofTypes) (SubBaseAttackerKnowledge.combine atts)
theorem DY.Trace.BaseAttackerKnows_implies_Publishable [ExecTraceTypes] [ProofTraceTypes] [TraceInvariant] [BytesFunctor] [BytesInvariants] [BytesInvariantsProofs] [BaseAttackerKnowledge] [BaseAttackerKnowledgeTheorem] (tr : ProofTrace) (b : Bytes) :
Invariant tr → BaseAttackerKnows (erase tr) b → b.Publishable tr