เจธเจผเฉเจฐเฉ‚ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจธเจฟเจธเจŸเจฎ เจฌเจฃเจพเจ‰เจฃเจพเฅค เจญเจพเจ— 1: PHP เจ…เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจ…เฉฑเจ–เจฐ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ

เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจœเจพเจ‚ เจฆเฉ‚เจœเฉ‡ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฆเฉ€ เจคเจธเจฆเฉ€เจ• เจนเฉˆเฅค

เจ‡เจน เจธเจญ เจคเฉ‹เจ‚ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจขเฉฐเจ—เจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจนเฉˆ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฒเฉฑเจญเจฃ เจœเจพเจ‚ เจ‡เจน เจธเจพเจฌเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจน เจฎเฉŒเจœเฉ‚เจฆ เจจเจนเฉ€เจ‚ เจนเจจเฅค

เจฆเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฆเฉ‡ เจ‰เจฆเจพเจนเจฐเจฃ เจตเจฟเฉฑเจš เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจฆเจพ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจตเจฐเจฃเจจ เจฆเฉ‡เจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจฌเจ˜เจฟเจ†เฉœ, เจฌเฉฑเจ•เจฐเฉ€, เจ…เจคเฉ‡ เจ—เฉ‹เจญเฉ€ เจฎเฉ‡เจฐเฉ‡ เจชเจฟเจ›เจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš.

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจคเฉ‹เจ‚ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจคเฉฑเจ• เจœเจพเจ‚เจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚
เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจฐเจธเจฎเฉ€ เจจเจฟเจฏเจฎ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฆเจฒเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจฎเฉˆเจ‚ เจชเฉเจฐเจคเฉ€เจ•เจพเจคเจฎเจ• เจธเจฟเจงเจพเจ‚เจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฆเจพ เจ†เจชเจฃเจพ เจเจจเจพเจฒเจพเจ— เจฒเจฟเจ–เจฟเจ†.

เจ‡เจน เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจชเฉเจฐเจฃเจพเจฒเฉ€ (SMT) เจตเจฟเฉฑเจš เจ…เจจเฉเจตเจพเจฆ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจจเจพเจฒ เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเฉเจฐเจคเฉ€เจ•เจพเจคเจฎเจ• เจ—เจฃเจจเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ‡เฉฐเจŸเจฐเจจเฉˆเจŸ 'เจคเฉ‡ เจ–เฉฐเจกเจฟเจค เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ,
เจฎเฉˆเจ‚ เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš เจตเจฐเจฃเจจ เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟ เจ‡เจน เจ•เฉ€ เจนเฉˆ.

เจธเจฟเฉฐเจฌเฉ‹เจฒเจฟเจ• เจ—เจฃเจจเจพ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพเจฒ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ 'เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃ เจฆเจพ เจ‡เฉฑเจ• เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจ…เจคเฉ‡ เจฐเจธเจฎเฉ€ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจคเจธเจฆเฉ€เจ• เจฒเจˆ เจฎเฉเฉฑเจ– เจธเจพเจงเจจ เจนเฉˆเฅค

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เฉฐเจชเฉเฉฑเจŸ เจธเจผเจฐเจคเจพเจ‚ เจธเฉˆเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเฉฑเจฅเฉ‡ เจชเจนเจฟเจฒเฉ€ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจ•เฉ‹เจˆ เจตเฉ€ เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจฎเฉเฉฑเจฒ เจฒเฉˆ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจฆเฉ‚เจœเฉ€ เจจเฉˆเจ—เฉ‡เจŸเจฟเจต, เจคเฉ€เจœเฉ€ เจœเจผเฉ€เจฐเฉ‹, เจ…เจคเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, 42เฅค

