TPTP Problem File: SWW857+1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : SWW857+1 : TPTP v8.2.0. Released v7.3.0.
% Domain   : Software Verification
% Problem  : gen_gc__36__gc_inv_init__dep
% Version  : Especial.
% English  :

% Refs     : [Kum18] Kumar (2018), Email to Geoff Sutcliffe
% Source   : [Kum18]
% Names    : gen_gc__36__gc_inv_init__dep [Kum18]

% Status   : Theorem
% Rating   : 1.00 v7.3.0
% Syntax   : Number of formulae    :   52 (  15 unt;   0 def)
%            Number of atoms       :  209 (  88 equ)
%            Maximal formula atoms :   26 (   4 avg)
%            Number of connectives :  172 (  15   ~;   8   |;  77   &)
%                                         (  40 <=>;  32  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   39 (   7 avg)
%            Maximal term depth    :   30 (   2 avg)
%            Number of predicates  :    2 (   1 usr;   0 prp; 1-2 aty)
%            Number of functors    :   87 (  87 usr;  14 con; 0-3 aty)
%            Number of variables   :  234 ( 227   !;   7   ?)
% SPC      : FOF_THM_RFO_SEQ

% Comments :
%------------------------------------------------------------------------------
fof('HL_TRUTH',axiom,
    p__01(s__02(cbool__00,cT__00)) ).

fof('HL_FALSITY',axiom,
    ~ p__01(s__02(cbool__00,cF__00)) ).

fof('HL_BOOL_CASES',axiom,
    ! [Vt] :
      ( s__02(cbool__00,Vt) = s__02(cbool__00,cT__00)
      | s__02(cbool__00,Vt) = s__02(cbool__00,cF__00) ) ).

fof('HL_EXT',axiom,
    ! [V_3f2384,V_3f2380,Vf,Vg] :
      ( ! [Vx] : s__02(V_3f2380,chapp__02(s__02(cfun__02(V_3f2384,V_3f2380),Vf),s__02(V_3f2384,Vx))) = s__02(V_3f2380,chapp__02(s__02(cfun__02(V_3f2384,V_3f2380),Vg),s__02(V_3f2384,Vx)))
     => s__02(cfun__02(V_3f2384,V_3f2380),Vf) = s__02(cfun__02(V_3f2384,V_3f2380),Vg) ) ).

fof('thm.bool.TRUTH',axiom,
    p__01(s__02(cbool__00,cT__00)) ).

fof('thm.bool.IMP_ANTISYM_AX',axiom,
    ! [V_27t1_27,V_27t2_27] :
      ( ( p__01(s__02(cbool__00,V_27t1_27))
       => p__01(s__02(cbool__00,V_27t2_27)) )
     => ( ( p__01(s__02(cbool__00,V_27t2_27))
         => p__01(s__02(cbool__00,V_27t1_27)) )
       => s__02(cbool__00,V_27t1_27) = s__02(cbool__00,V_27t2_27) ) ) ).

fof('thm.bool.FALSITY',axiom,
    ! [V_27t_27] :
      ( p__01(s__02(cbool__00,cF__00))
     => p__01(s__02(cbool__00,V_27t_27)) ) ).

fof('thm.bool.EXCLUDED_MIDDLE',axiom,
    ! [V_27t_27] :
      ( p__01(s__02(cbool__00,V_27t_27))
      | ~ p__01(s__02(cbool__00,V_27t_27)) ) ).

fof('thm.bool.LET_THM',axiom,
    ! [V_27B_27,V_27A_27,V_27f_27,V_27x_27] : s__02(V_27B_27,c_27const_2ebool_2eLET_27__02(s__02(cfun__02(V_27A_27,V_27B_27),V_27f_27),s__02(V_27A_27,V_27x_27))) = s__02(V_27B_27,chapp__02(s__02(cfun__02(V_27A_27,V_27B_27),V_27f_27),s__02(V_27A_27,V_27x_27))) ).

fof('thm.bool.FORALL_SIMP',axiom,
    ! [V_27A_27,V_27t_27] :
      ( ! [V_27x_27] : p__01(s__02(cbool__00,V_27t_27))
    <=> p__01(s__02(cbool__00,V_27t_27)) ) ).

fof('thm.bool.EXISTS_SIMP',axiom,
    ! [V_27A_27,V_27t_27] :
      ( ? [V_27x_27] : p__01(s__02(cbool__00,V_27t_27))
    <=> p__01(s__02(cbool__00,V_27t_27)) ) ).

fof('thm.bool.AND_CLAUSES',axiom,
    ! [V_27t_27] :
      ( ( ( p__01(s__02(cbool__00,cT__00))
          & p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,V_27t_27)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
          & p__01(s__02(cbool__00,cT__00)) )
      <=> p__01(s__02(cbool__00,V_27t_27)) )
      & ( ( p__01(s__02(cbool__00,cF__00))
          & p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,cF__00)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
          & p__01(s__02(cbool__00,cF__00)) )
      <=> p__01(s__02(cbool__00,cF__00)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
          & p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,V_27t_27)) ) ) ).

fof('thm.bool.OR_CLAUSES',axiom,
    ! [V_27t_27] :
      ( ( ( p__01(s__02(cbool__00,cT__00))
          | p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,cT__00)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
          | p__01(s__02(cbool__00,cT__00)) )
      <=> p__01(s__02(cbool__00,cT__00)) )
      & ( ( p__01(s__02(cbool__00,cF__00))
          | p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,V_27t_27)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
          | p__01(s__02(cbool__00,cF__00)) )
      <=> p__01(s__02(cbool__00,V_27t_27)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
          | p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,V_27t_27)) ) ) ).

