Skip to content

Commit 143c292

Browse files
committed
More
1 parent 9d8434b commit 143c292

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

user_manual.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,8 +2194,8 @@ As an exception, we often use `Tuple` in the second field of term annotations `<
21942194
premise-list | none
21952195
<annot> := [ <attr>, <pterm> ]
21962196
<term> := <param> | <const> |
2197-
(-> <term> <term>) | (~> <term> <term>) | (--> <term>* <term>) |
2198-
(_ <term> <term>) | (_# <term> <term>) | (<prog-const> <term>*)
2197+
(-> <term> <term>) | (~> <term> <term>) | (--> <term>+ <term>) |
2198+
(_ <term> <term>) | (_# <term> <term>) | (<prog-const> <term>+)
21992199
<prog-const> := <const> | eo::requires | eo::nil | eo::ite | eo::typeof | eo::is_eq
22002200
22012201
<pterm> := <term> | Null | (Opaque <pterm>) | (Quote <pterm>) | (Nil <pterm>*) |
@@ -2571,10 +2571,10 @@ RUN(C):
25712571
if A[r] = [premise-list, g]
25722572
Let p = FRESH_CONST( p, DESUGAR( (Proof (g F_1 ... F_k) ) ) ), where p_1, ..., p_k have type (Proof F_1), ...., (Proof F_k).
25732573
Let res = SUBS( (r t_1 ... t_n p), [eo::conclusion], [F] )
2574-
return RUN( (define s () res) )
2574+
return RUN( (define s () res :type (Proof F)) )
25752575
else
25762576
Let res = SUBS( (r t_1 ... t_n p_1 ... p_k), [eo::conclusion], [F] )
2577-
return RUN( (define s () res) )
2577+
return RUN( (define s () res :type (Proof F)) )
25782578
25792579
(program s ((x_1 U_1) ... (x_m U_m))
25802580
(T_1 ... T_n) T
@@ -2634,6 +2634,7 @@ RUN(C):
26342634

26352635
### Type system
26362636

2637+
26372638
```smt
26382639
f : (~> u S) t : T
26392640
-------------------------- if SUBS(u, X, R) = t
@@ -2657,6 +2658,11 @@ The submethod `EVAL( t, [x_1, ..., x_n], [r_1, ..., r_n] )`
26572658
is the result of evaluating `t` in the context where parameters `[x_1, ..., x_n]`
26582659
are bound to `[r_1, ..., r_n]`.
26592660

2661+
By convention, we assume
2662+
a term is well typed only if its type does not contain an application of a program or builtin evaluation operator.
2663+
In other words, all type rules above assume the side condition that `T` respects this restriction if `t : T` is concluded.
2664+
Moreover we assume that all types are fully evaluated when assigned to atomic terms.
2665+
26602666
### Execution semantics
26612667

26622668
TODO

0 commit comments

Comments
 (0)