// Block world, avec 8 blocs A, B, C, D, E, F, G, H et une table de taille infinie
//
//  Particularit : on ne spcifie le but que partiellement.
//    |B|                              
//    |A|                              
//    |G|                    |C|           
//    |C|             ---->  |G|       
//    |H| |E| |F| |D|        |A|  
//
// Signification des faits
// ta = onTable(a)
// oab = on(a, b)   a est sur b
// na = nothingOnTopOf(a)
//
// Signification des oprateurs
// sAB = stack a on b
// uAB = enlever a de sur b et le dposer sur la table.

#facts
(th, och, ogc, oag, oba, nb, te, ne, tf, nf, td, nd)

#operator
//(op <name> <precond-list> <pos-effect-list> <neg-effect-list>)

//Move action
(
(op sAB
	(nb, ta, na)
	(oab)
	(nb, ta))
	
(op sAC
	(nc, ta, na)
	(oac)
	(nc, ta))

(op sAD
	(nd, ta, na)
	(oad)
	(nd, ta))
	
(op sAE
	(ne, ta, na)
	(oae)
	(ne, ta))	
	
(op sAF
	(nf, ta, na)
	(oaf)
	(nf, ta))
	
(op sAG
	(ng, ta, na)
	(oag)
	(ng, ta))
	
(op sAH
	(nh, ta, na)
	(oah)
	(nh, ta))
	
(op sBA
	(na, tb, nb)
	(oba)
	(na, tb))
	
(op sBC
	(nc, tb, nb)
	(obc)
	(nc, tb))

(op sBD
	(nd, tb, nb)
	(obd)
	(nd, tb))

(op sBE
	(ne, tb, nb)
	(obe)
	(ne, tb))

(op sBF
	(nf, tb, nb)
	(obf)
	(nf, tb))

(op sBG
	(ng, tb, nb)
	(obg)
	(ng, tb))

(op sBH
	(nh, tb, nb)
	(obh)
	(nh, tb))

(op sCA
	(na, tc, nc)
	(oca)
	(na, tc))

(op sCB
	(nb, tc, nc)
	(ocb)
	(nb, tc))
	
(op sCD
	(nd, tc, nc)
	(ocd)
	(nd, tc))

(op sCE
	(ne, tc, nc)
	(oce)
	(ne, tc))

(op sCF
	(nf, tc, nc)
	(ocf)
	(nf, tc))

(op sCG
	(ng, tc, nc)
	(ocg)
	(ng, tc))

(op sCH
	(nh, tc, nc)
	(och)
	(nh, tc))

(op sDA
	(na, td, nd)
	(oda)
	(na, td))

(op sDB
	(nb, td, nd)
	(odb)
	(nb, td))
	
(op sDC
	(nc, td, nd)
	(odc)
	(nc, td))

(op sDE
	(ne, td, nd)
	(ode)
	(ne, td))

(op sDF
	(nf, td, nd)
	(odf)
	(nf, td))

(op sDG
	(ng, td, nd)
	(odg)
	(ng, td))

(op sDH
	(nh, td, nd)
	(odh)
	(nh, td))

(op sEA
	(na, te, ne)
	(oea)
	(na, te))

(op sEB
	(nb, te, ne)
	(oeb)
	(nb, te))

(op sEC
	(nc, te, ne)
	(oec)
	(nc, te))

(op sED
	(nd, te, ne)
	(oed)
	(nd, te))

(op sEF
	(nf, te, ne)
	(oef)
	(nf, te))

(op sEG
	(ng, te, ne)
	(oeg)
	(ng, te))

(op sEH
	(nh, te, ne)
	(oeh)
	(nh, te))

(op sFA
	(na, tf, nf)
	(ofa)
	(na, tf))

(op sFB
	(nb, tf, nf)
	(ofb)
	(nb, tf))

(op sFC
	(nc, tf, nf)
	(ofc)
	(nc, tf))

(op sFD
	(nd, tf, nf)
	(ofd)
	(nd, tf))

(op sFE
	(ne, tf, nf)
	(ofe)
	(ne, tf))

(op sFG
	(ng, tf, nf)
	(ofg)
	(ng, tf))

(op sFH
	(nh, tf, nf)
	(ofh)
	(nh, tf))

(op sGA
	(na, tg, ng)
	(oga)
	(na, tg))

(op sGB
	(nb, tg, ng)
	(ogb)
	(nb, tg))

(op sGC
	(nc, tg, ng)
	(ogc)
	(nc, tg))

(op sGD
	(nd, tg, ng)
	(ogd)
	(nd, tg))

(op sGE
	(ne, tg, ng)
	(oge)
	(ne, tg))

(op sGF
	(nf, tg, ng)
	(ogf)
	(nf, tg))

(op sGH
	(nh, tg, ng)
	(ogh)
	(nh, tg))

(op sHA
	(na, th, nh)
	(oha)
	(na, th))

(op sHB
	(nb, th, nh)
	(ohb)
	(nb, th))

(op sHC
	(nc, th, nh)
	(ohc)
	(nc, th))

(op sHD
	(nd, th, nh)
	(ohd)
	(nd, th))

(op sHE
	(ne, th, nh)
	(ohe)
	(ne, th))

(op sHF
	(nf, th, nh)
	(ohf)
	(nf, th))

(op sHG
	(ng, th, nh)
	(ohg)
	(ng, th))



(op uAB
	(na, oab)
	(ta, nb)
	(oab))
	
(op uAC
	(na, oac)
	(ta, nc)
	(oac))

(op uAD
	(na, oad)
	(ta, nd)
	(oad))		

(op uAE
	(na, oae)
	(ta, ne)
	(oae))		

(op uAF
	(na, oaf)
	(ta, nf)
	(oaf))		

(op uAG
	(na, oag)
	(ta, ng)
	(oag))		

(op uAH
	(na, oah)
	(ta, nh)
	(oah))		


(op uBA
	(nb, oba)
	(tb, na)
	(oba))
	
(op uBC
	(nb, obc)
	(tb, nc)
	(obc))

(op uBD
	(nb, obd)
	(tb, nd)
	(obd))		

(op uBE
	(nb, obe)
	(tb, ne)
	(obe))		

(op uBF
	(nb, obf)
	(tb, nf)
	(obf))		

(op uBG
	(nb, obg)
	(tb, ng)
	(obg))

(op uBH
	(nb, obh)
	(tb, nh)
	(obh))		
		
(op uCA
	(nc, oca)
	(tc, na)
	(oca))

(op uCB
	(nc, ocb)
	(tc, nb)
	(ocb))

(op uCD
	(nc, ocd)
	(tc, nd)
	(ocd))

(op uCE
	(nc, oce)
	(tc, ne)
	(oce))

(op uCF
	(nc, ocf)
	(tc, nf)
	(ocf))

(op uCG
	(nc, ocg)
	(tc, ng)
	(ocg))

(op uCH
	(nc, och)
	(tc, nh)
	(och))

(op uDA
	(nd, oda)
	(td, na)
	(oda))
	
(op uDB
	(nd, odb)
	(td, nb)
	(odb))

(op uDC
	(nd, odc)
	(td, nc)
	(odc))

(op uDE
	(nd, ode)
	(td, ne)
	(ode))

(op uDF
	(nd, odf)
	(td, nf)
	(odf))

(op uDG
	(nd, odg)
	(td, ng)
	(odg))

(op uDH
	(nd, odh)
	(td, nh)
	(odh))
	
(op uEA
	(ne, oea)
	(te, na)
	(oea))

(op uEB
	(ne, oeb)
	(te, nb)
	(oeb))
	
(op uEC
	(ne, oec)
	(te, nc)
	(oec))
	
(op uED
	(ne, oed)
	(te, nd)
	(oed))
	
(op uEF
	(ne, oef)
	(te, nf)
	(oef))

(op uEG
	(ne, oeg)
	(te, ng)
	(oeg))

(op uEH
	(ne, oeh)
	(te, nh)
	(oeh))
	
(op uFA
	(nf, ofa)
	(tf, na)
	(ofa))

(op uFB
	(nf, ofb)
	(tf, nb)
	(ofb))
	
(op uFC
	(nf, ofc)
	(tf, nc)
	(ofc))
	
(op uFD
	(nf, ofd)
	(tf, nd)
	(ofd))

(op uFE
	(nf, ofe)
	(tf, ne)
	(ofe))
	
(op uFG
	(nf, ofg)
	(tf, ng)
	(ofg))

(op uFH
	(nf, ofh)
	(tf, nh)
	(ofh))
	
(op uGA
	(ng, oga)
	(tg, na)
	(oga))

(op uGB
	(ng, ogb)
	(tg, nb)
	(ogb))

(op uGC
	(ng, ogc)
	(tg, nc)
	(ogc))

(op uGD
	(ng, ogd)
	(tg, nd)
	(ogd))

(op uGE
	(ng, oge)
	(tg, ne)
	(oge))

(op uGF
	(ng, ogf)
	(tg, nf)
	(ogf))

(op uGH
	(ng, ogh)
	(tg, nh)
	(ogh))

(op uHA
	(nh, oha)
	(th, na)
	(oha))

(op uHB
	(nh, ohb)
	(th, nb)
	(ohb))

(op uHC
	(nh, ohc)
	(th, nc)
	(ohc))

(op uHD
	(nh, ohd)
	(th, nd)
	(ohd))

(op uHE
	(nh, ohe)
	(th, ne)
	(ohe))

(op uHF
	(nh, ohf)
	(th, nf)
	(ohf))

(op uHG
	(nh, ohg)
	(th, ng)
	(ohg))
)

#goal
(oga, ocg, nc)