:: create a gate taking an atom as input, giving it the face 'n' :: |= n=@ :: compose the calling of `goldbach` with the core containing goldbach :: this has the effect of `running` the core when the outer gate is run :: =< (goldbach n) :: form a core :: |% :: create an arm named 'prime' :: ++ prime :: create a gate with an atom input given the face 'n' :: |= n=@ :: typecast the output to a flag :: ^- ? :: if n is less than two, return false, otherwise return the other branch :: ?: (lth n 2) | :: if n is less than 4, return true, otherwise return the other branch :: ?: (lth n 4) & :: add the atom named i to the subject, set to 2 :: =/ i=@ 2 :: add the atom named j to the subject, set to 2 :: =/ j=@ 2 :: create a gate and typecast the output to a flag :: |- ^- ? :: if i * j equals n, return false, otherwise return the other branch :: ?: =((mul i j) n) | :: if j is equal to n/2, return true, otherwise return the other branch :: ?: =(j (div n 2)) & :: if i*j is greater than n, return the first branch, else the second :: ?: (gth (mul i j) n) :: call the current battery (defined at the gate) with a modified payload :: of i set to 2, and j incremented by one :: $(i 2, j +(j)) :: call the current battery with the modified payload of i incremented by one :: $(i +(i)) :: start a new arm called goldbach (this arm gets called with the tisgal) :: ++ goldbach :: create a gate with an input atom faced 'n' :: |= n=@ :: typecast the output as a union of a flag (?) :: and a cell of a cell of atoms, and a flag ([[@ @] ?]) :: ^- ?(? [[@ @] ?]) :: if one of; n is less than 4, or n is odd, is true, return false :: otherwise return the other branch :: ?: |((lth n 4) =((mod n 2) 1)) | :: attach an atom name i to the subject, set to 2 :: =/ i=@ 2 :: attach an atom name i to the subject, set to n minus 2 :: =/ j=@ (sub n 2) :: create a trap, and typecast the output to the aformentioned union of :: flag and cell of cell of atoms, and flag :: |- ^- ?(? [[@ @] ?]) :: if both i and j are prime numbers, return a cell of: :: a cell of i and j, and a false flag :: otherwise return the other branch :: ?: &((prime i) (prime j)) [[i j] |] :: if n is equal to i plus 2, return a true flag, otherwise the next branch :: ?: =((add 2 i) n) & :: run the current battery, with an updated payload of :: i incremented, and j decremented :: $(i +(i), j (dec j)) :: close off the core :: -- :: this is for my pal ~rapfyr-diglyt