(define nand-gate {number --> number --> number} 1 1 -> 0 1 0 -> 1 0 1 -> 1 0 0 -> 1) (define nand-gate {number --> number --> number} 1 1 -> 0 X Y -> 1) (define nand-gate {number --> number --> number} 1 1 -> 0 _ _ -> 1) (define invert {number --> number} X -> (nand-gate X X)) (define and-gate {number --> number --> number} X Y -> (invert (nand-gate X Y))) (define or-gate {number --> number --> number} X Y -> (nand-gate (invert X) (invert Y))) (define nor-gate {number --> number --> number} 0 0 -> 1 _ _ -> 0) (define invert {number --> number} X -> (nor-gate X X)) (define or-gate {number --> number --> number} X Y -> (invert (nor-gate X Y))) (define and-gate {number --> number --> number} X Y -> (nor-gate (invert X) (invert Y)))