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
-
L
Language-oriented programming
Programming paradigm
Nº Q6486619 ★
Not listed
-
Parallel computing
Programming paradigm in which many calculations or the execution of processes are carried out simultaneously
Nº Q232661 ★★
Not listed
-
P
Principle of individuation
Concept in metaphysics
Nº Q371857 ★★
Not listed
-
Euler method
An explicit, first-order method for numerically solving ordinary differential equations
Nº Q868454 ★★★
Not listed
-
Ahead-of-time compilation
Compilation strategy
Nº Q56248162 ★
Not listed
-
S
Satisfiability modulo theories
Problem of determining whether a mathematical formula is satisfiable
Nº Q2067766 ★★
Not listed
-
Quine–McCluskey algorithm
Algorithm
Nº Q621409 ★
Not listed
-
C
Currying
Transforming a function in such a way that it only takes a single argument
Nº Q1144925 ★★
Not listed
-
C++
General-purpose programming language
Nº Q2407 ★★★★
Not listed
-
Binary GCD algorithm
Algorithm that computes the greatest common divisor of two integers using only arithmetic shifts, comparisons, and subtraction
Nº Q622328 ★
Not listed
-
S
Stack-oriented programming
Programming paradigm that relies on a stack machine model
Nº Q52845127 ★
Not listed
-
Strategy pattern
Design pattern enabling selection of algorithms at runtime
Nº Q775349 ★★
Not listed
-
S
Satisficing
Cognitive heuristic that entails searching through the available alternatives until an acceptability threshold is met
Nº Q1578122 ★★
Not listed
-
S
Sequential probability ratio test
Hypothesis test in mathematics
Nº Q2271882 ★
Not listed
-
S
Skeleton (computer programming)
Design pattern in software development
Nº Q1169129 ★★
Not listed
-
P
Principle of least astonishment
Principle in computer system design
Nº Q22668 ★★
Not listed
-
B
BPP (complexity)
Complexity class
Nº Q796890 ★
Not listed
-
L
Loop unrolling
Loop transformation technique
Nº Q1869750 ★
Not listed