@@ -359,49 +359,49 @@ instance subsingleton : Subsingleton (Φ.Iteration j) where
359
359
suffices iter₁.F = iter₂.F by aesop
360
360
revert iter₁ iter₂
361
361
induction j using SuccOrder.limitRecOn with
362
- | hm j h =>
363
- obtain rfl := h.eq_bot
364
- intro iter₁ iter₂
365
- refine ext (fun k₁ k₂ h₁₂ h₂ ↦ ?_)
366
- obtain rfl : k₂ = ⊥ := by simpa using h₂
367
- obtain rfl : k₁ = ⊥ := by simpa using h₁₂
368
- apply mapEq_refl _ _ (by simp only [obj_bot])
369
- | hs j hj₁ hj₂ =>
370
- intro iter₁ iter₂
371
- refine ext (fun k₁ k₂ h₁₂ h₂ ↦ ?_)
372
- have h₀ := Order.le_succ j
373
- replace hj₂ := hj₂ (iter₁.trunc h₀) (iter₂.trunc h₀)
374
- have hsucc := Functor.congr_obj hj₂ ⟨j, by simp⟩
375
- dsimp at hj₂ hsucc
376
- wlog h : k₂ ≤ j generalizing k₁ k₂
377
- · obtain h₂ | rfl := h₂.lt_or_eq
378
- · exact this _ _ _ _ ((Order.lt_succ_iff_of_not_isMax hj₁).1 h₂)
379
- · by_cases h' : k₁ ≤ j
380
- · apply mapEq_trans _ h₀ (this k₁ j h' h₀ (by simp))
381
- simp only [MapEq, ← arrowSucc_def _ _ (Order.lt_succ_of_not_isMax hj₁),
382
- arrowSucc_eq, hsucc]
383
- · simp only [not_le] at h'
384
- obtain rfl : k₁ = Order.succ j := le_antisymm h₁₂
385
- ((Order.succ_le_iff_of_not_isMax hj₁).2 h')
386
- rw [MapEq, arrowMap_refl, arrowMap_refl,
387
- obj_succ _ _ h', obj_succ _ _ h', hsucc]
388
- simp only [MapEq, ← arrowMap_restrictionLE _ (Order.le_succ j) _ _ _ h, hj₂]
389
- | hl j h₁ h₂ =>
390
- intro iter₁ iter₂
391
- refine ext (fun k₁ k₂ h₁₂ h₃ ↦ ?_)
392
- wlog h₄ : k₂ < j generalizing k₁ k₂; swap
393
- · have := h₂ k₂ h₄ (iter₁.trunc h₄.le) (iter₂.trunc h₄.le)
394
- simp at this
395
- simp only [MapEq, ← arrowMap_restrictionLE _ h₄.le _ _ _ (by rfl), this]
396
- · obtain rfl : j = k₂ := le_antisymm (by simpa using h₄) h₃
397
- have : restrictionLT iter₁.F le_rfl = restrictionLT iter₂.F le_rfl :=
398
- Arrow.functor_ext (fun _ l _ ↦ this _ _ _ _ l.2 )
399
- by_cases h₅ : k₁ < j
400
- · dsimp [MapEq]
401
- simp_rw [arrowMap_limit _ _ h₁ _ _ h₅, this]
402
- · obtain rfl : k₁ = j := le_antisymm h₁₂ (by simpa using h₅)
403
- apply mapEq_refl
404
- simp only [obj_limit _ _ h₁, this]
362
+ | isMin j h =>
363
+ obtain rfl := h.eq_bot
364
+ intro iter₁ iter₂
365
+ refine ext (fun k₁ k₂ h₁₂ h₂ ↦ ?_)
366
+ obtain rfl : k₂ = ⊥ := by simpa using h₂
367
+ obtain rfl : k₁ = ⊥ := by simpa using h₁₂
368
+ apply mapEq_refl _ _ (by simp only [obj_bot])
369
+ | succ j hj₁ hj₂ =>
370
+ intro iter₁ iter₂
371
+ refine ext (fun k₁ k₂ h₁₂ h₂ ↦ ?_)
372
+ have h₀ := Order.le_succ j
373
+ replace hj₂ := hj₂ (iter₁.trunc h₀) (iter₂.trunc h₀)
374
+ have hsucc := Functor.congr_obj hj₂ ⟨j, by simp⟩
375
+ dsimp at hj₂ hsucc
376
+ wlog h : k₂ ≤ j generalizing k₁ k₂
377
+ · obtain h₂ | rfl := h₂.lt_or_eq
378
+ · exact this _ _ _ _ ((Order.lt_succ_iff_of_not_isMax hj₁).1 h₂)
379
+ · by_cases h' : k₁ ≤ j
380
+ · apply mapEq_trans _ h₀ (this k₁ j h' h₀ (by simp))
381
+ simp only [MapEq, ← arrowSucc_def _ _ (Order.lt_succ_of_not_isMax hj₁),
382
+ arrowSucc_eq, hsucc]
383
+ · simp only [not_le] at h'
384
+ obtain rfl : k₁ = Order.succ j := le_antisymm h₁₂
385
+ ((Order.succ_le_iff_of_not_isMax hj₁).2 h')
386
+ rw [MapEq, arrowMap_refl, arrowMap_refl,
387
+ obj_succ _ _ h', obj_succ _ _ h', hsucc]
388
+ simp only [MapEq, ← arrowMap_restrictionLE _ (Order.le_succ j) _ _ _ h, hj₂]
389
+ | isSuccLimit j h₁ h₂ =>
390
+ intro iter₁ iter₂
391
+ refine ext (fun k₁ k₂ h₁₂ h₃ ↦ ?_)
392
+ wlog h₄ : k₂ < j generalizing k₁ k₂; swap
393
+ · have := h₂ k₂ h₄ (iter₁.trunc h₄.le) (iter₂.trunc h₄.le)
394
+ simp at this
395
+ simp only [MapEq, ← arrowMap_restrictionLE _ h₄.le _ _ _ (by rfl), this]
396
+ · obtain rfl : j = k₂ := le_antisymm (by simpa using h₄) h₃
397
+ have : restrictionLT iter₁.F le_rfl = restrictionLT iter₂.F le_rfl :=
398
+ Arrow.functor_ext (fun _ l _ ↦ this _ _ _ _ l.2 )
399
+ by_cases h₅ : k₁ < j
400
+ · dsimp [MapEq]
401
+ simp_rw [arrowMap_limit _ _ h₁ _ _ h₅, this]
402
+ · obtain rfl : k₁ = j := le_antisymm h₁₂ (by simpa using h₅)
403
+ apply mapEq_refl
404
+ simp only [obj_limit _ _ h₁, this]
405
405
406
406
lemma congr_obj {j₁ j₂ : J} (iter₁ : Φ.Iteration j₁) (iter₂ : Φ.Iteration j₂)
407
407
(k : J) (h₁ : k ≤ j₁) (h₂ : k ≤ j₂) :
0 commit comments