107
II Semin´ ario Informal (mas Formal) Semˆ antica do PVS: Tipos Dependentes e Aplica¸ oes Andr´ e Luiz Galdino 1 Universidade de Bras´ ılia Departamento de Matem´ atica Grupo Teoria da Computa¸ ao 1 Liberado para cursar doutorado pelo Departamento de Matem´ atica Campus de Catal˜ ao Universidade Federal de Goi´ as 28 de Outubro de 2004 Andr´ e Luiz Galdino Universidade de Bras´ ılia

Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal)

Semantica do PVS: Tipos Dependentes e Aplicacoes

Andre Luiz Galdino1

Universidade de BrasıliaDepartamento de MatematicaGrupo Teoria da Computacao

1Liberado para cursar doutorado peloDepartamento de Matematica

Campus de CatalaoUniversidade Federal de Goias

28 de Outubro de 2004

Andre Luiz Galdino Universidade de Brasılia

Page 2: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

O que e PVS?

O PVS ( Prototype Verification System) e um ambiente paraespecificacao e verificacao semi-automatica.

Desenvolvido na decada de 80 pelo SRI International ComputerScience Laboratory, o PVS e baseado sobre uma logica fortementetipada de ordem-superior, e possui um verificador de provasbaseado sobre calculos sequentes que combina decisoes deprocedimento e estrategias.

Andre Luiz Galdino Universidade de Brasılia

Page 3: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

O que e PVS?

O PVS ( Prototype Verification System) e um ambiente paraespecificacao e verificacao semi-automatica.

Desenvolvido na decada de 80 pelo SRI International ComputerScience Laboratory, o PVS e baseado sobre uma logica fortementetipada de ordem-superior, e possui um verificador de provasbaseado sobre calculos sequentes que combina decisoes deprocedimento e estrategias.

Andre Luiz Galdino Universidade de Brasılia

Page 4: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

O que e PVS?

O PVS ( Prototype Verification System) e um ambiente paraespecificacao e verificacao semi-automatica.

Desenvolvido na decada de 80 pelo SRI International ComputerScience Laboratory, o PVS e baseado sobre uma logica fortementetipada de ordem-superior, e possui um verificador de provasbaseado sobre calculos sequentes que combina decisoes deprocedimento e estrategias.

Andre Luiz Galdino Universidade de Brasılia

Page 5: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Universo Basico U

Para definir a semantica precisamos de um universo que contem osconjuntos 2 e IR e e fechado com respeito a produtos cartesianos,X × Y , e potencias de conjuntos, ℘(A).

U0 = 2, IR

Ui+1 = Ui ∪ X × Y |X ,Y ∈ Ui ∪ XY |X ,Y ∈ Ui ∪⋃

X∈Ui

℘(X )

Uω =⋃ı<ω

Ui

U = Uω

Andre Luiz Galdino Universidade de Brasılia

Page 6: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Universo Basico U

Para definir a semantica precisamos de um universo que contem osconjuntos 2 e IR e e fechado com respeito a produtos cartesianos,X × Y , e potencias de conjuntos, ℘(A).

U0 = 2, IR

Ui+1 = Ui ∪ X × Y |X ,Y ∈ Ui ∪ XY |X ,Y ∈ Ui ∪⋃

X∈Ui

℘(X )

Uω =⋃ı<ω

Ui

U = Uω

Andre Luiz Galdino Universidade de Brasılia

Page 7: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-tipos

Os pre-tipos da teoria de tipos simples incluem:

I os tipos basicos bool e real;

I uma funcao pre-tipo que e construıda como [A→ B], com Ae B pre-tipos;

I um produto de pre-tipos que e construıdo como [A1,A2], comA1 e A2 pre-tipos.

Andre Luiz Galdino Universidade de Brasılia

Page 8: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-tipos

Os pre-tipos da teoria de tipos simples incluem:

I os tipos basicos bool e real;

I uma funcao pre-tipo que e construıda como [A→ B], com Ae B pre-tipos;

I um produto de pre-tipos que e construıdo como [A1,A2], comA1 e A2 pre-tipos.

Andre Luiz Galdino Universidade de Brasılia

Page 9: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-tipos

Os pre-tipos da teoria de tipos simples incluem:

I os tipos basicos bool e real;

I uma funcao pre-tipo que e construıda como [A→ B], com Ae B pre-tipos;

I um produto de pre-tipos que e construıdo como [A1,A2], comA1 e A2 pre-tipos.

Andre Luiz Galdino Universidade de Brasılia

Page 10: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-termos

Os pretermos da linguagem consistem de:

I constantes: c , TRUE , FALSE

I variaveis: x : VAR T onde T e um pre-tipo

I pares: 〈a1, a2〉 onde cada ai e um pre-termo

I projecoes: pi a onde i ∈ 1, 2 e a e um par

I aplicacoes: f a onde f e a sao pre-termos

I abstracoes: λ(x : T ) : a onde T e um pre-tipo e a e umpre-termo

Andre Luiz Galdino Universidade de Brasılia

Page 11: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-termos

Os pretermos da linguagem consistem de:

I constantes: c , TRUE , FALSE

I variaveis: x : VAR T onde T e um pre-tipo

I pares: 〈a1, a2〉 onde cada ai e um pre-termo

I projecoes: pi a onde i ∈ 1, 2 e a e um par

I aplicacoes: f a onde f e a sao pre-termos

I abstracoes: λ(x : T ) : a onde T e um pre-tipo e a e umpre-termo

Andre Luiz Galdino Universidade de Brasılia

Page 12: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-termos

Os pretermos da linguagem consistem de:

I constantes: c , TRUE , FALSE

I variaveis: x : VAR T onde T e um pre-tipo

I pares: 〈a1, a2〉 onde cada ai e um pre-termo

I projecoes: pi a onde i ∈ 1, 2 e a e um par

I aplicacoes: f a onde f e a sao pre-termos

I abstracoes: λ(x : T ) : a onde T e um pre-tipo e a e umpre-termo

Andre Luiz Galdino Universidade de Brasılia

Page 13: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-termos

Os pretermos da linguagem consistem de:

I constantes: c , TRUE , FALSE

I variaveis: x : VAR T onde T e um pre-tipo

I pares: 〈a1, a2〉 onde cada ai e um pre-termo

I projecoes: pi a onde i ∈ 1, 2 e a e um par

I aplicacoes: f a onde f e a sao pre-termos

I abstracoes: λ(x : T ) : a onde T e um pre-tipo e a e umpre-termo

Andre Luiz Galdino Universidade de Brasılia

Page 14: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-termos

Os pretermos da linguagem consistem de:

I constantes: c , TRUE , FALSE

I variaveis: x : VAR T onde T e um pre-tipo

I pares: 〈a1, a2〉 onde cada ai e um pre-termo

I projecoes: pi a onde i ∈ 1, 2 e a e um par

I aplicacoes: f a onde f e a sao pre-termos

I abstracoes: λ(x : T ) : a onde T e um pre-tipo e a e umpre-termo

Andre Luiz Galdino Universidade de Brasılia

Page 15: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Pre-termos

Os pretermos da linguagem consistem de:

