A rough set of examples (using the refined 'chr-based' algorithm)Assuming a normal form of equations, it is sufficient to applythe following 'FD'-rule step.e1: F t1 = t2e2: F t1 = t3==> e1: F t1 = t2e2: F t1 = t3e3: t2 = t3where e3 = (sym e1) trans e2Here are some examples:EXAMPLE 1Assume (given)g : forall a. S [a] = [S a] -- axiomd1 : T Int = Int -- local equationsd2 : T [Int] = S [Int]d3 : T Int = S Intwanted? : T [Int] = [Int]Step 1: Normalize (local and wanted) equations (also applies to axioms but we skip this step here)g : forall a. S [a] = [S a] (0)g1 : T Int = Int (1)g2 : T [Int] = a (2)g3 : S [Int] = a (3)g4 : T Int = b (4)g5 : S Int = b (5)? : T [Int] = [Int] (6)Reduction steps:2+6 => ?' : a = [Int] ? = g2 trans ?'03 from 0+3 => g03 : a = [S Int] g03 = (sym g3) trans (g Int)503 from 5+03 => g503 : a = [b] g503 = g03 trans ([] g5)14 from 1+4 => g14 : b = Int g14 = (sym g4) trans g1Apply 14 on 503 => g' : a = [Int] g' = g503 trans ([] g14)We found a match for the (reduced) wanted constraint. ? = g2 trans ?' = g2 trans (g503 trans ([] g14)) = g2 trans ((g03 trans ([] g5)) trans ([] g14)) = g2 trans ((((sym g3) trans (g Int)) trans ([] g5)) trans ([] g14))How to map back to the original (given) local equations?The same calculation using the original (given) local equations.g : forall a. S [a] = [S a] (0) -- axiomd1 : T Int = Int (1) -- local equationsd2 : T [Int] = S [Int] (2)d3 : T Int = S Int (3)wanted:d4 : T [Int] = [Int] (4)Reduction steps:24: 2+4 => d24 : S [Int] = [Int] d4 = d2 trans d24 -- wanted, we're interested how to construct d4!024: 0+24 => d024 : [S Int] = [Int] d24 = (sym (g Int)) trans d024deompose => d024' : S Int = Int d024 = [] d024'13 : 1+3 => d13 : S Int = Int d13 = (sym d3) trans d1We found a match for the (reduced) wanted constraint. d024' = d13 = (sym d3) trans d1Thus,d4 = d2 trans d24 = d2 trans ((sym (g Int)) trans d024) = d2 trans ((sym (g Int)) trans ([] d024')) = d2 trans ((sym (g Int)) trans ([] ((sym d3) trans d1)))Compare the normalized result g2 trans ((((sym g3) trans (g Int)) trans ([] g5)) trans ([] g14))against the 'unnormalized' result d2 trans ((sym (g Int)) trans ([] ((sym d3) trans d1)))EXAMPLE 2no axioms involvedgiven:d1 : G Int = Boold2 : F (G Int) = Intwanted:d : F Bool = Intclearly d = (sym (F d1)) trans d2The normalized case:g1 : G Int = Bool (1)g2 : G Int = a (2)g3 : F a = Int (3)Reductions:12 from 1 + 2 => g12 : a = Bool g12 = (sym g2) trans g1apply 12 on g3: g3' : F Bool = Int g3' = (sym (F g12)) trans g3Match found, we findd = (sym (F g12)) trans g3 = (sym (F ((sym g2) trans g1))) trans g3compare with (sym (F d1)) trans d2