Dada types and permissions

A Dada type has the following grammar

#![allow(unused)]
fn main() {
// Types:


// Permissions:

}

Notes:

Ty = Struct
   | Class
   | Var
   | Perm Ty

Perm =

canonical form

TyC = Perm (Struct | Class | Var)

PermC = shared(places)? leased(places)* (my | Var)