declare fun {From C1 C2 C3} c(methods:M1 attrs:A1)={Unwrap C1} c(methods:M2 attrs:A2)={Unwrap C2} c(methods:M3 attrs:A3)={Unwrap C3} MA1={Arity M1} MA2={Arity M2} MA3={Arity M3} ConfMeth={Minus {Inter MA2 MA3} MA1} ConfAttr={Minus {Inter A1 A2} A3} in if ConfMeth\=nil then raise illegalInheritance(methConf:ConfMeth) end end if ConfAttr\=nil then raise illegalInheritance(attrConf:ConfAttr) end end {Wrap c(methods:{Adjoin {Adjoin M2 M3} M1} attrs:{Union {Union A2 A3} A1})} end