Master is giving positive examples: ```clafer ExamplePhone1 display LCD GSM CPU keyboard ``` ```clafer ExamplePhone2 display OLED GSM touchscreen ``` ```clafer ExampleTablet1 display AMOLED HSPA CPU 4 touchscreen ``` Master is giving negative examples: negative ```clafer ExamplePhone3 display LCD GSM CPU 4 keyboard ``` negative ```clafer ExampleTablet2 display AMOLED HSPA CPU 4 keyboard ``` Luke builds an abstraction: ```clafer abstract AndroidDevice1 xor display LCD OLED AMOLED [ no keyboard ] GSM HSPA ? CPU 1..4 xor input keyboard touchscreen ``` and a specialization: ```clafer abstract AndroidPhone : AndroidDevice [ GSM ] [ # CPU < 4 ] ``` Luke fixes the abstraction, since not all tablets have `GSM`: ```clafer abstract AndroidDevice xor display LCD OLED AMOLED [ no keyboard ] GSM ? HSPA ? CPU 1..4 xor input keyboard touchscreen ``` Luke validates the abstraction by generating examples and confirming with master: ```clafer AndroidPhone4 : AndroidPhone display AMOLED GSM HSPA CPU 2 input touchscreen ``` Luke discovers new variants and checks whether the positive ones are included and whether negative ones are excluded. ```{.clafer .summary} ``` End.