         return "\(self),\t\(generators)"
     }
     
+    public var asAbstract: AbstractSimpleModuleStructure<R> {
+        let torsions = summands.filter{!$0.isFree}.map{$0.divisor}
+        return AbstractSimpleModuleStructure(rank: rank, torsions: torsions)
+    }
+    
     public final class Summand: AlgebraicStructure {
         public let generator: FreeModule<A, R>
         public let divisor: R

//
//           B        A
// 0 -> R^m ---> R^n ---> M -> 0
//
// See: https://en.wikipedia.org/wiki/Free_presentation
//      https://en.wikipedia.org/wiki/Structure_theorem_for_finitely_generated_modules_over_a_principal_ideal_domain#Invariant_factor_decomposition

        internal init(_ generator: FreeModule<A, R>, _ divisor: R) {
            self.generator = generator
            self.divisor = divisor
        }
        
        internal convenience init(_ a: A, _ divisor: R) {
            self.init(FreeModule(a), divisor)
        }
        
        public var isFree: Bool {
