Generalizable Variables A B.Lt Emptyintros []. Defined. Instance Unit_lt : Lt@{Set Set} Unit := fun _ _ => Empty.Lt EmptyTrichotomy (Empty_lt : Lt Empty)intros []. Qed.Trichotomy (Empty_lt : Lt Empty)Trichotomy (Unit_lt : Lt Unit)intros [] [];auto. Defined. Section contents. Context `{Alt : Lt@{Set Set} A} `{Blt : Lt@{Set Set} B}. #[export] Instance sum_lt : Lt@{Set Set} (A |_| B) | 2 := fun s1 s2 => match s1, s2 with | inl a1, inl a2 => a1 < a2 | inr b1, inr b2 => b1 < b2 | inl _, inr _ => Unit | inr _, inl _ => Empty end.Trichotomy (Unit_lt : Lt Unit)A: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy BltTrichotomy sum_ltA: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy BltTrichotomy sum_ltA: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Bltforall x y : A + B, sum_lt x y + ((x = y) + sum_lt y x)A: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Blt
a1, a2: A((a1 < a2) + ((inl a1 = inl a2) + (a2 < a1)))%typeA: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Blt
a1: A
b2: B(Unit + ((inl a1 = inr b2) + Empty))%typeA: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Blt
b1: B
a2: A(Empty + ((inr b1 = inl a2) + Unit))%typeA: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Blt
b1, b2: B((b1 < b2) + ((inr b1 = inr b2) + (b2 < b1)))%typedestruct (trichotomy _ a1 a2) as [?|[?|?]];auto.A: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Blt
a1, a2: A((a1 < a2) + ((inl a1 = inl a2) + (a2 < a1)))%typeauto.A: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Blt
a1: A
b2: B(Unit + ((inl a1 = inr b2) + Empty))%typeauto.A: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Blt
b1: B
a2: A(Empty + ((inr b1 = inl a2) + Unit))%typedestruct (trichotomy _ b1 b2) as [?|[?|?]];auto. Defined. End contents.A: Type0
Alt: Lt A
B: Type0
Blt: Lt B
Trichotomy0: Trichotomy Alt
Trichotomy1: Trichotomy Blt
b1, b2: B((b1 < b2) + ((inr b1 = inr b2) + (b2 < b1)))%type