theorem
proved
protocolSpec_matches
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.Foundation.OptionAEmpiricalProtocol on GitHub at line 53.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
50 p.observable = predictedObservable c ∧
51 p.failure = failureMode c
52
53theorem protocolSpec_matches (c : CombinationID) :
54 ProtocolMatches c (protocolSpec c) := by
55 simp [ProtocolMatches, protocolSpec]
56
57/-- Each implemented combination has a unique empirical protocol record. -/
58theorem uniqueProtocolSpec (c : CombinationID) :
59 ∃! p : ProtocolSpec, ProtocolMatches c p := by
60 refine ⟨protocolSpec c, protocolSpec_matches c, ?_⟩
61 intro p hp
62 rcases p with ⟨d, o, f⟩
63 rcases hp with ⟨hd, ho, hf⟩
64 simp [protocolSpec] at hd ho hf ⊢
65 exact ⟨hd, ho, hf⟩
66
67/-- Distinct combinations have distinct protocol records. -/
68theorem protocolSpec_injective : Function.Injective protocolSpec := by
69 intro a b h
70 apply datasetClass_injective
71 exact congrArg ProtocolSpec.dataset h
72
73/-- Equality of empirical protocols is exactly equality of combinations. -/
74theorem protocolSpec_eq_iff (a b : CombinationID) :
75 protocolSpec a = protocolSpec b ↔ a = b := by
76 constructor
77 · intro h
78 exact protocolSpec_injective h
79 · intro h
80 rw [h]
81
82/-- Distinct combinations have distinct complete empirical protocols. -/
83theorem protocolSpec_ne_of_ne {a b : CombinationID} (h : a ≠ b) :