|
Revision 1640, 0.7 KB
(checked in by tranquil, 16 months ago)
|
|
* finished fork of semantics.ma
* unification of Errors under the monad notations brings problems in type checking when res and IO are used together. Needs a lot of annotations, and may break the pre-fork material
|
| Line | |
|---|
| 1 | include "basics/relations.ma". |
|---|
| 2 | |
|---|
| 3 | definition proper ≝ λA,B.λrelA : relation A.λrelB : relation B. |
|---|
| 4 | λf,g : A → B. |
|---|
| 5 | ∀a,a' : A.relA a a' → relB (f a) (g a'). |
|---|
| 6 | |
|---|
| 7 | definition proper_contra ≝ λA,B.λrelA : relation A.λrelB : relation B. |
|---|
| 8 | λf,g : A → B. |
|---|
| 9 | ∀a,a' : A.relA a' a → relB (f a) (g a'). |
|---|
| 10 | |
|---|
| 11 | |
|---|
| 12 | interpretation "proper" 'proper r s = (proper ? ? r s). |
|---|
| 13 | interpretation "proper contravariant" 'proper_contra r s = (proper_contra ? ? r s). |
|---|
| 14 | |
|---|
| 15 | notation "r ++> s" right associative with precedence 51 for |
|---|
| 16 | @{'proper $r $s}. |
|---|
| 17 | |
|---|
| 18 | notation "r -+> s" right associative with precedence 51 for |
|---|
| 19 | @{'proper_contra $r $s}. |
|---|
| 20 | |
|---|
| 21 | (* avoid notation from kikcing in in outputm to avoid things like X ⊨ Prod *) |
|---|
| 22 | notation > "f ⊨ p " with precedence 50 for @{$p $f $f}. |
|---|