fof('thm.bool.IMP_CLAUSES',axiom,
    ! [V_27t_27] :
      ( ( ( p__01(s__02(cbool__00,cT__00))
         => p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,V_27t_27)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
         => p__01(s__02(cbool__00,cT__00)) )
      <=> p__01(s__02(cbool__00,cT__00)) )
      & ( ( p__01(s__02(cbool__00,cF__00))
         => p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,cT__00)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
         => p__01(s__02(cbool__00,V_27t_27)) )
      <=> p__01(s__02(cbool__00,cT__00)) )
      & ( ( p__01(s__02(cbool__00,V_27t_27))
         => p__01(s__02(cbool__00,cF__00)) )
      <=> ~ p__01(s__02(cbool__00,V_27t_27)) ) ) ).

fof('thm.bool.REFL_CLAUSE',axiom,
    ! [V_27A_27,V_27x_27] :
      ( s__02(V_27A_27,V_27x_27) = s__02(V_27A_27,V_27x_27)
    <=> p__01(s__02(cbool__00,cT__00)) ) ).

fof('thm.bool.EQ_SYM_EQ',axiom,
    ! [V_27A_27,V_27x_27,V_27y_27] :
      ( s__02(V_27A_27,V_27x_27) = s__02(V_27A_27,V_27y_27)
    <=> s__02(V_27A_27,V_27y_27) = s__02(V_27A_27,V_27x_27) ) ).

fof('thm.bool.EQ_CLAUSES',axiom,
    ! [V_27t_27] :
      ( ( s__02(cbool__00,cT__00) = s__02(cbool__00,V_27t_27)
      <=> p__01(s__02(cbool__00,V_27t_27)) )
      & ( s__02(cbool__00,V_27t_27) = s__02(cbool__00,cT__00)
      <=> p__01(s__02(cbool__00,V_27t_27)) )
      & ( s__02(cbool__00,cF__00) = s__02(cbool__00,V_27t_27)
      <=> ~ p__01(s__02(cbool__00,V_27t_27)) )
      & ( s__02(cbool__00,V_27t_27) = s__02(cbool__00,cF__00)
      <=> ~ p__01(s__02(cbool__00,V_27t_27)) ) ) ).

fof('thm.bool.COND_CLAUSES',axiom,
    ! [V_27A_27,V_27t1_27,V_27t2_27] :
      ( s__02(V_27A_27,c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,cT__00),s__02(V_27A_27,V_27t1_27),s__02(V_27A_27,V_27t2_27))) = s__02(V_27A_27,V_27t1_27)
      & s__02(V_27A_27,c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,cF__00),s__02(V_27A_27,V_27t1_27),s__02(V_27A_27,V_27t2_27))) = s__02(V_27A_27,V_27t2_27) ) ).

fof('thm.bool.COND_ID',axiom,
    ! [V_27A_27,V_27b_27,V_27t_27] : s__02(V_27A_27,c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,V_27b_27),s__02(V_27A_27,V_27t_27),s__02(V_27A_27,V_27t_27))) = s__02(V_27A_27,V_27t_27) ).

fof('thm.bool.AND_IMP_INTRO',axiom,
    ! [V_27t1_27,V_27t2_27,V_27t3_27] :
      ( ( p__01(s__02(cbool__00,V_27t1_27))
       => ( p__01(s__02(cbool__00,V_27t2_27))
         => p__01(s__02(cbool__00,V_27t3_27)) ) )
    <=> ( ( p__01(s__02(cbool__00,V_27t1_27))
          & p__01(s__02(cbool__00,V_27t2_27)) )
       => p__01(s__02(cbool__00,V_27t3_27)) ) ) ).

fof('thm.bool.IMP_CONG',axiom,
    ! [V_27x_27,V_27x_7c39_7c_27,V_27y_27,V_27y_7c39_7c_27] :
      ( ( s__02(cbool__00,V_27x_27) = s__02(cbool__00,V_27x_7c39_7c_27)
        & ( p__01(s__02(cbool__00,V_27x_7c39_7c_27))
         => s__02(cbool__00,V_27y_27) = s__02(cbool__00,V_27y_7c39_7c_27) ) )
     => ( ( p__01(s__02(cbool__00,V_27x_27))
         => p__01(s__02(cbool__00,V_27y_27)) )
      <=> ( p__01(s__02(cbool__00,V_27x_7c39_7c_27))
         => p__01(s__02(cbool__00,V_27y_7c39_7c_27)) ) ) ) ).

fof('thm.bool.COND_CONG',axiom,
    ! [V_27A_27,V_27P_27,V_27Q_27,V_27x_27,V_27x_7c39_7c_27,V_27y_27,V_27y_7c39_7c_27] :
      ( ( s__02(cbool__00,V_27P_27) = s__02(cbool__00,V_27Q_27)
        & ( p__01(s__02(cbool__00,V_27Q_27))
         => s__02(V_27A_27,V_27x_27) = s__02(V_27A_27,V_27x_7c39_7c_27) )
        & ( ~ p__01(s__02(cbool__00,V_27Q_27))
         => s__02(V_27A_27,V_27y_27) = s__02(V_27A_27,V_27y_7c39_7c_27) ) )
     => s__02(V_27A_27,c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,V_27P_27),s__02(V_27A_27,V_27x_27),s__02(V_27A_27,V_27y_27))) = s__02(V_27A_27,c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,V_27Q_27),s__02(V_27A_27,V_27x_7c39_7c_27),s__02(V_27A_27,V_27y_7c39_7c_27))) ) ).

