ראשית נזכיר כמה תכונות הנוגעות לשפות רגולריות.
בכלל, שפה תקרא רגולרית אם קיים אוטומט סופי המקבל אותה.
הדוגמה הפשוטה ביותר לשפה רגולרית היא השפה הריקה. כיוון שכל אוטומט סופי דטרמיניסטי חסר מצבים מקבלים יתאר אותה.
גם השפה המכילה את המילה הריקה בלבד היא רגולרית (כמו שאמרנו מספיק אוטומט עם מצב התחלתי שהוא גם מקבל).
סגירויות
השפות הרגולריות סגורות ל
שרשור
חיתוך
איחוד
משלים
סגור קלין
reverse (ההוכחה פשוטה, פשוט הוכפים את כל המצבים המקבלים ההתחלתיים והמעברים)
prefix
תזכורת מה זה prefix ,suffix , postfix :
ביטוי רגולרי
דרך נוספת לתאר שפה רגולרית. מחרוזת תהיה ביטוי ריגולרי אם היא אחת מהצורות הבאות
בסיס האינדוקצייה
אות בודדת
המחרוזת הריקה
הקבוצה הריקה
פעולות האינדוקצייה בהינתן ביטויים רגולרים
סדר פעולות :
סוגריים
כוכבית
שרשור
איחוד
משמאל לימין
שקילות רגולרית אם ורק אם ישנו ביטוי רגולרי כך ש .
ההוכחה של זה בכיוון הראשון (שישנו ביטוי רגולרי ...) מבוצעת באינדוקצייה על אורך הביטוי .
ההוכחה בכיוון השני קצת יותר מורכבת :
לשם כך צריך לבנות אוטומט סופי מוכלל שזה אוטומט סופי המאפשר שהמעברים יהיו ביטויים רגולרים. (זה אפשרי באוטומט סופי לא דטרמינסטי).
הדרישות לאוטומט סופי מוכלל :
מצב מקבל יחיד בלי יציאות ומצב התחלתי יחיד בלי יציאות.
קשת בין כל שני קודקודים, כולל קשתות עצמיות, המסומנות בביטויים רגולרים.
האלגוריתם המרה יעבוד באופן הבא
הוספת מצב התחלתי ומצב מקבל חדש המחובר למצבים הישנים על ידי מעברי אפסילון
השלמת כל המעברים החסרים על ידי מעבר של (אפשר להפתר מהמעברים האלה זה רק עניין פורמלי)
בניית מעברים ישירים בין מצבים שיש בינהם מספר מעברים, מבוססי ביטויים רגולרים. אחרי שעשינו זאת נמחק את כל מצבי הביניים
נמשיך כל עד למחיקת כל המצבים חוץ מהמצב ההתחלתי והמצב המקבל.
למת הניפוח לשפות רגולריות
אם שפה רגולרית אז קיים קבוע כך לשכל שמקיימת קיימת חלוקה של לתתי המילים כך ש ומתקיימים התנאים:
נשים לב שזה לא תנאי הכרחי ומספיק כלומר אם שפה רגולרית היא תקיים את זה אבל יכולות להיות שפות לא רגולריות שמקיימות את זה גם כן.
לכן השימוש בלמת הניפוח יבוא לידי ביטוי בעיקר בהוכחה ששפה אינה רגולרית.
ניתן להשתמש גם בתכונות הסגירות כדי להפריך ששפה אינה רגולרית.