27
PVS: Aritm´ etica e inducci´on Francisco J. Mart´ ın Mateos Jos´ e A. Alonso Jim´ enez Dpto. Ciencias de la Computaci´ on e Inteligencia Artificial Universidad de Sevilla Razonamiento Autom´ atico – 2008/2009 PVS: Aritm´ etica e inducci´ on

PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

PVS: Aritmetica e induccion

Francisco J. Martın Mateos

Jose A. Alonso Jimenez

Dpto. Ciencias de la Computacion e Inteligencia ArtificialUniversidad de Sevilla

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 2: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Aritmetica

Elementos predefinidos

Tipos numericos: real, rat, int y nat

Operaciones: +, -, * y /

Relaciones: =, <, <=, > y >=

Tacticas aritmeticas

(assert :linear? t): Procedimiento basico de decision

artimetica

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 3: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones aritmeticas

Teorıa PVS

aritmetica: THEORY

BEGIN

x,y,z: VAR realf: [real -> real]g: [real, real -> real]

ejemplo1: THEOREMx < 2*y AND y < 3*z IMPLIES 3*x < 18*z

ejemplo2: THEOREMx = f(y) IMPLIES

g(f(y + 2 - 2), x + 2) = g(x, f(y) + 2)

ejemplo3: THEOREMx<0 AND y<0 IMPLIES x*y>0

END aritmetica

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 4: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones aritmeticas

La tactica assert

ejemplo1 :

|-------{1} FORALL (x, y, z: real):

x < 2 * y AND y < 3 * z IMPLIES 3 * x < 18 * z

Rule? (skosimp)Skolemizing and flattening,this simplifies to:ejemplo1 :

{-1} x!1 < 2 * y!1{-2} y!1 < 3 * z!1

|-------{1} 3 * x!1 < 18 * z!1

Rule? (assert :linear? t)Simplifying, rewriting, and recording with decision procedures,Q.E.D.

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 5: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones aritmeticas

La tactica assert

ejemplo2 :

|-------{1} FORALL (x, y: real):

x = f(y) IMPLIES g(f(y + 2 - 2), x + 2) = g(x, f(y) + 2)

Rule? (skosimp)Skolemizing and flattening,this simplifies to:ejemplo2 :

{-1} x!1 = f(y!1)|-------

{1} g(f(y!1 + 2 - 2), x!1 + 2) = g(x!1, f(y!1) + 2)

Rule? (assert :linear? t)Simplifying, rewriting, and recording with decision procedures,Q.E.D.

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 6: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones aritmeticas

La tactica assert

ejemplo3 :

|-------{1} FORALL (x, y: real): x < 0 AND y < 0 IMPLIES x * y > 0

Rule? (skosimp)Skolemizing and flattening,this simplifies to:ejemplo3 :

{-1} x!1 < 0{-2} y!1 < 0

|-------{1} x!1 * y!1 > 0

Rule?

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 7: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones aritmeticas

La tactica assert

ejemplo3 :

{-1} x!1 < 0{-2} y!1 < 0

|-------{1} x!1 * y!1 > 0

Rule? (assert :linear? t)Simplifying, rewriting, and recording with decision procedures,this simplifies to:ejemplo3 :

[-1] x!1 < 0[-2] y!1 < 0

|-------[1] x!1 * y!1 > 0

Rule?

El procedimiento de decision aritmetico no es completo

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 8: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Tacticas sobre definiciones y lemas

expand: Expande la definicion de una funcion, indicando el

sımbolo de funcion cuya definicion se quiere expandir, la

formula en la que se quiere expandir y la ocurrencia dentro de

la misma

lemma: Introduce una instancia de un lema como una nueva

formula en el secuente

use: Uso de lemma seguido de inst?

rewrite: Simplifica una formula del secuente reescribiendola

usando un lema

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 9: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones con uso de definiones y lemas

Teorıa PVS

cuadrado : THEORY

BEGIN

x: VAR natid: nat

