# Подстановка библиотек

Теперь предположим, что у нас есть две схемы Logisim, которые должны делать одно и то же. Как у преподавателя, у вас могут быть работы, выполненные учащимися: у вас есть один файл с вашим решением и несколько файлов учащихся, содержащих их работы. Например, задание было построить двухбитный сумматор.

Я представлю, что у нас есть два файла с именами `adder-master.circ` и `adder-query.circ`. Каждый файл содержит схему с названием 2-bit adder (важно, чтобы схема для проверки имела точно такое же название), эти схемы выглядят следующим образом.

`adder-master.circ` | `adder-query.circ`

Как вы видите, эталонная схема использует встроенный в Logisim сумматор, а проверяемая схема использует две подсхемы, представляющие собой полусумматор и полный сумматор (которые в свою очередь построены из простых логических элементов). Для целей нашего примера проверяемая схема имеет глупую ошибку: бит переноса из полусумматора не соединён с полным сумматором.

Мы сохраняем нашу проверяющую схему в отдельный файл `test.circ`. Затем мы загружаем `adder-master.circ` как библиотеку Logisim | Проект |→| Загрузить библиотеку |→ | Библиотека Logisim… |, и добавляем двухбитный сумматор оттуда как подсхему. Мы могли бы выполнить эту схему непосредственно, чтобы получить желаемый результат для идеального решения.

> `java -jar logisim-filename.jar adder-test.circ -tty table`

Но мы хотим выполнить схему, используя как загруженную библиотеку `adder-query.circ` вместо `adder-master.circ`. Наивным подходом будет открыть Logisim и загрузить эту библиотеку; или вы можете просто удалить файл `adder-master.circ` и переименовать `adder-query.circ` в `adder-master.circ` вместо него. Но Logisim включает удобный параметр -sub, который временно заменяет один файл другим в ходе этой сессии - без каких-либо изменений на диске.

> `java -jar logisim-filename.jar adder-test.circ -tty table -sub adder-master.circ adder-query.circ`

Выходной файл, который будет сгенерирован таким образом, показан ниже. Конечно, он отличается от того, что мы видели в предыдущем разделе , потому что общая библиотека для схем `adder2` была заменена в тестовой схеме на ошибочную библиотеку `query.circ`.

>     00      00      0E0
>     01      00      0E1
>     10      00      EE0
>     11      00      EE1
>     00      01      0E1
>     01      01      0E0
>     10      01      EE1
>     11      01      EE0
>     00      10      EE0
>     01      10      EE1
>     10      10      1E0
>     11      10      1E1
>     00      11      EE1
>     01      11      EE0
>     10      11      1E1
>     11      11      1E0

Далее: Другие параметры проверки.