• No se han encontrado resultados

Asistente de pruebas Coq

N/A
N/A
Protected

Academic year: 2021

Share "Asistente de pruebas Coq"

Copied!
30
0
0

Texto completo

(1)

Asistente de pruebas Coq

Matem´

aticas Discretas II

(2)

Prueba de teoremas

I

Una prueba es un argumento irrefutable sobre la veracidad de

una aserci´

on matem´

atica.

I

omo podemos probar teoremas con un ordenador?

I Probadores autom´aticos de teoremas: Encuentran las pruebas por s´ı mismos.

I ´Exito en dominios limitados (prueba de hardware).

I Enorme complejidad computacional.

I Comprobadores de pruebas: verifican una prueba dada.

I Asistentes de pruebas:

I La “parte dif´ıcil” de las pruebas viene dada por la interacci´on con los usuarios.

I La “parte sencilla” de las pruebas se realiza autom´aticamente.

(3)

Qu´

e es Coq?

I

Sistema de ayuda para la demostraci´

on de teoremas.

I

Trabaja con aserciones matem´

aticas.

I

Permite extraer programas certificados (correctos) a trav´

es de

la prueba constructiva de sus especificaciones.

I

No es un sistema autom´

atico, pero proporciona t´

acticas para

la prueba de teoremas.

I Las t´acticas son comandos utilizados en la prueba de teoremas para indicarle a Coq como debe actuar para probar la

(4)

Formas de ejecuci´

on

1.

Ejecuci´

on interactiva:

1.1 El top-level:

I Entrar en el top-level: coqtop

I Salir del top-level: Quit.

(5)

Declaraciones

I

Asocian un nombre a una especificaci´

on.

I

Tipos de especificaciones:

1. Proposiciones l´ogicas: Prop. 2. Colecciones matem´aticas: Set. 3. Tipos Abstractos: Type.

I

Todas las expresiones tienen un tipo asociado (Check).

Coq < Check 3. 3 : nat

Coq < Check nat. nat : Set

(6)

Declaraciones

I

Secciones: Estructurar la modelizaci´

on. Limitar el ´

ambito de

par´

ametros, hip´

otesis, etc.

Coq < Section Declaration.

I

Variables:

Coq < Variable n : nat.

n is assumed

I

Hip´

otesis:

(7)

Definiciones

I

Coq contiene varias definiciones aritm´

eticas: O, S, plus.

I

Las definiciones asignan un identificador a un valor.

Coq < Definition one := (S O). one is defined

Coq < Definition two : nat := S one. two is defined

Coq < Definition double (m:nat) := plus m m. double is defined

I

Podemos mezclar variables libres y acotadas:

Coq < Definition addN (m:nat) := plus m n. addN is defined

I

Limpiar el entorno. Borrar contenidos de la secci´

on:

(8)

Convenciones sint´

acticas

I

a → b → c equivale a a → (b → c).

I

f a b equivale a (f a) b.

(9)

Introducci´

on al motor de pruebas

I

A → B se lee como “A implica B”. Sobrecarga operador.

(10)

Introducci´

on al motor de pruebas

I

actica intros: Transforma premisas o cuantificadores del

objetivo al contexto de la prueba.

Coq < intros H’ HA. 1 subgoal A B C: Prop H : A -> B -> C H’ : A -> B HA : A ======================= C Coq < apply H. 2 subgoals A B C: Prop H : A -> B -> C H’ : A -> B HA : A ======================= A subgoal 2 is: B

Coq < exact HA. 1 subgoal A : Prop B : Prop C : Prop H : A -> B -> C H’ : A -> B HA : A ======================= B

(11)

Introducci´

on al motor de pruebas

I

actica exact: se aplica cuando dos expresiones son

convertibles.

Coq < apply H’. 1 subgoal A : Prop B : Prop C : Prop H : A -> B -> C H’ : A -> B HA : A ============================ A

Coq < exact HA. Proof completed. Coq < Save trivialLemma.

I

Abort desecha el lema.

(12)

Introducci´

on al motor de pruebas

I

Lemma o Theorem se definen igual que Goal.

I

Posibilidad de concatenar varias t´

acticas:

I T1;T2: aplica T1 a objetivo actual y T2 a todos los sub-objetivos generados por T1.