identidad: AXIOMx * id = x

cuadrado(x): nat =x * x

cuadrado_de_la_identidad: LEMMAcuadrado(id) = id

END cuadrado

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 10: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones con uso de definiones y lemas

La tactica expand

cuadrado_de_la_identidad :

|-------{1} cuadrado(id) = id

Rule? (expand "cuadrado")Expanding the definition of cuadrado,this simplifies to:cuadrado_de_la_identidad :

|-------{1} id * id = id

Rule?

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 11: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones con uso de definiones y lemas

La tactica lemma

cuadrado_de_la_identidad :

|-------{1} id * id = id

Rule? (lemma "identidad")Applying identidadthis simplifies to:cuadrado_de_la_identidad :

{-1} FORALL (x: nat): x * id = x|-------

[1] id * id = id

Rule? (inst?)Found substitution:x: nat gets id,Using template: x * id = xInstantiating quantified variables,Q.E.D.

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 12: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones con uso de definiones y lemas

La tactica use

cuadrado_de_la_identidad :

|-------{1} id * id = id

Rule? (use "identidad")Using lemma identidad,Q.E.D.

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 13: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostraciones con uso de definiones y lemas

La tactica rewrite

cuadrado_de_la_identidad :

|-------{1} id * id = id

Rule? (rewrite "identidad")Found matching substitution:x: nat gets id,Rewriting using identidad, matching in *,Q.E.D.

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 14: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Definicion de funciones

Teorıa PVS

sumaPrimeros: THEORY

BEGIN

n:VAR nat

frac(n): nat = (n * (n+1))/2

suma(n): RECURSIVE nat =IF n=0 THEN 0

ELSE n+suma(n-1)ENDIFMEASURE n

END sumaPrimeros

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 15: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Tacticas empleadas

induct: Utilizar el esquema de induccion asociado a un tipo

de dato

induct-and-simplify: Utilizar el esquema de induccion

asociado a un tipo de dato, expansion de las funciones

relevantes y reescritura

Esquema de induccion asociado a los numeros naturales

P(0) ∀i (P(i) → P(i + 1))

∀n P(n)[NatInduct]

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 16: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

Teorema:i=n∑

i=0

i =n(n + 1)

2

Ampliacion de la teorıa PVS

sumaPrimeros: THEORY

BEGIN...

fla_suma: LEMMAsuma(n) = frac(n)

END sumaPrimeros

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 17: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica induct

fla_suma :

|-------{1} FORALL (n: nat): suma(n) = frac(n)

Rule? (induct "n")Inducting on n on formula 1,this yields 2 subgoals:fla_suma.1 :

|-------{1} suma(0) = frac(0)

Rule?

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 18: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica expand

fla_suma.1 :

|-------{1} suma(0) = frac(0)

Rule? (expand "suma")Expanding the definition of suma,this simplifies to:fla_suma.1 :

|-------{1} 0 = frac(0)

Rule?

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 19: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica expand

fla_suma.1 :

|-------{1} 0 = frac(0)

Rule? (expand "frac")Expanding the definition of frac,this simplifies to:fla_suma.1 :

|-------{1} 0 = 0 / 2

Rule? (assert :linear? t)Simplifying, rewriting, and recording with decision procedures,

This completes the proof of fla_suma.1.

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 20: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica induct

fla_suma.2 :

|-------{1} FORALL j:

suma(j) = frac(j) IMPLIES suma(j + 1) = frac(j + 1)

Rule? (skosimp)Skolemizing and flattening,this simplifies to:fla_suma.2 :

{-1} suma(j!1) = frac(j!1)|-------

{1} suma(j!1 + 1) = frac(j!1 + 1)

Rule?

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 21: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica expand

fla_suma.2 :

{-1} suma(j!1) = frac(j!1)|-------

{1} suma(j!1 + 1) = frac(j!1 + 1)

Rule? (expand "suma" 1)Expanding the definition of suma,this simplifies to:fla_suma.2 :

[-1] suma(j!1) = frac(j!1)|-------

{1} 1 + suma(j!1) + j!1 = frac(1 + j!1)

Rule?

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 22: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica replace

fla_suma.2 :

[-1] suma(j!1) = frac(j!1)|-------

{1} 1 + suma(j!1) + j!1 = frac(1 + j!1)

Rule? (replace -1)Replacing using formula -1,this simplifies to:fla_suma.2 :

[-1] suma(j!1) = frac(j!1)|-------

{1} 1 + frac(j!1) + j!1 = frac(1 + j!1)

Rule?

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 23: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica expand

fla_suma.2 :

[-1] suma(j!1) = frac(j!1)|-------

{1} 1 + frac(j!1) + j!1 = frac(1 + j!1)

Rule? (expand "frac" 1 2)Expanding the definition of frac,this simplifies to:fla_suma.2 :

[-1] suma(j!1) = frac(j!1)|-------

{1} 1 + frac(j!1) + j!1 = (2 + j!1 + (j!1 * j!1 + 2 * j!1)) / 2

Rule?

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 24: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica induct

fla_suma.2 :

[-1] suma(j!1) = frac(j!1)|-------

{1} 1 + frac(j!1) + j!1 = (2 + j!1 + (j!1 * j!1 + 2 * j!1)) / 2

Rule? (expand "frac" 1)Expanding the definition of frac,this simplifies to:fla_suma.2 :

[-1] suma(j!1) = frac(j!1)|-------

{1} 1 + (j!1 * j!1 + j!1) / 2 + j!1 =(2 + j!1 + (j!1 * j!1 + 2 * j!1)) / 2

Rule? (assert :linear? t)Simplifying, rewriting, and recording with decision procedures,

This completes the proof of fla_suma.2.

Q.E.D.

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 25: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

Demostracion aritmetica con induccion

La tactica induct-and-simplify

fla_suma :

|-------{1} FORALL (n: nat): suma(n) = frac(n)

Rule? (induct-and-simplify "n")suma rewrites suma(0)

to 0frac rewrites frac(0)

to 0 / 2frac rewrites frac(j!1)

to (j!1 * j!1 + j!1) / 2suma rewrites suma(1 + j!1)

to 1 + suma(j!1) + j!1frac rewrites frac(1 + j!1)

to (2 + j!1 + (j!1 * j!1 + 2 * j!1)) / 2By induction on n, and by repeatedly rewriting and simplifying,Q.E.D.

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 26: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

El problema de las monedas

Enunciado: Demostrar que con monedas de 3 y 5 se puede

obtener cualquier cantidad que sea mayor o igual a 8.

Especificacion

monedas : THEORY

BEGIN

n, a, b: VAR nat

monedas: LEMMAFORALL n: (EXISTS a, b: n+8 = 3*a + 5*b)

END monedas

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion

Page 27: PVS: Aritm´etica e inducci´on · PVS: Aritm´etica e inducci´on Francisco J. Mart´ın Mateos Jos´e A. Alonso Jim´enez Dpto. Ciencias de la Computacio´n e Inteligencia Artificial

El problema de las monedas

Demostracion manual: Por induccion en n

Base (n = 0): 0 + 8 = 3 × 1 + 5 × 1Basta elegir a = b = 1Paso (n + 1):Supongamos que existen a y b tales que

n + 8 = 3 × a + 5 × b. Vamos a distinguir dos casos segun

el valor de b.

Caso 1: b = 0

En este caso n + 8 = 3 × a, a > 3 y

(n + 1) + 8 = 3 × (a − 3) + 5 × 2

Basta elegir a − 3 y 2 Caso 2:b 6= 0

En este caso (n + 1) + 8 = 3 × (a + 2) + 5 × (b − 1)

Basta elegir a + 2 y b − 1

Ejercicio: Reproducir esta prueba en PVS

Razonamiento Automatico – 2008/2009 PVS: Aritmetica e induccion