Judgements and Propositions
We state “A is true”, then “A” is a proposition, and “A is true” as a whole is a judgement.
Some examples of application of logic branches in programming languagues:
K knows A | epistemic logic | distributed computing |
A true at time t | temporal logic | partitial evaluation |
A is a resource | linear logic | concurrent computing |
A is possible | lax logic | monad |
A is valid | modal logic | runtime code generation |
Defining a JudgementPermalink
To define a judgement, we must have Introduction rules (), and Elimination rules (). They must satisfy Local Soundness (checks elimination rules are not too strong) such that for every way to apply the elimination rules, we can reduce it to one that already existed. The process of doing that is called local reduction. ( rule) They should also satisfy Local Completeness (checks elimination rules are not too weak) such that there is someway to apply the elimination rules so that from the pieces we can re-introduce what the original proposition is. The process of doing that is called local expansion. ( rule)
Note: means applies to
Some notations:
means is a proof of is , or is a program of type , where
means substitude for based on the structure of (plug in for )
ExamplesPermalink
To define :Permalink
Introduction rule ():
or
Elimination rules ():
or
or
Check Local Soundness by local reduction:
or
or
Check Local Completeness by local expansion:
or
To define implication():Permalink
Introduction rule() (x means an assumption):
or
Elimination rule():
or
Local reduction:
Local expansion:
Comments