āĻ¸ā§āĻ•ā§āĻ°ā§āĻ¯āĻžāĻš āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻāĻŦāĻ‚ āĻĒāĻžāĻ‡āĻĨāĻ¨ā§‡ āĻ…āĻ•ā§āĻˇāĻ° āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨

āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ…āĻ¨ā§āĻ¯āĻŸāĻŋ āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻžāĨ¤

āĻāĻŸāĻŋ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻŦāĻž āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨ā§‡āĻ‡āĨ¤

āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖā§‡āĻ° āĻ†āĻ°āĻ“ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ āĻĻā§‡āĻ–āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨ā§‡āĻ•āĻĄāĻŧā§‡, āĻ›āĻžāĻ—āĻ˛ āĻāĻŦāĻ‚ āĻŦāĻžāĻāĻ§āĻžāĻ•āĻĒāĻŋ āĻ†āĻŽāĻžāĻ° āĻ†āĻ—ā§‡āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĨ¤

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻšāĻ˛ā§‡ āĻ¯āĻžāĻ‡ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻŋ
āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¤āĻžāĻĻā§‡āĻ° āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¨āĻŋāĻ¯āĻŧāĻŽā§‡āĻ° āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻ¤ā§€āĻ•ā§€ āĻ¨ā§€āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡āĻ° āĻ†āĻŽāĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ…ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻ— āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĨ¤

āĻāĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ•ā§‹āĻĄ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ…āĻĢ āĻ‡āĻ•ā§āĻ¯āĻŧā§‡āĻļāĻ¨ (SMT) āĻ¤ā§‡ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°ā§‡, āĻ¯āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—āĻ¤āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻĒā§āĻ°āĻ¤ā§€āĻ•ā§€ āĻ—āĻŖāĻ¨āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ¨ā§‡āĻŸā§‡ āĻŦāĻ°āĻ‚ āĻ–āĻŖā§āĻĄāĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻ¯āĻŧ,
āĻ†āĻŽāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡ āĻāĻŸāĻž āĻ•āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻŦ.

āĻ¸āĻŋāĻŽā§āĻŦāĻ˛āĻŋāĻ• āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸā§‡āĻļāĻ¨ āĻšāĻ˛ āĻāĻ•āĻ¯ā§‹āĻ—ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤ā§ƒāĻ¤ āĻĄā§‡āĻŸāĻžāĻ° āĻ‰āĻĒāĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ¯āĻžāĻšāĻžāĻ‡āĻ¯āĻŧā§‡āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻšāĻžāĻ¤āĻŋāĻ¯āĻŧāĻžāĻ°āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¨āĻĒā§āĻŸ āĻļāĻ°ā§āĻ¤ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ‡āĻ¤āĻŋāĻŦāĻžāĻšāĻ• āĻŽāĻžāĻ¨, āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¨ā§‡āĻ¤āĻŋāĻŦāĻžāĻšāĻ•, āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻļā§‚āĻ¨ā§āĻ¯ āĻāĻŦāĻ‚ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, 42āĨ¤

āĻāĻ• āĻĻā§ŒāĻĄāĻŧā§‡ āĻĒā§āĻ°āĻ¤ā§€āĻ•ā§€ āĻ—āĻŖāĻ¨āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻ™ā§āĻ–āĻŋāĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻŦāĻ‚ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ‡āĻ¨āĻĒā§āĻŸ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŸā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻžāĻ° āĻ‰āĻ¤ā§āĻ¤āĻ° āĻĻā§‡āĻŦā§‡āĨ¤ āĻ…āĻĨāĻŦāĻž āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻ¯ā§‡ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ•ā§‹āĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¨ā§‡āĻ‡āĨ¤

āĻ…āĻ§āĻŋāĻ•āĻ¨ā§āĻ¤ā§, āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻ¸āĻ•āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‡āĻ¨āĻĒā§āĻŸ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ•ā§‡āĻ° āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄāĨ¤

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻŦ āĻŦāĻž āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ•ā§‡āĻ° āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻŦāĻ˛ā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻĒāĻžāĻŦāĨ¤

āĻāĻŸāĻŋ āĻ˛āĻ•ā§āĻˇ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¯ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ‡āĻ¨āĻĒā§āĻŸ āĻĄā§‡āĻŸāĻž āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡āĻ° āĻ•ā§āĻ˛āĻžāĻ¸āĻŋāĻ•ā§āĻ¯āĻžāĻ˛ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻšāĻ˛ āĻ¸āĻŋāĻŽā§āĻŦāĻ˛āĻŋāĻ• āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•ā§‡āĻ¸āĨ¤

āĻ…āĻ¤āĻāĻŦ, āĻ†āĻŽāĻžāĻ° āĻšāĻ°āĻŋāĻ¤ā§āĻ° VM āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡āĻ° āĻāĻŽā§āĻ˛ā§‡āĻļāĻ¨ āĻŽā§‹āĻĄā§‡āĻ“ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§‡ āĻ•ā§‡āĻ‰ āĻāĻ° āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ†āĻ˛ā§‹āĻšāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖā§‡āĻ° āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯ āĻ¸āĻŽāĻžāĻ˛ā§‹āĻšāĻ¨āĻž āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛:

  1. āĻ•āĻŽā§āĻŦāĻŋāĻ¨ā§‡āĻŸāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻŦāĻŋāĻ¸ā§āĻĢā§‹āĻ°āĻŖ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ P=NP-āĻ¤ā§‡ āĻ¨ā§‡āĻŽā§‡ āĻ†āĻ¸ā§‡
  2. āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ, āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ¸āĻžā§āĻšāĻ¯āĻŧāĻ¸ā§āĻĨāĻžāĻ¨ā§‡ āĻ•āĻ˛ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻž āĻ†āĻ°āĻ“ āĻ•āĻ āĻŋāĻ¨
  3. āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ā§‡ āĻŦāĻžāĻ—, āĻ¯āĻ–āĻ¨ āĻ—ā§āĻ°āĻžāĻšāĻ• āĻŦāĻž āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ āĻ•āĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ā§‡ āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĻ¨āĻŋāĨ¤

āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋ āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ āĻŽā§‡āĻ¨ā§‡ āĻšāĻ˛āĻŦā§‡, āĻ¤āĻŦā§‡ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻžāĻ°āĻž āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¯āĻž āĻ†āĻļāĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨ āĻ¤āĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻŦā§‡āĨ¤

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨āĻ¤ āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ā§‡ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻ›āĻŋ, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻžāĻ¤āĻ¤ āĻĻā§‡āĻ¯āĻŧāĻžāĻ˛ā§‡ āĻŽāĻžāĻĨāĻž āĻ ā§‡āĻ•āĻŦ āĻ¨āĻž āĻāĻŦāĻ‚ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻŦ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽāĻŋāĻ• āĻœāĻŸāĻŋāĻ˛āĻ¤āĻž āĻāĻŦāĻ‚ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ•āĻ˛ā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽāĨ¤

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻāĻ‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻžāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ­āĻžāĻ˛ āĻ•āĻ°ā§‡, āĻ¤āĻžāĻ‡ āĻĒāĻ›āĻ¨ā§āĻĻāĻŸāĻŋ āĻ“āĻ¯āĻŧā§‡āĻ­āĻ¸ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻĨā§‡āĻ•ā§‡ RIDE āĻšā§āĻ•ā§āĻ¤āĻŋāĻ¤ā§‡ āĻĒāĻĄāĻŧā§‡: āĻ¤āĻžāĻ°āĻž āĻŸā§āĻ°āĻŋāĻ‚ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻœāĻŸāĻŋāĻ˛āĻ¤āĻž āĻ•ā§ƒāĻ¤ā§āĻ°āĻŋāĻŽāĻ­āĻžāĻŦā§‡ āĻ¸ā§€āĻŽāĻŋāĻ¤ā§ˇ

āĻ¤āĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋāĻ—āĻ¤ āĻĻāĻŋāĻ• āĻĨā§‡āĻ•ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•āĻšā§‡āĻŸāĻŋāĻ¯āĻŧāĻžāĻ­āĻžāĻŦā§‡ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŦāĨ¤

āĻ¸āĻŦāĻ•āĻŋāĻ›ā§āĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻšāĻžāĻšāĻŋāĻĻāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĨāĻžāĻ•āĻŦā§‡: āĻāĻŸāĻŋ āĻšāĻžāĻ˛ā§ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§‡ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ…āĻ¸āĻŽā§āĻ­āĻŦāĨ¤
āĻāĻŦāĻ‚ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ—ā§āĻ˛āĻŋāĻ° āĻ–āĻ°āĻš āĻ–ā§āĻŦ āĻŦā§‡āĻļāĻŋ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻŦā§‡āĻļ āĻŦāĻĄāĻŧ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§‡ āĻ¤āĻšāĻŦāĻŋāĻ˛ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ¤ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻžāĻ° āĻ¸āĻŋāĻŽā§āĻŦāĻ˛āĻŋāĻ• āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻāĻŦāĻ‚ āĻĒāĻžāĻ‡āĻĨāĻ¨ā§‡ āĻ˛ā§‡āĻ–āĻž, āĻāĻŦāĻ‚ āĻĢāĻ˛ā§‡ āĻāĻ¸āĻāĻŽāĻŸāĻŋ āĻ¸ā§‚āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻĢā§āĻŸ āĻ°āĻŋāĻ¸āĻžāĻ°ā§āĻš āĻĨā§‡āĻ•ā§‡ Z3Prover āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤

āĻāĻ° āĻŽā§‚āĻ˛ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻŦāĻšā§-āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨, āĻ¯āĻž
āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻŦāĻž āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ, āĻāĻŽāĻ¨āĻ•āĻŋ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻ…āĻ¨ā§‡āĻ• āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧ.
āĻāĻŽāĻ¨ āĻ•āĻŋ āĻŽāĻŋāĻĨā§āĻ°āĻŋāĻ˛, Ethereum āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻĒā§āĻ°āĻ¤ā§€āĻ•ā§€ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ•āĻ¯āĻŧā§‡āĻ• āĻŽāĻžāĻ¸ āĻ†āĻ—ā§‡ āĻāĻ‡ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻ˛āĻ•ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ¯ā§‡ āĻ‡āĻĨāĻžāĻ° āĻšā§āĻ•ā§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻ†āĻ°āĻ“ āĻœāĻŸāĻŋāĻ˛ āĻāĻŦāĻ‚ āĻŸā§āĻ°āĻŋāĻ‚ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĨ¤

PHP RIDE āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻ•āĻ¨ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸā§‡āĻ° āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°ā§‡, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋāĻ•ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŸā§āĻ°āĻžāĻ¨āĻœāĻŋāĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻāĻŦāĻ‚ āĻļāĻ°ā§āĻ¤āĻ—ā§āĻ˛āĻŋāĻ° Z3 SMT-āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ:

āĻ¸ā§āĻ•ā§āĻ°ā§āĻ¯āĻžāĻš āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĨ¤ āĻĒāĻžāĻ°ā§āĻŸ 1: āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻāĻŦāĻ‚ āĻĒāĻžāĻ‡āĻĨāĻ¨ā§‡ āĻ…āĻ•ā§āĻˇāĻ° āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨

āĻāĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻ†āĻ°āĻ“ āĻŦāĻŋāĻļāĻĻā§‡ āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ•ā§€ āĻ˜āĻŸāĻ›ā§‡ āĻ¤āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻŦāĨ¤

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻĨāĻŽā§‡, RIDE āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ­āĻžāĻˇāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻļāĻŦā§āĻĻāĨ¤

āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ āĻāĻŦāĻ‚ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻ¯āĻž āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…āĻ˛āĻ¸āĨ¤
RIDE āĻŦā§āĻ˛āĻ•āĻšā§‡āĻ‡āĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨āĻ­āĻžāĻŦā§‡ āĻšāĻ˛ā§‡ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻĨā§‡āĻ•ā§‡ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻŦāĻ‚ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻŸā§‡ āĻāĻ•āĻŸāĻŋ RIDE āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻ¤ā§āĻ¯ āĻŦāĻž āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻšāĻŦā§‡ā§ˇ

TRUE āĻāĻ° āĻ…āĻ°ā§āĻĨ āĻšāĻ˛ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ āĻāĻŦāĻ‚ FALSE āĻŽāĻžāĻ¨ā§‡ āĻāĻŸāĻŋ āĻ¨āĻŋāĻˇāĻŋāĻĻā§āĻ§ āĻ•āĻ°ā§‡ā§ˇ
āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ: āĻ“āĻ¯āĻŧāĻžāĻ˛ā§‡āĻŸ āĻŦā§āĻ¯āĻžāĻ˛ā§‡āĻ¨ā§āĻ¸ 100-āĻāĻ° āĻ•āĻŽ āĻšāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ¨āĻŋāĻˇāĻŋāĻĻā§āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ†āĻŽāĻŋ āĻāĻ•āĻ‡ āĻ¨ā§‡āĻ•āĻĄāĻŧā§‡, āĻ›āĻžāĻ—āĻ˛ āĻāĻŦāĻ‚ āĻŦāĻžāĻāĻ§āĻžāĻ•āĻĒāĻŋ āĻ¨ā§‡āĻŦ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ†āĻ•āĻžāĻ°ā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤āĨ¤

āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¯ā§‡ āĻŽāĻžāĻ¨āĻŋāĻŦā§āĻ¯āĻžāĻ—āĻŸāĻŋāĻ¤ā§‡ āĻšā§āĻ•ā§āĻ¤āĻŋāĻŸāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¤āĻž āĻĨā§‡āĻ•ā§‡ āĻŸāĻžāĻ•āĻž āĻ¤ā§āĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻ¯āĻ¤āĻ•ā§āĻˇāĻŖ āĻ¨āĻž āĻ¤āĻŋāĻ¨āĻŋ āĻ¸āĻŦāĻžāĻ‡āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻž āĻĒāĻžāĻ āĻŋāĻ¯āĻŧā§‡āĻ›ā§‡āĻ¨āĨ¤

#ИСвĐģĐĩĐēĐ°ĐĩĐŧ ĐŋĐžĐģĐžĐļĐĩĐŊиĐĩ вŅĐĩŅ… ОйŅŠĐĩĐēŅ‚Ов иС ĐąĐģĐžĐēŅ‡ĐĩĐšĐŊĐ°
let contract = tx.sender
let human= extract(getInteger(contract,"human"))
let wolf= extract(getInteger(contract,"wolf"))
let goat= extract(getInteger(contract,"goat"))
let cabbage= extract(getInteger(contract,"cabbage"))

#Đ­Ņ‚Đž Ņ‚Đ°Đē ĐŊаСŅ‹Đ˛Đ°ĐĩĐŧĐ°Ņ Đ´Đ°Ņ‚Đ°-Ņ‚Ņ€Đ°ĐŊСаĐēŅ†Đ¸Ņ, в ĐēĐžŅ‚ĐžŅ€ĐžĐš ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅŒ ĐŋŅ€Đ¸ŅŅ‹ĐģĐ°ĐĩŅ‚ ĐŊОвŅ‹Đĩ 4 ĐŋĐĩŅ€ĐĩĐŧĐĩĐŊĐŊŅ‹Đĩ.
#КоĐŊŅ‚Ņ€Đ°ĐēŅ‚ Ņ€Đ°ĐˇŅ€ĐĩŅˆĐ¸Ņ‚ ĐĩŅ‘ Ņ‚ĐžĐģŅŒĐēĐž в ŅĐģŅƒŅ‡Đ°Đĩ ĐĩŅĐģи вŅĐĩ ОйŅŠĐĩĐēŅ‚Ņ‹ ĐžŅŅ‚Đ°ĐŊŅƒŅ‚ŅŅ в ŅĐžŅ…Ņ€Đ°ĐŊĐŊĐžŅŅ‚и.
match tx {
case t:DataTransaction =>
   #ИСвĐģĐĩĐēĐ°ĐĩĐŧ ĐąŅƒĐ´ŅƒŅ‰ĐĩĐĩ ĐŋĐžĐģĐžĐļĐĩĐŊиĐĩ вŅĐĩŅ… ОйŅŠĐĩĐēŅ‚Ов иС Ņ‚Ņ€Đ°ĐŊСаĐēŅ†Đ¸Đ¸
   let newHuman= extract(getInteger(t.data,"human")) 
   let newWolf= extract(getInteger(t.data,"wolf"))
   let newGoat= extract(getInteger(t.data,"goat"))
   let newCabbage= extract(getInteger(t.data,"cabbage"))
   
   #0 ОйОСĐŊĐ°Ņ‡Đ°ĐĩŅ‚, Ņ‡Ņ‚Đž ОйŅŠĐĩĐēŅ‚ ĐŊĐ° ĐģĐĩвОĐŧ ĐąĐĩŅ€ĐĩĐŗŅƒ, Đ° 1 Ņ‡Ņ‚Đž ĐŊĐ° ĐŋŅ€Đ°Đ˛ĐžĐŧ
   let humanSide= human == 0 || human == 1
   let wolfSide= wolf == 0 || wolf == 1
   let goatSide= goat == 0 || goat == 1
   let cabbageSide= cabbage == 0 || cabbage == 1
   let side= humanSide && wolfSide && goatSide && cabbageSide

   #БŅƒĐ´ŅƒŅ‚ Ņ€Đ°ĐˇŅ€ĐĩŅˆĐĩĐŊŅ‹ Ņ‚ĐžĐģŅŒĐēĐž Ņ‚Đĩ Ņ‚Ņ€Đ°ĐŊСаĐēŅ†Đ¸Đ¸, ĐŗĐ´Đĩ Ņ ĐēОСОК ĐŊиĐēĐžĐŗĐž ĐŊĐĩŅ‚ в ĐžŅ‚ŅŅƒŅ‚ŅŅ‚вии Ņ„ĐĩŅ€ĐŧĐĩŅ€Đ°.
   let safeAlone= newGoat != newWolf && newGoat != newCabbage
   let safe= safeAlone || newGoat == newHuman
   let humanTravel= human != newHuman 

   #ĐĄĐŋĐžŅĐžĐąŅ‹ ĐŋŅƒŅ‚ĐĩŅˆĐĩŅŅ‚виŅ Ņ„ĐĩŅ€ĐŧĐĩŅ€Đ° Ņ‚ŅƒĐ´Đ° и ОйŅ€Đ°Ņ‚ĐŊĐž, Ņ ĐēĐĩĐŧ-Ņ‚Đž ĐģийО в ОдиĐŊĐžŅ‡ĐēŅƒ.
   let t1= humanTravel && newWolf == wolf + 1 && newGoat == goat && newCabbage == cabbage 
   let t2= humanTravel && newWolf == wolf && newGoat == goat + 1 && newCabbage == cabbage
   let t3= humanTravel && newWolf == wolf && newGoat == goat && newCabbage == cabbage + 1
   let t4= humanTravel && newWolf == wolf - 1 && newGoat == goat && newCabbage == cabbage
   let t5= humanTravel && newWolf == wolf && newGoat == goat - 1 && newCabbage == cabbage
   let t6= humanTravel && newWolf == wolf && newGoat == goat && newCabbage == cabbage - 1
   let t7= humanTravel && newWolf == wolf && newGoat == goat && newCabbage == cabbage
   let objectTravel = t1 || t2 || t3 || t4 || t5 || t6 || t7
   
   #ПоŅĐģĐĩĐ´ĐŊŅŅ ŅŅ‚Ņ€ĐžĐēĐ° в Ņ€Đ°ĐˇĐ´ĐĩĐģĐĩ Ņ‚Ņ€Đ°ĐŊСаĐēŅ†Đ¸Đ¸ ĐžĐŋиŅŅ‹Đ˛Đ°ĐĩŅ‚ Ņ€Đ°ĐˇŅ€ĐĩŅˆĐ°ŅŽŅ‰ĐĩĐĩ Ņ‚Ņ€Đ°ĐŊСаĐēŅ†Đ¸ŅŽ ŅƒŅĐģОвиĐĩ.
   #ПĐĩŅ€ĐĩĐŧĐĩĐŊĐŊŅ‹Đĩ Ņ‚Ņ€Đ°ĐŊСаĐēŅ†Đ¸Đ¸ Đ´ĐžĐģĐļĐŊŅ‹ иĐŧĐĩŅ‚ŅŒ СĐŊĐ°Ņ‡ĐĩĐŊиŅ 1 иĐģи 0, вŅĐĩ ОйŅŠĐĩĐēŅ‚Ņ‹ Đ´ĐžĐģĐļĐŊŅ‹
   #ĐąŅ‹Ņ‚ŅŒ в ĐąĐĩСОĐŋĐ°ŅĐŊĐžŅŅ‚и, Đ° Ņ„ĐĩŅ€ĐŧĐĩŅ€ Đ´ĐžĐģĐļĐĩĐŊ ĐŋĐĩŅ€ĐĩĐŋĐģŅ‹Đ˛Đ°Ņ‚ŅŒ Ņ€ĐĩĐēŅƒ в ОдиĐŊĐžŅ‡ĐēŅƒ 
   #иĐģи Ņ ĐēĐĩĐŧ-Ņ‚Đž ĐŊĐ° ĐēĐ°ĐļĐ´ĐžĐŧ ŅˆĐ°ĐŗŅƒ
   side && safe && humanTravel && objectTravel
case s:TransferTransaction =>
   #ĐĸŅ€Đ°ĐŊСаĐēŅ†Đ¸Ņ вŅ‹Đ˛ĐžĐ´Đ° ŅŅ€ĐĩĐ´ŅŅ‚в Ņ€Đ°ĐˇŅ€ĐĩŅˆĐĩĐŊĐ° Ņ‚ĐžĐģŅŒĐēĐž в ŅĐģŅƒŅ‡Đ°Đĩ ĐĩŅĐģи вŅĐĩ ĐŋĐĩŅ€ĐĩĐŋĐģŅ‹Đģи ĐŊĐ° Đ´Ņ€ŅƒĐŗОК ĐąĐĩŅ€ĐĩĐŗ
   human == 1 && wolf == 1 && goat == 1 && cabbage == 1

#ВŅĐĩ ĐŋŅ€ĐžŅ‡Đ¸Đĩ Ņ‚иĐŋŅ‹ Ņ‚Ņ€Đ°ĐŊСаĐēŅ†Đ¸Đš СаĐŋŅ€ĐĩŅ‰ĐĩĐŊŅ‹
case _ => false

}

āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻ•āĻ¨ā§āĻŸā§āĻ°āĻžāĻ•ā§āĻŸ āĻĨā§‡āĻ•ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ•ā§€ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻŦā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ°ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻŦā§‡āĻ° āĻ•āĻ°ā§‡āĨ¤

cabbage: extract ( getInteger ( contract , "cabbage" ) )
goat: extract ( getInteger ( contract , "goat" ) )
human: extract ( getInteger ( contract , "human" ) )
wolf: extract ( getInteger ( contract , "wolf" ) )
fState: human== 1 && wolf== 1 && goat== 1 && cabbage== 1
fState: 
wolf: 
goat: 
cabbage: 
cabbageSide: cabbage== 0 || cabbage== 1
human: extract ( getInteger ( contract , "human" ) )
newGoat: extract ( getInteger ( t.data , "goat" ) )
newHuman: extract ( getInteger ( t.data , "human" ) )
goatSide: goat== 0 || goat== 1
humanSide: human== 0 || human== 1
t7: humanTravel && newWolf== wolf && newGoat== goat && newCabbage== cabbage
t3: humanTravel && newWolf== wolf && newGoat== goat && newCabbage== cabbage + 1
t6: humanTravel && newWolf== wolf && newGoat== goat && newCabbage== cabbage - 1
t2: humanTravel && newWolf== wolf && newGoat== goat + 1 && newCabbage== cabbage
t5: humanTravel && newWolf== wolf && newGoat== goat - 1 && newCabbage== cabbage
t1: humanTravel && newWolf== wolf + 1 && newGoat== goat && newCabbage== cabbage
t4: humanTravel && newWolf== wolf - 1 && newGoat== goat && newCabbage== cabbage
safeAlone: newGoat != newWolf && newGoat != newCabbage
wolfSide: wolf== 0 || wolf== 1
humanTravel: human != newHuman
side: humanSide && wolfSide && goatSide && cabbageSide
safe: safeAlone || newGoat== newHuman
objectTravel: t1 || t2 || t3 || t4 || t5 || t6 || t7

PHP āĻ¤āĻžāĻ°āĻĒāĻ° Python-āĻ āĻāĻ•āĻŸāĻŋ Z3Prover SMT-āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻŦāĻŋāĻŦāĻ°āĻŖā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°ā§‡āĨ¤
āĻĄā§‡āĻŸāĻž āĻāĻ•āĻŸāĻŋ āĻ˛ā§āĻĒā§‡ āĻŽā§‹āĻĄāĻŧāĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧ, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¸ā§‚āĻšā§€ i āĻĒāĻžāĻ¯āĻŧ, āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¸ā§‚āĻšāĻ• i + 1 āĻāĻŦāĻ‚ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋ āĻ¸āĻš āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛āĻ—ā§āĻ˛āĻŋ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¤ā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°ā§‡āĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡āĨ¤

āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡āĻ° āĻ–ā§āĻŦ āĻšā§ƒāĻĻāĻ¯āĻŧ, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻšā§-āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

fState:  And( And( And( human[Steps]  ==  1 , wolf[Steps]  ==  1 )  , goat[Steps]  ==  1 )  , cabbage[Steps]  ==  1 )  
final:  fState[Steps] 
fState:   
wolf:   
goat:   
cabbage:   
cabbageSide:  Or( cabbage[i]  ==  0 , cabbage[i]  ==  1 )  
goatSide:  Or( goat[i]  ==  0 , goat[i]  ==  1 )  
humanSide:  Or( human[i]  ==  0 , human[i]  ==  1 )  
t7:  And( And( And( humanTravel[i] , wolf  ==  wolf[i] )  , goat[i+1]  ==  goat[i] )  , cabbage  ==  cabbage[i] )  
t3:  And( And( And( humanTravel[i] , wolf  ==  wolf[i] )  , goat[i+1]  ==  goat[i] )  , cabbage  ==  cabbage[i] + 1 )  
t6:  And( And( And( humanTravel[i] , wolf  ==  wolf[i] )  , goat[i+1]  ==  goat[i] )  , cabbage  ==  cabbage[i] - 1 )  
t2:  And( And( And( humanTravel[i] , wolf  ==  wolf[i] )  , goat[i+1]  ==  goat[i] + 1 )  , cabbage  ==  cabbage[i] )  
t5:  And( And( And( humanTravel[i] , wolf  ==  wolf[i] )  , goat[i+1]  ==  goat[i] - 1 )  , cabbage  ==  cabbage[i] )  
t1:  And( And( And( humanTravel[i] , wolf  ==  wolf[i] + 1 )  , goat[i+1]  ==  goat[i] )  , cabbage  ==  cabbage[i] )  
t4:  And( And( And( humanTravel[i] , wolf  ==  wolf[i] - 1 )  , goat[i+1]  ==  goat[i] )  , cabbage  ==  cabbage[i] )  
safeAlone:  And( goat[i+1] != wolf , goat[i+1] != cabbage )  
wolfSide:  Or( wolf[i]  ==  0 , wolf[i]  ==  1 )  
humanTravel:  human[i] != human[i+1] 
side:  And( And( And( humanSide[i] , wolfSide[i] )  , goatSide[i] )  , cabbageSide[i] )  
safe:  Or( safeAlone[i] , goat[i+1]  ==  human[i+1] )  
objectTravel:  Or( Or( Or( Or( Or( Or( t1[i] , t2[i] )  , t3[i] )  , t4[i] )  , t5[i] )  , t6[i] )  , t7[i] )  
data:  And( And( And( side[i] , safe[i] )  , humanTravel[i] )  , objectTravel[i] )  

