?=?: function
    with parameters
      pointer to signed int 
      signed int 
    returning 
      signed int 

?=?: function
    with parameters
      pointer to float 
      float 
    returning 
      float 

?=?: function
    with parameters
      pointer to pointer to signed int 
      pointer to signed int 
    returning 
      pointer to signed int 

?=?: function
    with parameters
      pointer to pointer to float 
      pointer to float 
    returning 
      pointer to float 

?=?: function
    with parameters
      pointer to char 
      char 
    returning 
      char 

?=?: function
    with parameters
      pointer to pointer to function
          returning 
            nothing 

      pointer to function
          returning 
            nothing 

    returning 
      pointer to function
          returning 
            nothing 


g1: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of f: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
            returning 
              instance of type T (not function type) 

        Declaration of f: function
            with parameters
              signed int 
            returning 
              nothing 

        Declaration of h: function
            with parameters
              p: pointer to function
                  returning 
                    nothing 

            returning 
              nothing 

        Declaration of x: signed int 
        Declaration of y: pointer to function
            returning 
              nothing 

        Declaration of z: char 
        Declaration of w: float 
                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Name: x

                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Name: y

                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Name: z

                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Name: w

                  Expression Statement:
            Applying untyped: 
                Name: h
            ...to: 
                Applying untyped: 
                    Name: f
                ...to: 
                    Name: y


g2: function
      accepting unspecified arguments
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of f: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


            function
            with parameters
              instance of type T (not function type) 
              instance of type T (not function type) 
            returning 
              nothing 

        Declaration of f: forall
              T: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type T (not function type) 
                        instance of type T (not function type) 
                      returning 
                        instance of type T (not function type) 


              U: type
                with assertions
                  ?=?: pointer to function
                      with parameters
                        pointer to instance of type U (not function type) 
                        instance of type U (not function type) 
                      returning 
                        instance of type U (not function type) 


            function
            with parameters
              instance of type T (not function type) 
              instance of type U (not function type) 
            returning 
              nothing 

        Declaration of x: signed int 
        Declaration of y: float 
        Declaration of z: pointer to signed int 
        Declaration of w: pointer to float 
                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Name: x
                Name: y

                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Name: z
                Name: w

                  Expression Statement:
            Applying untyped: 
                Name: f
            ...to: 
                Name: x
                Name: z


swap: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      left: instance of type T (not function type) 
      right: instance of type T (not function type) 
    returning 
      nothing 
    with body 
      CompoundStmt
        Declaration of temp: instance of type T (not function type) with initializer 
          Simple Initializer:             Name: left

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: temp
                Name: left

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: left
                Name: right

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: right
                Name: temp


context sumable
    with parameters
      T: type

    with members
      0: const instance of type T (not function type) 
      ?+?: function
          with parameters
            instance of type T (not function type) 
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

      ?++: function
          with parameters
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 

      ?+=?: function
          with parameters
            instance of type T (not function type) 
            instance of type T (not function type) 
          returning 
            instance of type T (not function type) 


T1: type
  with assertions
    0: const instance of type T1 (not function type) 
    ?+?: function
        with parameters
          instance of type T1 (not function type) 
          instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

    ?++: function
        with parameters
          instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 

    ?+=?: function
        with parameters
          instance of type T1 (not function type) 
          instance of type T1 (not function type) 
        returning 
          instance of type T1 (not function type) 


?=?: automatically generated function
    with parameters
      _dst: pointer to instance of type T1 (not function type) 
      _src: instance of type T1 (not function type) 
    returning 
      instance of type T1 (not function type) 

T2: type
  with parameters
    P1: type
    P2: type

?=?: automatically generated function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 

T3: type
  with assertions
    instance of context sumable 
      with parameters
        instance of type T3 (not function type) 


?=?: automatically generated function
    with parameters
      _dst: pointer to instance of type T3 (not function type) 
      _src: instance of type T3 (not function type) 
    returning 
      instance of type T3 (not function type) 

struct __anonymous0
    with members
      i: instance of type P1 (not function type) 
      j: instance of type P2 (not function type) 

?=?: automatically generated inline static function
    with parameters
      _dst: pointer to instance of struct __anonymous0 
      _src: instance of struct __anonymous0 
    returning 
      instance of struct __anonymous0 
    with body 
      CompoundStmt
                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    i: instance of type P1 (not function type) 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
                Member Expression, with field: 
                  i: instance of type P1 (not function type) 
                from aggregate: 
                  Variable Expression: _src: instance of struct __anonymous0 

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Member Expression, with field: 
                    j: instance of type P2 (not function type) 
                  from aggregate: 
                    Applying untyped: 
                        Name: *?
                    ...to: 
                        Variable Expression: _dst: pointer to instance of struct __anonymous0 
                Member Expression, with field: 
                  j: instance of type P2 (not function type) 
                from aggregate: 
                  Variable Expression: _src: instance of struct __anonymous0 

                  Return Statement, returning: Variable Expression: _src: instance of struct __anonymous0 



