@@ -525,33 +525,13 @@ theorem isSuccLimit_sub {a b : Ordinal} (ha : IsSuccPrelimit a) (h : b < a) :
525525`b × a`. -/
526526instance monoid : Monoid Ordinal.{u} where
527527 mul a b :=
528- Quotient.liftOn₂ a b
529- (fun ⟨α, r, _⟩ ⟨β, s, _⟩ => ⟦⟨β × α, Prod.Lex s r, inferInstance⟩⟧ :
530- WellOrder → WellOrder → Ordinal)
531- fun ⟨_, _, _⟩ _ _ _ ⟨f⟩ ⟨g⟩ => Quot.sound ⟨RelIso.prodLexCongr g f⟩
528+ Quotient.liftOn₂ a b (fun ⟨α, r, _⟩ ⟨β, s, _⟩ => ⟦⟨β × α, Prod.Lex s r, inferInstance⟩⟧)
529+ fun _ _ _ _ ⟨f⟩ ⟨g⟩ ↦ Quot.sound ⟨RelIso.prodLexCongr g f⟩
532530 mul_assoc a b c :=
533- Quotient.inductionOn₃ a b c fun ⟨α, r, _⟩ ⟨β, s, _⟩ ⟨γ, t, _⟩ =>
534- Eq.symm <|
535- Quotient.sound
536- ⟨⟨prodAssoc _ _ _, @fun a b => by
537- rcases a with ⟨⟨a₁, a₂⟩, a₃⟩
538- rcases b with ⟨⟨b₁, b₂⟩, b₃⟩
539- simp [Prod.lex_def, and_or_left, or_assoc, and_assoc]⟩⟩
540- mul_one a :=
541- inductionOn a fun α r _ =>
542- Quotient.sound
543- ⟨⟨punitProd _, @fun a b => by
544- rcases a with ⟨⟨⟨⟩⟩, a⟩; rcases b with ⟨⟨⟨⟩⟩, b⟩
545- simp only [Prod.lex_def, emptyRelation, false_or]
546- simp only [true_and]
547- rfl⟩⟩
548- one_mul a :=
549- inductionOn a fun α r _ =>
550- Quotient.sound
551- ⟨⟨prodPUnit _, @fun a b => by
552- rcases a with ⟨a, ⟨⟨⟩⟩⟩; rcases b with ⟨b, ⟨⟨⟩⟩⟩
553- simp only [Prod.lex_def, emptyRelation, and_false, or_false]
554- rfl⟩⟩
531+ Quotient.inductionOn₃ a b c fun _ _ _ ↦
532+ .symm <| Quotient.sound ⟨⟨prodAssoc .., by grind [Prod.mk.injEq]⟩⟩
533+ mul_one a := inductionOn a fun α _ _ ↦ Quotient.sound ⟨⟨punitProd α, by simp [Prod.lex_def]⟩⟩
534+ one_mul a := inductionOn a fun α _ _ ↦ Quotient.sound ⟨⟨prodPUnit α, by simp [Prod.lex_def]⟩⟩
555535
556536@[simp]
557537theorem type_prod_lex {α β : Type u} (r : α → α → Prop ) (s : β → β → Prop ) [IsWellOrder α r]
0 commit comments