Exemplo n.º 1
0
# Fórmula (en notación polaca inversa)
# para obtener uno de sus tableaux

formula = "qpOq-p-YY"

# Se crea el tableau
ta = T.Tableaux(formula)

# Imprime el resultado en consola
if len(ta) == 0:
    print('La fórmula es insatisfacible')
else:
    print('La fórmula es satisfacible.')
    print('Las hojas abiertas del tableaux son:')
    for l in ta:
        print(T.imprime_hoja(l))

print("Par complementario:")

print('\n')

t1 = T.par_complementario([
    T.Tree('1', None, None),
    T.Tree('2', None, None),
    T.Tree('-', None, T.Tree('3', None, None)),
    T.Tree('1', None, None)
])
print(t1)

print('\n')
# Convierto las interpretaciones que arrojo el tableaux denuevo a formulas para aplicar nuevas reglas
formula = []
temporal = []
for i in sol_parcial:
    temporal.append(t.StringtoTree(fun.listatoNPI(fun.genaux(i), ''),
                                   baldosas))

form = temporal[0]
for i in range(1, len(temporal)):
    form = t.Tree('O', form, temporal[i])
formula.append(form)
formula.append(t.StringtoTree(
    'eb-Ye-bYO', baldosas))  #desde el inicio solo se puede ir a un unico sitio
formula.append(t.StringtoTree(
    'lo-Yl-oYO', baldosas))  #solo se puede llegar al final por l o por o
print t.imprime_hoja(formula)
satis, sol_parcial = t.Tableaux([formula], baldosas)
for i in sol_parcial:
    print i
# Regla #3: identificar caminos cerrados
noMuros = [
    x for x in baldosas if (x not in m) and (x != 'a') and (x != 'p')
]  # Escojo las baldosasa que no son muros y son diferentes a el inicio y el final
formula = []
temporal = []
for i in sol_parcial:
    temporal.append(t.StringtoTree(fun.listatoNPI(fun.genaux(i), ''),
                                   baldosas))
form = temporal[0]
for i in range(1, len(temporal)):
    form = t.Tree('O', form, temporal[i])