def add_simple_poly(p,i): p=Polynomial(p) if p.is_zero(): return res_p=Polynomial(res.get(i, Polynomial(0, p.ring()))) res[i]=res_p+p if res[i].is_zero(): del res[i] inter=BooleSet(res_p).intersect(BooleSet(p)) add_simple_poly(inter, i+1) return
def proofll(ifthen, reductors, redsb=True, prot=True): if prot and (not ifthen.supposedToBeValid): print "THIS THEOREM IS NOT SUPPOSED TO BE VALID" ip_pre = ifthen.ifpart ip = [] for p in ip_pre: p = Polynomial(p) if p.is_zero(): continue li = list(p.lead().variables()) if len(li) == 1 and (not (li[0] in list(Polynomial(reductors).lead(). variables()))): assert not Polynomial(reductors).is_zero() lead_index = li[0] if redsb: p = ll_red_nf_redsb(p, reductors) reductors = ll_red_nf_redsb(Polynomial(reductors), BooleSet(p. set())) p_nav = p.navigation() reductors = recursively_insert(p_nav.else_branch(), p_nav.value(), reductors) else: ip.append(p) it = ifthen.thenpart if prot: print "proofing:", ifthen ip = logicaland(ip) for c in it: if prot: print "proofing part:", c c = logicalor([BooleConstant(1) + ip, c]) if c.is_zero(): if prot: print "TRUE (trivial)" return True else: c_orig = c if redsb: c = ll_red_nf_redsb(c, reductors) else: c = ll_red_nf_noredsb(c, reductors) if c.is_zero(): if prot: print "TRUE" return True else: if prot: print "FAILED" print "can construct COUNTER EXAMPLE with:", find_one(c) return False
def add_simple_poly(p, i): p = Polynomial(p) if p.is_zero(): return res_p = Polynomial(res.get(i, Polynomial(0, p.ring()))) res[i] = res_p + p if res[i].is_zero(): del res[i] inter = BooleSet(res_p).intersect(BooleSet(p)) add_simple_poly(inter, i + 1) return
def proofll(ifthen, reductors, redsb=True, prot=True): if prot and (not ifthen.supposedToBeValid): print "THIS THEOREM IS NOT SUPPOSED TO BE VALID" ip_pre = ifthen.ifpart ip = [] for p in ip_pre: p = Polynomial(p) if p.is_zero(): continue li = list(p.lead().variables()) if len(li) == 1 and (not (li[0] in list( Polynomial(reductors).lead().variables()))): assert not Polynomial(reductors).is_zero() lead_index = li[0] if redsb: p = ll_red_nf_redsb(p, reductors) reductors = ll_red_nf_redsb(Polynomial(reductors), BooleSet(p.set())) p_nav = p.navigation() reductors = recursively_insert(p_nav.else_branch(), p_nav.value(), reductors) else: ip.append(p) it = ifthen.thenpart if prot: print "proofing:", ifthen ip = logicaland(ip) for c in it: if prot: print "proofing part:", c c = logicalor([BooleConstant(1) + ip, c]) if c.is_zero(): if prot: print "TRUE (trivial)" return True else: c_orig = c if redsb: c = ll_red_nf_redsb(c, reductors) else: c = ll_red_nf_noredsb(c, reductors) if c.is_zero(): if prot: print "TRUE" return True else: if prot: print "FAILED" print "can construct COUNTER EXAMPLE with:", find_one(c) return False