131b⟨implementation: NonEmpty131b⟩≡ (131a)132a⊳ structures(s:SetSpecies L):Generator % == generate { if not empty? s then for r in structures(s)$Rep repeat yield per r; } UsesGenerator617andSetSpecies117.
132a⟨implementation: NonEmpty131b⟩+≡ (131a)⊲131b132b⊳ isomorphismTypes(s:SetSpecies L):Generator % == generate { if not empty? s then { for r in isomorphismTypes(s)$Rep repeat yield per r; } } UsesGenerator617andSetSpecies117.
132b⟨implementation: NonEmpty131b⟩+≡ (131a)⊲132a133a⊳ local dropEmptyApproximateOrder(ao:SeriesOrder):SeriesOrder == { ao = infinity => infinity; zero?(ao ::I)$I => 1; ao; } local egsOrder():SeriesOrder == { s := generatingSeries$F(L); dropEmptyApproximateOrder(approximateOrder s); } local egsNonEmpty(i:I):GeneratorQ == generate { yield 0$Q; s := generatingSeries$F(L) ::DataStream(Q); for c in elements(s, 1) repeat yield c; } generatingSeries:ExponentialGeneratingSeries == new(egsNonEmpty, egsOrder); UsesDataStream386, ExponentialGeneratingSeries316, Generator617, I47, Q47,andSeriesOrder289.
133a⟨implementation: NonEmpty131b⟩+≡ (131a)⊲132b133b⊳ local ogsOrder():SeriesOrder == { s := isomorphismTypeGeneratingSeries$F(L); dropEmptyApproximateOrder(approximateOrder s); } local ogsNonEmpty(i:I):GeneratorZ == generate { yield 0$Z; s := isomorphismTypeGeneratingSeries$F(L) ::DataStream(Z); for c in elements(s, 1) repeat yield c; } isomorphismTypeGeneratingSeries:OrdinaryGeneratingSeries == { new(ogsNonEmpty, ogsOrder); } UsesDataStream386, Generator617, I47, OrdinaryGeneratingSeries311,SeriesOrder289, andZ47.
133b⟨implementation: NonEmpty131b⟩+≡ (131a)⊲133a133c⊳ local cisOrder():SeriesOrder == { s := cycleIndexSeries$F(L); dropEmptyApproximateOrder(approximateOrder s); } local cisNonEmpty(i:I):Generator P == generate { yield 0$P; s := cycleIndexSeries$F(L) ::DataStream(P); for c in elements(s, 1) repeat yield c; } cycleIndexSeries:CycleIndexSeries == new(cisNonEmpty, cisOrder); UsesCycleIndexSeries330, DataStream386, Generator617, I47, andSeriesOrder289.