import Ġorg . junit . Test Ċ import Ġorg . junit . Ignore Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue ĊĊ Ċ class ĠAn nal yn s In fil tration Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġexecute Ġfast Ġattack Ġif Ġk night Ġis Ġaw ake `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Fast Attack ( kn ight Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġexecute Ġfast Ġattack Ġif Ġk night Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Fast Attack ( kn ight Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġspy Ġif Ġeveryone Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Spy ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġspy Ġif Ġeveryone Ġbut Ġk night Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠassertTrue ( can Spy ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġspy Ġif Ġeveryone Ġbut Ġarch er Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Spy ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġspy Ġif Ġeveryone Ġbut Ġpr isoner Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Spy ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġspy Ġif Ġonly Ġk night Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Spy ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġspy Ġif Ġonly Ġarch er Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Spy ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġspy Ġif Ġonly Ġpr isoner Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Spy ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġspy Ġif Ġeveryone Ġis Ġaw ake `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Spy ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġsignal Ġpr isoner Ġif arch er Ġis Ġsleep ing Ġand Ġpr isoner Ġis Ġaw ake `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Signal Pr isoner ( arch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġsignal Ġpr isoner Ġif arch er Ġis Ġaw ake Ġand Ġpr isoner Ġis Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Signal Pr isoner ( arch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġsignal Ġpr isoner Ġif arch er Ġand Ġpr isoner Ġare Ġboth Ġsleep ing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Signal Pr isoner ( arch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġsignal Ġpr isoner Ġif arch er Ġand Ġpr isoner Ġare Ġboth Ġaw ake `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Signal Pr isoner ( arch er Is Aw ake , Ġpr isoner Is Aw ake )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġeveryone Ġis Ġaw ake Ġand Ġpet Ġdog Ġis Ġpresent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġeveryone Ġis Ġaw ake Ġand Ġpet Ġdog Ġis Ġabsent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġrelease Ġpr isoner Ġif Ġeveryone Ġis Ġas leep Ġand Ġpet Ġdog Ġis Ġpresent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġeveryone Ġis Ġas leep Ġand Ġpet Ġdog Ġis Ġabsent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġrelease Ġpr isoner Ġif Ġonly Ġpr isoner Ġis Ġaw ake Ġand Ġpet Ġdog Ġis Ġpresent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġrelease Ġpr isoner Ġif Ġonly Ġpr isoner Ġis Ġaw ake Ġand Ġpet Ġdog Ġis Ġabsent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġonly Ġarch er Ġis Ġaw ake Ġand Ġpet Ġdog Ġis Ġpresent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġonly Ġarch er Ġis Ġaw ake Ġand Ġpet Ġdog Ġis Ġabsent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġrelease Ġpr isoner Ġif Ġonly Ġk night Ġis Ġaw ake Ġand Ġpet Ġdog Ġis Ġpresent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġonly Ġk night Ġis Ġaw ake Ġand Ġpet Ġdog Ġis Ġabsent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġonly Ġk night Ġis Ġas leep Ġand Ġpet Ġdog Ġis Ġpresent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġonly Ġk night Ġis Ġas leep Ġand Ġpet Ġdog Ġis Ġabsent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġrelease Ġpr isoner Ġif Ġonly Ġarch er Ġis Ġas leep Ġand Ġpet Ġdog Ġis Ġpresent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġonly Ġarch er Ġis Ġas leep Ġand Ġpet Ġdog Ġis Ġabsent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġonly Ġpr isoner Ġis Ġas leep Ġand Ġpet Ġdog Ġis Ġpresent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġrelease Ġpr isoner Ġif Ġonly Ġpr isoner Ġis Ġas leep Ġand Ġpet Ġdog Ġis Ġabsent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk night Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġarch er Is Aw ake Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġpr isoner Is Aw ake Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġpet Dog Is Present Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( can Free Pr isoner ( kn ight Is Aw ake , Ġarch er Is Aw ake , Ġpr isoner Is Aw ake , Ġpet Dog Is Present )) ĊĠĠĠ Ġ} Ċ } Ċ