Skip to content

Commit 28987a5

Browse files
Define abstract state variables for Phase C5 formal model
1 parent 9c7a82d commit 28987a5

File tree

1 file changed

+126
-0
lines changed

1 file changed

+126
-0
lines changed

formal/STATE-VARIABLES.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# XSTRP Phase C5 — Abstract State Variables
2+
3+
## Purpose
4+
5+
This document defines the abstract state variables used in the Phase C5
6+
formal verification model of XSTRP.
7+
8+
These variables represent the minimal protocol state required to model
9+
the frozen behavior defined in Phases C1–C4.
10+
11+
No implementation details, ledger semantics, cryptography, or timing
12+
precision beyond abstract expiry are represented.
13+
14+
---
15+
16+
## Core State Variable
17+
18+
### intent_state
19+
20+
Represents the current lifecycle state of a transfer intent.
21+
22+
Abstract domain:
23+
24+
- Created
25+
- Committed
26+
- Completed
27+
- Expired
28+
- Refunded
29+
- Invalid
30+
31+
This variable is authoritative for protocol progression.
32+
Terminal states are immutable.
33+
34+
---
35+
36+
## Authorization Variable
37+
38+
### authorization_valid
39+
40+
Represents whether the authorization requirements for a transition
41+
have been satisfied.
42+
43+
Abstract domain:
44+
45+
- TRUE
46+
- FALSE
47+
48+
This variable abstracts all authorization inputs (proofs, confirmations,
49+
fees) into a single gating signal.
50+
51+
No assumptions are made about how authorization is obtained.
52+
53+
---
54+
55+
## Proof Presence Variable
56+
57+
### proof_present
58+
59+
Represents whether a proof artifact has been supplied for a transition.
60+
61+
Abstract domain:
62+
63+
- TRUE
64+
- FALSE
65+
66+
This variable does not model proof correctness, cryptography, or format.
67+
It represents presence only.
68+
69+
---
70+
71+
## Expiry Variable
72+
73+
### is_expired
74+
75+
Represents whether the intent has reached abstract expiry.
76+
77+
Abstract domain:
78+
79+
- TRUE
80+
- FALSE
81+
82+
This variable abstracts all timing behavior into a single boolean.
83+
No clock or time model exists.
84+
85+
---
86+
87+
## Transition Eligibility Variable
88+
89+
### transition_allowed
90+
91+
Derived variable indicating whether a state transition is permitted
92+
given the current abstract state.
93+
94+
This variable is not independently mutable.
95+
It exists only to express invariants and guards.
96+
97+
---
98+
99+
## Excluded Variables
100+
101+
The following are intentionally excluded and MUST NOT appear in the model:
102+
103+
- Ledger balances
104+
- Account addresses
105+
- Cryptographic keys or signatures
106+
- Network messages
107+
- Wallet behavior
108+
- User interfaces
109+
- Persistent storage
110+
- Fees as numeric values (only abstract authorization)
111+
112+
---
113+
114+
## Notes on Abstraction
115+
116+
All real-world inputs (user actions, wallet signing, hardware confirmation,
117+
fee payments) are abstracted into boolean conditions.
118+
119+
This is intentional and required to preserve scope discipline.
120+
121+
---
122+
123+
## Status
124+
125+
Abstract state variables defined.
126+
No formal specification written yet.

0 commit comments

Comments
 (0)