fact: Definition sum_Show@{a m} {A : Type@{a}} {B : Type@{a}} {AS:Show@{a m} A} {BS:Show@{a m} B} : Show@{a m} (A+B) := fun s => let (tag, payload) := match s with | inl a => (show_exact "inl"%string, show a) | inr b => (show_exact "inr"%string, show b) end in "("%char << tag << " "%char << payload << ")"%char.
imports: Coq.Strings.String Coq.Program.Wf Coq.PArith.BinPos Coq.ZArith.ZArith ExtLib.Structures.Monoid ExtLib.Structures.Reducible ExtLib.Programming.Injection ExtLib.Data.Char ExtLib.Data.String ExtLib.Data.Fun ExtLib.Core.RelDec