Это очень интересный вопрос.
Закон - это что-то среднее между обычным языком с его произвольными, постоянно меняющимися и часто мягкими правилами и языком программирования с его очень конкретными, определенными правилами.
Легалезный фактически определяет свои термины, и поэтому многие слова (но не все!), Используемые в законе, действительно имеют точное значение.
Однако при интерпретации ваш подход к представлению дела в логической системе и получению результата потерпит неудачу. Закон - это общее определение, которое необходимо адаптировать к конкретному рассматриваемому делу. Часто это тривиальный, простой процесс, но нет гарантии, что это и нет нетривиального способа определения границы.
Хороший пример - самооборона. В большинстве правовых систем вы можете на законных основаниях причинить боль другому человеку, если вы действуете в целях самообороны. Тем не менее, формулировка явно контекстно-зависимая. Например, британский уголовный закон пишет:
Человек может использовать такую силу, которая является разумной в данных обстоятельствах для предотвращения преступления [...]
Прецедентное право определяет, что является «разумным» в конкретных случаях , но в книгах нет общего определения. Существует также прецедентное право, разъясняющее, что именно означает «предотвращение преступления». Поскольку по определению преступление еще не совершено, тем более суд, решивший, что иск фактически является преступлением, в данном конкретном случае достаточно разумных убеждений , но это на самом деле не прописано в законе!
Чтобы создать лицо, принимающее цифровые решения о законе, вы должны будете кормить его не только самим законом, но и всей прецедентной практикой, большим пониманием естественного языка и множеством правил о том, как применять все эти знания, потому что иногда прецедентное право является твердым, иногда вы можете согнуть его (особенно если оно старое, поскольку интерпретации меняются со временем)
И, наконец, закон меняется и адаптируется не только в книге, но и в ее интерпретациях. Есть много известных примеров высших судов, отменяющих свое 20-летнее решение. Очень часто такие вызовы предыдущему прецедентному праву происходят именно потому, что судья решил пойти против этих установленных законов, и он скорее рискует быть отвергнутым в суде высшей инстанции, чем выносить решение, которое он не поддерживает. Интересно, как бы вы смоделировали эту способность в NP-полной системе?
Чтобы рассчитать сложность системы, нам необходимо понять входы и выходы. Закон, однако, является открытой системой. Буквально все в его среде может влиять на это, особенно изменения в обществе и культуре. В большинстве стран законы о книгах применяются редко, потому что общество изменилось, но процесс законотворчества отстает. Законы против гомосексуализма являются актуальным примером. Или смертный приговор, который в большинстве стран фактически не применялся в течение многих лет или десятилетий, прежде чем он был удален из книг по праву. И не потому, что не было случаев, когда это могло быть применено, а просто потому, что судьи не применяли его, несмотря на то, что у него был выбор.
Эти факторы окружающей среды делают оценку сложности почти невозможной, потому что мы не можем перечислить их в конечном списке, если не будем использовать все-кванторы (например, «каждый вид ...» или «все ...»)