TSTP Solution File: SWW475+5 by Bliksem---1.12

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Bliksem---1.12
% Problem  : SWW475+5 : TPTP v8.1.0. Released v5.3.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : bliksem %s

% Computer : n023.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8042.1875MB
% OS       : Linux 3.10.0-693.el7.x86_64
% CPULimit : 300s
% WCLimit  : 0s
% DateTime : Wed Jul 20 23:22:21 EDT 2022

% Result   : Timeout 300.03s 300.44s
% Output   : None 
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----No solution output by system
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.08/0.14  % Problem  : SWW475+5 : TPTP v8.1.0. Released v5.3.0.
% 0.08/0.15  % Command  : bliksem %s
% 0.15/0.37  % Computer : n023.cluster.edu
% 0.15/0.37  % Model    : x86_64 x86_64
% 0.15/0.37  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.15/0.37  % Memory   : 8042.1875MB
% 0.15/0.37  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.15/0.37  % CPULimit : 300
% 0.15/0.37  % DateTime : Mon Jun  6 01:47:39 EDT 2022
% 0.15/0.37  % CPUTime  : 
% 1.41/2.19  *** allocated 10000 integers for termspace/termends
% 1.41/2.19  *** allocated 10000 integers for clauses
% 1.41/2.19  *** allocated 10000 integers for justifications
% 1.41/2.19  *** allocated 15000 integers for termspace/termends
% 1.41/2.19  *** allocated 22500 integers for termspace/termends
% 1.41/2.19  *** allocated 33750 integers for termspace/termends
% 1.41/2.19  *** allocated 50625 integers for termspace/termends
% 1.41/2.19  *** allocated 75937 integers for termspace/termends
% 1.41/2.19  Bliksem 1.12
% 1.41/2.19  
% 1.41/2.19  
% 1.41/2.19  Automatic Strategy Selection
% 1.41/2.19  
% 1.41/2.19  *** allocated 113905 integers for termspace/termends
% 1.41/2.19  *** allocated 170857 integers for termspace/termends
% 1.41/2.19  
% 1.41/2.19  Clauses:
% 1.41/2.19  
% 1.41/2.19  { ti( fun( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.19    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.19    , fun( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.19    list( char ), list( char ) ), option( val ) ) ) ) ), bool ) ), hconf( 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) = hconf( 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) }.
% 1.41/2.19  { ti( fun( exp( X ), fun( list( char ), fun( list( exp( X ) ), exp( X ) ) )
% 1.41/2.19     ), call( X ) ) = call( X ) }.
% 1.41/2.19  { ti( fun( list( char ), fun( exp( X ), exp( X ) ) ), cast( X ) ) = cast( X
% 1.41/2.19     ) }.
% 1.41/2.19  { ti( fun( exp( X ), fun( list( char ), fun( list( char ), exp( X ) ) ) ), 
% 1.41/2.19    fAcc( X ) ) = fAcc( X ) }.
% 1.41/2.19  { ti( fun( exp( X ), fun( list( char ), fun( X, fun( exp( X ), exp( X ) ) )
% 1.41/2.19     ) ), tryCatch( X ) ) = tryCatch( X ) }.
% 1.41/2.19  { val_1( X, ti( val, Y ) ) = val_1( X, Y ) }.
% 1.41/2.19  { ti( exp( X ), val_1( X, Y ) ) = val_1( X, Y ) }.
% 1.41/2.19  { throw( X, ti( exp( X ), Y ) ) = throw( X, Y ) }.
% 1.41/2.19  { ti( exp( X ), throw( X, Y ) ) = throw( X, Y ) }.
% 1.41/2.19  { ti( X, undefined( X ) ) = undefined( X ) }.
% 1.41/2.19  { ti( fun( exp( list( char ) ), fun( list( exp( list( char ) ) ), list( exp
% 1.41/2.19    ( list( char ) ) ) ) ), cons( exp( list( char ) ) ) ) = cons( exp( list( 
% 1.41/2.19    char ) ) ) }.
% 1.41/2.19  { ti( fun( fun( X, option( Y ) ), fun( fun( X, option( Y ) ), fun( X, 
% 1.41/2.19    option( Y ) ) ) ), map_add( X, Y ) ) = map_add( X, Y ) }.
% 1.41/2.19  { ti( fun( fun( nat, option( product_prod( list( char ), fun( product_prod
% 1.41/2.19    ( list( char ), list( char ) ), option( val ) ) ) ) ), fun( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), bool ) ), hext ) = hext }.
% 1.41/2.19  { ti( fun( X, fun( Y, product_prod( X, Y ) ) ), product_Pair( X, Y ) ) = 
% 1.41/2.19    product_Pair( X, Y ) }.
% 1.41/2.19  { ti( fun( fun( product_prod( X, Y ), Z ), fun( X, fun( Y, Z ) ) ), 
% 1.41/2.19    product_curry( X, Y, Z ) ) = product_curry( X, Y, Z ) }.
% 1.41/2.19  { ti( fun( fun( X, fun( Y, Z ) ), fun( product_prod( X, Y ), Z ) ), 
% 1.41/2.19    produc1605651328_split( X, Y, Z ) ) = produc1605651328_split( X, Y, Z ) }
% 1.41/2.19    .
% 1.41/2.19  { ti( fun( fun( X, fun( Y, Z ) ), fun( product_prod( X, Y ), Z ) ), 
% 1.41/2.19    product_prod_rec( X, Y, Z ) ) = product_prod_rec( X, Y, Z ) }.
% 1.41/2.19  { ti( fun( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.19    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.19    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19     ), bool ) ), red ) = red }.
% 1.41/2.19  { ti( fun( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.19    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.19    , fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), bool ) ), reds ) = reds }.
% 1.41/2.19  { ti( fun( fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), 
% 1.41/2.19    bool ) ), transitive_rtrancl( X ) ) = transitive_rtrancl( X ) }.
% 1.41/2.19  { ti( val, null ) = null }.
% 1.41/2.19  { ti( fun( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.19    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.19    , fun( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.19    list( char ), list( char ) ), option( val ) ) ) ) ), fun( fun( list( char
% 1.41/2.19     ), option( ty ) ), fun( exp( list( char ) ), fun( ty, bool ) ) ) ) ), 
% 1.41/2.19    wTrt ) = wTrt }.
% 1.41/2.19  { hAPP( X, Y, ti( fun( X, Y ), Z ), T ) = hAPP( X, Y, Z, T ) }.
% 1.41/2.19  { hAPP( X, Y, Z, ti( X, T ) ) = hAPP( X, Y, Z, T ) }.
% 1.41/2.19  { ti( X, hAPP( Y, X, Z, T ) ) = hAPP( Y, X, Z, T ) }.
% 1.41/2.19  { ! hBOOL( ti( bool, X ) ), hBOOL( X ) }.
% 1.41/2.19  { ! hBOOL( X ), hBOOL( ti( bool, X ) ) }.
% 1.41/2.19  { ti( fun( X, fun( fun( X, bool ), bool ) ), member( X ) ) = member( X ) }
% 1.41/2.19    .
% 1.41/2.19  { ti( fun( list( char ), option( ty ) ), e_1 ) = e_1 }.
% 1.41/2.19  { ti( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.19    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.19    , p ) = p }.
% 1.41/2.19  { ti( ty, t ) = t }.
% 1.41/2.19  { ti( exp( list( char ) ), e ) = e }.
% 1.41/2.19  { ti( exp( list( char ) ), e_2 ) = e_2 }.
% 1.41/2.19  { ti( fun( nat, option( product_prod( list( char ), fun( product_prod( list
% 1.41/2.19    ( char ), list( char ) ), option( val ) ) ) ) ), h_1 ) = h_1 }.
% 1.41/2.19  { ti( fun( nat, option( product_prod( list( char ), fun( product_prod( list
% 1.41/2.19    ( char ), list( char ) ), option( val ) ) ) ) ), h ) = h }.
% 1.41/2.19  { ti( fun( list( char ), option( val ) ), l_1 ) = l_1 }.
% 1.41/2.19  { ti( fun( list( char ), option( val ) ), l ) = l }.
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, product_prod( Y, product_prod( Z, 
% 1.41/2.19    product_prod( T, product_prod( U, W ) ) ) ) ), bool, V0, hAPP( 
% 1.41/2.19    product_prod( Y, product_prod( Z, product_prod( T, product_prod( U, W ) )
% 1.41/2.19     ) ), product_prod( X, product_prod( Y, product_prod( Z, product_prod( T
% 1.41/2.19    , product_prod( U, W ) ) ) ) ), hAPP( X, fun( product_prod( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, product_prod( U, W ) ) ) ), 
% 1.41/2.19    product_prod( X, product_prod( Y, product_prod( Z, product_prod( T, 
% 1.41/2.19    product_prod( U, W ) ) ) ) ) ), product_Pair( X, product_prod( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, product_prod( U, W ) ) ) ) ), skol1( X
% 1.41/2.19    , Y, Z, T, U, W, V0 ) ), hAPP( product_prod( Z, product_prod( T, 
% 1.41/2.19    product_prod( U, W ) ) ), product_prod( Y, product_prod( Z, product_prod
% 1.41/2.19    ( T, product_prod( U, W ) ) ) ), hAPP( Y, fun( product_prod( Z, 
% 1.41/2.19    product_prod( T, product_prod( U, W ) ) ), product_prod( Y, product_prod
% 1.41/2.19    ( Z, product_prod( T, product_prod( U, W ) ) ) ) ), product_Pair( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, product_prod( U, W ) ) ) ), skol22( X, 
% 1.41/2.19    Y, Z, T, U, W, V0 ) ), hAPP( product_prod( T, product_prod( U, W ) ), 
% 1.41/2.19    product_prod( Z, product_prod( T, product_prod( U, W ) ) ), hAPP( Z, fun
% 1.41/2.19    ( product_prod( T, product_prod( U, W ) ), product_prod( Z, product_prod
% 1.41/2.19    ( T, product_prod( U, W ) ) ) ), product_Pair( Z, product_prod( T, 
% 1.41/2.19    product_prod( U, W ) ) ), skol39( X, Y, Z, T, U, W, V0 ) ), hAPP( 
% 1.41/2.19    product_prod( U, W ), product_prod( T, product_prod( U, W ) ), hAPP( T, 
% 1.41/2.19    fun( product_prod( U, W ), product_prod( T, product_prod( U, W ) ) ), 
% 1.41/2.19    product_Pair( T, product_prod( U, W ) ), skol50( X, Y, Z, T, U, W, V0 ) )
% 1.41/2.19    , hAPP( W, product_prod( U, W ), hAPP( U, fun( W, product_prod( U, W ) )
% 1.41/2.19    , product_Pair( U, W ), skol57( X, Y, Z, T, U, W, V0 ) ), skol61( X, Y, Z
% 1.41/2.19    , T, U, W, V0 ) ) ) ) ) ) ) ), hBOOL( hAPP( product_prod( X, product_prod
% 1.41/2.19    ( Y, product_prod( Z, product_prod( T, product_prod( U, W ) ) ) ) ), bool
% 1.41/2.19    , V0, V1 ) ) }.
% 1.41/2.19  { ti( product_prod( X, product_prod( Y, product_prod( Z, product_prod( T, 
% 1.41/2.19    product_prod( U, W ) ) ) ) ), V0 ) = hAPP( product_prod( Y, product_prod
% 1.41/2.19    ( Z, product_prod( T, product_prod( U, W ) ) ) ), product_prod( X, 
% 1.41/2.19    product_prod( Y, product_prod( Z, product_prod( T, product_prod( U, W ) )
% 1.41/2.19     ) ) ), hAPP( X, fun( product_prod( Y, product_prod( Z, product_prod( T, 
% 1.41/2.19    product_prod( U, W ) ) ) ), product_prod( X, product_prod( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, product_prod( U, W ) ) ) ) ) ), 
% 1.41/2.19    product_Pair( X, product_prod( Y, product_prod( Z, product_prod( T, 
% 1.41/2.19    product_prod( U, W ) ) ) ) ), skol2( X, Y, Z, T, U, W, V0 ) ), hAPP( 
% 1.41/2.19    product_prod( Z, product_prod( T, product_prod( U, W ) ) ), product_prod
% 1.41/2.19    ( Y, product_prod( Z, product_prod( T, product_prod( U, W ) ) ) ), hAPP( 
% 1.41/2.19    Y, fun( product_prod( Z, product_prod( T, product_prod( U, W ) ) ), 
% 1.41/2.19    product_prod( Y, product_prod( Z, product_prod( T, product_prod( U, W ) )
% 1.41/2.19     ) ) ), product_Pair( Y, product_prod( Z, product_prod( T, product_prod( 
% 1.41/2.19    U, W ) ) ) ), skol23( X, Y, Z, T, U, W, V0 ) ), hAPP( product_prod( T, 
% 1.41/2.19    product_prod( U, W ) ), product_prod( Z, product_prod( T, product_prod( U
% 1.41/2.19    , W ) ) ), hAPP( Z, fun( product_prod( T, product_prod( U, W ) ), 
% 1.41/2.19    product_prod( Z, product_prod( T, product_prod( U, W ) ) ) ), 
% 1.41/2.19    product_Pair( Z, product_prod( T, product_prod( U, W ) ) ), skol40( X, Y
% 1.41/2.19    , Z, T, U, W, V0 ) ), hAPP( product_prod( U, W ), product_prod( T, 
% 1.41/2.19    product_prod( U, W ) ), hAPP( T, fun( product_prod( U, W ), product_prod
% 1.41/2.19    ( T, product_prod( U, W ) ) ), product_Pair( T, product_prod( U, W ) ), 
% 1.41/2.19    skol51( X, Y, Z, T, U, W, V0 ) ), hAPP( W, product_prod( U, W ), hAPP( U
% 1.41/2.19    , fun( W, product_prod( U, W ) ), product_Pair( U, W ), skol58( X, Y, Z, 
% 1.41/2.19    T, U, W, V0 ) ), skol62( X, Y, Z, T, U, W, V0 ) ) ) ) ) ) }.
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, product_prod( Y, product_prod( Z, 
% 1.41/2.19    product_prod( T, U ) ) ) ), bool, W, hAPP( product_prod( Y, product_prod
% 1.41/2.19    ( Z, product_prod( T, U ) ) ), product_prod( X, product_prod( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, U ) ) ) ), hAPP( X, fun( product_prod( 
% 1.41/2.19    Y, product_prod( Z, product_prod( T, U ) ) ), product_prod( X, 
% 1.41/2.19    product_prod( Y, product_prod( Z, product_prod( T, U ) ) ) ) ), 
% 1.41/2.19    product_Pair( X, product_prod( Y, product_prod( Z, product_prod( T, U ) )
% 1.41/2.19     ) ), skol3( X, Y, Z, T, U, W ) ), hAPP( product_prod( Z, product_prod( T
% 1.41/2.19    , U ) ), product_prod( Y, product_prod( Z, product_prod( T, U ) ) ), hAPP
% 1.41/2.19    ( Y, fun( product_prod( Z, product_prod( T, U ) ), product_prod( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, U ) ) ) ), product_Pair( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, U ) ) ), skol24( X, Y, Z, T, U, W ) ), 
% 1.41/2.19    hAPP( product_prod( T, U ), product_prod( Z, product_prod( T, U ) ), hAPP
% 1.41/2.19    ( Z, fun( product_prod( T, U ), product_prod( Z, product_prod( T, U ) ) )
% 1.41/2.19    , product_Pair( Z, product_prod( T, U ) ), skol41( X, Y, Z, T, U, W ) ), 
% 1.41/2.19    hAPP( U, product_prod( T, U ), hAPP( T, fun( U, product_prod( T, U ) ), 
% 1.41/2.19    product_Pair( T, U ), skol52( X, Y, Z, T, U, W ) ), skol59( X, Y, Z, T, U
% 1.41/2.19    , W ) ) ) ) ) ) ), hBOOL( hAPP( product_prod( X, product_prod( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, U ) ) ) ), bool, W, V0 ) ) }.
% 1.41/2.19  { ti( product_prod( X, product_prod( Y, product_prod( Z, product_prod( T, U
% 1.41/2.19     ) ) ) ), W ) = hAPP( product_prod( Y, product_prod( Z, product_prod( T, 
% 1.41/2.19    U ) ) ), product_prod( X, product_prod( Y, product_prod( Z, product_prod
% 1.41/2.19    ( T, U ) ) ) ), hAPP( X, fun( product_prod( Y, product_prod( Z, 
% 1.41/2.19    product_prod( T, U ) ) ), product_prod( X, product_prod( Y, product_prod
% 1.41/2.19    ( Z, product_prod( T, U ) ) ) ) ), product_Pair( X, product_prod( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, U ) ) ) ), skol4( X, Y, Z, T, U, W ) )
% 1.41/2.19    , hAPP( product_prod( Z, product_prod( T, U ) ), product_prod( Y, 
% 1.41/2.19    product_prod( Z, product_prod( T, U ) ) ), hAPP( Y, fun( product_prod( Z
% 1.41/2.19    , product_prod( T, U ) ), product_prod( Y, product_prod( Z, product_prod
% 1.41/2.19    ( T, U ) ) ) ), product_Pair( Y, product_prod( Z, product_prod( T, U ) )
% 1.41/2.19     ), skol25( X, Y, Z, T, U, W ) ), hAPP( product_prod( T, U ), 
% 1.41/2.19    product_prod( Z, product_prod( T, U ) ), hAPP( Z, fun( product_prod( T, U
% 1.41/2.19     ), product_prod( Z, product_prod( T, U ) ) ), product_Pair( Z, 
% 1.41/2.19    product_prod( T, U ) ), skol42( X, Y, Z, T, U, W ) ), hAPP( U, 
% 1.41/2.19    product_prod( T, U ), hAPP( T, fun( U, product_prod( T, U ) ), 
% 1.41/2.19    product_Pair( T, U ), skol53( X, Y, Z, T, U, W ) ), skol60( X, Y, Z, T, U
% 1.41/2.19    , W ) ) ) ) ) }.
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, product_prod( Y, product_prod( Z, T ) ) )
% 1.41/2.19    , bool, U, hAPP( product_prod( Y, product_prod( Z, T ) ), product_prod( X
% 1.41/2.19    , product_prod( Y, product_prod( Z, T ) ) ), hAPP( X, fun( product_prod( 
% 1.41/2.19    Y, product_prod( Z, T ) ), product_prod( X, product_prod( Y, product_prod
% 1.41/2.19    ( Z, T ) ) ) ), product_Pair( X, product_prod( Y, product_prod( Z, T ) )
% 1.41/2.19     ), skol5( X, Y, Z, T, U ) ), hAPP( product_prod( Z, T ), product_prod( Y
% 1.41/2.19    , product_prod( Z, T ) ), hAPP( Y, fun( product_prod( Z, T ), 
% 1.41/2.19    product_prod( Y, product_prod( Z, T ) ) ), product_Pair( Y, product_prod
% 1.41/2.19    ( Z, T ) ), skol26( X, Y, Z, T, U ) ), hAPP( T, product_prod( Z, T ), 
% 1.41/2.19    hAPP( Z, fun( T, product_prod( Z, T ) ), product_Pair( Z, T ), skol43( X
% 1.41/2.19    , Y, Z, T, U ) ), skol54( X, Y, Z, T, U ) ) ) ) ) ), hBOOL( hAPP( 
% 1.41/2.19    product_prod( X, product_prod( Y, product_prod( Z, T ) ) ), bool, U, W )
% 1.41/2.19     ) }.
% 1.41/2.19  { ti( product_prod( X, product_prod( Y, product_prod( Z, T ) ) ), U ) = 
% 1.41/2.19    hAPP( product_prod( Y, product_prod( Z, T ) ), product_prod( X, 
% 1.41/2.19    product_prod( Y, product_prod( Z, T ) ) ), hAPP( X, fun( product_prod( Y
% 1.41/2.19    , product_prod( Z, T ) ), product_prod( X, product_prod( Y, product_prod
% 1.41/2.19    ( Z, T ) ) ) ), product_Pair( X, product_prod( Y, product_prod( Z, T ) )
% 1.41/2.19     ), skol6( X, Y, Z, T, U ) ), hAPP( product_prod( Z, T ), product_prod( Y
% 1.41/2.19    , product_prod( Z, T ) ), hAPP( Y, fun( product_prod( Z, T ), 
% 1.41/2.19    product_prod( Y, product_prod( Z, T ) ) ), product_Pair( Y, product_prod
% 1.41/2.19    ( Z, T ) ), skol27( X, Y, Z, T, U ) ), hAPP( T, product_prod( Z, T ), 
% 1.41/2.19    hAPP( Z, fun( T, product_prod( Z, T ) ), product_Pair( Z, T ), skol44( X
% 1.41/2.19    , Y, Z, T, U ) ), skol55( X, Y, Z, T, U ) ) ) ) }.
% 1.41/2.19  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.19     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.19    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.19    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.19    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.19    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.19     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.19    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), Z ), hAPP( fun( list( char ), option
% 1.41/2.19    ( val ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ), hAPP( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( fun( list( char ), option( val ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_Pair( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), X ), T )
% 1.41/2.19     ) ), hAPP( product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), U ), hAPP( fun( list( char ), option( 
% 1.41/2.19    val ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), hAPP( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( fun( list( char ), option( val ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_Pair( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), Y ), W ) ) ) ), hAPP( list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.19    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.19     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.19    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.19     ), red, V0 ) ) ), hBOOL( hAPP( fun( nat, option( product_prod( list( 
% 1.41/2.19    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.19     ) ) ), bool, hAPP( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.19    char ), list( char ) ), option( val ) ) ) ) ), bool ), hext, X ), Y ) ) }
% 1.41/2.19    .
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, product_prod( Y, Z ) ), bool, T, hAPP( 
% 1.41/2.19    product_prod( Y, Z ), product_prod( X, product_prod( Y, Z ) ), hAPP( X, 
% 1.41/2.19    fun( product_prod( Y, Z ), product_prod( X, product_prod( Y, Z ) ) ), 
% 1.41/2.19    product_Pair( X, product_prod( Y, Z ) ), skol7( X, Y, Z, T ) ), hAPP( Z, 
% 1.41/2.19    product_prod( Y, Z ), hAPP( Y, fun( Z, product_prod( Y, Z ) ), 
% 1.41/2.19    product_Pair( Y, Z ), skol28( X, Y, Z, T ) ), skol45( X, Y, Z, T ) ) ) )
% 1.41/2.19     ), hBOOL( hAPP( product_prod( X, product_prod( Y, Z ) ), bool, T, U ) )
% 1.41/2.19     }.
% 1.41/2.19  { ti( product_prod( X, product_prod( Y, Z ) ), T ) = hAPP( product_prod( Y
% 1.41/2.19    , Z ), product_prod( X, product_prod( Y, Z ) ), hAPP( X, fun( 
% 1.41/2.19    product_prod( Y, Z ), product_prod( X, product_prod( Y, Z ) ) ), 
% 1.41/2.19    product_Pair( X, product_prod( Y, Z ) ), skol8( X, Y, Z, T ) ), hAPP( Z, 
% 1.41/2.19    product_prod( Y, Z ), hAPP( Y, fun( Z, product_prod( Y, Z ) ), 
% 1.41/2.19    product_Pair( Y, Z ), skol29( X, Y, Z, T ) ), skol46( X, Y, Z, T ) ) ) }
% 1.41/2.19    .
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, Y ), bool, Z, skol9( X, Y, Z ) ) ), hBOOL
% 1.41/2.19    ( hAPP( product_prod( X, Y ), bool, Z, hAPP( Y, product_prod( X, Y ), 
% 1.41/2.19    hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), T ), U ) )
% 1.41/2.19     ) }.
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, Y ), bool, Z, hAPP( Y, product_prod( X, Y
% 1.41/2.19     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), skol30
% 1.41/2.19    ( X, Y, Z ) ), skol47( X, Y, Z ) ) ) ), hBOOL( hAPP( product_prod( X, Y )
% 1.41/2.19    , bool, Z, T ) ) }.
% 1.41/2.19  { ! hAPP( X, product_prod( Y, X ), hAPP( Y, fun( X, product_prod( Y, X ) )
% 1.41/2.19    , product_Pair( Y, X ), Z ), T ) = hAPP( X, product_prod( Y, X ), hAPP( Y
% 1.41/2.19    , fun( X, product_prod( Y, X ) ), product_Pair( Y, X ), U ), W ), ti( Y, 
% 1.41/2.19    Z ) = ti( Y, U ) }.
% 1.41/2.19  { ! hAPP( X, product_prod( Y, X ), hAPP( Y, fun( X, product_prod( Y, X ) )
% 1.41/2.19    , product_Pair( Y, X ), Z ), T ) = hAPP( X, product_prod( Y, X ), hAPP( Y
% 1.41/2.19    , fun( X, product_prod( Y, X ) ), product_Pair( Y, X ), U ), W ), ti( X, 
% 1.41/2.19    T ) = ti( X, W ) }.
% 1.41/2.19  { ! ti( Y, Z ) = ti( Y, U ), ! ti( X, T ) = ti( X, W ), hAPP( X, 
% 1.41/2.19    product_prod( Y, X ), hAPP( Y, fun( X, product_prod( Y, X ) ), 
% 1.41/2.19    product_Pair( Y, X ), Z ), T ) = hAPP( X, product_prod( Y, X ), hAPP( Y, 
% 1.41/2.19    fun( X, product_prod( Y, X ) ), product_Pair( Y, X ), U ), W ) }.
% 1.41/2.19  { ! hAPP( X, product_prod( Y, X ), hAPP( Y, fun( X, product_prod( Y, X ) )
% 1.41/2.19    , product_Pair( Y, X ), Z ), T ) = hAPP( X, product_prod( Y, X ), hAPP( Y
% 1.41/2.19    , fun( X, product_prod( Y, X ) ), product_Pair( Y, X ), U ), W ), ti( Y, 
% 1.41/2.19    Z ) = ti( Y, U ) }.
% 1.41/2.19  { ! hAPP( X, product_prod( Y, X ), hAPP( Y, fun( X, product_prod( Y, X ) )
% 1.41/2.19    , product_Pair( Y, X ), Z ), T ) = hAPP( X, product_prod( Y, X ), hAPP( Y
% 1.41/2.19    , fun( X, product_prod( Y, X ) ), product_Pair( Y, X ), U ), W ), ti( X, 
% 1.41/2.19    T ) = ti( X, W ) }.
% 1.41/2.19  { hBOOL( hAPP( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), bool, 
% 1.41/2.19    hAPP( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.19    list( char ), list( char ) ), option( val ) ) ) ) ), fun( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), bool ), hext, X ), X ) ) }.
% 1.41/2.19  { ! hBOOL( hAPP( ty, bool, hAPP( exp( list( char ) ), fun( ty, bool ), hAPP
% 1.41/2.19    ( fun( list( char ), option( ty ) ), fun( exp( list( char ) ), fun( ty, 
% 1.41/2.19    bool ) ), hAPP( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    fun( list( char ), option( ty ) ), fun( exp( list( char ) ), fun( ty, 
% 1.41/2.19    bool ) ) ), hAPP( list( product_prod( list( char ), product_prod( list( 
% 1.41/2.19    char ), product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.19    , fun( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.19    list( char ), list( char ) ), option( val ) ) ) ) ), fun( fun( list( char
% 1.41/2.19     ), option( ty ) ), fun( exp( list( char ) ), fun( ty, bool ) ) ) ), wTrt
% 1.41/2.19    , X ), Y ), Z ), T ), U ) ), ! hBOOL( hAPP( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), bool, hAPP( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), bool )
% 1.41/2.19    , hext, Y ), W ) ), hBOOL( hAPP( ty, bool, hAPP( exp( list( char ) ), fun
% 1.41/2.19    ( ty, bool ), hAPP( fun( list( char ), option( ty ) ), fun( exp( list( 
% 1.41/2.19    char ) ), fun( ty, bool ) ), hAPP( fun( nat, option( product_prod( list( 
% 1.41/2.19    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.19     ) ) ), fun( fun( list( char ), option( ty ) ), fun( exp( list( char ) )
% 1.41/2.19    , fun( ty, bool ) ) ), hAPP( list( product_prod( list( char ), 
% 1.41/2.19    product_prod( list( char ), product_prod( list( product_prod( list( char
% 1.41/2.19     ), ty ) ), list( product_prod( list( char ), product_prod( list( ty ), 
% 1.41/2.19    product_prod( ty, product_prod( list( list( char ) ), exp( list( char ) )
% 1.41/2.19     ) ) ) ) ) ) ) ) ), fun( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( fun( list( char ), option( ty ) ), fun( exp( list( char ) ), fun( ty
% 1.41/2.19    , bool ) ) ) ), wTrt, X ), W ), Z ), T ), U ) ) }.
% 1.41/2.19  { hAPP( product_prod( X, Y ), Z, hAPP( fun( X, fun( Y, Z ) ), fun( 
% 1.41/2.19    product_prod( X, Y ), Z ), product_prod_rec( X, Y, Z ), T ), hAPP( Y, 
% 1.41/2.19    product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.19    product_Pair( X, Y ), U ), W ) ) = hAPP( Y, Z, hAPP( X, fun( Y, Z ), T, U
% 1.41/2.19     ), W ) }.
% 1.41/2.19  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.19     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.19    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.19    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.19    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.19    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.19     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.19    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), X ), hAPP( fun( list( char ), option
% 1.41/2.19    ( val ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ), hAPP( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( fun( list( char ), option( val ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_Pair( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), Y ), Z )
% 1.41/2.19     ) ), hAPP( product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), T ), hAPP( fun( list( char ), option( 
% 1.41/2.19    val ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), hAPP( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( fun( list( char ), option( val ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_Pair( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), U ), W ) ) ) ), hAPP( list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.19    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.19     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.19    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.19     ), red, V0 ) ) ), hBOOL( hAPP( fun( product_prod( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.19     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.19    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.19    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.19    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.19    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.19     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.19    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), X ), hAPP( fun( list( char ), option
% 1.41/2.19    ( val ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ), hAPP( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( fun( list( char ), option( val ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_Pair( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), Y ), 
% 1.41/2.19    hAPP( fun( list( char ), option( val ) ), fun( list( char ), option( val
% 1.41/2.19     ) ), hAPP( fun( list( char ), option( val ) ), fun( fun( list( char ), 
% 1.41/2.19    option( val ) ), fun( list( char ), option( val ) ) ), map_add( list( 
% 1.41/2.19    char ), val ), V1 ), Z ) ) ) ), hAPP( product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.19    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), T ), hAPP( fun( list( char ), option
% 1.41/2.19    ( val ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ), hAPP( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( fun( list( char ), option( val ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_Pair( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), U ), 
% 1.41/2.19    hAPP( fun( list( char ), option( val ) ), fun( list( char ), option( val
% 1.41/2.19     ) ), hAPP( fun( list( char ), option( val ) ), fun( fun( list( char ), 
% 1.41/2.19    option( val ) ), fun( list( char ), option( val ) ) ), map_add( list( 
% 1.41/2.19    char ), val ), V1 ), W ) ) ) ) ), hAPP( list( product_prod( list( char )
% 1.41/2.19    , product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.19    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.19     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.19     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), bool ), red, V0 ) ) ) }.
% 1.41/2.19  { ti( product_prod( X, Y ), Z ) = hAPP( Y, product_prod( X, Y ), hAPP( X, 
% 1.41/2.19    fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), skol10( X, Y, Z ) )
% 1.41/2.19    , skol31( X, Y, Z ) ) }.
% 1.41/2.19  { ti( product_prod( X, Y ), Z ) = hAPP( Y, product_prod( X, Y ), hAPP( X, 
% 1.41/2.19    fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), skol11( X, Y, Z ) )
% 1.41/2.19    , skol32( X, Y, Z ) ) }.
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, Y ), bool, Z, T ) ), hBOOL( hAPP( 
% 1.41/2.19    product_prod( X, Y ), bool, Z, hAPP( Y, product_prod( X, Y ), hAPP( X, 
% 1.41/2.19    fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), skol12( X, Y, Z ) )
% 1.41/2.19    , skol33( X, Y, Z ) ) ) ) }.
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, Y ), bool, Z, hAPP( Y, product_prod( X, Y
% 1.41/2.19     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), T ), U
% 1.41/2.19     ) ) ), hBOOL( hAPP( product_prod( X, Y ), bool, Z, skol48( X, Y, Z ) ) )
% 1.41/2.19     }.
% 1.41/2.19  { hAPP( product_prod( X, Y ), Z, hAPP( fun( X, fun( Y, Z ) ), fun( 
% 1.41/2.19    product_prod( X, Y ), Z ), produc1605651328_split( X, Y, Z ), T ), hAPP( 
% 1.41/2.19    Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.19    product_Pair( X, Y ), U ), W ) ) = hAPP( Y, Z, hAPP( X, fun( Y, Z ), T, U
% 1.41/2.19     ), W ) }.
% 1.41/2.19  { ! hBOOL( hAPP( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), bool, 
% 1.41/2.19    hAPP( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.19    list( char ), list( char ) ), option( val ) ) ) ) ), fun( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), bool ), hext, X ), Y ) ), ! hBOOL( 
% 1.41/2.19    hAPP( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.19    list( char ), list( char ) ), option( val ) ) ) ) ), bool, hAPP( fun( nat
% 1.41/2.19    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.19    list( char ) ), option( val ) ) ) ) ), fun( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), bool ), hext, Y ), Z ) ), hBOOL( hAPP( fun( 
% 1.41/2.19    nat, option( product_prod( list( char ), fun( product_prod( list( char )
% 1.41/2.19    , list( char ) ), option( val ) ) ) ) ), bool, hAPP( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( fun( nat, option( product_prod( list( 
% 1.41/2.19    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.19     ) ) ), bool ), hext, X ), Z ) ) }.
% 1.41/2.19  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.19     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.19    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.19    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.19    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.19    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.19     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.19    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.19    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.19     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.19     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.19    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ) ), X ), hAPP( fun( list( char ), option
% 1.41/2.19    ( val ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ), hAPP( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( fun( list( char ), option( val ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_Pair( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), Y ), Z )
% 1.41/2.19     ) ), hAPP( product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), T ), hAPP( fun( list( char ), option( 
% 1.41/2.19    val ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), hAPP( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( fun( list( char ), option( val ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_Pair( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), U ), W ) ) ) ), hAPP( fun( 
% 1.41/2.19    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.19     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.19    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.19    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.19    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.19    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.19    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.19     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.19     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.19    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.19     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.19     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.19     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), bool ), red, V0 ) ) ) ), hBOOL( hAPP
% 1.41/2.19    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.19    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.19    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.19     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.19    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.19    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.19    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.19    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.19    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.19    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.19    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.19    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.19    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.19    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), X ), hAPP( fun( list( char ), option( 
% 1.41/2.19    val ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), hAPP( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( fun( list( char ), option( val ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_Pair( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), Y ), hAPP( fun( list( char ), option( 
% 1.41/2.19    val ) ), fun( list( char ), option( val ) ), hAPP( fun( list( char ), 
% 1.41/2.19    option( val ) ), fun( fun( list( char ), option( val ) ), fun( list( char
% 1.41/2.19     ), option( val ) ) ), map_add( list( char ), val ), V1 ), Z ) ) ) ), 
% 1.41/2.19    hAPP( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), T ), hAPP( fun( list( char ), option( 
% 1.41/2.19    val ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), hAPP( fun( nat, option( product_prod( 
% 1.41/2.19    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.19    val ) ) ) ) ), fun( fun( list( char ), option( val ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_Pair( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.19    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.19    ( list( char ), option( val ) ) ), U ), hAPP( fun( list( char ), option( 
% 1.41/2.19    val ) ), fun( list( char ), option( val ) ), hAPP( fun( list( char ), 
% 1.41/2.19    option( val ) ), fun( fun( list( char ), option( val ) ), fun( list( char
% 1.41/2.19     ), option( val ) ) ), map_add( list( char ), val ), V1 ), W ) ) ) ) ), 
% 1.41/2.19    hAPP( fun( product_prod( product_prod( exp( list( char ) ), product_prod
% 1.41/2.19    ( fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.19    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.19    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.19    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.19    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.19     ) ) ), bool ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.19    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.19    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.19    list( char ), option( val ) ) ) ) ), bool ), transitive_rtrancl( 
% 1.41/2.19    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.19    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.19     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.19    ( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.19    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.19    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.19    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.19    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.19    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.19     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.19     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.19    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.19    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.19     ), bool ), red, V0 ) ) ) ) }.
% 1.41/2.19  { hAPP( fun( X, option( Y ) ), fun( X, option( Y ) ), hAPP( fun( X, option
% 1.41/2.19    ( Y ) ), fun( fun( X, option( Y ) ), fun( X, option( Y ) ) ), map_add( X
% 1.41/2.19    , Y ), Z ), hAPP( fun( X, option( Y ) ), fun( X, option( Y ) ), hAPP( fun
% 1.41/2.19    ( X, option( Y ) ), fun( fun( X, option( Y ) ), fun( X, option( Y ) ) ), 
% 1.41/2.19    map_add( X, Y ), T ), U ) ) = hAPP( fun( X, option( Y ) ), fun( X, option
% 1.41/2.19    ( Y ) ), hAPP( fun( X, option( Y ) ), fun( fun( X, option( Y ) ), fun( X
% 1.41/2.19    , option( Y ) ) ), map_add( X, Y ), hAPP( fun( X, option( Y ) ), fun( X, 
% 1.41/2.19    option( Y ) ), hAPP( fun( X, option( Y ) ), fun( fun( X, option( Y ) ), 
% 1.41/2.19    fun( X, option( Y ) ) ), map_add( X, Y ), Z ), T ) ), U ) }.
% 1.41/2.19  { ! hBOOL( hAPP( product_prod( X, Y ), bool, Z, hAPP( Y, product_prod( X, Y
% 1.41/2.19     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), T ), U
% 1.41/2.19     ) ) ), hBOOL( hAPP( Y, bool, hAPP( X, fun( Y, bool ), hAPP( fun( 
% 1.41/2.19    product_prod( X, Y ), bool ), fun( X, fun( Y, bool ) ), product_curry( X
% 1.41/2.20    , Y, bool ), Z ), T ), U ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( list( exp( list( char ) )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.20    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.20    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), Z ), hAPP( fun( list( char ), 
% 1.41/2.20    option( val ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ), hAPP( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( fun( list( char ), option( val ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_Pair( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), X ), T )
% 1.41/2.20     ) ), hAPP( product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ), product_prod( list( exp( list( char
% 1.41/2.20     ) ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), fun
% 1.41/2.20    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( list( exp( list( char ) )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( char
% 1.41/2.20     ) ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), U ), hAPP( fun( list( char ), option( 
% 1.41/2.20    val ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ), hAPP( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( fun( list( char ), option( val ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_Pair( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ), Y ), W ) ) ) ), hAPP( list( 
% 1.41/2.20    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.20    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.20    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    bool ), reds, V0 ) ) ), hBOOL( hAPP( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), bool, hAPP( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), bool ), hext, X ), Y ) ) }
% 1.41/2.20    .
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( list( 
% 1.41/2.20    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.20    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.20    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), red, U ) ) ), hBOOL( hAPP( fun( product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list
% 1.41/2.20    ( char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ), hAPP( list( char ), fun( list( char ), fun( exp( list( char ) ), 
% 1.41/2.20    exp( list( char ) ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.20    fun( list( char ), fun( exp( list( char ) ), exp( list( char ) ) ) ) ), 
% 1.41/2.20    tryCatch( list( char ) ), X ), W ), V0 ), V1 ) ), Y ) ), hAPP( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list( 
% 1.41/2.20    char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char )
% 1.41/2.20     ) ), hAPP( list( char ), fun( list( char ), fun( exp( list( char ) ), 
% 1.41/2.20    exp( list( char ) ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.20    fun( list( char ), fun( exp( list( char ) ), exp( list( char ) ) ) ) ), 
% 1.41/2.20    tryCatch( list( char ) ), Z ), W ), V0 ), V1 ) ), T ) ) ), hAPP( list( 
% 1.41/2.20    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.20    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.20    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), red, U ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( list( 
% 1.41/2.20    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.20    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.20    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), red, U ) ) ), hBOOL( hAPP( fun( product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), hAPP( list( char ), exp( list( char
% 1.41/2.20     ) ), hAPP( list( char ), fun( list( char ), exp( list( char ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( list( char ), fun( list( char ), exp( list( 
% 1.41/2.20    char ) ) ) ), fAcc( list( char ) ), X ), W ), V0 ) ), Y ) ), hAPP( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( list( char ), exp( list( char )
% 1.41/2.20     ), hAPP( list( char ), fun( list( char ), exp( list( char ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( list( char ), fun( list( char ), exp( list( 
% 1.41/2.20    char ) ) ) ), fAcc( list( char ) ), Z ), W ), V0 ) ), T ) ) ), hAPP( list
% 1.41/2.20    ( product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.20    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.20    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), red, U ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( list( 
% 1.41/2.20    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.20    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.20    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), red, U ) ) ), hBOOL( hAPP( fun( product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list
% 1.41/2.20    ( char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ), cast( list( char ) ), W ), X ) ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list
% 1.41/2.20    ( char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ), cast( list( char ) ), W ), Z ) ), T ) ) ), hAPP( list( 
% 1.41/2.20    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.20    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.20    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), red, U ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( X, bool, hAPP( Y, fun( X, bool ), hAPP( fun( product_prod
% 1.41/2.20    ( Y, X ), bool ), fun( Y, fun( X, bool ) ), product_curry( Y, X, bool ), 
% 1.41/2.20    Z ), T ), U ) ), hBOOL( hAPP( product_prod( Y, X ), bool, Z, hAPP( X, 
% 1.41/2.20    product_prod( Y, X ), hAPP( Y, fun( X, product_prod( Y, X ) ), 
% 1.41/2.20    product_Pair( Y, X ), T ), U ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( X, bool, hAPP( Y, fun( X, bool ), hAPP( fun( product_prod
% 1.41/2.20    ( Y, X ), bool ), fun( Y, fun( X, bool ) ), product_curry( Y, X, bool ), 
% 1.41/2.20    Z ), T ), U ) ), hBOOL( hAPP( product_prod( Y, X ), bool, Z, hAPP( X, 
% 1.41/2.20    product_prod( Y, X ), hAPP( Y, fun( X, product_prod( Y, X ) ), 
% 1.41/2.20    product_Pair( Y, X ), T ), U ) ) ) }.
% 1.41/2.20  { hAPP( X, Y, hAPP( Z, fun( X, Y ), hAPP( fun( product_prod( Z, X ), Y ), 
% 1.41/2.20    fun( Z, fun( X, Y ) ), product_curry( Z, X, Y ), T ), U ), W ) = hAPP( 
% 1.41/2.20    product_prod( Z, X ), Y, T, hAPP( X, product_prod( Z, X ), hAPP( Z, fun( 
% 1.41/2.20    X, product_prod( Z, X ) ), product_Pair( Z, X ), U ), W ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), hBOOL( hAPP
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.20    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.20    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.20    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list( 
% 1.41/2.20    char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char )
% 1.41/2.20     ) ), hAPP( list( char ), fun( list( char ), fun( exp( list( char ) ), 
% 1.41/2.20    exp( list( char ) ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.20    fun( list( char ), fun( exp( list( char ) ), exp( list( char ) ) ) ) ), 
% 1.41/2.20    tryCatch( list( char ) ), X ), W ), V0 ), V1 ) ), Y ) ), hAPP( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list( 
% 1.41/2.20    char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char )
% 1.41/2.20     ) ), hAPP( list( char ), fun( list( char ), fun( exp( list( char ) ), 
% 1.41/2.20    exp( list( char ) ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.20    fun( list( char ), fun( exp( list( char ) ), exp( list( char ) ) ) ) ), 
% 1.41/2.20    tryCatch( list( char ) ), Z ), W ), V0 ), V1 ) ), T ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), hBOOL( hAPP
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.20    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.20    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.20    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( list( char ), exp( list( char )
% 1.41/2.20     ), hAPP( list( char ), fun( list( char ), exp( list( char ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( list( char ), fun( list( char ), exp( list( 
% 1.41/2.20    char ) ) ) ), fAcc( list( char ) ), X ), W ), V0 ) ), Y ) ), hAPP( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( list( char ), exp( list( char )
% 1.41/2.20     ), hAPP( list( char ), fun( list( char ), exp( list( char ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( list( char ), fun( list( char ), exp( list( 
% 1.41/2.20    char ) ) ) ), fAcc( list( char ) ), Z ), W ), V0 ) ), T ) ) ), hAPP( fun
% 1.41/2.20    ( product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), hBOOL( hAPP
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.20    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.20    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.20    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list( 
% 1.41/2.20    char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char )
% 1.41/2.20     ) ), cast( list( char ) ), W ), X ) ), Y ) ), hAPP( product_prod( fun( 
% 1.41/2.20    nat, option( product_prod( list( char ), fun( product_prod( list( char )
% 1.41/2.20    , list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val )
% 1.41/2.20     ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list
% 1.41/2.20    ( char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ), cast( list( char ) ), W ), Z ) ), T ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ) }.
% 1.41/2.20  { hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( product_prod
% 1.41/2.20    ( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), member( 
% 1.41/2.20    product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, fun( X, 
% 1.41/2.20    product_prod( X, X ) ), product_Pair( X, X ), Y ), Y ) ), hAPP( fun( 
% 1.41/2.20    product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), Z ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), Y ), Z ) ), hBOOL( hAPP( fun( 
% 1.41/2.20    product_prod( X, X ), bool ), bool, hAPP( product_prod( X, X ), fun( fun
% 1.41/2.20    ( product_prod( X, X ), bool ), bool ), member( product_prod( X, X ) ), Y
% 1.41/2.20     ), hAPP( fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), 
% 1.41/2.20    bool ), transitive_rtrancl( X ), Z ) ) ) }.
% 1.41/2.20  { ! hAPP( list( char ), exp( X ), hAPP( list( char ), fun( list( char ), 
% 1.41/2.20    exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( char ), exp( X
% 1.41/2.20     ) ) ), fAcc( X ), Y ), Z ), T ) = hAPP( exp( X ), exp( X ), hAPP( X, fun
% 1.41/2.20    ( exp( X ), exp( X ) ), hAPP( list( char ), fun( X, fun( exp( X ), exp( X
% 1.41/2.20     ) ) ), hAPP( exp( X ), fun( list( char ), fun( X, fun( exp( X ), exp( X
% 1.41/2.20     ) ) ) ), tryCatch( X ), U ), W ), V0 ), V1 ) }.
% 1.41/2.20  { hAPP( fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool
% 1.41/2.20     ), transitive_rtrancl( X ), hAPP( fun( product_prod( X, X ), bool ), fun
% 1.41/2.20    ( product_prod( X, X ), bool ), transitive_rtrancl( X ), Y ) ) = hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), Y ) }.
% 1.41/2.20  { ! hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp( X ), exp( X ) )
% 1.41/2.20    , cast( X ), Y ), Z ) = hAPP( exp( X ), exp( X ), hAPP( list( char ), fun
% 1.41/2.20    ( exp( X ), exp( X ) ), cast( X ), T ), U ), Y = T }.
% 1.41/2.20  { ! hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp( X ), exp( X ) )
% 1.41/2.20    , cast( X ), Y ), Z ) = hAPP( exp( X ), exp( X ), hAPP( list( char ), fun
% 1.41/2.20    ( exp( X ), exp( X ) ), cast( X ), T ), U ), Z = U }.
% 1.41/2.20  { ! Y = T, ! Z = U, hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp
% 1.41/2.20    ( X ), exp( X ) ), cast( X ), Y ), Z ) = hAPP( exp( X ), exp( X ), hAPP( 
% 1.41/2.20    list( char ), fun( exp( X ), exp( X ) ), cast( X ), T ), U ) }.
% 1.41/2.20  { ! hAPP( list( char ), exp( X ), hAPP( list( char ), fun( list( char ), 
% 1.41/2.20    exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( char ), exp( X
% 1.41/2.20     ) ) ), fAcc( X ), Y ), Z ), T ) = hAPP( list( char ), exp( X ), hAPP( 
% 1.41/2.20    list( char ), fun( list( char ), exp( X ) ), hAPP( exp( X ), fun( list( 
% 1.41/2.20    char ), fun( list( char ), exp( X ) ) ), fAcc( X ), U ), W ), V0 ), Y = U
% 1.41/2.20     }.
% 1.41/2.20  { ! hAPP( list( char ), exp( X ), hAPP( list( char ), fun( list( char ), 
% 1.41/2.20    exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( char ), exp( X
% 1.41/2.20     ) ) ), fAcc( X ), Y ), Z ), T ) = hAPP( list( char ), exp( X ), hAPP( 
% 1.41/2.20    list( char ), fun( list( char ), exp( X ) ), hAPP( exp( X ), fun( list( 
% 1.41/2.20    char ), fun( list( char ), exp( X ) ) ), fAcc( X ), U ), W ), V0 ), 
% 1.41/2.20    alpha1( Z, T, W, V0 ) }.
% 1.41/2.20  { ! Y = U, ! alpha1( Z, T, W, V0 ), hAPP( list( char ), exp( X ), hAPP( 
% 1.41/2.20    list( char ), fun( list( char ), exp( X ) ), hAPP( exp( X ), fun( list( 
% 1.41/2.20    char ), fun( list( char ), exp( X ) ) ), fAcc( X ), Y ), Z ), T ) = hAPP
% 1.41/2.20    ( list( char ), exp( X ), hAPP( list( char ), fun( list( char ), exp( X )
% 1.41/2.20     ), hAPP( exp( X ), fun( list( char ), fun( list( char ), exp( X ) ) ), 
% 1.41/2.20    fAcc( X ), U ), W ), V0 ) }.
% 1.41/2.20  { ! alpha1( X, Y, Z, T ), X = Z }.
% 1.41/2.20  { ! alpha1( X, Y, Z, T ), Y = T }.
% 1.41/2.20  { ! X = Z, ! Y = T, alpha1( X, Y, Z, T ) }.
% 1.41/2.20  { ! hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X ) ), hAPP( 
% 1.41/2.20    list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp( X ), fun( 
% 1.41/2.20    list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch( X ), Y ), 
% 1.41/2.20    Z ), T ), U ) = hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X
% 1.41/2.20     ) ), hAPP( list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp
% 1.41/2.20    ( X ), fun( list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch
% 1.41/2.20    ( X ), W ), V0 ), V1 ), V2 ), Y = W }.
% 1.41/2.20  { ! hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X ) ), hAPP( 
% 1.41/2.20    list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp( X ), fun( 
% 1.41/2.20    list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch( X ), Y ), 
% 1.41/2.20    Z ), T ), U ) = hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X
% 1.41/2.20     ) ), hAPP( list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp
% 1.41/2.20    ( X ), fun( list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch
% 1.41/2.20    ( X ), W ), V0 ), V1 ), V2 ), alpha4( X, Z, T, U, V0, V1, V2 ) }.
% 1.41/2.20  { ! Y = W, ! alpha4( X, Z, T, U, V0, V1, V2 ), hAPP( exp( X ), exp( X ), 
% 1.41/2.20    hAPP( X, fun( exp( X ), exp( X ) ), hAPP( list( char ), fun( X, fun( exp
% 1.41/2.20    ( X ), exp( X ) ) ), hAPP( exp( X ), fun( list( char ), fun( X, fun( exp
% 1.41/2.20    ( X ), exp( X ) ) ) ), tryCatch( X ), Y ), Z ), T ), U ) = hAPP( exp( X )
% 1.41/2.20    , exp( X ), hAPP( X, fun( exp( X ), exp( X ) ), hAPP( list( char ), fun( 
% 1.41/2.20    X, fun( exp( X ), exp( X ) ) ), hAPP( exp( X ), fun( list( char ), fun( X
% 1.41/2.20    , fun( exp( X ), exp( X ) ) ) ), tryCatch( X ), W ), V0 ), V1 ), V2 ) }.
% 1.41/2.20  { ! alpha4( X, Y, Z, T, U, W, V0 ), Y = U }.
% 1.41/2.20  { ! alpha4( X, Y, Z, T, U, W, V0 ), alpha2( X, Z, T, W, V0 ) }.
% 1.41/2.20  { ! Y = U, ! alpha2( X, Z, T, W, V0 ), alpha4( X, Y, Z, T, U, W, V0 ) }.
% 1.41/2.20  { ! alpha2( X, Y, Z, T, U ), ti( X, Y ) = ti( X, T ) }.
% 1.41/2.20  { ! alpha2( X, Y, Z, T, U ), Z = U }.
% 1.41/2.20  { ! ti( X, Y ) = ti( X, T ), ! Z = U, alpha2( X, Y, Z, T, U ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ! hBOOL( hAPP( fun( product_prod( X, X
% 1.41/2.20     ), bool ), bool, hAPP( product_prod( X, X ), fun( fun( product_prod( X, 
% 1.41/2.20    X ), bool ), bool ), member( product_prod( X, X ) ), hAPP( X, 
% 1.41/2.20    product_prod( X, X ), hAPP( X, fun( X, product_prod( X, X ) ), 
% 1.41/2.20    product_Pair( X, X ), Z ), U ) ), hAPP( fun( product_prod( X, X ), bool )
% 1.41/2.20    , fun( product_prod( X, X ), bool ), transitive_rtrancl( X ), T ) ) ), 
% 1.41/2.20    hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( product_prod
% 1.41/2.20    ( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), member( 
% 1.41/2.20    product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, fun( X, 
% 1.41/2.20    product_prod( X, X ) ), product_Pair( X, X ), Y ), U ) ), hAPP( fun( 
% 1.41/2.20    product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ! hBOOL( hAPP( fun( product_prod( X, X
% 1.41/2.20     ), bool ), bool, hAPP( product_prod( X, X ), fun( fun( product_prod( X, 
% 1.41/2.20    X ), bool ), bool ), member( product_prod( X, X ) ), hAPP( X, 
% 1.41/2.20    product_prod( X, X ), hAPP( X, fun( X, product_prod( X, X ) ), 
% 1.41/2.20    product_Pair( X, X ), Z ), U ) ), T ) ), hBOOL( hAPP( fun( product_prod( 
% 1.41/2.20    X, X ), bool ), bool, hAPP( product_prod( X, X ), fun( fun( product_prod
% 1.41/2.20    ( X, X ), bool ), bool ), member( product_prod( X, X ) ), hAPP( X, 
% 1.41/2.20    product_prod( X, X ), hAPP( X, fun( X, product_prod( X, X ) ), 
% 1.41/2.20    product_Pair( X, X ), Y ), U ) ), hAPP( fun( product_prod( X, X ), bool )
% 1.41/2.20    , fun( product_prod( X, X ), bool ), transitive_rtrancl( X ), T ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), T ) ), 
% 1.41/2.20    ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Z ), U ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), hBOOL( hAPP( fun( product_prod( X, X )
% 1.41/2.20    , bool ), bool, hAPP( product_prod( X, X ), fun( fun( product_prod( X, X
% 1.41/2.20     ), bool ), bool ), member( product_prod( X, X ) ), hAPP( X, product_prod
% 1.41/2.20    ( X, X ), hAPP( X, fun( X, product_prod( X, X ) ), product_Pair( X, X ), 
% 1.41/2.20    Y ), U ) ), hAPP( fun( product_prod( X, X ), bool ), fun( product_prod( X
% 1.41/2.20    , X ), bool ), transitive_rtrancl( X ), T ) ) ) }.
% 1.41/2.20  { ! hAPP( list( char ), exp( X ), hAPP( list( char ), fun( list( char ), 
% 1.41/2.20    exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( char ), exp( X
% 1.41/2.20     ) ) ), fAcc( X ), Y ), Z ), T ) = hAPP( exp( X ), exp( X ), hAPP( list( 
% 1.41/2.20    char ), fun( exp( X ), exp( X ) ), cast( X ), U ), W ) }.
% 1.41/2.20  { ! hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp( X ), exp( X ) )
% 1.41/2.20    , cast( X ), Y ), Z ) = hAPP( list( char ), exp( X ), hAPP( list( char )
% 1.41/2.20    , fun( list( char ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( 
% 1.41/2.20    list( char ), exp( X ) ) ), fAcc( X ), T ), U ), W ) }.
% 1.41/2.20  { ! hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X ) ), hAPP( 
% 1.41/2.20    list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp( X ), fun( 
% 1.41/2.20    list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch( X ), Y ), 
% 1.41/2.20    Z ), T ), U ) = hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp( X
% 1.41/2.20     ), exp( X ) ), cast( X ), W ), V0 ) }.
% 1.41/2.20  { ! hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp( X ), exp( X ) )
% 1.41/2.20    , cast( X ), Y ), Z ) = hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X )
% 1.41/2.20    , exp( X ) ), hAPP( list( char ), fun( X, fun( exp( X ), exp( X ) ) ), 
% 1.41/2.20    hAPP( exp( X ), fun( list( char ), fun( X, fun( exp( X ), exp( X ) ) ) )
% 1.41/2.20    , tryCatch( X ), T ), U ), W ), V0 ) }.
% 1.41/2.20  { ! hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X ) ), hAPP( 
% 1.41/2.20    list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp( X ), fun( 
% 1.41/2.20    list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch( X ), Y ), 
% 1.41/2.20    Z ), T ), U ) = hAPP( list( char ), exp( X ), hAPP( list( char ), fun( 
% 1.41/2.20    list( char ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( 
% 1.41/2.20    char ), exp( X ) ) ), fAcc( X ), W ), V0 ), V1 ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T
% 1.41/2.20     ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y
% 1.41/2.20     ) ), product_Pair( X, Y ), U ), W ) ) ), hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), transitive_rtrancl
% 1.41/2.20    ( product_prod( X, Y ) ), V0 ) ) ), ! hBOOL( hAPP( Y, bool, hAPP( X, fun
% 1.41/2.20    ( Y, bool ), V1, Z ), T ) ), hBOOL( hAPP( fun( product_prod( product_prod
% 1.41/2.20    ( X, Y ), product_prod( X, Y ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), fun( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool ), member( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), product_prod( product_prod( X, Y ), product_prod( X
% 1.41/2.20    , Y ) ), hAPP( product_prod( X, Y ), fun( product_prod( X, Y ), 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ) ), 
% 1.41/2.20    product_Pair( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, 
% 1.41/2.20    product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), Z ), T ) ), hAPP( Y, product_prod( X, Y ), hAPP( X
% 1.41/2.20    , fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), skol13( X, Y, Z, 
% 1.41/2.20    T, V0, V1 ) ), skol34( X, Y, Z, T, V0, V1 ) ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), 
% 1.41/2.20    transitive_rtrancl( product_prod( X, Y ) ), V0 ) ) ), hBOOL( hAPP( Y, 
% 1.41/2.20    bool, hAPP( X, fun( Y, bool ), V1, U ), W ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T
% 1.41/2.20     ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y
% 1.41/2.20     ) ), product_Pair( X, Y ), U ), W ) ) ), hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), transitive_rtrancl
% 1.41/2.20    ( product_prod( X, Y ) ), V0 ) ) ), ! hBOOL( hAPP( Y, bool, hAPP( X, fun
% 1.41/2.20    ( Y, bool ), V1, Z ), T ) ), alpha5( X, Y, V0, V1, skol13( X, Y, Z, T, V0
% 1.41/2.20    , V1 ), skol34( X, Y, Z, T, V0, V1 ) ), hBOOL( hAPP( Y, bool, hAPP( X, 
% 1.41/2.20    fun( Y, bool ), V1, U ), W ) ) }.
% 1.41/2.20  { ! alpha5( X, Y, Z, T, U, W ), hBOOL( hAPP( Y, bool, hAPP( X, fun( Y, bool
% 1.41/2.20     ), T, U ), W ) ) }.
% 1.41/2.20  { ! alpha5( X, Y, Z, T, U, W ), hBOOL( hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), fun( fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool
% 1.41/2.20     ), member( product_prod( product_prod( X, Y ), product_prod( X, Y ) ) )
% 1.41/2.20    , hAPP( product_prod( X, Y ), product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), hAPP( product_prod( X, Y ), fun( product_prod( X
% 1.41/2.20    , Y ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ) ), 
% 1.41/2.20    product_Pair( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, 
% 1.41/2.20    product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), U ), W ) ), hAPP( Y, product_prod( X, Y ), hAPP( X
% 1.41/2.20    , fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), skol14( X, Y, Z, 
% 1.41/2.20    T, U, W ) ), skol35( X, Y, Z, T, U, W ) ) ) ), Z ) ) }.
% 1.41/2.20  { ! alpha5( X, Y, Z, T, U, W ), ! hBOOL( hAPP( Y, bool, hAPP( X, fun( Y, 
% 1.41/2.20    bool ), T, skol14( X, Y, Z, T, U, W ) ), skol35( X, Y, Z, T, U, W ) ) ) }
% 1.41/2.20    .
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), U ), W
% 1.41/2.20     ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y
% 1.41/2.20     ) ), product_Pair( X, Y ), V0 ), V1 ) ) ), Z ) ), ! hBOOL( hAPP( Y, bool
% 1.41/2.20    , hAPP( X, fun( Y, bool ), T, U ), W ) ), hBOOL( hAPP( Y, bool, hAPP( X, 
% 1.41/2.20    fun( Y, bool ), T, V0 ), V1 ) ), alpha5( X, Y, Z, T, U, W ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T
% 1.41/2.20     ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y
% 1.41/2.20     ) ), product_Pair( X, Y ), U ), W ) ) ), hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), transitive_rtrancl
% 1.41/2.20    ( product_prod( X, Y ) ), V0 ) ) ), ! hBOOL( hAPP( Y, bool, hAPP( X, fun
% 1.41/2.20    ( Y, bool ), V1, U ), W ) ), alpha6( X, Y, U, W, V0, skol15( X, Y, U, W, 
% 1.41/2.20    V0, V1 ), skol36( X, Y, U, W, V0, V1 ), skol49( X, Y, U, W, V0, V1 ), 
% 1.41/2.20    skol56( X, Y, U, W, V0, V1 ) ), hBOOL( hAPP( Y, bool, hAPP( X, fun( Y, 
% 1.41/2.20    bool ), V1, Z ), T ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T
% 1.41/2.20     ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y
% 1.41/2.20     ) ), product_Pair( X, Y ), U ), W ) ) ), hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), transitive_rtrancl
% 1.41/2.20    ( product_prod( X, Y ) ), V0 ) ) ), ! hBOOL( hAPP( Y, bool, hAPP( X, fun
% 1.41/2.20    ( Y, bool ), V1, U ), W ) ), hBOOL( hAPP( Y, bool, hAPP( X, fun( Y, bool
% 1.41/2.20     ), V1, skol49( X, Y, U, W, V0, V1 ) ), skol56( X, Y, U, W, V0, V1 ) ) )
% 1.41/2.20    , hBOOL( hAPP( Y, bool, hAPP( X, fun( Y, bool ), V1, Z ), T ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T
% 1.41/2.20     ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y
% 1.41/2.20     ) ), product_Pair( X, Y ), U ), W ) ) ), hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), transitive_rtrancl
% 1.41/2.20    ( product_prod( X, Y ) ), V0 ) ) ), ! hBOOL( hAPP( Y, bool, hAPP( X, fun
% 1.41/2.20    ( Y, bool ), V1, U ), W ) ), ! hBOOL( hAPP( Y, bool, hAPP( X, fun( Y, 
% 1.41/2.20    bool ), V1, skol15( X, Y, U, W, V0, V1 ) ), skol36( X, Y, U, W, V0, V1 )
% 1.41/2.20     ) ), hBOOL( hAPP( Y, bool, hAPP( X, fun( Y, bool ), V1, Z ), T ) ) }.
% 1.41/2.20  { ! alpha6( X, Y, Z, T, U, W, V0, V1, V2 ), hBOOL( hAPP( fun( product_prod
% 1.41/2.20    ( product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), fun( fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool
% 1.41/2.20     ), member( product_prod( product_prod( X, Y ), product_prod( X, Y ) ) )
% 1.41/2.20    , hAPP( product_prod( X, Y ), product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), hAPP( product_prod( X, Y ), fun( product_prod( X
% 1.41/2.20    , Y ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ) ), 
% 1.41/2.20    product_Pair( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, 
% 1.41/2.20    product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), W ), V0 ) ), hAPP( Y, product_prod( X, Y ), hAPP( X
% 1.41/2.20    , fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), V1 ), V2 ) ) ), U
% 1.41/2.20     ) ) }.
% 1.41/2.20  { ! alpha6( X, Y, Z, T, U, W, V0, V1, V2 ), hBOOL( hAPP( fun( product_prod
% 1.41/2.20    ( product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), fun( fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool
% 1.41/2.20     ), member( product_prod( product_prod( X, Y ), product_prod( X, Y ) ) )
% 1.41/2.20    , hAPP( product_prod( X, Y ), product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), hAPP( product_prod( X, Y ), fun( product_prod( X
% 1.41/2.20    , Y ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ) ), 
% 1.41/2.20    product_Pair( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, 
% 1.41/2.20    product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), V1 ), V2 ) ), hAPP( Y, product_prod( X, Y ), hAPP( 
% 1.41/2.20    X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T ) ) ), 
% 1.41/2.20    hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, Y ) ), 
% 1.41/2.20    bool ), fun( product_prod( product_prod( X, Y ), product_prod( X, Y ) ), 
% 1.41/2.20    bool ), transitive_rtrancl( product_prod( X, Y ) ), U ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), W ), 
% 1.41/2.20    V0 ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, 
% 1.41/2.20    Y ) ), product_Pair( X, Y ), V1 ), V2 ) ) ), U ) ), ! hBOOL( hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool
% 1.41/2.20    , hAPP( product_prod( product_prod( X, Y ), product_prod( X, Y ) ), fun( 
% 1.41/2.20    fun( product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), 
% 1.41/2.20    bool ), member( product_prod( product_prod( X, Y ), product_prod( X, Y )
% 1.41/2.20     ) ), hAPP( product_prod( X, Y ), product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), hAPP( product_prod( X, Y ), fun( product_prod( X
% 1.41/2.20    , Y ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ) ), 
% 1.41/2.20    product_Pair( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, 
% 1.41/2.20    product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), V1 ), V2 ) ), hAPP( Y, product_prod( X, Y ), hAPP( 
% 1.41/2.20    X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T ) ) ), 
% 1.41/2.20    hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, Y ) ), 
% 1.41/2.20    bool ), fun( product_prod( product_prod( X, Y ), product_prod( X, Y ) ), 
% 1.41/2.20    bool ), transitive_rtrancl( product_prod( X, Y ) ), U ) ) ), alpha6( X, Y
% 1.41/2.20    , Z, T, U, W, V0, V1, V2 ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T
% 1.41/2.20     ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y
% 1.41/2.20     ) ), product_Pair( X, Y ), U ), W ) ) ), hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), transitive_rtrancl
% 1.41/2.20    ( product_prod( X, Y ) ), V0 ) ) ), hAPP( Y, product_prod( X, Y ), hAPP( 
% 1.41/2.20    X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T ) = hAPP
% 1.41/2.20    ( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), U ), W ), hBOOL( hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), fun( fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool
% 1.41/2.20     ), member( product_prod( product_prod( X, Y ), product_prod( X, Y ) ) )
% 1.41/2.20    , hAPP( product_prod( X, Y ), product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), hAPP( product_prod( X, Y ), fun( product_prod( X
% 1.41/2.20    , Y ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ) ), 
% 1.41/2.20    product_Pair( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, 
% 1.41/2.20    product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), Z ), T ) ), hAPP( Y, product_prod( X, Y ), hAPP( X
% 1.41/2.20    , fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), skol16( X, Y, Z, 
% 1.41/2.20    T, U, W, V0 ) ), skol37( X, Y, Z, T, U, W, V0 ) ) ) ), V0 ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( X, Y ), product_prod( X, 
% 1.41/2.20    Y ) ), bool ), bool, hAPP( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), fun( fun( product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), bool ), bool ), member( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), hAPP( product_prod( X, Y
% 1.41/2.20     ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( 
% 1.41/2.20    product_prod( X, Y ), fun( product_prod( X, Y ), product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ) ), product_Pair( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, product_prod( X, Y
% 1.41/2.20     ), hAPP( X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T
% 1.41/2.20     ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y
% 1.41/2.20     ) ), product_Pair( X, Y ), U ), W ) ) ), hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), transitive_rtrancl
% 1.41/2.20    ( product_prod( X, Y ) ), V0 ) ) ), hAPP( Y, product_prod( X, Y ), hAPP( 
% 1.41/2.20    X, fun( Y, product_prod( X, Y ) ), product_Pair( X, Y ), Z ), T ) = hAPP
% 1.41/2.20    ( Y, product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), U ), W ), hBOOL( hAPP( fun( product_prod( 
% 1.41/2.20    product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), fun( fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), bool
% 1.41/2.20     ), member( product_prod( product_prod( X, Y ), product_prod( X, Y ) ) )
% 1.41/2.20    , hAPP( product_prod( X, Y ), product_prod( product_prod( X, Y ), 
% 1.41/2.20    product_prod( X, Y ) ), hAPP( product_prod( X, Y ), fun( product_prod( X
% 1.41/2.20    , Y ), product_prod( product_prod( X, Y ), product_prod( X, Y ) ) ), 
% 1.41/2.20    product_Pair( product_prod( X, Y ), product_prod( X, Y ) ), hAPP( Y, 
% 1.41/2.20    product_prod( X, Y ), hAPP( X, fun( Y, product_prod( X, Y ) ), 
% 1.41/2.20    product_Pair( X, Y ), skol16( X, Y, Z, T, U, W, V0 ) ), skol37( X, Y, Z, 
% 1.41/2.20    T, U, W, V0 ) ) ), hAPP( Y, product_prod( X, Y ), hAPP( X, fun( Y, 
% 1.41/2.20    product_prod( X, Y ) ), product_Pair( X, Y ), U ), W ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), fun( 
% 1.41/2.20    product_prod( product_prod( X, Y ), product_prod( X, Y ) ), bool ), 
% 1.41/2.20    transitive_rtrancl( product_prod( X, Y ) ), V0 ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ti( X, Y ) = ti( X, Z ), hBOOL( hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), bool, hAPP( product_prod( X, X ), fun
% 1.41/2.20    ( fun( product_prod( X, X ), bool ), bool ), member( product_prod( X, X )
% 1.41/2.20     ), hAPP( X, product_prod( X, X ), hAPP( X, fun( X, product_prod( X, X )
% 1.41/2.20     ), product_Pair( X, X ), Y ), skol17( X, Y, U, T ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ti( X, Y ) = ti( X, Z ), hBOOL( hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), bool, hAPP( product_prod( X, X ), fun
% 1.41/2.20    ( fun( product_prod( X, X ), bool ), bool ), member( product_prod( X, X )
% 1.41/2.20     ), hAPP( X, product_prod( X, X ), hAPP( X, fun( X, product_prod( X, X )
% 1.41/2.20     ), product_Pair( X, X ), skol17( X, Y, Z, T ) ), Z ) ), T ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ti( X, Y ) = ti( X, Z ), hBOOL( hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), bool, hAPP( product_prod( X, X ), fun
% 1.41/2.20    ( fun( product_prod( X, X ), bool ), bool ), member( product_prod( X, X )
% 1.41/2.20     ), hAPP( X, product_prod( X, X ), hAPP( X, fun( X, product_prod( X, X )
% 1.41/2.20     ), product_Pair( X, X ), Y ), skol18( X, Y, U, T ) ) ), T ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ti( X, Y ) = ti( X, Z ), hBOOL( hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), bool, hAPP( product_prod( X, X ), fun
% 1.41/2.20    ( fun( product_prod( X, X ), bool ), bool ), member( product_prod( X, X )
% 1.41/2.20     ), hAPP( X, product_prod( X, X ), hAPP( X, fun( X, product_prod( X, X )
% 1.41/2.20     ), product_Pair( X, X ), skol18( X, Y, Z, T ) ), Z ) ), hAPP( fun( 
% 1.41/2.20    product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ! hBOOL( hAPP( X, bool, U, Y ) ), hBOOL
% 1.41/2.20    ( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( product_prod( X, X
% 1.41/2.20     ), fun( fun( product_prod( X, X ), bool ), bool ), member( product_prod
% 1.41/2.20    ( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, fun( X, product_prod
% 1.41/2.20    ( X, X ) ), product_Pair( X, X ), Y ), skol19( X, Y, T, W ) ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), hBOOL( hAPP( X, bool, U, Z ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ! hBOOL( hAPP( X, bool, U, Y ) ), 
% 1.41/2.20    alpha7( X, T, U, skol19( X, Y, T, U ) ), hBOOL( hAPP( X, bool, U, Z ) ) }
% 1.41/2.20    .
% 1.41/2.20  { ! alpha7( X, Y, Z, T ), ! hBOOL( hAPP( X, bool, Z, skol20( X, U, Z, W ) )
% 1.41/2.20     ) }.
% 1.41/2.20  { ! alpha7( X, Y, Z, T ), hBOOL( hAPP( X, bool, Z, T ) ) }.
% 1.41/2.20  { ! alpha7( X, Y, Z, T ), hBOOL( hAPP( fun( product_prod( X, X ), bool ), 
% 1.41/2.20    bool, hAPP( product_prod( X, X ), fun( fun( product_prod( X, X ), bool )
% 1.41/2.20    , bool ), member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), 
% 1.41/2.20    hAPP( X, fun( X, product_prod( X, X ) ), product_Pair( X, X ), T ), 
% 1.41/2.20    skol20( X, Y, Z, T ) ) ), Y ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), T ), U ) ), Y ) ), 
% 1.41/2.20    ! hBOOL( hAPP( X, bool, Z, T ) ), hBOOL( hAPP( X, bool, Z, U ) ), alpha7
% 1.41/2.20    ( X, Y, Z, T ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ! hBOOL( hAPP( X, bool, U, Z ) ), hBOOL
% 1.41/2.20    ( hAPP( X, bool, U, skol38( X, W, V0, U ) ) ), hBOOL( hAPP( X, bool, U, Y
% 1.41/2.20     ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ! hBOOL( hAPP( X, bool, U, Z ) ), 
% 1.41/2.20    alpha8( X, Z, T, skol21( X, Z, T, U ), skol38( X, Z, T, U ) ), hBOOL( 
% 1.41/2.20    hAPP( X, bool, U, Y ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), Y ), Z ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), T ) ) ), ! hBOOL( hAPP( X, bool, U, Z ) ), ! 
% 1.41/2.20    hBOOL( hAPP( X, bool, U, skol21( X, Z, T, U ) ) ), hBOOL( hAPP( X, bool, 
% 1.41/2.20    U, Y ) ) }.
% 1.41/2.20  { ! alpha8( X, Y, Z, T, U ), hBOOL( hAPP( fun( product_prod( X, X ), bool )
% 1.41/2.20    , bool, hAPP( product_prod( X, X ), fun( fun( product_prod( X, X ), bool
% 1.41/2.20     ), bool ), member( product_prod( X, X ) ), hAPP( X, product_prod( X, X )
% 1.41/2.20    , hAPP( X, fun( X, product_prod( X, X ) ), product_Pair( X, X ), T ), U )
% 1.41/2.20     ), Z ) ) }.
% 1.41/2.20  { ! alpha8( X, Y, Z, T, U ), hBOOL( hAPP( fun( product_prod( X, X ), bool )
% 1.41/2.20    , bool, hAPP( product_prod( X, X ), fun( fun( product_prod( X, X ), bool
% 1.41/2.20     ), bool ), member( product_prod( X, X ) ), hAPP( X, product_prod( X, X )
% 1.41/2.20    , hAPP( X, fun( X, product_prod( X, X ) ), product_Pair( X, X ), U ), Y )
% 1.41/2.20     ), hAPP( fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), 
% 1.41/2.20    bool ), transitive_rtrancl( X ), Z ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), T ), U ) ), Z ) ), 
% 1.41/2.20    ! hBOOL( hAPP( fun( product_prod( X, X ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( X, X ), fun( fun( product_prod( X, X ), bool ), bool ), 
% 1.41/2.20    member( product_prod( X, X ) ), hAPP( X, product_prod( X, X ), hAPP( X, 
% 1.41/2.20    fun( X, product_prod( X, X ) ), product_Pair( X, X ), U ), Y ) ), hAPP( 
% 1.41/2.20    fun( product_prod( X, X ), bool ), fun( product_prod( X, X ), bool ), 
% 1.41/2.20    transitive_rtrancl( X ), Z ) ) ), alpha8( X, Y, Z, T, U ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), hBOOL( hAPP
% 1.41/2.20    ( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.20    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.20    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) )
% 1.41/2.20    , list( exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( exp
% 1.41/2.20    ( list( char ) ) ), list( exp( list( char ) ) ) ), cons( exp( list( char
% 1.41/2.20     ) ) ), X ), W ) ), Y ) ), hAPP( product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( list( exp( list( char ) ) ), fun( product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( list( exp( list( char ) ) ), list( exp( list( char ) ) ), hAPP( exp( 
% 1.41/2.20    list( char ) ), fun( list( exp( list( char ) ) ), list( exp( list( char )
% 1.41/2.20     ) ) ), cons( exp( list( char ) ) ), Z ), W ) ), T ) ) ), hAPP( fun( 
% 1.41/2.20    product_prod( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), bool ), fun( product_prod( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), transitive_rtrancl( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    hAPP( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.20    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.20    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.20    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.20    , fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( list( 
% 1.41/2.20    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.20    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.20    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), red, U ) ) ), hBOOL( hAPP( fun( product_prod( product_prod( list( exp
% 1.41/2.20    ( list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( 
% 1.41/2.20    product_prod( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), fun( fun( product_prod( product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.20    product_prod( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ) ), hAPP( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( list( exp
% 1.41/2.20    ( list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP( product_prod( 
% 1.41/2.20    list( exp( list( char ) ) ), product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( product_prod
% 1.41/2.20    ( list( exp( list( char ) ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ) ), product_Pair( product_prod( list( exp( list( char ) )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( list( exp( list( char ) ) ), fun( product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( list( exp( list( char ) ) ), list( exp( list( char ) ) ), hAPP( exp( 
% 1.41/2.20    list( char ) ), fun( list( exp( list( char ) ) ), list( exp( list( char )
% 1.41/2.20     ) ) ), cons( exp( list( char ) ) ), X ), W ) ), Y ) ), hAPP( 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( list( exp( list( char ) )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), fun
% 1.41/2.20    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ), product_prod( list( exp( list( char ) )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( char
% 1.41/2.20     ) ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), 
% 1.41/2.20    list( exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( exp( 
% 1.41/2.20    list( char ) ) ), list( exp( list( char ) ) ) ), cons( exp( list( char )
% 1.41/2.20     ) ), Z ), W ) ), T ) ) ), hAPP( list( product_prod( list( char ), 
% 1.41/2.20    product_prod( list( char ), product_prod( list( product_prod( list( char
% 1.41/2.20     ), ty ) ), list( product_prod( list( char ), product_prod( list( ty ), 
% 1.41/2.20    product_prod( ty, product_prod( list( list( char ) ), exp( list( char ) )
% 1.41/2.20     ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.20    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.20    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.20    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.20    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), val_1( list( char ), Z ) ), T ) ) )
% 1.41/2.20    , hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.20     ), transitive_rtrancl( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.20    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.20    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.20    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.20     ) ) ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), ! hBOOL( 
% 1.41/2.20    hAPP( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.20    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.20    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), W ), T ) ), hAPP( product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), hAPP( list( exp( list( char ) ) ), fun( product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ), product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , V0 ), V1 ) ) ), hAPP( fun( product_prod( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    bool ), transitive_rtrancl( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ) ), hBOOL
% 1.41/2.20    ( hAPP( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.20    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.20    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) )
% 1.41/2.20    , list( exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( exp
% 1.41/2.20    ( list( char ) ) ), list( exp( list( char ) ) ) ), cons( exp( list( char
% 1.41/2.20     ) ) ), X ), W ) ), Y ) ), hAPP( product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( list( exp( list( char ) ) ), fun( product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( list( exp( list( char ) ) ), list( exp( list( char ) ) ), hAPP( exp( 
% 1.41/2.20    list( char ) ), fun( list( exp( list( char ) ) ), list( exp( list( char )
% 1.41/2.20     ) ) ), cons( exp( list( char ) ) ), val_1( list( char ), Z ) ), V0 ) ), 
% 1.41/2.20    V1 ) ) ), hAPP( fun( product_prod( product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    bool ), transitive_rtrancl( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( list( exp( list( char ) )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.20    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.20    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), hAPP( list( exp( list( char ) ) ), fun( product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ), product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , Z ), T ) ) ), hAPP( fun( product_prod( product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    bool ), transitive_rtrancl( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ) ), hBOOL
% 1.41/2.20    ( hAPP( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.20    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.20    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.20    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.20    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.20    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.20    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.20     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.20    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.20    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.20     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.20    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) )
% 1.41/2.20    , list( exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( exp
% 1.41/2.20    ( list( char ) ) ), list( exp( list( char ) ) ) ), cons( exp( list( char
% 1.41/2.20     ) ) ), val_1( list( char ), W ) ), X ) ), Y ) ), hAPP( product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( fun( nat
% 1.41/2.20    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.20    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.20     ) ), hAPP( list( exp( list( char ) ) ), fun( product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.20    ( list( exp( list( char ) ) ), list( exp( list( char ) ) ), hAPP( exp( 
% 1.41/2.20    list( char ) ), fun( list( exp( list( char ) ) ), list( exp( list( char )
% 1.41/2.20     ) ) ), cons( exp( list( char ) ) ), val_1( list( char ), W ) ), Z ) ), T
% 1.41/2.20     ) ) ), hAPP( fun( product_prod( product_prod( list( exp( list( char ) )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.20    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.20     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.20    bool ), transitive_rtrancl( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.20     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.20    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.20     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.20     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( list( exp( list
% 1.41/2.20    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.20    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.20    , fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.20    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ) ) }.
% 1.41/2.20  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.20    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.20    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.20     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.20    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.20     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.20     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.20    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.20    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.20     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.20     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.20    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.20    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.20    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.20    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.20    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.20     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.20     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.20     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.20    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.20    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.20    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.20    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.20    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.20    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.21    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.21    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), val_1( list( char ), Z ) ), T ) ) )
% 1.41/2.21    , hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), transitive_rtrancl( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.21    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.21    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.21    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.21     ) ) ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), hBOOL( hAPP
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.21    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list( 
% 1.41/2.21    char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char )
% 1.41/2.21     ) ), hAPP( list( char ), fun( list( char ), fun( exp( list( char ) ), 
% 1.41/2.21    exp( list( char ) ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.21    fun( list( char ), fun( exp( list( char ) ), exp( list( char ) ) ) ) ), 
% 1.41/2.21    tryCatch( list( char ) ), X ), W ), V0 ), V1 ) ), Y ) ), hAPP( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), val_1( list( char ), Z ) ), T ) ) ), 
% 1.41/2.21    hAPP( fun( product_prod( product_prod( exp( list( char ) ), product_prod
% 1.41/2.21    ( fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ) ) ), bool ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), transitive_rtrancl( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.21    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), red, U ) ) ) ) }.
% 1.41/2.21  { ! val_1( X, Y ) = val_1( X, Z ), Y = Z }.
% 1.41/2.21  { ! Y = Z, val_1( X, Y ) = val_1( X, Z ) }.
% 1.41/2.21  { ! val_1( X, Y ) = hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( 
% 1.41/2.21    X ) ), hAPP( list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp
% 1.41/2.21    ( X ), fun( list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch
% 1.41/2.21    ( X ), Z ), T ), U ), W ) }.
% 1.41/2.21  { ! hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X ) ), hAPP( 
% 1.41/2.21    list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp( X ), fun( 
% 1.41/2.21    list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch( X ), Y ), 
% 1.41/2.21    Z ), T ), U ) = val_1( X, W ) }.
% 1.41/2.21  { ! val_1( X, Y ) = hAPP( list( char ), exp( X ), hAPP( list( char ), fun( 
% 1.41/2.21    list( char ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( 
% 1.41/2.21    char ), exp( X ) ) ), fAcc( X ), Z ), T ), U ) }.
% 1.41/2.21  { ! hAPP( list( char ), exp( X ), hAPP( list( char ), fun( list( char ), 
% 1.41/2.21    exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( char ), exp( X
% 1.41/2.21     ) ) ), fAcc( X ), Y ), Z ), T ) = val_1( X, U ) }.
% 1.41/2.21  { ! val_1( X, Y ) = hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp
% 1.41/2.21    ( X ), exp( X ) ), cast( X ), Z ), T ) }.
% 1.41/2.21  { ! hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp( X ), exp( X ) )
% 1.41/2.21    , cast( X ), Y ), Z ) = val_1( X, T ) }.
% 1.41/2.21  { hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list
% 1.41/2.21    ( char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char
% 1.41/2.21     ) ) ), hAPP( list( char ), fun( list( char ), fun( exp( list( char ) ), 
% 1.41/2.21    exp( list( char ) ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.21    fun( list( char ), fun( exp( list( char ) ), exp( list( char ) ) ) ) ), 
% 1.41/2.21    tryCatch( list( char ) ), val_1( list( char ), X ) ), Y ), Z ), T ) ), U
% 1.41/2.21     ) ), hAPP( product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), val_1( list( char ), X ) ), U ) ) ), 
% 1.41/2.21    hAPP( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.21    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), red, W ) ) ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( list( exp( list( char ) )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.21    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.21    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.21    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.21    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.21    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.21    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.21     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.21    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.21    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.21     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.21    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), hAPP( list( exp( list( char ) ) ), fun( product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ), product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , Z ), T ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.21    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.21    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.21    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.21     ) ) ), fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ), hBOOL( hAPP( 
% 1.41/2.21    fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.21    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.21    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.21    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.21    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.21    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.21    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.21     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.21    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.21    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.21     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.21    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) )
% 1.41/2.21    , list( exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( exp
% 1.41/2.21    ( list( char ) ) ), list( exp( list( char ) ) ) ), cons( exp( list( char
% 1.41/2.21     ) ) ), val_1( list( char ), W ) ), X ) ), Y ) ), hAPP( product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ) ), hAPP( list( exp( list( char ) ) ), fun( product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.21    product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.21    ( list( exp( list( char ) ) ), list( exp( list( char ) ) ), hAPP( exp( 
% 1.41/2.21    list( char ) ), fun( list( exp( list( char ) ) ), list( exp( list( char )
% 1.41/2.21     ) ) ), cons( exp( list( char ) ) ), val_1( list( char ), W ) ), Z ) ), T
% 1.41/2.21     ) ) ), hAPP( list( product_prod( list( char ), product_prod( list( char
% 1.41/2.21     ), product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( list( exp( list( char ) )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.21    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.21    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.21    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.21    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.21    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.21    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.21     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.21    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.21    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.21     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.21    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), hAPP( list( exp( list( char ) ) ), fun( product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ), product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , Z ), T ) ) ), hAPP( fun( product_prod( product_prod( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.21    bool ), transitive_rtrancl( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.21     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.21    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.21     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.21     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( list( exp( list
% 1.41/2.21    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.21    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.21    , fun( list( char ), option( val ) ) ) ), product_prod( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ) ), hBOOL
% 1.41/2.21    ( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), 
% 1.41/2.21    exp( list( char ) ), hAPP( list( char ), fun( list( exp( list( char ) ) )
% 1.41/2.21    , exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.21    fun( list( exp( list( char ) ) ), exp( list( char ) ) ) ), call( list( 
% 1.41/2.21    char ) ), val_1( list( char ), W ) ), V0 ), X ) ), Y ) ), hAPP( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), exp
% 1.41/2.21    ( list( char ) ), hAPP( list( char ), fun( list( exp( list( char ) ) ), 
% 1.41/2.21    exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( char ), fun
% 1.41/2.21    ( list( exp( list( char ) ) ), exp( list( char ) ) ) ), call( list( char
% 1.41/2.21     ) ), val_1( list( char ), W ) ), V0 ), Z ) ), T ) ) ), hAPP( fun( 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.21     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.21    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.21     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.21     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( list( exp( list( char ) )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool ), member( product_prod
% 1.41/2.21    ( product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ) ), hAPP( product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( list( exp( list
% 1.41/2.21    ( char ) ) ), product_prod( fun( nat, option( product_prod( list( char )
% 1.41/2.21    , fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) )
% 1.41/2.21    , fun( list( char ), option( val ) ) ) ), fun( product_prod( list( exp( 
% 1.41/2.21    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.21    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.21     ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( list( exp( 
% 1.41/2.21    list( char ) ) ), product_prod( fun( nat, option( product_prod( list( 
% 1.41/2.21    char ), fun( product_prod( list( char ), list( char ) ), option( val ) )
% 1.41/2.21     ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( list( exp( list( 
% 1.41/2.21    char ) ) ), fun( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ), product_prod( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), product_Pair( list( exp( list( 
% 1.41/2.21    char ) ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ), product_prod( list( exp( list( char ) ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), hAPP( list( exp( list( char ) ) ), fun( product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ), product_prod( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), product_Pair( list( exp( list( char ) ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , Z ), T ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.21    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.21    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.21    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.21     ) ) ), fun( product_prod( product_prod( list( exp( list( char ) ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( list( exp( list( char )
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), reds, U ) ) ), hBOOL( hAPP( 
% 1.41/2.21    fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun( 
% 1.41/2.21    nat, option( product_prod( list( char ), fun( product_prod( list( char )
% 1.41/2.21    , list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val )
% 1.41/2.21     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.21    bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.21    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), exp
% 1.41/2.21    ( list( char ) ), hAPP( list( char ), fun( list( exp( list( char ) ) ), 
% 1.41/2.21    exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( char ), fun
% 1.41/2.21    ( list( exp( list( char ) ) ), exp( list( char ) ) ) ), call( list( char
% 1.41/2.21     ) ), val_1( list( char ), W ) ), V0 ), X ) ), Y ) ), hAPP( product_prod
% 1.41/2.21    ( fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , hAPP( exp( list( char ) ), fun( product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), 
% 1.41/2.21    product_Pair( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    list( exp( list( char ) ) ), exp( list( char ) ), hAPP( list( char ), fun
% 1.41/2.21    ( list( exp( list( char ) ) ), exp( list( char ) ) ), hAPP( exp( list( 
% 1.41/2.21    char ) ), fun( list( char ), fun( list( exp( list( char ) ) ), exp( list
% 1.41/2.21    ( char ) ) ) ), call( list( char ) ), val_1( list( char ), W ) ), V0 ), Z
% 1.41/2.21     ) ), T ) ) ), hAPP( list( product_prod( list( char ), product_prod( list
% 1.41/2.21    ( char ), product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), red, U ) ) ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.21    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.21    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), val_1( list( char ), null ) ), Z ) )
% 1.41/2.21     ), hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), transitive_rtrancl( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.21    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.21    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.21    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.21     ) ) ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, T ) ) ) ), hBOOL( hAPP
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.21    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list( 
% 1.41/2.21    char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char )
% 1.41/2.21     ) ), cast( list( char ) ), U ), X ) ), Y ) ), hAPP( product_prod( fun( 
% 1.41/2.21    nat, option( product_prod( list( char ), fun( product_prod( list( char )
% 1.41/2.21    , list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val )
% 1.41/2.21     ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), val_1( list( char ), null ) ), Z ) )
% 1.41/2.21     ), hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), transitive_rtrancl( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.21    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.21    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.21    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.21     ) ) ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, T ) ) ) ) }.
% 1.41/2.21  { ! hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun( list( exp( X
% 1.41/2.21     ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( exp( X )
% 1.41/2.21     ), exp( X ) ) ), call( X ), Y ), Z ), T ) = val_1( X, U ) }.
% 1.41/2.21  { ! val_1( X, Y ) = hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), 
% 1.41/2.21    fun( list( exp( X ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun
% 1.41/2.21    ( list( exp( X ) ), exp( X ) ) ), call( X ), Z ), T ), U ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( X, bool ), bool, hAPP( X, fun( fun( X, bool ), bool )
% 1.41/2.21    , member( X ), Y ), Z ) ), hBOOL( hAPP( X, bool, Z, Y ) ) }.
% 1.41/2.21  { ! hBOOL( hAPP( X, bool, Z, Y ) ), hBOOL( hAPP( fun( X, bool ), bool, hAPP
% 1.41/2.21    ( X, fun( fun( X, bool ), bool ), member( X ), Y ), Z ) ) }.
% 1.41/2.21  { ! hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun( list( exp( X
% 1.41/2.21     ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( exp( X )
% 1.41/2.21     ), exp( X ) ) ), call( X ), Y ), Z ), T ) = hAPP( exp( X ), exp( X ), 
% 1.41/2.21    hAPP( list( char ), fun( exp( X ), exp( X ) ), cast( X ), U ), W ) }.
% 1.41/2.21  { ! hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp( X ), exp( X ) )
% 1.41/2.21    , cast( X ), Y ), Z ) = hAPP( list( exp( X ) ), exp( X ), hAPP( list( 
% 1.41/2.21    char ), fun( list( exp( X ) ), exp( X ) ), hAPP( exp( X ), fun( list( 
% 1.41/2.21    char ), fun( list( exp( X ) ), exp( X ) ) ), call( X ), T ), U ), W ) }.
% 1.41/2.21  { ! hAPP( list( char ), exp( X ), hAPP( list( char ), fun( list( char ), 
% 1.41/2.21    exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( char ), exp( X
% 1.41/2.21     ) ) ), fAcc( X ), Y ), Z ), T ) = hAPP( list( exp( X ) ), exp( X ), hAPP
% 1.41/2.21    ( list( char ), fun( list( exp( X ) ), exp( X ) ), hAPP( exp( X ), fun( 
% 1.41/2.21    list( char ), fun( list( exp( X ) ), exp( X ) ) ), call( X ), U ), W ), 
% 1.41/2.21    V0 ) }.
% 1.41/2.21  { ! hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun( list( exp( X
% 1.41/2.21     ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( exp( X )
% 1.41/2.21     ), exp( X ) ) ), call( X ), Y ), Z ), T ) = hAPP( list( char ), exp( X )
% 1.41/2.21    , hAPP( list( char ), fun( list( char ), exp( X ) ), hAPP( exp( X ), fun
% 1.41/2.21    ( list( char ), fun( list( char ), exp( X ) ) ), fAcc( X ), U ), W ), V0
% 1.41/2.21     ) }.
% 1.41/2.21  { ! hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X ) ), hAPP( 
% 1.41/2.21    list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp( X ), fun( 
% 1.41/2.21    list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch( X ), Y ), 
% 1.41/2.21    Z ), T ), U ) = hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun
% 1.41/2.21    ( list( exp( X ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( 
% 1.41/2.21    list( exp( X ) ), exp( X ) ) ), call( X ), W ), V0 ), V1 ) }.
% 1.41/2.21  { ! hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun( list( exp( X
% 1.41/2.21     ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( exp( X )
% 1.41/2.21     ), exp( X ) ) ), call( X ), Y ), Z ), T ) = hAPP( exp( X ), exp( X ), 
% 1.41/2.21    hAPP( X, fun( exp( X ), exp( X ) ), hAPP( list( char ), fun( X, fun( exp
% 1.41/2.21    ( X ), exp( X ) ) ), hAPP( exp( X ), fun( list( char ), fun( X, fun( exp
% 1.41/2.21    ( X ), exp( X ) ) ) ), tryCatch( X ), U ), W ), V0 ), V1 ) }.
% 1.41/2.21  { ! hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun( list( exp( X
% 1.41/2.21     ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( exp( X )
% 1.41/2.21     ), exp( X ) ) ), call( X ), Y ), Z ), T ) = hAPP( list( exp( X ) ), exp
% 1.41/2.21    ( X ), hAPP( list( char ), fun( list( exp( X ) ), exp( X ) ), hAPP( exp( 
% 1.41/2.21    X ), fun( list( char ), fun( list( exp( X ) ), exp( X ) ) ), call( X ), U
% 1.41/2.21     ), W ), V0 ), Y = U }.
% 1.41/2.21  { ! hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun( list( exp( X
% 1.41/2.21     ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( exp( X )
% 1.41/2.21     ), exp( X ) ) ), call( X ), Y ), Z ), T ) = hAPP( list( exp( X ) ), exp
% 1.41/2.21    ( X ), hAPP( list( char ), fun( list( exp( X ) ), exp( X ) ), hAPP( exp( 
% 1.41/2.21    X ), fun( list( char ), fun( list( exp( X ) ), exp( X ) ) ), call( X ), U
% 1.41/2.21     ), W ), V0 ), alpha3( Z, T, W, V0 ) }.
% 1.41/2.21  { ! Y = U, ! alpha3( Z, T, W, V0 ), hAPP( list( exp( X ) ), exp( X ), hAPP
% 1.41/2.21    ( list( char ), fun( list( exp( X ) ), exp( X ) ), hAPP( exp( X ), fun( 
% 1.41/2.21    list( char ), fun( list( exp( X ) ), exp( X ) ) ), call( X ), Y ), Z ), T
% 1.41/2.21     ) = hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun( list( exp
% 1.41/2.21    ( X ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( exp( X
% 1.41/2.21     ) ), exp( X ) ) ), call( X ), U ), W ), V0 ) }.
% 1.41/2.21  { ! alpha3( X, Y, Z, T ), X = Z }.
% 1.41/2.21  { ! alpha3( X, Y, Z, T ), Y = T }.
% 1.41/2.21  { ! X = Z, ! Y = T, alpha3( X, Y, Z, T ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.21    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.21    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.21    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.21     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.21    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), red, U ) ) ), hBOOL( hAPP( fun( product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), 
% 1.41/2.21    exp( list( char ) ), hAPP( list( char ), fun( list( exp( list( char ) ) )
% 1.41/2.21    , exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.21    fun( list( exp( list( char ) ) ), exp( list( char ) ) ) ), call( list( 
% 1.41/2.21    char ) ), X ), W ), V0 ) ), Y ) ), hAPP( product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), 
% 1.41/2.21    exp( list( char ) ), hAPP( list( char ), fun( list( exp( list( char ) ) )
% 1.41/2.21    , exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.21    fun( list( exp( list( char ) ) ), exp( list( char ) ) ) ), call( list( 
% 1.41/2.21    char ) ), Z ), W ), V0 ) ), T ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.21     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.21    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.21     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.21     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.21    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.21    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( fun( 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.21     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.21    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.21     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.21     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), hBOOL( hAPP
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.21    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), exp
% 1.41/2.21    ( list( char ) ), hAPP( list( char ), fun( list( exp( list( char ) ) ), 
% 1.41/2.21    exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( char ), fun
% 1.41/2.21    ( list( exp( list( char ) ) ), exp( list( char ) ) ) ), call( list( char
% 1.41/2.21     ) ), X ), W ), V0 ) ), Y ) ), hAPP( product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), hAPP( list( exp( list( char ) ) ), 
% 1.41/2.21    exp( list( char ) ), hAPP( list( char ), fun( list( exp( list( char ) ) )
% 1.41/2.21    , exp( list( char ) ) ), hAPP( exp( list( char ) ), fun( list( char ), 
% 1.41/2.21    fun( list( exp( list( char ) ) ), exp( list( char ) ) ) ), call( list( 
% 1.41/2.21    char ) ), Z ), W ), V0 ) ), T ) ) ), hAPP( fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), fun( product_prod( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ) ) ), bool ), transitive_rtrancl( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( list( product_prod( list( char
% 1.41/2.21     ), product_prod( list( char ), product_prod( list( product_prod( list( 
% 1.41/2.21    char ), ty ) ), list( product_prod( list( char ), product_prod( list( ty
% 1.41/2.21     ), product_prod( ty, product_prod( list( list( char ) ), exp( list( char
% 1.41/2.21     ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ) }.
% 1.41/2.21  { hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list
% 1.41/2.21    ( char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char
% 1.41/2.21     ) ) ), cast( list( char ) ), X ), val_1( list( char ), null ) ) ), Y ) )
% 1.41/2.21    , hAPP( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), val_1( list( char ), null ) ), Y ) ) )
% 1.41/2.21    , hAPP( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.21    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), red, Z ) ) ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.21    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.21    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), throw( list( char ), Z ) ), T ) ) )
% 1.41/2.21    , hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), transitive_rtrancl( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.21    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.21    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.21    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.21     ) ) ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), hBOOL( hAPP
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.21    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( list( char ), exp( list( char )
% 1.41/2.21     ), hAPP( list( char ), fun( list( char ), exp( list( char ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( list( char ), fun( list( char ), exp( list( 
% 1.41/2.21    char ) ) ) ), fAcc( list( char ) ), X ), W ), V0 ) ), Y ) ), hAPP( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), throw( list( char ), Z ) ), T ) ) ), 
% 1.41/2.21    hAPP( fun( product_prod( product_prod( exp( list( char ) ), product_prod
% 1.41/2.21    ( fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat
% 1.41/2.21    , option( product_prod( list( char ), fun( product_prod( list( char ), 
% 1.41/2.21    list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) )
% 1.41/2.21     ) ) ), bool ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), transitive_rtrancl( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.21    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), red, U ) ) ) ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.21    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.21    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), throw( list( char ), Z ) ), T ) ) )
% 1.41/2.21    , hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), transitive_rtrancl( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.21    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.21    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.21    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.21     ) ) ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ), hBOOL( hAPP
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool, hAPP( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), fun( fun( product_prod( product_prod
% 1.41/2.21    ( exp( list( char ) ), product_prod( fun( nat, option( product_prod( list
% 1.41/2.21    ( char ), fun( product_prod( list( char ), list( char ) ), option( val )
% 1.41/2.21     ) ) ) ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ) ), bool ), bool ), member( 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    hAPP( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), fun( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ) ), 
% 1.41/2.21    product_Pair( product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21    , product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), hAPP
% 1.41/2.21    ( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), exp( list( 
% 1.41/2.21    char ) ), hAPP( list( char ), fun( exp( list( char ) ), exp( list( char )
% 1.41/2.21     ) ), cast( list( char ) ), W ), X ) ), Y ) ), hAPP( product_prod( fun( 
% 1.41/2.21    nat, option( product_prod( list( char ), fun( product_prod( list( char )
% 1.41/2.21    , list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val )
% 1.41/2.21     ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), throw( list( char ), Z ) ), T ) ) )
% 1.41/2.21    , hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), transitive_rtrancl( product_prod( exp( list( char ) ), product_prod( 
% 1.41/2.21    fun( nat, option( product_prod( list( char ), fun( product_prod( list( 
% 1.41/2.21    char ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option
% 1.41/2.21    ( val ) ) ) ) ), hAPP( list( product_prod( list( char ), product_prod( 
% 1.41/2.21    list( char ), product_prod( list( product_prod( list( char ), ty ) ), 
% 1.41/2.21    list( product_prod( list( char ), product_prod( list( ty ), product_prod
% 1.41/2.21    ( ty, product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) )
% 1.41/2.21     ) ) ), fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), red, U ) ) ) ) }.
% 1.41/2.21  { ! throw( X, Y ) = val_1( X, Z ) }.
% 1.41/2.21  { ! val_1( X, Y ) = throw( X, Z ) }.
% 1.41/2.21  { ! throw( X, Y ) = hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), 
% 1.41/2.21    fun( list( exp( X ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun
% 1.41/2.21    ( list( exp( X ) ), exp( X ) ) ), call( X ), Z ), T ), U ) }.
% 1.41/2.21  { ! hAPP( list( exp( X ) ), exp( X ), hAPP( list( char ), fun( list( exp( X
% 1.41/2.21     ) ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( exp( X )
% 1.41/2.21     ), exp( X ) ) ), call( X ), Y ), Z ), T ) = throw( X, U ) }.
% 1.41/2.21  { ! throw( X, Y ) = throw( X, Z ), Y = Z }.
% 1.41/2.21  { ! Y = Z, throw( X, Y ) = throw( X, Z ) }.
% 1.41/2.21  { ! throw( X, Y ) = hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( 
% 1.41/2.21    X ) ), hAPP( list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp
% 1.41/2.21    ( X ), fun( list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch
% 1.41/2.21    ( X ), Z ), T ), U ), W ) }.
% 1.41/2.21  { ! hAPP( exp( X ), exp( X ), hAPP( X, fun( exp( X ), exp( X ) ), hAPP( 
% 1.41/2.21    list( char ), fun( X, fun( exp( X ), exp( X ) ) ), hAPP( exp( X ), fun( 
% 1.41/2.21    list( char ), fun( X, fun( exp( X ), exp( X ) ) ) ), tryCatch( X ), Y ), 
% 1.41/2.21    Z ), T ), U ) = throw( X, W ) }.
% 1.41/2.21  { ! throw( X, Y ) = hAPP( list( char ), exp( X ), hAPP( list( char ), fun( 
% 1.41/2.21    list( char ), exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( 
% 1.41/2.21    char ), exp( X ) ) ), fAcc( X ), Z ), T ), U ) }.
% 1.41/2.21  { ! hAPP( list( char ), exp( X ), hAPP( list( char ), fun( list( char ), 
% 1.41/2.21    exp( X ) ), hAPP( exp( X ), fun( list( char ), fun( list( char ), exp( X
% 1.41/2.21     ) ) ), fAcc( X ), Y ), Z ), T ) = throw( X, U ) }.
% 1.41/2.21  { ! throw( X, Y ) = hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp
% 1.41/2.21    ( X ), exp( X ) ), cast( X ), Z ), T ) }.
% 1.41/2.21  { ! hAPP( exp( X ), exp( X ), hAPP( list( char ), fun( exp( X ), exp( X ) )
% 1.41/2.21    , cast( X ), Y ), Z ) = throw( X, T ) }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), X ), Y ) ), hAPP( product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP
% 1.41/2.21    ( exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod
% 1.41/2.21    ( list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), Z ), T ) ) ), hAPP( list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( char ), product_prod( 
% 1.41/2.21    list( product_prod( list( char ), ty ) ), list( product_prod( list( char
% 1.41/2.21     ), product_prod( list( ty ), product_prod( ty, product_prod( list( list
% 1.41/2.21    ( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) ), fun( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), bool
% 1.41/2.21     ), red, U ) ) ), hBOOL( hAPP( fun( product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), throw( list( char ), X ) ), Y ) ), 
% 1.41/2.21    hAPP( product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), throw( list( char ), Z ) ), T ) ) ), 
% 1.41/2.21    hAPP( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.21    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), red, U ) ) ) }.
% 1.41/2.21  { ti( X, ti( X, Y ) ) = ti( X, Y ) }.
% 1.41/2.21  { hBOOL( hAPP( fun( product_prod( product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), bool ), bool, hAPP( product_prod( 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), bool ), member( product_prod( product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), hAPP( product_prod( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), product_prod( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), fun( product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_prod( product_prod( exp( list
% 1.41/2.21    ( char ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char ) )
% 1.41/2.21    , product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ) ), product_Pair( product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ), product_prod( exp( list( char
% 1.41/2.21     ) ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), hAPP( product_prod( fun( nat, option
% 1.41/2.21    ( product_prod( list( char ), fun( product_prod( list( char ), list( char
% 1.41/2.21     ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), 
% 1.41/2.21    product_prod( exp( list( char ) ), product_prod( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) ), hAPP( 
% 1.41/2.21    exp( list( char ) ), fun( product_prod( fun( nat, option( product_prod( 
% 1.41/2.21    list( char ), fun( product_prod( list( char ), list( char ) ), option( 
% 1.41/2.21    val ) ) ) ) ), fun( list( char ), option( val ) ) ), product_prod( exp( 
% 1.41/2.21    list( char ) ), product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ) ) ), product_Pair( exp( list( 
% 1.41/2.21    char ) ), product_prod( fun( nat, option( product_prod( list( char ), fun
% 1.41/2.21    ( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun
% 1.41/2.21    ( list( char ), option( val ) ) ) ), e ), hAPP( fun( list( char ), option
% 1.41/2.21    ( val ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ), hAPP( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( fun( list( char ), option( val ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_Pair( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), h_1 ), 
% 1.41/2.21    l_1 ) ) ), hAPP( product_prod( fun( nat, option( product_prod( list( char
% 1.41/2.21     ), fun( product_prod( list( char ), list( char ) ), option( val ) ) ) )
% 1.41/2.21     ), fun( list( char ), option( val ) ) ), product_prod( exp( list( char )
% 1.41/2.21     ), product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), hAPP( exp( list( char ) ), fun( 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ), product_prod( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ) ), product_Pair( exp( list( char ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), e_2 ), hAPP( fun( list( char ), option
% 1.41/2.21    ( val ) ), product_prod( fun( nat, option( product_prod( list( char ), 
% 1.41/2.21    fun( product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), 
% 1.41/2.21    fun( list( char ), option( val ) ) ), hAPP( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( fun( list( char ), option( val ) ), 
% 1.41/2.21    product_prod( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    list( char ), option( val ) ) ) ), product_Pair( fun( nat, option( 
% 1.41/2.21    product_prod( list( char ), fun( product_prod( list( char ), list( char )
% 1.41/2.21     ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ), h ), l )
% 1.41/2.21     ) ) ), hAPP( list( product_prod( list( char ), product_prod( list( char
% 1.41/2.21     ), product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( product_prod( product_prod( exp( list( char ) ), product_prod( fun
% 1.41/2.21    ( nat, option( product_prod( list( char ), fun( product_prod( list( char
% 1.41/2.21     ), list( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val
% 1.41/2.21     ) ) ) ), product_prod( exp( list( char ) ), product_prod( fun( nat, 
% 1.41/2.21    option( product_prod( list( char ), fun( product_prod( list( char ), list
% 1.41/2.21    ( char ) ), option( val ) ) ) ) ), fun( list( char ), option( val ) ) ) )
% 1.41/2.21     ), bool ), red, p ) ) ) }.
% 1.41/2.21  { hBOOL( hAPP( ty, bool, hAPP( exp( list( char ) ), fun( ty, bool ), hAPP( 
% 1.41/2.21    fun( list( char ), option( ty ) ), fun( exp( list( char ) ), fun( ty, 
% 1.41/2.21    bool ) ), hAPP( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), fun( 
% 1.41/2.21    fun( list( char ), option( ty ) ), fun( exp( list( char ) ), fun( ty, 
% 1.41/2.21    bool ) ) ), hAPP( list( product_prod( list( char ), product_prod( list( 
% 1.41/2.21    char ), product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.21    list( char ), list( char ) ), option( val ) ) ) ) ), fun( fun( list( char
% 1.41/2.21     ), option( ty ) ), fun( exp( list( char ) ), fun( ty, bool ) ) ) ), wTrt
% 1.41/2.21    , p ), h_1 ), e_1 ), e ), t ) ) }.
% 1.41/2.21  { hBOOL( hAPP( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), bool, 
% 1.41/2.21    hAPP( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.21    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.21    list( char ), list( char ) ), option( val ) ) ) ) ), bool ), hconf( 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ), p ), h_1 ) )
% 1.41/2.21     }.
% 1.41/2.21  { ! hBOOL( hAPP( fun( nat, option( product_prod( list( char ), fun( 
% 1.41/2.21    product_prod( list( char ), list( char ) ), option( val ) ) ) ) ), bool, 
% 1.41/2.21    hAPP( list( product_prod( list( char ), product_prod( list( char ), 
% 1.41/2.21    product_prod( list( product_prod( list( char ), ty ) ), list( 
% 1.41/2.21    product_prod( list( char ), product_prod( list( ty ), product_prod( ty, 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ) ) ) ) ) ) ) )
% 1.41/2.21    , fun( fun( nat, option( product_prod( list( char ), fun( product_prod( 
% 1.41/2.21    list( char ), list( char ) ), option( val ) ) ) ) ), bool ), hconf( 
% 1.41/2.21    product_prod( list( list( char ) ), exp( list( char ) ) ) ), p ), h ) ) }
% 1.41/2.21    .
% 1.41/2.21  
% 1.41/2.21  *** allocated 15000 integers for clauses
% 1.41/2.21  *** allocated 22500 integers for clauses
% 1.41/2.21  *** allocated 33750 integers for clauses
% 1.41/2.21  *** allocated 50625 integers for clauses
% 1.41/2.21  *** allocated 75937 integers for clauses
% 1.41/2.21  percentage equality = 0.391813, percentage horn = 0.915789
% 1.41/2.21  This is a problem with some equality
% 1.41/2.21  
% 1.41/2.21  
% 1.41/2.21  
% 1.41/2.21  Options Used:
% 1.41/2.21  
% 1.41/2.21  useres =            1
% 1.41/2.21  useparamod =        1
% 1.41/2.21  useeqrefl =         1
% 1.41/2.21  useeqfact =         1
% 1.41/2.21  usefactor =         1
% 1.41/2.21  usesimpsplitting =  0
% 1.41/2.21  usesimpdemod =      5
% 1.41/2.21  usesimpres =        3
% 1.41/2.21  
% 1.41/2.21  resimpinuse      =  1000
% 1.41/2.21  resimpclauses =     20000
% 1.41/2.21  substype =          eqrewr
% 1.41/2.21  backwardsubs =      1
% 1.41/2.21  selectoldest =      5
% 1.41/2.21  
% 1.41/2.21  litorderings [0] =  split
% 1.41/2.21  litorderings [1] =  extend the termordering, first sorting on arguments
% 1.41/2.21  
% 1.41/2.21  termordering =      kbo
% 1.41/2.21  
% 1.41/2.21  litapriori =        0
% 1.41/2.21  termapriori =       1
% 1.41/2.21  litaposteriori =    0
% 1.41/2.21  termaposteriori =   0
% 1.41/2.21  demodaposteriori =  0
% 1.41/2.21  ordereqreflfact =   0
% 1.41/2.21  
% 1.41/2.21  litselect =         negord
% 1.41/2.21  
% 1.41/2.21  maxweight =         15
% 1.41/2.21  maxdepth =          30000
% 1.41/2.21  maxlength =         115
% 1.41/2.21  maxnrvars =         195
% 1.41/2.21  excuselevel =       1
% 1.41/2.21  increasemaxweight = 1
% 1.41/2.21  
% 1.41/2.21  maxselected =       10000000
% 1.41/2.21  maxnrclauses =      10000000
% 1.41/2.21  
% 1.41/2.21  showgenerated =    0
% 1.41/2.21  showkept =         0
% 1.41/2.21  showselected =     0
% 1.41/2.21  showdeleted =      0
% 1.41/2.21  showresimp =       1
% 1.41/2.21  showstatus =       2000
% 1.41/2.21  
% 1.41/2.21  prologoutput =     0
% 1.41/2.21  nrgoals =          5000000
% 1.41/2.21  totalproof =       1
% 1.41/2.21  
% 1.41/2.21  Symbols occurring in the translation:
% 1.41/2.21  
% 1.41/2.21  {}  [0, 0]      (w:1, o:2, a:1, s:1, b:0), 
% 1.41/2.21  .  [1, 2]      (w:1, o:145, a:1, s:1, b:0), 
% 1.41/2.21  !  [4, 1]      (w:0, o:127, a:1, s:1, b:0), 
% 1.41/2.21  =  [13, 2]      (w:1, o:0, a:0, s:1, b:0), 
% 21.12/21.52  ==>  [14, 2]      (w:1, o:0, a:0, s:1, b:0), 
% 21.12/21.52  char  [35, 0]      (w:1, o:7, a:1, s:1, b:0), 
% 21.12/21.52  list  [36, 1]      (w:1, o:132, a:1, s:1, b:0), 
% 21.12/21.52  ty  [37, 0]      (w:1, o:8, a:1, s:1, b:0), 
% 21.12/21.52  product_prod  [38, 2]      (w:1, o:169, a:1, s:1, b:0), 
% 21.12/21.52  exp  [39, 1]      (w:1, o:133, a:1, s:1, b:0), 
% 21.12/21.52  nat  [40, 0]      (w:1, o:9, a:1, s:1, b:0), 
% 21.12/21.52  val  [41, 0]      (w:1, o:10, a:1, s:1, b:0), 
% 21.12/21.52  option  [42, 1]      (w:1, o:134, a:1, s:1, b:0), 
% 21.12/21.52  fun  [43, 2]      (w:1, o:170, a:1, s:1, b:0), 
% 21.12/21.52  bool  [44, 0]      (w:1, o:6, a:1, s:1, b:0), 
% 21.12/21.52  hconf  [45, 1]      (w:1, o:135, a:1, s:1, b:0), 
% 21.12/21.52  ti  [46, 2]      (w:1, o:172, a:1, s:1, b:0), 
% 21.12/21.52  call  [48, 1]      (w:1, o:136, a:1, s:1, b:0), 
% 21.12/21.52  cast  [49, 1]      (w:1, o:137, a:1, s:1, b:0), 
% 21.12/21.52  fAcc  [50, 1]      (w:1, o:138, a:1, s:1, b:0), 
% 21.12/21.52  tryCatch  [51, 1]      (w:1, o:139, a:1, s:1, b:0), 
% 21.12/21.52  val_1  [53, 2]      (w:1, o:173, a:1, s:1, b:0), 
% 21.12/21.52  throw  [54, 2]      (w:1, o:171, a:1, s:1, b:0), 
% 21.12/21.52  undefined  [55, 1]      (w:1, o:141, a:1, s:1, b:0), 
% 21.12/21.52  cons  [56, 1]      (w:1, o:142, a:1, s:1, b:0), 
% 21.12/21.52  map_add  [58, 2]      (w:1, o:174, a:1, s:1, b:0), 
% 21.12/21.52  hext  [59, 0]      (w:1, o:24, a:1, s:1, b:0), 
% 21.12/21.52  product_Pair  [62, 2]      (w:1, o:175, a:1, s:1, b:0), 
% 21.12/21.52  product_curry  [64, 3]      (w:1, o:176, a:1, s:1, b:0), 
% 21.12/21.52  produc1605651328_split  [65, 3]      (w:1, o:177, a:1, s:1, b:0), 
% 21.12/21.52  product_prod_rec  [66, 3]      (w:1, o:178, a:1, s:1, b:0), 
% 21.12/21.52  red  [67, 0]      (w:1, o:29, a:1, s:1, b:0), 
% 21.12/21.52  reds  [68, 0]      (w:1, o:30, a:1, s:1, b:0), 
% 21.12/21.52  transitive_rtrancl  [69, 1]      (w:1, o:140, a:1, s:1, b:0), 
% 21.12/21.52  null  [70, 0]      (w:1, o:31, a:1, s:1, b:0), 
% 21.12/21.52  wTrt  [71, 0]      (w:1, o:32, a:1, s:1, b:0), 
% 21.12/21.52  hAPP  [73, 4]      (w:1, o:189, a:1, s:1, b:0), 
% 21.12/21.52  hBOOL  [74, 1]      (w:1, o:143, a:1, s:1, b:0), 
% 21.12/21.52  member  [75, 1]      (w:1, o:144, a:1, s:1, b:0), 
% 21.12/21.52  e_1  [76, 0]      (w:1, o:35, a:1, s:1, b:0), 
% 21.12/21.52  p  [77, 0]      (w:1, o:36, a:1, s:1, b:0), 
% 21.12/21.52  t  [78, 0]      (w:1, o:37, a:1, s:1, b:0), 
% 21.12/21.52  e  [79, 0]      (w:1, o:38, a:1, s:1, b:0), 
% 21.12/21.52  e_2  [80, 0]      (w:1, o:39, a:1, s:1, b:0), 
% 21.12/21.52  h_1  [81, 0]      (w:1, o:40, a:1, s:1, b:0), 
% 21.12/21.52  h  [82, 0]      (w:1, o:41, a:1, s:1, b:0), 
% 21.12/21.52  l_1  [83, 0]      (w:1, o:42, a:1, s:1, b:0), 
% 21.12/21.52  l  [84, 0]      (w:1, o:43, a:1, s:1, b:0), 
% 21.12/21.52  alpha1  [180, 4]      (w:1, o:190, a:1, s:1, b:1), 
% 21.12/21.52  alpha2  [181, 5]      (w:1, o:205, a:1, s:1, b:1), 
% 21.12/21.52  alpha3  [182, 4]      (w:1, o:191, a:1, s:1, b:1), 
% 21.12/21.52  alpha4  [183, 7]      (w:1, o:234, a:1, s:1, b:1), 
% 21.12/21.52  alpha5  [184, 6]      (w:1, o:215, a:1, s:1, b:1), 
% 21.12/21.52  alpha6  [185, 9]      (w:1, o:249, a:1, s:1, b:1), 
% 21.12/21.52  alpha7  [186, 4]      (w:1, o:192, a:1, s:1, b:1), 
% 21.12/21.52  alpha8  [187, 5]      (w:1, o:206, a:1, s:1, b:1), 
% 21.12/21.52  skol1  [188, 7]      (w:1, o:235, a:1, s:1, b:1), 
% 21.12/21.52  skol2  [189, 7]      (w:1, o:237, a:1, s:1, b:1), 
% 21.12/21.52  skol3  [190, 6]      (w:1, o:218, a:1, s:1, b:1), 
% 21.12/21.52  skol4  [191, 6]      (w:1, o:222, a:1, s:1, b:1), 
% 21.12/21.52  skol5  [192, 5]      (w:1, o:209, a:1, s:1, b:1), 
% 21.12/21.52  skol6  [193, 5]      (w:1, o:212, a:1, s:1, b:1), 
% 21.12/21.52  skol7  [194, 4]      (w:1, o:193, a:1, s:1, b:1), 
% 21.12/21.52  skol8  [195, 4]      (w:1, o:194, a:1, s:1, b:1), 
% 21.12/21.52  skol9  [196, 3]      (w:1, o:179, a:1, s:1, b:1), 
% 21.12/21.52  skol10  [197, 3]      (w:1, o:180, a:1, s:1, b:1), 
% 21.12/21.52  skol11  [198, 3]      (w:1, o:181, a:1, s:1, b:1), 
% 21.12/21.52  skol12  [199, 3]      (w:1, o:182, a:1, s:1, b:1), 
% 21.12/21.52  skol13  [200, 6]      (w:1, o:223, a:1, s:1, b:1), 
% 21.12/21.52  skol14  [201, 6]      (w:1, o:224, a:1, s:1, b:1), 
% 21.12/21.52  skol15  [202, 6]      (w:1, o:225, a:1, s:1, b:1), 
% 21.12/21.52  skol16  [203, 7]      (w:1, o:236, a:1, s:1, b:1), 
% 21.12/21.52  skol17  [204, 4]      (w:1, o:195, a:1, s:1, b:1), 
% 21.12/21.52  skol18  [205, 4]      (w:1, o:196, a:1, s:1, b:1), 
% 21.12/21.52  skol19  [206, 4]      (w:1, o:197, a:1, s:1, b:1), 
% 21.12/21.52  skol20  [207, 4]      (w:1, o:198, a:1, s:1, b:1), 
% 21.12/21.52  skol21  [208, 4]      (w:1, o:199, a:1, s:1, b:1), 
% 21.12/21.52  skol22  [209, 7]      (w:1, o:238, a:1, s:1, b:1), 
% 21.12/21.52  skol23  [210, 7]      (w:1, o:239, a:1, s:1, b:1), 
% 21.12/21.52  skol24  [211, 6]      (w:1, o:216, a:1, s:1, b:1), 
% 21.12/21.52  skol25  [212, 6]      (w:1, o:217, a:1, s:1, b:1), 
% 21.12/21.52  skol26  [213, 5]      (w:1, o:213, a:1, s:1, b:1), 
% 21.12/21.52  skol27  [214, 5]      (w:1, o:214, a:1, s:1, b:1), 
% 21.12/21.52  skol28  [215, 4]      (w:1, o:200, a:1, s:1, b:1), 
% 21.12/21.52  skol29  [216, 4]     Cputime limit exceeded (core dumped)
%------------------------------------------------------------------------------