specification-to-temporal-logic-generator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited specification-to-temporal-logic-generator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Translate natural-language requirements into formal temporal logic properties for model checking and formal verification.
Extract requirements from natural language text, structured documents, or semi-formal notations.
Identify key elements:
Classify requirements:
Safety (something bad never happens): Keywords "never", "always not", "must not" → G(!bad_event)
Liveness (something good eventually happens): Keywords "eventually", "will", "guaranteed" → F(good_event)
Response (if X then eventually Y): Keywords "whenever", "if...then", "leads to" → G(X -> F Y)
Precedence (X before Y): Keywords "before", "precedes", "only after" → (!Y) U X
Fairness (repeated opportunities): Keywords "infinitely often", "repeatedly" → G F X
When requirements are ambiguous:
Check common ambiguities: temporal scope, quantification, ordering, duration
Ask clarifying questions:
"The system responds to requests" could mean:
1. Every request eventually gets a response: G(request -> F response)
2. Some requests get responses: EF(request && response)
Which interpretation matches your intent?State assumptions explicitly:
Formula: G(request -> F response)
Assumptions:
- "Every request" means all requests (universal quantification)
- "Responds" means eventually, with no time boundSee ambiguity_resolution.md for detailed patterns.
Use LTL for single execution paths, "infinitely often" (G F), "eventually forever" (F G)
Use CTL for branching time, "on all paths" (A) vs "on some path" (E), reachability
Match to pattern: See ltl_patterns.md and ctl_patterns.md
Instantiate pattern:
Pattern: G(p -> F q)
Requirement: "Every request gets a response"
Formula: G(request -> F response)Validate syntax:
python scripts/validate_formula.py "G(request -> F response)" LTLAdd explanations: Plain English, formal semantics, assumptions, counterexamples
Generate formulas for target tools using conversion script:
python scripts/convert_format.py "G(request -> F response)" LTL SPINSee tool_syntax.md for complete syntax reference.
For each requirement:
Requirement: [Original requirement]
Formula (LTL): [LTL formula]
Formula (CTL): [CTL formula, if applicable]
Property Type: [Safety/Liveness/Response/Precedence/Fairness]
Explanation:
- Plain English: [What it means]
- Formal Semantics: [Technical interpretation]
- Assumptions: [List of assumptions]
- Violation Example: [What would violate this]
Tool-Specific Syntax:
- SPIN: [Promela syntax]
- NuSMV: [NuSMV syntax]
- Uppaal: [Uppaal syntax]
Validation: [Result from validate_formula.py]Requirement: "The system never enters a deadlock state"
Output:
Formula (LTL): G(!deadlock)
Formula (CTL): AG(!deadlock)
Property Type: Safety (Invariant)
Explanation:
- Plain English: The system never reaches a deadlock state
- Formal Semantics: At all time points, deadlock does not hold
- Assumptions: "deadlock" is a well-defined state predicate
- Violation: System reaches a state where no process can progress
Tool-Specific Syntax:
- SPIN: [] (!deadlock)
- NuSMV: SPEC AG(!deadlock)
- Uppaal: A[] not deadlockRequirement: "Whenever a button is pressed, the light turns on within 3 time units"
Output:
Formula (TCTL): G(button_press -> F[<=3] light_on)
Property Type: Bounded Response (Liveness)
Explanation:
- Plain English: Every button press is followed by light turning on within 3 time units
- Assumptions: Time is discrete, light can turn on multiple times
- Violation: Button pressed but light doesn't turn on within 3 time units
Tool-Specific Syntax:
- Uppaal: A[] (button_press imply A<> light_on[<=3])Requirement: "Users must authenticate before accessing the system"
Output:
Formula (LTL): (!access) U authenticated
Formula (CTL): A[(!access) U authenticated]
Property Type: Precedence (Safety)
Explanation:
- Plain English: No access occurs until authentication happens
- Assumptions: Authentication is one-time, access can occur multiple times after
- Violation: Access occurs before authentication
Tool-Specific Syntax:
- SPIN: ((!access) U authenticated)
- NuSMV: SPEC A[(!access) U authenticated]validate_formula.py - Validate temporal logic syntax (LTL, CTL, SPIN)convert_format.py - Convert between tool formats (SPIN, NuSMV, Uppaal, TLA+, Maude)ltl_patterns.md - LTL property patterns and templatesctl_patterns.md - CTL property patternsambiguity_resolution.md - Guidelines for handling ambiguous requirementstool_syntax.md - Syntax for different model checkers~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.