question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Spurious violation of an obvious temporal property

See original GitHub issue

In the specification below, it appears that TLC silently ignores the third conjunct of the Spec definition. For this input I would expect either (1) no violation reported or (2) an error message indicating that TLC can’t check the specification as written.

(In this case, it is entirely possible that I have misunderstood the specification I wrote down. However, my intuition is that any property in the specification is a trivially-true temporal property.)

TrivialTemporalViolation.tla:

---- MODULE TrivialTemporalViolation ----

EXTENDS Naturals

VARIABLE x

Spec ==
    /\ x = 1
    /\ [][x' = x+1]_x
    /\ [](x = 1) \* harsh restriction that forbids behaviors where x changes

Liveness ==
    [](x = 1)

=========================================

TrivialTemporalViolation.cfg:

SPECIFICATION Spec
PROPERTY Liveness
$ tlc2 -deadlock TrivialTemporalViolation
TLC2 Version 2.15 of Day Month 20??
Running breadth-first search Model-Checking with fp 8 and seed -4070785743065743379 with 1 worker on 4 cores with 3641MB heap and 64MB offheap memory [pid: 62947] (Mac OS X 10.14.6 x86_64, Azul Systems, Inc. 11.0.1 x86_64, MSBDiskFPSet, DiskStateQueue).
Parsing file /Users/cloncari/sw/src/tla-examples/TrivialTemporalViolation.tla
Parsing file /private/var/folders/k0/tw__ldzn7r19gby9d93tffh40000gn/T/Naturals.tla
Semantic processing of module Naturals
Semantic processing of module TrivialTemporalViolation
Starting... (2020-10-29 17:58:21)
Computing initial states...
Finished computing initial states: 1 distinct state generated at 2020-10-29 17:58:21.
Error: Invariant Liveness is violated.
Error: The behavior up to this point is:
State 1: <Initial predicate>
x = 1

State 2: <Action line 9, col 11 to line 9, col 18 of module TrivialTemporalViolation>
x = 2

2 states generated, 2 distinct states found, 0 states left on queue.
The depth of the complete state graph search is 2.
Finished in 00s at (2020-10-29 17:58:21)

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:8 (5 by maintainers)

github_iconTop GitHub Comments

1reaction
lemmycommented, Jul 13, 2022

I’ve already started looking at SpecProcessor.java on how to make TLC issue a warning. SpecProcessor could reject formulas starting with the box operator followed only by a state-level formula S, i.e. []S. This still allows meaningful fairness constraints such as weak fairness ([]<>(ENABLED <<A>>_v => <<A>>_v). However, this would miss variants of []S such as ~<>~S. Perhaps, this is good enough given that TLC errors with “<> followed by action not of form <>_v” for a spec formula Init /\ ~<>~[Next]_v.

Calvin-Lcommented, Jul 15, 2022

Looks good to me!

Read more comments on GitHub >

github_iconTop Results From Across the Web

A Verifier for Temporal Properties - cs.wisc.edu
This is called a benign property violation. The property under discussion is ... Libraries and APIs are a major focus of temporal property...
Read more >
A new simple test against spurious long memory using temporal ...
Simulations show that the test performs good in finite sample sizes, and is able to distinguish long memory from spurious processes with excellent...
Read more >
Verification of temporal properties of asynchronous systems
Violation traces for temporal properties​​ Whenever a property is violated, a witness of the violation, in the form of a violation trace exhibiting...
Read more >
Spurious normativity enhances learning of compliance ... - PNAS
Some norms are relatively easy to explain: They may prohibit obviously ... of most research into the properties and origins of human normativity...
Read more >
Spurious Regressions and Panel IV Estimation
reference to their time series properties, the correlation between Y and ... cassette tape sales instrument that is most obviously spurious.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found