דד"דCTL Model Checking For Processing Simple XPath Queries Authors: Loredana Afanasiev , Massimo Franceschet Maarten Mark , Maarten de Rijke Presented by: Doron Grinberg
Feb 05, 2016
בס"ד CTL Model Checking For Processing Simple XPath Queries
Authors: Loredana Afanasiev , Massimo Franceschet
Maarten Mark , Maarten de Rijke
Presented by: Doron Grinberg
הרעיון המרכזיבהינתן Simple Xpathעל מסמך XML :נבצע את השאילתא באופן הבא
שאילתת
( מתאים )לפחות את החלק הרלוונטי לשאילתאלמבנה קריפקה . XML1. נתרגם את-מסמך ה
-נתרגם את שאילתת ה .Simple XPath2לנוסחת CTL.מתאימה
-נבדוק את נוסחת ה .CTL3,ביחס למבנה הקריפקה באמצעות כלי לבדיקת מודל
.ומכאן נסיק את התשובה לשאילתא
(Extensible Markup Language) XML דוגמאלמסמך
<semester grades> <semester> Spring 2004 </semester> <student name> Roni Ron </student name> <student id> 034567890 </student id> <grades record> <course name> DATABASE SYSTEMS </course name> <course number> 236363 </course number> <grade> 85 </grade> </grades record> <grades record> <course name> THEORY OF COMPILATION </course name> <course number> 236360 </course number> <grade> 80 </grade> </grades record> <grades record> <course name> FILE SYSTEMS </course name> <course number> 234322 </course number> <grade> 85 </grade> </grades record></semester grades>
ייצוג המסמך כעץ
semester grades
semester student name student id grade record grade record grade record
Spring 2004 Roni Ron 034567890
course number gradecourse name
85234322FILE SYSTEMS
gradecourse numbercourse name
80236360THEORY OF COMPILATION
gradecourse numbercourse name
DATABASE SYSTEMS 236363 85
r
s1
s2 s4 s6s8
s3
s5 s7
s9
s10
s11
s12
s13
s14
s15
s16
s17
s18
s19
s20
s21
s22
s23
s24
s25
s26
s27
s28
XMLהגדרת עץ מסמךתהי ∑קבוצת התויות בצמתי ה XML* כולל הסימן המיוחד
T )=N ,R ,L( הוא : XML עץ מסמך
:כאשרN - r קבוצת הצמתים כולל השורש
R – N×N קבוצת קשתות העץ שהיא תת קבוצה של
L: ∑->2^N פונקצית סימון, שלכל תוית ב∑מגדירה את קבוצת הצמתים שמסומנים באותה תוית,
L= (*) Nומקיימת ש:
מרכיבי לוגיקה טמפורלית פסוקית
AP- קבוצה של נוסחאות אטומיות :
¬, V, Λ - אופרטורים בוליאניים :
:אופרטורים טמפורליים -
)future( F p : p ישנו מצב עתידי בו מתקיים
)globally( G p : מתקיים תמיד p
)next( X p : מתקיים במצב הבא p
)p until q( p U q : )מתקיים )ויש כזה מצב עתידי q מתקיים בכל המצבים עד למצב p שבו
A לכל מסלול : , E- כמתי מסלול: קיים מסלול :
p
p
p p p
p
p p q
q
CTL (Computation Tree Logic)
APנתונה קבוצה של נוסחאות אטומיות-
הלוגיקה הטמפורליתCTL:מוגדרת באופן הבא
p € CTL אז p € AP1. אם
אם .f,g € CTL2 :אז גם
¬ f , f V g , EXf , E)f U g( , EGf
CTLהן נוסחאות
אופרטור שלCTLהינו זוג של כמת מסלול ואופרטור טמפורלי
מבנה קריפקהCTL.מתפרשת מעל מבנה קריפקה
מבנה קריפקהM:מוגדר באופן הבא
M=)S,R,L,S0(
:כאשר
S - )קבוצת מצבים )סופית
R - )טוטלית( S×S רלצית המעברים , תת קבוצה של
L : S -< 2^AP - פונקצית סימון מצבים שמתאימה לכל מצב קבוצה של נוסחאות אטומיות שנכונות במצב
S0 )אופציונלי( -S קבוצת מצבים התחלתיים , תת קבוצה של
מסלולים במבנה קריפקה מסלול במבנה קריפקהM ממצבS הינה סדרה ...π =S0 S1 S2:כך ש
.)Si , Si+1( € R iולכל S0=S
. Sjממצב π הוא סיפא של מסלול πj
הסמנטיקהM,s|=p <--> p € L)s(
M,s |= ¬ f <--> M,s|=f לא מתקיים
M,s|=f V g <--> M,s|=g או M,s|=f
M, s|=EXf <--> M,s1|=fכך ש: s=s0מ- π=s0 s1... קיים מסלול
M,s|=E)f1Uf2( <-->כך ש: k≥0כך שקיים s=s0מ- π=s0 s1... קיים מסלול M,sj|=f1 0≤j>kולכל M,sk|=f2
M,s|=EGf <--> M,sj|=f j כך שלכל s=s0מ- π=s0 s1... קיים מסלול
אם נתונה קבוצת מצבים התחלתיים S0: אז M|=f <--> s0 € S0 לכל M,s0|=f
קיצוריםEFf=E)trueUf(
AFf=¬EG¬f
AXf=¬EX¬f
AGf=¬EF¬f
A(f1Uf2)=(¬EG¬f2) Λ )¬E(¬f2U(¬f1 Λ ¬f2)))
CTL בדיקת מודלf את שמספקים M נחשב את קבוצת המצבים ב f -CTL ונוסחת M בהינתן מבנה
Sf = { s | M,s|=f }
Sf מוכלת ב-S0 אז בדיקת מודל מחזירה "כן" אםS0 אם נתונה קבוצת מצבים התחלתיים
)f )כלומר שכל המצבים ההתחלתיים מספקים את
ומחזירה "לא" )+דוגמא נגדית( אחרת
דוגמא-}1,0,1שתחומו { xישנה תוכנית שמכילה משתנה
X=0 במצב ההתחלתי התוכנית מבצעת בלולאה אינסופית באופן לא דטרמיניסטי או הגדלה או הפחתה
כאשר אם פעולה תגרור ליציאה מתחום המשתנה היא לא 1של המשתנה ב-תתבצע
:נתאר מבנה קריפקה מתאים לתוכניתM=)S,R,L,S0(AP={x=0 , x=-1 , x=1}S={s0,s1,s2}
R={ )s0,s1( , )s0,s2( , )s1,s1( , )s1,s0( , )s2,s2( , )s2,s0( }
L : L)s0(={ x=0 } L)s1(={ x=-1 } L)s2(={ x=1 }S0={s0}
המשך הדוגמא מספר נוסחאותCTL :שמצבי המבנה מספקים
M,s0 |= A ) )x=0(U))x=-1( V )x=1(( (
M,s1 |= E G )x=-1(
M,s2 |= E X )x=0(X=-1 X=1
X=0
s2
s1
s0
Simple Xpath התחביר של ∑ € l הפרדיקט , p:מוגדר באופן הבא תהי התוית
p = p and p | p or p | not p | path
path = step | step/path
step = axis :: l | axis :: l[p]
axis = self | child | descendant | descendant or self
//[p] או שאילתא רלטיבית/[p] היא או שאילתא אבסולוטיתSimple Xpathשאילתא של
1 Simple Xpath הסמנטיקה של
:סימונים
T= )N,R,L( XMLעץ מסמך
n,m € N צמתים בעץ המסמך
r € Nשורש עץ המסמך
[[p]] T,n n והצומתT ביחס לעץp קבוצת הצמתים התואמים לפרדיקט
(R)+ R הסגור הטרנזיטיבי של
(R)* R הסגור הרפלקסיבי והטרנזיטיבי של
2 Simple Xpath הסמנטיקה של
[self] T = { )n,n( | n € N }
[child] T = R
[descendant] T = R+
[descendant_or_self] T = R*------------------------------------------------------------------[[p1 and p2]] T,n = [[p1]] T,n Λ [[p2]] T,n
[[p1 or p2]] T,n = [[p1]] T,n V [[p2]] T,n
[[not p]] T,n = N \ [[p]] T,n
3 Simple Xpath הסמנטיקה של
[[axis::l]] T,n = { m | )n,m( €[axis] T and m € L)l( }
[[ axis::l[p]]] T,n = { m | )n,m( €[axis] T and m € L)l( and [[p]] T,m≠ ø }
[[step/path]] T,n = { m | exists k: k €[[step]] T,n and m €[[path]] T,k }
------------------------------------------------------------------
/[p] = if [[p]] T,r ≠ ø : { r }
if [[p]] T,r = ø : ø
//[p] = { n € N | [[p]] T,n ≠ ø }
בחזרה לדוגמא
semester grades
semester student name student id grade record grade record grade record
Spring 2004 Roni Ron 034567890
course number gradecourse name
85234322FILE SYSTEMS
gradecourse numbercourse name
80236360THEORY OF COMPILATION
gradecourse numbercourse name
DATABASE SYSTEMS 236363 85
r
s1
s2 s4 s6s8
s3
s5 s7
s9
s10
s11
s12
s13
s14
s15
s16
s17
s18
s19
s20
s21
s22
s23
s24
s25
s26
s27
s28
המשך הדוגמא/[descendant::semester] = { r }
/[descendant::semester and descendant::year] = ø
//[child::course number[child::236363]] = { s8 }
//[child::grade[child::85]] = { s8 , s22 }
1 CTL תרגום הפרדיקטיםלנוסחאות
עבור התוית ∑ € l:נגדיר את הפונקציה הבאה L)l( = if l = * : true if l ≠ * : l
: CTL נגדיר את הפונקציה הבאה המשמשת להעברת פרדיקטים לנוסחאות <self> = ε )empty string(<child> = EX<descendant>=EXEF<descendant_or_self>=EF-------------------------------------------------------------------------W)p1 and p2( = W)p1( Λ W)p2(W)p1 or p2( = W)p1( V W)p2(W(not p) = ¬W(p)
2 CTL תרגום הפרדיקטיםלנוסחאות
W)axis::l( = <axis> L)l(
W)axis::l[p]( = <axis> ) L)l( Λ W)p( (
W)axis::l/path( = <axis> ) L)l( Λ W)path( (
W)axis::l[p]/path( = <axis> ) L)l( Λ W)p( Λ W)path( (
3 CTL תרגום הפרדיקטיםלנוסחאות
:משפטpהוא פרדיקט כלשהו אזי הוא שורש העץ ו- r, T=)N , R , L( מיוצג ע"יXML נניח
שעץ
T,r |= W)p( אם ורק אם מתקיים: /[p]={ r }1. שאילתא אבסולוטית
קבוצת התשובה של שאילתא רלטיבית .2[p]// היא קבוצת הצמתים המספקים
T ביחס לעץ W(p( - CTL את נוסחת ה
בחזרה לדוגמא
semester grades
semester student name student id grade record grade record grade record
Spring 2004 Roni Ron 034567890
course number gradecourse name
85234322FILE SYSTEMS
gradecourse numbercourse name
80236360THEORY OF COMPILATION
gradecourse numbercourse name
DATABASE SYSTEMS 236363 85
r
s1
s2 s4 s6s8
s3
s5 s7
s9
s10
s11
s12
s13
s14
s15
s16
s17
s18
s19
s20
s21
s22
s23
s24
s25
s26
s27
s28
המשך הדוגמא
התשובה התרגום השאילתא
/[descendant::semester] T,r |= EXEF semester { r }
/[descendant::semester and descendant::year]
T,r |= EXEF semester Λ
EXEF year
ø
//[child::course number[child::236363]]
כל הצמתיםs:כך ש
T,s |= EX )course number Λ EX 236363(
{ s8 }
//[child::grade[child::85]] כך ש:sכל הצמתים
T,s |= EX )grade Λ EX 85(
{ s8 , s22 }
1הניסויים 1.5עליו רצה GB RAM 1.6עם GHZ ,4המחשב עליו הורצו הניסויים הינו פנטיום 2.4.21-ict1בגרסת Red Hat Linuxמערכת ההפעלה Xmark הוכנו בעזרת תוכנתSimple Xpath ושאילתות הXMLקבצי ה f=1 100מיוצג ע"י הפקטור MB גודל של
מדדו את זמן התרגום של מסמך:1ניסוי XMLלמודל איתו ה SuSNV יודע לעבוד ( fכתלות בגודל הקובץ )המבוטא בפקטור הגודל התקבל גרף שמתנהג כמו פולינום מדרגה רביעית 26.6 KB גודל הקובץ הקטן ביותר שנמדד: 6.6 MB גודל הקובץ הגדול ביותר שנמדד:
הגרף שהתקבל מוצג בשקף הבא
2הניסויים
3הניסויים Xpath מעבדים 3 הריצו את השאילתות הבאות על :2ניסוי
ל XMchecker , ועלMacMill , על המעבד המהירXMLTaskForceEngineעל CTL לבדיקת המודלים שלNuSMV אשר משתמש ב (XML Model Checker(
Q1 /[child::site/child::regions/child::africa/child::item/ child::description/child::parlist/child::listitem/child::text]Q2 /[descendant::item/child::description/child::parlist/ child::listitem/child::text]Q3 /[descendant::item/descendant::text]Q4 //[self::open auction and child::bidder]Q5 //[self::item and child::payment andchild::mailbox]Q6 //[self::person and descendant::payment]
בשקף הבא מוצגים הגרפים שהתקבלו כאשר כל גרף מתייחס לשאילתא אחת ומציג את הזמן הנדרש לכל מעבד לעבד את השאילתא כתלות בגודל הקובץ
4הניסויים
5הניסויים
6הניסויים
מסקנות●הזמן שלוקח לXMchecker לבצע את השאילתא כאשר המודל המתורגם נמצא בזכרון
הראשי הוא זהה בסדר הגודל שלו לזה שלוקח ל MacMillבתנאים דומים הזמן הנדרש ל XMLTaskForceהוא בסדר גודל אחד גדול יותר מאשר למעבדים הנ"ל
כאשר זמן הביצוע של( XMchecker כולל גם זמן תרגום של המסמך כולו הזמן משתווה(XMLTaskForce לזמן הביצוע של
( לוקחות פחות זמן מאשר4,5,6עבור כל המעבדים נמצא כי השאילתות הרלטיביות ) ●(1,2,3השאילתות האבסולוטיות )
● עבור גדלי הקבצים שנבדקו בניסוי זה ההפרשים ביןMacMillל XMcheckerזניחים
●זמן ההמרה למודלים הוא גבוה יחסית
יתרונות השיטה פיתוח כלים יעילים יותר לבדיקת מודל תייעל את ביצוע השאילתא .1
כלים לבדיקת מודל בנויים לעבוד על גרפים כך שגם אם במסמך יש מצביעים .2
)ID , IDREF ומתקבל במקום עץ מסמך גרף מסמך ביצוע השאילתא לא נעשה )
מסובך יותר
ותודה על ההקשבה