fof('thm.bool.bool_case_thm',axiom,
    ! [V_27A_27] :
      ( ! [V_27t1_27,V_27t2_27] : s__02(V_27A_27,c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,cT__00),s__02(V_27A_27,V_27t1_27),s__02(V_27A_27,V_27t2_27))) = s__02(V_27A_27,V_27t1_27)
      & ! [V_27t1_27,V_27t2_27] : s__02(V_27A_27,c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,cF__00),s__02(V_27A_27,V_27t1_27),s__02(V_27A_27,V_27t2_27))) = s__02(V_27A_27,V_27t2_27) ) ).

fof('thm.combin.K_THM',axiom,
    ! [V_27B_27,V_27A_27,V_27x_27,V_27y_27] : s__02(V_27A_27,chapp__02(s__02(cfun__02(V_27B_27,V_27A_27),c_27const_2ecombin_2eK_27__01(s__02(V_27A_27,V_27x_27))),s__02(V_27B_27,V_27y_27))) = s__02(V_27A_27,V_27x_27) ).

fof('thm.combin.I_THM',axiom,
    ! [V_27A_27,V_27x_27] : s__02(V_27A_27,chapp__02(s__02(cfun__02(V_27A_27,V_27A_27),c_27const_2ecombin_2eI_27__00),s__02(V_27A_27,V_27x_27))) = s__02(V_27A_27,V_27x_27) ).

fof('thm.combin.K_o_THM',axiom,
    ! [V_27B_27,V_27A_27,V_27C_27,V_27F_27,V_27E_27,V_27D_27] :
      ( ! [V_27f_27,V_27v_27] : s__02(cfun__02(V_27A_27,V_27C_27),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(V_27B_27,V_27C_27),c_27const_2ecombin_2eK_27__01(s__02(V_27C_27,V_27v_27))),s__02(cfun__02(V_27A_27,V_27B_27),V_27f_27))) = s__02(cfun__02(V_27A_27,V_27C_27),c_27const_2ecombin_2eK_27__01(s__02(V_27C_27,V_27v_27)))
      & ! [V_27f_27,V_27v_27] : s__02(cfun__02(V_27F_27,V_27E_27),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(V_27D_27,V_27E_27),V_27f_27),s__02(cfun__02(V_27F_27,V_27D_27),c_27const_2ecombin_2eK_27__01(s__02(V_27D_27,V_27v_27))))) = s__02(cfun__02(V_27F_27,V_27E_27),c_27const_2ecombin_2eK_27__01(s__02(V_27E_27,chapp__02(s__02(cfun__02(V_27D_27,V_27E_27),V_27f_27),s__02(V_27D_27,V_27v_27))))) ) ).

fof('thm.arithmetic.ADD_0',axiom,
    ! [V_27m_27] : s__02(c_27type_2enum_2enum_27__00,chapp__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2earithmetic_2e_2b_27__01(s__02(c_27type_2enum_2enum_27__00,V_27m_27))),s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00))) = s__02(c_27type_2enum_2enum_27__00,V_27m_27) ).

fof('thm.option.NOT_NONE_SOME',axiom,
    ! [V_27A_27,V_27x_27] : s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eNONE_27__00) != s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eSOME_27__01(s__02(V_27A_27,V_27x_27))) ).

fof('thm.option.IF_EQUALS_OPTION',axiom,
    ! [V_27A_27,V_27y_27,V_27x_27,V_27P_27] :
      ( ( s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,V_27P_27),s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eSOME_27__01(s__02(V_27A_27,V_27x_27))),s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eNONE_27__00))) = s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eNONE_27__00)
      <=> ~ p__01(s__02(cbool__00,V_27P_27)) )
      & ( s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,V_27P_27),s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eNONE_27__00),s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eSOME_27__01(s__02(V_27A_27,V_27x_27))))) = s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eNONE_27__00)
      <=> p__01(s__02(cbool__00,V_27P_27)) )
      & ( s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,V_27P_27),s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eSOME_27__01(s__02(V_27A_27,V_27x_27))),s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eNONE_27__00))) = s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eSOME_27__01(s__02(V_27A_27,V_27y_27)))
      <=> ( p__01(s__02(cbool__00,V_27P_27))
          & s__02(V_27A_27,V_27x_27) = s__02(V_27A_27,V_27y_27) ) )
      & ( s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,V_27P_27),s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eNONE_27__00),s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eSOME_27__01(s__02(V_27A_27,V_27x_27))))) = s__02(c_27type_2eoption_2eoption_27__01(V_27A_27),c_27const_2eoption_2eSOME_27__01(s__02(V_27A_27,V_27y_27)))
      <=> ( ~ p__01(s__02(cbool__00,V_27P_27))
          & s__02(V_27A_27,V_27x_27) = s__02(V_27A_27,V_27y_27) ) ) ) ).

