Conditional Properties
In each statement, if the test expression is true, then the conclusion expression is also assumed to be true. Conditional properties are used to prove theorems.
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
- value at j in map (Control Map at time t) = pair ("if", False)
then the line at time (t + 1) = i + 1
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
- value at j in map (Control Map at time t) = pair ("if", False)
then the tab at time (t + 1) = j + 1
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
- value at j in map (Control Map at time t) = pair ("if", True)
then the line at time (t + 1) = i + 1
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
- value at j in map (Control Map at time t) = pair ("if", True)
then the tab at time (t + 1) = j
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
then Variables Map at time (t + 1) = Variables Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
then Context Stack at time (t + 1) = Context Stack at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
then Control Map at time (t + 1) = Control Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
then Class Map at time (t + 1) = Class Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
else:
then Expression Stack at time (t + 1) = [ ]
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab k = s
- k < j
- value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)
then the line at time (t + 1) = i
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab k = s
- k < j
- value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)
then the tab at time (t + 1) = j - 1
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab k = s
- k < j
- value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)
then Variables Map at time (t + 1) = Variables Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab k = s
- k < j
- value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)
then Context Stack at time (t + 1) = Context Stack at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab k = s
- k < j
- value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab k = s
- k < j
- value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)
then Class Map at time (t + 1) = Class Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab k = s
- k < j
- value at (j - 1) in map (Control Map at time t) = pair ("if", if_value)
then Control Map at time (t + 1) = Control Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ ]
then Expression Stack at time (t + 1) = [ [ test, [ ] ], [ ] ]
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ ]
then the line at time (t + 1) = i
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ ]
then the tab at time (t + 1) = j
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ ]
then Value Stack at time (t + 1) = [ [ ], [ ] ]
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ ]
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ ]
then Control Map at time (t + 1) = Control Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ ]
then Variables Map at time (t + 1) = Variables Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ ]
then Context Stack at time (t + 1) = Context Stack at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
then Class Map at time (t + 1) = Class Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ [ ], [ ] ]
then the line at time (t + 1) = i + 1
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ [ ], [ ] ]
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ [ ], [ ] ]
then Variables Map at time (t + 1) = Variables Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
while test:
- Expression Stack at time t = [ [ ], [ ] ]
then Context Stack at time (t + 1) = Context Stack at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = "while" statement with condition (function call with name: name and arguments: args)
- Expression Stack at time t = [ [ ], [ ] ]
- Value Stack at time t = [ [ True, [ ] ], [ ] ]
then the tab at time (t + 1) = j + 1
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = "while" statement with condition (function call with name: name and arguments: args)
- Expression Stack at time t = [ [ ], [ ] ]
- Value Stack at time t = [ [ True, [ ] ], [ ] ]
then Control Map at time (t + 1) = result of storing (pair ("while", i)) at key: j in map: (Control Map at time t)
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = "while" statement with condition (function call with name: name and arguments: args)
- Expression Stack at time t = [ [ ], [ ] ]
- Value Stack at time t = [ [ False, [ ] ], [ ] ]
then the tab at time (t + 1) = j
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = "while" statement with condition (function call with name: name and arguments: args)
- Expression Stack at time t = [ [ ], [ ] ]
- Value Stack at time t = [ [ False, [ ] ], [ ] ]
then Control Map at time (t + 1) = Control Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
break
then "break" state at (t + 1) = "breaking"
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
break
then the line at time (t + 1) = i
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
break
then the tab at time (t + 1) = j
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
break
then Variables Map at time (t + 1) = Variables Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
break
then Context Stack at time (t + 1) = Context Stack at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
break
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
break
then Control Map at time (t + 1) = Control Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
break
then Class Map at time (t + 1) = Class Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then "continue" state at (t + 1) = "continuing"
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then the line at time (t + 1) = i
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then the tab at time (t + 1) = j
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then Expression Stack at time (t + 1) = [ ]
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then Variables Map at time (t + 1) = Variables Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then Context Stack at time (t + 1) = Context Stack at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then Control Map at time (t + 1) = Control Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
continue
then Class Map at time (t + 1) = Class Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = function definition where name: name and parameters: params
then there is a function named name with parameters params at line line
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = function definition where name: name and parameters: params
then Variables Map at time (t + 1) = Variables Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = function definition where name: name and parameters: params
then the line at time (t + 1) = i + 1
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = function definition where name: name and parameters: params
then the tab at time (t + 1) = j
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = function definition where name: name and parameters: params
then Context Stack at time (t + 1) = Context Stack at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = function definition where name: name and parameters: params
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = function definition where name: name and parameters: params
then Control Map at time (t + 1) = Control Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j = function definition where name: name and parameters: params
then Class Map at time (t + 1) = Class Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return v
then Class Map at time (t + 1) = Class Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return c
- c is constant
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return c
- c is a variable
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ ]
then Expression Stack at time (t + 1) = [ [ rex, [ ] ], [ ] ]
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ ]
then Value Stack at time (t + 1) = [ [ ], [ ] ]
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ ]
then the line at time (t + 1) = i
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ ]
then the tab at time (t + 1) = j
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ ]
then Variables Map at time (t + 1) = Variables Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ ]
then Context Stack at time (t + 1) = Context Stack at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ ]
then Python Object Store at time (t + 1) = Python Object Store at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ ]
then Control Map at time (t + 1) = Control Map at time t
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Context Stack at time t = [ program context with variables: vars and expression state: (expression state with expression stack: expr_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
- Expression Stack at time t = [ [ ], [ ] ]
then Variables Map at time (t + 1) = vars
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Context Stack at time t = [ program context with variables: vars and expression state: (expression state with expression stack: expr_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
- Expression Stack at time t = [ [ ], [ ] ]
then the line at time (t + 1) = line
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Context Stack at time t = [ program context with variables: vars and expression state: (expression state with expression stack: expr_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
- Expression Stack at time t = [ [ ], [ ] ]
then the tab at time (t + 1) = tab
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Context Stack at time t = [ program context with variables: vars and expression state: (expression state with expression stack: expr_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
- Expression Stack at time t = [ [ ], [ ] ]
then Control Map at time (t + 1) = control_map
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Context Stack at time t = [ program context with variables: vars and expression state: (expression state with expression stack: expr_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
- Expression Stack at time t = [ [ ], [ ] ]
then Context Stack at time (t + 1) = rest
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Context Stack at time t = [ program context with variables: vars and expression state: (expression state with expression stack: expr_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
- Expression Stack at time t = [ [ ], [ ] ]
then Expression Stack at time (t + 1) = expr_stack
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Context Stack at time t = [ program context with variables: vars and expression state: (expression state with expression stack: expr_stack values: value_stack line: line tab: tab) and control map: control_map, rest ]
- Expression Stack at time t = [ [ ], [ ] ]
then Value Stack at time (t + 1) = value_stack
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ [ ], [ ] ]
- Value Stack at time t = [ [ value, [ ] ], [ ] ]
then Return Value at time (t + 1) = [ value, [ ] ]
if the following are true:
- the line at time t = i
- the tab at time t = j
- statement at line i, tab j =
return rex
- Expression Stack at time t = [ [ ], [ ] ]
then Python Object Store at time (t + 1) = Python Object Store at time t
if a is less than (minimum value of stack xs), then minimum value of stack [ a, xs ] = a
if a < minimum value of stack xs, then minimum value of stack [ a, xs ] = a
if xs is greater than (minimum value of stack xss), then minimum value of stack [ xs, xss ] = minimum value of stack xss
if a > minimum value of stack xs, then minimum value of stack [ a, xs ] = minimum value of stack xs
if a > maximum value in stack xs, then maximum value in stack [ a, xs ] = a
if a < maximum value in stack xs, then maximum value in stack [ a, xs ] = maximum value in stack xs
if compare bit stack xs and bit stack ys = [ 0, [ 0, [ ] ] ], then compare bit stack [ x, xs ] and bit stack [ y, ys ] = [ 0, [ 0, [ ] ] ]
if compare bit stack xs and bit stack ys = [ 0, [ 1, [ ] ] ], then compare bit stack [ x, xs ] and bit stack [ y, ys ] = [ 0, [ 1, [ ] ] ]
if compare bit stack xs and bit stack ys = [ 1, [ 0, [ ] ] ], then compare bit stack [ x, xs ] and bit stack [ y, ys ] = compare bit x and bit y
if compare bit stack xs and bit stack ys = [ 0, [ 0, [ ] ] ], then xs is less than ys
if compare bit stack xs and bit stack ys = [ 0, [ 1, [ ] ] ], then xs is greater than ys
if el = val, then index of value val in [ el, remain ] with current index idx = idx
if el = val, then output of the index_compute function where the input stack is [ el, remain ], value is val, and index is idx = idx
if el = val, then index of value val in [ node (el, left, right), remain ] with current index idx = idx
if el = val, then index of value val in [ node (el, w, p), remain ] with current index idx = idx
if not (el = val), then index of value val in [ el, remain ] with current index idx = index of value val in remain with current index (idx + 1)
if not (el = val), then output of the index_compute function where the input stack is [ el, remain ], value is val, and index is idx = output of the index_compute function where the input stack is remain, value is val, and index is (idx + 1)