Last change
on this file since 1784 was
1647,
checked in by tranquil, 9 years ago
|
- corrected some notation problems
- adapted Cligth with slight modifications to new monad framework
|
File size:
614 bytes
|
Line | |
---|
1 | include "utilities/monad.ma". |
---|
2 | include "basics/types.ma". |
---|
3 | |
---|
4 | definition Option ≝ MakeMonadProps |
---|
5 | (* the monad *) |
---|
6 | option |
---|
7 | (* return *) |
---|
8 | (λX.Some X) |
---|
9 | (* bind *) |
---|
10 | (λX,Y,m,f. match m with [ Some x ⇒ f x | None ⇒ None ?]) |
---|
11 | ???. |
---|
12 | // #X[2:#Y#Z]*normalize//qed. |
---|
13 | |
---|
14 | include "hints_declaration.ma". |
---|
15 | unification hint 0 ≔ X; |
---|
16 | N ≟ max_def Option, M ≟ m_def N |
---|
17 | (*---------------*) ⊢ |
---|
18 | option X ≡ monad M X |
---|
19 | . |
---|
20 | |
---|
21 | definition opt_safe : ∀X.∀m : option X. m ≠ None X → X ≝ |
---|
22 | λX,m,prf.match m return λx.m = x → X with |
---|
23 | [ Some t ⇒ λ_.t |
---|
24 | | None ⇒ λeq_m.? |
---|
25 | ] (refl …). elim (absurd … eq_m prf) qed. |
---|
Note: See
TracBrowser
for help on using the repository browser.