abbrev
definition
PrimitiveObserver
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Foundation.ObserverFromRecognition on GitHub at line 52.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
49/-- A primitive observer is exactly a primitive interface. This is a naming
50choice, but it is important: the observer is not external to recognition; it is
51the interface structure recognition forces. -/
52abbrev PrimitiveObserver (K : Type*) := PrimitiveInterface K
53
54/-- The observer kernel is reflexive. -/
55theorem kernel_refl {K : Type*} (I : PrimitiveInterface K) (x : K) :
56 I.kernel x x := rfl
57
58/-- The observer kernel is symmetric. -/
59theorem kernel_symm {K : Type*} (I : PrimitiveInterface K) {x y : K}
60 (h : I.kernel x y) : I.kernel y x := h.symm
61
62/-- The observer kernel is transitive. -/
63theorem kernel_trans {K : Type*} (I : PrimitiveInterface K) {x y z : K}
64 (hxy : I.kernel x y) (hyz : I.kernel y z) : I.kernel x z :=
65 hxy.trans hyz
66
67/-- Every primitive interface partitions its carrier into observational
68equivalence classes. -/
69theorem kernel_is_equivalence {K : Type*} (I : PrimitiveInterface K) :
70 Equivalence (I.kernel) :=
71 ⟨kernel_refl I,
72 fun {x y} h => kernel_symm I (x := x) (y := y) h,
73 fun {x y z} h₁ h₂ => kernel_trans I (x := x) (y := y) (z := z) h₁ h₂⟩
74
75/-! ## Non-Trivial Recognition -/
76
77/-- A carrier has non-trivial recognition when at least two configurations are
78distinguishable. At the primitive floor this is simply the existence of a
79non-equality. -/
80def NontrivialRecognition (K : Type*) : Prop :=
81 ∃ x y : K, equalityDistinction K x y
82