\import Algebra.Pointed
\import Set
\class SubPointed \extends SubSet {
\override S : Pointed
| contains_ide : contains 1
\func struct : Pointed \cowith
| BaseSet => SubSet.struct
| ide => (1, contains_ide)
} \where {
\func max {A : Pointed} : SubPointed \cowith
| SubSet => DecSubSet.max {A}
| contains_ide => ()
}
\class DecSubPointed \extends SubPointed, DecSubSet
\class SubAddPointed \extends SubSet {
\override S : AddPointed
| contains_zro : contains 0
\func struct : AddPointed \cowith
| BaseSet => SubSet.struct
| zro => (0, contains_zro)
} \where {
\func max {A : AddPointed} : SubAddPointed \cowith
| SubSet => DecSubSet.max {A}
| contains_zro => ()
}