3 "\langle a , b \rangle"
6 print \langle 1, \langle 2, 3 \rangle \rangle.
7 print 'pair 1 ('pair 2 ('pair 3 4)).
16 "[ hovbox (list0 a sep ; ) ]"
26 "[ list1 a sep ; | b ]"
28 if @{ 'cons $_ $_ } then
32 else if @{ 'cons $_ $_ } then
41 print 'cons 1 ('cons 2 ('cons 3 'ugo)).
42 print 'cons 1 ('cons 2 ('cons 3 'nil)).
46 notation "a + b" left associative for @{ 'plus $a $b }.
51 "'if' a 'then' b 'else' c"
53 @{ 'ifthenelse $a $b $c }.
55 TODO collezionare le keyword e aggiungerle al lexer nonche' ricordarsele per quando si rimuove la notazione.
60 @{ if $a > $b then $a else $b }
64 right associative at precedence ...
66 @{ 'lambda ${ident x} $a }
70 @a e' un'abbreviazione per @{term a}
71 "x" e' un'abbreviazione per @{keyword x}
72 @_ e' un'abbreviazione per @{anonymous}
74 \x simbolo della sintassi concreta
75 'x simbolo della sintassi astratta
77 \lbrace \rbrace per le parentesi graffe al livello 1
81 # sample mappings level 1 <--> level 2
83 notation \[ \TERM a ++ \OPT \NUM i \] for 'assign \TERM a ('plus \TERM a \DEFAULT \[\NUM i\] \[1\]).
86 notation \[ + \LIST0 \NUM a \] for \FOLD right \[ 'zero \] \LAMBDA acc \[ 'plus \NUM a \TERM acc \].
89 notation \[ [ \HOVBOX\[ \LIST0 \TERM a \SEP ; \] ] \] for \FOLD right \[ 'nil \] \LAMBDA acc \[ 'cons \TERM a \TERM acc \].
93 notation \[ [ \LIST0 \[ \TERM a ; \TERM b \] \SEP ; ] \] for \FOLD right \[ 'nil \] \LAMBDA acc \[ 'cons \TERM a ( 'cons \TERM b \TERM acc) \] .
98 notation \[ | \LIST0 \[ \TERM a \OPT \[ , \TERM b \] \] \SEP ; | \] for \FOLD right \[ 'nil \] \LAMBDA acc \[ 'cons \DEFAULT \[ \TERM a \] \[ ('pair \TERM a \TERM b) \] \TERM acc \] .
100 notation \[ | \LIST0 \[ \OPT \[ \NUM i \] \] \SEP ; | \] for \FOLD right \[ 'nil \] \LAMBDA acc \[ 'cons \DEFAULT \[ 'Some \NUM i \] \[ 'None \] \TERM acc \] .
102 # sample mappings level 2 <--> level 3
104 interpretation 'plus x y = (cic:/Coq/Init/Peano/plus.con x y).
105 interpretation 'mult x y = (cic:/Coq/Init/Peano/mult.con x y).
106 render cic:/Coq/Arith/Mult/mult_plus_distr_r.con.
108 notation \[ \TERM a \OVER \TERM b : \TERM c \SQRT \TERM d \] for 'megacoso \TERM a \TERM b \TERM c \TERM d.
109 interpretation 'megacoso x y z w = (cic:/Coq/Init/Logic/eq.ind#xpointer(1/1) cic:/Coq/Init/Datatypes/nat.ind#xpointer(1/1) (cic:/Coq/Init/Peano/plus.con x y) (cic:/Coq/Init/Peano/plus.con z w)).
110 render cic:/Coq/Arith/Plus/plus_comm.con.
114 notation \[ \TERM a + \TERM b \] for 'plus \TERM a \TERM b.
116 interpretation 'plus x y = (cic:/Coq/Init/Peano/plus.con x y).
117 render cic:/Coq/Arith/Plus/plus_comm.con.
119 notation \[ \TERM a + \TERM b \] left associative with precedence 50 for 'plus \TERM a \TERM b.
120 notation \[ \TERM a * \TERM b \] left associative with precedence 60 for 'mult \TERM a \TERM b.
121 interpretation 'plus x y = (cic:/Coq/Init/Peano/plus.con x y).
122 interpretation 'mult x y = (cic:/Coq/Init/Peano/mult.con x y).
123 render cic:/Coq/Arith/Mult/mult_plus_distr_r.con.
125 notation \[ \LIST \NUM a \] for \FOLD left \[ 'a \] \LAMBDA acc \[ 'b \NUM a \].