fof('thm.pred_set.NOT_IN_EMPTY',axiom,
    ! [V_27A_27,V_27x_27] : ~ p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(V_27A_27,V_27x_27),s__02(cfun__02(V_27A_27,cbool__00),c_27const_2epred__set_2eEMPTY_27__00)))) ).

fof('thm.pred_set.UNION_EMPTY',axiom,
    ! [V_27A_27] :
      ( ! [V_27s_27] : s__02(cfun__02(V_27A_27,cbool__00),c_27const_2epred__set_2eUNION_27__02(s__02(cfun__02(V_27A_27,cbool__00),c_27const_2epred__set_2eEMPTY_27__00),s__02(cfun__02(V_27A_27,cbool__00),V_27s_27))) = s__02(cfun__02(V_27A_27,cbool__00),V_27s_27)
      & ! [V_27s_27] : s__02(cfun__02(V_27A_27,cbool__00),c_27const_2epred__set_2eUNION_27__02(s__02(cfun__02(V_27A_27,cbool__00),V_27s_27),s__02(cfun__02(V_27A_27,cbool__00),c_27const_2epred__set_2eEMPTY_27__00))) = s__02(cfun__02(V_27A_27,cbool__00),V_27s_27) ) ).

fof('thm.pred_set.BIJ_EMPTY',axiom,
    ! [V_27B_27,V_27A_27,V_27f_27] :
      ( ! [V_27s_27] :
          ( p__01(s__02(cbool__00,c_27const_2epred__set_2eBIJ_27__03(s__02(cfun__02(V_27A_27,V_27B_27),V_27f_27),s__02(cfun__02(V_27A_27,cbool__00),c_27const_2epred__set_2eEMPTY_27__00),s__02(cfun__02(V_27B_27,cbool__00),V_27s_27))))
        <=> s__02(cfun__02(V_27B_27,cbool__00),V_27s_27) = s__02(cfun__02(V_27B_27,cbool__00),c_27const_2epred__set_2eEMPTY_27__00) )
      & ! [V_27s_27] :
          ( p__01(s__02(cbool__00,c_27const_2epred__set_2eBIJ_27__03(s__02(cfun__02(V_27A_27,V_27B_27),V_27f_27),s__02(cfun__02(V_27A_27,cbool__00),V_27s_27),s__02(cfun__02(V_27B_27,cbool__00),c_27const_2epred__set_2eEMPTY_27__00))))
        <=> s__02(cfun__02(V_27A_27,cbool__00),V_27s_27) = s__02(cfun__02(V_27A_27,cbool__00),c_27const_2epred__set_2eEMPTY_27__00) ) ) ).

fof('thm.list.APPEND',axiom,
    ! [V_27A_27] :
      ( ! [V_27l_27] : s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eNIL_27__00),s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l_27))) = s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l_27)
      & ! [V_27l1_27,V_27l2_27,V_27h_27] : s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eCONS_27__02(s__02(V_27A_27,V_27h_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l1_27))),s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l2_27))) = s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eCONS_27__02(s__02(V_27A_27,V_27h_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l1_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l2_27))))) ) ).

fof('thm.list.LIST_TO_SET',axiom,
    ! [V_27A_27,V_27B_27,V_27t_27,V_27h_27] :
      ( s__02(cfun__02(V_27A_27,cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eNIL_27__00))) = s__02(cfun__02(V_27A_27,cbool__00),c_27const_2epred__set_2eEMPTY_27__00)
      & s__02(cfun__02(V_27B_27,cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(V_27B_27),c_27const_2elist_2eCONS_27__02(s__02(V_27B_27,V_27h_27),s__02(c_27type_2elist_2elist_27__01(V_27B_27),V_27t_27))))) = s__02(cfun__02(V_27B_27,cbool__00),c_27const_2epred__set_2eINSERT_27__02(s__02(V_27B_27,V_27h_27),s__02(cfun__02(V_27B_27,cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(V_27B_27),V_27t_27))))) ) ).

fof('thm.list.EVERY_DEF',axiom,
    ! [V_27A_27] :
      ( ! [V_27P_27] : s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(V_27A_27,cbool__00),V_27P_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eNIL_27__00))) = s__02(cbool__00,cT__00)
      & ! [V_27P_27,V_27h_27,V_27t_27] :
          ( p__01(s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(V_27A_27,cbool__00),V_27P_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eCONS_27__02(s__02(V_27A_27,V_27h_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27t_27))))))
        <=> ( p__01(s__02(cbool__00,chapp__02(s__02(cfun__02(V_27A_27,cbool__00),V_27P_27),s__02(V_27A_27,V_27h_27))))
            & p__01(s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(V_27A_27,cbool__00),V_27P_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27t_27)))) ) ) ) ).

fof('thm.list.APPEND_NIL',axiom,
    ! [V_27A_27,V_27l_27] : s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eNIL_27__00))) = s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l_27) ).

fof('thm.list.MEM_APPEND',axiom,
    ! [V_27A_27,V_27e_27,V_27l1_27,V_27l2_27] :
      ( p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(V_27A_27,V_27e_27),s__02(cfun__02(V_27A_27,cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(V_27A_27),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l1_27),s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l2_27))))))))
    <=> ( p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(V_27A_27,V_27e_27),s__02(cfun__02(V_27A_27,cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l1_27))))))
        | p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(V_27A_27,V_27e_27),s__02(cfun__02(V_27A_27,cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(V_27A_27),V_27l2_27)))))) ) ) ).

fof('thm.finite_map.FLOOKUP_DEF',axiom,
    ! [V_27A_27,V_27B_27,V_27f_27,V_27x_27] : s__02(c_27type_2eoption_2eoption_27__01(V_27B_27),c_27const_2efinite__map_2eFLOOKUP_27__02(s__02(c_27type_2efinite__map_2efmap_27__02(V_27A_27,V_27B_27),V_27f_27),s__02(V_27A_27,V_27x_27))) = s__02(c_27type_2eoption_2eoption_27__01(V_27B_27),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(V_27A_27,V_27x_27),s__02(cfun__02(V_27A_27,cbool__00),c_27const_2efinite__map_2eFDOM_27__01(s__02(c_27type_2efinite__map_2efmap_27__02(V_27A_27,V_27B_27),V_27f_27))))),s__02(c_27type_2eoption_2eoption_27__01(V_27B_27),c_27const_2eoption_2eSOME_27__01(s__02(V_27B_27,c_27const_2efinite__map_2eFAPPLY_27__02(s__02(c_27type_2efinite__map_2efmap_27__02(V_27A_27,V_27B_27),V_27f_27),s__02(V_27A_27,V_27x_27))))),s__02(c_27type_2eoption_2eoption_27__01(V_27B_27),c_27const_2eoption_2eNONE_27__00))) ).

fof('thm.misc.plus_0_I',axiom,
    s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2earithmetic_2e_2b_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00))) = s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2ecombin_2eI_27__00) ).

fof('thm.gc_shared.heap_element_distinct',axiom,
    ! [V_27A_27,V_27B_27] :
      ( ! [V_27a2_27,V_27a1_27,V_27a0_27,V_27a_27] : s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eUnused_27__01(s__02(c_27type_2enum_2enum_27__00,V_27a_27))) != s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eForwardPointer_27__03(s__02(c_27type_2enum_2enum_27__00,V_27a0_27),s__02(V_27A_27,V_27a1_27),s__02(c_27type_2enum_2enum_27__00,V_27a2_27)))
      & ! [V_27a2_27,V_27a1_27,V_27a0_27,V_27a_27] : s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eUnused_27__01(s__02(c_27type_2enum_2enum_27__00,V_27a_27))) != s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eDataElement_27__03(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27A_27)),V_27a0_27),s__02(c_27type_2enum_2enum_27__00,V_27a1_27),s__02(V_27B_27,V_27a2_27)))
      & ! [V_27a2_7c39_7c_27,V_27a2_27,V_27a1_7c39_7c_27,V_27a1_27,V_27a0_7c39_7c_27,V_27a0_27] : s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eForwardPointer_27__03(s__02(c_27type_2enum_2enum_27__00,V_27a0_27),s__02(V_27A_27,V_27a1_27),s__02(c_27type_2enum_2enum_27__00,V_27a2_27))) != s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eDataElement_27__03(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27A_27)),V_27a0_7c39_7c_27),s__02(c_27type_2enum_2enum_27__00,V_27a1_7c39_7c_27),s__02(V_27B_27,V_27a2_7c39_7c_27))) ) ).

fof('thm.gc_shared.gc_state_fupdfupds',axiom,
    ! [V_27A_27,V_27B_27] :
      ( ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__old__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__old__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__old__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__h1__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__h1__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__h1__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__h2__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__h2__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__h2__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r4__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r4__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r4__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r3__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r3__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r3__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r2__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r2__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r2__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r1__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r1__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r1__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__a__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__a__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__a__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),V_27f_27),s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__n__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__n__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__n__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),V_27f_27),s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__ok__fupd_27__02(s__02(cfun__02(cbool__00,cbool__00),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__ok__fupd_27__02(s__02(cfun__02(cbool__00,cbool__00),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__ok__fupd_27__02(s__02(cfun__02(cbool__00,cbool__00),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(cbool__00,cbool__00),V_27f_27),s__02(cfun__02(cbool__00,cbool__00),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27)))
      & ! [V_27g0_27,V_27g_27,V_27f_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap0__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap0__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))))) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap0__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eo_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27f_27),s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),V_27g0_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),V_27g_27))) ) ).

fof('thm.gc_shared.empty_state_def',axiom,
    ! [V_27A_27,V_27B_27] : s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eempty__state_27__00) = s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__old__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__h1__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__h2__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r4__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r3__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r2__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__r1__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__a__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__n__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__ok__fupd_27__02(s__02(cfun__02(cbool__00,cbool__00),c_27const_2ecombin_2eK_27__01(s__02(cbool__00,cT__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap0__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2ebool_2eARB_27__00))))))))))))))))))))))))) ).

fof('thm.gc_shared.heap_length_NIL',axiom,
    ! [V_27A_27,V_27B_27] : s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eheap__length_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))) = s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00) ).

fof('thm.gc_shared.heap_lookup_def',axiom,
    ! [V_27A_27,V_27B_27] :
      ( ! [V_27a_27] : s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2egc__shared_2eheap__lookup_27__02(s__02(c_27type_2enum_2enum_27__00,V_27a_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))) = s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2eoption_2eNONE_27__00)
      & ! [V_27a_27,V_27x_27,V_27xs_27] :
        ? [Vv] :
          ( ( p__01(s__02(cbool__00,Vv))
          <=> s__02(c_27type_2enum_2enum_27__00,V_27a_27) = s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00) )
          & s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2egc__shared_2eheap__lookup_27__02(s__02(c_27type_2enum_2enum_27__00,V_27a_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eCONS_27__02(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),V_27x_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27))))) = s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,Vv),s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2eoption_2eSOME_27__01(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),V_27x_27))),s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,c_27const_2eprim__rec_2e_3c_27__02(s__02(c_27type_2enum_2enum_27__00,V_27a_27),s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eel__length_27__01(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),V_27x_27))))),s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2eoption_2eNONE_27__00),s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2egc__shared_2eheap__lookup_27__02(s__02(c_27type_2enum_2enum_27__00,c_27const_2earithmetic_2e_2d_27__02(s__02(c_27type_2enum_2enum_27__00,V_27a_27),s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eel__length_27__01(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),V_27x_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27))))))) ) ) ).

fof('thm.gc_shared.heap_ok_def',axiom,
    ! [V_27A_27,V_27B_27,V_27heap_27,V_27limit_27] :
      ( p__01(s__02(cbool__00,c_27const_2egc__shared_2eheap__ok_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27),s__02(c_27type_2enum_2enum_27__00,V_27limit_27))))
    <=> ( s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eheap__length_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27))) = s__02(c_27type_2enum_2enum_27__00,V_27limit_27)
        & s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eFILTER_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),cbool__00),c_27const_2egc__shared_2eisForwardPointer_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27))) = s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00)
        & ! [V_27xs_27,V_27l_27,V_27d_27,V_27ptr_27,V_27u_27] :
            ( ( p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eDataElement_27__03(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27A_27)),V_27xs_27),s__02(c_27type_2enum_2enum_27__00,V_27l_27),s__02(V_27B_27,V_27d_27))),s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27))))))
              & p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(c_27type_2egc__shared_2eheap__address_27__01(V_27A_27),c_27const_2egc__shared_2ePointer_27__02(s__02(c_27type_2enum_2enum_27__00,V_27ptr_27),s__02(V_27A_27,V_27u_27))),s__02(cfun__02(c_27type_2egc__shared_2eheap__address_27__01(V_27A_27),cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27A_27)),V_27xs_27)))))) )
           => p__01(s__02(cbool__00,c_27const_2egc__shared_2eisSomeDataElement_27__01(s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2egc__shared_2eheap__lookup_27__02(s__02(c_27type_2enum_2enum_27__00,V_27ptr_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27)))))) ) ) ) ).

fof('thm.gc_shared.heap_expand_def',axiom,
    ! [V_27A_27,V_27B_27,V_27n_27] :
    ? [Vv] :
      ( ( p__01(s__02(cbool__00,Vv))
      <=> s__02(c_27type_2enum_2enum_27__00,V_27n_27) = s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00) )
      & s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2egc__shared_2eheap__expand_27__01(s__02(c_27type_2enum_2enum_27__00,V_27n_27))) = s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,Vv),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eCONS_27__02(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eUnused_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2earithmetic_2e_2d_27__02(s__02(c_27type_2enum_2enum_27__00,V_27n_27),s__02(c_27type_2enum_2enum_27__00,c_27const_2earithmetic_2eNUMERAL_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2earithmetic_2eBIT1_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2earithmetic_2eZERO_27__00))))))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))))) ) ).

fof('thm.gc_shared.heap_addresses_def',axiom,
    ! [V_27A_27,V_27B_27] :
      ( ! [V_27a_27] : s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2egc__shared_2eheap__addresses_27__02(s__02(c_27type_2enum_2enum_27__00,V_27a_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00))) = s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2epred__set_2eEMPTY_27__00)
      & ! [V_27a_27,V_27x_27,V_27xs_27] : s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2egc__shared_2eheap__addresses_27__02(s__02(c_27type_2enum_2enum_27__00,V_27a_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eCONS_27__02(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),V_27x_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27))))) = s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2epred__set_2eINSERT_27__02(s__02(c_27type_2enum_2enum_27__00,V_27a_27),s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2egc__shared_2eheap__addresses_27__02(s__02(c_27type_2enum_2enum_27__00,chapp__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2earithmetic_2e_2b_27__01(s__02(c_27type_2enum_2enum_27__00,V_27a_27))),s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eel__length_27__01(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),V_27x_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27))))) ) ).

fof('thm.gc_shared.FILTER_LEMMA',axiom,
    ! [V_27A_27,V_27B_27,V__0] :
      ( ! [V_27h_27] :
          ( p__01(s__02(cbool__00,chapp__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),cbool__00),V__0),s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),V_27h_27))))
        <=> ~ p__01(s__02(cbool__00,chapp__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),cbool__00),c_27const_2egc__shared_2eisForwardPointer_27__00),s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),V_27h_27)))) )
     => ! [V_27heap_27] :
          ( s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eFILTER_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),cbool__00),c_27const_2egc__shared_2eisForwardPointer_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27))) = s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00)
         => s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eFILTER_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),cbool__00),V__0),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27))) = s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27) ) ) ).

fof('thm.gc_shared.heaps_similar_REFL',axiom,
    ! [V_27A_27,V_27B_27,V_27xs_27] :
      ( s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eFILTER_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),cbool__00),c_27const_2egc__shared_2eisForwardPointer_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27))) = s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00)
     => p__01(s__02(cbool__00,c_27const_2egc__shared_2eheaps__similar_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27)))) ) ).

