
Overall structure

  It might be useful to distinguish between meta variables and holes.
  Meta variables: id _ x, only filled in internally
  Holes: f x = ?, used for interaction, filled in by the user

		 	  scope		        type
        parser	         analysis	      checking
  Text  ----->  Concrete  ------->  Internal  ------->  Value
                 syntax	             syntax

Internal syntax

  Abstract with views, otherwise as agdaLight

Values

  No types, split into values and types with explicit El. Types annotated
  with sorts. We think we can infer the different types of lam and app.

    app : (A : El Set)(B : El A -> El Set) : El (Fun A B) -> ((x : El A) -> El (B x))
    lam : (A : El Set)(B : El A -> El Set) : ((x : El A) -> El (B x)) -> El (Fun A B)

  Idea: change the conversion algorithm to put in the coercions:

    m:A ≤ m':A', meaning m of type A can be coerced to m' of type A'.

  Type checking rule:

    Γ ⊢ e => m' : A'   m':A' ≤ m:A
    ------------------------------
             Γ ⊢ e : A => m

vim: sts=2 sw=2 tw=75
