collect reject RoyalandLoyal
<details key="invariant_Customer9" value="self.memberships->collect( i_Membership : Membership | i_Membership.account )->reject(i_LoyaltyAccount : LoyaltyAccount | not (i_LoyaltyAccount.points > 0))->size() = 0"/>
Genera
invariant5 = context _Customer [invariant_Customer9]
invariant_Customer9 self = ((((ocl self |.| memberships' |->| collect(\i_Membership -> ocl i_Membership |.| account)) |->| reject(\i_LoyaltyAccount -> (notOCL ((ocl i_LoyaltyAccount |.| points') |>| (oclInt 0))))) |->| size)) |==| (oclInt 0)
Valida true en el siguiente modelo donde hay points = 0
example = Model [
(ModelElement 0 (RootCh (Root [1] [2] [3] [4, 5] [6, 7] [8, 9] [10, 11] [12, 13] [14, 15] )))
, (ModelElement 1 (LoyaltyProgramCh (LoyaltyProgram "Programa1" [3] [6, 7] [10, 11] )))
, (ModelElement 2 (CustomerCh (Customer "Edward" "Mr." True 20 [6, 7] [4, 5] )))
, (ModelElement 3 (ProgramPartnerCh (ProgramPartner 1 "Partner1" [1] [8, 9] )))
, (ModelElement 4 (CustomerCardCh (CustomerCard True "Tarjeta1Cliente1" 2 6 [14] )))
, (ModelElement 5 (CustomerCardCh (CustomerCard True "Tarejeta2Cliete1" 2 7 [15] )))
, (ModelElement 6 (MembershipCh (Membership 11 4 [12] 1 2 )))
, (ModelElement 7 (MembershipCh (Membership 10 5 [13] 1 2 )))
, (ModelElement 8 (ServiceCh (Service True 1000 1000 "Service1 cliente1" 9000 3 11 [15] )))
, (ModelElement 9 (ServiceCh (Service True 0 0 "servicio2Cliente1" 0 3 10 [14] )))
, (ModelElement 10 (ServiceLevelCh (ServiceLevel "Silver" 1 [7] [9] )))
, (ModelElement 11 (ServiceLevelCh (ServiceLevel "Gold" 1 [6] [8] )))
, (ModelElement 12 (LoyaltyAccountCh (LoyaltyAccount 0 1 [14] 6 )))
, (ModelElement 13 (LoyaltyAccountCh (LoyaltyAccount 1000 2 [15] 7 )))
, (ModelElement 14 (TransactionCh (Transaction 1000 1000.0 4 12 9 (Just (EarningCh (Earning ))))))
, (ModelElement 15 (TransactionCh (Transaction 2000 0.0 5 13 8 (Just (EarningCh (Earning ))))))
]