packages feed

Agda-2.3.2.2: src/prototyping/modules/flat/test.mod

module Top where

  Nat  : Set
  zero : Nat
  suc  : Nat -> Nat
  plus : Nat -> Nat -> Nat

  module Test1 where

    module A where
      z : Nat = suc (suc zero)
    module B where
      module C where
	x : Nat = suc zero
      open C
      open A
      y : Nat = zero
    module D = B

  module Test2 where

    module Q where
      module R where
	f : Nat -> Nat = \x -> zero

    module B (n : Nat) where
      open Q.R public
      q : Nat = n

    n : Nat = B.f zero zero

    module Bz = B zero renaming (q to r)

    m : Nat = Bz.f zero

  module Test3 where
    module B (n : Nat) where
      module C (m : Nat) where
	q : Nat = m
      z : Nat = zero

    module D = B zero renaming (module C to C')
    module E = D.C' (suc zero) renaming (q to m')

    q : Nat = E.m'

  module Test4 where

    module B (n : Nat) where
      m : Nat = n

    module Z = B zero

    z : Nat = Z.m

    module C where
      f : Nat -> Nat

    module D where
      open C
      g : Nat -> Nat = f

    module Ind (P : Nat -> Set) where

      base : P zero
      step : (n : Nat) -> P n -> P (suc n)

    module Id (A : Set) where

      id : A -> A = \x -> x

      module Foo (x : A) where
	const : (B : Set) -> B -> A
	      = \B -> \b -> x

    module NatId = Id Nat

    module Q where
      module Foo' (X : Set)(x : X) = Id.Foo X x

    open NatId

    z : Nat = id zero

  module Test5 where

    f (n : Nat) : Nat = x
      where
	x : Nat = n

  module Test6 where

    module A (n : Nat) where
      x : Nat = n
      y : Nat = x

    module B (m : Nat)(p : Nat) = A (plus m p)

    module C (m : Nat) where
      z : Nat = m
      module A' (p : Nat) = A (plus p z)
      foo : Nat = A'.y zero

  module Test7 where

    f (n : Nat) : Nat = x
      where
	module A where
	  x : Nat = n
	open A public

  module Test8 where

    f (n : Nat) : Nat = x
      module f where
	x : Nat = n

    y : Nat = f.x zero

    g (n : Nat) : Nat = z n
      module g (m : Nat) where
	z : Nat = plus n m

    z : Nat = g.z zero zero