เจ‡เฉฑเจ• เจฆเฉŒเฉœ เจตเจฟเฉฑเจš เจชเฉเจฐเจคเฉ€เจ• เจ—เจฃเจจเจพเจตเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ เจ—เฉฑเจฒ เจฆเจพ เจœเจตเจพเจฌ เจฆเฉ‡เจตเฉ‡เจ—เฉ€ เจ•เจฟ เจ•เฉ€ เจธเจพเจกเฉ‡ เจฒเจˆ เจ‡เฉฑเจ›เจค เจจเจคเฉ€เจœเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ เจ…เจคเฉ‡ เจ…เจœเจฟเจนเฉ‡ เจ‡เจจเจชเฉเจŸ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเฉˆเฉฑเจŸ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃเฅค เจœเจพเจ‚ เจธเจฌเฉ‚เจค เจนเฉˆ เจ•เจฟ เจ…เจœเจฟเจนเฉ‡ เจ•เฉ‹เจˆ เจฎเจพเจชเจฆเฉฐเจก เจจเจนเฉ€เจ‚ เจนเจจเฅค

เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ…เจธเฉ€เจ‚ เจ‡เจจเจชเฉเจŸ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจธเฉฐเจญเจต เจฒเฉ‹เจ•เจพเจ‚ เจฒเจˆ เจธเฉˆเฉฑเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจธเจฟเจฐเจซเจผ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจชเฉเจฐเจฌเฉฐเจงเจ• เจชเจพเจธเจตเจฐเจกเฅค

เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฒเฉฑเจญเจพเจ‚เจ—เฉ‡ เจœเจพเจ‚ เจชเฉเจฐเจธเจผเจพเจธเจ• เจฆเจพ เจชเจพเจธเจตเจฐเจก เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจนเฉ‹เจฃ เจฆเจพ เจธเจฌเฉ‚เจค เจชเฉเจฐเจพเจชเจค เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจ‡เจน เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ–เจพเจธ เจ‡เจจเจชเฉเจŸ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเจพ เจ•เจฒเจพเจธเฉ€เจ•เจฒ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจธเจฟเฉฐเจฌเจฒเจฟเจ• เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเจพ เจ‡เฉฑเจ• เจ–เจพเจธ เจ•เฉ‡เจธ เจนเฉˆเฅค

เจ‡เจธ เจฒเจˆ, เจฎเฉ‡เจฐเจพ เจ…เฉฑเจ–เจฐ VM เจ‡เฉฑเจ• เจฎเจฟเจ†เจฐเฉ€ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฆเฉ‡ เจ‡เจฎเฉ‚เจฒเฉ‡เจธเจผเจจ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจตเฉ€ เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจชเจฟเจ›เจฒเฉ‡ เจฒเฉ‡เจ– เจฆเฉ€เจ†เจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เจธ เจฆเฉ€เจ†เจ‚ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจšเจฐเจšเจพ เจฆเฉ‡ เจจเจพเจฒ เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจฆเฉ€ เจจเจฟเจฐเจชเฉฑเจ– เจ†เจฒเฉ‹เจšเจจเจพ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

เจฎเฉเฉฑเจ– เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจนเจจ:

  1. เจธเฉฐเจฏเฉเจ•เจค เจตเจฟเจธเจซเฉ‹เจŸ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจ†เจ–เจฐเจ•เจพเจฐ P=NP เจคเฉฑเจ• เจนเฉ‡เจ เจพเจ‚ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆ
  2. เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ, เจจเฉˆเฉฑเจŸเจตเจฐเจ•เจพเจ‚ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฌเจพเจนเจฐเฉ€ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฒเจˆ เจ•เจพเจฒเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เจฐเจจเจพ เจคเจธเจฆเฉ€เจ• เจ•เจฐเจจเจพ เจตเจงเฉ‡เจฐเฉ‡ เจฎเฉเจธเจผเจ•เจฒ เจนเฉˆ
  3. เจจเจฟเจฐเจงเจพเจฐเจจ เจตเจฟเฉฑเจš เจฌเฉฑเจ—, เจœเจฆเฉ‹เจ‚ เจ—เจพเจนเจ• เจœเจพเจ‚ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฐ เจ‡เฉฑเจ• เจšเฉ€เจœเจผ เจฆเจพ เจ‡เจฐเจพเจฆเจพ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ, เจชเจฐ เจคเจ•เจจเฉ€เจ•เฉ€ เจจเจฟเจฐเจงเจพเจฐเจจ เจตเจฟเฉฑเจš เจ‡เจธ เจฆเจพ เจ•เจพเจซเจผเฉ€ เจธเจนเฉ€ เจตเจฐเจฃเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ€ เจคเจธเจฆเฉ€เจ• เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€ เจ…เจคเฉ‡ เจจเจฟเจฐเจงเจพเจฐเจจ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€, เจชเจฐ เจธเจฟเจฐเจœเจฃเจนเจพเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ‡เจธ เจคเฉ‹เจ‚ เจœเฉ‹ เจ‰เจฎเฉ€เจฆ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€ เจ‰เจธ เจคเฉ‹เจ‚ เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉฑเจ–เจฐเจพ เจ•เฉเจ เจ•เจฐเฉ‡เจ—เจพเฅค

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเจš เจฎเฉˆเจ‚ เจฎเฉเฉฑเจ– เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจญเจฟเจ†เจธ เจตเจฟเจš เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚, เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจนเฉเจฃเฉ‡ เจฒเจˆ เจ•เฉฐเจง เจจเจพเจฒ เจ†เจชเจฃเจพ เจธเจฟเจฐ เจจเจนเฉ€เจ‚ เจเฉเจ•เจพเจตเจพเจ‚เจ—เจพ, เจ…เจคเฉ‡ เจ…เจœเจฟเจนเฉ€ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจพเจ‚เจ—เจพ เจœเจฟเฉฑเจฅเฉ‡ เจ…เจฒเจ—เฉ‹เจฐเจฟเจฆเจฎเจฟเจ• เจ—เฉเฉฐเจเจฒเจคเจพ เจ…เจคเฉ‡ เจฌเจพเจนเจฐเฉ€ เจ•เจพเจฒเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ˜เฉฑเจŸ เจนเฉ‹เจตเฉ‡เฅค

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ‡เจนเจจเจพเจ‚ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจขเฉฐเจ— เจจเจพเจฒ เจชเฉ‚เจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจตเจฟเจ•เจฒเจช เจตเฉ‡เจตเจœเจผ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจคเฉ‹เจ‚ เจฐเจพเจˆเจก เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸเจธ 'เจคเฉ‡ เจกเจฟเฉฑเจ—เจฟเจ†: เจ‰เจน เจŸเจฟเจŠเจฐเจฟเฉฐเจ— เจชเฉ‚เจฐเฉ‡ เจจเจนเฉ€เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจ—เฉเฉฐเจเจฒเจคเจพ เจจเจ•เจฒเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉ€เจฎเจค เจนเฉˆเฅค

เจชเจฐ เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจคเจ•เจจเฉ€เจ•เฉ€ เจชเฉฑเจ– เจคเฉ‹เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐเจพเจ‚เจ—เฉ‡เฅค

เจนเจฐ เจšเฉ€เจœเจผ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ‡เจ•เจฐเจพเจฐเจจเจพเจฎเฉ‡ เจฆเฉ€ เจฎเฉฐเจ— เจตเจฟเฉฑเจš เจนเฉ‹เจตเฉ‡เจ—เฉ€: เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‡เจ•เจฐเจพเจฐเจจเจพเจฎเฉ‡ เจฆเฉ€ เจ—เจฒเจคเฉ€ เจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เจฐเจจเจพ เจ…เจธเฉฐเจญเจต เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค
เจ…เจคเฉ‡ เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจ•เฉ€เจฎเจค เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจซเฉฐเจก เจ…เจ•เจธเจฐ เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸเจธ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ.

เจฎเฉ‡เจฐเฉ€ เจธเจฟเฉฐเจฌเจฒเจฟเจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ PHP เจ…เจคเฉ‡ Python เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ€ เจ—เจˆ เจนเฉˆ, เจ…เจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ SMT เจซเจพเจฐเจฎเฉ‚เจฒเฉ‡ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ Microsoft เจ–เฉ‹เจœ เจคเฉ‹เจ‚ Z3Prover เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจ‡เจธเจฆเฉ‡ เจฎเฉ‚เจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจฎเจฒเจŸเฉ€-เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจฒ เจ–เฉ‹เจœ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ
เจคเฉเจนเจพเจจเฉ‚เฉฐ เจนเฉฑเจฒ เจœเจพเจ‚ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฒเฉฑเจญเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจญเจพเจตเฉ‡เจ‚ เจ‡เจธ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เฅค
เจตเฉ€ เจฎเจฟเฉฑเจฅเจฐเจฟเจฒ, Ethereum เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฃ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจชเฉเจฐเจคเฉ€เจ• เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ•, เจธเจฟเจฐเจซ เจ•เฉเจ เจฎเจนเฉ€เจจเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจธ เจธเจฎเจฐเฉฑเจฅเจพ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค

เจชเจฐ เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ เจˆเจฅเจฐ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจตเจงเฉ‡เจฐเฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจ…เจคเฉ‡ เจŸเจฟเจŠเจฐเจฟเฉฐเจ— เจธเฉฐเจชเฉ‚เจฐเจจ เจนเจจเฅค

PHP RIDE เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจฆเฉ‡ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเจพเจˆเจฅเจจ เจธเจ•เฉเจฐเจฟเจชเจŸ เจตเจฟเฉฑเจš เจ…เจจเฉเจตเจพเจฆ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจชเจฐเจฟเจตเจฐเจคเจจ เจฒเจˆ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจธเจŸเฉ‡เจŸเจธ เจ…เจคเฉ‡ เจธเจผเจฐเจคเจพเจ‚ เจฆเฉ€ Z3 SMT-เจ…เจจเฉเจ•เฉ‚เจฒ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจตเจœเฉ‹เจ‚ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ:

เจธเจผเฉเจฐเฉ‚ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฐเจธเจฎเฉ€ เจคเจธเจฆเฉ€เจ• เจธเจฟเจธเจŸเจฎ เจฌเจฃเจพเจ‰เจฃเจพเฅค เจญเจพเจ— 1: PHP เจ…เจคเฉ‡ เจชเจพเจˆเจฅเจจ เจตเจฟเฉฑเจš เจ…เฉฑเจ–เจฐ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ

เจนเฉเจฃ เจฎเฉˆเจ‚ เจนเฉ‹เจฐ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจตเจฐเจฃเจจ เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟ เจ…เฉฐเจฆเจฐ เจ•เฉ€ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆ.

เจชเจฐ เจชเจนเจฟเจฒเจพเจ‚, เจฐเจพเจˆเจก เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจญเจพเจธเจผเจพ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจธเจผเจฌเจฆเฅค

เจ‡เจน เจ‡เฉฑเจ• เจ•เจพเจฐเจœเจธเจผเฉ€เจฒ เจ…เจคเฉ‡ เจธเจฎเฉ€เจ•เจฐเจจ-เจ…เจงเจพเจฐเจฟเจค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพ เจนเฉˆ เจœเฉ‹ เจกเจฟเจœเจผเจพเจˆเจจ เจฆเฉเจ†เจฐเจพ เจ†เจฒเจธเฉ€ เจนเฉˆเฅค
เจฐเจพเจˆเจก เจฌเจฒเจพเจ•เจšเฉ‡เจจ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ…เจฒเฉฑเจ—-เจฅเจฒเฉฑเจ— เจšเฉฑเจฒเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจตเจพเจฒเจฟเจŸ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจคเฉ‹เจ‚ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจฒเจฟเจ– เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

เจคเฉเจธเฉ€เจ‚ เจนเจฐเฉ‡เจ• เจตเจพเจฒเจฟเจŸ เจจเจพเจฒ เจ‡เฉฑเจ• เจฐเจพเจˆเจก เจ‡เจ•เจฐเจพเจฐเจจเจพเจฎเจพ เจจเฉฑเจฅเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจจเจคเฉ€เจœเจพ เจธเจฟเจฐเจซ เจธเจนเฉ€ เจœเจพเจ‚ เจ—เจฒเจค เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

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

}

PHP เจชเจนเจฟเจฒเจพเจ‚ เจธเจฎเจพเจฐเจŸ เจ•เฉฐเจŸเจฐเฉˆเจ•เจŸ เจคเฉ‹เจ‚ เจธเจพเจฐเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฌเฉ‚เจฒเฉ€เจ…เจจ เจธเจฎเฉ€เจ•เจฐเจจ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ•เฉฑเจขเจฆเจพ เจนเฉˆเฅค

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/
เจชเฉเจฐเจคเฉ€เจ• VM เจฆเฉ‡ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจœเฉ‹เฉœเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฎเฉเจซเจค เจชเจนเฉเฉฐเจš เจฒเจˆ GitHub 'เจคเฉ‡ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพ เจฐเจฟเจนเจพ เจนเจพเจ‚.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