pieza_basica(llanta).
pieza_basica(radios).
pieza_basica(eje).
pieza_basica(manillar).
pieza_basica(sillín).
pieza_basica(plato).
pieza_basica(pedales).
pieza_basica(cadena).
pieza_basica(piñones).
ensamblaje(bicicleta, [rueda_delantera, cuadro, rueda_trasera]).
ensamblaje(rueda_delantera, [llanta, radios, eje]).
ensamblaje(cuadro, [manillar, sillín, tracción]).
ensamblaje(rueda_trasera, [llanta, radios, eje, piñones]).
ensamblaje(tracción, [eje, plato, pedales, cadena]).
piezasde(X, [X]) :- pieza_basica(X).
piezasde(X, Y) :- ensamblaje(X, Subpiezas), listadepiezas(Subpiezas, Y).
listadepiezas([Cabeza|Cola], Total) :-
	piezasde(Cabeza, PiezasCabeza),
	listadepiezas(Cola, PiezasCola),
	append(PiezasCabeza, PiezasCola, Total).
listadepiezas([], []).