Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. predicate isPrefixPred(pre:string, str:string)
  2. {
  3. (|pre| <= |str|) && pre == str[..|pre|]
  4. }
  5.  
  6. predicate isNotPrefixPred(pre:string, str:string)
  7. {
  8. (|pre| > |str|) || pre != str[..|pre|]
  9. }
  10.  
  11. // Sanity check: Dafny should be able to automatically prove the following lemma
  12. lemma PrefixNegationLemma(pre:string, str:string)
  13. ensures isPrefixPred(pre,str) <==> !isNotPrefixPred(pre,str)
  14. ensures !isPrefixPred(pre,str) <==> isNotPrefixPred(pre,str)
  15. {}
  16.  
  17.  
  18. predicate isSubstringPred(sub:string, str:string)
  19. {
  20. (|sub| <= |str|) && exists i ::( (0 <= i <= |str|) && isPrefixPred(sub, str[i..]))
  21. }
  22.  
  23. predicate isNotSubstringPred(sub:string, str:string)
  24. {
  25. //TODO: your FOL formula should start with a forall
  26. (|sub| > |str|) || forall i ::( (0 <= i <= |str|) ==> isNotPrefixPred(sub, str[i..]))
  27. }
  28.  
  29. // Sanity check: Dafny should be able to automatically prove the following lemma
  30. lemma SubstringNegationLemma(sub:string, str:string)
  31. ensures isSubstringPred(sub,str) <==> !isNotSubstringPred(sub,str)
  32. ensures !isSubstringPred(sub,str) <==> isNotSubstringPred(sub,str)
  33. {}
  34.  
  35.  
  36. predicate haveCommonKSubstringPred(k:nat, str1:string, str2:string)
  37. {
  38. //TODO
  39. }
  40.  
  41. predicate haveNotCommonKSubstringPred(k:nat, str1:string, str2:string)
  42. {
  43. //TODO: your FOL formula should start with a forall
  44. }
  45.  
  46. // Sanity check: Dafny should be able to automatically prove the following lemma
  47. lemma commonKSubstringLemma(k:nat, str1:string, str2:string)
  48. ensures haveCommonKSubstringPred(k,str1,str2) <==> !haveNotCommonKSubstringPred(k,str1,str2)
  49. ensures !haveCommonKSubstringPred(k,str1,str2) <==> haveNotCommonKSubstringPred(k,str1,str2)
  50. {}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement