(0) CHARACTERISTICS
-type specified: s2_stack
-features: deterministic, non-parameterized
-foreign types:
(1) SYNTAX
ACCESS-PROGRAMS
Arg#1 | Arg#2 | Result Type | DIVCOUNT | s2_stack:V | int:V | int | PUSH | s2_stack:VO | int:V | | POP | s2_stack:VO | | | TOP | s2_stack:V | | int | |
---|
(2) CANONICAL TRACES
canonical(T) n:<int>; a[1]..a[n]:<int> [T = [PUSH(*, a[i])]i=1..n ]AUXILIARY FUNCTIONS
divcount: <s2_stack> × <int> <int>
divcount(T, n) (n 0) =
Condition | Value | ||||||
---|---|---|---|---|---|---|---|
T = _ | 0 | ||||||
T1:<s2_stack>; x:<int> [T = T1.PUSH(*, x) ] |
| ||||||
(3) SEMANTICS
ACCESS-PROGRAMSLegality(DIVCOUNT(T, n)) =
Condition | Value |
---|---|
n = 0 | %fatal% |
n 0 | %legal% |
DIVCOUNT(T, n) = divcount(T, n)
Legality(PUSH((n, T), a)) = %legal%
PUSH((n, T) , a) = T.PUSH(*, a)
Legality(POP((n, T))) =
Condition | Value |
---|---|
T = _ | %empty% |
T _ | %legal% |
POP((n, T) ) = T1 where T1:<s2_stack>; a:<int> [T = T1.PUSH(*, a) ]
Legality(TOP(T)) =
Condition | Value |
---|---|
T = _ | %empty% |
T _ | %legal% |
TOP(T) = a where T1:<s2_stack>; a:<int> [T = T1.PUSH(*, a) ]