Predicative programming
Method of computer program specification
Predicative programming is the original name of a formal method for program specification and refinement, more recently called a Practical Theory of Programming, invented by Eric Hehner. The central idea is that each specification is a binary (boolean) expression that is true of acceptable computer behaviors and false of unacceptable behaviors.
Nº Q7239635 ★
Common · Knowledge
Predicative programming
Method of computer program specification
Predicative programming is the original name of a formal method for program specification and refinement, more recently called a Practical Theory of Programming, invented by Eric Hehner. The central idea is that each specification is a binary (boolean) expression that is true of acceptable computer behaviors and false of unacceptable behaviors.
From Wikipedia
Predicative programming is the original name of a formal method for program specification and refinement, more recently called a Practical Theory of Programming, invented by Eric Hehner. The central idea is that each specification is a binary (boolean) expression that is true of acceptable computer behaviors and false of unacceptable behaviors. It follows that refinement is just implication. This is the simplest formal method, and the most general, applying to sequential, parallel, stand-alone, communicating, terminating, nonterminating, natural-time, real-time, deterministic, and probabilistic programs, and includes time and space bounds. Commands in a programming language are considered to be a special case of specification—those specifications that are compilable. For example, if the program variables are x {\displaystyle x} , y {\displaystyle y} , and z {\displaystyle z} , the command x {\displaystyle x} := y {\displaystyle y} +1 is equivalent to the specification (binary expression) x ′ {\displaystyle x'} = y {\displaystyle y} +1 ∧ y ′ {\displaystyle y'} = y {\displaystyle y} ∧ z ′ {\displaystyle z'} = z {\displaystyle z} in which x {\displaystyle x} , y {\displaystyle y} , and z {\displaystyle z} represent the values of the program variables before the assignment, and x ′ {\displaystyle x'} , y ′ {\displaystyle y'} , and z ′ {\displaystyle z'} represent the values of the program variables after the assignment. If the specification is x ′ {\displaystyle x'} > y {\displaystyle y} , we easily prove ( x {\displaystyle x} := y {\displaystyle y} +1) ⇒ ( x ′ {\displaystyle x'} > y {\displaystyle y} ), which says that x {\displaystyle x} := y {\displaystyle y} +1 implies, or refines, or implements x ′ {\displaystyle x'} > y {\displaystyle y} . Loop proofs are greatly simplified. For example, if x {\displaystyle x} is an integer variable, to prove that while...
Text: Wikipédia, CC BY-SA 4.0. ·
Related cards
-
B
BPP (complexity)
Complexity class
Nº Q796890 ★
Not listed
-
L
Loop unrolling
Loop transformation technique
Nº Q1869750 ★
Not listed
-
Π
Π-calculus
Process calculus
Nº Q602886 ★
Not listed
-
C
Continuation-passing style
Programming style
Nº Q749893 ★
Not listed
-
B
B, C, K, W system
Combinatory logic system
Nº Q845546 ★
Not listed
-
F
Futures and promises
In concurrent programming, an object serves as a placeholder for a result that is initially unknown because the computation is incomplete (such an object is crucial in representing the final result during ongoing or not-yet-started computations)
Nº Q1426138 ★
Not listed
-
T
Template metaprogramming
Programming paradigm that uses compile-time metaprogramming
Nº Q773763 ★
Not listed
-
P
PL/0
Programming language, intended as an educational programming language, that is similar to but much simpler than Pascal
Nº Q1719128 ★
Not listed
-
F
Fibonacci coding
Universal code
Nº Q2633 ★★
Not listed
-
Function (computer programming)
Sequence of instructions that can be called from other points in a computer program
Nº Q190686 ★★
Not listed
-
R
Refal
Functional programming language oriented toward symbolic computations
Nº Q2626418 ★★
Not listed
-
Imperative programming
Programming paradigm of directly specifying commands that affect program state
Nº Q275596 ★★★
Not listed
-
History of programming languages
Aspect of history
Nº Q1068652 ★★★
Not listed
-
S
Sequent calculus
Style of formal logical argumentation
Nº Q1771121 ★
Not listed
-
C
Concurrent logic programming
Logic programming paradigm
Nº Q17008825 ★
Not listed
-
Alistair Cockburn
American computer programmer
Nº Q93058 ★
Not listed
-
C
Constant folding
Compiler optimization that replaces expressions with computed results at compile time
Nº Q2342581 ★
Not listed
-
BASIC
Programming language for beginners, mainly using familiar English words or abbreviations of them
Nº Q42979 ★★★
Not listed