FSAB1402: Informatique 2. Sémantique Formelle

Documents pareils
Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

TP 1. Prise en main du langage Python

Recherche dans un tableau

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C


Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Présentation du langage et premières fonctions

Classes et Objets en Ocaml.

Arbres binaires de recherche

STAGE IREM 0- Premiers pas en Python

La programmation en première année basée sur l enrichissement progressif de micromondes multi-agents

Objets et Programmation. origine des langages orientés-objet

Vérification de programmes et de preuves Première partie. décrire des algorithmes

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

OCL - Object Constraint Language

Qualité du logiciel: Méthodes de test

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Pourquoi l apprentissage?

Initiation à l algorithmique

Cours de Génie Logiciel

2 Comment fonctionne un ordinateur, dans les grandes lignes

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Notions fondamentales du langage C# Version 1.0

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

ARBRES BINAIRES DE RECHERCHE

Cours d algorithmique pour la classe de 2nde

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Algorithmique et Programmation, IMA

Algorithmique et programmation : les bases (VBA) Corrigé

Initiation à la programmation en Python

Évaluation et implémentation des langages

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

modules & compilation

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Les arbres binaires de recherche

Cours 1 : Qu est-ce que la programmation?

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Plan du cours. Historique du langage Nouveautés de Java 7

Cours Informatique Master STEP

Analyse de sécurité de logiciels système par typage statique

GOL502 Industries de services

Principes des langages de programmation INF 321. Eric Goubault

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Vérification formelle de la plate-forme Java Card

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

1. Structure d'un programme FORTRAN 95

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Big Data et Graphes : Quelques pistes de recherche

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Cours d Algorithmique et de Langage C v 3.0

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Les structures de données. Rajae El Ouazzani

Introduction à la programmation concurrente

Introduction à la Programmation Parallèle: MPI

Cours 1 : La compilation

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

L informatique en BCPST

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

I. Introduction aux fonctions : les fonctions standards

Utilisation d objets : String et ArrayList

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Introduction au langage C

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

ALGORITHMIQUE ET PROGRAMMATION En C

TD 1 - Structures de Traits et Unification

Algorithmique, Structures de données et langage C

Logiciel Libre Cours 2 Fondements: Programmation

Maple: premiers calculs et premières applications

PHP 5. La base de données MySql. A. Belaïd 1

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Découverte de Python

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Rappels Entrées -Sorties

Conventions d écriture et outils de mise au point

Concept de machine virtuelle

UML et les Bases de Données

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Chapitre 10 Arithmétique réelle

Informatique Générale

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Ingénierie des Modèles. Méta-modélisation

1.6- Génération de nombres aléatoires

