open Parsetree open Scoper type tterm = | Tvar of id * sty | Tconst of id * sty * tterm | Tpar of tterm | Tapp of tterm * tterm * sty * sty | Tabst of id * sty * tterm * sty | Ttrue of sty | Tfalse of sty | Tif of tterm * tterm * tterm * sty | Tobj of (label * tmeth) list * sty | Tsel of tterm * label * sty | Tupd of tterm * label * tmeth * sty | Tcast of tterm * sty * sty and tmeth = Tmeth of id * sty * tterm * sty type tline = | Ttypedef of cid * sty | Tvardef of id * sty * tterm | Tcheck of tterm * sty | Tconv of tterm * tterm * sty | Tnorm of tterm | Tprint of string type typed_tree = tline list val infer : tterm -> sty val type_check : Scoper.scoped_tree -> typed_tree