Abstract syntax: \kwN elem-of Nml = binary numerals
.ta \nwu
	I elem-of Int = binary integers
	F elem-of Frac = binary fractions
	B elem-of Bit = binary bits

    N ::= I F
    I ::= B | I B
    F ::= .B | .B F
    B ::= 0 | 1

Semantic domain: Z = real numbers

Semantic functions: \kwNm: Nml -> Z
.ta \nwu
	NIm: Int -> Z
	NFm: Frac -> Z
	NBm: Bit -> Z

    Nm[[I F]] = Nm[[I]] + Nm[[.F]]
    NIm[[I B]] = 2*NIm[I] + NIm[[B]]
    NIm[[B]] = NBm[[B]]
    NBm[[0]] = 0
    NBm[[1]] = 1
    NFm[[.B F]] = NFm[[.B]] + NFm[[.F]]/2
    NFm[[.B]] = NBm[[.B]]
    NBm[[.0]] = 0
    NBm[[.1]] = 1/2

Test case: 1101.01
    Nm[[1101.01]] \kw= NIm[[1101]] + NFm[[.01]]
.ta \nwu
	= (2*NIm[[110]] + NIm[[1]]) + (NFm[[.0]] + NFm[[.1]]/2)
	= (2*(2*NIm[[11]] + NIm[[0]]) + NIm[[1]]) + (NFm[[.0]] + NFm[[.1]]/2)
	= (2*(2*(2*NIm[[1]] + NIm[[1]]) + NIm[[0]]) + NIm[[1]]) + (NFm[[.0]] + NFm[[.1]]/2)
	= (2*(2*(2*NBm[[1]] + NBm[[1]]) + NBm[[0]]) + NBm[[1]]) + (NBm[[.0]] + NBm[[.1]]/2)
	= (2*(2*(2*1 + 1) + 0) + 1) + (0 + (1/2)/2)