This section contains a definition of Hapi. This presentation is organized in three parts: syntactic specification, semantic specification and examples. Hapi is not Turing Complete; hence, it is not meant to describe general computations. Instead, Hapi is a declarative formal language that lets users specify access policies. A program (or an access specification, as programs are called) determines what are the actions that each user can perform on each resource. These three data types that constitute a program: actors, actions and resources, are defined via an special structure called a concept lattice. Access specifications are organized hierarchically: lower level specifications might either increase or reduce the accesses of upper levels.