I constantes: c , TRUE , FALSE

I variaveis: x : VAR T onde T e um pre-tipo

I pares: 〈a1, a2〉 onde cada ai e um pre-termo

I projecoes: pi a onde i ∈ 1, 2 e a e um par

I aplicacoes: f a onde f e a sao pre-termos

I abstracoes: λ(x : T ) : a onde T e um pre-tipo e a e umpre-termo

Andre Luiz Galdino Universidade de Brasılia

Page 16: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo de Contexto, kind(Γ(s)) e type(Γ(s))

A sequencia de declaracoes abaixo e um contexto denotado por Γ.

bool :TYPE ,TRUE :bool ,FALSE :bool , x :VAR [[bool , bool ]→ bool ]

Neste contexto temos:

I kind(Γ(bool)) = TYPE

I kind(Γ(TRUE )) = CONSTANT

I kind(Γ(x)) = VARIABLE

I type(Γ(x)) = [[bool , bool ]→ bool ]

Andre Luiz Galdino Universidade de Brasılia

Page 17: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo de Contexto, kind(Γ(s)) e type(Γ(s))

A sequencia de declaracoes abaixo e um contexto denotado por Γ.

bool :TYPE ,TRUE :bool ,FALSE :bool , x :VAR [[bool , bool ]→ bool ]

Neste contexto temos:

I kind(Γ(bool)) = TYPE

I kind(Γ(TRUE )) = CONSTANT

I kind(Γ(x)) = VARIABLE

I type(Γ(x)) = [[bool , bool ]→ bool ]

Andre Luiz Galdino Universidade de Brasılia

Page 18: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo de Contexto, kind(Γ(s)) e type(Γ(s))

A sequencia de declaracoes abaixo e um contexto denotado por Γ.

bool :TYPE ,TRUE :bool ,FALSE :bool , x :VAR [[bool , bool ]→ bool ]

Neste contexto temos:

I kind(Γ(bool)) = TYPE

I kind(Γ(TRUE )) = CONSTANT

I kind(Γ(x)) = VARIABLE

I type(Γ(x)) = [[bool , bool ]→ bool ]

Andre Luiz Galdino Universidade de Brasılia

Page 19: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo de Contexto, kind(Γ(s)) e type(Γ(s))

A sequencia de declaracoes abaixo e um contexto denotado por Γ.

bool :TYPE ,TRUE :bool ,FALSE :bool , x :VAR [[bool , bool ]→ bool ]

Neste contexto temos:

I kind(Γ(bool)) = TYPE

I kind(Γ(TRUE )) = CONSTANT

I kind(Γ(x)) = VARIABLE

I type(Γ(x)) = [[bool , bool ]→ bool ]

Andre Luiz Galdino Universidade de Brasılia

Page 20: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo de Contexto, kind(Γ(s)) e type(Γ(s))

A sequencia de declaracoes abaixo e um contexto denotado por Γ.

bool :TYPE ,TRUE :bool ,FALSE :bool , x :VAR [[bool , bool ]→ bool ]

Neste contexto temos:

I kind(Γ(bool)) = TYPE

I kind(Γ(TRUE )) = CONSTANT

I kind(Γ(x)) = VARIABLE

I type(Γ(x)) = [[bool , bool ]→ bool ]

Andre Luiz Galdino Universidade de Brasılia

Page 21: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Observacoes

I O contexto vazio e representado como

I Seja Γ um contexto e s : D. Entao:

I (Γ, s : D)(s) = DI (Γ, s : D)(r) = Γ(r) para r 6= s.

I Se s nao esta declarado em Γ, entao Γ(s) esta indefinido.

Andre Luiz Galdino Universidade de Brasılia

Page 22: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Observacoes

I O contexto vazio e representado como I Seja Γ um contexto e s : D. Entao:

I (Γ, s : D)(s) = DI (Γ, s : D)(r) = Γ(r) para r 6= s.

I Se s nao esta declarado em Γ, entao Γ(s) esta indefinido.

Andre Luiz Galdino Universidade de Brasılia

Page 23: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Observacoes

I O contexto vazio e representado como I Seja Γ um contexto e s : D. Entao:

I (Γ, s : D)(s) = D

I (Γ, s : D)(r) = Γ(r) para r 6= s.

I Se s nao esta declarado em Γ, entao Γ(s) esta indefinido.

Andre Luiz Galdino Universidade de Brasılia

Page 24: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Observacoes

I O contexto vazio e representado como I Seja Γ um contexto e s : D. Entao:

I (Γ, s : D)(s) = DI (Γ, s : D)(r) = Γ(r) para r 6= s.

I Se s nao esta declarado em Γ, entao Γ(s) esta indefinido.

Andre Luiz Galdino Universidade de Brasılia

Page 25: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Observacoes

I O contexto vazio e representado como I Seja Γ um contexto e s : D. Entao:

I (Γ, s : D)(s) = DI (Γ, s : D)(r) = Γ(r) para r 6= s.

I Se s nao esta declarado em Γ, entao Γ(s) esta indefinido.

Andre Luiz Galdino Universidade de Brasılia

Page 26: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regra de Tipos: Contexto

τ()() = CONTEXT

τ()(Γ, s : TYPE ) = CONTEXT , se Γ(s) e indefinidoe τ()(Γ) = CONTEXT

τ()(Γ, c : T ) = CONTEXT , se Γ(c) e indefinido,τ(Γ)(T ) = TYPE e τ()(Γ) = CONTEXT

τ()(Γ, x : VAR T ) = CONTEXT , se Γ(x) e indefinido,τ(Γ)(T ) = TYPE e τ()(Γ) = CONTEXT

Andre Luiz Galdino Universidade de Brasılia

Page 27: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regra de Tipos: Pre-tipos

τ(Γ)(s) = TYPE se kind(Γ(s)) = TYPE

τ(Γ)([A→ B]) = TYPE se τ(Γ)(A) = τ(Γ)(B) = TYPE

τ(Γ)([A1,A2]) = TYPE se τ(Γ)(Ai ) = TYPE para 1 ≤ i ≤ 2

Andre Luiz Galdino Universidade de Brasılia

Page 28: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regra de Tipos: Pre-termos

τ(Γ)(s) = type(Γ(s))se kind(Γ(s)) ∈ CONSTANT ,VARIABLE

τ(Γ)(f a) = B se τ(Γ)(f ) = [A→ B] e τ(Γ)(a) = A

τ(Γ)(λ(x : T ) : a) = [T → τ(Γ, x : VAR T )(a)]se Γ(x) e indefinido e τ(Γ)(T ) = TYPE

τ(Γ)((a1, a2)) = [τ(Γ)(a1), τ(Γ)(a2)]

τ(Γ)(pi a) = Ti ondeτ(Γ)(a) = [T1,T2]

Andre Luiz Galdino Universidade de Brasılia

Page 29: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Regra de Tipos

Seja Ω classificado como o contexto bool : TYPE , TRUE : bool ,FALSE : bool .

τ()() = CONTEXT

τ()(Ω) = CONTEXT

τ(Ω)([[bool , bool ]→ bool ]) = TYPE

