s,r = FullAdd(a,b,c){
	s = a^b^c
	r = (a &b)|((a^b)&c)
}

y = minus(x){
	y = x^c
	c = Z(x|y)
}

s,r = cm2(x){
	s = Z(x^s)
	r = x&s
}

o = clk2(){	# Superbe commentaire !!!
	o=Z(c)
	c=~Z(o)
}

# On peut couper les en-tetes de fonctions mais pas les assertions
a1,a2,a3,a4,s,r,y1,y2,y3,y4,s1,r1,s2,r2,s3,r3,s4,r4,o
 = truthTable(c){
	a1 = Z(~a1)
	a2 = Z(Z(~a2))
	a3 = Z(Z(Z(Z(~ a3))))
	a4 = Z(Z(Z(Z(Z(Z(Z(Z(~a4))))))))

	inst s,r = FullAdd(a1,a2,a3)

	inst y1 = minus(a1)
	inst y2 = minus(a2)
	inst y3 = minus(a3)
	inst y4 = minus(a4)

	inst s1,r1 = cm2(a1)
	inst s2,r2 = cm2(a2)
	inst s3,r3 = cm2(a3)
	inst s4,r4 = cm2(a4)

	inst o = clk2()
}
