imports IngredientsFM as Ing features Pizza {Alergens {Cereals, Milk, Sulphites}, Units {Price 'euro', size 'cm'}, constraint Pizza.Price == sum(Price, Pizza)} mandatory Integer OrderNum String CustomerName Base {abstract} mandatory Mozzarella Oregano optional Tomato optional Ingredients cardinality [1..6] {abstract, Price 1.00} mandatory Ing.Ingredients Size {abstract} alternative Medium {size 35, Price 6.00} Big {size 50, Price 8.50} Integer Portions {constraints [1 <= Portions & Portions < 8, Portions.Price == Portions * 2.00, Portions => Ingredients.Price == 0]} Calzone {Price 9.00} Vegan {Price 1.00} constraints Calzone => !Size & !Calzone => Size Calzone => Tomato & Ing.Ham & Ing.Mushrooms & Ing.Egg Calzone => !(Ing.Bacon | Ing.Chorizo | Ing."Serrano ham" | Ing.Beef | Ing.Chicken | Ing.Peppers | Ing.Onion | Ing.Mushrooms | Ing."Lamb's lettuce" | Ing."Fresh tomato" | Ing.Anchovies | Ing.Capers | Ing.Olives | Ing.Tuna | Ing.Pineapple | Ing.Parmesan | Ing.Gorgonzola | Ing.Emmental | Ing."Barbecue sauce" | Ing."Carbonara sauce" | Ing.Cream | Ing."Fresh longaniza" | Ing.Rocket | Ing.Eggplant | Ing."Caramelized onion" | Ing.Spinach | Ing.Pepperoni) Calzone => Pizza.Price == Pizza.Price - 3.00 Big => Ingredients.Price == 1.50 OrderNum > 0 len(CustomerName) > 0