A HUME ötvözi a véges automatákat - programozási folyamatokhoz (koordinációs réteg) -, a tisztán funkcionális programozással - programozási kifejezésekhez (kifejező réteg). A koordinációs réteg támogatja az indukciós programozást (feltehetően) végtelen folyamokra és egyéb adatszerkezetekre, míg a kifejező réteg adat- és programszerkezeteken végzett véges programokat támogat. A statikus programanalízissel kiegészített óvatosan konstruált nyelv biztosítja a végességet.
Kifejező réteg
A HUME kifejezései tisztán funkcionálisan definiáltak, (esetlegesen rekurzív) szigorú szemantikai jelöléssel. A kifejezésekből olyan önmagában álló, egyszer lefutó, nem-újrahívható folyamatokat készít a koordinációs réteg szerkezetén keresztül, amelyeknek statikusan bizonyítható tulajdonságai:
- determinisztikusság
- terminálás
- korlátozott tárolókapacitás és időigény
Mindez a megfelelő típusok és a formális szemantika segítségével érhető el
Koordinációs réteg
A HUME koordinációs rétege véges állapotokkal írja le több, egymással kölcsönhatásban levő, újrakezdhető folyamatot, mely folyamatok definíciója a tisztán funkcionális kifejező rétegben található. A koordinációs réteg a következő statikusan bizonyítható tulajdonságokkal rendelkezik:
- igazságosság
- biztonságosság
- holtpontmentesség
- kiéheztetés-mentesség
A koordináció alapegysége a doboz (box), mely absztrakt jelölése egy folyamatnak, ami az input és output csatornák közötti eseményeket írja le, rendelkezik kivételkezeléssel.
A dobozokat drótokkal (wire) kötjük össze, ezzel adjuk meg az egyes folyamatok közötti kapcsolatokat.
Deklarációs réteg
A deklarációs rétegben adjuk meg azokat a típusokat és értékeket, melyeket a koordinációs és a kifejező rétegben használunk.
A koordinációs réteg számára a doboz és drót (box és wire) deklarációkat, míg a kifejező réteg számára a függvénydeklarációkat tartalmazza. Az egyszerű értékekkel ellentétben a függvények lehetnek rekurzívak és kölcsönösen rekurzívak is.