
Show
let b := true,
    a : Int := b
in a

Variable vector : Type -> Nat -> Type
Variable const {A : Type} (n : Nat) (a : A) : vector A n

Check
let a  := 10,
    v1 := const a true,
    v2 := v1
in v2

Show
let a  := 10,
    v1 : vector Bool a := const a true,
    v2 : vector Bool a := v1
in v2

Check
let a  := 10,
    v1 : vector Bool a := const a true,
    v2 : vector Bool a := v1
in v2

Check
let a  := 10,
    v1 : vector Bool a := const a true,
    v2 : vector Int  a := v1
in v2

Variable foo : (vector Bool 10) -> (vector Int 10)
Coercion foo

Check
let a  := 10,
    v1 : vector Bool a := const a true,
    v2 : vector Int  a := v1
in v2

Set pp::coercion true

Show
let a  := 10,
    v1 : vector Bool a := const a true,
    v2 : vector Int  a := v1
in v2


