pith. machine review for the scientific record. sign in
def

IsFinerThan

definition
show as:
view math explainer →
module
IndisputableMonolith.RecogGeom.ZornRefinement
domain
RecogGeom
line
101 · github
papers citing
none yet

open explainer

Read the cached plain-language explainer.

open lean source

IndisputableMonolith.RecogGeom.ZornRefinement on GitHub at line 101.

browse module

All declarations in this module, on Recognition.

explainer page

A cached Ask Recognition explainer exists for this declaration.

open explainer

depends on

used by

formal source

  98/-- R₁ is *at least as fine as* R₂: whenever R₁ identifies two configurations,
  99    R₂ also identifies them. Equivalently, ~_{R₁} ⊆ ~_{R₂} as sets of pairs.
 100    This is the heterogeneous refinement relation (event types may differ). -/
 101def IsFinerThan {E₁ E₂ : Type*} (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) : Prop :=
 102  ∀ c₁ c₂ : C, Indistinguishable r₁ c₁ c₂ → Indistinguishable r₂ c₁ c₂
 103
 104/-- Refinement is reflexive. -/
 105theorem isFinerThan_refl {E : Type*} (r : Recognizer C E) : IsFinerThan r r :=
 106  fun _ _ h => h
 107
 108/-- Refinement is transitive. -/
 109theorem isFinerThan_trans {E₁ E₂ E₃ : Type*}
 110    (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) (r₃ : Recognizer C E₃)
 111    (h₁₂ : IsFinerThan r₁ r₂) (h₂₃ : IsFinerThan r₂ r₃) :
 112    IsFinerThan r₁ r₃ :=
 113  fun c₁ c₂ h => h₂₃ c₁ c₂ (h₁₂ c₁ c₂ h)
 114
 115/-- The composite is finer than both components. -/
 116theorem composite_isFinerThan_left {E₁ E₂ : Type*}
 117    (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) :
 118    IsFinerThan (r₁ ⊗ r₂) r₁ :=
 119  fun c₁ c₂ h => ((composite_indistinguishable_iff r₁ r₂ c₁ c₂).mp h).1
 120
 121theorem composite_isFinerThan_right {E₁ E₂ : Type*}
 122    (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) :
 123    IsFinerThan (r₁ ⊗ r₂) r₂ :=
 124  fun c₁ c₂ h => ((composite_indistinguishable_iff r₁ r₂ c₁ c₂).mp h).2
 125
 126/-- The composite is the coarsest recognizer finer than both components. -/
 127theorem composite_isFinerThan_glb {E₁ E₂ E₃ : Type*}
 128    (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) (r₃ : Recognizer C E₃)
 129    (h₁ : IsFinerThan r₃ r₁) (h₂ : IsFinerThan r₃ r₂) :
 130    IsFinerThan r₃ (r₁ ⊗ r₂) :=
 131  fun c₁ c₂ h => (composite_indistinguishable_iff r₁ r₂ c₁ c₂).mpr ⟨h₁ c₁ c₂ h, h₂ c₁ c₂ h⟩