Correction Code nécessaire à la compilation : let bs ="\\" let nl = "\n" ;; let appliquer = List.map ;; (* affichage d'un noeud *)

Compilation (INF 564)

Génie Logiciel avec Ada. 4 février 2013

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Transcription:

FSAB1402: Informatique 2 Sémantique Formelle Peter Van Roy Département d Ingénierie Informatique, UCL pvr@info.ucl.ac.be P. Van Roy 1 Ce qu on va voir aujourd hui Résumé du projet (APP) Sur le tableau! Le projet commence aujourd hui et se termine la semaine 9 (vendredi 18 novembre) Chaque projet se fait en groupe de 8 personnes Résumé du dernier cours Enregistrements, tuples, arbres La sémantique du modèle déclaratif P. Van Roy 2 1

Suggestions de lecture pour la sémantique Section 1.6: Correctness Section 2.2: The single-assignment store Section 2.3: Kernel language Section 2.4: Kernel language semantics Section 2.6: From kernel language to practical language P. Van Roy 3 Résumé du dernier cours P. Van Roy 4 2

Tuples et enregistrements Un enregistrement a une étiquette, des champs et des noms de champs L étiquette et les noms des champs sont des atomes ou des entiers L opération Arity donne une liste des noms des champs en ordre lexicographique Un tuple est un enregistrement où des noms des champs sont des entiers consécutifs à partir de 1 Une liste est un tuple: Une liste est l atome nil ou le tuple (H T) où T est une liste Il y a du soutien syntaxique pour les listes P. Van Roy 5 Arbres de recherche Un arbre binaire ordonné Chaque noeud a une clé Pour chaque racine: Les clés du sous-arbre de gauche sont plus petites que la clé de la racine, qui est plus petite que les clés du sous-arbre de droite Un arbre de recherche Chaque noeud a une paire (clé,valeur); les clés sont ordonnées Chercher, insérer, enlever une paire d un arbre selon la clé Conditions globales Quand un arbre est ordonné, c est une condition sur tout l arbre Chaque fois quand on fait quelque chose, comme enlever une paire, il faut reorganiser l arbre pour maintenir la condition globale Le maintien d une condition globale est un exemple d un calcul orientébut ( goal-oriented computation ) P. Van Roy 6 3

La sémantique du langage P. Van Roy 7 La sémantique du langage La sémantique du langage donne une explication mathématique de l exécution de tout programme Commençons avec un programme quelconque. Il y a deux pas à suivre pour avoir l explication: 1. La traduction en langage noyau 2. L exécution du programme en langage noyau L exécution se fait dans une machine simplifiée appellée machine abstraite La machine abstraite a une définition mathématique précise On peut raisonner sur l exécution Calculs de complexité, exactitude, comprendre l exécution (pourquoi la récursion terminale marche) P. Van Roy 8 4

Syntaxe du langage noyau Notation EBNF; <s> désigne une instruction <s> ::= skip <x> 1 =<x> 2 <x>=<v> local <x> in <s> end if <x> then <s> 1 else <s> 2 end { <x> <x> 1 <x> n } case <x> of <p> then <s> 1 else <s> 2 end <v> ::= <p> ::= P. Van Roy 9 Syntaxe des valeurs Notation EBNF; <v> désigne une valeur, <p> désigne une forme (pattern) <v> ::= <number> <record> <procedure> <number> ::= <int> <float> <record>, <p> ::= <literal> <literal>(<feature> 1 :<x> 1 <feature> n :<x> n ) <procedure> ::= proc {$ <x> 1 <x> n } <s> end <literal> ::= <atom> <bool> <feature> ::= <atom> <bool> <int> <bool> ::= true false Souvenez-vous qu un tuple est un enregistrement (record) et qu une liste est un tuple! Les enregistrements suffisent donc. P. Van Roy 10 5

Les bases de l exécution Pour exécuter une instruction, il faut: Un environnement E pour faire le lien avec la mémoire Une mémoire σ qui contient les variables et les valeurs Instruction sémantique (<s>, E) Remarquez: chaque instruction a son propre environnement! Pourquoi? Etat d exécution (ST, σ) Une pile ST d instructions sémantiques avec une mémoire σ Remarquez: il y a la même mémoire σ qui est partagée par toutes les instructions! Pourquoi? P. Van Roy 11 Début de l exécution Etat initial ([(<s>, )], ) Instruction <s> avec environnement vide (pas d identificateurs libres) Mémoire vide (pas encore de variables) A chaque pas Enlevez l instruction du sommet de la pile Exécutez l instruction Quand la pile est vide, l exécution s arrête P. Van Roy 12 6

Exemple d une exécution P. Van Roy 13 Exemple d une exécution local X in local B in B=true if B then X=1 else skip end end end P. Van Roy 14 7

Exemple: l état initial ([(local X in local B in B=true if B then X=1 else skip end end end, )], ) Commençons avec une mémoire vide et un environnement vide P. Van Roy 15 Exemple: l instruction local ([(local B in B=true if B then X=1 else skip end end, {X x})], {x}) Crééz la nouvelle variable x dans la mémoire Continuez avec le nouvel environnement P. Van Roy 16 8

Exemple: encore un local ([( (B=true if B then X=1 else skip end), {B b, X x})], {b,x}) Crééz la nouvelle variable b dans la mémoire Continuez avec le nouvel environnement P. Van Roy 17 Exemple: composition séquentielle ([(B=true, {B b, X x}), (if B then X=1 else skip end, {B b, X x})], {b,x}) L instruction composée devient deux instructions La pile contient maintenant deux instructions sémantiques P. Van Roy 18 9

Exemple: affectation de B ([(if B then X=1 else skip end, {B b, X x})], {b=true, x}) Affectez b à true P. Van Roy 19 Exemple: instruction if ([(X=1, {B b, X x})], {b=true, x}) Testez la valeur de B Continuez avec l instruction après le then P. Van Roy 20 10

Exemple: affectation de X ([], {b=true, x=1}) Affectez x à 1 L exécution termine parce que la pile est vide P. Van Roy 21 Calculs avec des environnements P. Van Roy 22 11

Calculs avec l environnement Pendant l exécution, on fait deux sortes de calculs avec les environnements Adjonction: E 2 =E 1 +{X y} Ajouter un lien dans un environnement Pour local <x> in <s> end Restriction: CE=E {X,Y,Z} Enlever des liens d un environnement Pour le calcul d un environnement contextuel P. Van Roy 23 L adjonction Pour une instruction local local X in (E 1 ) X=1 local X in (E 2 ) X=2 {Browse X} end end E 1 ={Browse b, X x} E 2 =E 1 +{X y} E 2 ={Browse b, X y} P. Van Roy 24 12

La restriction Pour une définition de procédure local A B C in A=1 B=2 C=3 (E) fun {AddB X} X+B end end E={A a, B b, C c} σ={a=1,b=2,c=3} CE=E {B} ={B b} P. Van Roy 25 Sémantique des instructions P. Van Roy 26 13

Sémantique des instructions Pour chaque instruction du langage noyau, il faut préciser ce qu elle fait avec l état d exécution Chaque instruction prend un état d exécution et donne un autre état d exécution Etat d exécution = pile sémantique + mémoire Nous allons regarder quelques instructions skip <s> 1 <s> 2 (composition séquentielle) local <x> in <s> end Vous pouvez regarder les autres pendant les travaux pratiques P. Van Roy 27 Rappel: les instructions du langage noyau Les instructions du langage noyau sont: skip <s> 1 <s> 2 (composition séquentielle) local <x> in <s> end <x>=<v> (affectation) if <x> then <s> 1 else <s> 2 end (conditionnel) Définition de procédure Appel de procédure case <x> of <p> then <s> 1 else <s> 2 end (pattern matching) P. Van Roy 28 14

skip L instruction la plus simple Elle ne fait rien! Etat de l entrée: ([(skip,e), S 2,, S n ], σ) Etat de la sortie: ([S 2,, S n ], σ) C est tout! (skip,e) S 2 S 2 S n S n P. Van Roy 29 <s> 1 <s> 2 (composition séquentielle) Presque aussi simple L instruction enlève le sommet de la pile et en ajoute deux nouveaux éléments S a S b S 2 S a S b S 2 S n S n P. Van Roy 30 15

local <x> in <s> end Crééz la nouvelle variable x Ajoutez la correspondance {X x} à l environnement E (l adjonction) (local X in S end, E) S 2 σ (S,E+{X x}) S 2 σ {x} S n S n P. Van Roy 31 Les autres instructions Elles ne sont pas vraiment compliquées A vous de regarder tranquillement chez vous <x>=<v> (l affectation) Attention: quand <v> est une procédure, il faut créer l environnement contextuel! if <x> then <s> 1 else <s> 2 end (le conditionnel) Attention: si <x> n a pas encore de valeur, I instruction attend ( bloque ) jusqu à ce que <x> est true ou false La condition d activation: <x> est lié à une valeur case <x> of <p> then <s> 1 else <s> 2 end Attention: les cas plus compliqués sont construits à partir de ce cas simple P. Van Roy 32 16

La sémantique des procédures Définition de procédure Il faut créer l environnement contextuel Appel de procédure Il faut faire le lien entre les arguments formels et les arguments actuels Il faut utiliser l environnement contextuel P. Van Roy 33 L environnement contextuel local Z in Z=1 proc {P X Y} Y=X+Z end end Les identificateurs libres de la procédure (ici, Z) prennent des valeurs externes à la procédure Ils sont dans l environnement contextuel, qui doit faire partie de la procédure! P. Van Roy 34 17

Définition d une procédure L instruction sémantique de la définition est (<x>=proc {$ <x> 1 <x> n } <s> end, E) Arguments formels: <x> 1,, <x> n Identificateurs libres dans <s>: <z> 1,, <z> k Environnement contextuel: CE=E <z>1,, <z>k (restriction de E) Valeur en mémoire: x=(proc {$ <x> 1 <x> n } <s> end, CE) P. Van Roy 35 Exemple avec un appel de procédure P. Van Roy 36 18

Exemple avec procédure local P in local Y in local Z in Z=1 proc {P X} Y=X end {P Z} end end end P. Van Roy 37 Exemple avec procédure local P Y Z in Z=1 proc {P X} Y=X end {P Z} end Nous allons tricher un peu: nous allons faire toutes les déclarations en même temps Ce genre de petite tricherie est très utile et on peut la justifier en ajoutant des règles de sémantique P. Van Roy 38 19

Petit exercice pour vous: un local plus pratique On peut définir une version de local qui sait faire plusieurs déclarations à la fois Il faut modifier la sémantique Attention aux détails: local X X in end P. Van Roy 39 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Etat d exécution initial Environnement vide et mémoire vide P. Van Roy 40 20

Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Première instruction P. Van Roy 41 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Environnement initial (vide) P. Van Roy 42 21

Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Instruction sémantique P. Van Roy 43 Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Pile sémantique initiale (qui contient une instruction sémantique) P. Van Roy 44 22

Exemple avec procédure ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Mémoire initiale (vide) P. Van Roy 45 L instruction local ([(local P Y Z in Z=1 proc {P X} Y=X end {P Z} end, )], ) Crééz les nouvelles variables en mémoire Etendez l environnement P. Van Roy 46 23

L instruction local ([(Z=1 proc {P X} Y=X end {P Z}, {P p, Y y, Z z})], {p, y, z}) Crééz les nouvelles variables en mémoire Etendez l environnement P. Van Roy 47 Composition séquentielle ([(Z=1 proc {P X} Y=X end {P Z}, {P p, Y y, Z z})], {p, y, z}) Faire la première composition séquentielle P. Van Roy 48 24

Composition séquentielle ([(Z=1, {P p, Y y, Z z}), (proc {P X} Y=X end {P Z}, {P p, Y y, Z z})], {p, y, z}) Faire la première composition séquentielle P. Van Roy 49 Affectation de Z ([(proc {P X} Y=X end {P Z}, {P p, Y y, Z z})], {p, y, z=1}) Liez la variable z en mémoire P. Van Roy 50 25

Deuxième composition séquentielle ([(proc {P X} Y=X end, ({P Z}, {p, y, z=1}) {P p,y y,z z}), {P p,y y,z z})], Faire la deuxième composition séquentielle P. Van Roy 51 Définition de la procédure ([(proc {P X} Y=X end, ({P Z}, {p, y, z=1}) Définition de la procédure Identificateur libre Argument formel {P p, Y y, Z z}), {P p, Y y, Z z})], Y X L environnement contextuel est {Y y} Restriction de {P p, Y y, Z z} Mettez ensuite la valeur procédurale dans la mémoire P. Van Roy 52 26

Appel de la procédure ([({P Z}, {P p, Y y, Z z})], { p = (proc {$ X} Y=X end, {Y y}), y, z=1}) L appel {P Z} a l argument actuel Z et l argument formel X Calcul de l environnement qui sera utilisé pendant l exécution de la procédure: Commencez avec {Y y} Adjonction de {X z} P. Van Roy 53 Appel de la procédure ([(Y=X, {Y y, X z})], { p = (proc {$ X} Y=X end, {Y y}), y, z=1}) P. Van Roy 54 27

L affectation ([(Y=X, {Y y, X z})], { p = (proc {$ X} Y=X end, {Y y}), y, z=1}) Affectation de Y et X La variable qui correspond à Y: y La variable qui correspond à X: z P. Van Roy 55 Fin de l exemple ([], { p = (proc {$ X} Y=X end, {Y y}), y=1, z=1}) Voilà! P. Van Roy 56 28

Résumé de la valeur procédurale P. Van Roy 57 Importance de la valeur procédurale Une valeur procédurale contient deux choses Le code de la procédure et l environnement contextuel L appel de la procédure construit l environnement de l appel: on commence avec l environnement contextuel, en on y ajoute les arguments formels La valeur procédurale est un des concepts les plus puissants dans les langages de programmation Première utilisation en Algol 68 (appellé closure fermeture ) Existe dans quasi tous les langages, parfois accessible au programmeur (notamment dans les langages fonctionnels) Plus difficile à utiliser en Java, C, C ++! Procédure/fonction/méthode: il n y a que du code L environnement contextuel manque (sauf pour un inner class ) En Java et C++ on peut simuler une valeur procédurale avec un objet P. Van Roy 58 29

Appel de procédure (1) L instruction sémantique est ({ x y 1 y n }, E) Si la condition d activation est fausse (E( x ) pas lié) Suspension (attente d exécution) Si E( x ) n est pas une procédure Erreur Si E( x ) est une procédure mais le nombre d arguments n est pas bon ( n) Erreur P. Van Roy 59 Appel de procédure (2) L instruction sémantique est ({ x y 1 y n }, E) avec E( x ) = (proc {$ z 1 z n } s end, CE) Alors empilez ( s, CE + { z 1 E( y 1 ),, z n E( y n )}) P. Van Roy 60 30

Résumé P. Van Roy 61 Concepts de la machine abstraite Mémoire à affectation unique σ = {x 1 =10,x 2,x 3 =20} Variables et leurs valeurs Environnement E = {X x, Y y} Lien entre identificateurs et variables en mémoire Instruction sémantique (<s>,e) Une instruction avec son environnement Pile sémantique ST = [(<s 1 >,E 1 ),, (<s n >,E n )] Une pile d instructions sémantiques Exécution (ST 1,σ 1 ) (ST 2,σ 2 ) (ST 3,σ 3 ) Une séquence d états d exécution (pile + mémoire) P. Van Roy 62 31

Résumé Enregistrements, tuples, listes et arbres Une liste est un tuple, un tuple est un enregistrement Calcul orienté-but dans un arbre de recherche La sémantique d un programme Traduction en langage noyau Exécution avec la machine abstraite Exemple d exécution Instruction sémantique, pile sémantique, mémoire Sémantique des instructions du langage noyau Calculs avec des environnements Adjonction, restriction Exemple d exécution avec une procédure Une valeur procédurale contient deux choses: code + environnement contextuel Définition et appel de procédure P. Van Roy 63 32