Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.53 KB | None | 0 0
  1. def backward_chaining(kb, theorems, substs, variables, lista, lista_coeficienti = [], coef=None):
  2.     if len(theorems) == 0:
  3.         lista += [substs]
  4.         if coef != None:
  5.             print(coef)
  6.         return True
  7.  
  8.     is_proved = False
  9.     print("Trying to demonstrate ")
  10.     print_formula(theorems[0])
  11.     q_prim = substitute(theorems[0], substs)
  12.  
  13.     if q_prim == None and substs == {}:
  14.         q_prim = theorems[0]
  15.  
  16.     print("Substituted it with: ")
  17.     print_formula(q_prim)
  18.     print("")
  19.     for sentence in kb:
  20.         substs_prim = unify(get_conclusion(sentence), q_prim)
  21.         if substs_prim == False:
  22.             continue
  23.         if substs_prim != {}:
  24.             print("Unified it into")
  25.         new_substs = copy.deepcopy(substs)
  26.         for (k, v) in substs_prim.items():
  27.             print("Variable " + str(k) + " value ", end = '')
  28.             print_formula(v)
  29.             new_substs[k] = v
  30.         print("")
  31.  
  32.         new_coef = None
  33.         if coef != None:
  34.             new_coef = coef
  35.  
  36.             minimum = 1
  37.             for goal in get_premises(sentence):
  38.                 minimum = min(minimum, goal[3])
  39.                 new_coef *= minimum
  40.  
  41.         new_goals = get_premises(sentence) + theorems[1:]
  42.  
  43.         if new_goals != []:
  44.             print("New theorems to be proven ")
  45.         for goal in new_goals:
  46.             print_formula(goal)
  47.         print("")
  48.  
  49.         is_proved |=  backward_chaining(kb, new_goals, new_substs, variables, lista, lista_coeficienti, new_coef)
  50.  
  51.     return is_proved
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement