TPTP Problem File: ITP167^1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : ITP167^1 : TPTP v9.0.0. Released v7.5.0.
% Domain : Interactive Theorem Proving
% Problem : Sledgehammer RelationalIncorrectness problem prob_411__5908974_1
% Version : Especial.
% English :
% Refs : [BH+15] Blanchette et al. (2015), Mining the Archive of Formal
% : [Des21] Desharnais (2021), Email to Geoff Sutcliffe
% Source : [Des21]
% Names : RelationalIncorrectness/prob_411__5908974_1 [Des21]
% Status : Theorem
% Rating : 0.25 v9.0.0, 0.40 v8.2.0, 0.46 v8.1.0, 0.45 v7.5.0
% Syntax : Number of formulae : 439 ( 193 unt; 83 typ; 0 def)
% Number of atoms : 835 ( 374 equ; 0 cnn)
% Maximal formula atoms : 11 ( 2 avg)
% Number of connectives : 3436 ( 83 ~; 7 |; 119 &;2923 @)
% ( 0 <=>; 304 =>; 0 <=; 0 <~>)
% Maximal formula depth : 24 ( 7 avg)
% Number of types : 14 ( 13 usr)
% Number of type conns : 1385 (1385 >; 0 *; 0 +; 0 <<)
% Number of symbols : 73 ( 70 usr; 6 con; 0-6 aty)
% Number of variables : 1436 ( 181 ^;1199 !; 56 ?;1436 :)
% SPC : TH0_THM_EQU_NAR
% Comments : This file was generated by Sledgehammer 2021-02-23 15:34:05.867
%------------------------------------------------------------------------------
% Could-be-implicit typings (13)
thf(ty_n_t__Set__Oset_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
set_Pr1148378109ar_int: $tType ).
thf(ty_n_t__Set__Oset_It__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J_J,type,
set_Pr866150653nt_com: $tType ).
thf(ty_n_t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
produc1260470173ar_int: $tType ).
thf(ty_n_t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J,type,
produc1166363805nt_com: $tType ).
thf(ty_n_t__Set__Oset_It__Set__Oset_It__Nat__Onat_J_J,type,
set_set_nat: $tType ).
thf(ty_n_t__List__Olist_It__String__Ochar_J,type,
list_char: $tType ).
thf(ty_n_t__Set__Oset_It__Nat__Onat_J,type,
set_nat: $tType ).
thf(ty_n_t__Set__Oset_I_Eo_J,type,
set_o: $tType ).
thf(ty_n_t__BExp__Obexp,type,
bexp: $tType ).
thf(ty_n_t__AExp__Oaexp,type,
aexp: $tType ).
thf(ty_n_t__Nat__Onat,type,
nat: $tType ).
thf(ty_n_t__Int__Oint,type,
int: $tType ).
thf(ty_n_t__Com__Ocom,type,
com: $tType ).
% Explicit typings (70)
thf(sy_c_AExp_Oaval,type,
aval: aexp > ( list_char > int ) > int ).
thf(sy_c_BExp_Obval,type,
bval: bexp > ( list_char > int ) > $o ).
thf(sy_c_Big__Step_Obig__step,type,
big_big_step: produc1260470173ar_int > ( list_char > int ) > $o ).
thf(sy_c_Com_Ocom_OAssign,type,
assign: list_char > aexp > com ).
thf(sy_c_Com_Ocom_OIf,type,
if: bexp > com > com > com ).
thf(sy_c_Com_Ocom_OSKIP,type,
skip: com ).
thf(sy_c_Com_Ocom_OSeq,type,
seq: com > com > com ).
thf(sy_c_Com_Ocom_OWhile,type,
while: bexp > com > com ).
thf(sy_c_Com_Ocom_Osize__com,type,
size_com: com > nat ).
thf(sy_c_Fun_Ofun__upd_001t__List__Olist_It__String__Ochar_J_001t__Int__Oint,type,
fun_up103088396ar_int: ( list_char > int ) > list_char > int > list_char > int ).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Nat__Onat,type,
plus_plus_nat: nat > nat > nat ).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Nat__Onat,type,
zero_zero_nat: nat ).
thf(sy_c_If_001t__Int__Oint,type,
if_int: $o > int > int > int ).
thf(sy_c_Nat_OSuc,type,
suc: nat > nat ).
thf(sy_c_Nat_Osize__class_Osize_001t__Com__Ocom,type,
size_size_com: com > nat ).
thf(sy_c_Product__Type_OPair_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom,type,
produc1139835093nt_com: ( list_char > int ) > com > produc1166363805nt_com ).
thf(sy_c_Product__Type_OPair_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J,type,
produc1193801173ar_int: com > ( list_char > int ) > produc1260470173ar_int ).
thf(sy_c_Product__Type_Ocurry_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom_001_Eo,type,
produc1803493327_com_o: ( produc1166363805nt_com > $o ) > ( list_char > int ) > com > $o ).
thf(sy_c_Product__Type_Ocurry_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001_Eo,type,
produc1858366159_int_o: ( produc1260470173ar_int > $o ) > com > ( list_char > int ) > $o ).
thf(sy_c_Product__Type_Ocurry_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Nat__Onat,type,
produc763543641nt_nat: ( produc1260470173ar_int > nat ) > com > ( list_char > int ) > nat ).
thf(sy_c_Product__Type_Ocurry_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
produc804153044ar_int: ( produc1260470173ar_int > produc1260470173ar_int ) > com > ( list_char > int ) > produc1260470173ar_int ).
thf(sy_c_Product__Type_Ocurry_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Set__Oset_It__Nat__Onat_J,type,
produc1791150095et_nat: ( produc1260470173ar_int > set_nat ) > com > ( list_char > int ) > set_nat ).
thf(sy_c_Product__Type_Ointernal__case__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001_Eo,type,
produc9062872_int_o: ( com > ( list_char > int ) > $o ) > produc1260470173ar_int > $o ).
thf(sy_c_Product__Type_Ointernal__case__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Nat__Onat,type,
produc641693072nt_nat: ( com > ( list_char > int ) > nat ) > produc1260470173ar_int > nat ).
thf(sy_c_Product__Type_Ointernal__case__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
produc837840349ar_int: ( com > ( list_char > int ) > produc1260470173ar_int ) > produc1260470173ar_int > produc1260470173ar_int ).
thf(sy_c_Product__Type_Ointernal__case__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Set__Oset_It__Nat__Onat_J,type,
produc857153862et_nat: ( com > ( list_char > int ) > set_nat ) > produc1260470173ar_int > set_nat ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom_001_Eo,type,
produc613711406_com_o: ( ( list_char > int ) > com > $o ) > produc1166363805nt_com > $o ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom_001t__Nat__Onat,type,
produc1263502010om_nat: ( ( list_char > int ) > com > nat ) > produc1166363805nt_com > nat ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J,type,
produc1676975923nt_com: ( ( list_char > int ) > com > produc1166363805nt_com ) > produc1166363805nt_com > produc1166363805nt_com ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
produc1771082291ar_int: ( ( list_char > int ) > com > produc1260470173ar_int ) > produc1166363805nt_com > produc1260470173ar_int ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom_001t__Set__Oset_It__Nat__Onat_J,type,
produc1754105456et_nat: ( ( list_char > int ) > com > set_nat ) > produc1166363805nt_com > set_nat ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom_001t__Set__Oset_It__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J_J,type,
produc1179280275nt_com: ( ( list_char > int ) > com > set_Pr866150653nt_com ) > produc1166363805nt_com > set_Pr866150653nt_com ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom_001t__Set__Oset_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
produc1461507731ar_int: ( ( list_char > int ) > com > set_Pr1148378109ar_int ) > produc1166363805nt_com > set_Pr1148378109ar_int ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001_Eo,type,
produc668584238_int_o: ( com > ( list_char > int ) > $o ) > produc1260470173ar_int > $o ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Nat__Onat,type,
produc1311963066nt_nat: ( com > ( list_char > int ) > nat ) > produc1260470173ar_int > nat ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J,type,
produc1194453555nt_com: ( com > ( list_char > int ) > produc1166363805nt_com ) > produc1260470173ar_int > produc1166363805nt_com ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
produc1288559923ar_int: ( com > ( list_char > int ) > produc1260470173ar_int ) > produc1260470173ar_int > produc1260470173ar_int ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Set__Oset_It__Nat__Onat_J,type,
produc991755120et_nat: ( com > ( list_char > int ) > set_nat ) > produc1260470173ar_int > set_nat ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Set__Oset_It__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J_J,type,
produc1994108563nt_com: ( com > ( list_char > int ) > set_Pr866150653nt_com ) > produc1260470173ar_int > set_Pr866150653nt_com ).
thf(sy_c_Product__Type_Oprod_Ocase__prod_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Set__Oset_It__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_J,type,
produc128852371ar_int: ( com > ( list_char > int ) > set_Pr1148378109ar_int ) > produc1260470173ar_int > set_Pr1148378109ar_int ).
thf(sy_c_Product__Type_Oprod_Oswap_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_001t__Com__Ocom,type,
produc1716235893nt_com: produc1166363805nt_com > produc1260470173ar_int ).
thf(sy_c_Product__Type_Oprod_Oswap_001t__Com__Ocom_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J,type,
produc1770201973ar_int: produc1260470173ar_int > produc1166363805nt_com ).
thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Odecomp,type,
relati1310524937decomp: ( ( list_char > int ) > ( list_char > int ) > $o ) > com > com > ( ( list_char > int ) > ( list_char > int ) > $o ) > ( list_char > int ) > ( list_char > int ) > $o ).
thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Oflip,type,
relati186416454e_flip: ( ( list_char > int ) > ( list_char > int ) > $o ) > ( list_char > int ) > ( list_char > int ) > $o ).
thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Oget__back_001_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J,type,
relati23543761ar_int: ( ( list_char > int ) > ( list_char > int ) > $o ) > bexp > com > nat > ( list_char > int ) > ( list_char > int ) > $o ).
thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Oir__hoare,type,
relati2102071307_hoare: ( ( list_char > int ) > ( list_char > int ) > $o ) > com > com > ( ( list_char > int ) > ( list_char > int ) > $o ) > $o ).
thf(sy_c_RelationalIncorrectness__Mirabelle__kefqvmgyto_Oir__valid,type,
relati775585786_valid: ( ( list_char > int ) > ( list_char > int ) > $o ) > com > com > ( ( list_char > int ) > ( list_char > int ) > $o ) > $o ).
thf(sy_c_Set_OCollect_001t__Nat__Onat,type,
collect_nat: ( nat > $o ) > set_nat ).
thf(sy_c_Set_OCollect_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J,type,
collec676690312nt_com: ( produc1166363805nt_com > $o ) > set_Pr866150653nt_com ).
thf(sy_c_Set_OCollect_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
collec770796680ar_int: ( produc1260470173ar_int > $o ) > set_Pr1148378109ar_int ).
thf(sy_c_Set_Oimage_001t__Nat__Onat_001t__Nat__Onat,type,
image_nat_nat: ( nat > nat ) > set_nat > set_nat ).
thf(sy_c_Set_Oimage_001t__Nat__Onat_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J,type,
image_244615942nt_com: ( nat > produc1166363805nt_com ) > set_nat > set_Pr866150653nt_com ).
thf(sy_c_Set_Oimage_001t__Nat__Onat_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
image_338722310ar_int: ( nat > produc1260470173ar_int ) > set_nat > set_Pr1148378109ar_int ).
thf(sy_c_Set_Oimage_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J_001t__Nat__Onat,type,
image_596692520om_nat: ( produc1166363805nt_com > nat ) > set_Pr866150653nt_com > set_nat ).
thf(sy_c_Set_Oimage_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J,type,
image_1874758725nt_com: ( produc1166363805nt_com > produc1166363805nt_com ) > set_Pr866150653nt_com > set_Pr866150653nt_com ).
thf(sy_c_Set_Oimage_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
image_1968865093ar_int: ( produc1166363805nt_com > produc1260470173ar_int ) > set_Pr866150653nt_com > set_Pr1148378109ar_int ).
thf(sy_c_Set_Oimage_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001_Eo,type,
image_522938432_int_o: ( produc1260470173ar_int > $o ) > set_Pr1148378109ar_int > set_o ).
thf(sy_c_Set_Oimage_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001t__Nat__Onat,type,
image_1742782760nt_nat: ( produc1260470173ar_int > nat ) > set_Pr1148378109ar_int > set_nat ).
thf(sy_c_Set_Oimage_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J,type,
image_786684229nt_com: ( produc1260470173ar_int > produc1166363805nt_com ) > set_Pr1148378109ar_int > set_Pr866150653nt_com ).
thf(sy_c_Set_Oimage_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
image_880790597ar_int: ( produc1260470173ar_int > produc1260470173ar_int ) > set_Pr1148378109ar_int > set_Pr1148378109ar_int ).
thf(sy_c_Set_Oimage_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J_001t__Set__Oset_It__Nat__Onat_J,type,
image_989727966et_nat: ( produc1260470173ar_int > set_nat ) > set_Pr1148378109ar_int > set_set_nat ).
thf(sy_c_member_001_Eo,type,
member_o: $o > set_o > $o ).
thf(sy_c_member_001t__Nat__Onat,type,
member_nat: nat > set_nat > $o ).
thf(sy_c_member_001t__Product____Type__Oprod_I_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_Mt__Com__Ocom_J,type,
member2145628230nt_com: produc1166363805nt_com > set_Pr866150653nt_com > $o ).
thf(sy_c_member_001t__Product____Type__Oprod_It__Com__Ocom_M_062_It__List__Olist_It__String__Ochar_J_Mt__Int__Oint_J_J,type,
member92250950ar_int: produc1260470173ar_int > set_Pr1148378109ar_int > $o ).
thf(sy_c_member_001t__Set__Oset_It__Nat__Onat_J,type,
member_set_nat: set_nat > set_set_nat > $o ).
thf(sy_v_P,type,
p: ( list_char > int ) > ( list_char > int ) > $o ).
thf(sy_v_Q,type,
q: ( list_char > int ) > ( list_char > int ) > $o ).
thf(sy_v_c,type,
c: com ).
thf(sy_v_c_H,type,
c2: com ).
% Relevant facts (352)
thf(fact_0_soundness,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
=> ( relati775585786_valid @ P @ C @ C2 @ Q ) ) ).
% soundness
thf(fact_1_completeness,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ C @ C2 @ Q )
=> ( relati2102071307_hoare @ P @ C @ C2 @ Q ) ) ).
% completeness
thf(fact_2_ir__valid__decomp,axiom,
( relati775585786_valid
= ( ^ [P2: ( list_char > int ) > ( list_char > int ) > $o,C3: com,C4: com,Q2: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P2 @ C3 @ skip @ ( relati1310524937decomp @ P2 @ C3 @ C4 @ Q2 ) )
& ( relati775585786_valid @ ( relati1310524937decomp @ P2 @ C3 @ C4 @ Q2 ) @ skip @ C4 @ Q2 ) ) ) ) ).
% ir_valid_decomp
thf(fact_3_ir__Skip__Skip,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o] : ( relati2102071307_hoare @ P @ skip @ skip @ P ) ).
% ir_Skip_Skip
thf(fact_4_ir__hoare__Skip__Skip,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare @ P @ skip @ skip @ Q )
= ( ! [S: list_char > int,S2: list_char > int] :
( ( Q @ S @ S2 )
=> ( P @ S @ S2 ) ) ) ) ).
% ir_hoare_Skip_Skip
thf(fact_5_ir__pre,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,P3: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
=> ( ! [S3: list_char > int,S4: list_char > int] :
( ( P @ S3 @ S4 )
=> ( P3 @ S3 @ S4 ) )
=> ( relati2102071307_hoare @ P3 @ C @ C2 @ Q ) ) ) ).
% ir_pre
thf(fact_6_ir__post,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,Q3: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
=> ( ! [S3: list_char > int,S4: list_char > int] :
( ( Q3 @ S3 @ S4 )
=> ( Q @ S3 @ S4 ) )
=> ( relati2102071307_hoare @ P @ C @ C2 @ Q3 ) ) ) ).
% ir_post
thf(fact_7_ir__conseq,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,P3: ( list_char > int ) > ( list_char > int ) > $o,Q3: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
=> ( ! [S3: list_char > int,S4: list_char > int] :
( ( P @ S3 @ S4 )
=> ( P3 @ S3 @ S4 ) )
=> ( ! [S3: list_char > int,S4: list_char > int] :
( ( Q3 @ S3 @ S4 )
=> ( Q @ S3 @ S4 ) )
=> ( relati2102071307_hoare @ P3 @ C @ C2 @ Q3 ) ) ) ) ).
% ir_conseq
thf(fact_8_ir__valid__decomp1,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ C @ C2 @ Q )
=> ( ( relati775585786_valid @ P @ C @ skip @ ( relati1310524937decomp @ P @ C @ C2 @ Q ) )
& ( relati775585786_valid @ ( relati1310524937decomp @ P @ C @ C2 @ Q ) @ skip @ C2 @ Q ) ) ) ).
% ir_valid_decomp1
thf(fact_9_ir__valid__decomp2,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,R: ( list_char > int ) > ( list_char > int ) > $o,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( ( relati775585786_valid @ P @ C @ skip @ R )
& ( relati775585786_valid @ R @ skip @ C2 @ Q ) )
=> ( relati775585786_valid @ P @ C @ C2 @ Q ) ) ).
% ir_valid_decomp2
thf(fact_10_ir__Seq1,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,D: com,R: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare @ P @ C @ C2 @ Q )
=> ( ( relati2102071307_hoare @ Q @ D @ skip @ R )
=> ( relati2102071307_hoare @ P @ ( seq @ C @ D ) @ C2 @ R ) ) ) ).
% ir_Seq1
thf(fact_11_ir__sym,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare @ ( relati186416454e_flip @ P ) @ C @ C2 @ ( relati186416454e_flip @ Q ) )
=> ( relati2102071307_hoare @ P @ C2 @ C @ Q ) ) ).
% ir_sym
thf(fact_12_Seq1__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,D: com,R: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ C @ C2 @ Q )
=> ( ( relati775585786_valid @ Q @ D @ skip @ R )
=> ( relati775585786_valid @ P @ ( seq @ C @ D ) @ C2 @ R ) ) ) ).
% Seq1_ir_valid
thf(fact_13_Seq2__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,Q: ( list_char > int ) > ( list_char > int ) > $o,D: com,C2: com,R: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ C @ skip @ Q )
=> ( ( relati775585786_valid @ Q @ D @ C2 @ R )
=> ( relati775585786_valid @ P @ ( seq @ C @ D ) @ C2 @ R ) ) ) ).
% Seq2_ir_valid
thf(fact_14_conseq__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,P3: ( list_char > int ) > ( list_char > int ) > $o,Q3: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ C @ C2 @ Q )
=> ( ! [S3: list_char > int,S4: list_char > int] :
( ( P @ S3 @ S4 )
=> ( P3 @ S3 @ S4 ) )
=> ( ! [S3: list_char > int,S4: list_char > int] :
( ( Q3 @ S3 @ S4 )
=> ( Q @ S3 @ S4 ) )
=> ( relati775585786_valid @ P3 @ C @ C2 @ Q3 ) ) ) ) ).
% conseq_ir_valid
thf(fact_15_ir__Skip__sym,axiom,
! [Q: ( list_char > int ) > ( list_char > int ) > $o,P: ( list_char > int ) > ( list_char > int ) > $o,C2: com] :
( ! [T: list_char > int,T2: list_char > int] :
( ( Q @ T2 @ T )
=> ? [S5: list_char > int] :
( ( P @ S5 @ T )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S5 ) @ T2 ) ) )
=> ( relati2102071307_hoare @ P @ C2 @ skip @ Q ) ) ).
% ir_Skip_sym
thf(fact_16_ir__Skip,axiom,
! [Q: ( list_char > int ) > ( list_char > int ) > $o,P: ( list_char > int ) > ( list_char > int ) > $o,C2: com] :
( ! [T: list_char > int,T2: list_char > int] :
( ( Q @ T @ T2 )
=> ? [S5: list_char > int] :
( ( P @ T @ S5 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S5 ) @ T2 ) ) )
=> ( relati2102071307_hoare @ P @ skip @ C2 @ Q ) ) ).
% ir_Skip
thf(fact_17_com_Odistinct_I1_J,axiom,
! [X21: list_char,X22: aexp] :
( skip
!= ( assign @ X21 @ X22 ) ) ).
% com.distinct(1)
thf(fact_18_com_Oinject_I2_J,axiom,
! [X31: com,X32: com,Y31: com,Y32: com] :
( ( ( seq @ X31 @ X32 )
= ( seq @ Y31 @ Y32 ) )
= ( ( X31 = Y31 )
& ( X32 = Y32 ) ) ) ).
% com.inject(2)
thf(fact_19_com_Oinject_I1_J,axiom,
! [X21: list_char,X22: aexp,Y21: list_char,Y22: aexp] :
( ( ( assign @ X21 @ X22 )
= ( assign @ Y21 @ Y22 ) )
= ( ( X21 = Y21 )
& ( X22 = Y22 ) ) ) ).
% com.inject(1)
thf(fact_20_Seq__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,D: com,D2: com,R: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ C @ C2 @ Q )
=> ( ( relati775585786_valid @ Q @ D @ D2 @ R )
=> ( relati775585786_valid @ P @ ( seq @ C @ D ) @ ( seq @ C2 @ D2 ) @ R ) ) ) ).
% Seq_ir_valid
thf(fact_21_sym__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C2: com,C: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ ( relati186416454e_flip @ P ) @ C2 @ C @ ( relati186416454e_flip @ Q ) )
=> ( relati775585786_valid @ P @ C @ C2 @ Q ) ) ).
% sym_ir_valid
thf(fact_22_meh__simp,axiom,
! [S6: list_char > int,T3: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ skip @ S6 ) @ T3 )
= ( S6 = T3 ) ) ).
% meh_simp
thf(fact_23_Skip__ir__valid,axiom,
! [Q: ( list_char > int ) > ( list_char > int ) > $o,P: ( list_char > int ) > ( list_char > int ) > $o,C2: com] :
( ! [T: list_char > int,T2: list_char > int] :
( ( Q @ T @ T2 )
=> ? [S5: list_char > int] :
( ( P @ T @ S5 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S5 ) @ T2 ) ) )
=> ( relati775585786_valid @ P @ skip @ C2 @ Q ) ) ).
% Skip_ir_valid
thf(fact_24_com_Odistinct_I9_J,axiom,
! [X21: list_char,X22: aexp,X31: com,X32: com] :
( ( assign @ X21 @ X22 )
!= ( seq @ X31 @ X32 ) ) ).
% com.distinct(9)
thf(fact_25_ir__valid__def,axiom,
( relati775585786_valid
= ( ^ [P2: ( list_char > int ) > ( list_char > int ) > $o,C3: com,C4: com,Q2: ( list_char > int ) > ( list_char > int ) > $o] :
! [T4: list_char > int,T5: list_char > int] :
( ( Q2 @ T4 @ T5 )
=> ? [S: list_char > int,S2: list_char > int] :
( ( P2 @ S @ S2 )
& ( big_big_step @ ( produc1193801173ar_int @ C3 @ S ) @ T4 )
& ( big_big_step @ ( produc1193801173ar_int @ C4 @ S2 ) @ T5 ) ) ) ) ) ).
% ir_valid_def
thf(fact_26_com_Odistinct_I3_J,axiom,
! [X31: com,X32: com] :
( skip
!= ( seq @ X31 @ X32 ) ) ).
% com.distinct(3)
thf(fact_27_SeqE,axiom,
! [C1: com,C22: com,S1: list_char > int,S32: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( seq @ C1 @ C22 ) @ S1 ) @ S32 )
=> ~ ! [S_2: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C1 @ S1 ) @ S_2 )
=> ~ ( big_big_step @ ( produc1193801173ar_int @ C22 @ S_2 ) @ S32 ) ) ) ).
% SeqE
thf(fact_28_Seq__assoc,axiom,
! [C1: com,C22: com,C32: com,S7: list_char > int,S6: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( seq @ ( seq @ C1 @ C22 ) @ C32 ) @ S7 ) @ S6 )
= ( big_big_step @ ( produc1193801173ar_int @ ( seq @ C1 @ ( seq @ C22 @ C32 ) ) @ S7 ) @ S6 ) ) ).
% Seq_assoc
thf(fact_29_Seq,axiom,
! [C_1: com,S_1: list_char > int,S_22: list_char > int,C_2: com,S_3: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C_1 @ S_1 ) @ S_22 )
=> ( ( big_big_step @ ( produc1193801173ar_int @ C_2 @ S_22 ) @ S_3 )
=> ( big_big_step @ ( produc1193801173ar_int @ ( seq @ C_1 @ C_2 ) @ S_1 ) @ S_3 ) ) ) ).
% Seq
thf(fact_30_SkipE,axiom,
! [S7: list_char > int,T6: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ skip @ S7 ) @ T6 )
=> ( T6 = S7 ) ) ).
% SkipE
thf(fact_31_Skip,axiom,
! [S7: list_char > int] : ( big_big_step @ ( produc1193801173ar_int @ skip @ S7 ) @ S7 ) ).
% Skip
thf(fact_32_prod_Oinject,axiom,
! [X1: list_char > int,X2: com,Y1: list_char > int,Y2: com] :
( ( ( produc1139835093nt_com @ X1 @ X2 )
= ( produc1139835093nt_com @ Y1 @ Y2 ) )
= ( ( X1 = Y1 )
& ( X2 = Y2 ) ) ) ).
% prod.inject
thf(fact_33_prod_Oinject,axiom,
! [X1: com,X2: list_char > int,Y1: com,Y2: list_char > int] :
( ( ( produc1193801173ar_int @ X1 @ X2 )
= ( produc1193801173ar_int @ Y1 @ Y2 ) )
= ( ( X1 = Y1 )
& ( X2 = Y2 ) ) ) ).
% prod.inject
thf(fact_34_old_Oprod_Oinject,axiom,
! [A: list_char > int,B: com,A2: list_char > int,B2: com] :
( ( ( produc1139835093nt_com @ A @ B )
= ( produc1139835093nt_com @ A2 @ B2 ) )
= ( ( A = A2 )
& ( B = B2 ) ) ) ).
% old.prod.inject
thf(fact_35_old_Oprod_Oinject,axiom,
! [A: com,B: list_char > int,A2: com,B2: list_char > int] :
( ( ( produc1193801173ar_int @ A @ B )
= ( produc1193801173ar_int @ A2 @ B2 ) )
= ( ( A = A2 )
& ( B = B2 ) ) ) ).
% old.prod.inject
thf(fact_36_sim__sym,axiom,
! [C: com,C2: com] :
( ( ! [S: list_char > int,T4: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S ) @ T4 )
= ( big_big_step @ ( produc1193801173ar_int @ C2 @ S ) @ T4 ) ) )
= ( ! [S: list_char > int,T4: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C2 @ S ) @ T4 )
= ( big_big_step @ ( produc1193801173ar_int @ C @ S ) @ T4 ) ) ) ) ).
% sim_sym
thf(fact_37_sim__refl,axiom,
! [C: com,S8: list_char > int,T7: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S8 ) @ T7 )
= ( big_big_step @ ( produc1193801173ar_int @ C @ S8 ) @ T7 ) ) ).
% sim_refl
thf(fact_38_sim__trans,axiom,
! [C: com,C2: com,C5: com] :
( ! [S3: list_char > int,T: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S3 ) @ T )
= ( big_big_step @ ( produc1193801173ar_int @ C2 @ S3 ) @ T ) )
=> ( ! [S3: list_char > int,T: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C2 @ S3 ) @ T )
= ( big_big_step @ ( produc1193801173ar_int @ C5 @ S3 ) @ T ) )
=> ! [S8: list_char > int,T7: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S8 ) @ T7 )
= ( big_big_step @ ( produc1193801173ar_int @ C5 @ S8 ) @ T7 ) ) ) ) ).
% sim_trans
thf(fact_39_old_Oprod_Oinducts,axiom,
! [P: produc1166363805nt_com > $o,Prod: produc1166363805nt_com] :
( ! [A3: list_char > int,B3: com] : ( P @ ( produc1139835093nt_com @ A3 @ B3 ) )
=> ( P @ Prod ) ) ).
% old.prod.inducts
thf(fact_40_old_Oprod_Oinducts,axiom,
! [P: produc1260470173ar_int > $o,Prod: produc1260470173ar_int] :
( ! [A3: com,B3: list_char > int] : ( P @ ( produc1193801173ar_int @ A3 @ B3 ) )
=> ( P @ Prod ) ) ).
% old.prod.inducts
thf(fact_41_old_Oprod_Oexhaust,axiom,
! [Y: produc1166363805nt_com] :
~ ! [A3: list_char > int,B3: com] :
( Y
!= ( produc1139835093nt_com @ A3 @ B3 ) ) ).
% old.prod.exhaust
thf(fact_42_old_Oprod_Oexhaust,axiom,
! [Y: produc1260470173ar_int] :
~ ! [A3: com,B3: list_char > int] :
( Y
!= ( produc1193801173ar_int @ A3 @ B3 ) ) ).
% old.prod.exhaust
thf(fact_43_mem__Collect__eq,axiom,
! [A: produc1260470173ar_int,P: produc1260470173ar_int > $o] :
( ( member92250950ar_int @ A @ ( collec770796680ar_int @ P ) )
= ( P @ A ) ) ).
% mem_Collect_eq
thf(fact_44_mem__Collect__eq,axiom,
! [A: produc1166363805nt_com,P: produc1166363805nt_com > $o] :
( ( member2145628230nt_com @ A @ ( collec676690312nt_com @ P ) )
= ( P @ A ) ) ).
% mem_Collect_eq
thf(fact_45_mem__Collect__eq,axiom,
! [A: nat,P: nat > $o] :
( ( member_nat @ A @ ( collect_nat @ P ) )
= ( P @ A ) ) ).
% mem_Collect_eq
thf(fact_46_Collect__mem__eq,axiom,
! [A4: set_Pr1148378109ar_int] :
( ( collec770796680ar_int
@ ^ [X: produc1260470173ar_int] : ( member92250950ar_int @ X @ A4 ) )
= A4 ) ).
% Collect_mem_eq
thf(fact_47_Collect__mem__eq,axiom,
! [A4: set_Pr866150653nt_com] :
( ( collec676690312nt_com
@ ^ [X: produc1166363805nt_com] : ( member2145628230nt_com @ X @ A4 ) )
= A4 ) ).
% Collect_mem_eq
thf(fact_48_Collect__mem__eq,axiom,
! [A4: set_nat] :
( ( collect_nat
@ ^ [X: nat] : ( member_nat @ X @ A4 ) )
= A4 ) ).
% Collect_mem_eq
thf(fact_49_Collect__cong,axiom,
! [P: nat > $o,Q: nat > $o] :
( ! [X3: nat] :
( ( P @ X3 )
= ( Q @ X3 ) )
=> ( ( collect_nat @ P )
= ( collect_nat @ Q ) ) ) ).
% Collect_cong
thf(fact_50_Pair__inject,axiom,
! [A: list_char > int,B: com,A2: list_char > int,B2: com] :
( ( ( produc1139835093nt_com @ A @ B )
= ( produc1139835093nt_com @ A2 @ B2 ) )
=> ~ ( ( A = A2 )
=> ( B != B2 ) ) ) ).
% Pair_inject
thf(fact_51_Pair__inject,axiom,
! [A: com,B: list_char > int,A2: com,B2: list_char > int] :
( ( ( produc1193801173ar_int @ A @ B )
= ( produc1193801173ar_int @ A2 @ B2 ) )
=> ~ ( ( A = A2 )
=> ( B != B2 ) ) ) ).
% Pair_inject
thf(fact_52_prod__cases,axiom,
! [P: produc1166363805nt_com > $o,P4: produc1166363805nt_com] :
( ! [A3: list_char > int,B3: com] : ( P @ ( produc1139835093nt_com @ A3 @ B3 ) )
=> ( P @ P4 ) ) ).
% prod_cases
thf(fact_53_prod__cases,axiom,
! [P: produc1260470173ar_int > $o,P4: produc1260470173ar_int] :
( ! [A3: com,B3: list_char > int] : ( P @ ( produc1193801173ar_int @ A3 @ B3 ) )
=> ( P @ P4 ) ) ).
% prod_cases
thf(fact_54_surj__pair,axiom,
! [P4: produc1166363805nt_com] :
? [X3: list_char > int,Y3: com] :
( P4
= ( produc1139835093nt_com @ X3 @ Y3 ) ) ).
% surj_pair
thf(fact_55_surj__pair,axiom,
! [P4: produc1260470173ar_int] :
? [X3: com,Y3: list_char > int] :
( P4
= ( produc1193801173ar_int @ X3 @ Y3 ) ) ).
% surj_pair
thf(fact_56_big__step__determ,axiom,
! [C: com,S7: list_char > int,T6: list_char > int,U: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S7 ) @ T6 )
=> ( ( big_big_step @ ( produc1193801173ar_int @ C @ S7 ) @ U )
=> ( U = T6 ) ) ) ).
% big_step_determ
thf(fact_57_ssubst__Pair__rhs,axiom,
! [R2: list_char > int,S7: com,R: set_Pr866150653nt_com,S6: com] :
( ( member2145628230nt_com @ ( produc1139835093nt_com @ R2 @ S7 ) @ R )
=> ( ( S6 = S7 )
=> ( member2145628230nt_com @ ( produc1139835093nt_com @ R2 @ S6 ) @ R ) ) ) ).
% ssubst_Pair_rhs
thf(fact_58_ssubst__Pair__rhs,axiom,
! [R2: com,S7: list_char > int,R: set_Pr1148378109ar_int,S6: list_char > int] :
( ( member92250950ar_int @ ( produc1193801173ar_int @ R2 @ S7 ) @ R )
=> ( ( S6 = S7 )
=> ( member92250950ar_int @ ( produc1193801173ar_int @ R2 @ S6 ) @ R ) ) ) ).
% ssubst_Pair_rhs
thf(fact_59_curry__conv,axiom,
( produc1858366159_int_o
= ( ^ [F: produc1260470173ar_int > $o,A5: com,B4: list_char > int] : ( F @ ( produc1193801173ar_int @ A5 @ B4 ) ) ) ) ).
% curry_conv
thf(fact_60_commute__if,axiom,
! [B1: bexp,B22: bexp,C11: com,C12: com,C22: com,S8: list_char > int,T7: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( if @ B1 @ ( if @ B22 @ C11 @ C12 ) @ C22 ) @ S8 ) @ T7 )
= ( big_big_step @ ( produc1193801173ar_int @ ( if @ B22 @ ( if @ B1 @ C11 @ C22 ) @ ( if @ B1 @ C12 @ C22 ) ) @ S8 ) @ T7 ) ) ).
% commute_if
thf(fact_61_triv__if,axiom,
! [B: bexp,C: com,S8: list_char > int,T7: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ C @ C ) @ S8 ) @ T7 )
= ( big_big_step @ ( produc1193801173ar_int @ C @ S8 ) @ T7 ) ) ).
% triv_if
thf(fact_62_curryI,axiom,
! [F2: produc1166363805nt_com > $o,A: list_char > int,B: com] :
( ( F2 @ ( produc1139835093nt_com @ A @ B ) )
=> ( produc1803493327_com_o @ F2 @ A @ B ) ) ).
% curryI
thf(fact_63_curryI,axiom,
! [F2: produc1260470173ar_int > $o,A: com,B: list_char > int] :
( ( F2 @ ( produc1193801173ar_int @ A @ B ) )
=> ( produc1858366159_int_o @ F2 @ A @ B ) ) ).
% curryI
thf(fact_64_while__unfold,axiom,
! [B: bexp,C: com,S8: list_char > int,T7: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S8 ) @ T7 )
= ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ ( seq @ C @ ( while @ B @ C ) ) @ skip ) @ S8 ) @ T7 ) ) ).
% while_unfold
thf(fact_65_com_Oinject_I4_J,axiom,
! [X51: bexp,X52: com,Y51: bexp,Y52: com] :
( ( ( while @ X51 @ X52 )
= ( while @ Y51 @ Y52 ) )
= ( ( X51 = Y51 )
& ( X52 = Y52 ) ) ) ).
% com.inject(4)
thf(fact_66_com_Oinject_I3_J,axiom,
! [X41: bexp,X42: com,X43: com,Y41: bexp,Y42: com,Y43: com] :
( ( ( if @ X41 @ X42 @ X43 )
= ( if @ Y41 @ Y42 @ Y43 ) )
= ( ( X41 = Y41 )
& ( X42 = Y42 )
& ( X43 = Y43 ) ) ) ).
% com.inject(3)
thf(fact_67_com_Odistinct_I19_J,axiom,
! [X41: bexp,X42: com,X43: com,X51: bexp,X52: com] :
( ( if @ X41 @ X42 @ X43 )
!= ( while @ X51 @ X52 ) ) ).
% com.distinct(19)
thf(fact_68_com_Odistinct_I7_J,axiom,
! [X51: bexp,X52: com] :
( skip
!= ( while @ X51 @ X52 ) ) ).
% com.distinct(7)
thf(fact_69_com_Odistinct_I17_J,axiom,
! [X31: com,X32: com,X51: bexp,X52: com] :
( ( seq @ X31 @ X32 )
!= ( while @ X51 @ X52 ) ) ).
% com.distinct(17)
thf(fact_70_com_Odistinct_I13_J,axiom,
! [X21: list_char,X22: aexp,X51: bexp,X52: com] :
( ( assign @ X21 @ X22 )
!= ( while @ X51 @ X52 ) ) ).
% com.distinct(13)
thf(fact_71_com_Odistinct_I5_J,axiom,
! [X41: bexp,X42: com,X43: com] :
( skip
!= ( if @ X41 @ X42 @ X43 ) ) ).
% com.distinct(5)
thf(fact_72_com_Odistinct_I15_J,axiom,
! [X31: com,X32: com,X41: bexp,X42: com,X43: com] :
( ( seq @ X31 @ X32 )
!= ( if @ X41 @ X42 @ X43 ) ) ).
% com.distinct(15)
thf(fact_73_com_Odistinct_I11_J,axiom,
! [X21: list_char,X22: aexp,X41: bexp,X42: com,X43: com] :
( ( assign @ X21 @ X22 )
!= ( if @ X41 @ X42 @ X43 ) ) ).
% com.distinct(11)
thf(fact_74_curryD,axiom,
! [F2: produc1166363805nt_com > $o,A: list_char > int,B: com] :
( ( produc1803493327_com_o @ F2 @ A @ B )
=> ( F2 @ ( produc1139835093nt_com @ A @ B ) ) ) ).
% curryD
thf(fact_75_curryD,axiom,
! [F2: produc1260470173ar_int > $o,A: com,B: list_char > int] :
( ( produc1858366159_int_o @ F2 @ A @ B )
=> ( F2 @ ( produc1193801173ar_int @ A @ B ) ) ) ).
% curryD
thf(fact_76_curryE,axiom,
! [F2: produc1166363805nt_com > $o,A: list_char > int,B: com] :
( ( produc1803493327_com_o @ F2 @ A @ B )
=> ( F2 @ ( produc1139835093nt_com @ A @ B ) ) ) ).
% curryE
thf(fact_77_curryE,axiom,
! [F2: produc1260470173ar_int > $o,A: com,B: list_char > int] :
( ( produc1858366159_int_o @ F2 @ A @ B )
=> ( F2 @ ( produc1193801173ar_int @ A @ B ) ) ) ).
% curryE
thf(fact_78_com_Oinduct,axiom,
! [P: com > $o,Com: com] :
( ( P @ skip )
=> ( ! [X12: list_char,X23: aexp] : ( P @ ( assign @ X12 @ X23 ) )
=> ( ! [X12: com,X23: com] :
( ( P @ X12 )
=> ( ( P @ X23 )
=> ( P @ ( seq @ X12 @ X23 ) ) ) )
=> ( ! [X12: bexp,X23: com,X33: com] :
( ( P @ X23 )
=> ( ( P @ X33 )
=> ( P @ ( if @ X12 @ X23 @ X33 ) ) ) )
=> ( ! [X12: bexp,X23: com] :
( ( P @ X23 )
=> ( P @ ( while @ X12 @ X23 ) ) )
=> ( P @ Com ) ) ) ) ) ) ).
% com.induct
thf(fact_79_com_Oexhaust,axiom,
! [Y: com] :
( ( Y != skip )
=> ( ! [X212: list_char,X222: aexp] :
( Y
!= ( assign @ X212 @ X222 ) )
=> ( ! [X312: com,X322: com] :
( Y
!= ( seq @ X312 @ X322 ) )
=> ( ! [X412: bexp,X422: com,X432: com] :
( Y
!= ( if @ X412 @ X422 @ X432 ) )
=> ~ ! [X512: bexp,X522: com] :
( Y
!= ( while @ X512 @ X522 ) ) ) ) ) ) ).
% com.exhaust
thf(fact_80_sim__while__cong,axiom,
! [C: com,C2: com,B: bexp] :
( ! [S3: list_char > int,T: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S3 ) @ T )
= ( big_big_step @ ( produc1193801173ar_int @ C2 @ S3 ) @ T ) )
=> ! [S8: list_char > int,T7: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S8 ) @ T7 )
= ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C2 ) @ S8 ) @ T7 ) ) ) ).
% sim_while_cong
thf(fact_81_sim__while__cong__aux,axiom,
! [B: bexp,C: com,S7: list_char > int,T6: list_char > int,C2: com] :
( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S7 ) @ T6 )
=> ( ! [S3: list_char > int,T: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S3 ) @ T )
= ( big_big_step @ ( produc1193801173ar_int @ C2 @ S3 ) @ T ) )
=> ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C2 ) @ S7 ) @ T6 ) ) ) ).
% sim_while_cong_aux
thf(fact_82_IfE,axiom,
! [B: bexp,C1: com,C22: com,S7: list_char > int,T6: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ C1 @ C22 ) @ S7 ) @ T6 )
=> ( ( ( bval @ B @ S7 )
=> ~ ( big_big_step @ ( produc1193801173ar_int @ C1 @ S7 ) @ T6 ) )
=> ~ ( ~ ( bval @ B @ S7 )
=> ~ ( big_big_step @ ( produc1193801173ar_int @ C22 @ S7 ) @ T6 ) ) ) ) ).
% IfE
thf(fact_83_IfTrue,axiom,
! [B: bexp,S7: list_char > int,C_1: com,T6: list_char > int,C_2: com] :
( ( bval @ B @ S7 )
=> ( ( big_big_step @ ( produc1193801173ar_int @ C_1 @ S7 ) @ T6 )
=> ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ C_1 @ C_2 ) @ S7 ) @ T6 ) ) ) ).
% IfTrue
thf(fact_84_IfFalse,axiom,
! [B: bexp,S7: list_char > int,C_2: com,T6: list_char > int,C_1: com] :
( ~ ( bval @ B @ S7 )
=> ( ( big_big_step @ ( produc1193801173ar_int @ C_2 @ S7 ) @ T6 )
=> ( big_big_step @ ( produc1193801173ar_int @ ( if @ B @ C_1 @ C_2 ) @ S7 ) @ T6 ) ) ) ).
% IfFalse
thf(fact_85_WhileE,axiom,
! [B: bexp,C: com,S7: list_char > int,T6: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S7 ) @ T6 )
=> ( ( ( T6 = S7 )
=> ( bval @ B @ S7 ) )
=> ~ ( ( bval @ B @ S7 )
=> ! [S_2: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S7 ) @ S_2 )
=> ~ ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S_2 ) @ T6 ) ) ) ) ) ).
% WhileE
thf(fact_86_WhileTrue,axiom,
! [B: bexp,S_1: list_char > int,C: com,S_22: list_char > int,S_3: list_char > int] :
( ( bval @ B @ S_1 )
=> ( ( big_big_step @ ( produc1193801173ar_int @ C @ S_1 ) @ S_22 )
=> ( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S_22 ) @ S_3 )
=> ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S_1 ) @ S_3 ) ) ) ) ).
% WhileTrue
thf(fact_87_WhileFalse,axiom,
! [B: bexp,S7: list_char > int,C: com] :
( ~ ( bval @ B @ S7 )
=> ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S7 ) @ S7 ) ) ).
% WhileFalse
thf(fact_88_swap__simp,axiom,
! [X4: list_char > int,Y: com] :
( ( produc1716235893nt_com @ ( produc1139835093nt_com @ X4 @ Y ) )
= ( produc1193801173ar_int @ Y @ X4 ) ) ).
% swap_simp
thf(fact_89_swap__simp,axiom,
! [X4: com,Y: list_char > int] :
( ( produc1770201973ar_int @ ( produc1193801173ar_int @ X4 @ Y ) )
= ( produc1139835093nt_com @ Y @ X4 ) ) ).
% swap_simp
thf(fact_90_swap__swap,axiom,
! [P4: produc1166363805nt_com] :
( ( produc1770201973ar_int @ ( produc1716235893nt_com @ P4 ) )
= P4 ) ).
% swap_swap
thf(fact_91_swap__swap,axiom,
! [P4: produc1260470173ar_int] :
( ( produc1716235893nt_com @ ( produc1770201973ar_int @ P4 ) )
= P4 ) ).
% swap_swap
thf(fact_92_pair__in__swap__image,axiom,
! [Y: list_char > int,X4: com,A4: set_Pr1148378109ar_int] :
( ( member2145628230nt_com @ ( produc1139835093nt_com @ Y @ X4 ) @ ( image_786684229nt_com @ produc1770201973ar_int @ A4 ) )
= ( member92250950ar_int @ ( produc1193801173ar_int @ X4 @ Y ) @ A4 ) ) ).
% pair_in_swap_image
thf(fact_93_pair__in__swap__image,axiom,
! [Y: com,X4: list_char > int,A4: set_Pr866150653nt_com] :
( ( member92250950ar_int @ ( produc1193801173ar_int @ Y @ X4 ) @ ( image_1968865093ar_int @ produc1716235893nt_com @ A4 ) )
= ( member2145628230nt_com @ ( produc1139835093nt_com @ X4 @ Y ) @ A4 ) ) ).
% pair_in_swap_image
thf(fact_94_internal__case__prod__def,axiom,
produc857153862et_nat = produc991755120et_nat ).
% internal_case_prod_def
thf(fact_95_internal__case__prod__def,axiom,
produc9062872_int_o = produc668584238_int_o ).
% internal_case_prod_def
thf(fact_96_internal__case__prod__def,axiom,
produc641693072nt_nat = produc1311963066nt_nat ).
% internal_case_prod_def
thf(fact_97_internal__case__prod__def,axiom,
produc837840349ar_int = produc1288559923ar_int ).
% internal_case_prod_def
thf(fact_98_Assign__complete,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,X1: list_char,X2: aexp,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,T6: list_char > int,T3: list_char > int] :
( ( relati775585786_valid @ P @ ( assign @ X1 @ X2 ) @ C2 @ Q )
=> ( ( Q @ T6 @ T3 )
=> ? [S4: list_char > int] :
( ? [V: int] :
( ( P @ ( fun_up103088396ar_int @ T6 @ X1 @ V ) @ S4 )
& ( ( T6 @ X1 )
= ( aval @ X2 @ ( fun_up103088396ar_int @ T6 @ X1 @ V ) ) ) )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S4 ) @ T3 ) ) ) ) ).
% Assign_complete
thf(fact_99_While__True__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( bval @ B @ S ) )
@ ( seq @ C @ ( while @ B @ C ) )
@ C2
@ Q )
=> ( relati775585786_valid @ P @ ( while @ B @ C ) @ C2 @ Q ) ) ).
% While_True_ir_valid
thf(fact_100_While__backwards__frontier__ir__valid_H,axiom,
! [P: nat > ( list_char > int ) > ( list_char > int ) > $o,K: nat,B: bexp,C: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C2: com,T6: list_char > int,T3: list_char > int] :
( ! [N: nat,T: list_char > int,T2: list_char > int] :
( ( P @ ( plus_plus_nat @ K @ ( suc @ N ) ) @ T @ T2 )
=> ? [S8: list_char > int] :
( ( P @ ( plus_plus_nat @ K @ N ) @ S8 @ T2 )
& ( bval @ B @ S8 )
& ( big_big_step @ ( produc1193801173ar_int @ C @ S8 ) @ T ) ) )
=> ( ! [T: list_char > int,T2: list_char > int] :
( ( Q @ T @ T2 )
=> ? [S8: list_char > int,S5: list_char > int] :
( ? [N2: nat] : ( P @ ( plus_plus_nat @ K @ N2 ) @ S8 @ S5 )
& ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S8 ) @ T )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S5 ) @ T2 ) ) )
=> ( ( Q @ T6 @ T3 )
=> ? [S3: list_char > int,S4: list_char > int] :
( ( P @ K @ S3 @ S4 )
& ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ S3 ) @ T6 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S4 ) @ T3 ) ) ) ) ) ).
% While_backwards_frontier_ir_valid'
thf(fact_101_mem__case__prodI2,axiom,
! [P4: produc1260470173ar_int,Z: produc1260470173ar_int,C: com > ( list_char > int ) > set_Pr1148378109ar_int] :
( ! [A3: com,B3: list_char > int] :
( ( P4
= ( produc1193801173ar_int @ A3 @ B3 ) )
=> ( member92250950ar_int @ Z @ ( C @ A3 @ B3 ) ) )
=> ( member92250950ar_int @ Z @ ( produc128852371ar_int @ C @ P4 ) ) ) ).
% mem_case_prodI2
thf(fact_102_mem__case__prodI2,axiom,
! [P4: produc1260470173ar_int,Z: produc1166363805nt_com,C: com > ( list_char > int ) > set_Pr866150653nt_com] :
( ! [A3: com,B3: list_char > int] :
( ( P4
= ( produc1193801173ar_int @ A3 @ B3 ) )
=> ( member2145628230nt_com @ Z @ ( C @ A3 @ B3 ) ) )
=> ( member2145628230nt_com @ Z @ ( produc1994108563nt_com @ C @ P4 ) ) ) ).
% mem_case_prodI2
thf(fact_103_mem__case__prodI2,axiom,
! [P4: produc1166363805nt_com,Z: nat,C: ( list_char > int ) > com > set_nat] :
( ! [A3: list_char > int,B3: com] :
( ( P4
= ( produc1139835093nt_com @ A3 @ B3 ) )
=> ( member_nat @ Z @ ( C @ A3 @ B3 ) ) )
=> ( member_nat @ Z @ ( produc1754105456et_nat @ C @ P4 ) ) ) ).
% mem_case_prodI2
thf(fact_104_mem__case__prodI2,axiom,
! [P4: produc1166363805nt_com,Z: produc1260470173ar_int,C: ( list_char > int ) > com > set_Pr1148378109ar_int] :
( ! [A3: list_char > int,B3: com] :
( ( P4
= ( produc1139835093nt_com @ A3 @ B3 ) )
=> ( member92250950ar_int @ Z @ ( C @ A3 @ B3 ) ) )
=> ( member92250950ar_int @ Z @ ( produc1461507731ar_int @ C @ P4 ) ) ) ).
% mem_case_prodI2
thf(fact_105_mem__case__prodI2,axiom,
! [P4: produc1166363805nt_com,Z: produc1166363805nt_com,C: ( list_char > int ) > com > set_Pr866150653nt_com] :
( ! [A3: list_char > int,B3: com] :
( ( P4
= ( produc1139835093nt_com @ A3 @ B3 ) )
=> ( member2145628230nt_com @ Z @ ( C @ A3 @ B3 ) ) )
=> ( member2145628230nt_com @ Z @ ( produc1179280275nt_com @ C @ P4 ) ) ) ).
% mem_case_prodI2
thf(fact_106_mem__case__prodI2,axiom,
! [P4: produc1260470173ar_int,Z: nat,C: com > ( list_char > int ) > set_nat] :
( ! [A3: com,B3: list_char > int] :
( ( P4
= ( produc1193801173ar_int @ A3 @ B3 ) )
=> ( member_nat @ Z @ ( C @ A3 @ B3 ) ) )
=> ( member_nat @ Z @ ( produc991755120et_nat @ C @ P4 ) ) ) ).
% mem_case_prodI2
thf(fact_107_mem__case__prodI,axiom,
! [Z: produc1260470173ar_int,C: com > ( list_char > int ) > set_Pr1148378109ar_int,A: com,B: list_char > int] :
( ( member92250950ar_int @ Z @ ( C @ A @ B ) )
=> ( member92250950ar_int @ Z @ ( produc128852371ar_int @ C @ ( produc1193801173ar_int @ A @ B ) ) ) ) ).
% mem_case_prodI
thf(fact_108_mem__case__prodI,axiom,
! [Z: produc1166363805nt_com,C: com > ( list_char > int ) > set_Pr866150653nt_com,A: com,B: list_char > int] :
( ( member2145628230nt_com @ Z @ ( C @ A @ B ) )
=> ( member2145628230nt_com @ Z @ ( produc1994108563nt_com @ C @ ( produc1193801173ar_int @ A @ B ) ) ) ) ).
% mem_case_prodI
thf(fact_109_mem__case__prodI,axiom,
! [Z: nat,C: ( list_char > int ) > com > set_nat,A: list_char > int,B: com] :
( ( member_nat @ Z @ ( C @ A @ B ) )
=> ( member_nat @ Z @ ( produc1754105456et_nat @ C @ ( produc1139835093nt_com @ A @ B ) ) ) ) ).
% mem_case_prodI
thf(fact_110_mem__case__prodI,axiom,
! [Z: produc1260470173ar_int,C: ( list_char > int ) > com > set_Pr1148378109ar_int,A: list_char > int,B: com] :
( ( member92250950ar_int @ Z @ ( C @ A @ B ) )
=> ( member92250950ar_int @ Z @ ( produc1461507731ar_int @ C @ ( produc1139835093nt_com @ A @ B ) ) ) ) ).
% mem_case_prodI
thf(fact_111_mem__case__prodI,axiom,
! [Z: produc1166363805nt_com,C: ( list_char > int ) > com > set_Pr866150653nt_com,A: list_char > int,B: com] :
( ( member2145628230nt_com @ Z @ ( C @ A @ B ) )
=> ( member2145628230nt_com @ Z @ ( produc1179280275nt_com @ C @ ( produc1139835093nt_com @ A @ B ) ) ) ) ).
% mem_case_prodI
thf(fact_112_mem__case__prodI,axiom,
! [Z: nat,C: com > ( list_char > int ) > set_nat,A: com,B: list_char > int] :
( ( member_nat @ Z @ ( C @ A @ B ) )
=> ( member_nat @ Z @ ( produc991755120et_nat @ C @ ( produc1193801173ar_int @ A @ B ) ) ) ) ).
% mem_case_prodI
thf(fact_113_case__prodI2,axiom,
! [P4: produc1166363805nt_com,C: ( list_char > int ) > com > $o] :
( ! [A3: list_char > int,B3: com] :
( ( P4
= ( produc1139835093nt_com @ A3 @ B3 ) )
=> ( C @ A3 @ B3 ) )
=> ( produc613711406_com_o @ C @ P4 ) ) ).
% case_prodI2
thf(fact_114_case__prodI2,axiom,
! [P4: produc1260470173ar_int,C: com > ( list_char > int ) > $o] :
( ! [A3: com,B3: list_char > int] :
( ( P4
= ( produc1193801173ar_int @ A3 @ B3 ) )
=> ( C @ A3 @ B3 ) )
=> ( produc668584238_int_o @ C @ P4 ) ) ).
% case_prodI2
thf(fact_115_case__prodI,axiom,
! [F2: ( list_char > int ) > com > $o,A: list_char > int,B: com] :
( ( F2 @ A @ B )
=> ( produc613711406_com_o @ F2 @ ( produc1139835093nt_com @ A @ B ) ) ) ).
% case_prodI
thf(fact_116_case__prodI,axiom,
! [F2: com > ( list_char > int ) > $o,A: com,B: list_char > int] :
( ( F2 @ A @ B )
=> ( produc668584238_int_o @ F2 @ ( produc1193801173ar_int @ A @ B ) ) ) ).
% case_prodI
thf(fact_117_disj__ir__valid,axiom,
! [P_1: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q_1: ( list_char > int ) > ( list_char > int ) > $o,P_2: ( list_char > int ) > ( list_char > int ) > $o,Q_2: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P_1 @ C @ C2 @ Q_1 )
=> ( ( relati775585786_valid @ P_2 @ C @ C2 @ Q_2 )
=> ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P_1 @ S @ S2 )
| ( P_2 @ S @ S2 ) )
@ C
@ C2
@ ^ [T4: list_char > int,T5: list_char > int] :
( ( Q_1 @ T4 @ T5 )
| ( Q_2 @ T4 @ T5 ) ) ) ) ) ).
% disj_ir_valid
thf(fact_118_case__prod__conv,axiom,
! [F2: com > ( list_char > int ) > set_nat,A: com,B: list_char > int] :
( ( produc991755120et_nat @ F2 @ ( produc1193801173ar_int @ A @ B ) )
= ( F2 @ A @ B ) ) ).
% case_prod_conv
thf(fact_119_case__prod__conv,axiom,
! [F2: com > ( list_char > int ) > $o,A: com,B: list_char > int] :
( ( produc668584238_int_o @ F2 @ ( produc1193801173ar_int @ A @ B ) )
= ( F2 @ A @ B ) ) ).
% case_prod_conv
thf(fact_120_case__prod__conv,axiom,
! [F2: com > ( list_char > int ) > nat,A: com,B: list_char > int] :
( ( produc1311963066nt_nat @ F2 @ ( produc1193801173ar_int @ A @ B ) )
= ( F2 @ A @ B ) ) ).
% case_prod_conv
thf(fact_121_case__prod__conv,axiom,
! [F2: com > ( list_char > int ) > produc1260470173ar_int,A: com,B: list_char > int] :
( ( produc1288559923ar_int @ F2 @ ( produc1193801173ar_int @ A @ B ) )
= ( F2 @ A @ B ) ) ).
% case_prod_conv
thf(fact_122_curry__case__prod,axiom,
! [F2: com > ( list_char > int ) > set_nat] :
( ( produc1791150095et_nat @ ( produc991755120et_nat @ F2 ) )
= F2 ) ).
% curry_case_prod
thf(fact_123_curry__case__prod,axiom,
! [F2: com > ( list_char > int ) > $o] :
( ( produc1858366159_int_o @ ( produc668584238_int_o @ F2 ) )
= F2 ) ).
% curry_case_prod
thf(fact_124_curry__case__prod,axiom,
! [F2: com > ( list_char > int ) > nat] :
( ( produc763543641nt_nat @ ( produc1311963066nt_nat @ F2 ) )
= F2 ) ).
% curry_case_prod
thf(fact_125_curry__case__prod,axiom,
! [F2: com > ( list_char > int ) > produc1260470173ar_int] :
( ( produc804153044ar_int @ ( produc1288559923ar_int @ F2 ) )
= F2 ) ).
% curry_case_prod
thf(fact_126_case__prod__curry,axiom,
! [F2: produc1260470173ar_int > set_nat] :
( ( produc991755120et_nat @ ( produc1791150095et_nat @ F2 ) )
= F2 ) ).
% case_prod_curry
thf(fact_127_case__prod__curry,axiom,
! [F2: produc1260470173ar_int > $o] :
( ( produc668584238_int_o @ ( produc1858366159_int_o @ F2 ) )
= F2 ) ).
% case_prod_curry
thf(fact_128_case__prod__curry,axiom,
! [F2: produc1260470173ar_int > nat] :
( ( produc1311963066nt_nat @ ( produc763543641nt_nat @ F2 ) )
= F2 ) ).
% case_prod_curry
thf(fact_129_case__prod__curry,axiom,
! [F2: produc1260470173ar_int > produc1260470173ar_int] :
( ( produc1288559923ar_int @ ( produc804153044ar_int @ F2 ) )
= F2 ) ).
% case_prod_curry
thf(fact_130_case__swap,axiom,
! [F2: com > ( list_char > int ) > set_nat,P4: produc1260470173ar_int] :
( ( produc1754105456et_nat
@ ^ [Y4: list_char > int,X: com] : ( F2 @ X @ Y4 )
@ ( produc1770201973ar_int @ P4 ) )
= ( produc991755120et_nat @ F2 @ P4 ) ) ).
% case_swap
thf(fact_131_case__swap,axiom,
! [F2: com > ( list_char > int ) > $o,P4: produc1260470173ar_int] :
( ( produc613711406_com_o
@ ^ [Y4: list_char > int,X: com] : ( F2 @ X @ Y4 )
@ ( produc1770201973ar_int @ P4 ) )
= ( produc668584238_int_o @ F2 @ P4 ) ) ).
% case_swap
thf(fact_132_case__swap,axiom,
! [F2: com > ( list_char > int ) > nat,P4: produc1260470173ar_int] :
( ( produc1263502010om_nat
@ ^ [Y4: list_char > int,X: com] : ( F2 @ X @ Y4 )
@ ( produc1770201973ar_int @ P4 ) )
= ( produc1311963066nt_nat @ F2 @ P4 ) ) ).
% case_swap
thf(fact_133_case__swap,axiom,
! [F2: com > ( list_char > int ) > produc1260470173ar_int,P4: produc1260470173ar_int] :
( ( produc1771082291ar_int
@ ^ [Y4: list_char > int,X: com] : ( F2 @ X @ Y4 )
@ ( produc1770201973ar_int @ P4 ) )
= ( produc1288559923ar_int @ F2 @ P4 ) ) ).
% case_swap
thf(fact_134_case__swap,axiom,
! [F2: ( list_char > int ) > com > set_nat,P4: produc1166363805nt_com] :
( ( produc991755120et_nat
@ ^ [Y4: com,X: list_char > int] : ( F2 @ X @ Y4 )
@ ( produc1716235893nt_com @ P4 ) )
= ( produc1754105456et_nat @ F2 @ P4 ) ) ).
% case_swap
thf(fact_135_case__swap,axiom,
! [F2: ( list_char > int ) > com > $o,P4: produc1166363805nt_com] :
( ( produc668584238_int_o
@ ^ [Y4: com,X: list_char > int] : ( F2 @ X @ Y4 )
@ ( produc1716235893nt_com @ P4 ) )
= ( produc613711406_com_o @ F2 @ P4 ) ) ).
% case_swap
thf(fact_136_case__swap,axiom,
! [F2: ( list_char > int ) > com > nat,P4: produc1166363805nt_com] :
( ( produc1311963066nt_nat
@ ^ [Y4: com,X: list_char > int] : ( F2 @ X @ Y4 )
@ ( produc1716235893nt_com @ P4 ) )
= ( produc1263502010om_nat @ F2 @ P4 ) ) ).
% case_swap
thf(fact_137_case__swap,axiom,
! [F2: ( list_char > int ) > com > produc1260470173ar_int,P4: produc1166363805nt_com] :
( ( produc1288559923ar_int
@ ^ [Y4: com,X: list_char > int] : ( F2 @ X @ Y4 )
@ ( produc1716235893nt_com @ P4 ) )
= ( produc1771082291ar_int @ F2 @ P4 ) ) ).
% case_swap
thf(fact_138_pair__imageI,axiom,
! [A: com,B: list_char > int,A4: set_Pr1148378109ar_int,F2: com > ( list_char > int ) > produc1166363805nt_com] :
( ( member92250950ar_int @ ( produc1193801173ar_int @ A @ B ) @ A4 )
=> ( member2145628230nt_com @ ( F2 @ A @ B ) @ ( image_786684229nt_com @ ( produc1194453555nt_com @ F2 ) @ A4 ) ) ) ).
% pair_imageI
thf(fact_139_pair__imageI,axiom,
! [A: list_char > int,B: com,A4: set_Pr866150653nt_com,F2: ( list_char > int ) > com > nat] :
( ( member2145628230nt_com @ ( produc1139835093nt_com @ A @ B ) @ A4 )
=> ( member_nat @ ( F2 @ A @ B ) @ ( image_596692520om_nat @ ( produc1263502010om_nat @ F2 ) @ A4 ) ) ) ).
% pair_imageI
thf(fact_140_pair__imageI,axiom,
! [A: list_char > int,B: com,A4: set_Pr866150653nt_com,F2: ( list_char > int ) > com > produc1260470173ar_int] :
( ( member2145628230nt_com @ ( produc1139835093nt_com @ A @ B ) @ A4 )
=> ( member92250950ar_int @ ( F2 @ A @ B ) @ ( image_1968865093ar_int @ ( produc1771082291ar_int @ F2 ) @ A4 ) ) ) ).
% pair_imageI
thf(fact_141_pair__imageI,axiom,
! [A: list_char > int,B: com,A4: set_Pr866150653nt_com,F2: ( list_char > int ) > com > produc1166363805nt_com] :
( ( member2145628230nt_com @ ( produc1139835093nt_com @ A @ B ) @ A4 )
=> ( member2145628230nt_com @ ( F2 @ A @ B ) @ ( image_1874758725nt_com @ ( produc1676975923nt_com @ F2 ) @ A4 ) ) ) ).
% pair_imageI
thf(fact_142_pair__imageI,axiom,
! [A: com,B: list_char > int,A4: set_Pr1148378109ar_int,F2: com > ( list_char > int ) > set_nat] :
( ( member92250950ar_int @ ( produc1193801173ar_int @ A @ B ) @ A4 )
=> ( member_set_nat @ ( F2 @ A @ B ) @ ( image_989727966et_nat @ ( produc991755120et_nat @ F2 ) @ A4 ) ) ) ).
% pair_imageI
thf(fact_143_pair__imageI,axiom,
! [A: com,B: list_char > int,A4: set_Pr1148378109ar_int,F2: com > ( list_char > int ) > $o] :
( ( member92250950ar_int @ ( produc1193801173ar_int @ A @ B ) @ A4 )
=> ( member_o @ ( F2 @ A @ B ) @ ( image_522938432_int_o @ ( produc668584238_int_o @ F2 ) @ A4 ) ) ) ).
% pair_imageI
thf(fact_144_pair__imageI,axiom,
! [A: com,B: list_char > int,A4: set_Pr1148378109ar_int,F2: com > ( list_char > int ) > produc1260470173ar_int] :
( ( member92250950ar_int @ ( produc1193801173ar_int @ A @ B ) @ A4 )
=> ( member92250950ar_int @ ( F2 @ A @ B ) @ ( image_880790597ar_int @ ( produc1288559923ar_int @ F2 ) @ A4 ) ) ) ).
% pair_imageI
thf(fact_145_pair__imageI,axiom,
! [A: com,B: list_char > int,A4: set_Pr1148378109ar_int,F2: com > ( list_char > int ) > nat] :
( ( member92250950ar_int @ ( produc1193801173ar_int @ A @ B ) @ A4 )
=> ( member_nat @ ( F2 @ A @ B ) @ ( image_1742782760nt_nat @ ( produc1311963066nt_nat @ F2 ) @ A4 ) ) ) ).
% pair_imageI
thf(fact_146_If__True__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C_1: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C_2: com] :
( ( relati775585786_valid
@ ^ [A5: list_char > int,C3: list_char > int] :
( ( P @ A5 @ C3 )
& ( bval @ B @ A5 ) )
@ C_1
@ C2
@ Q )
=> ( relati775585786_valid @ P @ ( if @ B @ C_1 @ C_2 ) @ C2 @ Q ) ) ).
% If_True_ir_valid
thf(fact_147_If__False__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C_2: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C_1: com] :
( ( relati775585786_valid
@ ^ [A5: list_char > int,C3: list_char > int] :
( ( P @ A5 @ C3 )
& ~ ( bval @ B @ A5 ) )
@ C_2
@ C2
@ Q )
=> ( relati775585786_valid @ P @ ( if @ B @ C_1 @ C_2 ) @ C2 @ Q ) ) ).
% If_False_ir_valid
thf(fact_148_While__False__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C: com] :
( ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ~ ( bval @ B @ S ) )
@ skip
@ C2
@ Q )
=> ( relati775585786_valid @ P @ ( while @ B @ C ) @ C2 @ Q ) ) ).
% While_False_ir_valid
thf(fact_149_Assign__blah,axiom,
! [T6: list_char > int,X4: list_char,E: aexp,V2: int] :
( ( ( T6 @ X4 )
= ( aval @ E @ ( fun_up103088396ar_int @ T6 @ X4 @ V2 ) ) )
=> ( big_big_step @ ( produc1193801173ar_int @ ( assign @ X4 @ E ) @ ( fun_up103088396ar_int @ T6 @ X4 @ V2 ) ) @ T6 ) ) ).
% Assign_blah
thf(fact_150_curry__def,axiom,
( produc1858366159_int_o
= ( ^ [C3: produc1260470173ar_int > $o,X: com,Y4: list_char > int] : ( C3 @ ( produc1193801173ar_int @ X @ Y4 ) ) ) ) ).
% curry_def
thf(fact_151_prod_Ocase__distrib,axiom,
! [H: $o > $o,F2: com > ( list_char > int ) > $o,Prod: produc1260470173ar_int] :
( ( H @ ( produc668584238_int_o @ F2 @ Prod ) )
= ( produc668584238_int_o
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_152_prod_Ocase__distrib,axiom,
! [H: $o > nat,F2: com > ( list_char > int ) > $o,Prod: produc1260470173ar_int] :
( ( H @ ( produc668584238_int_o @ F2 @ Prod ) )
= ( produc1311963066nt_nat
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_153_prod_Ocase__distrib,axiom,
! [H: nat > $o,F2: com > ( list_char > int ) > nat,Prod: produc1260470173ar_int] :
( ( H @ ( produc1311963066nt_nat @ F2 @ Prod ) )
= ( produc668584238_int_o
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_154_prod_Ocase__distrib,axiom,
! [H: nat > nat,F2: com > ( list_char > int ) > nat,Prod: produc1260470173ar_int] :
( ( H @ ( produc1311963066nt_nat @ F2 @ Prod ) )
= ( produc1311963066nt_nat
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_155_prod_Ocase__distrib,axiom,
! [H: set_nat > $o,F2: com > ( list_char > int ) > set_nat,Prod: produc1260470173ar_int] :
( ( H @ ( produc991755120et_nat @ F2 @ Prod ) )
= ( produc668584238_int_o
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_156_prod_Ocase__distrib,axiom,
! [H: set_nat > nat,F2: com > ( list_char > int ) > set_nat,Prod: produc1260470173ar_int] :
( ( H @ ( produc991755120et_nat @ F2 @ Prod ) )
= ( produc1311963066nt_nat
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_157_prod_Ocase__distrib,axiom,
! [H: $o > set_nat,F2: com > ( list_char > int ) > $o,Prod: produc1260470173ar_int] :
( ( H @ ( produc668584238_int_o @ F2 @ Prod ) )
= ( produc991755120et_nat
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_158_prod_Ocase__distrib,axiom,
! [H: nat > set_nat,F2: com > ( list_char > int ) > nat,Prod: produc1260470173ar_int] :
( ( H @ ( produc1311963066nt_nat @ F2 @ Prod ) )
= ( produc991755120et_nat
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_159_prod_Ocase__distrib,axiom,
! [H: set_nat > set_nat,F2: com > ( list_char > int ) > set_nat,Prod: produc1260470173ar_int] :
( ( H @ ( produc991755120et_nat @ F2 @ Prod ) )
= ( produc991755120et_nat
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_160_prod_Ocase__distrib,axiom,
! [H: $o > produc1260470173ar_int,F2: com > ( list_char > int ) > $o,Prod: produc1260470173ar_int] :
( ( H @ ( produc668584238_int_o @ F2 @ Prod ) )
= ( produc1288559923ar_int
@ ^ [X13: com,X24: list_char > int] : ( H @ ( F2 @ X13 @ X24 ) )
@ Prod ) ) ).
% prod.case_distrib
thf(fact_161_ir__disj,axiom,
! [P_1: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q_1: ( list_char > int ) > ( list_char > int ) > $o,P_2: ( list_char > int ) > ( list_char > int ) > $o,Q_2: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare @ P_1 @ C @ C2 @ Q_1 )
=> ( ( relati2102071307_hoare @ P_2 @ C @ C2 @ Q_2 )
=> ( relati2102071307_hoare
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P_1 @ S @ S2 )
| ( P_2 @ S @ S2 ) )
@ C
@ C2
@ ^ [T4: list_char > int,T5: list_char > int] :
( ( Q_1 @ T4 @ T5 )
| ( Q_2 @ T4 @ T5 ) ) ) ) ) ).
% ir_disj
thf(fact_162_assign__upd__blah,axiom,
! [X1: list_char,S7: list_char > int,X2: aexp] :
( ( ^ [A5: list_char] : ( if_int @ ( A5 = X1 ) @ ( S7 @ X1 ) @ ( fun_up103088396ar_int @ S7 @ X1 @ ( aval @ X2 @ S7 ) @ A5 ) ) )
= S7 ) ).
% assign_upd_blah
thf(fact_163_flip__def,axiom,
( relati186416454e_flip
= ( ^ [P2: ( list_char > int ) > ( list_char > int ) > $o,S: list_char > int,S2: list_char > int] : ( P2 @ S2 @ S ) ) ) ).
% flip_def
thf(fact_164_curry__K,axiom,
! [C: $o] :
( ( produc1858366159_int_o
@ ^ [X: produc1260470173ar_int] : C )
= ( ^ [X: com,Y4: list_char > int] : C ) ) ).
% curry_K
thf(fact_165_cond__case__prod__eta,axiom,
! [F2: com > ( list_char > int ) > set_nat,G: produc1260470173ar_int > set_nat] :
( ! [X3: com,Y3: list_char > int] :
( ( F2 @ X3 @ Y3 )
= ( G @ ( produc1193801173ar_int @ X3 @ Y3 ) ) )
=> ( ( produc991755120et_nat @ F2 )
= G ) ) ).
% cond_case_prod_eta
thf(fact_166_cond__case__prod__eta,axiom,
! [F2: com > ( list_char > int ) > $o,G: produc1260470173ar_int > $o] :
( ! [X3: com,Y3: list_char > int] :
( ( F2 @ X3 @ Y3 )
= ( G @ ( produc1193801173ar_int @ X3 @ Y3 ) ) )
=> ( ( produc668584238_int_o @ F2 )
= G ) ) ).
% cond_case_prod_eta
thf(fact_167_cond__case__prod__eta,axiom,
! [F2: com > ( list_char > int ) > nat,G: produc1260470173ar_int > nat] :
( ! [X3: com,Y3: list_char > int] :
( ( F2 @ X3 @ Y3 )
= ( G @ ( produc1193801173ar_int @ X3 @ Y3 ) ) )
=> ( ( produc1311963066nt_nat @ F2 )
= G ) ) ).
% cond_case_prod_eta
thf(fact_168_cond__case__prod__eta,axiom,
! [F2: com > ( list_char > int ) > produc1260470173ar_int,G: produc1260470173ar_int > produc1260470173ar_int] :
( ! [X3: com,Y3: list_char > int] :
( ( F2 @ X3 @ Y3 )
= ( G @ ( produc1193801173ar_int @ X3 @ Y3 ) ) )
=> ( ( produc1288559923ar_int @ F2 )
= G ) ) ).
% cond_case_prod_eta
thf(fact_169_case__prod__eta,axiom,
! [F2: produc1260470173ar_int > set_nat] :
( ( produc991755120et_nat
@ ^ [X: com,Y4: list_char > int] : ( F2 @ ( produc1193801173ar_int @ X @ Y4 ) ) )
= F2 ) ).
% case_prod_eta
thf(fact_170_case__prod__eta,axiom,
! [F2: produc1260470173ar_int > $o] :
( ( produc668584238_int_o
@ ^ [X: com,Y4: list_char > int] : ( F2 @ ( produc1193801173ar_int @ X @ Y4 ) ) )
= F2 ) ).
% case_prod_eta
thf(fact_171_case__prod__eta,axiom,
! [F2: produc1260470173ar_int > nat] :
( ( produc1311963066nt_nat
@ ^ [X: com,Y4: list_char > int] : ( F2 @ ( produc1193801173ar_int @ X @ Y4 ) ) )
= F2 ) ).
% case_prod_eta
thf(fact_172_case__prod__eta,axiom,
! [F2: produc1260470173ar_int > produc1260470173ar_int] :
( ( produc1288559923ar_int
@ ^ [X: com,Y4: list_char > int] : ( F2 @ ( produc1193801173ar_int @ X @ Y4 ) ) )
= F2 ) ).
% case_prod_eta
thf(fact_173_case__prodE2,axiom,
! [Q: set_nat > $o,P: com > ( list_char > int ) > set_nat,Z: produc1260470173ar_int] :
( ( Q @ ( produc991755120et_nat @ P @ Z ) )
=> ~ ! [X3: com,Y3: list_char > int] :
( ( Z
= ( produc1193801173ar_int @ X3 @ Y3 ) )
=> ~ ( Q @ ( P @ X3 @ Y3 ) ) ) ) ).
% case_prodE2
thf(fact_174_case__prodE2,axiom,
! [Q: $o > $o,P: com > ( list_char > int ) > $o,Z: produc1260470173ar_int] :
( ( Q @ ( produc668584238_int_o @ P @ Z ) )
=> ~ ! [X3: com,Y3: list_char > int] :
( ( Z
= ( produc1193801173ar_int @ X3 @ Y3 ) )
=> ~ ( Q @ ( P @ X3 @ Y3 ) ) ) ) ).
% case_prodE2
thf(fact_175_case__prodE2,axiom,
! [Q: nat > $o,P: com > ( list_char > int ) > nat,Z: produc1260470173ar_int] :
( ( Q @ ( produc1311963066nt_nat @ P @ Z ) )
=> ~ ! [X3: com,Y3: list_char > int] :
( ( Z
= ( produc1193801173ar_int @ X3 @ Y3 ) )
=> ~ ( Q @ ( P @ X3 @ Y3 ) ) ) ) ).
% case_prodE2
thf(fact_176_case__prodE2,axiom,
! [Q: produc1260470173ar_int > $o,P: com > ( list_char > int ) > produc1260470173ar_int,Z: produc1260470173ar_int] :
( ( Q @ ( produc1288559923ar_int @ P @ Z ) )
=> ~ ! [X3: com,Y3: list_char > int] :
( ( Z
= ( produc1193801173ar_int @ X3 @ Y3 ) )
=> ~ ( Q @ ( P @ X3 @ Y3 ) ) ) ) ).
% case_prodE2
thf(fact_177_case__prodE,axiom,
! [C: ( list_char > int ) > com > $o,P4: produc1166363805nt_com] :
( ( produc613711406_com_o @ C @ P4 )
=> ~ ! [X3: list_char > int,Y3: com] :
( ( P4
= ( produc1139835093nt_com @ X3 @ Y3 ) )
=> ~ ( C @ X3 @ Y3 ) ) ) ).
% case_prodE
thf(fact_178_case__prodE,axiom,
! [C: com > ( list_char > int ) > $o,P4: produc1260470173ar_int] :
( ( produc668584238_int_o @ C @ P4 )
=> ~ ! [X3: com,Y3: list_char > int] :
( ( P4
= ( produc1193801173ar_int @ X3 @ Y3 ) )
=> ~ ( C @ X3 @ Y3 ) ) ) ).
% case_prodE
thf(fact_179_case__prodD,axiom,
! [F2: ( list_char > int ) > com > $o,A: list_char > int,B: com] :
( ( produc613711406_com_o @ F2 @ ( produc1139835093nt_com @ A @ B ) )
=> ( F2 @ A @ B ) ) ).
% case_prodD
thf(fact_180_case__prodD,axiom,
! [F2: com > ( list_char > int ) > $o,A: com,B: list_char > int] :
( ( produc668584238_int_o @ F2 @ ( produc1193801173ar_int @ A @ B ) )
=> ( F2 @ A @ B ) ) ).
% case_prodD
thf(fact_181_mem__case__prodE,axiom,
! [Z: produc1260470173ar_int,C: com > ( list_char > int ) > set_Pr1148378109ar_int,P4: produc1260470173ar_int] :
( ( member92250950ar_int @ Z @ ( produc128852371ar_int @ C @ P4 ) )
=> ~ ! [X3: com,Y3: list_char > int] :
( ( P4
= ( produc1193801173ar_int @ X3 @ Y3 ) )
=> ~ ( member92250950ar_int @ Z @ ( C @ X3 @ Y3 ) ) ) ) ).
% mem_case_prodE
thf(fact_182_mem__case__prodE,axiom,
! [Z: produc1166363805nt_com,C: com > ( list_char > int ) > set_Pr866150653nt_com,P4: produc1260470173ar_int] :
( ( member2145628230nt_com @ Z @ ( produc1994108563nt_com @ C @ P4 ) )
=> ~ ! [X3: com,Y3: list_char > int] :
( ( P4
= ( produc1193801173ar_int @ X3 @ Y3 ) )
=> ~ ( member2145628230nt_com @ Z @ ( C @ X3 @ Y3 ) ) ) ) ).
% mem_case_prodE
thf(fact_183_mem__case__prodE,axiom,
! [Z: nat,C: ( list_char > int ) > com > set_nat,P4: produc1166363805nt_com] :
( ( member_nat @ Z @ ( produc1754105456et_nat @ C @ P4 ) )
=> ~ ! [X3: list_char > int,Y3: com] :
( ( P4
= ( produc1139835093nt_com @ X3 @ Y3 ) )
=> ~ ( member_nat @ Z @ ( C @ X3 @ Y3 ) ) ) ) ).
% mem_case_prodE
thf(fact_184_mem__case__prodE,axiom,
! [Z: produc1260470173ar_int,C: ( list_char > int ) > com > set_Pr1148378109ar_int,P4: produc1166363805nt_com] :
( ( member92250950ar_int @ Z @ ( produc1461507731ar_int @ C @ P4 ) )
=> ~ ! [X3: list_char > int,Y3: com] :
( ( P4
= ( produc1139835093nt_com @ X3 @ Y3 ) )
=> ~ ( member92250950ar_int @ Z @ ( C @ X3 @ Y3 ) ) ) ) ).
% mem_case_prodE
thf(fact_185_mem__case__prodE,axiom,
! [Z: produc1166363805nt_com,C: ( list_char > int ) > com > set_Pr866150653nt_com,P4: produc1166363805nt_com] :
( ( member2145628230nt_com @ Z @ ( produc1179280275nt_com @ C @ P4 ) )
=> ~ ! [X3: list_char > int,Y3: com] :
( ( P4
= ( produc1139835093nt_com @ X3 @ Y3 ) )
=> ~ ( member2145628230nt_com @ Z @ ( C @ X3 @ Y3 ) ) ) ) ).
% mem_case_prodE
thf(fact_186_mem__case__prodE,axiom,
! [Z: nat,C: com > ( list_char > int ) > set_nat,P4: produc1260470173ar_int] :
( ( member_nat @ Z @ ( produc991755120et_nat @ C @ P4 ) )
=> ~ ! [X3: com,Y3: list_char > int] :
( ( P4
= ( produc1193801173ar_int @ X3 @ Y3 ) )
=> ~ ( member_nat @ Z @ ( C @ X3 @ Y3 ) ) ) ) ).
% mem_case_prodE
thf(fact_187_old_Oprod_Ocase,axiom,
! [F2: com > ( list_char > int ) > set_nat,X1: com,X2: list_char > int] :
( ( produc991755120et_nat @ F2 @ ( produc1193801173ar_int @ X1 @ X2 ) )
= ( F2 @ X1 @ X2 ) ) ).
% old.prod.case
thf(fact_188_old_Oprod_Ocase,axiom,
! [F2: com > ( list_char > int ) > $o,X1: com,X2: list_char > int] :
( ( produc668584238_int_o @ F2 @ ( produc1193801173ar_int @ X1 @ X2 ) )
= ( F2 @ X1 @ X2 ) ) ).
% old.prod.case
thf(fact_189_old_Oprod_Ocase,axiom,
! [F2: com > ( list_char > int ) > nat,X1: com,X2: list_char > int] :
( ( produc1311963066nt_nat @ F2 @ ( produc1193801173ar_int @ X1 @ X2 ) )
= ( F2 @ X1 @ X2 ) ) ).
% old.prod.case
thf(fact_190_old_Oprod_Ocase,axiom,
! [F2: com > ( list_char > int ) > produc1260470173ar_int,X1: com,X2: list_char > int] :
( ( produc1288559923ar_int @ F2 @ ( produc1193801173ar_int @ X1 @ X2 ) )
= ( F2 @ X1 @ X2 ) ) ).
% old.prod.case
thf(fact_191_ir__If__False,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C_2: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C_1: com] :
( ( relati2102071307_hoare
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ~ ( bval @ B @ S ) )
@ C_2
@ C2
@ Q )
=> ( relati2102071307_hoare @ P @ ( if @ B @ C_1 @ C_2 ) @ C2 @ Q ) ) ).
% ir_If_False
thf(fact_192_ir__If__True,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C_1: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C_2: com] :
( ( relati2102071307_hoare
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( bval @ B @ S ) )
@ C_1
@ C2
@ Q )
=> ( relati2102071307_hoare @ P @ ( if @ B @ C_1 @ C_2 ) @ C2 @ Q ) ) ).
% ir_If_True
thf(fact_193_AssignE,axiom,
! [X4: list_char,A: aexp,S7: list_char > int,T6: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( assign @ X4 @ A ) @ S7 ) @ T6 )
=> ( T6
= ( fun_up103088396ar_int @ S7 @ X4 @ ( aval @ A @ S7 ) ) ) ) ).
% AssignE
thf(fact_194_assign__simp,axiom,
! [X4: list_char,A: aexp,S7: list_char > int,S6: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( assign @ X4 @ A ) @ S7 ) @ S6 )
= ( S6
= ( fun_up103088396ar_int @ S7 @ X4 @ ( aval @ A @ S7 ) ) ) ) ).
% assign_simp
thf(fact_195_Assign,axiom,
! [X4: list_char,A: aexp,S7: list_char > int] : ( big_big_step @ ( produc1193801173ar_int @ ( assign @ X4 @ A ) @ S7 ) @ ( fun_up103088396ar_int @ S7 @ X4 @ ( aval @ A @ S7 ) ) ) ).
% Assign
thf(fact_196_ir__While__False,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,C: com] :
( ( relati2102071307_hoare
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ~ ( bval @ B @ S ) )
@ skip
@ C2
@ Q )
=> ( relati2102071307_hoare @ P @ ( while @ B @ C ) @ C2 @ Q ) ) ).
% ir_While_False
thf(fact_197_ir__While__True,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( bval @ B @ S ) )
@ ( seq @ C @ ( while @ B @ C ) )
@ C2
@ Q )
=> ( relati2102071307_hoare @ P @ ( while @ B @ C ) @ C2 @ Q ) ) ).
% ir_While_True
thf(fact_198_add__Suc__right,axiom,
! [M: nat,N3: nat] :
( ( plus_plus_nat @ M @ ( suc @ N3 ) )
= ( suc @ ( plus_plus_nat @ M @ N3 ) ) ) ).
% add_Suc_right
thf(fact_199_image__ident,axiom,
! [Y5: set_nat] :
( ( image_nat_nat
@ ^ [X: nat] : X
@ Y5 )
= Y5 ) ).
% image_ident
thf(fact_200_fun__upd__upd,axiom,
! [F2: list_char > int,X4: list_char,Y: int,Z: int] :
( ( fun_up103088396ar_int @ ( fun_up103088396ar_int @ F2 @ X4 @ Y ) @ X4 @ Z )
= ( fun_up103088396ar_int @ F2 @ X4 @ Z ) ) ).
% fun_upd_upd
thf(fact_201_fun__upd__triv,axiom,
! [F2: list_char > int,X4: list_char] :
( ( fun_up103088396ar_int @ F2 @ X4 @ ( F2 @ X4 ) )
= F2 ) ).
% fun_upd_triv
thf(fact_202_fun__upd__apply,axiom,
( fun_up103088396ar_int
= ( ^ [F: list_char > int,X: list_char,Y4: int,Z2: list_char] : ( if_int @ ( Z2 = X ) @ Y4 @ ( F @ Z2 ) ) ) ) ).
% fun_upd_apply
thf(fact_203_image__eqI,axiom,
! [B: produc1260470173ar_int,F2: nat > produc1260470173ar_int,X4: nat,A4: set_nat] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member_nat @ X4 @ A4 )
=> ( member92250950ar_int @ B @ ( image_338722310ar_int @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_204_image__eqI,axiom,
! [B: produc1166363805nt_com,F2: nat > produc1166363805nt_com,X4: nat,A4: set_nat] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member_nat @ X4 @ A4 )
=> ( member2145628230nt_com @ B @ ( image_244615942nt_com @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_205_image__eqI,axiom,
! [B: nat,F2: produc1260470173ar_int > nat,X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member92250950ar_int @ X4 @ A4 )
=> ( member_nat @ B @ ( image_1742782760nt_nat @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_206_image__eqI,axiom,
! [B: produc1260470173ar_int,F2: produc1260470173ar_int > produc1260470173ar_int,X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member92250950ar_int @ X4 @ A4 )
=> ( member92250950ar_int @ B @ ( image_880790597ar_int @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_207_image__eqI,axiom,
! [B: produc1166363805nt_com,F2: produc1260470173ar_int > produc1166363805nt_com,X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member92250950ar_int @ X4 @ A4 )
=> ( member2145628230nt_com @ B @ ( image_786684229nt_com @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_208_image__eqI,axiom,
! [B: nat,F2: produc1166363805nt_com > nat,X4: produc1166363805nt_com,A4: set_Pr866150653nt_com] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member2145628230nt_com @ X4 @ A4 )
=> ( member_nat @ B @ ( image_596692520om_nat @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_209_image__eqI,axiom,
! [B: produc1260470173ar_int,F2: produc1166363805nt_com > produc1260470173ar_int,X4: produc1166363805nt_com,A4: set_Pr866150653nt_com] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member2145628230nt_com @ X4 @ A4 )
=> ( member92250950ar_int @ B @ ( image_1968865093ar_int @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_210_image__eqI,axiom,
! [B: produc1166363805nt_com,F2: produc1166363805nt_com > produc1166363805nt_com,X4: produc1166363805nt_com,A4: set_Pr866150653nt_com] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member2145628230nt_com @ X4 @ A4 )
=> ( member2145628230nt_com @ B @ ( image_1874758725nt_com @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_211_image__eqI,axiom,
! [B: nat,F2: nat > nat,X4: nat,A4: set_nat] :
( ( B
= ( F2 @ X4 ) )
=> ( ( member_nat @ X4 @ A4 )
=> ( member_nat @ B @ ( image_nat_nat @ F2 @ A4 ) ) ) ) ).
% image_eqI
thf(fact_212_old_Onat_Oinject,axiom,
! [Nat: nat,Nat2: nat] :
( ( ( suc @ Nat )
= ( suc @ Nat2 ) )
= ( Nat = Nat2 ) ) ).
% old.nat.inject
thf(fact_213_nat_Oinject,axiom,
! [X2: nat,Y2: nat] :
( ( ( suc @ X2 )
= ( suc @ Y2 ) )
= ( X2 = Y2 ) ) ).
% nat.inject
thf(fact_214_split__part,axiom,
! [P: $o,Q: com > ( list_char > int ) > $o] :
( ( produc668584238_int_o
@ ^ [A5: com,B4: list_char > int] :
( P
& ( Q @ A5 @ B4 ) ) )
= ( ^ [Ab: produc1260470173ar_int] :
( P
& ( produc668584238_int_o @ Q @ Ab ) ) ) ) ).
% split_part
thf(fact_215_prod_Odisc__eq__case,axiom,
! [Prod: produc1260470173ar_int] :
( produc668584238_int_o
@ ^ [Uu: com,Uv: list_char > int] : $true
@ Prod ) ).
% prod.disc_eq_case
thf(fact_216_rev__image__eqI,axiom,
! [X4: nat,A4: set_nat,B: produc1260470173ar_int,F2: nat > produc1260470173ar_int] :
( ( member_nat @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member92250950ar_int @ B @ ( image_338722310ar_int @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_217_rev__image__eqI,axiom,
! [X4: nat,A4: set_nat,B: produc1166363805nt_com,F2: nat > produc1166363805nt_com] :
( ( member_nat @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member2145628230nt_com @ B @ ( image_244615942nt_com @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_218_rev__image__eqI,axiom,
! [X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int,B: nat,F2: produc1260470173ar_int > nat] :
( ( member92250950ar_int @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member_nat @ B @ ( image_1742782760nt_nat @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_219_rev__image__eqI,axiom,
! [X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int,B: produc1260470173ar_int,F2: produc1260470173ar_int > produc1260470173ar_int] :
( ( member92250950ar_int @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member92250950ar_int @ B @ ( image_880790597ar_int @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_220_rev__image__eqI,axiom,
! [X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int,B: produc1166363805nt_com,F2: produc1260470173ar_int > produc1166363805nt_com] :
( ( member92250950ar_int @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member2145628230nt_com @ B @ ( image_786684229nt_com @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_221_rev__image__eqI,axiom,
! [X4: produc1166363805nt_com,A4: set_Pr866150653nt_com,B: nat,F2: produc1166363805nt_com > nat] :
( ( member2145628230nt_com @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member_nat @ B @ ( image_596692520om_nat @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_222_rev__image__eqI,axiom,
! [X4: produc1166363805nt_com,A4: set_Pr866150653nt_com,B: produc1260470173ar_int,F2: produc1166363805nt_com > produc1260470173ar_int] :
( ( member2145628230nt_com @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member92250950ar_int @ B @ ( image_1968865093ar_int @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_223_rev__image__eqI,axiom,
! [X4: produc1166363805nt_com,A4: set_Pr866150653nt_com,B: produc1166363805nt_com,F2: produc1166363805nt_com > produc1166363805nt_com] :
( ( member2145628230nt_com @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member2145628230nt_com @ B @ ( image_1874758725nt_com @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_224_rev__image__eqI,axiom,
! [X4: nat,A4: set_nat,B: nat,F2: nat > nat] :
( ( member_nat @ X4 @ A4 )
=> ( ( B
= ( F2 @ X4 ) )
=> ( member_nat @ B @ ( image_nat_nat @ F2 @ A4 ) ) ) ) ).
% rev_image_eqI
thf(fact_225_ball__imageD,axiom,
! [F2: produc1166363805nt_com > produc1260470173ar_int,A4: set_Pr866150653nt_com,P: produc1260470173ar_int > $o] :
( ! [X3: produc1260470173ar_int] :
( ( member92250950ar_int @ X3 @ ( image_1968865093ar_int @ F2 @ A4 ) )
=> ( P @ X3 ) )
=> ! [X5: produc1166363805nt_com] :
( ( member2145628230nt_com @ X5 @ A4 )
=> ( P @ ( F2 @ X5 ) ) ) ) ).
% ball_imageD
thf(fact_226_ball__imageD,axiom,
! [F2: produc1260470173ar_int > produc1166363805nt_com,A4: set_Pr1148378109ar_int,P: produc1166363805nt_com > $o] :
( ! [X3: produc1166363805nt_com] :
( ( member2145628230nt_com @ X3 @ ( image_786684229nt_com @ F2 @ A4 ) )
=> ( P @ X3 ) )
=> ! [X5: produc1260470173ar_int] :
( ( member92250950ar_int @ X5 @ A4 )
=> ( P @ ( F2 @ X5 ) ) ) ) ).
% ball_imageD
thf(fact_227_ball__imageD,axiom,
! [F2: produc1260470173ar_int > nat,A4: set_Pr1148378109ar_int,P: nat > $o] :
( ! [X3: nat] :
( ( member_nat @ X3 @ ( image_1742782760nt_nat @ F2 @ A4 ) )
=> ( P @ X3 ) )
=> ! [X5: produc1260470173ar_int] :
( ( member92250950ar_int @ X5 @ A4 )
=> ( P @ ( F2 @ X5 ) ) ) ) ).
% ball_imageD
thf(fact_228_ball__imageD,axiom,
! [F2: nat > nat,A4: set_nat,P: nat > $o] :
( ! [X3: nat] :
( ( member_nat @ X3 @ ( image_nat_nat @ F2 @ A4 ) )
=> ( P @ X3 ) )
=> ! [X5: nat] :
( ( member_nat @ X5 @ A4 )
=> ( P @ ( F2 @ X5 ) ) ) ) ).
% ball_imageD
thf(fact_229_image__cong,axiom,
! [M2: set_Pr1148378109ar_int,N4: set_Pr1148378109ar_int,F2: produc1260470173ar_int > produc1166363805nt_com,G: produc1260470173ar_int > produc1166363805nt_com] :
( ( M2 = N4 )
=> ( ! [X3: produc1260470173ar_int] :
( ( member92250950ar_int @ X3 @ N4 )
=> ( ( F2 @ X3 )
= ( G @ X3 ) ) )
=> ( ( image_786684229nt_com @ F2 @ M2 )
= ( image_786684229nt_com @ G @ N4 ) ) ) ) ).
% image_cong
thf(fact_230_image__cong,axiom,
! [M2: set_Pr1148378109ar_int,N4: set_Pr1148378109ar_int,F2: produc1260470173ar_int > nat,G: produc1260470173ar_int > nat] :
( ( M2 = N4 )
=> ( ! [X3: produc1260470173ar_int] :
( ( member92250950ar_int @ X3 @ N4 )
=> ( ( F2 @ X3 )
= ( G @ X3 ) ) )
=> ( ( image_1742782760nt_nat @ F2 @ M2 )
= ( image_1742782760nt_nat @ G @ N4 ) ) ) ) ).
% image_cong
thf(fact_231_image__cong,axiom,
! [M2: set_Pr866150653nt_com,N4: set_Pr866150653nt_com,F2: produc1166363805nt_com > produc1260470173ar_int,G: produc1166363805nt_com > produc1260470173ar_int] :
( ( M2 = N4 )
=> ( ! [X3: produc1166363805nt_com] :
( ( member2145628230nt_com @ X3 @ N4 )
=> ( ( F2 @ X3 )
= ( G @ X3 ) ) )
=> ( ( image_1968865093ar_int @ F2 @ M2 )
= ( image_1968865093ar_int @ G @ N4 ) ) ) ) ).
% image_cong
thf(fact_232_image__cong,axiom,
! [M2: set_nat,N4: set_nat,F2: nat > nat,G: nat > nat] :
( ( M2 = N4 )
=> ( ! [X3: nat] :
( ( member_nat @ X3 @ N4 )
=> ( ( F2 @ X3 )
= ( G @ X3 ) ) )
=> ( ( image_nat_nat @ F2 @ M2 )
= ( image_nat_nat @ G @ N4 ) ) ) ) ).
% image_cong
thf(fact_233_bex__imageD,axiom,
! [F2: produc1166363805nt_com > produc1260470173ar_int,A4: set_Pr866150653nt_com,P: produc1260470173ar_int > $o] :
( ? [X5: produc1260470173ar_int] :
( ( member92250950ar_int @ X5 @ ( image_1968865093ar_int @ F2 @ A4 ) )
& ( P @ X5 ) )
=> ? [X3: produc1166363805nt_com] :
( ( member2145628230nt_com @ X3 @ A4 )
& ( P @ ( F2 @ X3 ) ) ) ) ).
% bex_imageD
thf(fact_234_bex__imageD,axiom,
! [F2: produc1260470173ar_int > produc1166363805nt_com,A4: set_Pr1148378109ar_int,P: produc1166363805nt_com > $o] :
( ? [X5: produc1166363805nt_com] :
( ( member2145628230nt_com @ X5 @ ( image_786684229nt_com @ F2 @ A4 ) )
& ( P @ X5 ) )
=> ? [X3: produc1260470173ar_int] :
( ( member92250950ar_int @ X3 @ A4 )
& ( P @ ( F2 @ X3 ) ) ) ) ).
% bex_imageD
thf(fact_235_bex__imageD,axiom,
! [F2: produc1260470173ar_int > nat,A4: set_Pr1148378109ar_int,P: nat > $o] :
( ? [X5: nat] :
( ( member_nat @ X5 @ ( image_1742782760nt_nat @ F2 @ A4 ) )
& ( P @ X5 ) )
=> ? [X3: produc1260470173ar_int] :
( ( member92250950ar_int @ X3 @ A4 )
& ( P @ ( F2 @ X3 ) ) ) ) ).
% bex_imageD
thf(fact_236_bex__imageD,axiom,
! [F2: nat > nat,A4: set_nat,P: nat > $o] :
( ? [X5: nat] :
( ( member_nat @ X5 @ ( image_nat_nat @ F2 @ A4 ) )
& ( P @ X5 ) )
=> ? [X3: nat] :
( ( member_nat @ X3 @ A4 )
& ( P @ ( F2 @ X3 ) ) ) ) ).
% bex_imageD
thf(fact_237_image__iff,axiom,
! [Z: nat,F2: produc1260470173ar_int > nat,A4: set_Pr1148378109ar_int] :
( ( member_nat @ Z @ ( image_1742782760nt_nat @ F2 @ A4 ) )
= ( ? [X: produc1260470173ar_int] :
( ( member92250950ar_int @ X @ A4 )
& ( Z
= ( F2 @ X ) ) ) ) ) ).
% image_iff
thf(fact_238_image__iff,axiom,
! [Z: produc1260470173ar_int,F2: produc1166363805nt_com > produc1260470173ar_int,A4: set_Pr866150653nt_com] :
( ( member92250950ar_int @ Z @ ( image_1968865093ar_int @ F2 @ A4 ) )
= ( ? [X: produc1166363805nt_com] :
( ( member2145628230nt_com @ X @ A4 )
& ( Z
= ( F2 @ X ) ) ) ) ) ).
% image_iff
thf(fact_239_image__iff,axiom,
! [Z: produc1166363805nt_com,F2: produc1260470173ar_int > produc1166363805nt_com,A4: set_Pr1148378109ar_int] :
( ( member2145628230nt_com @ Z @ ( image_786684229nt_com @ F2 @ A4 ) )
= ( ? [X: produc1260470173ar_int] :
( ( member92250950ar_int @ X @ A4 )
& ( Z
= ( F2 @ X ) ) ) ) ) ).
% image_iff
thf(fact_240_image__iff,axiom,
! [Z: nat,F2: nat > nat,A4: set_nat] :
( ( member_nat @ Z @ ( image_nat_nat @ F2 @ A4 ) )
= ( ? [X: nat] :
( ( member_nat @ X @ A4 )
& ( Z
= ( F2 @ X ) ) ) ) ) ).
% image_iff
thf(fact_241_imageI,axiom,
! [X4: nat,A4: set_nat,F2: nat > produc1260470173ar_int] :
( ( member_nat @ X4 @ A4 )
=> ( member92250950ar_int @ ( F2 @ X4 ) @ ( image_338722310ar_int @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_242_imageI,axiom,
! [X4: nat,A4: set_nat,F2: nat > produc1166363805nt_com] :
( ( member_nat @ X4 @ A4 )
=> ( member2145628230nt_com @ ( F2 @ X4 ) @ ( image_244615942nt_com @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_243_imageI,axiom,
! [X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int,F2: produc1260470173ar_int > nat] :
( ( member92250950ar_int @ X4 @ A4 )
=> ( member_nat @ ( F2 @ X4 ) @ ( image_1742782760nt_nat @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_244_imageI,axiom,
! [X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int,F2: produc1260470173ar_int > produc1260470173ar_int] :
( ( member92250950ar_int @ X4 @ A4 )
=> ( member92250950ar_int @ ( F2 @ X4 ) @ ( image_880790597ar_int @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_245_imageI,axiom,
! [X4: produc1260470173ar_int,A4: set_Pr1148378109ar_int,F2: produc1260470173ar_int > produc1166363805nt_com] :
( ( member92250950ar_int @ X4 @ A4 )
=> ( member2145628230nt_com @ ( F2 @ X4 ) @ ( image_786684229nt_com @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_246_imageI,axiom,
! [X4: produc1166363805nt_com,A4: set_Pr866150653nt_com,F2: produc1166363805nt_com > nat] :
( ( member2145628230nt_com @ X4 @ A4 )
=> ( member_nat @ ( F2 @ X4 ) @ ( image_596692520om_nat @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_247_imageI,axiom,
! [X4: produc1166363805nt_com,A4: set_Pr866150653nt_com,F2: produc1166363805nt_com > produc1260470173ar_int] :
( ( member2145628230nt_com @ X4 @ A4 )
=> ( member92250950ar_int @ ( F2 @ X4 ) @ ( image_1968865093ar_int @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_248_imageI,axiom,
! [X4: produc1166363805nt_com,A4: set_Pr866150653nt_com,F2: produc1166363805nt_com > produc1166363805nt_com] :
( ( member2145628230nt_com @ X4 @ A4 )
=> ( member2145628230nt_com @ ( F2 @ X4 ) @ ( image_1874758725nt_com @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_249_imageI,axiom,
! [X4: nat,A4: set_nat,F2: nat > nat] :
( ( member_nat @ X4 @ A4 )
=> ( member_nat @ ( F2 @ X4 ) @ ( image_nat_nat @ F2 @ A4 ) ) ) ).
% imageI
thf(fact_250_n__not__Suc__n,axiom,
! [N3: nat] :
( N3
!= ( suc @ N3 ) ) ).
% n_not_Suc_n
thf(fact_251_Suc__inject,axiom,
! [X4: nat,Y: nat] :
( ( ( suc @ X4 )
= ( suc @ Y ) )
=> ( X4 = Y ) ) ).
% Suc_inject
thf(fact_252_fun__upd__idem__iff,axiom,
! [F2: list_char > int,X4: list_char,Y: int] :
( ( ( fun_up103088396ar_int @ F2 @ X4 @ Y )
= F2 )
= ( ( F2 @ X4 )
= Y ) ) ).
% fun_upd_idem_iff
thf(fact_253_fun__upd__twist,axiom,
! [A: list_char,C: list_char,M: list_char > int,B: int,D: int] :
( ( A != C )
=> ( ( fun_up103088396ar_int @ ( fun_up103088396ar_int @ M @ A @ B ) @ C @ D )
= ( fun_up103088396ar_int @ ( fun_up103088396ar_int @ M @ C @ D ) @ A @ B ) ) ) ).
% fun_upd_twist
thf(fact_254_fun__upd__other,axiom,
! [Z: list_char,X4: list_char,F2: list_char > int,Y: int] :
( ( Z != X4 )
=> ( ( fun_up103088396ar_int @ F2 @ X4 @ Y @ Z )
= ( F2 @ Z ) ) ) ).
% fun_upd_other
thf(fact_255_fun__upd__same,axiom,
! [F2: list_char > int,X4: list_char,Y: int] :
( ( fun_up103088396ar_int @ F2 @ X4 @ Y @ X4 )
= Y ) ).
% fun_upd_same
thf(fact_256_fun__upd__idem,axiom,
! [F2: list_char > int,X4: list_char,Y: int] :
( ( ( F2 @ X4 )
= Y )
=> ( ( fun_up103088396ar_int @ F2 @ X4 @ Y )
= F2 ) ) ).
% fun_upd_idem
thf(fact_257_fun__upd__eqD,axiom,
! [F2: list_char > int,X4: list_char,Y: int,G: list_char > int,Z: int] :
( ( ( fun_up103088396ar_int @ F2 @ X4 @ Y )
= ( fun_up103088396ar_int @ G @ X4 @ Z ) )
=> ( Y = Z ) ) ).
% fun_upd_eqD
thf(fact_258_fun__upd__def,axiom,
( fun_up103088396ar_int
= ( ^ [F: list_char > int,A5: list_char,B4: int,X: list_char] : ( if_int @ ( X = A5 ) @ B4 @ ( F @ X ) ) ) ) ).
% fun_upd_def
thf(fact_259_Compr__image__eq,axiom,
! [F2: produc1260470173ar_int > produc1260470173ar_int,A4: set_Pr1148378109ar_int,P: produc1260470173ar_int > $o] :
( ( collec770796680ar_int
@ ^ [X: produc1260470173ar_int] :
( ( member92250950ar_int @ X @ ( image_880790597ar_int @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_880790597ar_int @ F2
@ ( collec770796680ar_int
@ ^ [X: produc1260470173ar_int] :
( ( member92250950ar_int @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_260_Compr__image__eq,axiom,
! [F2: produc1166363805nt_com > produc1260470173ar_int,A4: set_Pr866150653nt_com,P: produc1260470173ar_int > $o] :
( ( collec770796680ar_int
@ ^ [X: produc1260470173ar_int] :
( ( member92250950ar_int @ X @ ( image_1968865093ar_int @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_1968865093ar_int @ F2
@ ( collec676690312nt_com
@ ^ [X: produc1166363805nt_com] :
( ( member2145628230nt_com @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_261_Compr__image__eq,axiom,
! [F2: produc1260470173ar_int > produc1166363805nt_com,A4: set_Pr1148378109ar_int,P: produc1166363805nt_com > $o] :
( ( collec676690312nt_com
@ ^ [X: produc1166363805nt_com] :
( ( member2145628230nt_com @ X @ ( image_786684229nt_com @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_786684229nt_com @ F2
@ ( collec770796680ar_int
@ ^ [X: produc1260470173ar_int] :
( ( member92250950ar_int @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_262_Compr__image__eq,axiom,
! [F2: produc1166363805nt_com > produc1166363805nt_com,A4: set_Pr866150653nt_com,P: produc1166363805nt_com > $o] :
( ( collec676690312nt_com
@ ^ [X: produc1166363805nt_com] :
( ( member2145628230nt_com @ X @ ( image_1874758725nt_com @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_1874758725nt_com @ F2
@ ( collec676690312nt_com
@ ^ [X: produc1166363805nt_com] :
( ( member2145628230nt_com @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_263_Compr__image__eq,axiom,
! [F2: nat > produc1260470173ar_int,A4: set_nat,P: produc1260470173ar_int > $o] :
( ( collec770796680ar_int
@ ^ [X: produc1260470173ar_int] :
( ( member92250950ar_int @ X @ ( image_338722310ar_int @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_338722310ar_int @ F2
@ ( collect_nat
@ ^ [X: nat] :
( ( member_nat @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_264_Compr__image__eq,axiom,
! [F2: nat > produc1166363805nt_com,A4: set_nat,P: produc1166363805nt_com > $o] :
( ( collec676690312nt_com
@ ^ [X: produc1166363805nt_com] :
( ( member2145628230nt_com @ X @ ( image_244615942nt_com @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_244615942nt_com @ F2
@ ( collect_nat
@ ^ [X: nat] :
( ( member_nat @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_265_Compr__image__eq,axiom,
! [F2: produc1260470173ar_int > nat,A4: set_Pr1148378109ar_int,P: nat > $o] :
( ( collect_nat
@ ^ [X: nat] :
( ( member_nat @ X @ ( image_1742782760nt_nat @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_1742782760nt_nat @ F2
@ ( collec770796680ar_int
@ ^ [X: produc1260470173ar_int] :
( ( member92250950ar_int @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_266_Compr__image__eq,axiom,
! [F2: produc1166363805nt_com > nat,A4: set_Pr866150653nt_com,P: nat > $o] :
( ( collect_nat
@ ^ [X: nat] :
( ( member_nat @ X @ ( image_596692520om_nat @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_596692520om_nat @ F2
@ ( collec676690312nt_com
@ ^ [X: produc1166363805nt_com] :
( ( member2145628230nt_com @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_267_Compr__image__eq,axiom,
! [F2: nat > nat,A4: set_nat,P: nat > $o] :
( ( collect_nat
@ ^ [X: nat] :
( ( member_nat @ X @ ( image_nat_nat @ F2 @ A4 ) )
& ( P @ X ) ) )
= ( image_nat_nat @ F2
@ ( collect_nat
@ ^ [X: nat] :
( ( member_nat @ X @ A4 )
& ( P @ ( F2 @ X ) ) ) ) ) ) ).
% Compr_image_eq
thf(fact_268_image__image,axiom,
! [F2: produc1260470173ar_int > produc1166363805nt_com,G: produc1260470173ar_int > produc1260470173ar_int,A4: set_Pr1148378109ar_int] :
( ( image_786684229nt_com @ F2 @ ( image_880790597ar_int @ G @ A4 ) )
= ( image_786684229nt_com
@ ^ [X: produc1260470173ar_int] : ( F2 @ ( G @ X ) )
@ A4 ) ) ).
% image_image
thf(fact_269_image__image,axiom,
! [F2: produc1260470173ar_int > produc1166363805nt_com,G: produc1166363805nt_com > produc1260470173ar_int,A4: set_Pr866150653nt_com] :
( ( image_786684229nt_com @ F2 @ ( image_1968865093ar_int @ G @ A4 ) )
= ( image_1874758725nt_com
@ ^ [X: produc1166363805nt_com] : ( F2 @ ( G @ X ) )
@ A4 ) ) ).
% image_image
thf(fact_270_image__image,axiom,
! [F2: produc1260470173ar_int > nat,G: nat > produc1260470173ar_int,A4: set_nat] :
( ( image_1742782760nt_nat @ F2 @ ( image_338722310ar_int @ G @ A4 ) )
= ( image_nat_nat
@ ^ [X: nat] : ( F2 @ ( G @ X ) )
@ A4 ) ) ).
% image_image
thf(fact_271_image__image,axiom,
! [F2: produc1260470173ar_int > nat,G: produc1260470173ar_int > produc1260470173ar_int,A4: set_Pr1148378109ar_int] :
( ( image_1742782760nt_nat @ F2 @ ( image_880790597ar_int @ G @ A4 ) )
= ( image_1742782760nt_nat
@ ^ [X: produc1260470173ar_int] : ( F2 @ ( G @ X ) )
@ A4 ) ) ).
% image_image
thf(fact_272_image__image,axiom,
! [F2: produc1260470173ar_int > nat,G: produc1166363805nt_com > produc1260470173ar_int,A4: set_Pr866150653nt_com] :
( ( image_1742782760nt_nat @ F2 @ ( image_1968865093ar_int @ G @ A4 ) )
= ( image_596692520om_nat
@ ^ [X: produc1166363805nt_com] : ( F2 @ ( G @ X ) )
@ A4 ) ) ).
% image_image
thf(fact_273_image__image,axiom,
! [F2: nat > nat,G: nat > nat,A4: set_nat] :
( ( image_nat_nat @ F2 @ ( image_nat_nat @ G @ A4 ) )
= ( image_nat_nat
@ ^ [X: nat] : ( F2 @ ( G @ X ) )
@ A4 ) ) ).
% image_image
thf(fact_274_imageE,axiom,
! [B: nat,F2: nat > nat,A4: set_nat] :
( ( member_nat @ B @ ( image_nat_nat @ F2 @ A4 ) )
=> ~ ! [X3: nat] :
( ( B
= ( F2 @ X3 ) )
=> ~ ( member_nat @ X3 @ A4 ) ) ) ).
% imageE
thf(fact_275_add__Suc,axiom,
! [M: nat,N3: nat] :
( ( plus_plus_nat @ ( suc @ M ) @ N3 )
= ( suc @ ( plus_plus_nat @ M @ N3 ) ) ) ).
% add_Suc
thf(fact_276_nat__arith_Osuc1,axiom,
! [A4: nat,K: nat,A: nat] :
( ( A4
= ( plus_plus_nat @ K @ A ) )
=> ( ( suc @ A4 )
= ( plus_plus_nat @ K @ ( suc @ A ) ) ) ) ).
% nat_arith.suc1
thf(fact_277_add__Suc__shift,axiom,
! [M: nat,N3: nat] :
( ( plus_plus_nat @ ( suc @ M ) @ N3 )
= ( plus_plus_nat @ M @ ( suc @ N3 ) ) ) ).
% add_Suc_shift
thf(fact_278_add__right__cancel,axiom,
! [B: nat,A: nat,C: nat] :
( ( ( plus_plus_nat @ B @ A )
= ( plus_plus_nat @ C @ A ) )
= ( B = C ) ) ).
% add_right_cancel
thf(fact_279_add__left__cancel,axiom,
! [A: nat,B: nat,C: nat] :
( ( ( plus_plus_nat @ A @ B )
= ( plus_plus_nat @ A @ C ) )
= ( B = C ) ) ).
% add_left_cancel
thf(fact_280_ab__semigroup__add__class_Oadd__ac_I1_J,axiom,
! [A: nat,B: nat,C: nat] :
( ( plus_plus_nat @ ( plus_plus_nat @ A @ B ) @ C )
= ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).
% ab_semigroup_add_class.add_ac(1)
thf(fact_281_add__mono__thms__linordered__semiring_I4_J,axiom,
! [I: nat,J: nat,K: nat,L: nat] :
( ( ( I = J )
& ( K = L ) )
=> ( ( plus_plus_nat @ I @ K )
= ( plus_plus_nat @ J @ L ) ) ) ).
% add_mono_thms_linordered_semiring(4)
thf(fact_282_group__cancel_Oadd1,axiom,
! [A4: nat,K: nat,A: nat,B: nat] :
( ( A4
= ( plus_plus_nat @ K @ A ) )
=> ( ( plus_plus_nat @ A4 @ B )
= ( plus_plus_nat @ K @ ( plus_plus_nat @ A @ B ) ) ) ) ).
% group_cancel.add1
thf(fact_283_group__cancel_Oadd2,axiom,
! [B5: nat,K: nat,B: nat,A: nat] :
( ( B5
= ( plus_plus_nat @ K @ B ) )
=> ( ( plus_plus_nat @ A @ B5 )
= ( plus_plus_nat @ K @ ( plus_plus_nat @ A @ B ) ) ) ) ).
% group_cancel.add2
thf(fact_284_add_Oassoc,axiom,
! [A: nat,B: nat,C: nat] :
( ( plus_plus_nat @ ( plus_plus_nat @ A @ B ) @ C )
= ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).
% add.assoc
thf(fact_285_add_Ocommute,axiom,
( plus_plus_nat
= ( ^ [A5: nat,B4: nat] : ( plus_plus_nat @ B4 @ A5 ) ) ) ).
% add.commute
thf(fact_286_add_Oleft__commute,axiom,
! [B: nat,A: nat,C: nat] :
( ( plus_plus_nat @ B @ ( plus_plus_nat @ A @ C ) )
= ( plus_plus_nat @ A @ ( plus_plus_nat @ B @ C ) ) ) ).
% add.left_commute
thf(fact_287_add__left__imp__eq,axiom,
! [A: nat,B: nat,C: nat] :
( ( ( plus_plus_nat @ A @ B )
= ( plus_plus_nat @ A @ C ) )
=> ( B = C ) ) ).
% add_left_imp_eq
thf(fact_288_add__right__imp__eq,axiom,
! [B: nat,A: nat,C: nat] :
( ( ( plus_plus_nat @ B @ A )
= ( plus_plus_nat @ C @ A ) )
=> ( B = C ) ) ).
% add_right_imp_eq
thf(fact_289_case__prod__Pair__iden,axiom,
! [P4: produc1260470173ar_int] :
( ( produc1288559923ar_int @ produc1193801173ar_int @ P4 )
= P4 ) ).
% case_prod_Pair_iden
thf(fact_290_Assign__ir__valid,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,X4: list_char,E: aexp,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid
@ ^ [T4: list_char > int,T5: list_char > int] :
? [V3: int] :
( ( P @ ( fun_up103088396ar_int @ T4 @ X4 @ V3 ) @ T5 )
& ( ( T4 @ X4 )
= ( aval @ E @ ( fun_up103088396ar_int @ T4 @ X4 @ V3 ) ) ) )
@ skip
@ C2
@ Q )
=> ( relati775585786_valid @ P @ ( assign @ X4 @ E ) @ C2 @ Q ) ) ).
% Assign_ir_valid
thf(fact_291_ir__Assign,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,X4: list_char,E: aexp,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati2102071307_hoare
@ ^ [T4: list_char > int,T5: list_char > int] :
? [V3: int] :
( ( P @ ( fun_up103088396ar_int @ T4 @ X4 @ V3 ) @ T5 )
& ( ( T4 @ X4 )
= ( aval @ E @ ( fun_up103088396ar_int @ T4 @ X4 @ V3 ) ) ) )
@ skip
@ C2
@ Q )
=> ( relati2102071307_hoare @ P @ ( assign @ X4 @ E ) @ C2 @ Q ) ) ).
% ir_Assign
thf(fact_292_setcompr__eq__image,axiom,
! [F2: nat > nat,P: nat > $o] :
( ( collect_nat
@ ^ [Uu: nat] :
? [X: nat] :
( ( Uu
= ( F2 @ X ) )
& ( P @ X ) ) )
= ( image_nat_nat @ F2 @ ( collect_nat @ P ) ) ) ).
% setcompr_eq_image
thf(fact_293_Setcompr__eq__image,axiom,
! [F2: nat > nat,A4: set_nat] :
( ( collect_nat
@ ^ [Uu: nat] :
? [X: nat] :
( ( Uu
= ( F2 @ X ) )
& ( member_nat @ X @ A4 ) ) )
= ( image_nat_nat @ F2 @ A4 ) ) ).
% Setcompr_eq_image
thf(fact_294_ir__valid__While2,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ ( while @ B @ C ) @ C2 @ Q )
=> ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ~ ( bval @ B @ S ) )
@ skip
@ C2
@ ^ [T4: list_char > int,T5: list_char > int] :
( ( Q @ T4 @ T5 )
& ? [S2: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C2 @ S2 ) @ T5 )
& ( P @ T4 @ S2 )
& ~ ( bval @ B @ T4 ) ) ) ) ) ).
% ir_valid_While2
thf(fact_295_ir__valid__Seq1_H,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C1: com,C22: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ ( seq @ C1 @ C22 ) @ C2 @ Q )
=> ( relati775585786_valid
@ ^ [T4: list_char > int,T5: list_char > int] :
? [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( big_big_step @ ( produc1193801173ar_int @ C1 @ S ) @ T4 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S2 ) @ T5 )
& ? [U2: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C22 @ T4 ) @ U2 )
& ( Q @ U2 @ T5 ) ) )
@ C22
@ skip
@ Q ) ) ).
% ir_valid_Seq1'
thf(fact_296_ir__valid__track__history,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o,S7: list_char > int,S6: list_char > int] :
( ( relati775585786_valid @ P @ C @ C2 @ Q )
=> ( relati775585786_valid @ P @ C @ C2
@ ^ [T4: list_char > int,T5: list_char > int] :
( ( Q @ S7 @ S6 )
& ? [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( big_big_step @ ( produc1193801173ar_int @ C @ S ) @ T4 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S2 ) @ T5 ) ) ) ) ) ).
% ir_valid_track_history
thf(fact_297_decomp__def,axiom,
( relati1310524937decomp
= ( ^ [P2: ( list_char > int ) > ( list_char > int ) > $o,C3: com,C4: com,Q2: ( list_char > int ) > ( list_char > int ) > $o,T4: list_char > int,S2: list_char > int] :
? [S: list_char > int,T5: list_char > int] :
( ( P2 @ S @ S2 )
& ( big_big_step @ ( produc1193801173ar_int @ C3 @ S ) @ T4 )
& ( big_big_step @ ( produc1193801173ar_int @ C4 @ S2 ) @ T5 )
& ( Q2 @ T4 @ T5 ) ) ) ) ).
% decomp_def
thf(fact_298_ir__valid__Seq1,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,C1: com,C22: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ ( seq @ C1 @ C22 ) @ C2 @ Q )
=> ( relati775585786_valid @ P @ C1 @ C2
@ ^ [T4: list_char > int,T5: list_char > int] :
? [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( big_big_step @ ( produc1193801173ar_int @ C1 @ S ) @ T4 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S2 ) @ T5 )
& ? [U2: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C22 @ T4 ) @ U2 )
& ( Q @ U2 @ T5 ) ) ) ) ) ).
% ir_valid_Seq1
thf(fact_299_ir__valid__If,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C1: com,C22: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ P @ ( if @ B @ C1 @ C22 ) @ C2 @ Q )
=> ( ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( bval @ B @ S ) )
@ C1
@ C2
@ ^ [T4: list_char > int,T5: list_char > int] :
( ( Q @ T4 @ T5 )
& ? [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( big_big_step @ ( produc1193801173ar_int @ C1 @ S ) @ T4 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S2 ) @ T5 )
& ( bval @ B @ S ) ) ) )
& ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ~ ( bval @ B @ S ) )
@ C22
@ C2
@ ^ [T4: list_char > int,T5: list_char > int] :
( ( Q @ T4 @ T5 )
& ? [S: list_char > int,S2: list_char > int] :
( ( P @ S @ S2 )
& ( big_big_step @ ( produc1193801173ar_int @ C22 @ S ) @ T4 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ S2 ) @ T5 )
& ~ ( bval @ B @ S ) ) ) ) ) ) ).
% ir_valid_If
thf(fact_300_get__back_Osimps_I2_J,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,N3: nat] :
( ( relati23543761ar_int @ P @ B @ C @ ( suc @ N3 ) )
= ( ^ [T4: list_char > int,T5: list_char > int] :
? [S: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C @ S ) @ T4 )
& ( bval @ B @ S )
& ( relati23543761ar_int @ P @ B @ C @ N3 @ S @ T5 ) ) ) ) ).
% get_back.simps(2)
thf(fact_301_ir__valid__While1,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,K: nat,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ ( relati23543761ar_int @ P @ B @ C @ K ) @ ( while @ B @ C ) @ C2 @ Q )
=> ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( relati23543761ar_int @ P @ B @ C @ K @ S @ S2 )
& ( bval @ B @ S ) )
@ C
@ skip
@ ^ [T4: list_char > int,T5: list_char > int] :
( ( relati23543761ar_int @ P @ B @ C @ ( suc @ K ) @ T4 @ T5 )
& ? [U2: list_char > int,U3: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ T4 ) @ U2 )
& ( big_big_step @ ( produc1193801173ar_int @ C2 @ T5 ) @ U3 )
& ( Q @ U2 @ U3 ) ) ) ) ) ).
% ir_valid_While1
thf(fact_302_ir__valid__get__back,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,K: nat,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ ( relati23543761ar_int @ P @ B @ C @ ( suc @ K ) ) @ ( while @ B @ C ) @ C2 @ Q )
=> ( relati775585786_valid @ ( relati23543761ar_int @ P @ B @ C @ K ) @ ( while @ B @ C ) @ C2 @ Q ) ) ).
% ir_valid_get_back
thf(fact_303_ir__valid__While3,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,K: nat,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ( relati775585786_valid @ ( relati23543761ar_int @ P @ B @ C @ K ) @ ( while @ B @ C ) @ C2 @ Q )
=> ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( relati23543761ar_int @ P @ B @ C @ K @ S @ S2 )
& ( bval @ B @ S ) )
@ C
@ C2
@ ^ [T4: list_char > int,T5: list_char > int] :
? [S2: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ C2 @ S2 ) @ T5 )
& ( relati23543761ar_int @ P @ B @ C @ ( suc @ K ) @ T4 @ S2 )
& ? [U2: list_char > int] :
( ( big_big_step @ ( produc1193801173ar_int @ ( while @ B @ C ) @ T4 ) @ U2 )
& ( Q @ U2 @ T5 ) ) ) ) ) ).
% ir_valid_While3
thf(fact_304_While__backwards__frontier__ir__valid,axiom,
! [P: nat > ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ! [N: nat] :
( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ N @ S @ S2 )
& ( bval @ B @ S ) )
@ C
@ skip
@ ( P @ ( suc @ N ) ) )
=> ( ( relati775585786_valid
@ ^ [S: list_char > int,S2: list_char > int] :
? [N5: nat] : ( P @ N5 @ S @ S2 )
@ ( while @ B @ C )
@ C2
@ Q )
=> ( relati775585786_valid @ ( P @ zero_zero_nat ) @ ( while @ B @ C ) @ C2 @ Q ) ) ) ).
% While_backwards_frontier_ir_valid
thf(fact_305_ir__While__backwards__frontier,axiom,
! [P: nat > ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com,C2: com,Q: ( list_char > int ) > ( list_char > int ) > $o] :
( ! [N: nat] :
( relati2102071307_hoare
@ ^ [S: list_char > int,S2: list_char > int] :
( ( P @ N @ S @ S2 )
& ( bval @ B @ S ) )
@ C
@ skip
@ ( P @ ( suc @ N ) ) )
=> ( ( relati2102071307_hoare
@ ^ [S: list_char > int,S2: list_char > int] :
? [N5: nat] : ( P @ N5 @ S @ S2 )
@ ( while @ B @ C )
@ C2
@ Q )
=> ( relati2102071307_hoare @ ( P @ zero_zero_nat ) @ ( while @ B @ C ) @ C2 @ Q ) ) ) ).
% ir_While_backwards_frontier
thf(fact_306_add_Oleft__neutral,axiom,
! [A: nat] :
( ( plus_plus_nat @ zero_zero_nat @ A )
= A ) ).
% add.left_neutral
thf(fact_307_add_Oright__neutral,axiom,
! [A: nat] :
( ( plus_plus_nat @ A @ zero_zero_nat )
= A ) ).
% add.right_neutral
thf(fact_308_add__cancel__left__left,axiom,
! [B: nat,A: nat] :
( ( ( plus_plus_nat @ B @ A )
= A )
= ( B = zero_zero_nat ) ) ).
% add_cancel_left_left
thf(fact_309_add__cancel__left__right,axiom,
! [A: nat,B: nat] :
( ( ( plus_plus_nat @ A @ B )
= A )
= ( B = zero_zero_nat ) ) ).
% add_cancel_left_right
thf(fact_310_add__cancel__right__left,axiom,
! [A: nat,B: nat] :
( ( A
= ( plus_plus_nat @ B @ A ) )
= ( B = zero_zero_nat ) ) ).
% add_cancel_right_left
thf(fact_311_add__cancel__right__right,axiom,
! [A: nat,B: nat] :
( ( A
= ( plus_plus_nat @ A @ B ) )
= ( B = zero_zero_nat ) ) ).
% add_cancel_right_right
thf(fact_312_add__eq__0__iff__both__eq__0,axiom,
! [X4: nat,Y: nat] :
( ( ( plus_plus_nat @ X4 @ Y )
= zero_zero_nat )
= ( ( X4 = zero_zero_nat )
& ( Y = zero_zero_nat ) ) ) ).
% add_eq_0_iff_both_eq_0
thf(fact_313_zero__eq__add__iff__both__eq__0,axiom,
! [X4: nat,Y: nat] :
( ( zero_zero_nat
= ( plus_plus_nat @ X4 @ Y ) )
= ( ( X4 = zero_zero_nat )
& ( Y = zero_zero_nat ) ) ) ).
% zero_eq_add_iff_both_eq_0
thf(fact_314_Nat_Oadd__0__right,axiom,
! [M: nat] :
( ( plus_plus_nat @ M @ zero_zero_nat )
= M ) ).
% Nat.add_0_right
thf(fact_315_add__is__0,axiom,
! [M: nat,N3: nat] :
( ( ( plus_plus_nat @ M @ N3 )
= zero_zero_nat )
= ( ( M = zero_zero_nat )
& ( N3 = zero_zero_nat ) ) ) ).
% add_is_0
thf(fact_316_image__add__0,axiom,
! [S9: set_nat] :
( ( image_nat_nat @ ( plus_plus_nat @ zero_zero_nat ) @ S9 )
= S9 ) ).
% image_add_0
thf(fact_317_get__back_Osimps_I1_J,axiom,
! [P: ( list_char > int ) > ( list_char > int ) > $o,B: bexp,C: com] :
( ( relati23543761ar_int @ P @ B @ C @ zero_zero_nat )
= P ) ).
% get_back.simps(1)
thf(fact_318_nat_Odistinct_I1_J,axiom,
! [X2: nat] :
( zero_zero_nat
!= ( suc @ X2 ) ) ).
% nat.distinct(1)
thf(fact_319_old_Onat_Odistinct_I2_J,axiom,
! [Nat2: nat] :
( ( suc @ Nat2 )
!= zero_zero_nat ) ).
% old.nat.distinct(2)
thf(fact_320_old_Onat_Odistinct_I1_J,axiom,
! [Nat2: nat] :
( zero_zero_nat
!= ( suc @ Nat2 ) ) ).
% old.nat.distinct(1)
thf(fact_321_nat_OdiscI,axiom,
! [Nat: nat,X2: nat] :
( ( Nat
= ( suc @ X2 ) )
=> ( Nat != zero_zero_nat ) ) ).
% nat.discI
thf(fact_322_nat__induct,axiom,
! [P: nat > $o,N3: nat] :
( ( P @ zero_zero_nat )
=> ( ! [N: nat] :
( ( P @ N )
=> ( P @ ( suc @ N ) ) )
=> ( P @ N3 ) ) ) ).
% nat_induct
thf(fact_323_diff__induct,axiom,
! [P: nat > nat > $o,M: nat,N3: nat] :
( ! [X3: nat] : ( P @ X3 @ zero_zero_nat )
=> ( ! [Y3: nat] : ( P @ zero_zero_nat @ ( suc @ Y3 ) )
=> ( ! [X3: nat,Y3: nat] :
( ( P @ X3 @ Y3 )
=> ( P @ ( suc @ X3 ) @ ( suc @ Y3 ) ) )
=> ( P @ M @ N3 ) ) ) ) ).
% diff_induct
thf(fact_324_zero__induct,axiom,
! [P: nat > $o,K: nat] :
( ( P @ K )
=> ( ! [N: nat] :
( ( P @ ( suc @ N ) )
=> ( P @ N ) )
=> ( P @ zero_zero_nat ) ) ) ).
% zero_induct
thf(fact_325_Suc__neq__Zero,axiom,
! [M: nat] :
( ( suc @ M )
!= zero_zero_nat ) ).
% Suc_neq_Zero
thf(fact_326_Zero__neq__Suc,axiom,
! [M: nat] :
( zero_zero_nat
!= ( suc @ M ) ) ).
% Zero_neq_Suc
thf(fact_327_Zero__not__Suc,axiom,
! [M: nat] :
( zero_zero_nat
!= ( suc @ M ) ) ).
% Zero_not_Suc
thf(fact_328_old_Onat_Oexhaust,axiom,
! [Y: nat] :
( ( Y != zero_zero_nat )
=> ~ ! [Nat3: nat] :
( Y
!= ( suc @ Nat3 ) ) ) ).
% old.nat.exhaust
thf(fact_329_old_Onat_Oinducts,axiom,
! [P: nat > $o,Nat: nat] :
( ( P @ zero_zero_nat )
=> ( ! [Nat3: nat] :
( ( P @ Nat3 )
=> ( P @ ( suc @ Nat3 ) ) )
=> ( P @ Nat ) ) ) ).
% old.nat.inducts
thf(fact_330_not0__implies__Suc,axiom,
! [N3: nat] :
( ( N3 != zero_zero_nat )
=> ? [M3: nat] :
( N3
= ( suc @ M3 ) ) ) ).
% not0_implies_Suc
thf(fact_331_comm__monoid__add__class_Oadd__0,axiom,
! [A: nat] :
( ( plus_plus_nat @ zero_zero_nat @ A )
= A ) ).
% comm_monoid_add_class.add_0
thf(fact_332_add_Ocomm__neutral,axiom,
! [A: nat] :
( ( plus_plus_nat @ A @ zero_zero_nat )
= A ) ).
% add.comm_neutral
thf(fact_333_add__eq__self__zero,axiom,
! [M: nat,N3: nat] :
( ( ( plus_plus_nat @ M @ N3 )
= M )
=> ( N3 = zero_zero_nat ) ) ).
% add_eq_self_zero
thf(fact_334_plus__nat_Oadd__0,axiom,
! [N3: nat] :
( ( plus_plus_nat @ zero_zero_nat @ N3 )
= N3 ) ).
% plus_nat.add_0
thf(fact_335_one__is__add,axiom,
! [M: nat,N3: nat] :
( ( ( suc @ zero_zero_nat )
= ( plus_plus_nat @ M @ N3 ) )
= ( ( ( M
= ( suc @ zero_zero_nat ) )
& ( N3 = zero_zero_nat ) )
| ( ( M = zero_zero_nat )
& ( N3
= ( suc @ zero_zero_nat ) ) ) ) ) ).
% one_is_add
thf(fact_336_add__is__1,axiom,
! [M: nat,N3: nat] :
( ( ( plus_plus_nat @ M @ N3 )
= ( suc @ zero_zero_nat ) )
= ( ( ( M
= ( suc @ zero_zero_nat ) )
& ( N3 = zero_zero_nat ) )
| ( ( M = zero_zero_nat )
& ( N3
= ( suc @ zero_zero_nat ) ) ) ) ) ).
% add_is_1
thf(fact_337_com_Osize__gen_I4_J,axiom,
! [X41: bexp,X42: com,X43: com] :
( ( size_com @ ( if @ X41 @ X42 @ X43 ) )
= ( plus_plus_nat @ ( plus_plus_nat @ ( size_com @ X42 ) @ ( size_com @ X43 ) ) @ ( suc @ zero_zero_nat ) ) ) ).
% com.size_gen(4)
thf(fact_338_com_Osize__gen_I3_J,axiom,
! [X31: com,X32: com] :
( ( size_com @ ( seq @ X31 @ X32 ) )
= ( plus_plus_nat @ ( plus_plus_nat @ ( size_com @ X31 ) @ ( size_com @ X32 ) ) @ ( suc @ zero_zero_nat ) ) ) ).
% com.size_gen(3)
thf(fact_339_com_Osize__gen_I1_J,axiom,
( ( size_com @ skip )
= zero_zero_nat ) ).
% com.size_gen(1)
thf(fact_340_com_Osize__gen_I2_J,axiom,
! [X21: list_char,X22: aexp] :
( ( size_com @ ( assign @ X21 @ X22 ) )
= zero_zero_nat ) ).
% com.size_gen(2)
thf(fact_341_com_Osize__gen_I5_J,axiom,
! [X51: bexp,X52: com] :
( ( size_com @ ( while @ X51 @ X52 ) )
= ( plus_plus_nat @ ( size_com @ X52 ) @ ( suc @ zero_zero_nat ) ) ) ).
% com.size_gen(5)
thf(fact_342_com_Osize_I9_J,axiom,
! [X41: bexp,X42: com,X43: com] :
( ( size_size_com @ ( if @ X41 @ X42 @ X43 ) )
= ( plus_plus_nat @ ( plus_plus_nat @ ( size_size_com @ X42 ) @ ( size_size_com @ X43 ) ) @ ( suc @ zero_zero_nat ) ) ) ).
% com.size(9)
thf(fact_343_com_Osize_I8_J,axiom,
! [X31: com,X32: com] :
( ( size_size_com @ ( seq @ X31 @ X32 ) )
= ( plus_plus_nat @ ( plus_plus_nat @ ( size_size_com @ X31 ) @ ( size_size_com @ X32 ) ) @ ( suc @ zero_zero_nat ) ) ) ).
% com.size(8)
thf(fact_344_com_Osize_I6_J,axiom,
( ( size_size_com @ skip )
= zero_zero_nat ) ).
% com.size(6)
thf(fact_345_com_Osize_I7_J,axiom,
! [X21: list_char,X22: aexp] :
( ( size_size_com @ ( assign @ X21 @ X22 ) )
= zero_zero_nat ) ).
% com.size(7)
thf(fact_346_com_Osize_I10_J,axiom,
! [X51: bexp,X52: com] :
( ( size_size_com @ ( while @ X51 @ X52 ) )
= ( plus_plus_nat @ ( size_size_com @ X52 ) @ ( suc @ zero_zero_nat ) ) ) ).
% com.size(10)
thf(fact_347_Euclid__induct,axiom,
! [P: nat > nat > $o,A: nat,B: nat] :
( ! [A3: nat,B3: nat] :
( ( P @ A3 @ B3 )
= ( P @ B3 @ A3 ) )
=> ( ! [A3: nat] : ( P @ A3 @ zero_zero_nat )
=> ( ! [A3: nat,B3: nat] :
( ( P @ A3 @ B3 )
=> ( P @ A3 @ ( plus_plus_nat @ A3 @ B3 ) ) )
=> ( P @ A @ B ) ) ) ) ).
% Euclid_induct
thf(fact_348_zero__notin__Suc__image,axiom,
! [A4: set_nat] :
~ ( member_nat @ zero_zero_nat @ ( image_nat_nat @ suc @ A4 ) ) ).
% zero_notin_Suc_image
thf(fact_349_add__0__iff,axiom,
! [B: nat,A: nat] :
( ( B
= ( plus_plus_nat @ B @ A ) )
= ( A = zero_zero_nat ) ) ).
% add_0_iff
thf(fact_350_verit__sum__simplify,axiom,
! [A: nat] :
( ( plus_plus_nat @ A @ zero_zero_nat )
= A ) ).
% verit_sum_simplify
thf(fact_351_Inf_OINF__identity__eq,axiom,
! [Inf: set_nat > nat,A4: set_nat] :
( ( Inf
@ ( image_nat_nat
@ ^ [X: nat] : X
@ A4 ) )
= ( Inf @ A4 ) ) ).
% Inf.INF_identity_eq
% Helper facts (3)
thf(help_If_3_1_If_001t__Int__Oint_T,axiom,
! [P: $o] :
( ( P = $true )
| ( P = $false ) ) ).
thf(help_If_2_1_If_001t__Int__Oint_T,axiom,
! [X4: int,Y: int] :
( ( if_int @ $false @ X4 @ Y )
= Y ) ).
thf(help_If_1_1_If_001t__Int__Oint_T,axiom,
! [X4: int,Y: int] :
( ( if_int @ $true @ X4 @ Y )
= X4 ) ).
% Conjectures (1)
thf(conj_0,conjecture,
( ( relati2102071307_hoare @ p @ c @ c2 @ q )
= ( ( relati2102071307_hoare @ p @ c @ skip @ ( relati1310524937decomp @ p @ c @ c2 @ q ) )
& ( relati2102071307_hoare @ ( relati1310524937decomp @ p @ c @ c2 @ q ) @ skip @ c2 @ q ) ) ) ).
%------------------------------------------------------------------------------