Abstract engines definition