b be two statements. Given succinct (fixed size) zero-knowledge proofs
b are true, how easy is it to build
z(a AND b)?
One way to do this is to construct two pairing-friendly curves such that the scalar field of the "outer" curve efficiently supports arithmetic for the "inner" curve. Then you can define a circuit for a zk-SNARK over the outer curve, that can verify proofs of a zk-SNARK over the inner curve.
I believe that the libsnark authors have generated such pairs of curves, so you might want to ask them about it (the #zcash-wizards channel of the Zcash community chat would be a good place to ask).
Edit: The most efficient approach I'm aware of is for the inner curve to be a BLS12 construction and the outer curve to be BN. The argument goes as follows: BLS12 has a significant gap between the sizes of the scalar field and the field over which the curve is defined, whereas BN only has a gap of a few bits. For roughly 128-bit security, the scalar field needs to be >= 254 bits (to resist Pollard-rho), and the field over which the curve is defined needs to be >= 384 bits if the embedding degree is 12 (to resist index calculus attacks on G_T). Therefore, using BLS12 for the inner curve optimises its resistance to both Pollard-rho and index calculus attacks, while minimising the field sizes to speed up arithmetic. For the outer curve, on the other hand, the scalar field size has to be >= 384 bits already in order to match the field over which the inner curve is defined. Therefore the optimal curve type for the outer curve is BN, because then the field over which the outer curve is defined will be no larger than necessary.
Also, use an efficient zk-SNARK proving system such as Groth16 (which Zcash will probably be moving to), to reduce the cost of verifying the inner proofs.
Note that this will only pay off if the number of proofs being aggregated is large.