## TPTP Axioms File: ALG003^0.ax

```%------------------------------------------------------------------------------
% File     : ALG003^0 : TPTP v7.5.0. Bugfixed v5.2.0.
% Domain   : Algebra
% Axioms   : Untyped lambda sigma calculus
% Version  : [Bro09] axioms.
% English  :

% Refs     : [DHK95] Dowek et al. (1995), Higher-order Unification via Expl
%          : [Zha08] Zhang (2008), Using LEO-II to Prove Properties of an E
%          : [Ben09] Benzmueller (2009), Email to Geoff Sutcliffe
%          : [Bro09] Brown (2009), M-Set Models
% Source   : [Ben09]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :  237 ( 113 unit; 124 type; 113 defn)
%            Number of atoms       : 2528 ( 161 equality; 723 variable)
%            Maximal formula depth :   39 (   8 average)
%            Number of connectives : 1942 (   6   ~;   0   |;   4   &; 916   @)
%                                         (   2 <=>;1014  =>;   0  <=;   0 <~>)
%                                         (   0  ~|;   0  ~&;   0  !!;   0  ??)
%            Number of type conns  :  128 ( 128   >;   0   *;   0   +;   0  <<)
%            Number of symbols     :  127 ( 124   :)
%            Number of variables   :  327 (   3 sgn; 283   !;   5   ?;  39   ^)
%                                         ( 327   :;   0  !>;   0  ?*)
%                                         (   0  @-;   0  @+)
% SPC      :

% Bugfixes : v5.2.0 - Added missing type declarations.
%------------------------------------------------------------------------------
thf(term_type,type,(
term: \$tType )).

thf(subst_type,type,(
subst: \$tType )).

thf(one_type,type,(
one: term )).

thf(ap_type,type,(
ap: term > term > term )).

thf(lam_type,type,(
lam: term > term )).

thf(sub_type,type,(
sub: term > subst > term )).

thf(id_type,type,(
id: subst )).

thf(sh_type,type,(
sh: subst )).

thf(push_type,type,(
push: term > subst > subst )).

thf(comp_type,type,(
comp: subst > subst > subst )).

thf(var_type,type,(
var: term > \$o )).

thf(pushprop_lem1v2_type,type,(
pushprop_lem1v2: \$o )).

thf(pushprop_lem1_gthm_type,type,(
pushprop_lem1_gthm: \$o )).

thf(axmap_type,type,(
axmap: \$o )).

thf(pushprop_lem0_gthm_type,type,(
pushprop_lem0_gthm: \$o )).

thf(shinj_type,type,(
shinj: \$o )).

thf(hoasinduction_lem1v2_type,type,(
hoasinduction_lem1v2: \$o )).

thf(hoasinduction_lem1v2_gthm_type,type,(
hoasinduction_lem1v2_gthm: \$o )).

thf(hoasap_type,type,(
hoasap: subst > term > subst > term > term )).

thf(induction2lem_type,type,(
induction2lem: \$o )).

thf(hoasinduction_lem3v2_f_type,type,(
hoasinduction_lem3v2_f: \$o )).

thf(axvarshift_type,type,(
axvarshift: \$o )).

thf(hoasapinj2_type,type,(
hoasapinj2: \$o )).

thf(hoasapnotvar_gthm_type,type,(
hoasapnotvar_gthm: \$o )).

thf(hoasapinj1_type,type,(
hoasapinj1: \$o )).

thf(ulamvar1_type,type,(
ulamvar1: \$o )).

thf(induction2lem_lthm_type,type,(
induction2lem_lthm: \$o )).

thf(hoasinduction_lem3v2_gthm_type,type,(
hoasinduction_lem3v2_gthm: \$o )).

thf(apnotvar_type,type,(
apnotvar: \$o )).

thf(pushprop_lthm_orig_type,type,(
pushprop_lthm_orig: \$o )).

thf(hoasinduction_lem3v2_f_lthm_type,type,(
hoasinduction_lem3v2_f_lthm: \$o )).

thf(hoasinduction_lthm_type,type,(
hoasinduction_lthm: \$o )).

thf(hoasinduction_no_psi_cond_lthm_type,type,(
hoasinduction_no_psi_cond_lthm: \$o )).

thf(hoaslaminj_type,type,(
hoaslaminj: \$o )).

thf(hoasinduction_lem3aaa_type,type,(
hoasinduction_lem3aaa: \$o )).

thf(induction2lem_gthm_type,type,(
induction2lem_gthm: \$o )).

thf(hoasinduction_lem3aa_lthm_type,type,(
hoasinduction_lem3aa_lthm: \$o )).

thf(hoasinduction_lem3_type,type,(
hoasinduction_lem3: \$o )).

thf(hoasinduction_lem2_type,type,(
hoasinduction_lem2: \$o )).

thf(termmset_lthm_type,type,(
termmset_lthm: \$o )).

thf(hoasinduction_lem1_type,type,(
hoasinduction_lem1: \$o )).

thf(hoaslamnotap_lthm_type,type,(
hoaslamnotap_lthm: \$o )).

thf(pushprop_lem1v2_lthm_type,type,(
pushprop_lem1v2_lthm: \$o )).

thf(hoasapnotvar_type,type,(
hoasapnotvar: \$o )).

thf(hoasinduction_lem0_type,type,(
hoasinduction_lem0: \$o )).

thf(hoasinduction_type,type,(
hoasinduction: \$o )).

thf(hoasinduction_gthm_type,type,(
hoasinduction_gthm: \$o )).

thf(axapp_type,type,(
axapp: \$o )).

thf(hoaslamnotvar_lthm_type,type,(
hoaslamnotvar_lthm: \$o )).

thf(pushprop_lem3v2_lthm_type,type,(
pushprop_lem3v2_lthm: \$o )).

thf(hoasinduction_lem3b_lthm_type,type,(
hoasinduction_lem3b_lthm: \$o )).

thf(ulamvarind_type,type,(
ulamvarind: \$o )).

thf(induction_type,type,(
induction: \$o )).

thf(hoasinduction_lem3a_lthm_type,type,(
hoasinduction_lem3a_lthm: \$o )).

thf(termmset_gthm_type,type,(
termmset_gthm: \$o )).

thf(hoasinduction_lem3aa_type,type,(
hoasinduction_lem3aa: \$o )).

thf(pushprop_lem1v2_gthm_type,type,(
pushprop_lem1v2_gthm: \$o )).

thf(hoaslamnotap_gthm_type,type,(
hoaslamnotap_gthm: \$o )).

thf(hoaslamnotvar_gthm_type,type,(
hoaslamnotvar_gthm: \$o )).

thf(hoasinduction_lem3b_gthm_type,type,(
hoasinduction_lem3b_gthm: \$o )).

thf(pushprop_lem2v2_type,type,(
pushprop_lem2v2: \$o )).

thf(hoasinduction_lem3a_gthm_type,type,(
hoasinduction_lem3a_gthm: \$o )).

thf(axclos_type,type,(
axclos: \$o )).

thf(axassoc_type,type,(
axassoc: \$o )).

thf(hoasinduction_lem2v2_type,type,(
hoasinduction_lem2v2: \$o )).

thf(pushprop_lthm_type,type,(
pushprop_lthm: \$o )).

thf(apinj2_type,type,(
apinj2: \$o )).

thf(apinj1_type,type,(
apinj1: \$o )).

thf(hoasapinj2_lthm_type,type,(
hoasapinj2_lthm: \$o )).

thf(hoasinduction_lem3v2a_type,type,(
hoasinduction_lem3v2a: \$o )).

thf(hoasapinj1_lthm_type,type,(
hoasapinj1_lthm: \$o )).

thf(hoaslaminj_lthm_type,type,(
hoaslaminj_lthm: \$o )).

thf(axvarcons_type,type,(
axvarcons: \$o )).

thf(hoaslam_type,type,(
hoaslam: subst > ( subst > term > term ) > term )).

thf(axscons_type,type,(
axscons: \$o )).

thf(hoasinduction_lem2v2_gthm_type,type,(
hoasinduction_lem2v2_gthm: \$o )).

thf(axidr_type,type,(
axidr: \$o )).

thf(pushprop_lem1_type,type,(
pushprop_lem1: \$o )).

thf(laminj_type,type,(
laminj: \$o )).

thf(hoasinduction_lem3_lthm_type,type,(
hoasinduction_lem3_lthm: \$o )).

thf(pushprop_lem0_type,type,(
pushprop_lem0: \$o )).

thf(pushprop_gthm_type,type,(
pushprop_gthm: \$o )).

thf(axabs_type,type,(
axabs: \$o )).

thf(hoasinduction_lem3v2a_lthm_type,type,(
hoasinduction_lem3v2a_lthm: \$o )).

thf(hoasinduction_lem2_lthm_type,type,(
hoasinduction_lem2_lthm: \$o )).

thf(hoasapinj2_gthm_type,type,(
hoasapinj2_gthm: \$o )).

thf(hoasinduction_p_and_p_prime_type,type,(
hoasinduction_p_and_p_prime: ( subst > term > subst > \$o ) > ( term > \$o ) > \$o )).

thf(hoasinduction_lem1_lthm_type,type,(
hoasinduction_lem1_lthm: \$o )).

thf(lamnotap_type,type,(
lamnotap: \$o )).

thf(hoasapinj1_gthm_type,type,(
hoasapinj1_gthm: \$o )).

thf(hoaslamnotvar_type,type,(
hoaslamnotvar: \$o )).

thf(axidl_type,type,(
axidl: \$o )).

thf(hoaslaminj_gthm_type,type,(
hoaslaminj_gthm: \$o )).

thf(induction2_lthm_type,type,(
induction2_lthm: \$o )).

thf(hoasinduction_lem0_lthm_type,type,(
hoasinduction_lem0_lthm: \$o )).

thf(substmonoid_lthm_type,type,(
substmonoid_lthm: \$o )).

thf(pushprop_type,type,(
pushprop: \$o )).

thf(hoasinduction_lem3_gthm_type,type,(
hoasinduction_lem3_gthm: \$o )).

thf(hoasinduction_lem2_gthm_type,type,(
hoasinduction_lem2_gthm: \$o )).

thf(hoasinduction_lem3b_type,type,(
hoasinduction_lem3b: \$o )).

thf(substmonoid_type,type,(
substmonoid: \$o )).

thf(lamnotvar_type,type,(
lamnotvar: \$o )).

thf(hoasinduction_lem3a_type,type,(
hoasinduction_lem3a: \$o )).

thf(hoasinduction_lem1_gthm_type,type,(
hoasinduction_lem1_gthm: \$o )).

thf(hoasinduction_no_psi_cond_type,type,(
hoasinduction_no_psi_cond: \$o )).

thf(induction2_gthm_type,type,(
induction2_gthm: \$o )).

thf(pushprop_lem2v2_lthm_type,type,(
pushprop_lem2v2_lthm: \$o )).

thf(hoasvar_type,type,(
hoasvar: subst > term > subst > \$o )).

thf(hoaslamnotap_type,type,(
hoaslamnotap: \$o )).

thf(substmonoid_gthm_type,type,(
substmonoid_gthm: \$o )).

thf(ulamvarsh_type,type,(
ulamvarsh: \$o )).

thf(induction2_type,type,(
induction2: \$o )).

thf(pushprop_lem3v2_type,type,(
pushprop_lem3v2: \$o )).

thf(pushprop_lem2v2_gthm_type,type,(
pushprop_lem2v2_gthm: \$o )).

thf(pushprop_lem1_lthm_type,type,(
pushprop_lem1_lthm: \$o )).

thf(hoasinduction_lem3v2_type,type,(
hoasinduction_lem3v2: \$o )).

thf(axshiftcons_type,type,(
axshiftcons: \$o )).

thf(termmset_type,type,(
termmset: \$o )).

thf(pushprop_lem0_lthm_type,type,(
pushprop_lem0_lthm: \$o )).

thf(hoasapnotvar_lthm_type,type,(
hoasapnotvar_lthm: \$o )).

thf(hoasinduction_lem3v2_lthm_type,type,(
hoasinduction_lem3v2_lthm: \$o )).

thf(pushprop_p_and_p_prime_type,type,(
pushprop_p_and_p_prime: term > subst > ( term > \$o ) > ( term > \$o ) > \$o )).

thf(axvarid_type,type,(
axvarid: \$o )).

thf(hoasinduction_lthm_3_type,type,(
hoasinduction_lthm_3: \$o )).

thf(axapp,definition,
( axapp
= ( ! [A: term,B: term,M: subst] :
( ( sub @ ( ap @ A @ B ) @ M )
= ( ap @ ( sub @ A @ M ) @ ( sub @ B @ M ) ) ) ) )).

thf(axvarcons,definition,
( axvarcons
= ( ! [A: term,M: subst] :
( ( sub @ one @ ( push @ A @ M ) )
= A ) ) )).

thf(axvarid,definition,
( axvarid
= ( ! [A: term] :
( ( sub @ A @ id )
= A ) ) )).

thf(axabs,definition,
( axabs
= ( ! [A: term,M: subst] :
( ( sub @ ( lam @ A ) @ M )
= ( lam @ ( sub @ A @ ( push @ one @ ( comp @ M @ sh ) ) ) ) ) ) )).

thf(axclos,definition,
( axclos
= ( ! [A: term,M: subst,N: subst] :
( ( sub @ ( sub @ A @ M ) @ N )
= ( sub @ A @ ( comp @ M @ N ) ) ) ) )).

thf(axidl,definition,
( axidl
= ( ! [M: subst] :
( ( comp @ id @ M )
= M ) ) )).

thf(axshiftcons,definition,
( axshiftcons
= ( ! [A: term,M: subst] :
( ( comp @ sh @ ( push @ A @ M ) )
= M ) ) )).

thf(axassoc,definition,
( axassoc
= ( ! [M: subst,N: subst,K: subst] :
( ( comp @ ( comp @ M @ N ) @ K )
= ( comp @ M @ ( comp @ N @ K ) ) ) ) )).

thf(axmap,definition,
( axmap
= ( ! [A: term,M: subst,N: subst] :
( ( comp @ ( push @ A @ M ) @ N )
= ( push @ ( sub @ A @ N ) @ ( comp @ M @ N ) ) ) ) )).

thf(axidr,definition,
( axidr
= ( ! [M: subst] :
( ( comp @ M @ id )
= M ) ) )).

thf(axvarshift,definition,
( axvarshift
= ( ( push @ one @ sh )
= id ) )).

thf(axscons,definition,
( axscons
= ( ! [M: subst] :
( ( push @ ( sub @ one @ M ) @ ( comp @ sh @ M ) )
= M ) ) )).

thf(ulamvar1,definition,
( ulamvar1
= ( var @ one ) )).

thf(ulamvarsh,definition,
( ulamvarsh
= ( ! [A: term] :
( ( var @ A )
=> ( var @ ( sub @ A @ sh ) ) ) ) )).

thf(ulamvarind,definition,
( ulamvarind
= ( ! [P: term > \$o] :
( ( P @ one )
=> ( ! [A: term] :
( ( var @ A )
=> ( ( P @ A )
=> ( P @ ( sub @ A @ sh ) ) ) )
=> ! [A: term] :
( ( var @ A )
=> ( P @ A ) ) ) ) ) )).

thf(apinj1,definition,
( apinj1
= ( ! [A: term,B: term,C: term,D: term] :
( ( ( ap @ A @ C )
= ( ap @ B @ D ) )
=> ( A = B ) ) ) )).

thf(apinj2,definition,
( apinj2
= ( ! [A: term,B: term,C: term,D: term] :
( ( ( ap @ A @ C )
= ( ap @ B @ D ) )
=> ( C = D ) ) ) )).

thf(laminj,definition,
( laminj
= ( ! [A: term,B: term] :
( ( ( lam @ A )
= ( lam @ B ) )
=> ( A = B ) ) ) )).

thf(shinj,definition,
( shinj
= ( ! [A: term,B: term] :
( ( ( sub @ A @ sh )
= ( sub @ B @ sh ) )
=> ( A = B ) ) ) )).

thf(lamnotap,definition,
( lamnotap
= ( ! [A: term,B: term,C: term] :
( ( lam @ A )
!= ( ap @ B @ C ) ) ) )).

thf(apnotvar,definition,
( apnotvar
= ( ! [A: term,B: term] :
~ ( var @ ( ap @ A @ B ) ) ) )).

thf(lamnotvar,definition,
( lamnotvar
= ( ! [A: term] :
~ ( var @ ( lam @ A ) ) ) )).

thf(induction,definition,
( induction
= ( ! [P: term > \$o] :
( ! [A: term] :
( ( var @ A )
=> ( P @ A ) )
=> ( ! [A: term,B: term] :
( ( P @ A )
=> ( ( P @ B )
=> ( P @ ( ap @ A @ B ) ) ) )
=> ( ! [A: term] :
( ( P @ A )
=> ( P @ ( lam @ A ) ) )
=> ! [A: term] :
( P @ A ) ) ) ) ) )).

thf(pushprop_p_and_p_prime,definition,
( pushprop_p_and_p_prime
= ( ^ [A: term,M: subst,P: term > \$o,Q: term > \$o] :
! [X: term] :
( ( Q @ X )
<=> ( P @ ( sub @ X @ ( push @ A @ M ) ) ) ) ) )).

thf(pushprop_lem0,definition,
( pushprop_lem0
= ( ! [P: term > \$o,A: term,M: subst] :
? [Q: term > \$o] :
( pushprop_p_and_p_prime @ A @ M @ P @ Q ) ) )).

thf(pushprop_lem0_gthm,definition,
( pushprop_lem0_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> pushprop_lem0 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(pushprop_lem0_lthm,definition,(
pushprop_lem0_lthm = pushprop_lem0 )).

thf(pushprop_lem1,definition,
( pushprop_lem1
= ( ! [P: term > \$o,K: term > \$o,A: term,M: subst,B: term] :
( ( P @ A )
=> ( K @ ( sub @ A @ ( push @ B @ M ) ) ) ) ) )).

thf(pushprop_lem1_gthm,definition,
( pushprop_lem1_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> pushprop_lem1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(pushprop_lem1_lthm,definition,
( pushprop_lem1_lthm
= ( axvarcons
=> ( axclos
=> ( axshiftcons
=> ( ulamvarind
=> pushprop_lem1 ) ) ) ) )).

thf(pushprop_lem1v2,definition,
( pushprop_lem1v2
= ( ! [P: term > \$o,Q: term > \$o,A: term,M: subst] :
( ( P @ A )
=> ( ( pushprop_p_and_p_prime @ A @ M @ P @ Q )
=> ( Q @ one ) ) ) ) )).

thf(pushprop_lem1v2_gthm,definition,
( pushprop_lem1v2_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> pushprop_lem1v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(pushprop_lem1v2_lthm,definition,
( pushprop_lem1v2_lthm
= ( axvarcons
=> pushprop_lem1v2 ) )).

thf(pushprop_lem2v2,definition,
( pushprop_lem2v2
= ( ! [P: term > \$o,Q: term > \$o,A: term,M: subst] :
( ( pushprop_p_and_p_prime @ A @ M @ P @ Q )
=> ( ! [B: term] :
( ( var @ B )
=> ( P @ ( sub @ B @ M ) ) )
=> ! [C: term] :
( ( var @ C )
=> ( ( Q @ C )
=> ( Q @ ( sub @ C @ sh ) ) ) ) ) ) ) )).

thf(pushprop_lem2v2_gthm,definition,
( pushprop_lem2v2_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> pushprop_lem2v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(pushprop_lem2v2_lthm,definition,
( pushprop_lem2v2_lthm
= ( axclos
=> ( axshiftcons
=> pushprop_lem2v2 ) ) )).

thf(pushprop_lem3v2,definition,
( pushprop_lem3v2
= ( ! [P: term > \$o,Q: term > \$o,A: term,M: subst] :
( ( pushprop_p_and_p_prime @ A @ M @ P @ Q )
=> ( ! [B: term] :
( ( var @ B )
=> ( Q @ B ) )
=> ! [B: term] :
( ( var @ B )
=> ( P @ ( sub @ B @ ( push @ A @ M ) ) ) ) ) ) ) )).

thf(pushprop_lem3v2_lthm,definition,(
pushprop_lem3v2_lthm = pushprop_lem3v2 )).

thf(pushprop,definition,
( pushprop
= ( ! [P: term > \$o,A: term,M: subst] :
( ! [B: term] :
( ( var @ B )
=> ( P @ ( sub @ B @ M ) ) )
=> ( ( P @ A )
=> ! [B: term] :
( ( var @ B )
=> ( P @ ( sub @ B @ ( push @ A @ M ) ) ) ) ) ) ) )).

thf(pushprop_gthm,definition,
( pushprop_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> pushprop ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(pushprop_lthm_orig,definition,
( pushprop_lthm_orig
= ( ulamvar1
=> ( axvarcons
=> ( axclos
=> ( axshiftcons
=> ( ulamvarind
=> pushprop ) ) ) ) ) )).

thf(pushprop_lthm,definition,
( pushprop_lthm
= ( pushprop_lem0
=> ( ulamvar1
=> ( axvarcons
=> ( axclos
=> ( axshiftcons
=> ( ulamvarind
=> pushprop ) ) ) ) ) ) )).

thf(induction2lem,definition,
( induction2lem
= ( ! [P: term > \$o] :
( ! [A: term,B: term] :
( ( P @ A )
=> ( ( P @ B )
=> ( P @ ( ap @ A @ B ) ) ) )
=> ( ! [A: term] :
( ! [B: term] :
( ( P @ B )
=> ( P @ ( sub @ A @ ( push @ B @ id ) ) ) )
=> ( P @ ( lam @ A ) ) )
=> ! [A: term,M: subst] :
( ! [B: term] :
( ( var @ B )
=> ( P @ ( sub @ B @ M ) ) )
=> ( P @ ( sub @ A @ M ) ) ) ) ) ) )).

thf(induction2lem_gthm,definition,
( induction2lem_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> induction2lem ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(induction2lem_lthm,definition,
( induction2lem_lthm
= ( axapp
=> ( axvarcons
=> ( axabs
=> ( axclos
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( induction
=> ( pushprop
=> induction2lem ) ) ) ) ) ) ) ) ) ) )).

thf(induction2,definition,
( induction2
= ( ! [P: term > \$o] :
( ! [A: term] :
( ( var @ A )
=> ( P @ A ) )
=> ( ! [A: term,B: term] :
( ( P @ A )
=> ( ( P @ B )
=> ( P @ ( ap @ A @ B ) ) ) )
=> ( ! [A: term] :
( ! [B: term] :
( ( P @ B )
=> ( P @ ( sub @ A @ ( push @ B @ id ) ) ) )
=> ( P @ ( lam @ A ) ) )
=> ! [A: term] :
( P @ A ) ) ) ) ) )).

thf(induction2_gthm,definition,
( induction2_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> induction2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(induction2_lthm,definition,
( induction2_lthm
= ( axvarid
=> ( induction2lem
=> induction2 ) ) )).

thf(substmonoid,definition,
( substmonoid
= ( ! [M: subst,N: subst,K: subst] :
( ( comp @ ( comp @ M @ N ) @ K )
= ( comp @ M @ ( comp @ N @ K ) ) )
& ! [M: subst] :
( ( comp @ id @ M )
= M )
& ! [M: subst] :
( ( comp @ M @ id )
= M ) ) )).

thf(substmonoid_gthm,definition,
( substmonoid_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> substmonoid ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(substmonoid_lthm,definition,
( substmonoid_lthm
= ( axidl
=> ( axassoc
=> ( axidr
=> substmonoid ) ) ) )).

thf(termmset,definition,
( termmset
= ( ! [A: term,M: subst,N: subst] :
( ( sub @ ( sub @ A @ M ) @ N )
= ( sub @ A @ ( comp @ M @ N ) ) )
& ! [A: term] :
( ( sub @ A @ id )
= A ) ) )).

thf(termmset_gthm,definition,
( termmset_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> termmset ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(termmset_lthm,definition,
( termmset_lthm
= ( axvarid
=> ( axclos
=> termmset ) ) )).

thf(hoasap,definition,
( hoasap
= ( ^ [M: subst,A: term,N: subst,B: term] :
( ap @ ( sub @ A @ N ) @ B ) ) )).

thf(hoaslam,definition,
( hoaslam
= ( ^ [M: subst,F: subst > term > term] :
( lam @ ( F @ sh @ one ) ) ) )).

thf(hoasvar,definition,
( hoasvar
= ( ^ [M: subst,A: term,N: subst] :
( var @ ( sub @ A @ N ) ) ) )).

thf(hoasapinj1,definition,
( hoasapinj1
= ( ! [A: term,B: term,C: term,D: term] :
( ( ( hoasap @ id @ A @ id @ C )
= ( hoasap @ id @ B @ id @ D ) )
=> ( A = B ) ) ) )).

thf(hoasapinj1_gthm,definition,
( hoasapinj1_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> hoasapinj1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasapinj1_lthm,definition,
( hoasapinj1_lthm
= ( axvarid
=> ( apinj1
=> hoasapinj1 ) ) )).

thf(hoasapinj2,definition,
( hoasapinj2
= ( ! [A: term,B: term,C: term,D: term] :
( ( ( hoasap @ id @ A @ id @ C )
= ( hoasap @ id @ B @ id @ D ) )
=> ( C = D ) ) ) )).

thf(hoasapinj2_gthm,definition,
( hoasapinj2_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> hoasapinj2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasapinj2_lthm,definition,
( hoasapinj2_lthm
= ( apinj2
=> hoasapinj2 ) )).

thf(hoaslaminj,definition,
( hoaslaminj
= ( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ! [G: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( G @ M @ A ) @ N )
= ( G @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ( ( ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
= ( hoaslam @ id
@ ^ [M: subst,A: term] :
( G @ M @ A ) ) )
=> ! [M: subst,A: term] :
( ( F @ M @ A )
= ( G @ M @ A ) ) ) ) ) ) )).

thf(hoaslaminj_gthm,definition,
( hoaslaminj_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> hoaslaminj ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoaslaminj_lthm,definition,
( hoaslaminj_lthm
= ( axvarcons
=> ( axshiftcons
=> ( laminj
=> hoaslaminj ) ) ) )).

thf(hoaslamnotap,definition,
( hoaslamnotap
= ( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ! [A: term,B: term] :
( ( hoaslam @ id
@ ^ [M: subst,C: term] :
( F @ M @ C ) )
!= ( hoasap @ id @ A @ id @ B ) ) ) ) )).

thf(hoaslamnotap_gthm,definition,
( hoaslamnotap_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> hoaslamnotap ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoaslamnotap_lthm,definition,
( hoaslamnotap_lthm
= ( lamnotap
=> hoaslamnotap ) )).

thf(hoaslamnotvar,definition,
( hoaslamnotvar
= ( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ~ ( hoasvar @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) ) )).

thf(hoaslamnotvar_gthm,definition,
( hoaslamnotvar_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> hoaslamnotvar ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoaslamnotvar_lthm,definition,
( hoaslamnotvar_lthm
= ( axvarid
=> ( lamnotvar
=> hoaslamnotvar ) ) )).

thf(hoasapnotvar,definition,
( hoasapnotvar
= ( ! [A: term,B: term] :
~ ( hoasvar @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )).

thf(hoasapnotvar_gthm,definition,
( hoasapnotvar_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> hoasapnotvar ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasapnotvar_lthm,definition,
( hoasapnotvar_lthm
= ( axvarid
=> ( apnotvar
=> hoasapnotvar ) ) )).

thf(hoasinduction_p_and_p_prime,definition,
( hoasinduction_p_and_p_prime
= ( ^ [P: subst > term > subst > \$o,Q: term > \$o] :
! [X: term] :
( ( Q @ X )
<=> ( P @ id @ X @ id ) ) ) )).

thf(hoasinduction_lem0,definition,
( hoasinduction_lem0
= ( ! [P: subst > term > subst > \$o] :
? [Q: term > \$o] :
( hoasinduction_p_and_p_prime @ P @ Q ) ) )).

thf(hoasinduction_lem0_lthm,definition,(
hoasinduction_lem0_lthm = hoasinduction_lem0 )).

thf(hoasinduction_lem1v2,definition,
( hoasinduction_lem1v2
= ( ! [P: subst > term > subst > \$o,Q: term > \$o] :
( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ M @ A @ ( comp @ K @ N ) )
=> ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
=> ( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
=> ( P @ M @ A @ ( comp @ K @ N ) ) )
=> ( ! [A: term] :
( ( hoasvar @ id @ A @ id )
=> ( P @ id @ A @ id ) )
=> ( ( hoasinduction_p_and_p_prime @ P @ Q )
=> ! [A: term] :
( ( var @ A )
=> ( Q @ A ) ) ) ) ) ) ) )).

thf(hoasinduction_lem1v2_gthm,definition,
( hoasinduction_lem1v2_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> hoasinduction_lem1v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem2v2,definition,
( hoasinduction_lem2v2
= ( ! [P: subst > term > subst > \$o,Q: term > \$o] :
( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ M @ A @ ( comp @ K @ N ) )
=> ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
=> ( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
=> ( P @ M @ A @ ( comp @ K @ N ) ) )
=> ( ! [A: term,B: term] :
( ( P @ id @ A @ id )
=> ( ( P @ id @ B @ id )
=> ( P @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )
=> ( ( hoasinduction_p_and_p_prime @ P @ Q )
=> ! [A: term,B: term] :
( ( Q @ A )
=> ( ( Q @ B )
=> ( Q @ ( ap @ A @ B ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem2v2_gthm,definition,
( hoasinduction_lem2v2_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> hoasinduction_lem2v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem3v2_f,definition,
( hoasinduction_lem3v2_f
= ( ! [B: term] :
? [F: subst > term > term] :
! [A: term,M: subst] :
( ( F @ M @ A )
= ( sub @ B @ ( push @ A @ M ) ) ) ) )).

thf(hoasinduction_lem3v2_f_lthm,definition,(
hoasinduction_lem3v2_f_lthm = hoasinduction_lem3v2_f )).

thf(hoasinduction_lem3v2,definition,
( hoasinduction_lem3v2
= ( ! [P: subst > term > subst > \$o,Q: term > \$o] :
( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ M @ A @ ( comp @ K @ N ) )
=> ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
=> ( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
=> ( P @ M @ A @ ( comp @ K @ N ) ) )
=> ( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ( ! [A: term] :
( ( P @ id @ A @ id )
=> ( P @ id @ ( F @ id @ A ) @ id ) )
=> ( P @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) )
=> ( ( hoasinduction_p_and_p_prime @ P @ Q )
=> ! [A: term] :
( ! [B: term] :
( ( Q @ B )
=> ( Q @ ( sub @ A @ ( push @ B @ id ) ) ) )
=> ( Q @ ( lam @ A ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem3v2_gthm,definition,
( hoasinduction_lem3v2_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> hoasinduction_lem3v2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem3v2_lthm,definition,
( hoasinduction_lem3v2_lthm
= ( axvarid
=> ( axvarshift
=> ( axclos
=> ( axmap
=> hoasinduction_lem3v2 ) ) ) ) )).

thf(hoasinduction_lem3v2a,definition,
( hoasinduction_lem3v2a
= ( ! [P: subst > term > subst > \$o,Q: term > \$o] :
( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ( ! [A: term] :
( ( P @ id @ A @ id )
=> ( P @ id @ ( F @ id @ A ) @ id ) )
=> ( P @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) )
=> ( ( hoasinduction_p_and_p_prime @ P @ Q )
=> ! [A: term] :
( ! [B: term] :
( ( Q @ B )
=> ( Q @ ( sub @ A @ ( push @ B @ id ) ) ) )
=> ( Q @ ( lam @ A ) ) ) ) ) ) )).

thf(hoasinduction_lem3v2a_lthm,definition,
( hoasinduction_lem3v2a_lthm
= ( hoasinduction_lem3v2_f
=> ( axvarid
=> ( axvarshift
=> ( axclos
=> ( axmap
=> hoasinduction_lem3v2a ) ) ) ) ) )).

thf(hoasinduction_lem1,definition,
( hoasinduction_lem1
= ( ! [P: subst > term > subst > \$o] :
( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ M @ A @ ( comp @ K @ N ) )
=> ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
=> ( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
=> ( P @ M @ A @ ( comp @ K @ N ) ) )
=> ( ! [A: term] :
( ( hoasvar @ id @ A @ id )
=> ( P @ id @ A @ id ) )
=> ! [A: term] :
( ( var @ A )
=> ( P @ id @ A @ id ) ) ) ) ) ) )).

thf(hoasinduction_lem1_gthm,definition,
( hoasinduction_lem1_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> hoasinduction_lem1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem1_lthm,definition,
( hoasinduction_lem1_lthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> hoasinduction_lem1 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem2,definition,
( hoasinduction_lem2
= ( ! [P: subst > term > subst > \$o] :
( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ M @ A @ ( comp @ K @ N ) )
=> ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
=> ( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
=> ( P @ M @ A @ ( comp @ K @ N ) ) )
=> ( ! [A: term,B: term] :
( ( P @ id @ A @ id )
=> ( ( P @ id @ B @ id )
=> ( P @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )
=> ! [A: term,B: term] :
( ( P @ id @ A @ id )
=> ( ( P @ id @ B @ id )
=> ( P @ id @ ( ap @ A @ B ) @ id ) ) ) ) ) ) ) )).

thf(hoasinduction_lem2_gthm,definition,
( hoasinduction_lem2_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> hoasinduction_lem2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem2_lthm,definition,
( hoasinduction_lem2_lthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> hoasinduction_lem2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem3aa,definition,
( hoasinduction_lem3aa
= ( ! [P: subst > term > subst > \$o] :
( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ( ! [A: term] :
( ( P @ id @ A @ id )
=> ( P @ id @ ( F @ id @ A ) @ id ) )
=> ( P @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) )
=> ! [A: term] :
( ! [B: term] :
( ( P @ id @ B @ id )
=> ( P @ id @ ( sub @ A @ ( push @ B @ id ) ) @ id ) )
=> ( P @ id @ ( lam @ ( sub @ A @ ( push @ one @ sh ) ) ) @ id ) ) ) ) )).

thf(hoasinduction_lem3aa_lthm,definition,
( hoasinduction_lem3aa_lthm
= ( axclos
=> ( axmap
=> hoasinduction_lem3aa ) ) )).

thf(hoasinduction_lem3aaa,definition,
( hoasinduction_lem3aaa
= ( ! [P: subst > term > subst > \$o] :
( ! [F: subst > term > term] :
( ? [C: term] :
! [M: subst,A: term,N: subst] :
( ( ( sub @ ( F @ M @ A ) @ N )
= ( sub @ ( sub @ C @ ( push @ A @ M ) ) @ N ) )
& ( ( sub @ C @ ( push @ ( sub @ A @ N ) @ ( comp @ M @ N ) ) )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) ) )
=> ( ! [A: term] :
( ( P @ id @ A @ id )
=> ( P @ id @ ( F @ id @ A ) @ id ) )
=> ( P @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) )
=> ! [A: term] :
( ! [B: term] :
( ( P @ id @ B @ id )
=> ( P @ id @ ( sub @ A @ ( push @ B @ id ) ) @ id ) )
=> ( P @ id @ ( lam @ ( sub @ A @ ( push @ one @ sh ) ) ) @ id ) ) ) ) )).

thf(hoasinduction_lem3,definition,
( hoasinduction_lem3
= ( ! [P: subst > term > subst > \$o] :
( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ M @ A @ ( comp @ K @ N ) )
=> ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
=> ( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
=> ( P @ M @ A @ ( comp @ K @ N ) ) )
=> ( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ( ! [A: term] :
( ( P @ id @ A @ id )
=> ( P @ id @ ( F @ id @ A ) @ id ) )
=> ( P @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) )
=> ! [A: term] :
( ! [B: term] :
( ( P @ id @ B @ id )
=> ( P @ id @ ( sub @ A @ ( push @ B @ id ) ) @ id ) )
=> ( P @ id @ ( lam @ A ) @ id ) ) ) ) ) ) )).

thf(hoasinduction_lem3_gthm,definition,
( hoasinduction_lem3_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> ( hoasinduction_lem1
=> ( hoasinduction_lem2
=> hoasinduction_lem3 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem3_lthm,definition,
( hoasinduction_lem3_lthm
= ( axvarid
=> ( axvarshift
=> ( hoasinduction_lem3aa
=> hoasinduction_lem3 ) ) ) )).

thf(hoasinduction_lem3a,definition,
( hoasinduction_lem3a
= ( ! [P: subst > term > subst > \$o] :
( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ( ! [A: term] :
( ( P @ id @ A @ id )
=> ( P @ id @ ( F @ id @ A ) @ id ) )
=> ( P @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) )
=> ! [A: term] :
( ! [B: term] :
( ( P @ id @ B @ id )
=> ( P @ id @ ( sub @ A @ ( push @ B @ id ) ) @ id ) )
=> ( P @ id @ ( lam @ A ) @ id ) ) ) ) )).

thf(hoasinduction_lem3a_gthm,definition,
( hoasinduction_lem3a_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> ( hoasinduction_lem1
=> ( hoasinduction_lem2
=> hoasinduction_lem3a ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem3a_lthm,definition,
( hoasinduction_lem3a_lthm
= ( axvarid
=> ( axvarshift
=> ( hoasinduction_lem3aa
=> hoasinduction_lem3a ) ) ) )).

thf(hoasinduction_lem3b,definition,
( hoasinduction_lem3b
= ( ! [B: term] :
? [F: subst > term > term] :
( ( sub @ B @ ( push @ one @ sh ) )
= ( F @ sh @ one ) ) ) )).

thf(hoasinduction_lem3b_gthm,definition,
( hoasinduction_lem3b_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> ( hoasinduction_lem1
=> ( hoasinduction_lem2
=> hoasinduction_lem3b ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lem3b_lthm,definition,(
hoasinduction_lem3b_lthm = hoasinduction_lem3b )).

thf(hoasinduction,definition,
( hoasinduction
= ( ! [P: subst > term > subst > \$o] :
( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ M @ A @ ( comp @ K @ N ) )
=> ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N ) )
=> ( ! [M: subst,A: term,N: subst,K: subst] :
( ( P @ ( comp @ M @ K ) @ ( sub @ A @ K ) @ N )
=> ( P @ M @ A @ ( comp @ K @ N ) ) )
=> ( ! [A: term] :
( ( hoasvar @ id @ A @ id )
=> ( P @ id @ A @ id ) )
=> ( ! [A: term,B: term] :
( ( P @ id @ A @ id )
=> ( ( P @ id @ B @ id )
=> ( P @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )
=> ( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ( ! [A: term] :
( ( P @ id @ A @ id )
=> ( P @ id @ ( F @ id @ A ) @ id ) )
=> ( P @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) )
=> ! [A: term] :
( P @ id @ A @ id ) ) ) ) ) ) ) )).

thf(hoasinduction_gthm,definition,
( hoasinduction_gthm
= ( axapp
=> ( axvarcons
=> ( axvarid
=> ( axabs
=> ( axclos
=> ( axidl
=> ( axshiftcons
=> ( axassoc
=> ( axmap
=> ( axidr
=> ( axvarshift
=> ( axscons
=> ( ulamvar1
=> ( ulamvarsh
=> ( ulamvarind
=> ( apinj1
=> ( apinj2
=> ( laminj
=> ( shinj
=> ( lamnotap
=> ( apnotvar
=> ( lamnotvar
=> ( induction
=> ( pushprop
=> ( induction2lem
=> ( induction2
=> ( substmonoid
=> ( termmset
=> ( hoasapinj1
=> ( hoasapinj2
=> ( hoaslaminj
=> ( hoaslamnotap
=> ( hoaslamnotvar
=> ( hoasapnotvar
=> ( hoasinduction_lem1
=> ( hoasinduction_lem2
=> ( hoasinduction_lem3
=> hoasinduction ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )).

thf(hoasinduction_lthm,definition,
( hoasinduction_lthm
= ( induction2
=> ( hoasinduction_lem1
=> ( hoasinduction_lem2
=> ( hoasinduction_lem3
=> hoasinduction ) ) ) ) )).

thf(hoasinduction_lthm_3,definition,
( hoasinduction_lthm_3
= ( hoasinduction_lem0
=> ( induction2
=> ( axvarid
=> ( hoasinduction_lem3v2a
=> hoasinduction ) ) ) ) )).

thf(hoasinduction_no_psi_cond,definition,
( hoasinduction_no_psi_cond
= ( ! [P: subst > term > subst > \$o] :
( ! [A: term,B: term] :
( ( P @ id @ A @ id )
=> ( ( P @ id @ B @ id )
=> ( P @ id @ ( hoasap @ id @ A @ id @ B ) @ id ) ) )
=> ( ! [F: subst > term > term] :
( ! [M: subst,A: term,N: subst] :
( ( sub @ ( F @ M @ A ) @ N )
= ( F @ ( comp @ M @ N ) @ ( sub @ A @ N ) ) )
=> ( ! [A: term] :
( ( P @ id @ A @ id )
=> ( P @ id @ ( F @ id @ A ) @ id ) )
=> ( P @ id
@ ( hoaslam @ id
@ ^ [M: subst,A: term] :
( F @ M @ A ) )
@ id ) ) )
=> ! [A: term] :
( P @ id @ A @ id ) ) ) ) )).

thf(hoasinduction_no_psi_cond_lthm,definition,
( hoasinduction_no_psi_cond_lthm
= ( hoasinduction_lem0
=> ( induction2
=> ( axvarid
=> ( hoasinduction_lem3v2a
=> hoasinduction_no_psi_cond ) ) ) ) )).

%------------------------------------------------------------------------------
```