I T;[T1|T2|...|Tn]: aplica T al objetivo actual, T1 al primer sub-objetivo generado, T2 al segundo, etc.

I

actica auto: intenta probar el problema combinando una

serie de t´

acticas a las hip´

otesis y a ciertos lemas de forma

autom´

atica.

I Podemos enriquecer auto con teoremas ya probados: Hint

Resolve TheoremName.

I

Restart: recomenzar la prueba del teorema.

(13)

Algunas pruebas sencillas

I

Prueba de la conmutatividad de la intersecci´

on:

(14)

Algunas pruebas sencillas

I

actica split: divide la conjunci´

on en dos sub-objetivos.

Coq < split. 2 subgoals A B C: Prop H : A /\ B ============================ B subgoal 2 is: A

Coq < apply H. apply H.

(15)

Algunas pruebas sencillas

I

Prueba alternativa de la conmutatividad de la intersecci´

on:

I

actica elim: divide un t´

ermino en sus componentes.

Coq < elim H. 1 subgoal A B C: Prop H : A /\ B ============================ A -> B -> B / A Coq < split.

(16)

Prueba de teoremas sencillos

I

actica clear: borra hip´

otesis innecesarias.

I

actica trivial: equivalente a auto pero opera en un ´

unico

paso.

I

actica tauto: intenta aplicar una tautolog´ıa.

Coq < Lemma orCommutative : A \/ B -> B \/ A. 1 subgoal A B C: Prop ============================ A \/ B -> B \/ A Coq < tauto. Proof completed. Coq < Qed. tauto. orCommutative is defined

(17)

Prueba de teoremas sencillos

I

La t´

actica generalize permite recuperar una de las hip´

otesis

locales e introducirlas en el objetivo.

... H : termH ... ============================ termGoal Coq < generalize H. ... H : termH ... ============================ termH -> termGoal

I

Expresi´

on del tipo x = y. x e y mismo tipo. Como

reemplazar x con y?

(18)

Prueba de teoremas sencillos

Coq < Variable f : nat -> nat. Coq < Hypothesis foo : f 0 = 0.

Coq < Lemma L1 : forall k:nat, k = 0 -> f k = k. 1 subgoal f: nat -> nat. foo: f 0 = 0. ============================ forall k : nat, k = 0 -> f k = k Coq < intros k E. 1 subgoal

(19)

Prueba de teoremas sencillos

Coq < Hypothesis f10 : f 1 = f 0. Coq < Lemma L2 : f (f 1) = 0. 1 subgoal f : nat -> nat foo : f 0 = 0 f10 : f 1 = f 0 ============================ f (f 1) = 0 Coq < rewrite f10. f : nat -> nat foo : f 0 = 0 f10 : f 1 = f 0 ============================ f (f 0) = 0

(20)

Prueba de teoremas sencillos

I

actica unfold: sustituye una definici´

on por la f´

ormula que

la define.

I Coq < Definition one := (S O).

I unfold term in H: en la hip´otesis en lugar del objetivo.

I

actica symmetry: sustituye el t´

ermino t = u por u = t.

I

actica reflexivity: se aplica a un objetivo de la forma t

= u, comprueba si t y u son convertibles.

(21)

Tipos de datos inductivos

I

Se definen indicando nombre, tipo y constructores.

Coq < Inductive bool : Set := true

| false.

I

Definici´

on autom´

atica de redes de eliminaci´

on. bool ind

permite el razonamiento por casos.

I

Demostrar que un booleano es true o false.

Coq < Lemma duality : forall b:bool, b = true \/ b = false. 1 subgoal

============================

forall b : bool, b = true \/ b = false

(22)

Tipos de datos inductivos

Coq < intro b. 1 subgoal b : bool ============================ b = true \/ b = false Coq < elim b. 2 subgoals b : bool ============================ true = true \/ true = false subgoal 2 is:

false = true \/ false = false

Coq < left; trivial. | Coq < left; trivial.

I

La prueba entera podr´ıa haberse reducido a la siguiente

instrucci´

on:

(23)

Tipos de datos inductivos

I

umeros naturales:

Coq < Inductive nat : Set := | O : nat

| S : nat -> nat.

I

Una vez definido el tipo podemos realizar operaciones:

Coq < Fixpoint plus (n m:nat) struct n : nat := match n with

| O => m