āĻļāĻ°ā§āĻ¤āĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸā§‡ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻĒāĻžāĻ‡āĻĨāĻ¨ā§‡ SMT āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻĢāĻžāĻāĻ•āĻž āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ


import json

from z3 import *

s = Solver()

  
  
    
Steps=7
Num= Steps+1

$code$



#template, only start rest
s.add(data + start)

#template
s.add(final)




ind = 0

f = open("/var/www/html/all/bin/python/log.txt", "a")



while s.check() == sat:
  ind = ind +1
  

  print ind
  m = s.model()
  print m

  print "traversing model..." 
  #for d in m.decls():
	#print "%s = %s" % (d.name(), m[d])

  
 
  f.write(str(m))
  f.write("nn")
  exit()
  #s.add(Or(goat[0] != s.model()[data[0]] )) # prevent next model from using the same assignment as a previous model



print "Total solution number: "
print ind  

f.close()
 


āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšā§‡āĻ‡āĻ¨ā§‡āĻ° āĻļā§‡āĻˇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĢāĻžāĻ° āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻž āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻ¯ā§‡ Z3Prover āĻ¸ā§āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻāĻŽāĻ¨ āĻļāĻ°ā§āĻ¤āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸ā§‡āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻŦā§‡ āĻ¯āĻž āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¤āĻšāĻŦāĻŋāĻ˛ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻŦā§‡āĨ¤

āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻ°āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ SMT āĻŽāĻĄā§‡āĻ˛ āĻĒāĻžāĻ‡āĨ¤
āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻ†āĻ—ā§‡āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻŽāĻĄā§‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ–ā§āĻŦ āĻŽāĻŋāĻ˛, āĻ¯āĻž āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻœā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ


import json

from z3 import *

s = Solver()

  
  
    
Steps=7
Num= Steps+1

human = [ Int('human_%i' % (i + 1)) for i in range(Num) ]
wolf = [ Int('wolf_%i' % (i + 1)) for i in range(Num) ]
goat = [ Int('goat_%i' % (i + 1)) for i in range(Num) ]
cabbage = [ Int('cabbage_%i' % (i + 1)) for i in range(Num) ]
nothing= [  And( human[i] == human[i+1], wolf[i] == wolf[i+1], goat[i] == goat[i+1], cabbage[i] == cabbage[i+1] )   for i in range(Num-1) ]


start= [ human[0] == 1, wolf[0] == 0, goat[0] == 1, cabbage[0] == 0 ]

safeAlone= [  And( goat[i+1] != wolf[i+1] , goat[i+1] != cabbage[i+1] )   for i in range(Num-1) ]
safe= [  Or( safeAlone[i] , goat[i+1]  ==  human[i+1] )   for i in range(Num-1) ]
humanTravel= [  human[i] != human[i+1]  for i in range(Num-1) ]
cabbageSide= [  Or( cabbage[i]  ==  0 , cabbage[i]  ==  1 )   for i in range(Num-1) ]
goatSide= [  Or( goat[i]  ==  0 , goat[i]  ==  1 )   for i in range(Num-1) ]
humanSide= [  Or( human[i]  ==  0 , human[i]  ==  1 )   for i in range(Num-1) ]
t7= [  And( And( And( humanTravel[i] , wolf[i+1]  ==  wolf[i] )  , goat[i+1]  ==  goat[i] )  , cabbage[i+1]  ==  cabbage[i] )   for i in range(Num-1) ]
t3= [  And( And( And( humanTravel[i] , wolf[i+1]  ==  wolf[i] )  , goat[i+1]  ==  goat[i] )  , cabbage[i+1]  ==  cabbage[i] + 1 )   for i in range(Num-1) ]
t6= [  And( And( And( humanTravel[i] , wolf[i+1]  ==  wolf[i] )  , goat[i+1]  ==  goat[i] )  , cabbage[i+1]  ==  cabbage[i] - 1 )   for i in range(Num-1) ]
t2= [  And( And( And( humanTravel[i] , wolf[i+1]  ==  wolf[i] )  , goat[i+1]  ==  goat[i] + 1 )  , cabbage[i+1]  ==  cabbage[i] )   for i in range(Num-1) ]
t5= [  And( And( And( humanTravel[i] , wolf[i+1]  ==  wolf[i] )  , goat[i+1]  ==  goat[i] - 1 )  , cabbage[i+1]  ==  cabbage[i] )   for i in range(Num-1) ]
t1= [  And( And( And( humanTravel[i] , wolf[i+1]  ==  wolf[i] + 1 )  , goat[i+1]  ==  goat[i] )  , cabbage[i+1]  ==  cabbage[i] )   for i in range(Num-1) ]
t4= [  And( And( And( humanTravel[i] , wolf[i+1]  ==  wolf[i] - 1 )  , goat[i+1]  ==  goat[i] )  , cabbage[i+1]  ==  cabbage[i] )   for i in range(Num-1) ]
wolfSide= [  Or( wolf[i]  ==  0 , wolf[i]  ==  1 )   for i in range(Num-1) ]
side= [  And( And( And( humanSide[i] , wolfSide[i] )  , goatSide[i] )  , cabbageSide[i] )   for i in range(Num-1) ]
objectTravel= [  Or( Or( Or( Or( Or( Or( t1[i] , t2[i] )  , t3[i] )  , t4[i] )  , t5[i] )  , t6[i] )  , t7[i] )   for i in range(Num-1) ]
data= [ Or(  And( And( And( side[i] , safe[i] )  , humanTravel[i] )  , objectTravel[i] )   , nothing[i]) for i in range(Num-1) ]


