build open-axiom
((*
((S #1=(|Integer|) S)
((|RepeatedDoubling| S) (|double| S (|PositiveInteger|) S))
(#2=(|Integer|) (|zero?| #3=(|Boolean|) #2#) (|positive?| #3# #2#)
(- #2# #2#))
(|locals| (#:G541 . #3#) (#:G540 . #3#)) (|arguments| (|x| . S) (|n| . #1#))
(S (|Zero| S) (- . #4=(S S))))
((S #5=(|NonNegativeInteger|) S) (|arguments| (|x| . S) (|n| . #5#))
(S (* S (|Integer|) S))))
(- ((S S S) (|arguments| (|y| . S) (|x| . S)) (S (- . #4#) (+ S S S))))
(|opposite?|
(((|Boolean|) S S) (|arguments| (|y| . S) (|x| . S))
(S (= (|Boolean|) S S) (- . #4#))))
(|subtractIfCan|
((#6=(|Maybe| S) S S) (#6# (|just| #6# S)) (|arguments| (|y| . S) (|x| . S))
(S (- S S S)))))