pred show {} run show for 8 abstract sig Country {} {} abstract sig Spiciness {} {} abstract sig Veneziana extends Pizza {} { ((@Pizza).(@country)) = (@Italy) some ((((@Veneziana).(@PizzaTopping)).(@KindOfTopping)).(@VegetableTopping)).(@CaperTopping) some ((((@Veneziana).(@PizzaTopping)).(@KindOfTopping)).(@CheeseTopping)).(@MozzarellaTopping) some ((((@Veneziana).(@PizzaTopping)).(@KindOfTopping)).(@VegetableTopping)).(@OliveTopping) some ((((@Veneziana).(@PizzaTopping)).(@KindOfTopping)).(@VegetableTopping)).(@OnionTopping) some ((((@Veneziana).(@PizzaTopping)).(@KindOfTopping)).(@NutTopping)).(@PineKernels) some ((((@Veneziana).(@PizzaTopping)).(@KindOfTopping)).(@FruitTopping)).(@SultanaTopping) some ((((@Veneziana).(@PizzaTopping)).(@KindOfTopping)).(@VegetableTopping)).(@TomatoTopping) } abstract sig Pizza { country : lone @Country , PizzaBase : one Pizza_PizzaBase , PizzaTopping : some Pizza_PizzaTopping , CheeseyPizza : lone Pizza_CheeseyPizza , InterestingPizza : lone Pizza_InterestingPizza , MeatyPizza : lone Pizza_MeatyPizza , NonVegetarianPizza : lone Pizza_NonVegetarianPizza , RealItalianPizza : lone Pizza_RealItalianPizza , SpicyPizza : lone Pizza_SpicyPizza , ThinAndCrispyPizza : lone Pizza_ThinAndCrispyPizza , VegetarianPizza : lone Pizza_VegetarianPizza , VegetarianPizzaEquivalent1 : lone Pizza_VegetarianPizzaEquivalent1 } { (some (((@Pizza).(@PizzaTopping)).(@KindOfTopping)).(@CheeseTopping)) <=> (some (@Pizza).(@CheeseyPizza)) ((#(PizzaTopping)) >= (3)) <=> (some (@Pizza).(@InterestingPizza)) (some (((@Pizza).(@PizzaTopping)).(@KindOfTopping)).(@MeatTopping)) <=> (some (@Pizza).(@MeatyPizza)) (not (some (@Pizza).(@VegetarianPizza))) <=> (some (@Pizza).(@NonVegetarianPizza)) (((((@Pizza).(@country))) = ((@Italy))) && (some ((@Pizza).(@PizzaBase)).(@ThinAndCrispyBase))) <=> (some (@Pizza).(@RealItalianPizza)) (some ((@Pizza).(@PizzaTopping)).(@SpicyTopping)) <=> (some (@Pizza).(@SpicyPizza)) (some ((@Pizza).(@PizzaBase)).(@ThinAndCrispyBase)) <=> (some (@Pizza).(@ThinAndCrispyPizza)) ((not (some (((@Pizza).(@PizzaTopping)).(@KindOfTopping)).(@FishTopping))) && (not (some (((@Pizza).(@PizzaTopping)).(@KindOfTopping)).(@MeatTopping)))) <=> (some (@Pizza).(@VegetarianPizza)) all p : (@Pizza).(@PizzaTopping) | (some (p).(@VegetarianTopping)) <=> (some (@Pizza).(@VegetarianPizzaEquivalent1)) } sig Pizza_PizzaBase { parent : one Pizza , DeepPanBase : lone Pizza_PizzaBase_DeepPanBase , ThinAndCrispyBase : lone Pizza_PizzaBase_ThinAndCrispyBase } { parent = (Pizza <: PizzaBase).this one (DeepPanBase + ThinAndCrispyBase) } sig Pizza_PizzaBase_DeepPanBase { parent : one Pizza_PizzaBase } { parent = (Pizza_PizzaBase <: DeepPanBase).this } sig Pizza_PizzaBase_ThinAndCrispyBase { parent : one Pizza_PizzaBase } { parent = (Pizza_PizzaBase <: ThinAndCrispyBase).this } sig Pizza_PizzaTopping { parent : one Pizza , spiciness : lone @Spiciness , country : lone @Country , KindOfTopping : one Pizza_PizzaTopping_KindOfTopping , SpicyTopping : lone Pizza_PizzaTopping_SpicyTopping , VegetarianTopping : lone Pizza_PizzaTopping_VegetarianTopping } { parent = (Pizza <: PizzaTopping).this ((((this).(@spiciness))) = ((@Hot))) <=> (some (@PizzaTopping).(@SpicyTopping)) ((((((some ((@PizzaTopping).(@KindOfTopping)).(@CheeseTopping)) or (some ((@PizzaTopping).(@KindOfTopping)).(@FruitTopping))) or (some ((@PizzaTopping).(@KindOfTopping)).(@HerbSpiceTopping))) or (some ((@PizzaTopping).(@KindOfTopping)).(@NutTopping))) or (some ((@PizzaTopping).(@KindOfTopping)).(@SauceTopping))) or (some ((@PizzaTopping).(@KindOfTopping)).(@VegetableTopping))) <=> (some (@PizzaTopping).(@VegetarianTopping)) } sig Pizza_PizzaTopping_KindOfTopping { parent : one Pizza_PizzaTopping , CheeseTopping : lone Pizza_PizzaTopping_KindOfTopping_CheeseTopping , FishTopping : lone Pizza_PizzaTopping_KindOfTopping_FishTopping , FruitTopping : lone Pizza_PizzaTopping_KindOfTopping_FruitTopping , HerbSpiceTopping : lone Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping , MeatTopping : lone Pizza_PizzaTopping_KindOfTopping_MeatTopping , NutTopping : lone Pizza_PizzaTopping_KindOfTopping_NutTopping , SauceTopping : lone Pizza_PizzaTopping_KindOfTopping_SauceTopping , VegetableTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping <: KindOfTopping).this one (CheeseTopping + FishTopping + FruitTopping + HerbSpiceTopping + MeatTopping + NutTopping + SauceTopping + VegetableTopping) } sig Pizza_PizzaTopping_KindOfTopping_CheeseTopping { parent : one Pizza_PizzaTopping_KindOfTopping , FourCheesesTopping : lone Pizza_PizzaTopping_KindOfTopping_CheeseTopping_FourCheesesTopping , GoatsCheeseTopping : lone Pizza_PizzaTopping_KindOfTopping_CheeseTopping_GoatsCheeseTopping , GorgonzolaTopping : lone Pizza_PizzaTopping_KindOfTopping_CheeseTopping_GorgonzolaTopping , MozzarellaTopping : lone Pizza_PizzaTopping_KindOfTopping_CheeseTopping_MozzarellaTopping , ParmesanTopping : lone Pizza_PizzaTopping_KindOfTopping_CheeseTopping_ParmesanTopping } { parent = (Pizza_PizzaTopping_KindOfTopping <: CheeseTopping).this one (FourCheesesTopping + GoatsCheeseTopping + GorgonzolaTopping + MozzarellaTopping + ParmesanTopping) parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_CheeseTopping_FourCheesesTopping { parent : one Pizza_PizzaTopping_KindOfTopping_CheeseTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_CheeseTopping <: FourCheesesTopping).this } sig Pizza_PizzaTopping_KindOfTopping_CheeseTopping_GoatsCheeseTopping { parent : one Pizza_PizzaTopping_KindOfTopping_CheeseTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_CheeseTopping <: GoatsCheeseTopping).this } sig Pizza_PizzaTopping_KindOfTopping_CheeseTopping_GorgonzolaTopping { parent : one Pizza_PizzaTopping_KindOfTopping_CheeseTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_CheeseTopping <: GorgonzolaTopping).this } sig Pizza_PizzaTopping_KindOfTopping_CheeseTopping_MozzarellaTopping { parent : one Pizza_PizzaTopping_KindOfTopping_CheeseTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_CheeseTopping <: MozzarellaTopping).this (((@Pizza).(@PizzaTopping)).(@country)) = (@Italy) } sig Pizza_PizzaTopping_KindOfTopping_CheeseTopping_ParmesanTopping { parent : one Pizza_PizzaTopping_KindOfTopping_CheeseTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_CheeseTopping <: ParmesanTopping).this } sig Pizza_PizzaTopping_KindOfTopping_FishTopping { parent : one Pizza_PizzaTopping_KindOfTopping , AnchoviesTopping : lone Pizza_PizzaTopping_KindOfTopping_FishTopping_AnchoviesTopping , MixedSeafoodTopping : lone Pizza_PizzaTopping_KindOfTopping_FishTopping_MixedSeafoodTopping , PrawnsTopping : lone Pizza_PizzaTopping_KindOfTopping_FishTopping_PrawnsTopping } { parent = (Pizza_PizzaTopping_KindOfTopping <: FishTopping).this one (AnchoviesTopping + MixedSeafoodTopping + PrawnsTopping) parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_FishTopping_AnchoviesTopping { parent : one Pizza_PizzaTopping_KindOfTopping_FishTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_FishTopping <: AnchoviesTopping).this } sig Pizza_PizzaTopping_KindOfTopping_FishTopping_MixedSeafoodTopping { parent : one Pizza_PizzaTopping_KindOfTopping_FishTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_FishTopping <: MixedSeafoodTopping).this } sig Pizza_PizzaTopping_KindOfTopping_FishTopping_PrawnsTopping { parent : one Pizza_PizzaTopping_KindOfTopping_FishTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_FishTopping <: PrawnsTopping).this } sig Pizza_PizzaTopping_KindOfTopping_FruitTopping { parent : one Pizza_PizzaTopping_KindOfTopping , SultanaTopping : one Pizza_PizzaTopping_KindOfTopping_FruitTopping_SultanaTopping } { parent = (Pizza_PizzaTopping_KindOfTopping <: FruitTopping).this } sig Pizza_PizzaTopping_KindOfTopping_FruitTopping_SultanaTopping { parent : one Pizza_PizzaTopping_KindOfTopping_FruitTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_FruitTopping <: SultanaTopping).this parent.parent.parent.@spiciness = (@Medium) } sig Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping { parent : one Pizza_PizzaTopping_KindOfTopping , CajunSpiceTopping : lone Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping_CajunSpiceTopping , RosemaryTopping : lone Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping_RosemaryTopping } { parent = (Pizza_PizzaTopping_KindOfTopping <: HerbSpiceTopping).this one (CajunSpiceTopping + RosemaryTopping) } sig Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping_CajunSpiceTopping { parent : one Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping <: CajunSpiceTopping).this parent.parent.parent.@spiciness = (@Hot) } sig Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping_RosemaryTopping { parent : one Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_HerbSpiceTopping <: RosemaryTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_MeatTopping { parent : one Pizza_PizzaTopping_KindOfTopping , ChickenTopping : lone Pizza_PizzaTopping_KindOfTopping_MeatTopping_ChickenTopping , HamTopping : lone Pizza_PizzaTopping_KindOfTopping_MeatTopping_HamTopping , HotSpicedBeefTopping : lone Pizza_PizzaTopping_KindOfTopping_MeatTopping_HotSpicedBeefTopping , PeperoniSausageTopping : lone Pizza_PizzaTopping_KindOfTopping_MeatTopping_PeperoniSausageTopping } { parent = (Pizza_PizzaTopping_KindOfTopping <: MeatTopping).this one (ChickenTopping + HamTopping + HotSpicedBeefTopping + PeperoniSausageTopping) } sig Pizza_PizzaTopping_KindOfTopping_MeatTopping_ChickenTopping { parent : one Pizza_PizzaTopping_KindOfTopping_MeatTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_MeatTopping <: ChickenTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_MeatTopping_HamTopping { parent : one Pizza_PizzaTopping_KindOfTopping_MeatTopping , ParmaHamTopping : lone Pizza_PizzaTopping_KindOfTopping_MeatTopping_HamTopping_ParmaHamTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_MeatTopping <: HamTopping).this } sig Pizza_PizzaTopping_KindOfTopping_MeatTopping_HamTopping_ParmaHamTopping { parent : one Pizza_PizzaTopping_KindOfTopping_MeatTopping_HamTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_MeatTopping_HamTopping <: ParmaHamTopping).this parent.parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_MeatTopping_HotSpicedBeefTopping { parent : one Pizza_PizzaTopping_KindOfTopping_MeatTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_MeatTopping <: HotSpicedBeefTopping).this parent.parent.parent.@spiciness = (@Hot) } sig Pizza_PizzaTopping_KindOfTopping_MeatTopping_PeperoniSausageTopping { parent : one Pizza_PizzaTopping_KindOfTopping_MeatTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_MeatTopping <: PeperoniSausageTopping).this parent.parent.parent.@spiciness = (@Medium) } sig Pizza_PizzaTopping_KindOfTopping_NutTopping { parent : one Pizza_PizzaTopping_KindOfTopping , PineKernels : one Pizza_PizzaTopping_KindOfTopping_NutTopping_PineKernels } { parent = (Pizza_PizzaTopping_KindOfTopping <: NutTopping).this } sig Pizza_PizzaTopping_KindOfTopping_NutTopping_PineKernels { parent : one Pizza_PizzaTopping_KindOfTopping_NutTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_NutTopping <: PineKernels).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_SauceTopping { parent : one Pizza_PizzaTopping_KindOfTopping , TabascoPepperSause : one Pizza_PizzaTopping_KindOfTopping_SauceTopping_TabascoPepperSause } { parent = (Pizza_PizzaTopping_KindOfTopping <: SauceTopping).this } sig Pizza_PizzaTopping_KindOfTopping_SauceTopping_TabascoPepperSause { parent : one Pizza_PizzaTopping_KindOfTopping_SauceTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_SauceTopping <: TabascoPepperSause).this parent.parent.parent.@spiciness = (@Hot) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping { parent : one Pizza_PizzaTopping_KindOfTopping , ArtichokeTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_ArtichokeTopping , AsparagusTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_AsparagusTopping , CaperTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_CaperTopping , GarlicTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_GarlicTopping , LeekTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_LeekTopping , MushroomTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_MushroomTopping , OliveTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_OliveTopping , OnionTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_OnionTopping , PepperTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping , PetitPoisTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PetitPoisTopping , RocketTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_RocketTopping , SpinachTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_SpinachTopping , TomatoTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping } { parent = (Pizza_PizzaTopping_KindOfTopping <: VegetableTopping).this one (ArtichokeTopping + AsparagusTopping + CaperTopping + GarlicTopping + LeekTopping + MushroomTopping + OliveTopping + OnionTopping + PepperTopping + PetitPoisTopping + RocketTopping + SpinachTopping + TomatoTopping) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_ArtichokeTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: ArtichokeTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_AsparagusTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: AsparagusTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_CaperTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: CaperTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_GarlicTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: GarlicTopping).this parent.parent.parent.@spiciness = (@Medium) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_LeekTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: LeekTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_MushroomTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: MushroomTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_OliveTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: OliveTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_OnionTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping , RedOnionTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_OnionTopping_RedOnionTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: OnionTopping).this parent.parent.parent.@spiciness = (@Medium) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_OnionTopping_RedOnionTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping_OnionTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping_OnionTopping <: RedOnionTopping).this } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping , GreenPepperTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_GreenPepperTopping , JalapenoPepperTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_JalapenoPepperTopping , PeperonataTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_PeperonataTopping , SweetPepperTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_SweetPepperTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: PepperTopping).this one (GreenPepperTopping + JalapenoPepperTopping + PeperonataTopping + SweetPepperTopping) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_GreenPepperTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping , HotGreenPepperTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_GreenPepperTopping_HotGreenPepperTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping <: GreenPepperTopping).this } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_GreenPepperTopping_HotGreenPepperTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_GreenPepperTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_GreenPepperTopping <: HotGreenPepperTopping).this parent.parent.parent.parent.parent.@spiciness = (@Hot) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_JalapenoPepperTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping <: JalapenoPepperTopping).this parent.parent.parent.parent.@spiciness = (@Hot) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_PeperonataTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping <: PeperonataTopping).this parent.parent.parent.parent.@spiciness = (@Medium) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping_SweetPepperTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PepperTopping <: SweetPepperTopping).this parent.parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_PetitPoisTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: PetitPoisTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_RocketTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: RocketTopping).this parent.parent.parent.@spiciness = (@Medium) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_SpinachTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: SpinachTopping).this parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping , SlicedTomatoTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping_SlicedTomatoTopping , SundriedTomatoTopping : lone Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping_SundriedTomatoTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping <: TomatoTopping).this one (SlicedTomatoTopping + SundriedTomatoTopping) parent.parent.parent.@spiciness = (@Mild) } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping_SlicedTomatoTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping <: SlicedTomatoTopping).this } sig Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping_SundriedTomatoTopping { parent : one Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping } { parent = (Pizza_PizzaTopping_KindOfTopping_VegetableTopping_TomatoTopping <: SundriedTomatoTopping).this } sig Pizza_PizzaTopping_SpicyTopping { parent : one Pizza_PizzaTopping } { parent = (Pizza_PizzaTopping <: SpicyTopping).this } sig Pizza_PizzaTopping_VegetarianTopping { parent : one Pizza_PizzaTopping } { parent = (Pizza_PizzaTopping <: VegetarianTopping).this } sig Pizza_CheeseyPizza { parent : one Pizza } { parent = (Pizza <: CheeseyPizza).this } sig Pizza_InterestingPizza { parent : one Pizza } { parent = (Pizza <: InterestingPizza).this } sig Pizza_MeatyPizza { parent : one Pizza } { parent = (Pizza <: MeatyPizza).this } sig Pizza_NonVegetarianPizza { parent : one Pizza } { parent = (Pizza <: NonVegetarianPizza).this } sig Pizza_RealItalianPizza { parent : one Pizza } { parent = (Pizza <: RealItalianPizza).this } sig Pizza_SpicyPizza { parent : one Pizza } { parent = (Pizza <: SpicyPizza).this } sig Pizza_ThinAndCrispyPizza { parent : one Pizza } { parent = (Pizza <: ThinAndCrispyPizza).this } sig Pizza_VegetarianPizza { parent : one Pizza } { parent = (Pizza <: VegetarianPizza).this } sig Pizza_VegetarianPizzaEquivalent1 { parent : one Pizza } { parent = (Pizza <: VegetarianPizzaEquivalent1).this } one sig America extends Country {} { } one sig England extends Country {} { } one sig France extends Country {} { } one sig Germany extends Country {} { } one sig Italy extends Country {} { } one sig Hot extends Spiciness {} { } one sig Medium extends Spiciness {} { } one sig Mild extends Spiciness {} { } one sig MyVeneziana extends Veneziana {} { some ((@MyVeneziana).(@PizzaBase)).(@ThinAndCrispyBase) some ((((@MyVeneziana).(@PizzaTopping)).(@KindOfTopping)).(@VegetableTopping)).(@GarlicTopping) }