header
Soundex algorithm for phonetic indexing (SNDX)

Tag:
Edit edit   Starstar

Program Information

Name: Soundex algorithm for phonetic indexing (SNDX)
Domain: Algorithm
Functionality: An algorithm for computing the phonetic soundex code of a given word by collecting its consonants into classes based on the sounding similarity between them
Input: Assume that $X=\{x_1,x_2,\cdots\}$ is the given word.
Output: $O(X)$ will be the soundex code of X

Reference

 Generating Source Inputs for Metamorphic Testing Using Dynamic Symbolic Execution https://doi.org/10.1145/2896971.2896980 

MR Information

MR1------Inclusion

Description:
Property: $z\in \{a,e,i,o\} \Rightarrow O(x_1x_2\cdots) = O(x_1zx_2z\cdots z)$
Source input: $X=(x_1x_2\cdots)$
Source output: $O(x_1x_2\cdots)$
Follow-up input: $X'=(x_1zx_2z\cdots z)$
Follow-up output: $O(x_1zx_2z\cdots z)$
Input relation: insert $z$ to X where $z\in \{a,e,i,o\}$.
Output relation: $O(x_1x_2\cdots) = O(x_1zx_2z\cdots z)$
Pattern:

MR2------Duplication

Description:
Property: $O(x_1x_2\cdots x_n) = O(x_1x_2\cdots x_nx_n)$
Source input: $X=(x_1x_2\cdots x_n)$
Source output: $O(x_1x_2\cdots x_n)$
Follow-up input: $X'=(x_1x_2\cdots x_nx_n)$
Follow-up output: $O(x_1x_2\cdots x_nx_n)$
Input relation: append $x_n$ to X.
Output relation: $O(x_1x_2\cdots x_n) = O(x_1x_2\cdots x_nx_n)$
Pattern:

MR3------Reversal 

Description:
Property: $|X|>4 \wedge X\neq reverse(X) \Rightarrow O(X) \neq O(reverse(X))$ 
Source input:  $X$
Source output: $O(X)$ 
Follow-up input: $reverse(X)$ 
Follow-up output:  $O(reverse(X))$
Input relation: $X \Rightarrow reverse(X)$ where $|X|>4 \wedge X\neq reverse(X)$ 
Output relation: $O(X) \neq O(reverse(X))$ 
Pattern:

MR4------Deletion 

Description:
Property: $|X|>4 \wedge X[n-1] \in \{a,e,i,o\} \Rightarrow O(X)=O(X-X[n-1])$ 
Source input: $X$ 
Source output: $O(X)$ 
Follow-up input:  $X[n-1]$
Follow-up output:  $O(X[n-1])$
Input relation: $X \Rightarrow X[n-1]$ where $|X|>4 \wedge X[n-1] \in \{a,e,i,o\}$ 
Output relation: $O(X)=O(X-X[n-1])$ 
Pattern:

MR5------Character case conversion 

Description:
Property: $O(X)=O(toLower(X))$ 
Source input: $X$ 
Source output: $O(X)$ 
Follow-up input: $toLower(X)$ 
Follow-up output: $O(toLower(X))$ 
Input relation: $X \Rightarrow toLower(X)$ 
Output relation: $O(X)=O(toLower(X))$ 
Pattern:
Insert title here