def run(src_file): ctx = ldl.AnalysisContext() u = ctx.get_from_file(src_file) assert not u.diagnostics all_queries = queries(u) all_free_syms = set() for q in all_queries: for term in [q.first, q.second]: all_free_syms.update(term.p_free_symbols()) try: substs = u.root.p_unify_all(list(all_queries), list(all_free_syms)) except ldl.PropertyError: substs = None print("A crash occurred during unification.") print(traceback.print_exc()) if substs is not None: print("Unification success:") for s in substs: print(" {} -> {}".format( s.from_symbol, s.to_term.p_to_string )) else: print("Unification failure")
def run(src_file): ctx = ldl.AnalysisContext() u = ctx.get_from_file(src_file) assert not u.diagnostics for d in defs_to_eval(u): r = d.p_eval_and_print print("{} = {}".format(d.f_ident.text, r))
def run(src_file): ctx = ldl.AnalysisContext() u = ctx.get_from_file(src_file) type_intro = find_Type_intro(u) assert not u.diagnostics for d in targets(u): intro_name = d.f_ident.text try: r = d.f_term.p_synthesize(d) except ldl.PropertyError: r = None print("A crash occurred while attempting to synthesize {}.".format( intro_name)) traceback.print_exc() if r is not None: print("{}: Success".format(intro_name)) print(" {} = {}".format(intro_name, r.p_to_string)) else: print("{} : Failed".format(intro_name))
def run(src_file): ctx = ldl.AnalysisContext() u = ctx.get_from_file(src_file) type_intro = find_Type_intro(u) assert not u.diagnostics for d in targets(u): intro_name = d.f_ident.text try: r = d.f_term.p_constructors except ldl.PropertyError: r = None print("A crash occurred while discovering constructors of {}.". format(intro_name)) traceback.print_exc() if r is not None: print("{}: Success".format(intro_name)) print(" {}".format([x.text for x in r if x != type_intro])) else: print("{} : Failed".format(intro_name))
def run(src_file): ctx = ldl.AnalysisContext() u = ctx.get_from_file(src_file) assert not u.diagnostics for d in defs_to_domain_check(u): def_name = d.f_ident.text try: r = d.p_check_domains(3) except ldl.PropertyError: r = False print( "A crash occurred while domain checking {}.".format(def_name)) traceback.print_exc() if r: print("{}: Success".format(def_name)) for t in [d.f_term] + d.f_term.findall(ldl.Term): dom = t.p_domain_val print(" {}: {}".format(t, dom.p_to_string if dom else "None")) else: print("{} : Failed".format(def_name))
def run(src_file): ctx = ldl.AnalysisContext() u = ctx.get_from_file(src_file) assert not u.diagnostics u.root.dump()