public boolean requiresMaterialisation ( Atom parentAtom ) { if ( requiresMaterialisation == null ) { requiresMaterialisation = parentAtom . requiresMaterialisation ( ) || getHead ( ) . getAtom ( ) . requiresMaterialisation ( ) || hasDisconnectedHead ( ) ; } return requiresMaterialisation ; }
rule requires materialisation in the context of resolving parent atom if parent atom requires materialisation head atom requires materialisation or if the head contains only fresh variables