1)	Součtovým seznamem nazveme datovou strukturu tvaru A + B , kde A a B jsou seznamy. Označíme-li OB otočený seznam B, pak součtový seznam A + B reprezentuje seznam, který vznikne konkatenací seznamu OB za seznam A. 
Sestavte predikáty, které realizují 
a)	Přidání prvku na konec součtového seznamu
b)	Odebrání posledního prvku součtového seznamu
c)	Přidání prvku na začátek součtového seznamu
d)	Odebrání prvního prvku součtového seznamu
e)	Konkatenaci součtových seznamů

2)	

Definujte predikát odpov (r1,r2) dvou proměnných, který pro každé dva seznamy (čísel a speciálních  znaků *, ? ) r1 a r2 uspěje pokud existují „substituce jednoho čísla za každý žolík ? a substituce posloupnosti čísel za znak * “ takové, že po provedení těchto substitucí dostanete stejné seznamy.
Např.: 
	odpov ( [1,5,*,7,?,1] , [*,7,7,5,1])
odpov ( [1,*,5,7,?,1] , [?,?,7,5,1]) .
Můžete předpokládat, že v jednom seznamu je maximálně jedna hvězdička. 

3)	Každý takový strom T určuje relaci mezi prvky onoho typu
A ~T B jestliže ve stromě T existují uzly 	a (v němž je uložena informace A)  a
b (v němž je uložena informace B)
takové, že uzel a leží ve stromě T nad uzlem b
	Sestavte funkci, která pro dva stromy rozhodne o tom, zda reprezentují stejnou relaci.
Permutaci prvků od 1 do n můžeme reprezentovat buď jako „vektor obrazů“ 
např.pro n=7    termem        v(7, [ 3,2,4,1,6,5,7])
nebo jako seznam netriviálních cyklů příslušného zobrazení 
c(7, [ [1,3,4], [5,6] ] )    (cykly [2] a [7] jsme vynechali).

4)	Sestavte predikáty v2c (+v(N,Vektor) , -c(N,Cykly) ) a c2v (-v(N,Vektor) , +c(N,Cykly) ), které realizují přechody z jedné reprezentace na druhou.

5)	Součin permutací P1 a P2 je permutace P3, která vznikne složením zobrazení P1 P2 , tj. P3(x)=P1(P2(x))  Sestavte predikáty, které realizují násobení a umocňování permutací reprezentovaných pomocí cyklů.