discrete analysis