Documente Academic
Documente Profesional
Documente Cultură
1 Organizare
2 Privire de ansamblu
Curs
Laborator
2 / 46
Organizare
3 / 46
Instructori
Denisa Diaconescu
Carmen Chirita
Claudia Muresan
Alexandra Otiman
Andrei Sipos
Ana Turlea
4 / 46
Suport curs
Moodle
https://sites.google.com/view/pl2017/home
sau
https://goo.gl/tQpnUi
5 / 46
Bibliografie
6 / 46
Notare
7 / 46
Notare
Laborator: 30 puncte
Examen: 70 puncte
8 / 46
Laborator: 30 puncte
Partial:
Are loc n Saptamana 9 (24 28 aprilie)
Se va sustine n cadrul cursului
Prezenta la partial este obligatorie!!
Nu se poate reface (doar la restanta)
Timp de lucru: 45 min
9 / 46
Examen: 70 puncte
10 / 46
Privire de ansamblu
11 / 46
Curs
12 / 46
TheProblema corectitudinii
Program Correctness programelor
Problem
?
Pentru metodele
Conventional conventionale
models of using computersde programare
not (imperative),
easy to determine nu este
correctness!
usor
! Has sa vedem
become a verycaimportant
un program
issue,este
not corect sau sa ntelegem
just in safety-critical apps. ce
nseamna ca este corect (n raport cu ce?!).
! Components with assured quality, being able to give a warranty, ...
Devine
! Being ableotoproblema din ce
run untrusted n ce
code, mai importanta,
certificate nu doar
carrying code, ... pentru
aplicatii safety-critical.
Avem nevoie de metode ce asigura calitate, capabile sa ofere 2
garantii.
13 / 46
Un program imperativ simplu
#include <iostream>
using namespace std;
main()
{
int square;
for(int i = 1; i <= 5; ++i)
{
square = i * i;
cout << square << endl;
}
}
Este corect? In raport cu ce?
Un formalism adecvat trebuie:
sa permita descrierea problemelor (specificatii), si
sa rationeze despre implementarea lor (corectitudinea programelor).
14 / 46
Logica
Care logica?
propozitionala
de ordinul I
de ordin nalt
logici modale
-calcul
logici cu mai multe valori
...
15 / 46
Folosind logica
Use of Logic
Specs
(Logic)
Semantics
?
Proof YES / NO
16 / 46
Semantica unui program
17 / 46
Tipuri de Semantica
Denotationala:
Intelesul programului este definit abstract ca element dintr-o
structura matematica adecvata.
Operationala:
Intelesul programului este definit n functie de pasii (transformari
dintr-o stare n alta) care apar n timpul executiei.
Axiomatica:
Intelesul programului este definit indirect n functie de axiomele si
regulile unei logici.
18 / 46
Programare Logica
19 / 46
Programare Logica Ecuationala
Specificatii Programare
Algebrice Logica
20 / 46
Specificatii algebrice
21 / 46
Ce veti vedea la curs
2 Specificatii algebrice
4 Sisteme de rescriere
22 / 46
Laborator
23 / 46
Ce veti vedea la laborator
Prolog:
cel mai cunoscut limbaj de programare logica
bazat pe un fragment al logicii clasice (logica Horn)
semantica operationala este bazata pe rezolutie
vom folosi implementarea SWI-Prolog
vom folosi varianta online SWISH a SWI-Prolog
http://swish.swi-prolog.org/
24 / 46
Ce veti vedea la laborator
Maude:
un limbaj de specificatii executabil
un fragment este bazat pe logica ecuationala
semantica operationala este bazata pe rescriere
http://maude.cs.uiuc.edu/
Maude REPL: http://maude.cvlad.info/
25 / 46
Ce veti vedea la laborator
26 / 46
Planificare laboratoare
27 / 46
28 / 46
Programare logica clasica
29 / 46
Programare declarativa
Programare procedurala
Un program descrie explicit fiecare pas al unui calcul.
Exemple:
programare imperativa (C)
programare orientata-obiect (Java)
Programare declarativa
Programatorul spune ce vrea sa calculeze, dar nu specifica concret
cum calculeaza.
Este treaba interpretorului (compilator/implementare) sa identifice
cum sa efectueze calculul respectiv.
Programarea logica este un tip de programare declarativa!
Exemple:
programare logica (Prolog)
programare functionala (Haskell)
30 / 46
Programare logica - n mod idealist
31 / 46
Programare logica - n mod idealist
32 / 46
Exemplu de program logic
oslo windy
oslo norway
norway cold
cold windy winterIsComing
oslo
33 / 46
Exemplu de ntrebare
34 / 46
Putem sa testam n SWI-Prolog
Program:
windy :- oslo.
norway :- oslo.
cold :- norway.
winterIsComing :- windy, cold.
oslo.
Intrebare:
?- winterIsComing.
true
http://swish.swi-prolog.org/
35 / 46
Puncte-cheie
36 / 46
Cazul logicii propozitionale
37 / 46
Logica propozitionala (recap.)
Formule:
form ::= atom | form | form form | form form | form form
Un exemplu de formula:
(stark dead) (sansa arya bran)
38 / 46
Interpretari
De exemplu,
{ poor 7 false, happy 7 true } |= poor happy
39 / 46
Consecinta logica
40 / 46
Exemple
41 / 46
Ideea unui program logic (propozitional)
42 / 46
Verificarea problemei consecintei logice
43 / 46
Cum salvam situtia?
44 / 46
Clauze propozitionale definite
O clauza definita este o formula care poate avea una din formele:
1 q (clauza unitate) (un fapt n Prolog q.)
2 p1 . . . pk q (o regula n Prolog q :- p1 ,. . .,pn )
45 / 46
Pe saptamana viitoare!
46 / 46