fixpoint algorithm