 }
 
 /// Represents a clause in a pattern.
-struct Clause {
-  let patterns: [Pattern]
-  let body: Body
+public struct DeclaredClause {
+  public let patterns: [DeclaredPattern]
+  public let body: Body
 
   /// Represents the body of a clause.
-  enum Body {
+  public enum Body {
     /// A function clause may have an empty body if a clause introduces an
     /// absurd pattern.
     case empty



/// Expressions - well-scoped but not necessarily well-formed.
public indirect enum Expr: Equatable {
  /// An application of a head to a body of eliminators.
  ///
  /// The head may by a local variable or a definition while the eliminators

  ///
  /// The signature of the function is not immediately available, but may be
  /// acquired by querying the context with the qualified name.
  case function(QualifiedName, [DeclaredClause])
  /// The body of a data declaration.
  ///
  /// E.g. this portion of the standard definition of
