Abstract syntax: \kwN elem-of Nml = binary numerals .ta \nwu I elem-of Int = binary integers F elem-of Frac = binary fractions N ::= I . F I ::= 0 | 1 | I 0 | I 1 F ::= 0 | 1 | 0 F | 1 F Semantic domain: Z = real numbers Semantic functions: \kwNm: Nml -> Z .ta \nwu NIm: Int -> Z NFm: Frac -> Z Nm[[I . F]] = NIm[[I]] + NFm[[F]] NIm[[I 1]] = 2*NIm[[I]] + 1 NIm[[I 0]] = 2*NIm[[I]] NIm[[1]] = 1 NIm[[0]] = 0 NFm[[1 F]] = 1/2 + NFm[[B]]/2 NFm[[0 F]] = NFm[[B]]/2 NFm[[1]] = 1/2 NFm[[0]] = 0 Test case: 1101.01 Nm[[1101.01]] \kw= NIm[[1101]] + NFm[[01]] .ta \nwu = (2*NIm[[110]] + 1) + (NFm[[1]]/2) = (2*(2*NIm[[11]]) + 1) + (NFm[[1]]/2) = (2*(2*(2*NIm[[1]] + 1)) + 1) + (NFm[[1]]/2) = (2*(2*(2*1 + 1)) + 1) + ((1/2)/2)