fof('thm.gc_shared.heap_map_EMPTY',axiom,
    ! [V_27A_27,V_27B_27,V_27xs_27,V_27n_27] :
      ( s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eFILTER_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27),cbool__00),c_27const_2egc__shared_2eisForwardPointer_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27))) = s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27const_2elist_2eNIL_27__00)
     => s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2efinite__map_2eFDOM_27__01(s__02(c_27type_2efinite__map_2efmap_27__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2egc__shared_2eheap__map_27__02(s__02(c_27type_2enum_2enum_27__00,V_27n_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27xs_27))))) = s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2epred__set_2eEMPTY_27__00) ) ).

fof('thm.gen_gc.gc_inv_def',axiom,
    ! [V_27B_27,V_27A_27,V__1] :
      ( ! [V_27h_27] :
          ( p__01(s__02(cbool__00,chapp__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),V__1),s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),V_27h_27))))
        <=> ~ p__01(s__02(cbool__00,chapp__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),c_27const_2egc__shared_2eisForwardPointer_27__00),s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),V_27h_27)))) )
     => ! [V__0] :
          ( ! [V_27heap0_27,V_27conf_27,V_27state_27,V_27heap_7c39_7c_27] :
              ( p__01(s__02(cbool__00,chapp__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cbool__00),chapp__02(s__02(cfun__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cbool__00)),chapp__02(s__02(cfun__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),cfun__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cbool__00))),chapp__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cfun__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),cfun__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cbool__00)))),V__0),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),V_27heap0_27))),s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),V_27heap_7c39_7c_27))))
            <=> ( s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eheap__length_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__h1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__h2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))) = s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2egc__state__a_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27)))
                & s__02(c_27type_2enum_2enum_27__00,chapp__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2earithmetic_2e_2b_27__01(s__02(c_27type_2enum_2enum_27__00,chapp__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2earithmetic_2e_2b_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2egc__state__a_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2egc__state__n_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))),s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eheap__length_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r4_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r3_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))))) = s__02(c_27type_2enum_2enum_27__00,c_27const_2egen__gc_2egen__gc__conf__limit_27__01(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27)))
                & s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eheap__length_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eFILTER_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),V__1),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__heap_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))) = s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2egc__state__n_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27)))
                & s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eheap__length_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__heap_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))) = s__02(c_27type_2enum_2enum_27__00,c_27const_2egen__gc_2egen__gc__conf__limit_27__01(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27)))
                & p__01(s__02(cbool__00,c_27const_2egc__shared_2egc__state__ok_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))
                & p__01(s__02(cbool__00,c_27const_2egc__shared_2eheap__ok_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),V_27heap0_27),s__02(c_27type_2enum_2enum_27__00,c_27const_2egen__gc_2egen__gc__conf__limit_27__01(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27))))))
                & p__01(s__02(cbool__00,c_27const_2egc__shared_2eheaps__similar_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),V_27heap0_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__heap_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))
                & p__01(s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),c_27const_2egc__shared_2eisDataElement_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__h1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))
                & p__01(s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),c_27const_2egc__shared_2eisDataElement_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__h2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))
                & p__01(s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),c_27const_2egc__shared_2eisDataElement_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))
                & p__01(s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),c_27const_2egc__shared_2eisDataElement_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))
                & p__01(s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),c_27const_2egc__shared_2eisDataElement_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r3_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))
                & p__01(s__02(cbool__00,c_27const_2elist_2eEVERY_27__02(s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),c_27const_2egc__shared_2eisDataElement_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r4_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))
                & ! [V_27x_27,V_27l_27,V_27d_27] :
                    ( p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),c_27const_2egc__shared_2eDataElement_27__03(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27)),V_27x_27),s__02(c_27type_2enum_2enum_27__00,V_27l_27),s__02(V_27A_27,V_27d_27))),s__02(cfun__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r4_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r3_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))))))
                   => p__01(s__02(cbool__00,c_27const_2egen__gc_2egen__gc__conf__isRef_27__02(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27),s__02(V_27A_27,V_27d_27)))) )
                & p__01(s__02(cbool__00,c_27const_2epred__set_2eBIJ_27__03(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2egc__shared_2eheap__map1_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__heap_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2efinite__map_2eFDOM_27__01(s__02(c_27type_2efinite__map_2efmap_27__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2egc__shared_2eheap__map_27__02(s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__heap_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))),s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2epred__set_2eUNION_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2egc__shared_2eheap__addresses_27__02(s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__h1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__h2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))),s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2egc__shared_2eheap__addresses_27__02(s__02(c_27type_2enum_2enum_27__00,chapp__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2earithmetic_2e_2b_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2egc__state__a_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2egc__state__n_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r4_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r3_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))))))))
                & ! [V_27i_27,V_27j_27] :
                    ( s__02(c_27type_2eoption_2eoption_27__01(c_27type_2enum_2enum_27__00),c_27const_2efinite__map_2eFLOOKUP_27__02(s__02(c_27type_2efinite__map_2efmap_27__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2egc__shared_2eheap__map_27__02(s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__heap_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2enum_2enum_27__00,V_27i_27))) = s__02(c_27type_2eoption_2eoption_27__01(c_27type_2enum_2enum_27__00),c_27const_2eoption_2eSOME_27__01(s__02(c_27type_2enum_2enum_27__00,V_27j_27)))
                   => ? [V_27xs_27,V_27l_27,V_27d_27] :
                        ( s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2eheap__lookup_27__02(s__02(c_27type_2enum_2enum_27__00,V_27i_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),V_27heap0_27))) = s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2eoption_2eSOME_27__01(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),c_27const_2egc__shared_2eDataElement_27__03(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27)),V_27xs_27),s__02(c_27type_2enum_2enum_27__00,V_27l_27),s__02(V_27A_27,V_27d_27)))))
                        & s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2eheap__lookup_27__02(s__02(c_27type_2enum_2enum_27__00,V_27j_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),V_27heap_7c39_7c_27))) = s__02(c_27type_2eoption_2eoption_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2eoption_2eSOME_27__01(s__02(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27),c_27const_2egc__shared_2eDataElement_27__03(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27)),c_27const_2ebool_2eCOND_27__03(s__02(cbool__00,c_27const_2egen__gc_2eis__final_27__03(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27),s__02(c_27type_2enum_2enum_27__00,V_27j_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27)),c_27const_2egc__shared_2eADDR__MAP_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2egc__shared_2eheap__map1_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__heap_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27)),V_27xs_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27)),V_27xs_27))),s__02(c_27type_2enum_2enum_27__00,V_27l_27),s__02(V_27A_27,V_27d_27)))))
                        & ! [V_27ptr_27,V_27d0_27] :
                            ( ( p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27),c_27const_2egc__shared_2ePointer_27__02(s__02(c_27type_2enum_2enum_27__00,V_27ptr_27),s__02(V_27B_27,V_27d0_27))),s__02(cfun__02(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27),cbool__00),c_27const_2elist_2eLIST__TO__SET_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__address_27__01(V_27B_27)),V_27xs_27))))))
                              & p__01(s__02(cbool__00,c_27const_2egen__gc_2eis__final_27__03(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27),s__02(c_27type_2enum_2enum_27__00,V_27j_27)))) )
                           => p__01(s__02(cbool__00,c_27const_2ebool_2eIN_27__02(s__02(c_27type_2enum_2enum_27__00,V_27ptr_27),s__02(cfun__02(c_27type_2enum_2enum_27__00,cbool__00),c_27const_2efinite__map_2eFDOM_27__01(s__02(c_27type_2efinite__map_2efmap_27__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2egc__shared_2eheap__map_27__02(s__02(c_27type_2enum_2enum_27__00,c_27const_2enum_2e0_27__00),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__heap_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27)))))))))) ) ) ) ) )
         => ! [V_27conf_27,V_27state_27,V_27heap0_27] : s__02(cbool__00,c_27const_2egen__gc_2egc__inv_27__03(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),V_27heap0_27))) = s__02(cbool__00,c_27const_2ebool_2eLET_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cbool__00),chapp__02(s__02(cfun__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cbool__00)),chapp__02(s__02(cfun__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),cfun__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cbool__00))),chapp__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cfun__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),cfun__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),cbool__00)))),V__0),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),V_27heap0_27))),s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27A_27),V_27conf_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2elist_2eAPPEND_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__h1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__h2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2eheap__expand_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2egc__state__n_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r4_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r3_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r2_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27B_27,V_27A_27)),c_27const_2egc__shared_2egc__state__r1_27__01(s__02(c_27type_2egc__shared_2egc__state_27__02(V_27B_27,V_27A_27),V_27state_27))))))) ) ) ).

