(list (lambda (f) (apply (lambda (sg alpha zer one + - *) (list (lambda () (cons (sg) (sg))) ; sg (lambda (x) (cons (alpha (car x)) (- zer (alpha (cdr x))))) ; α (cons zer zer) ; zer (cons one zer) ; one (lambda (a b) (cons (+ (car a)(car b))(+ (cdr a)(cdr b)))) ; + (lambda (a b) (cons (- (car a)(car b))(- (cdr a)(cdr b)))) ; - (lambda (a b) (cons (- (* (car a)(car b))(* (cdr a)(alpha (cdr b)))) ; * (+ (* (car a)(cdr b))(* (cdr a)(alpha (car b)))))) )) f)) (list ((fileVal "rr") "sed!") (lambda (x) x) 0 1 + - *)) ; test (ylppa (fileVal "Clifford0") (lambda (G reals) (ylppa (G (G (G (G reals)))) (lambda (sg alpha zer one + - *) (let ((a (sg))(b (sg))(c (sg))(zer? (lambda (z) (equal? z zer)))) (and (zer? (- (+ a b)(+ b a))) (zer? (- (+ a (+ b c)) (+ (+ a b) c))) (zer? (- (* a (* b c)) (* (* a b) c))) (zer? (* a zer)) (zer? (- (* (+ a b) c) (+ (* a c) (* b c)))) (zer? (- (alpha (* a b)) (* (alpha a) (alpha b)))) (zer? (- (alpha (+ a b)) (+ (alpha a) (alpha b))))))))))