  Satisfiability of Boolean circuits is among the most known and important
problems in theoretical computer science. This problem is NP-complete in
general but becomes polynomial time when restricted either to monotone gates or
linear gates. We go outside Boolean realm and consider circuits built of any
fixed set of gates on an arbitrary large finite domain. From the complexity
point of view this is strictly connected with the problems of solving equations
(or systems of equations) over finite algebras.
  The research reported in this work was motivated by a desire to know for
which finite algebras $\mathbf A$ there is a polynomial time algorithm that
decides if an equation over $\mathbf A$ has a solution. We are also looking for
polynomial time algorithms that decide if two circuits over a finite algebra
compute the same function. Although we have not managed to solve these problems
in the most general setting we have obtained such a characterization for a very
broad class of algebras from congruence modular varieties. This class includes
most known and well-studied algebras such as groups, rings, modules (and their
generalizations like quasigroups, loops, near-rings, nonassociative rings, Lie
algebras), lattices (and their extensions like Boolean algebras, Heyting
algebras or other algebras connected with multi-valued logics including
MV-algebras).
  This paper seems to be the first systematic study of the computational
complexity of satisfiability of non-Boolean circuits and solving equations over
finite algebras. The characterization results provided by the paper is given in
terms of nice structural properties of algebras for which the problems are
solvable in polynomial time.
