(.module: [library [lux {"-" i64} [abstract [equivalence {"+" Equivalence}]] [control ["[0]" maybe]] [type {"+" :by_example}]]] [// ["[0]" i64 {"+" Sub}]]) (def: sub (maybe.trusted (i64.sub 8))) (def: .public I8 Type (:by_example [size] (Sub size) ..sub (I64 size))) (def: .public equivalence (Equivalence I8) (# ..sub &equivalence)) (def: .public width Nat (# ..sub bits)) (def: .public i8 (-> I64 I8) (# ..sub narrow)) (def: .public i64 (-> I8 I64) (# ..sub wide))