τ(Ω)((TRUE ,FALSE )) = [bool , bool ]

τ(Ω)(p2 (TRUE ,FALSE )) = bool

τ(Ω)(λ(x : bool) : TRUE ) = [bool → bool ]

Andre Luiz Galdino Universidade de Brasılia

Page 30: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Semantica do PVS

Uma designacao γ e uma lista de ligacoes da formas1 ← t1 · · · sn ← tn. A aplicacao de uma designacao γ paraum sımbolo s e tal que γs ← t(s) e t, enquanto queγr ← t(s) e γ(s) quando r 6= s.

A semantica da teoria de tipos simples do PVS e dada aplicandoum tipo T para um conjunto (possivelmente vazio) M(Γ | γ)(T ),e um termo a com tipo designado T para um elemento doconjunto M(Γ | γ)(T ) no universo U.

Andre Luiz Galdino Universidade de Brasılia

Page 31: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Semantica do PVS

Uma designacao γ e uma lista de ligacoes da formas1 ← t1 · · · sn ← tn. A aplicacao de uma designacao γ paraum sımbolo s e tal que γs ← t(s) e t, enquanto queγr ← t(s) e γ(s) quando r 6= s.

A semantica da teoria de tipos simples do PVS e dada aplicandoum tipo T para um conjunto (possivelmente vazio) M(Γ | γ)(T ),e um termo a com tipo designado T para um elemento doconjunto M(Γ | γ)(T ) no universo U.

Andre Luiz Galdino Universidade de Brasılia

Page 32: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Significado da Funcao

M(Γ | γ)(s) = γ(s) se kind(Γ(s)) esta no conjunto,TYPE ,CONSTANT ,VARIABLE

M(Γ | γ)([A→ B]) = M(Γ | γ)(B)M(Γ | γ)(A)

M(Γ | γ)([T1,T2]) = M(Γ | γ)(T1)×M(Γ | γ)(T2)

M(Γ | γ)(f a) = (M(Γ | γ)(f ))(M(Γ | γ)(a))

M(Γ | γ)(λ(x : T ) : a) = 〈y , z〉 | y ∈M(Γ | γ)(T ),z =M(Γ, x : VAR T | γx ← y)(a)

M(Γ | γ)((a1, a2)) = 〈M(Γ | γ)(a1),M(Γ | γ)(a2)〉

M(Γ | γ)(pi a) = ti , onde M(Γ | γ)(a) = 〈t1, t2〉

Andre Luiz Galdino Universidade de Brasılia

Page 33: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Significado da Funcao

Seja ω uma designacao para o contexto Ω do Exemplo 2.4, daforma

bool ← 2TRUE ← 1FALSE ← 0

entao

M(Ω | ω)([bool , bool ]) = 2× 2

M(Ω | ω)((TRUE ,FALSE )) = 〈1, 0〉

M(Ω | ω)(λ(x : bool) : TRUE )) = 〈0, 1〉 , 〈1, 1〉

Andre Luiz Galdino Universidade de Brasılia

Page 34: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Satisfacao

Uma designacao de contexto γ e dita satisfazer um contexto Γ (emsımbolos γ |= Γ) se, e somente se,

I γ(bool) = 2,

I γ(TRUE ) = 1,

I γ(FALSE ) = 0,

I γ(s) ∈ U sempre que kind(Γ(s)) = TYPE , e

