(TranslationUnit
    (SymbolTable
        1
        {
            template_commutative_m:
                (Module
                    (SymbolTable
                        2
                        {
                            alt_commutative_prop:
                                (Template
                                    (SymbolTable
                                        10
                                        {
                                            bin:
                                                (Function
                                                    (SymbolTable
                                                        11
                                                        {
                                                            bin:
                                                                (Variable
                                                                    11
                                                                    bin
                                                                    []
                                                                    ReturnVar
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Integer 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            x:
                                                                (Variable
                                                                    11
                                                                    x
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Integer 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            y:
                                                                (Variable
                                                                    11
                                                                    y
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Integer 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                )
                                                        })
                                                    bin
                                                    (FunctionType
                                                        [(Integer 4)
                                                        (Integer 4)]
                                                        (Integer 4)
                                                        Source
                                                        Implementation
                                                        ()
                                                        .true.
                                                        .true.
                                                        .false.
                                                        .false.
                                                        .false.
                                                        []
                                                        .true.
                                                    )
                                                    []
                                                    [(Var 11 x)
                                                    (Var 11 y)]
                                                    []
                                                    (Var 11 bin)
                                                    Public
                                                    .true.
                                                    .true.
                                                    ()
                                                ),
                                            commutative_p:
                                                (Function
                                                    (SymbolTable
                                                        13
                                                        {
                                                            prop:
                                                                (Variable
                                                                    13
                                                                    prop
                                                                    []
                                                                    ReturnVar
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Logical 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            x:
                                                                (Variable
                                                                    13
                                                                    x
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Integer 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            y:
                                                                (Variable
                                                                    13
                                                                    y
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Integer 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                )
                                                        })
                                                    commutative_p
                                                    (FunctionType
                                                        [(Integer 4)
                                                        (Integer 4)]
                                                        (Logical 4)
                                                        Source
                                                        Implementation
                                                        ()
                                                        .false.
                                                        .true.
                                                        .false.
                                                        .false.
                                                        .false.
                                                        []
                                                        .false.
                                                    )
                                                    [bin
                                                    equal]
                                                    [(Var 13 x)
                                                    (Var 13 y)]
                                                    [(Assignment
                                                        (Var 13 prop)
                                                        (OverloadedCompare
                                                            (FunctionCall
                                                                10 bin
                                                                ()
                                                                [((Var 13 x))
                                                                ((Var 13 y))]
                                                                (Integer 4)
                                                                ()
                                                                ()
                                                            )
                                                            Eq
                                                            (FunctionCall
                                                                10 bin
                                                                ()
                                                                [((Var 13 y))
                                                                ((Var 13 x))]
                                                                (Integer 4)
                                                                ()
                                                                ()
                                                            )
                                                            (Logical 4)
                                                            ()
                                                            (FunctionCall
                                                                10 equal
                                                                10 ~eq
                                                                [((FunctionCall
                                                                    10 bin
                                                                    ()
                                                                    [((Var 13 x))
                                                                    ((Var 13 y))]
                                                                    (Integer 4)
                                                                    ()
                                                                    ()
                                                                ))
                                                                ((FunctionCall
                                                                    10 bin
                                                                    ()
                                                                    [((Var 13 y))
                                                                    ((Var 13 x))]
                                                                    (Integer 4)
                                                                    ()
                                                                    ()
                                                                ))]
                                                                (Logical 4)
                                                                ()
                                                                ()
                                                            )
                                                        )
                                                        ()
                                                        .false.
                                                        .false.
                                                    )]
                                                    (Var 13 prop)
                                                    Public
                                                    .true.
                                                    .true.
                                                    ()
                                                ),
                                            equal:
                                                (Function
                                                    (SymbolTable
                                                        12
                                                        {
                                                            equal:
                                                                (Variable
                                                                    12
                                                                    equal
                                                                    []
                                                                    ReturnVar
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Logical 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            x:
                                                                (Variable
                                                                    12
                                                                    x
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Integer 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            y:
                                                                (Variable
                                                                    12
                                                                    y
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Integer 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                )
                                                        })
                                                    equal
                                                    (FunctionType
                                                        [(Integer 4)
                                                        (Integer 4)]
                                                        (Logical 4)
                                                        Source
                                                        Implementation
                                                        ()
                                                        .true.
                                                        .true.
                                                        .false.
                                                        .false.
                                                        .false.
                                                        []
                                                        .true.
                                                    )
                                                    []
                                                    [(Var 12 x)
                                                    (Var 12 y)]
                                                    []
                                                    (Var 12 equal)
                                                    Public
                                                    .true.
                                                    .true.
                                                    ()
                                                ),
                                            integer:
                                                (Variable
                                                    10
                                                    integer
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            ~eq:
                                                (CustomOperator
                                                    10
                                                    ~eq
                                                    [10 equal]
                                                    Public
                                                )
                                        })
                                    alt_commutative_prop
                                    [bin
                                    equal]
                                    [(Require
                                        magma_r
                                        [integer
                                        bin
                                        equal]
                                    )]
                                ),
                            commutative_prop:
                                (Template
                                    (SymbolTable
                                        6
                                        {
                                            bin:
                                                (Function
                                                    (SymbolTable
                                                        7
                                                        {
                                                            bin:
                                                                (Variable
                                                                    7
                                                                    bin
                                                                    []
                                                                    ReturnVar
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            x:
                                                                (Variable
                                                                    7
                                                                    x
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            y:
                                                                (Variable
                                                                    7
                                                                    y
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                )
                                                        })
                                                    bin
                                                    (FunctionType
                                                        [(TypeParameter
                                                            t
                                                        )
                                                        (TypeParameter
                                                            t
                                                        )]
                                                        (TypeParameter
                                                            t
                                                        )
                                                        Source
                                                        Implementation
                                                        ()
                                                        .true.
                                                        .true.
                                                        .false.
                                                        .false.
                                                        .false.
                                                        []
                                                        .true.
                                                    )
                                                    []
                                                    [(Var 7 x)
                                                    (Var 7 y)]
                                                    []
                                                    (Var 7 bin)
                                                    Public
                                                    .true.
                                                    .true.
                                                    ()
                                                ),
                                            commutative_p:
                                                (Function
                                                    (SymbolTable
                                                        9
                                                        {
                                                            prop:
                                                                (Variable
                                                                    9
                                                                    prop
                                                                    []
                                                                    ReturnVar
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Logical 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            x:
                                                                (Variable
                                                                    9
                                                                    x
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            y:
                                                                (Variable
                                                                    9
                                                                    y
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                )
                                                        })
                                                    commutative_p
                                                    (FunctionType
                                                        [(TypeParameter
                                                            t
                                                        )
                                                        (TypeParameter
                                                            t
                                                        )]
                                                        (Logical 4)
                                                        Source
                                                        Implementation
                                                        ()
                                                        .false.
                                                        .true.
                                                        .false.
                                                        .false.
                                                        .false.
                                                        []
                                                        .false.
                                                    )
                                                    [bin
                                                    equal]
                                                    [(Var 9 x)
                                                    (Var 9 y)]
                                                    [(Assignment
                                                        (Var 9 prop)
                                                        (OverloadedCompare
                                                            (FunctionCall
                                                                6 bin
                                                                ()
                                                                [((Var 9 x))
                                                                ((Var 9 y))]
                                                                (TypeParameter
                                                                    t
                                                                )
                                                                ()
                                                                ()
                                                            )
                                                            Eq
                                                            (FunctionCall
                                                                6 bin
                                                                ()
                                                                [((Var 9 y))
                                                                ((Var 9 x))]
                                                                (TypeParameter
                                                                    t
                                                                )
                                                                ()
                                                                ()
                                                            )
                                                            (Logical 4)
                                                            ()
                                                            (FunctionCall
                                                                6 equal
                                                                6 ~eq
                                                                [((FunctionCall
                                                                    6 bin
                                                                    ()
                                                                    [((Var 9 x))
                                                                    ((Var 9 y))]
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    ()
                                                                ))
                                                                ((FunctionCall
                                                                    6 bin
                                                                    ()
                                                                    [((Var 9 y))
                                                                    ((Var 9 x))]
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    ()
                                                                ))]
                                                                (Logical 4)
                                                                ()
                                                                ()
                                                            )
                                                        )
                                                        ()
                                                        .false.
                                                        .false.
                                                    )]
                                                    (Var 9 prop)
                                                    Public
                                                    .true.
                                                    .true.
                                                    ()
                                                ),
                                            equal:
                                                (Function
                                                    (SymbolTable
                                                        8
                                                        {
                                                            equal:
                                                                (Variable
                                                                    8
                                                                    equal
                                                                    []
                                                                    ReturnVar
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Logical 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            x:
                                                                (Variable
                                                                    8
                                                                    x
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            y:
                                                                (Variable
                                                                    8
                                                                    y
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                )
                                                        })
                                                    equal
                                                    (FunctionType
                                                        [(TypeParameter
                                                            t
                                                        )
                                                        (TypeParameter
                                                            t
                                                        )]
                                                        (Logical 4)
                                                        Source
                                                        Implementation
                                                        ()
                                                        .true.
                                                        .true.
                                                        .false.
                                                        .false.
                                                        .false.
                                                        []
                                                        .true.
                                                    )
                                                    []
                                                    [(Var 8 x)
                                                    (Var 8 y)]
                                                    []
                                                    (Var 8 equal)
                                                    Public
                                                    .true.
                                                    .true.
                                                    ()
                                                ),
                                            t:
                                                (Variable
                                                    6
                                                    t
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (TypeParameter
                                                        t
                                                    )
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            ~eq:
                                                (CustomOperator
                                                    6
                                                    ~eq
                                                    [6 equal]
                                                    Public
                                                )
                                        })
                                    commutative_prop
                                    [t
                                    bin
                                    equal]
                                    [(Require
                                        magma_r
                                        [t
                                        bin
                                        equal]
                                    )]
                                ),
                            magma_r:
                                (Requirement
                                    (SymbolTable
                                        3
                                        {
                                            bin:
                                                (Function
                                                    (SymbolTable
                                                        4
                                                        {
                                                            bin:
                                                                (Variable
                                                                    4
                                                                    bin
                                                                    []
                                                                    ReturnVar
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            x:
                                                                (Variable
                                                                    4
                                                                    x
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            y:
                                                                (Variable
                                                                    4
                                                                    y
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                )
                                                        })
                                                    bin
                                                    (FunctionType
                                                        [(TypeParameter
                                                            t
                                                        )
                                                        (TypeParameter
                                                            t
                                                        )]
                                                        (TypeParameter
                                                            t
                                                        )
                                                        Source
                                                        Implementation
                                                        ()
                                                        .true.
                                                        .true.
                                                        .false.
                                                        .false.
                                                        .false.
                                                        []
                                                        .true.
                                                    )
                                                    []
                                                    [(Var 4 x)
                                                    (Var 4 y)]
                                                    []
                                                    (Var 4 bin)
                                                    Public
                                                    .true.
                                                    .true.
                                                    ()
                                                ),
                                            equal:
                                                (Function
                                                    (SymbolTable
                                                        5
                                                        {
                                                            equal:
                                                                (Variable
                                                                    5
                                                                    equal
                                                                    []
                                                                    ReturnVar
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (Logical 4)
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            x:
                                                                (Variable
                                                                    5
                                                                    x
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                ),
                                                            y:
                                                                (Variable
                                                                    5
                                                                    y
                                                                    []
                                                                    In
                                                                    ()
                                                                    ()
                                                                    Default
                                                                    (TypeParameter
                                                                        t
                                                                    )
                                                                    ()
                                                                    Source
                                                                    Public
                                                                    Required
                                                                    .false.
                                                                    .false.
                                                                    .false.
                                                                    ()
                                                                    .false.
                                                                    .false.
                                                                    NotMethod
                                                                    ()
                                                                    []
                                                                )
                                                        })
                                                    equal
                                                    (FunctionType
                                                        [(TypeParameter
                                                            t
                                                        )
                                                        (TypeParameter
                                                            t
                                                        )]
                                                        (Logical 4)
                                                        Source
                                                        Implementation
                                                        ()
                                                        .true.
                                                        .true.
                                                        .false.
                                                        .false.
                                                        .false.
                                                        []
                                                        .true.
                                                    )
                                                    []
                                                    [(Var 5 x)
                                                    (Var 5 y)]
                                                    []
                                                    (Var 5 equal)
                                                    Public
                                                    .true.
                                                    .true.
                                                    ()
                                                ),
                                            t:
                                                (Variable
                                                    3
                                                    t
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (TypeParameter
                                                        t
                                                    )
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    magma_r
                                    [t
                                    bin
                                    equal]
                                    []
                                )
                        })
                    template_commutative_m
                    ()
                    [template_commutative_m]
                    .false.
                    .false.
                    .false.
                ),
            test_template_commutative_p:
                (Program
                    (SymbolTable
                        14
                        {
                            alt_commutative_prop:
                                (ExternalSymbol
                                    14
                                    alt_commutative_prop
                                    2 alt_commutative_prop
                                    template_commutative_m
                                    []
                                    alt_commutative_prop
                                    Public
                                ),
                            commutative_prop:
                                (ExternalSymbol
                                    14
                                    commutative_prop
                                    2 commutative_prop
                                    template_commutative_m
                                    []
                                    commutative_prop
                                    Public
                                ),
                            int_minus_comm:
                                (Function
                                    (SymbolTable
                                        21
                                        {
                                            prop:
                                                (Variable
                                                    21
                                                    prop
                                                    []
                                                    ReturnVar
                                                    ()
                                                    ()
                                                    Default
                                                    (Logical 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            x:
                                                (Variable
                                                    21
                                                    x
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            y:
                                                (Variable
                                                    21
                                                    y
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    int_minus_comm
                                    (FunctionType
                                        [(Integer 4)
                                        (Integer 4)]
                                        (Logical 4)
                                        Source
                                        Implementation
                                        ()
                                        .false.
                                        .true.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .false.
                                    )
                                    [~sub_intrinsic
                                    ~eq_intrinsic]
                                    [(Var 21 x)
                                    (Var 21 y)]
                                    [(Assignment
                                        (Var 21 prop)
                                        (OverloadedCompare
                                            (FunctionCall
                                                14 ~sub_intrinsic
                                                ()
                                                [((Var 21 x))
                                                ((Var 21 y))]
                                                (Integer 4)
                                                ()
                                                ()
                                            )
                                            Eq
                                            (FunctionCall
                                                14 ~sub_intrinsic
                                                ()
                                                [((Var 21 y))
                                                ((Var 21 x))]
                                                (Integer 4)
                                                ()
                                                ()
                                            )
                                            (Logical 4)
                                            ()
                                            (FunctionCall
                                                14 ~eq_intrinsic
                                                6 ~eq
                                                [((FunctionCall
                                                    14 ~sub_intrinsic
                                                    ()
                                                    [((Var 21 x))
                                                    ((Var 21 y))]
                                                    (Integer 4)
                                                    ()
                                                    ()
                                                ))
                                                ((FunctionCall
                                                    14 ~sub_intrinsic
                                                    ()
                                                    [((Var 21 y))
                                                    ((Var 21 x))]
                                                    (Integer 4)
                                                    ()
                                                    ()
                                                ))]
                                                (Logical 4)
                                                ()
                                                ()
                                            )
                                        )
                                        ()
                                        .false.
                                        .false.
                                    )]
                                    (Var 21 prop)
                                    Public
                                    .true.
                                    .true.
                                    ()
                                ),
                            int_plus_comm:
                                (Function
                                    (SymbolTable
                                        18
                                        {
                                            prop:
                                                (Variable
                                                    18
                                                    prop
                                                    []
                                                    ReturnVar
                                                    ()
                                                    ()
                                                    Default
                                                    (Logical 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            x:
                                                (Variable
                                                    18
                                                    x
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            y:
                                                (Variable
                                                    18
                                                    y
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    int_plus_comm
                                    (FunctionType
                                        [(Integer 4)
                                        (Integer 4)]
                                        (Logical 4)
                                        Source
                                        Implementation
                                        ()
                                        .false.
                                        .true.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .false.
                                    )
                                    [~add_intrinsic
                                    ~eq_intrinsic]
                                    [(Var 18 x)
                                    (Var 18 y)]
                                    [(Assignment
                                        (Var 18 prop)
                                        (OverloadedCompare
                                            (FunctionCall
                                                14 ~add_intrinsic
                                                ()
                                                [((Var 18 x))
                                                ((Var 18 y))]
                                                (Integer 4)
                                                ()
                                                ()
                                            )
                                            Eq
                                            (FunctionCall
                                                14 ~add_intrinsic
                                                ()
                                                [((Var 18 y))
                                                ((Var 18 x))]
                                                (Integer 4)
                                                ()
                                                ()
                                            )
                                            (Logical 4)
                                            ()
                                            (FunctionCall
                                                14 ~eq_intrinsic
                                                6 ~eq
                                                [((FunctionCall
                                                    14 ~add_intrinsic
                                                    ()
                                                    [((Var 18 x))
                                                    ((Var 18 y))]
                                                    (Integer 4)
                                                    ()
                                                    ()
                                                ))
                                                ((FunctionCall
                                                    14 ~add_intrinsic
                                                    ()
                                                    [((Var 18 y))
                                                    ((Var 18 x))]
                                                    (Integer 4)
                                                    ()
                                                    ()
                                                ))]
                                                (Logical 4)
                                                ()
                                                ()
                                            )
                                        )
                                        ()
                                        .false.
                                        .false.
                                    )]
                                    (Var 18 prop)
                                    Public
                                    .true.
                                    .true.
                                    ()
                                ),
                            magma_r:
                                (ExternalSymbol
                                    14
                                    magma_r
                                    2 magma_r
                                    template_commutative_m
                                    []
                                    magma_r
                                    Public
                                ),
                            minus_comm:
                                (Function
                                    (SymbolTable
                                        20
                                        {
                                            prop:
                                                (Variable
                                                    20
                                                    prop
                                                    []
                                                    ReturnVar
                                                    ()
                                                    ()
                                                    Default
                                                    (Logical 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            x:
                                                (Variable
                                                    20
                                                    x
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            y:
                                                (Variable
                                                    20
                                                    y
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    minus_comm
                                    (FunctionType
                                        [(Integer 4)
                                        (Integer 4)]
                                        (Logical 4)
                                        Source
                                        Implementation
                                        ()
                                        .false.
                                        .true.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .false.
                                    )
                                    [~sub_intrinsic
                                    ~eq_intrinsic]
                                    [(Var 20 x)
                                    (Var 20 y)]
                                    [(Assignment
                                        (Var 20 prop)
                                        (OverloadedCompare
                                            (FunctionCall
                                                14 ~sub_intrinsic
                                                ()
                                                [((Var 20 x))
                                                ((Var 20 y))]
                                                (Integer 4)
                                                ()
                                                ()
                                            )
                                            Eq
                                            (FunctionCall
                                                14 ~sub_intrinsic
                                                ()
                                                [((Var 20 y))
                                                ((Var 20 x))]
                                                (Integer 4)
                                                ()
                                                ()
                                            )
                                            (Logical 4)
                                            ()
                                            (FunctionCall
                                                14 ~eq_intrinsic
                                                10 ~eq
                                                [((FunctionCall
                                                    14 ~sub_intrinsic
                                                    ()
                                                    [((Var 20 x))
                                                    ((Var 20 y))]
                                                    (Integer 4)
                                                    ()
                                                    ()
                                                ))
                                                ((FunctionCall
                                                    14 ~sub_intrinsic
                                                    ()
                                                    [((Var 20 y))
                                                    ((Var 20 x))]
                                                    (Integer 4)
                                                    ()
                                                    ()
                                                ))]
                                                (Logical 4)
                                                ()
                                                ()
                                            )
                                        )
                                        ()
                                        .false.
                                        .false.
                                    )]
                                    (Var 20 prop)
                                    Public
                                    .true.
                                    .true.
                                    ()
                                ),
                            plus_comm:
                                (Function
                                    (SymbolTable
                                        17
                                        {
                                            prop:
                                                (Variable
                                                    17
                                                    prop
                                                    []
                                                    ReturnVar
                                                    ()
                                                    ()
                                                    Default
                                                    (Logical 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            x:
                                                (Variable
                                                    17
                                                    x
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            y:
                                                (Variable
                                                    17
                                                    y
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    plus_comm
                                    (FunctionType
                                        [(Integer 4)
                                        (Integer 4)]
                                        (Logical 4)
                                        Source
                                        Implementation
                                        ()
                                        .false.
                                        .true.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .false.
                                    )
                                    [~add_intrinsic
                                    ~eq_intrinsic]
                                    [(Var 17 x)
                                    (Var 17 y)]
                                    [(Assignment
                                        (Var 17 prop)
                                        (OverloadedCompare
                                            (FunctionCall
                                                14 ~add_intrinsic
                                                ()
                                                [((Var 17 x))
                                                ((Var 17 y))]
                                                (Integer 4)
                                                ()
                                                ()
                                            )
                                            Eq
                                            (FunctionCall
                                                14 ~add_intrinsic
                                                ()
                                                [((Var 17 y))
                                                ((Var 17 x))]
                                                (Integer 4)
                                                ()
                                                ()
                                            )
                                            (Logical 4)
                                            ()
                                            (FunctionCall
                                                14 ~eq_intrinsic
                                                10 ~eq
                                                [((FunctionCall
                                                    14 ~add_intrinsic
                                                    ()
                                                    [((Var 17 x))
                                                    ((Var 17 y))]
                                                    (Integer 4)
                                                    ()
                                                    ()
                                                ))
                                                ((FunctionCall
                                                    14 ~add_intrinsic
                                                    ()
                                                    [((Var 17 y))
                                                    ((Var 17 x))]
                                                    (Integer 4)
                                                    ()
                                                    ()
                                                ))]
                                                (Logical 4)
                                                ()
                                                ()
                                            )
                                        )
                                        ()
                                        .false.
                                        .false.
                                    )]
                                    (Var 17 prop)
                                    Public
                                    .true.
                                    .true.
                                    ()
                                ),
                            ~add:
                                (CustomOperator
                                    14
                                    ~add
                                    [14 ~add_intrinsic]
                                    Public
                                ),
                            ~add_intrinsic:
                                (Function
                                    (SymbolTable
                                        15
                                        {
                                            arg0:
                                                (Variable
                                                    15
                                                    arg0
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            arg1:
                                                (Variable
                                                    15
                                                    arg1
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            ret:
                                                (Variable
                                                    15
                                                    ret
                                                    []
                                                    ReturnVar
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    ~add_intrinsic
                                    (FunctionType
                                        [(Integer 4)
                                        (Integer 4)]
                                        (Integer 4)
                                        Source
                                        Implementation
                                        ()
                                        .true.
                                        .true.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .true.
                                    )
                                    []
                                    [(Var 15 arg0)
                                    (Var 15 arg1)]
                                    [(Assignment
                                        (Var 15 ret)
                                        (IntegerBinOp
                                            (Var 15 arg0)
                                            Add
                                            (Var 15 arg1)
                                            (Integer 4)
                                            ()
                                        )
                                        ()
                                        .false.
                                        .false.
                                    )]
                                    (Var 15 ret)
                                    Public
                                    .true.
                                    .true.
                                    ()
                                ),
                            ~eq:
                                (CustomOperator
                                    14
                                    ~eq
                                    [14 ~eq_intrinsic]
                                    Public
                                ),
                            ~eq_intrinsic:
                                (Function
                                    (SymbolTable
                                        16
                                        {
                                            arg0:
                                                (Variable
                                                    16
                                                    arg0
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            arg1:
                                                (Variable
                                                    16
                                                    arg1
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            ret:
                                                (Variable
                                                    16
                                                    ret
                                                    []
                                                    ReturnVar
                                                    ()
                                                    ()
                                                    Default
                                                    (Logical 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    ~eq_intrinsic
                                    (FunctionType
                                        [(Integer 4)
                                        (Integer 4)]
                                        (Logical 4)
                                        Source
                                        Implementation
                                        ()
                                        .true.
                                        .true.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .true.
                                    )
                                    []
                                    [(Var 16 arg0)
                                    (Var 16 arg1)]
                                    [(Assignment
                                        (Var 16 ret)
                                        (IntegerCompare
                                            (Var 16 arg0)
                                            Eq
                                            (Var 16 arg1)
                                            (Logical 4)
                                            ()
                                        )
                                        ()
                                        .false.
                                        .false.
                                    )]
                                    (Var 16 ret)
                                    Public
                                    .true.
                                    .true.
                                    ()
                                ),
                            ~sub:
                                (CustomOperator
                                    14
                                    ~sub
                                    [14 ~sub_intrinsic]
                                    Public
                                ),
                            ~sub_intrinsic:
                                (Function
                                    (SymbolTable
                                        19
                                        {
                                            arg0:
                                                (Variable
                                                    19
                                                    arg0
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            arg1:
                                                (Variable
                                                    19
                                                    arg1
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            ret:
                                                (Variable
                                                    19
                                                    ret
                                                    []
                                                    ReturnVar
                                                    ()
                                                    ()
                                                    Default
                                                    (Integer 4)
                                                    ()
                                                    Source
                                                    Private
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    ~sub_intrinsic
                                    (FunctionType
                                        [(Integer 4)
                                        (Integer 4)]
                                        (Integer 4)
                                        Source
                                        Implementation
                                        ()
                                        .true.
                                        .true.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .true.
                                    )
                                    []
                                    [(Var 19 arg0)
                                    (Var 19 arg1)]
                                    [(Assignment
                                        (Var 19 ret)
                                        (IntegerBinOp
                                            (Var 19 arg0)
                                            Sub
                                            (Var 19 arg1)
                                            (Integer 4)
                                            ()
                                        )
                                        ()
                                        .false.
                                        .false.
                                    )]
                                    (Var 19 ret)
                                    Public
                                    .true.
                                    .true.
                                    ()
                                )
                        })
                    test_template_commutative_p
                    [template_commutative_m]
                    [(Print
                        (StringConstant
                            "test commutative"
                            (String 1 (IntegerConstant 16 (Integer 4) Decimal) ExpressionLength DescriptorString)
                        )
                    )
                    (Print
                        (StringFormat
                            ()
                            [(StringConstant
                                "plus_comm: "
                                (String 1 (IntegerConstant 11 (Integer 4) Decimal) ExpressionLength DescriptorString)
                            )
                            (FunctionCall
                                14 plus_comm
                                ()
                                [((IntegerConstant 3 (Integer 4) Decimal))
                                ((IntegerConstant 4 (Integer 4) Decimal))]
                                (Logical 4)
                                ()
                                ()
                            )]
                            FormatFortran
                            (Allocatable
                                (String 1 () DeferredLength DescriptorString)
                            )
                            ()
                        )
                    )
                    (Print
                        (StringFormat
                            ()
                            [(StringConstant
                                "int_plus_comm: "
                                (String 1 (IntegerConstant 15 (Integer 4) Decimal) ExpressionLength DescriptorString)
                            )
                            (FunctionCall
                                14 int_plus_comm
                                ()
                                [((IntegerConstant 3 (Integer 4) Decimal))
                                ((IntegerConstant 4 (Integer 4) Decimal))]
                                (Logical 4)
                                ()
                                ()
                            )]
                            FormatFortran
                            (Allocatable
                                (String 1 () DeferredLength DescriptorString)
                            )
                            ()
                        )
                    )
                    (Print
                        (StringFormat
                            ()
                            [(StringConstant
                                "minus_comm: "
                                (String 1 (IntegerConstant 12 (Integer 4) Decimal) ExpressionLength DescriptorString)
                            )
                            (FunctionCall
                                14 minus_comm
                                ()
                                [((IntegerConstant 3 (Integer 4) Decimal))
                                ((IntegerConstant 4 (Integer 4) Decimal))]
                                (Logical 4)
                                ()
                                ()
                            )]
                            FormatFortran
                            (Allocatable
                                (String 1 () DeferredLength DescriptorString)
                            )
                            ()
                        )
                    )
                    (Print
                        (StringFormat
                            ()
                            [(StringConstant
                                "int_minus_comm: "
                                (String 1 (IntegerConstant 16 (Integer 4) Decimal) ExpressionLength DescriptorString)
                            )
                            (FunctionCall
                                14 int_minus_comm
                                ()
                                [((IntegerConstant 3 (Integer 4) Decimal))
                                ((IntegerConstant 4 (Integer 4) Decimal))]
                                (Logical 4)
                                ()
                                ()
                            )]
                            FormatFortran
                            (Allocatable
                                (String 1 () DeferredLength DescriptorString)
                            )
                            ()
                        )
                    )]
                )
        })
    []
)