T2: type for instance of struct __anonymous0 
  with parameters
    P1: type
    P2: type

  with assertions
    instance of context sumable 
      with parameters
        instance of type T2 (not function type) 
          with parameters
            instance of type P1 (not function type) 
            instance of type P2 (not function type) 



?=?: automatically generated function
    with parameters
      _dst: pointer to instance of type T2 (not function type) 
      _src: instance of type T2 (not function type) 
    returning 
      instance of type T2 (not function type) 
    with body 
      CompoundStmt
                  Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type T2 (not function type) 

    to:
      pointer to instance of struct __anonymous0 
    Cast of:
      Variable Expression: _src: instance of type T2 (not function type) 

    to:
      instance of struct __anonymous0 



w1: instance of type T2 (not function type) 
  with parameters
    signed int 
    signed int 

g2: instance of type T2 (not function type) 
  with parameters
    signed int 
    signed int 

w3: type for instance of type T2 (not function type) 
  with parameters
    signed int 
    signed int 

?=?: automatically generated function
    with parameters
      _dst: pointer to instance of type w3 (not function type) 
      _src: instance of type w3 (not function type) 
    returning 
      instance of type w3 (not function type) 
    with body 
      CompoundStmt
                  Return Statement, returning: Applying untyped: 
    Name: ?=?
...to: 
    Cast of:
      Variable Expression: _dst: pointer to instance of type w3 (not function type) 

    to:
      pointer to instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 

    Cast of:
      Variable Expression: _src: instance of type w3 (not function type) 

    to:
      instance of type T2 (not function type) 
        with parameters
          signed int 
          signed int 




g3: instance of type w3 (not function type) 
sum: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          0: const instance of type T (not function type) 
          ?+?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?++: pointer to function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?+=?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      n: signed int 
      a: pointer to instance of type T (not function type) 
    returning 
      instance of type T (not function type) 
    with body 
      CompoundStmt
        Declaration of total: instance of type T (not function type) with initializer 
          Simple Initializer:             Name: 0

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: total
                Name: 0

        Declaration of i: signed int 
                  Labels: {}
          For Statement
            initialization: 
              Expression Statement:
                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Name: i
                    Name: 0

            condition: 
              Cast of:
                Applying untyped: 
                    Name: ?!=?
                ...to: 
                    Applying untyped: 
                        Name: ?<?
                    ...to: 
                        Name: i
                        Name: n
                    Name: 0

              to:
                signed int 

            increment: 
              Applying untyped: 
                  Name: ?+=?
              ...to: 
                  Address of:
                    Name: i
                  Name: 1

            statement block: 
              Expression Statement:
                Applying untyped: 
                    Name: ?=?
                ...to: 
                    Address of:
                      Name: total
                    Applying untyped: 
                        Name: ?+?
                    ...to: 
                        Name: total
                        Applying untyped: 
                            Name: ?[?]
                        ...to: 
                            Name: a
                            Name: i


                  Return Statement, returning: Name: total



twice: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          0: const instance of type T (not function type) 
          ?+?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?++: pointer to function
              with parameters
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          ?+=?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 


    function
    with parameters
      t: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 
    with body 
      CompoundStmt
                  Return Statement, returning: Applying untyped: 
    Name: ?+?
...to: 
    Name: t
    Name: t



min: forall
      T: type
        with assertions
          ?=?: pointer to function
              with parameters
                pointer to instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                instance of type T (not function type) 

          0: const instance of type T (not function type) 
          ?!=?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                signed int 

          ?<?: pointer to function
              with parameters
                instance of type T (not function type) 
                instance of type T (not function type) 
              returning 
                signed int 


    function
    with parameters
      t1: instance of type T (not function type) 
      t2: instance of type T (not function type) 
    returning 
      instance of type T (not function type) 
    with body 
      CompoundStmt
                  Return Statement, returning: Conditional expression on: 
  Cast of:
    Applying untyped: 
        Name: ?!=?
    ...to: 
        Applying untyped: 
            Name: ?<?
        ...to: 
            Name: t1
            Name: t2
        Name: 0

  to:
    signed int 
First alternative:
  Name: t1
Second alternative:
  Name: t2




main: C function
      accepting unspecified arguments
    returning 
      signed int 
    with body 
      CompoundStmt
        Declaration of x: signed int with initializer 
          Simple Initializer:             Name: 1

        Declaration of y: signed int with initializer 
          Simple Initializer: constant expression 2 signed int 
        Declaration of a: array of signed int with dimension of constant expression 10 signed int 
        Declaration of f: float 
                  Expression Statement:
            Applying untyped: 
                Name: swap
            ...to: 
                Name: x
                Name: y

                  Expression Statement:
            Applying untyped: 
                Name: twice
            ...to: 
                Name: x

                  Expression Statement:
            Applying untyped: 
                Name: ?=?
            ...to: 
                Address of:
                  Name: f
                Applying untyped: 
                    Name: min
                ...to: 
constant expression 4.0 double constant expression 3.0 double 
                  Expression Statement:
            Applying untyped: 
                Name: sum
            ...to: 
constant expression 10 signed int                 Name: a


