def what_fnsymbols_used2(prog: L4Contract) -> Iterable[str]: pred = lambda t: isinstance(t, FnApp) def f(t: FnApp): if isinstance(t, FnApp): yield t.fnsymb_name return prog.forEach(pred, f)
def what_fnsymbol_arity_pairs_used( prog: L4Contract) -> Iterable[Tuple[str, int]]: pred = lambda t: isinstance(t, FnApp) def f(t: FnApp): # if isinstance(t, FnApp): yield (t.fnsymb_name, len(t.args)) return prog.forEach(pred, f)