| S p => S (plus p m) end.

(24)

Tipos de datos inductivos

I

actica destruct: divide o “destruye” un tipo inductivo en

sus posibles casos

(25)

Tipos de datos inductivos

I

Tambi´

en podemos probar teoremas por inducci´

on:

Coq < Lemma plus n O : forall n:nat, n = n + 0. 1 subgoal

============================ forall n : nat, n = n + 0 Coq < intro n; elim n. 2 subgoals n : nat ============================ 0 = 0 + 0 subgoal 2 is: forall n0 : nat, n0 = n0 + 0 -> S n0 = S n0 + 0 Coq < simpl; auto.

Coq < simpl; auto.

I

auto utiliza como hint:

Coq < Check eq S.

eq S : forall x y : nat, x = y -> S x = S y

(26)

Tipos de datos inductivos

I

Declarar plus n 0 para poder ser utilizado como hint por

auto:

Coq < Hint Resolve plus n O.

I

Vamos a probar ahora la conmutatividad de la suma:

Coq < Lemma plus com : forall n m:nat, n + m = m + n. 1 subgoal

============================ forall n m : nat, n + m = m + n Coq < simple induction m; simpl; auto. 1 subgoal

n m: nat

============================

forall n0 : nat, n + n0 = n0 + n -> n + S n0 = S (n0 + n) Coq < intros m’ E; rewrite <- E; auto.

Coq < Qed.

(27)

Tipos de datos inductivos

I

actica induction: divide el objetivo en dos sub-objetivos, el

caso base y el de inducci´

on.

I

Al probar el paso base, la hip´

otesis de inducci´

on aparece en el

contexto de la prueba.

Theorem plus0 r : forall n:nat, plus n 0 = n. Proof.

intros n. induction n as [| n ]. reflexivity.

(28)

Tipos de datos inductivos

I

Funci´

on que devuelve true si el n´

umero es 0 y false en

cualquier otro caso.

Coq < Definition Is S (n:nat) := match n with | O => False

| S p => True end.

I

Prueba de teoremas:

Coq < Lemma S is S : forall n:nat, IsS (S n). 1 subgoal

============================ forall n : nat, Is S (S n) Coq < simpl; trivial.

(29)

Tipos de datos inductivos

I

Nuevos teoremas:

Coq < Lemma no confusion : forall n:nat, 0 <> S n. 1 subgoal

============================ forall n : nat, 0 <> S n. Coq < intro n; discriminate. Coq < Qed.

(30)

odulos

I

Por defecto, Coq carga varias librer´ıas (l´

ogica y aritm´

etica).

I

Abrir nuevos m´

odulos: Require Import Arith.

I

Creaci´

on de m´

odulos propios:

I Edici´on de fichero mi modulo.v. Module ModName. ... End ModName..

I Compilaci´on con coqc. Librer´ıa en fichero mi modulo.vo.

I Carga con Require Import ModName.

Referencias

Documento similar

- El cargador de batería utilizado con el juguete debe ser examinado periódicamente para detectar daños en el cable, el enchufe, la carca- sa y otras partes, y en caso de tales

4 En un es- tudio intervencional se evaluó como los factores endocrinos y de la composición corporal están relacionados con la concentración de leptina, 21 evidenciándose que

El cuerpo femenino debía proyectarse en escena sin pretender serlo, al menos no como se había representado en la danza hasta el momento: dirigido por y hacia la mirada masculina

l,- SUMA ASEGURADA - La suma está integrada por la totalidad de los saldos pendientes de pago, de créditos otorgados por el CONTRATANTE para cada uno de sus soc¡os o

Tras haber visitado las instalaciones, siendo Vértice Vertical™ empresa autorizada para la instalación y la correspondiente inspección de estos sistemas de

El ideario liberal incluso en su vertiente social retoma el problema de la autonomía (auto-dirección normativa) y el desarrollo de la personalidad e intenta darle solución, con la

8 &#34;Por medio del cual se establece el procedimiento breve y sumario orientado a dejar sin efecto la inscripción irregular de cédulas de ciudadanía y se dictan

Evaluaci ´on humana de la traducci ´on autom ´atica Evaluaci ´on autom ´atica de la traducci ´on autom ´atica Deficiencias de las medidas de evaluaci ´on autom ´atica 3 Los