theorem
proved
composite_cell_subset_right
show as:
view math explainer →
open explainer
Read the cached plain-language explainer.
open lean source
IndisputableMonolith.RecogGeom.Composition on GitHub at line 106.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
formal source
103 rw [composite_resolutionCell]
104 exact Set.inter_subset_left
105
106theorem composite_cell_subset_right (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) (c : C) :
107 ResolutionCell (r₁ ⊗ r₂) c ⊆ ResolutionCell r₂ c := by
108 rw [composite_resolutionCell]
109 exact Set.inter_subset_right
110
111/-! ## Quotient Maps -/
112
113/-- There is a natural map from the composite quotient to the r₁ quotient -/
114def quotientMapLeft (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) :
115 RecognitionQuotient (r₁ ⊗ r₂) → RecognitionQuotient r₁ :=
116 Quotient.lift (recognitionQuotientMk r₁) (fun c₁ c₂ h =>
117 (quotientMk_eq_iff r₁).mpr (composite_refines_left r₁ r₂ h))
118
119/-- There is a natural map from the composite quotient to the r₂ quotient -/
120def quotientMapRight (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) :
121 RecognitionQuotient (r₁ ⊗ r₂) → RecognitionQuotient r₂ :=
122 Quotient.lift (recognitionQuotientMk r₂) (fun c₁ c₂ h =>
123 (quotientMk_eq_iff r₂).mpr (composite_refines_right r₁ r₂ h))
124
125/-- The quotient maps are surjective -/
126theorem quotientMapLeft_surjective (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) :
127 Function.Surjective (quotientMapLeft r₁ r₂) := by
128 intro q
129 obtain ⟨c, rfl⟩ := Quotient.exists_rep q
130 use recognitionQuotientMk (r₁ ⊗ r₂) c
131 rfl
132
133theorem quotientMapRight_surjective (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) :
134 Function.Surjective (quotientMapRight r₁ r₂) := by
135 intro q
136 obtain ⟨c, rfl⟩ := Quotient.exists_rep q