MiniAgda by Andreas Abel and Karl Mehltretter --- opening "MutualRecordsNoEta.ma" --- --- scope checking --- --- type checking --- type D : -(i : Size) -> Set term D.inn : .[i : Size] -> ^(out : R i) -> < D.inn out : D i > term out : .[i : Size] -> (inn : D i) -> R i { out [i] (D.inn #out) = #out } type R : -(i : Size) -> Set term R.delay : .[i : Size] -> ^(force : .[j < i] -> D j) -> < R.delay force : R i > term force : .[i : Size] -> (delay : R i) -> .[j < i] -> D j { force [i] (R.delay #force) = #force } term inh : .[i : Size] -> R i { inh [i] .force [j < i] = D.inn (inh [j]) } type Empty : Set term elim : D # -> (D # -> Empty) -> Empty { elim (D.inn r) f = f (r .force [#]) } --- evaluating --- --- closing "MutualRecordsNoEta.ma" ---