fState=  And( And( And( human[Steps]  ==  1 , wolf[Steps]  ==  1 )  , goat[Steps]  ==  1 )  , cabbage[Steps]  ==  1 )  
final=  fState 




#template, only start rest
s.add(data + start)

#template
s.add(final)




ind = 0

f = open("/var/www/html/all/bin/python/log.txt", "a")



while s.check() == sat:
  ind = ind +1
  

  print ind
  m = s.model()
  print m

  print "traversing model..." 
  #for d in m.decls():
	#print "%s = %s" % (d.name(), m[d])

  
 
  f.write(str(m))
  f.write("nn")
  exit()
  #s.add(Or(goat[0] != s.model()[data[0]] )) # prevent next model from using the same assignment as a previous model



print "Total solution number: "
print ind  

f.close()
 


āĻ˛āĻžā§āĻšā§‡āĻ° āĻĒāĻ°ā§‡, Z3Prover āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ°āĻ•ā§‡ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻļā§ƒāĻ™ā§āĻ–āĻ˛ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¯āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¤āĻšāĻŦāĻŋāĻ˛ āĻ‰āĻ¤ā§āĻ¤ā§‹āĻ˛āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ:

Winning transaction chain found:
Data transaction: human= 0, wolf= 0, goat= 1, cabbage= 0
Data transaction: human= 1, wolf= 0, goat= 1, cabbage= 1
Data transaction: human= 0, wolf= 0, goat= 0, cabbage= 1
Data transaction: human= 1, wolf= 1, goat= 0, cabbage= 1
Data transaction: human= 0, wolf= 1, goat= 0, cabbage= 1
Data transaction: human= 1, wolf= 1, goat= 1, cabbage= 1
Data transaction: human= 1, wolf= 1, goat= 1, cabbage= 1
Transfer transaction

āĻĢā§‡āĻ°āĻŋ āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻšā§āĻ•ā§āĻ¤āĻŋ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻŦāĻž āĻāĻ‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻŸāĻŋ āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¯āĻž 2āĻŸāĻŋ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

let contract = tx.sender
let a= extract(getInteger(contract,"a"))
let b= extract(getInteger(contract,"b"))
let c= extract(getInteger(contract,"c"))
let d= extract(getInteger(contract,"d"))

match tx {
case t:DataTransaction =>
let na= extract(getInteger(t.data,"a")) 
let nb= extract(getInteger(t.data,"b"))
let nc= extract(getInteger(t.data,"c"))
let nd= extract(getInteger(t.data,"d"))
   
   nd == 0 || a == 100 - 5
case s:TransferTransaction =>
   ( a + b - c ) * d == 12

case _ => true

}

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ, āĻ¤āĻžāĻ‡ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻ–ā§āĻŦāĻ‡ āĻ¸ā§€āĻŽāĻŋāĻ¤ āĻāĻŦāĻ‚ āĻŦāĻžāĻ— āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡, āĻ†āĻŽāĻŋ VM-āĻāĻ° āĻ†āĻ°āĻ“ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻ•āĻ­āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°āĻ›āĻŋ, āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋāĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¯āĻžāĻšāĻžāĻ‡āĻ•ā§ƒāĻ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻŸ āĻšā§āĻ•ā§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¤āĻž āĻĻā§‡āĻ–āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§‡āĻŦāĻ˛ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤

āĻ…āĻ•ā§āĻˇāĻ° āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ http://2.59.42.98/hyperbox/
āĻ¸āĻŋāĻŽā§āĻŦāĻ˛āĻŋāĻ• āĻ­āĻŋāĻāĻŽ-āĻāĻ° āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ•ā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ°āĻžāĻ–āĻžāĻ° āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋāĻ•ā§‡ āĻ—āĻŋāĻŸāĻšāĻžāĻŦā§‡ āĻ°āĻžāĻ–āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°āĻ›āĻŋāĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