# Concepts

% Here we should describe at high level the overall design of the compiler, format
% of the manipulated elements, the goal of each pass. It will mainly introduce concepts that will later be developed
% into specific sub-sections (like Input Format / Bindings / Dialect…)

The zamacompiler is based on [MLIR](https://mlir.llvm.org/) (which is part of the LLVM project).
It has 3 internal MLIR dialects to manage different kinds of abstractions: [FHE](), [TFHE]() and [Concrete]()

It lowers programs (usually from the FHE dialect) to binaries or libraries which can be called via the [... API](). 
Its cryptographics primitives are provided by  the [concrete library](https://github.com/zama-ai/concrete).
