<Id>::= [ 'A-Z' | 'a-z' ][ 'A-Z' | 'a-z' | '0-9' | \- | _ | \' ]*

<Uri>::= <Conuri> | <Varuri> | <Indtyuri> | <Indconuri>

<Conuri>::= "cic:/" [<Id> "/" ]*<Id> ".con"

<Varuri>::= "cic:/" [<Id> "/" ]*<Id> ".var"

<Indtyuri>::= "cic:/" [<Id> "/" ]*<Id> ".ind#1/" ['0-9']+

<Indconuri>::= "cic:/" [<Id> "/" ]*<Id> ".ind#1/" ['0-9']+ "/" ['0-9']+

<Exp_Named_Subst>::= "{" [ [ [<Id> | <Varuri> ] ":=" <Expression> ";" ]* [ [<Id> | <Varuri> ] ":=" <Expression> ] ]? "}"

<Alias>::= "alias" <Id> <Uri>

<Genid>::= [ <Id> | <Varuri> | <Indtyuri> | <Indconuri> ] <Exp_Named_Subst>

<Expr>::= "\" <Genid> [ ":" | ":=" ] <Expr>"."<Expr>
            ::= "!" <Genid> ":" <Expr>"."<Expr>
            ::= <Expr>"->"<Expr>
            ::= "(" <Expr> ")" "->"<Expr>
            ::= "(" <Expr> [ " " <Expr>]* ")"
            ::= "Prop" | "Set" | "Type" | "?" | <Uri> | <Id>