Булева матрица умножает векторное умножение в Z3

Подходим к этому сегодня.

Я написал код, который выглядит так:

app.controller('ctrlr', function($scope, $http){
    $http.get('localhost:3000').success(function(data) {
        $scope.stuff = data;
    });
});

... но он должен был выглядеть так:

app.controller('ctrlr', function($scope, $http){
    $http.get('http://localhost:3000').success(function(data) {
        $scope.stuff = data;
    });
});

Единственное различие заключалось в отсутствии http:// во втором фрагменте кода.

Просто хотелось поместить это там, если есть другие, имеющие аналогичную проблему.

0
задан km9c3uwc 13 July 2018 в 15:25
поделиться

1 ответ

То, что вы делаете, прекрасно, особенно учитывая, что размер вашей матрицы постоянный и никогда не меняется. SMTLib не имеет понятия циклов, хотя последние версии позволяют рекурсивные определения функций, которые могут быть использованы для этого эффекта. См. Этот ответ для другого, но связанного с этим вопроса о том, как использовать рекурсию: https://stackoverflow.com/a/51140049/936310 . Тем не менее, я бы рекомендовал придерживаться вашего текущего кода для простоты и более широкой поддержки от множества решателей.

На мой взгляд, SMTLib действительно должен быть «сгенерирован» вместо прямого использования; и большинство инструментов используют его таким образом. Если вам нужно усложнить программирование, я бы рекомендовал вместо этого использовать интерфейс более высокого уровня. Есть интерфейсы для Z3 и других решателей практически на любом языке, который вы можете себе представить. Python и Haskell обеспечивают действительно высокоуровневые привязки, которые избавляются от большей части шаблона для вас. У вас также есть привязки низкого уровня от C / C ++ / Java, если это ваш выбор. См. с использованием арифметики с плавающей точкой с API-интерфейсами Z3 C ++ для сравнения стилей.

0
ответ дан Levent Erkok 17 August 2018 в 12:31
поделиться
  • 1
    – km9c3uwc 13 July 2018 в 18:28
  • 2
    Я думаю, что "повторяющиеся" ограничения сгенерированы сгенерированным кодом SMTLib. Когда дело доходит до решения, вы хотите как можно более простые ограничения с таким количеством констант, без каких-либо умных трюков кодирования. Когда вы кодируете язык высокого уровня, вы можете быть кратким и читаемым, но когда дело доходит до решения, тем проще, тем лучше. (Я думаю, что это как запись на языке высокого уровня и компилятор превращает его в «простой» машинный код, который может быть повторяющимся, но понимается подстилающим металлом. SMTLib - это сборка для решателей SMT, и чем проще лучше.) – Levent Erkok 16 July 2018 в 21:48
Другие вопросы по тегам:

Похожие вопросы: