Вопросы по теме 'alloy'
Alloy Analyzer 4.2 (mac) по сравнению с API сплава
В настоящее время я делаю программу, которая обрабатывает некоторые аннотации в java, а затем создает модель сплава, анализирует ее с помощью API сплава, а затем запускает некоторые команды сплава. Когда я тестирую сгенерированную модель сплава в...
700 просмотров
schedule
28.02.2023
значение предиката Alloy в реляционном соединении
Рассмотрим следующий простой вариант примера с адресной книгой.
sig Name, Addr {}
sig Book { addr : Name -> Addr } // no lone on Addr
pred show(b:Book) { some n : Name | #addr[b,n] > 1 }
run show for exactly 2 Book, exactly 2 Addr, exactly 2...
389 просмотров
schedule
29.10.2022
Реализация Enqueue и Dequeue для Queue с помощью Alloy
Имея следующее:
sig Queue { root: Node }
sig Node { next: lone Node }
fact nextNotReflexive { no n:Node | n = n.next }
fact nextNotCyclic { no n:Node | n in n.^next }
Может кто помочь по реализации Enq и Deq?
pred Enq[q,q':Queue,...
364 просмотров
schedule
24.09.2022
Вставка и удаление в связанных списках в сплаве
Я создал простую версию связанного списка, используя сплав. Теперь я хочу создать связанный список, в котором я мог бы выполнять вставку и удаление. Я только начал кодировать в сплаве. на данный момент у меня возникают проблемы при выполнении...
1054 просмотров
schedule
15.06.2022
Лучшая практика использования логического значения в модели Alloy
Я создаю простой Alloy для создания простых объектов Java Pojo, и некоторые поля этого pojo являются логическими значениями. Теперь я использую следующий механизм для достижения этой функции
one sig item {
autoPay: String,
Price: Int
}...
2361 просмотров
schedule
10.12.2023
Сплав: используйте для String
Как я могу взять длину строки в сплаве?
Если я хочу сказать, что пароль должен состоять как минимум из 8 символов, как я могу выразить длину этой строки?
Моя подпись пароля:
sig Password{пароль: одна строка}
430 просмотров
schedule
25.11.2022
Программирование рекурсивных функций в сплаве
Я пытаюсь построить рекурсивную функцию в Alloy. Согласно грамматике, представленной в книге Дэниела Джексона, это возможно. Моя функция:
fun auxiliaryToAvoidCyclicRecursion[idTarget:MethodId, m:Method]: Method{
(m.b.id = idTarget) => {...
1122 просмотров
schedule
22.09.2023
Сплав — единственный экземпляр
Я пишу простой код Alloy, но я не могу понять, как я могу сказать, что МАКСИМАЛЬНО один A связан с pD (так что МАКСИМАЛЬНО будет единица или ноль). Итак, я написал приведенный ниже код, но утверждение не представляет нет контрпримера с экземпляром...
295 просмотров
schedule
01.04.2024
Как обновить установленный размер модели сплава, чтобы он находился в определенном диапазоне?
Если у меня есть модель Alloy в следующем формате
one sig player {
name: String,
spot: set position
}
sig position {
Attack: Bool,
accuracy: int,
strength: int,
}
Если я хочу иметь определенное правило, чтобы каждый...
644 просмотров
schedule
26.03.2023
Проблема с памятью в Alloy
Я новичок в Alloy. Я пытаюсь найти решение для модели с 512 состояниями. Но у него заканчивается память. Я установил память и стек на максимальный уровень, но этого недостаточно. Есть ли другой способ увеличить объем памяти, которую использует...
94 просмотров
schedule
03.06.2024
Синтаксис ограничений в предикате и в утверждении
Я хочу знать, отличается ли синтаксис ограничений при использовании в предикате, чем в утверждении.
Ограничение все disj x1,x2:X | x1 =x2 дает разные результаты при выполнении в предикате и в утверждении.
Например, предположим следующую...
176 просмотров
schedule
11.10.2022
Синтаксис сплава для остаточных типов?
Есть ли прямой способ представить тип остатка в Alloy вместо того, чтобы явно вычитать объединение всех подтипов? Например, в:
sig Test {}
one sig A, B extends Test {}
Я хотел бы иметь возможность ссылаться на выражение Test-(A+B) с...
126 просмотров
schedule
28.04.2023
Почему оператор Plus не работает с целыми числами в Alloy?
приведенный ниже код сплава предназначен для проблемы с 8 ферзями Я не знаю, почему оператор плюс и минус не работают правильно поэтому после выполнения есть ферзи на той же диагонали Более того, я сталкиваюсь с этой ошибкой при использовании плюс и...
179 просмотров
schedule
05.03.2023
Количественное определение определенного количества элементов в наборе
Итак, у меня есть предикат, который принимает набор в качестве аргумента, и поэтому я могу сделать это:
all disj t1, t2, t3: set Thing | predicate[t1+t2+t3]
Мне было интересно, можно ли это сделать, просто указав размер набора, так что что-то...
438 просмотров
schedule
24.11.2022
Преобразование выражения высшего порядка в логику первого порядка сплава
Я хотел бы написать взаимно однозначное соответствие между набором и отношением в Alloy.
Например, в следующем коде я хотел бы определить ref как соответствие между QArrow и событием. Поэтому пишу факт bij . Но Alloy жалуется, так как я думаю,...
152 просмотров
schedule
23.02.2023
Как повторно использовать факты с помощью модулей в Alloy
У меня есть следующая спецификация в Alloy:
sig A {}
sig Q{isA: one A}
fact {
all c1,c2:Q | c1.isA=c2.isA => c1=c2 // injective mapping
all a1:A | some c1:Q | c1.isA=a1 //surjective
}
В моих моделях вышеуказанный факт...
139 просмотров
schedule
18.07.2023
связанный список, нет двух одинаковых элементов
sig List {
header: set Node
}
sig Node {
link: set Node,
elem: set Int
}
Я не хочу, чтобы два узла указывали на один и тот же элемент. Как этого добиться?
Я не очень понимаю оператор *, но я пытался
all n: Node | n.elem !=...
230 просмотров
schedule
26.12.2022
Понимание мощности сплава
Я не смог понять кардинальность сплава. Я сократил свой код до этого тривиального примера, для которого Alloy не может найти экземпляр:
sig A {}
sig B { s: set A}
fact x { one n: Int | all b: B | #(b.s) = n }
run {} for 10
А именно, что...
659 просмотров
schedule
20.11.2023
Как использовать Alloy для поиска ошибок в архитектуре программного обеспечения
Я получаю огромное удовольствие от изучения Alloy и рад возможности применить его в некоторых программных проектах, над которыми работаю.
В прошлом я неформально использовал облегченные формальные методы, чтобы записать в логике первого порядка...
224 просмотров
schedule
15.01.2023
Как построить рекурсивные предикаты/функции в Alloy
Я пытаюсь сгенерировать в Alloy два набора классов, например, классы до приложения рефакторинга и классы после приложения рефакторинга. Предположим, в первом наборе у нас есть следующие классы:
ALeft -> BLeft -> CLeft...
589 просмотров
schedule
25.11.2022