1 votos

Se necesita ayuda para entender la paramodulación en Prover9.

Para ayudarme a entender la paramodulación en general estoy tratando de entender la particular Prover9 ejemplo más abajo. Prover9 es un probador de teoremas automatizado para lógica de primer orden y ecuacional que utiliza la paramodulación y la resolución.

En el Salida de Prover9 abajo hay tres axiomas en las líneas 1, 2 y 3. El teorema a demostrar, o meta, aparece en la línea 4. Los axiomas se transforman en forma de cláusula en las líneas 5, 6 y 7. El objetivo se niega en la línea 8. El objetivo negado se utilizará para la resolución en la línea 19. La justificación de la derivación de cada línea aparece entre corchetes al final de la misma. De acuerdo con la Glosario Prover9 :

Una inferencia de paramodulación consiste en dos padres y un hijo. El padre padre que contiene la igualdad utilizada para la sustitución es el padre from o la cláusula from, la igualdad es el literal from, y el lado lado de la igualdad que se unifica con el término que se sustituye es el término from. El término reemplazado es el término into, el literal que contiene el término sustituido es el literal into, y el padre que contiene el término reemplazado es el padre into o la cláusula into.

No entiendo la derivación de la línea 9. Intuitivamente, puedo ver que la línea 9 es la niño de padre líneas 5 y 6. A partir de los axiomas se pueden igualar los lados izquierdos de ambas líneas. Llamaré a esta igualdad 9a.

9a turn(move(turn(move(turn(move(turn(move(x)))))))) = turn(turn(turn(turn(x))))

Ahora la línea 9 tiene los primeros términos, turn(...) a la izquierda y a la derecha de la igualdad en 9a eliminado. La izquierda y la derecha de la línea 9 son subtermas de la izquierda y la derecha de la línea 9a.

9 move(turn(move(turn(move(turn(move(x))))))) = turn(turn(turn(x))). para(6(a,1),5(a,1,1,1,1)),flip(a)].

Desde mi punto de vista, quizás incorrecto, del razonamiento ecuacional, a partir de dos términos $a$ y $b$ con $a=b$ podemos concluir $turn(a) = turn(b)$ . Desde mi ingenuo punto de vista este razonamiento permitiría pasar de las 9 a las 9a, pero no al revés.

Por el momento, no me preocupan demasiado las demás líneas de la prueba. Se agradecería cualquier explicación de cómo se dedujo la línea 9.

Salida de Prover9

1 (all p turn(turn(turn(turn(p)))) = p) # label(non_clause).  [assumption].
2 (all p turn(move(turn(move(turn(move(turn(move(p)))))))) = p) # label(non_clause).  [assumption].
3 (all p turn(turn(move(turn(turn(move(p)))))) = p) # label(non_clause).  [assumption].
4 (all p turn(turn(turn(move(turn(move(p)))))) = move(turn(turn(turn(move(turn(p))))))) # label(non_clause) # label(goal).  [goal].
5 turn(turn(turn(turn(x)))) = x.  [clausify(1)].
6 turn(move(turn(move(turn(move(turn(move(x)))))))) = x.  [clausify(2)].
7 turn(turn(move(turn(turn(move(x)))))) = x.  [clausify(3)].
8 move(turn(turn(turn(move(turn(c1)))))) != turn(turn(turn(move(turn(move(c1)))))).  [deny(4)].
9 move(turn(move(turn(move(turn(move(x))))))) = turn(turn(turn(x))).  [para(6(a,1),5(a,1,1,1,1)),flip(a)].
11 move(turn(turn(move(x)))) = turn(turn(x)).  [para(7(a,1),5(a,1,1,1)),flip(a)].
12 move(turn(move(turn(move(turn(turn(turn(x)))))))) = turn(move(x)).  [para(11(a,1),9(a,1,1,1,1,1,1,1)),rewrite([5(13)])].
16 move(turn(move(turn(move(x))))) = turn(move(turn(x))).  [para(5(a,1),12(a,1,1,1,1,1,1))].
18 move(turn(turn(turn(move(turn(x)))))) = turn(turn(turn(move(turn(move(x)))))).  [para(16(a,1),11(a,1,1,1,1))].
19 $F.  [resolve(18,a,8,a)].

El ejemplo se refiere a un robot que se mueve a través de una red de VanHorebeek y Lewi también en libro . Aquí está relacionado puesto de paramodulación .

1voto

Mauro ALLEGRANZA Puntos 34146

Paramodulación se utiliza en el procedimiento de prueba de resolución con equidad (véase, por ejemplo, Chin-Liang Chang y Richard Char-Tung Lee, Symbolic Logic and Mechanical Theorem Proving (Academic Press, 1973) , Capítulo 8.3 Paramodulación , página 168.

En pocas palabras, es lógica de primer orden con igualdad utilizando la transitividad de $=$ y las propiedades de sustitución.

Considere el paso 5) $turn(turn(turn(turn(x)))) = x$ . Equivale a decir que cuatro veces " $turn$ " es una operación de identidad.

Así, aplicando tres veces " $turn$ " a 6) y utilizando el sustitución de funciones axioma, lo que obtenemos es:

$$turn(turn(turn(turn(move(turn(move(turn(move(turn(move(x))))))))))) = turn(turn(turn(x))).$$

Ahora podemos eliminar las cuatro apariciones "externas" de " $turn$ " en el LHS para obtener:

  1. $move(turn(move(turn(move(turn(move(x))))))) = turn(turn(turn(x)))$ .

[Más formalmente, esto significa que a partir de 5) $turn(turn(turn(turn(x)))) = x$ y $turn(turn(turn(turn(expr_1)))) = expr_2$ sustituimos $x$ con $expr_1$ en 5) para obtener $turn(turn(turn(turn(expr_1)))) = expr_1$ y utilizando la transitividad con la segunda ecuación obtenemos $expr_1 = expr_2$ es decir, 9).]

Lo mismo para el paso 11), derivado de 5) y

  1. $turn(turn(move(turn(turn(move(x)))))) = x$ .

Aplicando " $turn$ " dos veces a 7) obtenemos:

$turn(turn(turn(turn(move(turn(turn(move(x)))))))) = turn(turn(x))$ .

Ahora podemos eliminar las cuatro apariciones "externas" de " $turn$ " en el LHS para obtener:

  1. $move(turn(turn(move(x)))))) = turn(turn(x))$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X