I γ(s) ∈M(Γ | γ)(type(Γ(s)) sempre quekind(Γ(s)) ∈ CONSTANT ,VARIABLE.

Andre Luiz Galdino Universidade de Brasılia

Page 35: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Correcao de Tipos e Termos

ProposicaoSe τ()(Γ) = τ()(Γ′) = CONTEXT e Γ e um prefixo de Γ′, entaopara todo pre-tipo A, τ(Γ)(A) = TYPE implica τ(Γ′)(A) = TYPE ,e para todo pre-termo a, τ(Γ)(a) = A implica τ(Γ′)(a) = A.

Teoremas

I Se τ()(Γ) = CONTEXT e τ(Γ)(a) = A, entaoτ(Γ)(A) = TYPE .

I (Correcao de Tipos)Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(A) = TYPE , entaoM(Γ | γ)(A) ∈ U.

I (Correcao de Termos) Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(a) esta definido e igual a A, entaoM(Γ | γ)(a) ∈M(Γ | γ)(A).

Andre Luiz Galdino Universidade de Brasılia

Page 36: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Correcao de Tipos e Termos

ProposicaoSe τ()(Γ) = τ()(Γ′) = CONTEXT e Γ e um prefixo de Γ′, entaopara todo pre-tipo A, τ(Γ)(A) = TYPE implica τ(Γ′)(A) = TYPE ,e para todo pre-termo a, τ(Γ)(a) = A implica τ(Γ′)(a) = A.

Teoremas

I Se τ()(Γ) = CONTEXT e τ(Γ)(a) = A, entaoτ(Γ)(A) = TYPE .

I (Correcao de Tipos)Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(A) = TYPE , entaoM(Γ | γ)(A) ∈ U.

I (Correcao de Termos) Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(a) esta definido e igual a A, entaoM(Γ | γ)(a) ∈M(Γ | γ)(A).

Andre Luiz Galdino Universidade de Brasılia

Page 37: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Correcao de Tipos e Termos

ProposicaoSe τ()(Γ) = τ()(Γ′) = CONTEXT e Γ e um prefixo de Γ′, entaopara todo pre-tipo A, τ(Γ)(A) = TYPE implica τ(Γ′)(A) = TYPE ,e para todo pre-termo a, τ(Γ)(a) = A implica τ(Γ′)(a) = A.

Teoremas

I Se τ()(Γ) = CONTEXT e τ(Γ)(a) = A, entaoτ(Γ)(A) = TYPE .

I (Correcao de Tipos)Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(A) = TYPE , entaoM(Γ | γ)(A) ∈ U.

I (Correcao de Termos) Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(a) esta definido e igual a A, entaoM(Γ | γ)(a) ∈M(Γ | γ)(A).

Andre Luiz Galdino Universidade de Brasılia

Page 38: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Correcao de Tipos e Termos

ProposicaoSe τ()(Γ) = τ()(Γ′) = CONTEXT e Γ e um prefixo de Γ′, entaopara todo pre-tipo A, τ(Γ)(A) = TYPE implica τ(Γ′)(A) = TYPE ,e para todo pre-termo a, τ(Γ)(a) = A implica τ(Γ′)(a) = A.

Teoremas

I Se τ()(Γ) = CONTEXT e τ(Γ)(a) = A, entaoτ(Γ)(A) = TYPE .

I (Correcao de Tipos)Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(A) = TYPE , entaoM(Γ | γ)(A) ∈ U.

I (Correcao de Termos) Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(a) esta definido e igual a A, entaoM(Γ | γ)(a) ∈M(Γ | γ)(A).

Andre Luiz Galdino Universidade de Brasılia

Page 39: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Correcao de Tipos e Termos

ProposicaoSe τ()(Γ) = τ()(Γ′) = CONTEXT e Γ e um prefixo de Γ′, entaopara todo pre-tipo A, τ(Γ)(A) = TYPE implica τ(Γ′)(A) = TYPE ,e para todo pre-termo a, τ(Γ)(a) = A implica τ(Γ′)(a) = A.

Teoremas

I Se τ()(Γ) = CONTEXT e τ(Γ)(a) = A, entaoτ(Γ)(A) = TYPE .

I (Correcao de Tipos)Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(A) = TYPE , entaoM(Γ | γ)(A) ∈ U.

I (Correcao de Termos) Se τ()(Γ) = CONTEXT , γ satisfaz Γ, eτ(Γ)(a) esta definido e igual a A, entaoM(Γ | γ)(a) ∈M(Γ | γ)(A).

Andre Luiz Galdino Universidade de Brasılia

Page 40: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Adicionando Subtipos

I O subtipo de elementos de um tipo T satisfazendo opredicado p e escrito como x : T | p(x).

I Por exemplo, se T e o tipo real entao o subtipo dos numerosreais nao nulos e dado como x : real | x 6= 0.

Andre Luiz Galdino Universidade de Brasılia

Page 41: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Adicionando Subtipos

I O subtipo de elementos de um tipo T satisfazendo opredicado p e escrito como x : T | p(x).

I Por exemplo, se T e o tipo real entao o subtipo dos numerosreais nao nulos e dado como x : real | x 6= 0.

Andre Luiz Galdino Universidade de Brasılia

Page 42: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Adicionando Subtipos

I O subtipo de elementos de um tipo T satisfazendo opredicado p e escrito como x : T | p(x).

I Por exemplo, se T e o tipo real entao o subtipo dos numerosreais nao nulos e dado como x : real | x 6= 0.

Andre Luiz Galdino Universidade de Brasılia

Page 43: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Supertipo Maximal e Supertipo Direto

µ(s) = sµ(x : T | a) = µ(T )

µ([A→ B]) = [A→ µ(B)]µ([A1,A2]) = [µ(A1), µ(A2)]

µ0(x : T | a) = µ0(T )µ0(T ) = T , caso contrario

Andre Luiz Galdino Universidade de Brasılia

Page 44: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Supertipo Maximal e Supertipo Direto

µ(s) = sµ(x : T | a) = µ(T )

µ([A→ B]) = [A→ µ(B)]µ([A1,A2]) = [µ(A1), µ(A2)]

µ0(x : T | a) = µ0(T )µ0(T ) = T , caso contrario

Andre Luiz Galdino Universidade de Brasılia

Page 45: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Supertipo Maximal e Supertipo Direto

µ(s) = sµ(x : T | a) = µ(T )

µ([A→ B]) = [A→ µ(B)]µ([A1,A2]) = [µ(A1), µ(A2)]

µ0(x : T | a) = µ0(T )µ0(T ) = T , caso contrario

Andre Luiz Galdino Universidade de Brasılia

Page 46: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Supertipo Maximal e Direto

Dado um contexto contendo as declaracoesint : TYPE0 : int≤: [[int, int]→ bool ]nat : TYPE = i : int | 0 ≤ inatinjection : TYPE = f : [nat → nat] |

∀(i , j : nat) : f (i) = f (j) ⊃ i = j

temos que

µ(natinjection) = µ([nat → nat])= [nat → µ(nat)]= [nat → int]

µ0(natinjection) = [nat → nat]

Andre Luiz Galdino Universidade de Brasılia

Page 47: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Supertipo Maximal e Direto

Dado um contexto contendo as declaracoesint : TYPE0 : int≤: [[int, int]→ bool ]nat : TYPE = i : int | 0 ≤ inatinjection : TYPE = f : [nat → nat] |

∀(i , j : nat) : f (i) = f (j) ⊃ i = j

temos que

µ(natinjection) = µ([nat → nat])= [nat → µ(nat)]= [nat → int]

µ0(natinjection) = [nat → nat]

Andre Luiz Galdino Universidade de Brasılia

Page 48: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Restricao de Subtipo

Definicao

π(s) = λ(x : s) : TRUE

π(y : T | a) = λ(x : µ(T )) : (π(T )(x) ∧ a[x/y ])

π([A→ B]) = λ(x : [A→ µ(B)]) : (∀(y : A) : π(B)(x(y)))

π([A1,A2]) = λ(x : [µ(A1), µ(A2)]) : (π(A1)(p1 x) ∧ π(A2)(p2 x))

Andre Luiz Galdino Universidade de Brasılia

Page 49: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Restricao de Subtipo

Definicao

π(s) = λ(x : s) : TRUE

π(y : T | a) = λ(x : µ(T )) : (π(T )(x) ∧ a[x/y ])

π([A→ B]) = λ(x : [A→ µ(B)]) : (∀(y : A) : π(B)(x(y)))

π([A1,A2]) = λ(x : [µ(A1), µ(A2)]) : (π(A1)(p1 x) ∧ π(A2)(p2 x))

Andre Luiz Galdino Universidade de Brasılia

Page 50: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Restricao de Subtipo

π(nat) = λ(j : int) : 0 ≤ j

π([nat → nat])

= λ(g : [nat → int]) : ∀(i : nat) : (λ(j : int) : 0 ≤ j)(g(i))

π(natinjection)

= λ(f : [nat → int]) : π([nat → nat])(f )∧ (∀(i , j : nat) : f (i) = f (j) ⊃ i = j)

= λ(f : [nat → int]) :(λ(g : [nat → int]) : ∀(i : nat) : (λ(j : int) : 0 ≤ j)(g(i)))(f )

∧ (∀(i , j : nat) : f (i) = f (j) ⊃ i = j)

Andre Luiz Galdino Universidade de Brasılia

Page 51: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Obrigacoes de Prova para Equivalencia de Tipos(Maximais)

I (s ' s) = TRUE

I ([A→ B] ' [A′ → B ′]) =

((µ(A) ' µ(A′)); (π(A) = π(A′)); (B ' B ′))

I ([A1,A2] ' [B1,B2]) = ((A1 ' B1); (A2 ' B2))

I (A ' B) = FALSE , caso contrario.

Andre Luiz Galdino Universidade de Brasılia

Page 52: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Obrigacoes de Prova para Equivalencia de Tipos(Maximais)

I (s ' s) = TRUE

I ([A→ B] ' [A′ → B ′]) =

((µ(A) ' µ(A′)); (π(A) = π(A′)); (B ' B ′))

I ([A1,A2] ' [B1,B2]) = ((A1 ' B1); (A2 ' B2))

I (A ' B) = FALSE , caso contrario.

Andre Luiz Galdino Universidade de Brasılia

Page 53: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Obrigacoes de Prova para Equivalencia de Tipos(Maximais)

I (s ' s) = TRUE

I ([A→ B] ' [A′ → B ′]) =

((µ(A) ' µ(A′)); (π(A) = π(A′)); (B ' B ′))

I ([A1,A2] ' [B1,B2]) = ((A1 ' B1); (A2 ' B2))

I (A ' B) = FALSE , caso contrario.

Andre Luiz Galdino Universidade de Brasılia

Page 54: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Obrigacoes de Prova para Equivalencia de Tipos(Maximais)

I (s ' s) = TRUE

I ([A→ B] ' [A′ → B ′]) =

((µ(A) ' µ(A′)); (π(A) = π(A′)); (B ' B ′))

I ([A1,A2] ' [B1,B2]) = ((A1 ' B1); (A2 ' B2))

I (A ' B) = FALSE , caso contrario.

Andre Luiz Galdino Universidade de Brasılia

Page 55: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Obrigacoes de Prova para Equivalencia de Tipos(Maximais)

I (s ' s) = TRUE

I ([A→ B] ' [A′ → B ′]) =

((µ(A) ' µ(A′)); (π(A) = π(A′)); (B ' B ′))

I ([A1,A2] ' [B1,B2]) = ((A1 ' B1); (A2 ' B2))

I (A ' B) = FALSE , caso contrario.

Andre Luiz Galdino Universidade de Brasılia

Page 56: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Tipos Equivalentes

Seja o contexto contendo as declaracoes

int : TYPE

0 : int

≤: [[int, int]→ bool ]

nat : TYPE = i : int | 0 ≤ i

natinjection : TYPE = f : [nat → nat] |∀(i , j : nat) : f (i) = f (j) ⊃ i = j

NAT : TYPE = i : int | i ≤ 0 ⊃ i = 0NATinjection : TYPE = f : [NAT → NAT ] |

∀(i , j : NAT ) : f (i) = f (j) ⊃ i = j

Andre Luiz Galdino Universidade de Brasılia

Page 57: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Continuacao do exemplo: Tipos Equivalentes

µ([natinjection→ natinjection]) = [natinjection→ [nat → int]]

µ([NATinjection→ NATinjection]) = [NATinjection→ [NAT → int]]

Entao

µ([natinjection→ natinjection]) ' µ([NATinjection→ NATinjection])

se, e somente se,

[natinjection→ [nat → int]] ' [NATinjection→ [NAT → int]]

= (µ(natinjection) ' µ(NATinjection));

(π(natinjection) = π(NATinjection));

([nat → int]) ' ([NAT → int])

Andre Luiz Galdino Universidade de Brasılia

Page 58: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Continuacao do exemplo: Tipos Equivalentes

µ([natinjection→ natinjection]) = [natinjection→ [nat → int]]

µ([NATinjection→ NATinjection]) = [NATinjection→ [NAT → int]]

Entao

µ([natinjection→ natinjection]) ' µ([NATinjection→ NATinjection])

se, e somente se,

[natinjection→ [nat → int]] ' [NATinjection→ [NAT → int]]

= (µ(natinjection) ' µ(NATinjection));

(π(natinjection) = π(NATinjection));

([nat → int]) ' ([NAT → int])

Andre Luiz Galdino Universidade de Brasılia

Page 59: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Continuacao do exemplo: Tipos Equivalentes

µ([natinjection→ natinjection]) = [natinjection→ [nat → int]]

µ([NATinjection→ NATinjection]) = [NATinjection→ [NAT → int]]

Entao

µ([natinjection→ natinjection]) ' µ([NATinjection→ NATinjection])

se, e somente se,

[natinjection→ [nat → int]] ' [NATinjection→ [NAT → int]]

= (µ(natinjection) ' µ(NATinjection));

(π(natinjection) = π(NATinjection));

([nat → int]) ' ([NAT → int])

Andre Luiz Galdino Universidade de Brasılia

Page 60: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Continuacao do exemplo: Tipos Equivalentes

I (π(natinjection) = π(NATinjection))

se, e somente se,

(λ(f : [nat → int]) : (λ(g : [nat → int]) : ∀(i : nat) : 0 ≤ g(i))(f )

∧ (∀(i , j : nat) : f (i) = f (j) ⊃ i = j)

=

λ(f : [NAT → int]) :

(λ(g : [NAT → int]) : ∀(i : NAT ) : g(i) ≤ 0 ⊃ g(i) = 0)(f ) )

∧ (∀(i , j : NAT ) : f (i) = f (j) ⊃ i = j)

I ([nat → int]) ' ([NAT → int])

= (int ' int);

(λ(i : int) : 0 ≤ i) = (λ(i : int) : i ≤ 0 ⊃ i = 0);

(int ' int)

Andre Luiz Galdino Universidade de Brasılia

Page 61: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Continuacao do exemplo: Tipos Equivalentes

I (π(natinjection) = π(NATinjection))

se, e somente se,

(λ(f : [nat → int]) : (λ(g : [nat → int]) : ∀(i : nat) : 0 ≤ g(i))(f )

∧ (∀(i , j : nat) : f (i) = f (j) ⊃ i = j)

=

λ(f : [NAT → int]) :

(λ(g : [NAT → int]) : ∀(i : NAT ) : g(i) ≤ 0 ⊃ g(i) = 0)(f ) )

∧ (∀(i , j : NAT ) : f (i) = f (j) ⊃ i = j)

I ([nat → int]) ' ([NAT → int])

= (int ' int);

(λ(i : int) : 0 ≤ i) = (λ(i : int) : i ≤ 0 ⊃ i = 0);

(int ' int)

Andre Luiz Galdino Universidade de Brasılia

Page 62: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Continuacao do exemplo: Tipos Equivalentes

I (π(natinjection) = π(NATinjection))

se, e somente se,

(λ(f : [nat → int]) : (λ(g : [nat → int]) : ∀(i : nat) : 0 ≤ g(i))(f )

∧ (∀(i , j : nat) : f (i) = f (j) ⊃ i = j)

=

λ(f : [NAT → int]) :

(λ(g : [NAT → int]) : ∀(i : NAT ) : g(i) ≤ 0 ⊃ g(i) = 0)(f ) )

∧ (∀(i , j : NAT ) : f (i) = f (j) ⊃ i = j)

I ([nat → int]) ' ([NAT → int])

= (int ' int);

(λ(i : int) : 0 ≤ i) = (λ(i : int) : i ≤ 0 ⊃ i = 0);

(int ' int)

Andre Luiz Galdino Universidade de Brasılia

Page 63: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Compatibilidade entre Tipos

DefinicaoDois tipos A e B sao ditos ser compatıveis no contexto Γ (emnotacao, (A ∼ B)Γ ) se `Γ a , para cada a em (µ(A) ' µ(B)).

Andre Luiz Galdino Universidade de Brasılia

Page 64: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Verificando Tipo

τ(Γ)(f a) = B, onde µ0(τ(Γ)(f )) = [A→ B],τ(Γ)(a) = A′,(A ∼ A′)Γ,`Γ π(A)(a)

Andre Luiz Galdino Universidade de Brasılia

Page 65: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Verificando Tipo

Seja g : f : [nat → nat] | f (0) = 0, e x : int. Entao

µ0(τ(Γ)(g)) = [nat → nat]

τ(Γ)(x) = int, e ainda

int ∼ nat, desde que µ(int) = µ(nat) = number

τ(Γ)(g(x)) = nat, com a obrigacao de prova

π(nat)(x) = (x ≥ 0).

Andre Luiz Galdino Universidade de Brasılia

Page 66: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Tipos Dependentes: Motivacao

I Definicao do coeficiente binomial C (n, k) = (nk)

I Primeiro, definimos a operacao fatorial recursivamente:n : VAR natfatorial(n) : RECURSIVE posnat =

(IF n > 0 THEN n ∗ fatorial(n − 1) ELSE 1 ENDIF)MEASURE n

I C (n, (k : upto(n))) : rat =fatorial(n)/(fatorial(k) ∗ fatorial(n − k))

onde upto(n) = s : nat | s <= n

Andre Luiz Galdino Universidade de Brasılia

Page 67: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Tipos Dependentes: Motivacao

I Definicao do coeficiente binomial C (n, k) = (nk)

I Primeiro, definimos a operacao fatorial recursivamente:n : VAR natfatorial(n) : RECURSIVE posnat =

(IF n > 0 THEN n ∗ fatorial(n − 1) ELSE 1 ENDIF)MEASURE n

I C (n, (k : upto(n))) : rat =fatorial(n)/(fatorial(k) ∗ fatorial(n − k))

onde upto(n) = s : nat | s <= n

Andre Luiz Galdino Universidade de Brasılia

Page 68: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Tipos Dependentes: Motivacao

I Definicao do coeficiente binomial C (n, k) = (nk)

I Primeiro, definimos a operacao fatorial recursivamente:n : VAR natfatorial(n) : RECURSIVE posnat =

(IF n > 0 THEN n ∗ fatorial(n − 1) ELSE 1 ENDIF)MEASURE n

I C (n, (k : upto(n))) : rat =fatorial(n)/(fatorial(k) ∗ fatorial(n − k))

onde upto(n) = s : nat | s <= n

Andre Luiz Galdino Universidade de Brasılia

Page 69: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Tipos Dependentes: Motivacao

I Definicao do coeficiente binomial C (n, k) = (nk)

I Primeiro, definimos a operacao fatorial recursivamente:n : VAR natfatorial(n) : RECURSIVE posnat =

(IF n > 0 THEN n ∗ fatorial(n − 1) ELSE 1 ENDIF)MEASURE n

I C (n, (k : upto(n))) : rat =fatorial(n)/(fatorial(k) ∗ fatorial(n − k))

onde upto(n) = s : nat | s <= n

Andre Luiz Galdino Universidade de Brasılia

Page 70: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Tipos Dependentes

I Um produto de tipos com dependencia e escrito como[x : A,B]

I Uma funcao tipo com dependencia e escrita como[x : A→ B].

Andre Luiz Galdino Universidade de Brasılia

Page 71: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Tipos Dependentes

I Um produto de tipos com dependencia e escrito como[x : A,B]

I Uma funcao tipo com dependencia e escrita como[x : A→ B].

Andre Luiz Galdino Universidade de Brasılia

Page 72: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Tipos Dependentes

I [i : nat, j : nat | j ≤ i]

I [i : nat, [j : nat | j ≤ i → bool ]]

I [i : int → j : int | i ≤ j]

I [nat, d : n : nat | n 6= 0 → r : nat | r < d]

Andre Luiz Galdino Universidade de Brasılia

Page 73: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Tipos Dependentes

I [i : nat, j : nat | j ≤ i]

I [i : nat, [j : nat | j ≤ i → bool ]]

I [i : int → j : int | i ≤ j]

I [nat, d : n : nat | n 6= 0 → r : nat | r < d]

Andre Luiz Galdino Universidade de Brasılia

Page 74: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Tipos Dependentes

I [i : nat, j : nat | j ≤ i]

I [i : nat, [j : nat | j ≤ i → bool ]]

I [i : int → j : int | i ≤ j]

I [nat, d : n : nat | n 6= 0 → r : nat | r < d]

Andre Luiz Galdino Universidade de Brasılia

Page 75: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Tipos Dependentes

I [i : nat, j : nat | j ≤ i]

I [i : nat, [j : nat | j ≤ i → bool ]]

I [i : int → j : int | i ≤ j]

I [nat, d : n : nat | n 6= 0 → r : nat | r < d]

Andre Luiz Galdino Universidade de Brasılia

Page 76: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Exemplo: Tipos Dependentes

I [i : nat, j : nat | j ≤ i]

I [i : nat, [j : nat | j ≤ i → bool ]]

I [i : int → j : int | i ≤ j]

I [nat, d : n : nat | n 6= 0 → r : nat | r < d]

Andre Luiz Galdino Universidade de Brasılia

Page 77: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Teoria de Prova do PVS

A teoria de prova do PVS e apresentada em termos de calculossequente.

Um sequente e da forma:

Σ `Γ Λ

onde Γ e um contexto, Σ e o conjunto de formulas antecedentes eΛ e o conjunto de formulas consequentes.

As regras de inferencia sao apresentadas na forma:

premissa(s)

conclus~aonomeladocondic~ao

Andre Luiz Galdino Universidade de Brasılia

Page 78: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Teoria de Prova do PVS

A teoria de prova do PVS e apresentada em termos de calculossequente.

Um sequente e da forma:

Σ `Γ Λ

onde Γ e um contexto, Σ e o conjunto de formulas antecedentes eΛ e o conjunto de formulas consequentes.

As regras de inferencia sao apresentadas na forma:

premissa(s)

conclus~aonomeladocondic~ao

Andre Luiz Galdino Universidade de Brasılia

Page 79: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Teoria de Prova do PVS

A teoria de prova do PVS e apresentada em termos de calculossequente.

Um sequente e da forma:

Σ `Γ Λ

onde Γ e um contexto, Σ e o conjunto de formulas antecedentes eΛ e o conjunto de formulas consequentes.

As regras de inferencia sao apresentadas na forma:

premissa(s)

conclus~aonomeladocondic~ao

Andre Luiz Galdino Universidade de Brasılia

Page 80: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Teoria de Prova do PVS

A teoria de prova do PVS e apresentada em termos de calculossequente.

Um sequente e da forma:

Σ `Γ Λ

onde Γ e um contexto, Σ e o conjunto de formulas antecedentes eΛ e o conjunto de formulas consequentes.

As regras de inferencia sao apresentadas na forma:

premissa(s)

conclus~aonomeladocondic~ao

Andre Luiz Galdino Universidade de Brasılia

Page 81: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Enfraquecimento (W)

Σ1 `Γ Λ1

Σ2 `Γ Λ2(W)

se Σ1 ⊆ Σ2 e Λ1 ⊆ Λ2

I Contracao (C)

Direita

a, a,Σ `Γ Λ

a,Σ `Γ Λ(C `)

Esquerda

Σ `Γ a, a,Λ

Σ `Γ a,Λ(` C)

Andre Luiz Galdino Universidade de Brasılia

Page 82: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Enfraquecimento (W)

Σ1 `Γ Λ1

Σ2 `Γ Λ2(W)

se Σ1 ⊆ Σ2 e Λ1 ⊆ Λ2

I Contracao (C)

Direita

a, a,Σ `Γ Λ

a,Σ `Γ Λ(C `)

Esquerda

Σ `Γ a, a,Λ

Σ `Γ a,Λ(` C)

Andre Luiz Galdino Universidade de Brasılia

Page 83: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Comuta (X)

Direita

Σ1, a, b,Σ2 `Γ Λ

Σ1, b, a,Σ2 `Γ Λ(X `)

Esquerda

Σ `Γ Λ1, a, b,Λ2

Σ `Γ Λ1, b, a,Λ2(X `)

I Corte (Corte)

(τ(Γ)(a) ∼ bool)Γ Σ, a `Γ Λ Σ `Γ a,Λ

Σ `Γ Λ(Corte)

Andre Luiz Galdino Universidade de Brasılia

Page 84: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Comuta (X)

Direita

Σ1, a, b,Σ2 `Γ Λ

Σ1, b, a,Σ2 `Γ Λ(X `)

Esquerda

Σ `Γ Λ1, a, b,Λ2

Σ `Γ Λ1, b, a,Λ2(X `)

I Corte (Corte)

(τ(Γ)(a) ∼ bool)Γ Σ, a `Γ Λ Σ `Γ a,Λ

Σ `Γ Λ(Corte)

Andre Luiz Galdino Universidade de Brasılia

Page 85: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Axiomas Proposicionais (Ax)

Σ, a `Γ a,Λ(Ax `)

I TRUE, FALSE

Direita

Σ,FALSE `Γ Λ(FALSE `)

Esquerda

Σ `Γ TRUE ,Λ(` TRUE)

Andre Luiz Galdino Universidade de Brasılia

Page 86: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Axiomas Proposicionais (Ax)

Σ, a `Γ a,Λ(Ax `)

I TRUE, FALSE

Direita

Σ,FALSE `Γ Λ(FALSE `)

Esquerda

Σ `Γ TRUE ,Λ(` TRUE)

Andre Luiz Galdino Universidade de Brasılia

Page 87: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Contexto

`Γ a(Formula-Contexto) se a e uma formula em Γ.

`Γ s = a(Definicao-Contexto) se s : T = a e uma

definicao de constante em Γ.

Direita

Σ, a `Γ,a Λ

Σ, a `Γ Λ(Contexto `)

Esquerda

Σ `Γ,¬a a,Λ

Σ `Γ a,Λ(` Contexto)

Σ `Γ Λ

Σ `Γ′ Λ(Contexto-W) se Γ e um prefixo de Γ′.

Andre Luiz Galdino Universidade de Brasılia

Page 88: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Contexto

`Γ a(Formula-Contexto) se a e uma formula em Γ.

`Γ s = a(Definicao-Contexto) se s : T = a e uma

definicao de constante em Γ.

Direita

Σ, a `Γ,a Λ

Σ, a `Γ Λ(Contexto `)

Esquerda

Σ `Γ,¬a a,Λ

Σ `Γ a,Λ(` Contexto)

Σ `Γ Λ

Σ `Γ′ Λ(Contexto-W) se Γ e um prefixo de Γ′.

Andre Luiz Galdino Universidade de Brasılia

Page 89: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Contexto

`Γ a(Formula-Contexto) se a e uma formula em Γ.

`Γ s = a(Definicao-Contexto) se s : T = a e uma

definicao de constante em Γ.

Direita

Σ, a `Γ,a Λ

Σ, a `Γ Λ(Contexto `)

Esquerda

Σ `Γ,¬a a,Λ

Σ `Γ a,Λ(` Contexto)

Σ `Γ Λ

Σ `Γ′ Λ(Contexto-W) se Γ e um prefixo de Γ′.

Andre Luiz Galdino Universidade de Brasılia

Page 90: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Contexto

`Γ a(Formula-Contexto) se a e uma formula em Γ.

`Γ s = a(Definicao-Contexto) se s : T = a e uma

definicao de constante em Γ.

Direita

Σ, a `Γ,a Λ

Σ, a `Γ Λ(Contexto `)

Esquerda

Σ `Γ,¬a a,Λ

Σ `Γ a,Λ(` Contexto)

Σ `Γ Λ

Σ `Γ′ Λ(Contexto-W) se Γ e um prefixo de Γ′.

Andre Luiz Galdino Universidade de Brasılia

Page 91: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Condicional (IF)

Σ, a, b `Γ,a Λ Σ, c `Γ,¬a a,Λ

Σ, IF (a, b, c) `Γ Λ(IF `)

Σ, a `Γ,a b,Λ Σ `Γ,¬a a, c ,Λ

Σ `Γ IF (a, b, c),Λ(` IF)

Andre Luiz Galdino Universidade de Brasılia

Page 92: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Condicional (IF)

Σ, a, b `Γ,a Λ Σ, c `Γ,¬a a,Λ

Σ, IF (a, b, c) `Γ Λ(IF `)

Σ, a `Γ,a b,Λ Σ `Γ,¬a a, c ,Λ

Σ `Γ IF (a, b, c),Λ(` IF)

Andre Luiz Galdino Universidade de Brasılia

Page 93: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Igualdade

Reflexiva

Σ `Γ a = a,Λ(Refl)

Substituicao

a = b,Σ[b] `Γ Λ[b]

a = b,Σ[a] `Γ Λ[a](Subs)

Andre Luiz Galdino Universidade de Brasılia

Page 94: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Igualdade Booleana

Σ[TRUE ], a `Γ Λ[TRUE ]

Σ[a], a `Γ Λ[a](Subs TRUE)

Σ[FALSE ], a `Γ Λ[FALSE ]

Σ[a], a `Γ Λ[a](Subs FALSE)

Σ,TRUE = FALSE `Γ Λ(TRUE-FALSE)

Andre Luiz Galdino Universidade de Brasılia

Page 95: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Igualdade Booleana

Σ[TRUE ], a `Γ Λ[TRUE ]

Σ[a], a `Γ Λ[a](Subs TRUE)

Σ[FALSE ], a `Γ Λ[FALSE ]

Σ[a], a `Γ Λ[a](Subs FALSE)

Σ,TRUE = FALSE `Γ Λ(TRUE-FALSE)

Andre Luiz Galdino Universidade de Brasılia

Page 96: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Igualdade Booleana

Σ[TRUE ], a `Γ Λ[TRUE ]

Σ[a], a `Γ Λ[a](Subs TRUE)

Σ[FALSE ], a `Γ Λ[FALSE ]

Σ[a], a `Γ Λ[a](Subs FALSE)

Σ,TRUE = FALSE `Γ Λ(TRUE-FALSE)

Andre Luiz Galdino Universidade de Brasılia

Page 97: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Reducao

I β reducao

`Γ (λ(x : T ) : a)(b) = a[b/x ](β)

I π reducao

`Γ pi (a1, a2) = ai(π)

Andre Luiz Galdino Universidade de Brasılia

Page 98: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Reducao

I β reducao

`Γ (λ(x : T ) : a)(b) = a[b/x ](β)

I π reducao

`Γ pi (a1, a2) = ai(π)

Andre Luiz Galdino Universidade de Brasılia

Page 99: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Extensionalidade

Σ `Γ,s:A (f s) =B[s/x] (g s),Λ

Σ `Γ f =[x :A→B] g ,Λ(FunExt) Γ(s) indefinido

Σ `Γ p1(a) =T1 p1(b),Λ Σ `Γ p2(a) =T2[(p1 a)/x] p2(b),Λ

Σ `Γ a =[x :T1T2] b,Λ(TunExt)

I Restricao de Tipo

τ(Γ)(a) = A π(A)(a),Σ `Γ Λ

Σ `Γ Λ(TipoPred)

Andre Luiz Galdino Universidade de Brasılia

Page 100: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Extensionalidade

Σ `Γ,s:A (f s) =B[s/x] (g s),Λ

Σ `Γ f =[x :A→B] g ,Λ(FunExt) Γ(s) indefinido

Σ `Γ p1(a) =T1 p1(b),Λ Σ `Γ p2(a) =T2[(p1 a)/x] p2(b),Λ

Σ `Γ a =[x :T1T2] b,Λ(TunExt)

I Restricao de Tipo

τ(Γ)(a) = A π(A)(a),Σ `Γ Λ

Σ `Γ Λ(TipoPred)

Andre Luiz Galdino Universidade de Brasılia

Page 101: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Regras de Provas do PVS

I Extensionalidade

Σ `Γ,s:A (f s) =B[s/x] (g s),Λ

Σ `Γ f =[x :A→B] g ,Λ(FunExt) Γ(s) indefinido

Σ `Γ p1(a) =T1 p1(b),Λ Σ `Γ p2(a) =T2[(p1 a)/x] p2(b),Λ

Σ `Γ a =[x :T1T2] b,Λ(TunExt)

I Restricao de Tipo

τ(Γ)(a) = A π(A)(a),Σ `Γ Λ

Σ `Γ Λ(TipoPred)

Andre Luiz Galdino Universidade de Brasılia

Page 102: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Aplicacoes

O PVS ja foi aplicado:

I para demonstrar teoremas classicos em analise matematica;

I para sistemas crıticos, por exemplo, para desenvolvimento desoftware para aeronaves;

I para verificacao de sistemas operacionais, algoritmosdistribuıdos.

Andre Luiz Galdino Universidade de Brasılia

Page 103: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Conclusao

A essencia semantica da linguagem e um lambda calculo tipadocom funcoes simples, subtipos, tipos dependentes, teorias eexpressoes condicionais.

Os subtipos e tipos com dependencia sao uma caracterıstica crucialda linguagem.

Andre Luiz Galdino Universidade de Brasılia

Page 104: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Referencias

I Sam Owre and Natarajan Shankar. The formal semantics of PVS.Technical Report SRI-CSL-97-2, Computer Science Laboratory, SRIInternational, Menlo Park, CA, August 1997.

I N. Shankar, S. Owre, J. M. Rushby, and D. W. J. Stringer-Calvert. PVSProver Guide. Computer Science Laboratory, SRI International, MenloPark, CA, September 1999.

I S. Owre, N. Shankar, J. M. Rushby, and D. W. J. Stringer-Calvert. PVSSystem Guide. Computer Science Laboratory, SRI International, MenloPark, CA, September 1999.

I V. A. Fernandes, Deteccao e Resolucao de Conflitos de Trafego Aereo,Dissertacao de Mestrado, Departamento de Matematica, Universidade deBrasılia, 2004.

I G. Dowek, C. Munoz, and A. Geser, Tactical Conflict Detection and

Resolution in a 3-D Airspace, Proceedings of the Fourth International Air

Traffic Management RD Seminar ATM 2001. Extended version available

as ICASE Report 2001-7, 2001.

Andre Luiz Galdino Universidade de Brasılia

Page 105: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Referencias

I V. A. Fernandes, Deteccao e Resolucao de Conflitos de Trafego Aereo,Dissertacao de Mestrado, Departamento de Matematica, Universidade deBrasılia, 2004.

I G. Dowek, C. Munoz, and A. Geser, Tactical Conflict Detection andResolution in a 3-D Airspace, Proceedings of the Fourth International AirTraffic Management RD Seminar ATM 2001. Extended version availableas ICASE Report 2001-7, 2001.

I J. Maddalon, R. Butler, A. Geser and C. Munoz, Formal Verification of aConflict Resolution and Recovery Algorithm, NASA/TP-2004-213015,2004.

I C. Munoz, R. Butler, V. Carreno, and G. Dowek, Formal verification ofconflict detection algorithms, Software Tools for Technology Transfer,2003. Extended version available as NASA/TM-2001-210864,2001.

I N. Shankar, S. Owre, and J. M. Rushby. PVS Tutorial. Computer Science

Laboratory, SRI International, Menlo Park, CA, February 1993.

Andre Luiz Galdino Universidade de Brasılia

Page 106: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Referencias

I S. Owre, J. M. Rushby, and N. Shankar. PVS: A prototype verificationsystem. In Deepak Kapur, editor, 11th International Conference onAutomated Deduction (CADE), volume 607 of Lecture Notes in ArtificialIntelligence, pages 748–752, Saratoga, NY, June 1992. Springer-Verlag.

I S. Owre, N. Shankar, J. M. Rushby, and D. W. J. Stringer-Calvert. PVSLanguage Reference Computer Science Laboratory, SRI International,Menlo Park, CA, September 1999.

I N. Shankar, S. Owre, J. M. Rushby, and D. W. J. Stringer-Calvert. PVSProver Guide. Computer Science Laboratory, SRI International, MenloPark, CA, September 1999.

I S. Owre, N. Shankar, J. M. Rushby, and D. W. J. Stringer-Calvert. PVSSystem Guide. Computer Science Laboratory, SRI International, MenloPark, CA, September 1999.

I S. Owre and N. Shankar. The formal semantics of PVS. Technical Report

SRI-CSL-97-2, Computer Science Laboratory, SRI International, Menlo

Park, CA, August 1997.

Andre Luiz Galdino Universidade de Brasılia

Page 107: Semântica do PVS: Tipos Dependentes e Aplicaçõesayala/TCgroup/andreSemInf.pdf · O PVS ( Prototype Verification System) ´e um ambiente para especificac˜ao e verifica¸c˜ao

II Seminario Informal (mas Formal) Semantica do PVS: Tipos Dependentes e Aplicacoes

Referencias

I J. Rushby, S. Owre, and N. Shankar. Subtypes for specifications:Predicate subtyping in PVS. IEEE Transactions on Software Engineering,24(9):709–720, September 1998.

I N. Shankar and S. Owre Principles and pragmatics of subtyping in PVS.In Didier Bert, Christine Choppy, and Peter Mosses, editors, RecentTrends in Algebraic Development Techniques, WADT ’99, volume 1827 ofLecture Notes in Computer Science, pages 37–52, Toulouse, France,September 1999. Springer-Verlag.

I J. Crow, S. Owre, J. Rushby, N. Shankar, and Mandayam Srivas. A

tutorial introduction to PVS. Presented at WIFT ’95: Workshop on

Industrial-Strength Formal Specification Techniques, Boca Raton, Florida,

April 1995. Available, with specification files, at

http://www.csl.sri.com/wift-tutorial.html.

Andre Luiz Galdino Universidade de Brasılia