theorem
proved
uniqueProtocolSpec
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Foundation.OptionAEmpiricalProtocol on GitHub at line 58.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
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) :
84 protocolSpec a ≠ protocolSpec b := by
85 intro hp
86 exact h (protocolSpec_injective hp)
87
88theorem c1_c3_protocol_distinct :