Discrete analysis