-
Notifications
You must be signed in to change notification settings - Fork 1
NTU-ALComLab/SLENT
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
############################### Command Usage ################################## Attention: 1. file | cfile | sfile : a string literal without file extension (e.g., .blif .vmt) 2. index : non-negative integer 3. L(*) indicates the language recognized by the automaton describing by * 4. due to the incapability of constructing complement of language, the complemented automaton used in replace, trkidx, notcontains, notprefixof_smt and notsuffixof_smt is assumed to be known 5. current version only support script-mode, no command-mode usage: trklen <file> <index> add an integer variable to track the length of an automaton file : the file describing an automaton integer : the index of the integer variable usage: intersect <file_1> <file_2> construct the intersection of L(file_1) and L(file_2) file_* : the file describing an automaton usage: concate <file_1> <file_2> construct the concatenation of L(file_1) and L(file_2) file_* : the file describing an automaton usage: replace <file_1> <file_2> <file_3> <cfile> language-to-language replace corresponding to Rep(A1,A2,A3) in the paper file_* : the file describing an automaton cfile : the file describing a complmented automaton usage: contains <file_1> <file_2> construct the intersection of L(file_1) and .*L(file_2).* file_* : the file describing an automaton usage: notcontains <file> <cfile> construct the intersection of L(file) and L(cfile) file : the file describing an automaton cfile : the file describing a complemented automaton usage: trkidx <file> <sfile> <cfile> <index_1> <index_2> construct an automaton that accept the intersection of L(file) and .*L(sfile).* with index_1 indicating the not-less-than position of L(sfile) and index_2 indicating the first occurence position of L(sfile) (first occurence after index_1 position) file : the file describing an automaton sfile : the file describing an automaton recognizing a string literal cfile : the file describing a complemented automaton index_1 : the index of the integer variable indicating the not-less-than position index_2 : the index of the integer variable indicating the answer position usage: substr <file> <index_1> <index_2> construct the automaton recognizing the set of substrings with starting position and pass-the-end position specified by index_1 and index_2 respectively file : the file describing an automaton index_1 : the index of the integer variable indicating the beginning position index_2 : the index of the integer variable indicating the pass-the-end position usage: prefixof_smt <file_1> <file_2> construct the intersection of L(file_1).* and L(file_2) file : the file describing an automaton usage: suffixof_smt <file_1> <file_2> construct the intersection of .*L(file_1) and L(file_2) file : the file describing an automaton usage: notprefixof_smt <cfile> <file> construct the intersection of L(cfile) and L(file) file : the file describing an automaton cfile : the file describing a complemented automaton usage: notsuffixof_smt <cfile> <file> construct the intersection of L(cfile) and L(file) file : the file describing an automaton cfile : the file describing a complemented automaton usage: read <file> read an automaton file : the file describing an automaton usage: write <file> write the current automaton into file file : the file describing an automaton usage: addpred add predicates into current automaton usage: isempty <file> construct the sequential circuit for emptyness checking in BLIF format file : the file describing an automaton ############################### Length Automaton Format Description ################################## A Length Automaton file (LAUT) includes 3 sections <leaf automaton regex> ; <declarations> ; <predicates> ; <dependencies> section : leaf automaton regex desc : the regular expression of each leaf automaton format : <leaf-automaton-name> <regular-expression> notice : character not in [0-9a-zA-Z] must be escaped by a backslash if it is treated as a character section : declarations dese : declarations of variables format : <variable-name> <type> type : Int | Bool section : predicates desc : predicates in prefix expression with n-ary(n>1) operation embraced by parentheses format : <prefix-expression-of-operations> operations for boolean and integer are conventional, three operations associated with legnth are specified as follows: alias* : an integer variable or a constant integer index* : an non-negative integer used in LAut construction smt2 : the corresponding expression in smt2 format operation: get string length desc : assert an integer variable to represents the embedded integer in a trklen operation smt2 : (= <alias> str.len <string variable>) format : (trklen <alias> <index>) operation: get string indexof desc : assert two integer variable to represent the integer added in trkidx, with alias_1 indicate the not-less-than position and alias_2 indicate the index smt2 : (= <alias_2> (str.indexof <string variable> <constant string> <alias_1>)) format : (trkidx <alias_1> <alias_2> <index_1> <index_2>) <alias_1>: the not-less-than position <alias_2>: the answer position <index_1>: for <alias_1> <index_2>: for <alias_2> operation: string substr desc : assert the substring of a string variable starts from alias_1 with offset alias_2 smt2 : (str.substr <string variable> <alias_1> <alias_2>) format : (substr <alias_1> <alias_2> <index_1> <index_2>) <alias_1>: the start position <alias_2>: the offset <index_1>: for <alias_1> <index_2>: for <alias_2> section : dependencies desc : bottom-up construction of the sink node, must be a tree structure format : [commands] (a intermediate command should be followed with a "write" command) <addpred> <write sink> <isempty sink> ############################### Reference ################################## Hung-En Wang, Shih-Yu Chen, Fang Yu, Jie-Hong R. Jiang: A symbolic model checking approach to the analysis of string and length constraints. ASE 2018: 623-633
About
A Symbolic Model Checking Approach to the Analysis of String and Length Constraints
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published