Τεχνθτι Νοθμοςφνθ Ιωάννθσ Χατηθλυγεροφδθσ Πολυτεχνικι Σχολι Τμιμα Μθχανικϊν Η/Υ & Πλθροφορικισ
Λογικόσ Προγραμματιςμόσ και PROLOG
Λογικόσ Προγραμματιςμόσ (1) Εξαγωγι αποτελεςμάτων-ςυμπεραςμάτων από ζνα πεπεραςμζνο ςφνολο λογικϊν εκφράςεων, που ονομάηεται λογικό πρόγραμμα (logic program) Πθγάηει από το πεδίο τθσ αυτοματοποιθμζνθσ απόδειξθσ κεωρθμάτων (automated theorem proving) με απαιτιςεισ υψθλότερθσ αποδοτικότθτασ. Γι αυτό χρθςιμοποιεί μια περιοριςμζνθ μορφι λογικισ, που οδθγεί ςε αυτό που ονομάηεται περιοριςμζνο λογικό πρόγραμμα (definite logic program) 3
Λογικόσ Προγραμματιςμόσ (2) Η λογικι αυτι χρθςιμοποιεί λογικζσ προτάςεισ τθσ μορφισ: x1 x2 xm (A1 A2 An Ao) (n 0) όπου Αο, A1, A2,, An είναι (κετικζσ) ατομικζσ εκφράςεισ Η CNF-προταςιακι μορφι αυτισ είναι: Ao A1 A2 An (n 0) ι {Ao, A1, A2,, An} (n 0) Δθλ. αντιςτοιχεί ςε προτάςεισ με ζνα κετικό ςτοιχείο (το Αο). Αυτζσ οι προτάςεισ λζγονται περιοριςμζνεσ προτάςεισ (definite clauses) ι τφπου Horn και παριςτάνουν κετικι γνϊςθ. 4
Λογικόσ Προγραμματιςμόσ (3) Μια τζτοια πρόταςθ ςτον λογικό προγραμματιςμό ςυμβολικά γράφεται ωσ εξισ: Ao A1, A2,, An κεφαλι (head) ςϊμα (body) και είναι τφπου: κανόνασ (rule) Αν n=0, τότε δεν υπάρχει ςϊμα, παραλείπεται το και θ πρόταςθ γίνεται τφπου: γεγονόσ (fact): Αν δεν υπάρχει κεφαλι τότε θ πρόταςθ παίρνει τθν μορφι: Αο A1, A2,, An και λζγεται τφπου: ςτόχοσ (goal). Τα A1, A2,, An αποτελοφν υποςτόχουσ (subgoals). 5
Λογικόσ Προγραμματιςμόσ (4) Για να δοφμε τθ λογικι πίςω από μια πρόταςθ-ςτόχο, ασ κεωριςουμε τθν ιςοδφναμθ μορφι ςε ΚΛΠΤ: x1 x2 xm (A1 A2 An) που μπορεί να γραφεί x1 x2 xm (A1 A2 An) που αποτελεί τθν άρνθςθ τθσ x1 x2 xm (A1 A2 An) που αποτελεί ζνα ερϊτθμα ςε ΚΛΠΤ (δθλ. μια προσ απόδειξθ πρόταςθ υπαρξιακοφ τφπου) 6
Λογικόσ Προγραμματιςμόσ (5) Η απόδειξθ ενόσ ςτόχου γίνεται με τθ χριςθ του κανόνα SLD- Επίλυςη (SLD-Resolution principle): ( A 1,, A i-1, A i, A i+1,, A n ) (Β o Β 1, Β 2,, Β m ) όπου κ = γ.ε.(a i, Β o ) ( A 1,, A i-1, Β 1, Β 2,, Β m, A i+1,, A n )κ 7
Λογικόσ Προγραμματιςμόσ (6) Ασ υποκζςουμε ότι ζνα ςφνολο αποτελείται από τισ παρακάτω προτάςεισ ΚΛΠΤ: x y z (father(x ο,y ο ) parent(y ο,z ο )) grandfath(x ο,z ο ) x y father(x 1,y 1 ) parent(x 1,y 1 ) x y mother(x 2,y 2 ) parent(x 2,y 2 ) father(a,b) moth(b,c) Ερϊτθςθ: Who has a as grandfather? ΚΛΠΤ: x grandfath(a, x) Το ιςοδφναμο περιοριςμζνο λογικό πρόγραμμα κα είναι: (1) grandfath(x ο,z ο ) father(x ο,y ο ), parent(y ο,z ο ) (2) parent(x 1,y 1 ) father(x 1,y 1 ) (3) parent(x 2,y 2 ) mother(x 2,y 2 ) ΛΠ: grandfath(a, x) (4) father(a,b) (5) moth(b,c) 8
Λογικόσ Προγραμματιςμόσ (7) Μια απόδειξθ (εξαγωγι) του ςτόχου με χριςθ SLD-Επίλυςθ είναι: grandfath(a,x) grandfath(xο,zο) father(xο,yο), parent(yο,zο) father(a,y ο ), parent(y ο,x) father(a,b) κ1 = {a/x o, x/z o } κ2 = {b/yo} parent(b,x) parent(x 2,y 2 ) mother(x 2,y 2 ) κ3 = {b/x2, x/y2} mother(b,x) moth(b,c) κ4 = {c/x} κ1κ2κ3κ4 = {a/x o, c/z o, b/y o b/x 2, c/y 2 c/x} 9
Λογικόσ Προγραμματιςμόσ (8) Το SLD-δζντρο απεικονίηει όλεσ τουσ δυνατοφσ τα τρόπουσ εξαγωγισ/απόδειξθσ του ςτόχου: grandfath(a,x) (1) θ1 = {a/x o, x/z o } father(a,y ο ), parent(y ο,x) (4) θ2 = {b/y o } parent(b,x) θ3 = {b/x 1, x/y 1 } (2) (3) θ3 = {b/x 2, x/y 2 } father(b,x) mother(b,x) (5) θ4 = {c/x} 10
Λογικόσ Προγραμματιςμόσ (9) Άρνθςθ ςτον λογικό προγραμματιςμό Τα περιοριςμζνα προγράμματα εκφράηουν μόνο κετικι γνϊςθ (πϊσ ςχετίηονται μεταξφ τουσ οντότθτεσ του πεδίου του προβλιματοσ) Δεν εκφράηουν αρνθτικι γνϊςθ (τι δεν ιςχφει) Για να υπερβοφμε το εμπόδιο αυτό χρθςιμοποιείται θ λεγόμενθ «υπόκεςθ κλειςτοφ κόςμου» (closed world assumption-cwa) 11
Λογικόσ Προγραμματιςμόσ (10) Άρνθςθ ςτον λογικό προγραμματιςμό Η closed world assumption (cwa) είναι μια αρχι που αναφζρει ότι αν ζνα κετικό ςτοιχείο Α χωρίσ μεταβλθτζσ δεν μπορεί να αποδειχκεί από ζνα οριςτικό πρόγραμμα τότε ςυμπεραίνουμε το Α. Μια πιο περιοριςτικι εκδοχι του closed world assumption (cwa) ονομάηεται «άρνθςθ ωσ αποτυχία» (negation as failure-naf) και αναφζρεται ςτθν ίδια αρχι, αλλά δεν ανιχνεφει καταςτάςεισ που ζχουμε άπειρουσ κλάδουσ (infinite brunches) ςτο SLD-δζντρο, παρά μόνο κλάδουσ που είναι αδιζξοδοι, είναι όμωσ ευκολότερα εφαρμόςιμθ. Αυτιν ακολουκεί θ Prolog. 12
PROLOG PROLOG PROgramming in LOGic Πρϊτθ υλοποίθςθ: Alain Colmerauer, Μαςςαλία (Αρχι Επίλυςθσ, Εργαςία R. Kowalski) Δεφτερθ υλοποίθςθ: D. Warren, Εδιμβοφργο Δθλωτικι γλϊςςα: διάκριςθ μεταξφ λογικισ και ελζγχου ς ζνα πρόγραμμα (Kowalski: πρόγραμμα = λογικι + ζλεγχοσ) 13
Βαςικά Ζνα πρόγραμμα Prolog αφορά οντότθτεσ του προβλιματοσ με το οποίο αςχολείται, τισ ιδιότθτζσ τουσ και τισ ςχζςεισ τουσ. Ζνα πρόγραμμα Prolog μπορεί να περιλαμβάνει Γεγονότα (Facts): παριςτάνουν ςυγκεκριμζνεσ ιδιότθτεσ ι ςχζςεισ μεταξφ ςυγκεκριμζνων οντοτιτων του προβλιματοσ-τα δεδομζνα του προβλιματοσ. Κανόνεσ (Rules): παριςτάνουν γενικευμζνεσ ςχζςεισ μεταξφ οντοτιτων του προβλιματοσ-οι ςυλλογιςμοί για τθν επίλυςθ του προβλιματοσ. Ερωτιματα (Questions/Queries): παριςτάνουν τα ηθτοφμενα ενόσ προβλιματοσ-ο τρόποσ αλλθλεπίδραςθσ με τον χριςτθ. Σχόλια: ό,τι βρίςκεται ανάμεςα ςε /* */ 14
Ατομικζσ Εκφράςεισ (1) Μια ατομικι ζκφραςθ ζχει τθν εξισ μορφι: <κατθγόρθμα>(<όροσ1>, <όροσ2>,, <όροσν>). Το κατθγόρθμα (predicate) εκφράηει μια ιδιότθτα μιασ οντότθτασ ι μια ςχζςθ μεταξφ δφο ι περιςςοτζρων οντοτιτων. Ο αρικμόσ των ςχετιηόμενων οντοτιτων ονομάηεται τάξθ (arity) του κατθγοριματοσ. Ζνα κατθγόρθμα είναι ζνα αλφαρικμθτικό (ςυμβολοςειρά) που ξεκινά με μικρό γράμμα, επιτρζπεται θ χριςθ του _ (π.χ. loves, mother, man, make_tree). 15
Ατομικζσ Εκφράςεισ (2) Ζνασ όροσ (term) μπορεί να ζιναι: Μια ςτακερά (constant), δθλ. ζνασ αρικμόσ (π.χ. 2, 3.4, 8, -10) ι ζνα αλφαρικμθτικό (ςυμβολοςειρά) που ξεκινά με μικρό γράμμα (επιτρζπεται και το _ ) ι βρίςκεται ςε απλά ειςαγωγικά, π.χ. class1, x_1, giannis, p2, Petros. Μια ςτακερά παριςτάνει μια ςυγκεκριμζνθ οντότθτα. Μια μεταβλθτι (variable), δθλ. ζνα αλφαρικμθτικό (ςυμβολοςειρά), που ξεκινά με κεφαλαίο γράμμα ι το _ (π.χ. X, X2, _Y, Obj3). Μια μεταβλθτι αντιπροςωπεφει ζνα ςφνολο ομοειδϊν οντοτιτων. Υπάρχει θ ανϊνυμθ μεταβλθτι (_), που χρθςιμοποιείται όπωσ μια μεταβλθτι, αλλά όταν δεν κζλουμε να χρθςιμοποιιςουμε τθν τιμι δζςμευςθσ τθσ μεταβλθτισ. Μια δομι (structure), δθλ. ζνασ ςφνκετοσ όροσ τθσ μορφισ: <όνομα-δομισ>(<όροσ-1>, <όροσ-2>,, <όροσ-ν>). Αντιπροςωπεφει μια οντότθτα (όνομα-δομισ) με ςυγκεκριμζνα χαρακτθριςτικά (οροσ-1, όροσ-2 όροσ-ν). 16
Γεγονότα (Facts) Γεγονόσ = ατομικι ζκφραςθ χωρίσ μεταβλθτζσ. Παραδείγματα man(giannis). (man/1) father(giannis, kostas). (father/2) gives(giannis, maria, book1). (gives/3) gives(giannis, maria, book(black_horse, ellis)). 17
Κανόνεσ (1) Ζνασ κανόνασ ζχει τθν μορφι: <ζκφραςθ-κεφαλι> :- <ζκφραςθ-ςϊμα>. Η <ζκφραςθ-κεφαλι> ενόσ κανόνα είναι πάντα μια ατομικι ζκφραςθ και ονομάηεται κεφαλι (head) του κανόνα. Η <ζκφραςθ-ςϊμα> είναι μια ςφνκετθ ζκφραςθ και ονομάηεται ςϊμα (body) του κανόνα: <ζκφραςθ-ςϊμα> = <ατομ. ζκφρ.-1><λογικόσ-τελεςτισ- 1> <λογικόσ-τελεςτισ-ν><ατομ.-ζκφρ.-ν>. Οι λογικοί τελεςτζσ είναι: το, (AND), το ; (OR) και το not (NOT). 18
Παραδείγματα Κανόνεσ(2) likes(giannis, X) :- likes(x, wine). parent(x, Y) :- father(x, Y). sibling(x, Y) :- father(z, X), father(z, Y). sibling(x, Y) :- brother(x, Y); sister(x, Y). Διπλι ανάγνωςθ ενόσ κανόνα Δθλωτικι: Εάν <ςϊμα> τότε <κεφαλι> Διαδικαςτικι: Για να αποδειχκεί θ <κεφαλι> κα πρζπει να αποδειχκεί το <ςϊμα> 19
Ερωτιςεισ?- <ζκφραςθ> Π.χ.?- likes (giannis, maria). (απάντθςθ: yes-no)?- likes (giannis, X). (απάντθςθ: μεταβλθτι-τιμι)?- likes (_, maria). (απάντθςθ: yes-no) 20
Ζξοδοσ ςτθν Οκόνθ write(x) εκτφπωςθ τθσ τιμισ τθσ Χ write(hello) hello write( Hello ) Hello nl αλλαγι γραμμισ?- write(kostas), write(maria) kostasmaria?- write( kostas ), write(maria) Kostas maria?- write(kostas), nl, write(maria) kostas maria 21
Είςοδοσ από Πλθκτρολόγιο read(x). (ειςαγωγι όρων με δζςμευςθ τθσ Χ) : george. (!!!προςοχι ςτθν τελεία) X = george Yes 22
Τελεςτζσ Σφγκριςθσ Τελεςτζσ ςφγκριςθσ: =, \=, <, >, =<, >= Εκφράςεισ : 2 > 4, Χ =< 5, Χ = Υ king-time (george, 867, 920). king-time (john, 920, 960). king-time (kostas, 961, 990). king (X, Y) :- king-time (X, A, B), Y >= A, Y =< B.?- king (george, 900). Yes?- king (john, 900). No?- king (X, 930). X=john Yes?- king (X, 920). X=george; X=john; No 23
Πράξεισ Αρικμθτικοί τελεςτζσ: +, -, *, /, mod Αρικμθτικζσ εκφράςεισ: 3*4+5, Χ*Υ+2, -2*Χ Τελεςτισ υπολογιςμϊν: is tr-dim (abc, 10, 15). tr-dim (abd, 8, 12). tr-dim (ade, 6, 10). tr-area (X, A) :- tr-dim (X, Y1, Y2), A is Y1*Y2/2.?- tr-area (abd, X). X=48 Yes?- tr-area (adg, X). No 24
Κατθγόρθμα Ιςότθτασ (1) Χρθςιμοποιείται ωσ ενδοκεματικόσ τελεςτισ: Χ=Υ Τα Χ, Υ είναι εν γζνει δφο όροι που επιτρζπεται να περιζχουν αδζςμευτεσ μεταβλθτζσ. Ο ζκφραςθ-ςτόχοσ «Χ=Υ» (Χ ίςον Υ) ζχει ςαν αποτζλεςμα τον ζλεγχο ταιριάςματοσ (matching) των Χ, Υ, δθλ. ζλεγχο του αν είναι ταυτόςθμα ι μποροφν να γίνουν ταυτόςθμα. Αν ταιριάηουν, τότε ο ςτόχοσ επιτυγχάνει (true), αλλιϊσ αποτυγχάνει (false). Αντίκετα ενεργεί το κατθγόρθμα ανιςότθτασ: Χ \= Υ 25
Κατθγόρθμα Ιςότθτασ (2) Κανόνεσ ελζγχου ιςότθτασ/ταιριάςματοσ τθσ ζκφραςθσ Χ=Υ Αν Χ είναι αδζςμευτθ και Υ είναι δεςμευμζνθ (ι μια ςτακερά), τότε Χ, Υ είναι ίςεσ (ταιριάηουν). Επί πλζον, θ Χ αναγκάηεται να δεςμευτεί από τον ίδιο όρο που δεςμεφεται και θ Υ (ι τθ ςτακερά). plays (postman, football) = X. (Επιτυγχάνει, και θ Χ δεςμεφεται από τθ δομι «plays (postman, football)») Οι ακζραιοι αρικμοί και τα άτομα είναι ίςα (ταιριάηουν) με τον εαυτό τουσ. (126 = 126, ball = ball) Δφο δομζσ είναι ίςεσ αν ζχουν το ίδιο όνομα και αρικμό όρων και όλοι οι αντίςτοιχοι όροι είναι ίςοι (ταιριάηουν). plays (postman, football) = plays (postman, X) (Επιτυγχάνει, και θ Χ δεςμεφεται από τον όρο football ). Στθν περίπτωςθ που ζχουμε δφο αδζςμευτεσ μεταβλθτζσ, τότε ταιριάηουν και υποχρεϊνονται να είναι «κοινισ χριςθσ», δθλ. οποτεδιποτε θ μία δεςμεφεται από ζνα όρο, δεςμεφεται και θ άλλθ από τον ίδιο όρο. 26
Αναδρομικότθτα (1) Η αναδρομι (recursion) αναφζρεται ςε περιπτϊςεισ όπου ο οριςμόσ ενόσ κατθγοριματοσ (κανόνα) γίνεται μζςω του εαυτοφ του. Π.χ. Ασ υποκζςουμε ότι κζλουμε να ορίςουμε το κατθγόρθμα πρόγονοσ. Ωσ γνωςτό: «Πρόγονοσ κάποιου είναι ο γονζασ του. Επίςθσ, ο γονζασ του γονζα του, ο γονζασ του γονζα του γονζα του...». Στθν PROLOG κα ζπρεπε να γράψουμε : ancestor(x,y) : - parent(x,y). ancestor(x,y) : - parent(x,z), parent(z,y). ancestor(x,y) : - parent(x,z1), parent(z1,z2), parent(z2,y). κ.ο.κ. 27
Αναδρομικότθτα (2) Η λφςθ είναι ζνασ αναδρομικόσ οριςμόσ του ancestor : ancestor(x,y) : - father(x,y). ancestor(x,y) : - father(x,z), ancestor(z,y). Σε περίπτωςθ αναδρομισ απαιτοφνται: Ζνασ αναδρομικόσ οριςμόσ (οριςμόσ δια του εαυτοφ) Προςδιοριςμόσ οριακϊν ςυνκθκϊν (π.χ. ςυνκικεσ τερματιςμοφ) 28
Λίςτεσ (1) Ζνασ άλλοσ τφποσ όρου ι δομισ ςτθν Prolog. Είναι μια διατεταγμζνθ ακολουκία ςτοιχείων (χωρίσ κακοριςμζνο μικοσ). Διακρίνουμε τθν κεφαλι (head) και τθν ουρά (tail). Μια λίςτα μπορεί να περιζχει ςαν ςτοιχεία οποιουςδιποτε όρουσ (ςτακερζσ, μεταβλθτζσ, δομζσ, άλλεσ λίςτεσ). Η κενι λίςτα είναι μια λίςτα χωρίσ ςτοιχεία. 29
Παραδείγματα: [the, ship, [has, good, fish]] [a, X, 2, [Y, Z], [b]] [ ] Λίςτεσ (2) Υπάρχει ειδικόσ ςυμβολιςμόσ για τθν εξαγωγι (δζςμευςθ ςε μεταβλθτζσ) τθσ κεφαλισ και τθσ ουράσ μιασ λίςτασ: *Χ Υ+. Παραδείγματα: p([a, b, c]). p([the, ship, [has, good, fish]]).?- p([x Y]). X = a Y = [b, c] ; X = the Y = [ship, [has, good, fish]]?- p([_, _, [_ X]). X = [good, fish] 30
Αναδρομικι Αναηιτθςθ (1) Η αναηιτθςθ ενόσ ςτοιχείου ςε μια δομι που περιζχει άλλεσ ίδιεσ δομζσ (π.χ. λίςτα που περιζχει λίςτεσ) ι μπορεί να κεωρθκεί ωσ ςυνιςτϊμενθ από όμοιεσ υπόδομζσ απαιτεί αναδρομι. 31
Αναδρομικι Αναηιτθςθ (2) Παράδειγμα: Αναηιτθςθ ςτοιχείου ςε λίςτα: member(x, L) Οριςμόσ: Το Χ είναι μζλοσ τθσ λίςτασ L αν (α) το Χ είναι θ κεφαλι τθσ L είτε (β) το Χ είναι μζλοσ τθσ ουράσ τθσ L Τα παραπάνω μεταφράηονται ωσ εξισ: member(x, [X _]). member(x, [_ Y]) :- member(x, Y). (αναδρομικόσ οριςμόσ: οριςμόσ του member δια του εαυτοφ του) 32
Χειριςμόσ Λιςτϊν (1) member(x, L) (επιτυχία, αν θ τιμι τθσ μεταβλθτισ X είναι μζλοσ τθσ λίςτασ L, αλλιϊσ αποτυχία). Π.χ.?- member(a, [b, a, c, d]). Yes?- member(a, [b, c, d]). No?-member(X,[john,maria,kostas]). X = john ; X =maria ;X = kostas ; no append(l1, L2, X) (Ενοποίθςθ των L1, L2 και το αποτζλεςμα ςτθ μεταβλθτι Χ). Π.χ.?- append([a, b], [1, 2, 3], X). X=[a, b, 1, 2, 3]?- append(x, [c, d], [a, b, c, d]). X=[a, b] 33
Χειριςμόσ Λιςτϊν (2) length(l, N) (Το πλικοσ των ςτοιχείων τθσ L ανατίκεται ςτθν Ν). Π.χ.?- length([a, b, c, d,e,f], N). N=6?-length([[],[]],N). N=2?-length([[[]]],R). N=1 34
CUT (!) Τίκεται ςαν ςτόχοσ (ςτοιχείο) ςε κανόνεσ. Όταν το ςυναντιςει θ διαδικαςία απόδειξθσ, ικανοποιείται άμεςα. Σαν αποτζλεςμα ζχει τθν καλφτερθ απόδοςθ (και χωρικά και χρονικά). Περιπτϊςεισ χριςθσ: Για να ςταματιςει θ διαδικαςία ςε ςυγκεκριμζνο κανόνα Για να ςταματιςει τθν προςπάκεια ικανοποίθςθσ ςυγκεκριμζνου ςτόχου Για να αποτρζψει τθν οπιςκοδρόμθςθ, δθλ. τθν εφρεςθ εναλλακτικϊν λφςεων 35
CUT-Περίπτωςθ 1 Σταμάτθμα ςε Κανόνα Π.χ. αναδρομικοί οριςμοί, όπωσ το Ν!: n_parag(1,1) :-!. n_parag(n, P) :- NEXT is N-1, n_parag(next, REST), P is REST * N. 36
CUT-Περίπτωςθ 2 Σταμάτθμα Οπιςκοδρόμθςθσ Π.χ. Αναπαράςταςθ βθματικισ ςυνάρτθςθσ f(x,0) :- X<3,!. f(x, 2) :- 3 =< X, X < 6,!. f(x,4) :- 6 =< X. y 4 2 3 6 x 37
Σθμείωμα Ιςτορικοφ Εκδόςεων Ζργου Το παρόν ζργο αποτελεί τθν ζκδοςθ 1.0. 38
Σθμείωμα Αναφοράσ Copyright Πανεπιςτιμιο Πατρϊν, Ιωάννθσ Χατηθλυγεροφδθσ 2015. «Ευφυισ Προγραμματιςμόσ». Ζκδοςθ: 1.0. Πάτρα 2015. Διακζςιμο από τθ δικτυακι διεφκυνςθ: https://eclass.upatras.gr/courses/ceid1095/ 39
Σθμείωμα Αδειοδότθςθσ Το παρόν υλικό διατίκεται με τουσ όρουσ τθσ άδειασ χριςθσ Creative Commons Αναφορά, Μθ Εμπορικι Χριςθ Παρόμοια Διανομι 4.0 *1+ ι μεταγενζςτερθ, Διεκνισ Ζκδοςθ. Εξαιροφνται τα αυτοτελι ζργα τρίτων π.χ. φωτογραφίεσ, διαγράμματα κ.λ.π., τα οποία εμπεριζχονται ςε αυτό και τα οποία αναφζρονται μαηί με τουσ όρουσ χριςθσ τουσ ςτο «Σθμείωμα Χριςθσ Ζργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ωσ Μη Εμπορική ορίηεται θ χριςθ: που δεν περιλαμβάνει άμεςο ι ζμμεςο οικονομικό όφελοσ από τθν χριςθ του ζργου, για το διανομζα του ζργου και αδειοδόχο που δεν περιλαμβάνει οικονομικι ςυναλλαγι ωσ προχπόκεςθ για τθ χριςθ ι πρόςβαςθ ςτο ζργο που δεν προςπορίηει ςτο διανομζα του ζργου και αδειοδόχο ζμμεςο οικονομικό όφελοσ (π.χ. διαφθμίςεισ) από τθν προβολι του ζργου ςε διαδικτυακό τόπο Ο δικαιοφχοσ μπορεί να παρζχει ςτον αδειοδόχο ξεχωριςτι άδεια να χρθςιμοποιεί το ζργο για εμπορικι χριςθ, εφόςον αυτό του ηθτθκεί. 40
Διατιρθςθ Σθμειωμάτων Οποιαδιποτε αναπαραγωγι ι διαςκευι του υλικοφ κα πρζπει να ςυμπεριλαμβάνει: το Σθμείωμα Αναφοράσ το Σθμείωμα Αδειοδότθςθσ τθ διλωςθ Διατιρθςθσ Σθμειωμάτων το Σθμείωμα Χριςθσ Ζργων Τρίτων (εφόςον υπάρχει) μαηί με τουσ ςυνοδευόμενουσ υπερςυνδζςμουσ. 41