fof(conjecture,conjecture,
    ! [V_27A_27,V_27B_27,V_27heap_27,V_27conf_27] :
      ( p__01(s__02(cbool__00,c_27const_2egc__shared_2eheap__ok_27__02(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27),s__02(c_27type_2enum_2enum_27__00,c_27const_2egen__gc_2egen__gc__conf__limit_27__01(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27B_27),V_27conf_27))))))
     => ? [Vv] :
          ( ( p__01(s__02(cbool__00,Vv))
          <=> s__02(c_27type_2enum_2enum_27__00,c_27const_2egc__shared_2eheap__length_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27))) = s__02(c_27type_2enum_2enum_27__00,c_27const_2egen__gc_2egen__gc__conf__limit_27__01(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27B_27),V_27conf_27))) )
          & p__01(s__02(cbool__00,c_27const_2egen__gc_2egc__inv_27__03(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27B_27),V_27conf_27),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__heap__fupd_27__02(s__02(cfun__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27))),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__n__fupd_27__02(s__02(cfun__02(c_27type_2enum_2enum_27__00,c_27type_2enum_2enum_27__00),c_27const_2ecombin_2eK_27__01(s__02(c_27type_2enum_2enum_27__00,c_27const_2egen__gc_2egen__gc__conf__limit_27__01(s__02(c_27type_2egen__gc_2egen__gc__conf_27__01(V_27B_27),V_27conf_27))))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2egc__state__ok__fupd_27__02(s__02(cfun__02(cbool__00,cbool__00),c_27const_2ecombin_2eK_27__01(s__02(cbool__00,Vv))),s__02(c_27type_2egc__shared_2egc__state_27__02(V_27A_27,V_27B_27),c_27const_2egc__shared_2eempty__state_27__00))))))),s__02(c_27type_2elist_2elist_27__01(c_27type_2egc__shared_2eheap__element_27__02(V_27A_27,V_27B_27)),V_27heap_27)))) ) ) ).

%------------------------------------------------------------------------------