TPTP Problem File: SWW504_5.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SWW504_5 : TPTP v9.0.0. Released v6.0.0.
% Domain : Software Verification
% Problem : Hoare's Logic with Procedures line 113
% Version : Especial.
% English :
% Refs : [BN10] Boehme & Nipkow (2010), Sledgehammer: Judgement Day
% : [Bla13] Blanchette (2011), Email to Geoff Sutcliffe
% Source : [Bla13]
% Names : hoare_113 [Bla13]
% Status : Theorem
% Rating : 0.00 v7.5.0, 0.33 v7.4.0, 0.25 v7.3.0, 0.50 v7.1.0, 0.33 v6.4.0
% Syntax : Number of formulae : 197 ( 68 unt; 57 typ; 0 def)
% Number of atoms : 265 ( 97 equ)
% Maximal formula atoms : 7 ( 1 avg)
% Number of connectives : 166 ( 41 ~; 5 |; 7 &)
% ( 28 <=>; 85 =>; 0 <=; 0 <~>)
% Maximal formula depth : 12 ( 4 avg)
% Maximal term depth : 8 ( 2 avg)
% Number of types : 9 ( 8 usr)
% Number of type conns : 41 ( 25 >; 16 *; 0 +; 0 <<)
% Number of predicates : 21 ( 20 usr; 3 prp; 0-5 aty)
% Number of functors : 29 ( 29 usr; 2 con; 0-4 aty)
% Number of variables : 313 ( 268 !; 6 ?; 313 :)
% ( 39 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TF1_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2011-12-13 16:14:01
%------------------------------------------------------------------------------
%----Should-be-implicit typings (12)
tff(ty_tc_Com_Ocom,type,
com: $tType ).
tff(ty_tc_Com_Ostate,type,
state: $tType ).
tff(ty_tc_Datatype_Onode,type,
node: ( $tType * $tType ) > $tType ).
tff(ty_tc_HOL_Obool,type,
bool: $tType ).
tff(ty_tc_Hoare__Mirabelle__vtrypsmcwp_Otriple,type,
hoare_28830079triple: $tType > $tType ).
tff(ty_tc_Int_Oint,type,
int: $tType ).
tff(ty_tc_Nat_Onat,type,
nat: $tType ).
tff(ty_tc_String_Ochar,type,
char: $tType ).
tff(ty_tc_String_Oliteral,type,
literal: $tType ).
tff(ty_tc_String_Onibble,type,
nibble: $tType ).
tff(ty_tc_fun,type,
fun: ( $tType * $tType ) > $tType ).
tff(ty_tc_sum,type,
sum_sum: ( $tType * $tType ) > $tType ).
%----Explicit typings (45)
tff(sy_cl_Enum_Oenum,type,
enum:
!>[A: $tType] : $o ).
tff(sy_cl_HOL_Oequal,type,
cl_HOL_Oequal:
!>[A: $tType] : $o ).
tff(sy_cl_Groups_Oone,type,
one:
!>[A: $tType] : $o ).
tff(sy_cl_Groups_Ozero,type,
zero:
!>[A: $tType] : $o ).
tff(sy_cl_Groups_Osgn__if,type,
sgn_if:
!>[A: $tType] : $o ).
tff(sy_cl_Groups_Ogroup__add,type,
group_add:
!>[A: $tType] : $o ).
tff(sy_cl_Rings_Osemiring__1,type,
semiring_1:
!>[A: $tType] : $o ).
tff(sy_cl_Rings_Ozero__neq__one,type,
zero_neq_one:
!>[A: $tType] : $o ).
tff(sy_cl_Nat_Osemiring__char__0,type,
semiring_char_0:
!>[A: $tType] : $o ).
tff(sy_cl_Rings_Olinordered__idom,type,
linordered_idom:
!>[A: $tType] : $o ).
tff(sy_cl_Rings_Olinordered__semidom,type,
linordered_semidom:
!>[A: $tType] : $o ).
tff(sy_cl_Groups_Olinordered__ab__group__add,type,
linord219039673up_add:
!>[A: $tType] : $o ).
tff(sy_c_Groups_Oone__class_Oone,type,
one_one:
!>[A: $tType] : A ).
tff(sy_c_Groups_Osemigroup,type,
semigroup:
!>[A: $tType] : ( fun(A,fun(A,A)) > $o ) ).
tff(sy_c_Groups_Osgn__class_Osgn,type,
sgn_sgn:
!>[A: $tType] : ( A > A ) ).
tff(sy_c_Groups_Ouminus__class_Ouminus,type,
uminus_uminus:
!>[A: $tType] : ( A > A ) ).
tff(sy_c_Groups_Ozero__class_Ozero,type,
zero_zero:
!>[A: $tType] : A ).
tff(sy_c_HOL_Obool_Obool__size,type,
bool_size: bool > nat ).
tff(sy_c_HOL_Oequal__class_Oequal,type,
equal_equal:
!>[A: $tType] : fun(A,fun(A,bool)) ).
tff(sy_c_HOL_Oinduct__false,type,
induct_false: $o ).
tff(sy_c_HOL_Oinduct__true,type,
induct_true: $o ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_OAbs__triple,type,
hoare_689268419triple:
!>[A: $tType] : fun(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_28830079triple(A)) ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_ORep__triple,type,
hoare_334633230triple:
!>[A: $tType] : fun(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool)) ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Ostate__not__singleton,type,
hoare_531836380gleton: $o ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple,type,
hoare_1841697145triple:
!>[A: $tType] : ( ( fun(A,fun(state,bool)) * com * fun(A,fun(state,bool)) ) > hoare_28830079triple(A) ) ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple__case,type,
hoare_376461865e_case:
!>[A: $tType,T3: $tType] : ( ( fun(fun(A,fun(state,bool)),fun(com,fun(fun(A,fun(state,bool)),T3))) * hoare_28830079triple(A) ) > T3 ) ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple__rec,type,
hoare_678420151le_rec:
!>[A: $tType,T3: $tType] : ( ( fun(fun(A,fun(state,bool)),fun(com,fun(fun(A,fun(state,bool)),T3))) * hoare_28830079triple(A) ) > T3 ) ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple__rep__set,type,
hoare_711253694ep_set:
!>[A: $tType] : fun(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),bool) ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple__size,type,
hoare_47506394e_size:
!>[A: $tType] : ( ( fun(A,nat) * hoare_28830079triple(A) ) > nat ) ).
tff(sy_c_Nat_Onat_Onat__size,type,
nat_size: nat > nat ).
tff(sy_c_Nat_Osemiring__1__class_Oof__nat,type,
semiring_1_of_nat:
!>[A: $tType] : ( nat > A ) ).
tff(sy_c_Nat_Osize__class_Osize,type,
size_size:
!>[A: $tType] : ( A > nat ) ).
tff(sy_c_Orderings_Oord__class_Oless,type,
ord_less:
!>[A: $tType] : ( ( A * A ) > $o ) ).
tff(sy_c_Set_OCollect,type,
collect:
!>[A: $tType] : ( fun(A,bool) > fun(A,bool) ) ).
tff(sy_c_String_Ochar_OChar,type,
char1: ( nibble * nibble ) > char ).
tff(sy_c_String_Ochar_Ochar__case,type,
char_case:
!>[T3: $tType] : ( ( fun(nibble,fun(nibble,T3)) * char ) > T3 ) ).
tff(sy_c_String_Ochar_Ochar__rec,type,
char_rec:
!>[T3: $tType] : ( ( fun(nibble,fun(nibble,T3)) * char ) > T3 ) ).
tff(sy_c_String_Ochar_Ochar__size,type,
char_size: char > nat ).
tff(sy_c_Typedef_Otype__definition,type,
type_definition:
!>[B1: $tType,A: $tType] : ( ( fun(B1,A) * fun(A,B1) * fun(A,bool) ) > $o ) ).
tff(sy_c_aa,type,
aa:
!>[A: $tType,B1: $tType] : ( ( fun(A,B1) * A ) > B1 ) ).
tff(sy_c_fFalse,type,
fFalse: bool ).
tff(sy_c_fTrue,type,
fTrue: bool ).
tff(sy_c_fequal,type,
fequal:
!>[A: $tType] : fun(A,fun(A,bool)) ).
tff(sy_c_member,type,
member:
!>[A: $tType] : ( ( A * fun(A,bool) ) > $o ) ).
tff(sy_c_pp,type,
pp: bool > $o ).
%----Relevant facts (98)
tff(fact_0_state__not__singleton__def,axiom,
( hoare_531836380gleton
<=> ? [S3: state,T2: state] : ( S3 != T2 ) ) ).
tff(fact_1_equal__triple__def,axiom,
! [A: $tType,Y2: hoare_28830079triple(A),X1: hoare_28830079triple(A)] :
( pp(aa(hoare_28830079triple(A),bool,aa(hoare_28830079triple(A),fun(hoare_28830079triple(A),bool),equal_equal(hoare_28830079triple(A)),X1),Y2))
<=> ( X1 = Y2 ) ) ).
tff(fact_2_Rep__triple__inject,axiom,
! [A: $tType,Y2: hoare_28830079triple(A),X1: hoare_28830079triple(A)] :
( ( aa(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_334633230triple(A),X1) = aa(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_334633230triple(A),Y2) )
<=> ( X1 = Y2 ) ) ).
tff(fact_3_triple_Oinject,axiom,
! [A: $tType,Fun22: fun(A,fun(state,bool)),Com2: com,Fun12: fun(A,fun(state,bool)),Fun2: fun(A,fun(state,bool)),Com: com,Fun1: fun(A,fun(state,bool))] :
( ( hoare_1841697145triple(A,Fun1,Com,Fun2) = hoare_1841697145triple(A,Fun12,Com2,Fun22) )
<=> ( ( Fun1 = Fun12 )
& ( Com = Com2 )
& ( Fun2 = Fun22 ) ) ) ).
tff(fact_4_triple_Orecs,axiom,
! [A: $tType,B1: $tType,Fun2: fun(B1,fun(state,bool)),Com: com,Fun1: fun(B1,fun(state,bool)),F1: fun(fun(B1,fun(state,bool)),fun(com,fun(fun(B1,fun(state,bool)),A)))] : ( hoare_678420151le_rec(B1,A,F1,hoare_1841697145triple(B1,Fun1,Com,Fun2)) = aa(fun(B1,fun(state,bool)),A,aa(com,fun(fun(B1,fun(state,bool)),A),aa(fun(B1,fun(state,bool)),fun(com,fun(fun(B1,fun(state,bool)),A)),F1,Fun1),Com),Fun2) ) ).
tff(fact_5_triple_Osimps_I2_J,axiom,
! [A: $tType,B1: $tType,Fun2: fun(B1,fun(state,bool)),Com: com,Fun1: fun(B1,fun(state,bool)),F1: fun(fun(B1,fun(state,bool)),fun(com,fun(fun(B1,fun(state,bool)),A)))] : ( hoare_376461865e_case(B1,A,F1,hoare_1841697145triple(B1,Fun1,Com,Fun2)) = aa(fun(B1,fun(state,bool)),A,aa(com,fun(fun(B1,fun(state,bool)),A),aa(fun(B1,fun(state,bool)),fun(com,fun(fun(B1,fun(state,bool)),A)),F1,Fun1),Com),Fun2) ) ).
tff(fact_6_triple_Oexhaust,axiom,
! [A: $tType,Y2: hoare_28830079triple(A)] :
~ ! [Fun11: fun(A,fun(state,bool)),Com1: com,Fun21: fun(A,fun(state,bool))] : ( Y2 != hoare_1841697145triple(A,Fun11,Com1,Fun21) ) ).
tff(fact_7_equal,axiom,
! [A: $tType] :
( cl_HOL_Oequal(A)
=> ( equal_equal(A) = fequal(A) ) ) ).
tff(fact_8_equal__refl,axiom,
! [A: $tType] :
( cl_HOL_Oequal(A)
=> ! [X: A] : pp(aa(A,bool,aa(A,fun(A,bool),equal_equal(A),X),X)) ) ).
tff(fact_9_equal__eq,axiom,
! [A: $tType] :
( cl_HOL_Oequal(A)
=> ! [Y2: A,X1: A] :
( pp(aa(A,bool,aa(A,fun(A,bool),equal_equal(A),X1),Y2))
<=> ( X1 = Y2 ) ) ) ).
tff(fact_10_eq__equal,axiom,
! [A: $tType] :
( cl_HOL_Oequal(A)
=> ( fequal(A) = equal_equal(A) ) ) ).
tff(fact_11_Rep__triple__inverse,axiom,
! [A: $tType,X1: hoare_28830079triple(A)] : ( aa(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_28830079triple(A),hoare_689268419triple(A),aa(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_334633230triple(A),X1)) = X1 ) ).
tff(fact_12_Rep__triple,axiom,
! [A: $tType,X1: hoare_28830079triple(A)] : member(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),aa(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_334633230triple(A),X1),collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A))) ).
tff(fact_13_Rep__triple__induct,axiom,
! [A: $tType,P1: fun(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),bool),Y2: fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool)] :
( member(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),Y2,collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A)))
=> ( ! [X2: hoare_28830079triple(A)] : pp(aa(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),bool,P1,aa(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_334633230triple(A),X2)))
=> pp(aa(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),bool,P1,Y2)) ) ) ).
tff(fact_14_Rep__triple__cases,axiom,
! [A: $tType,Y2: fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool)] :
( member(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),Y2,collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A)))
=> ~ ! [X2: hoare_28830079triple(A)] : ( Y2 != aa(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_334633230triple(A),X2) ) ) ).
tff(fact_15_Abs__triple__inject,axiom,
! [A: $tType,Y2: fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),X1: fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool)] :
( member(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),X1,collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A)))
=> ( member(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),Y2,collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A)))
=> ( ( aa(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_28830079triple(A),hoare_689268419triple(A),X1) = aa(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_28830079triple(A),hoare_689268419triple(A),Y2) )
<=> ( X1 = Y2 ) ) ) ) ).
tff(fact_16_Abs__triple__inverse,axiom,
! [A: $tType,Y2: fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool)] :
( member(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),Y2,collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A)))
=> ( aa(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_334633230triple(A),aa(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_28830079triple(A),hoare_689268419triple(A),Y2)) = Y2 ) ) ).
tff(fact_17_Abs__triple__induct,axiom,
! [A: $tType,X1: hoare_28830079triple(A),P1: fun(hoare_28830079triple(A),bool)] :
( ! [Y1: fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool)] :
( member(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),Y1,collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A)))
=> pp(aa(hoare_28830079triple(A),bool,P1,aa(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_28830079triple(A),hoare_689268419triple(A),Y1))) )
=> pp(aa(hoare_28830079triple(A),bool,P1,X1)) ) ).
tff(fact_18_Abs__triple__cases,axiom,
! [A: $tType,X1: hoare_28830079triple(A)] :
~ ! [Y1: fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool)] :
( ( X1 = aa(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_28830079triple(A),hoare_689268419triple(A),Y1) )
=> ~ member(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),Y1,collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A))) ) ).
tff(fact_19_type__definition__triple,axiom,
! [A: $tType] : type_definition(hoare_28830079triple(A),fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_334633230triple(A),hoare_689268419triple(A),collect(fun(node(sum_sum(com,fun(A,fun(state,bool))),sum_sum(state,A)),bool),hoare_711253694ep_set(A))) ).
tff(fact_20_induct__false__def,axiom,
~ induct_false ).
tff(fact_21_triple_Osize_I1_J,axiom,
! [A: $tType,Fun2: fun(A,fun(state,bool)),Com: com,Fun1: fun(A,fun(state,bool)),Fa: fun(A,nat)] : ( hoare_47506394e_size(A,Fa,hoare_1841697145triple(A,Fun1,Com,Fun2)) = zero_zero(nat) ) ).
tff(fact_22_triple_Osize_I2_J,axiom,
! [A: $tType,Fun2: fun(A,fun(state,bool)),Com: com,Fun1: fun(A,fun(state,bool))] : ( size_size(hoare_28830079triple(A),hoare_1841697145triple(A,Fun1,Com,Fun2)) = zero_zero(nat) ) ).
tff(fact_23_induct__true__def,axiom,
induct_true ).
tff(fact_24_induct__trueI,axiom,
induct_true ).
tff(fact_25_type__definition_ORep,axiom,
! [A: $tType,B1: $tType,X1: A,A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> member(B1,aa(A,B1,Rep,X1),A3) ) ).
tff(fact_26_type__definition_ORep__inverse,axiom,
! [B1: $tType,A: $tType,X1: A,A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> ( aa(B1,A,Abs,aa(A,B1,Rep,X1)) = X1 ) ) ).
tff(fact_27_type__definition_ORep__inject,axiom,
! [B1: $tType,A: $tType,Y2: A,X1: A,A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> ( ( aa(A,B1,Rep,X1) = aa(A,B1,Rep,Y2) )
<=> ( X1 = Y2 ) ) ) ).
tff(fact_28_type__definition_OAbs__inverse,axiom,
! [A: $tType,B1: $tType,Y2: B1,A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> ( member(B1,Y2,A3)
=> ( aa(A,B1,Rep,aa(B1,A,Abs,Y2)) = Y2 ) ) ) ).
tff(fact_29_type__definition_OAbs__inject,axiom,
! [A: $tType,B1: $tType,Y2: B1,X1: B1,A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> ( member(B1,X1,A3)
=> ( member(B1,Y2,A3)
=> ( ( aa(B1,A,Abs,X1) = aa(B1,A,Abs,Y2) )
<=> ( X1 = Y2 ) ) ) ) ) ).
tff(fact_30_zero__reorient,axiom,
! [A: $tType] :
( zero(A)
=> ! [X1: A] :
( ( zero_zero(A) = X1 )
<=> ( X1 = zero_zero(A) ) ) ) ).
tff(fact_31_type__definition_ORep__cases,axiom,
! [B1: $tType,A: $tType,Y2: B1,A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> ( member(B1,Y2,A3)
=> ~ ! [X2: A] : ( Y2 != aa(A,B1,Rep,X2) ) ) ) ).
tff(fact_32_type__definition_ORep__induct,axiom,
! [A: $tType,B1: $tType,P1: fun(B1,bool),Y2: B1,A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> ( member(B1,Y2,A3)
=> ( ! [X2: A] : pp(aa(B1,bool,P1,aa(A,B1,Rep,X2)))
=> pp(aa(B1,bool,P1,Y2)) ) ) ) ).
tff(fact_33_type__definition_OAbs__induct,axiom,
! [B1: $tType,A: $tType,X1: A,P1: fun(A,bool),A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> ( ! [Y1: B1] :
( member(B1,Y1,A3)
=> pp(aa(A,bool,P1,aa(B1,A,Abs,Y1))) )
=> pp(aa(A,bool,P1,X1)) ) ) ).
tff(fact_34_type__definition_OAbs__cases,axiom,
! [A: $tType,B1: $tType,X1: A,A3: fun(B1,bool),Abs: fun(B1,A),Rep: fun(A,B1)] :
( type_definition(A,B1,Rep,Abs,A3)
=> ~ ! [Y1: B1] :
( ( X1 = aa(B1,A,Abs,Y1) )
=> ~ member(B1,Y1,A3) ) ) ).
tff(fact_35_char__size,axiom,
! [C1: char] : ( char_size(C1) = zero_zero(nat) ) ).
tff(fact_36_bool_Osize_I2_J,axiom,
bool_size(fFalse) = zero_zero(nat) ).
tff(fact_37_bool_Osize_I1_J,axiom,
bool_size(fTrue) = zero_zero(nat) ).
tff(fact_38_nat_Osize_I1_J,axiom,
nat_size(zero_zero(nat)) = zero_zero(nat) ).
tff(fact_39_size__char,axiom,
! [C1: char] : ( size_size(char,C1) = zero_zero(nat) ) ).
tff(fact_40_bool_Osize_I3_J,axiom,
size_size(bool,fTrue) = zero_zero(nat) ).
tff(fact_41_bool_Osize_I4_J,axiom,
size_size(bool,fFalse) = zero_zero(nat) ).
tff(fact_42_size__literal__def,axiom,
! [S2: literal] : ( size_size(literal,S2) = zero_zero(nat) ) ).
tff(fact_43_size__bool,axiom,
! [B: bool] : ( size_size(bool,B) = zero_zero(nat) ) ).
tff(fact_44_nat_Osize_I3_J,axiom,
size_size(nat,zero_zero(nat)) = zero_zero(nat) ).
tff(fact_45_char_Osize_I2_J,axiom,
! [Nibble23: nibble,Nibble13: nibble] : ( size_size(char,char1(Nibble13,Nibble23)) = zero_zero(nat) ) ).
tff(fact_46_char_Osize_I1_J,axiom,
! [Nibble23: nibble,Nibble13: nibble] : ( char_size(char1(Nibble13,Nibble23)) = zero_zero(nat) ) ).
tff(fact_47_sgn0,axiom,
! [A: $tType] :
( sgn_if(A)
=> ( sgn_sgn(A,zero_zero(A)) = zero_zero(A) ) ) ).
tff(fact_48_char_Oinject,axiom,
! [Nibble22: nibble,Nibble12: nibble,Nibble2: nibble,Nibble1: nibble] :
( ( char1(Nibble1,Nibble2) = char1(Nibble12,Nibble22) )
<=> ( ( Nibble1 = Nibble12 )
& ( Nibble2 = Nibble22 ) ) ) ).
tff(fact_49_nat__size,axiom,
! [N1: nat] : ( size_size(nat,N1) = N1 ) ).
tff(fact_50_sgn__sgn,axiom,
! [A: $tType] :
( linordered_idom(A)
=> ! [A2: A] : ( sgn_sgn(A,sgn_sgn(A,A2)) = sgn_sgn(A,A2) ) ) ).
tff(fact_51_sgn__0__0,axiom,
! [A: $tType] :
( linordered_idom(A)
=> ! [A1: A] :
( ( sgn_sgn(A,A1) = zero_zero(A) )
<=> ( A1 = zero_zero(A) ) ) ) ).
tff(fact_52_char_Oexhaust,axiom,
! [Y: char] :
~ ! [Nibble11: nibble,Nibble21: nibble] : ( Y != char1(Nibble11,Nibble21) ) ).
tff(fact_53_char_Osimps_I2_J,axiom,
! [A: $tType,Nibble2: nibble,Nibble1: nibble,F1: fun(nibble,fun(nibble,A))] : ( char_case(A,F1,char1(Nibble1,Nibble2)) = aa(nibble,A,aa(nibble,fun(nibble,A),F1,Nibble1),Nibble2) ) ).
tff(fact_54_char_Orecs,axiom,
! [A: $tType,Nibble2: nibble,Nibble1: nibble,F1: fun(nibble,fun(nibble,A))] : ( char_rec(A,F1,char1(Nibble1,Nibble2)) = aa(nibble,A,aa(nibble,fun(nibble,A),F1,Nibble1),Nibble2) ) ).
tff(fact_55_sgn__less,axiom,
! [A: $tType] :
( linordered_idom(A)
=> ! [A1: A] :
( ord_less(A,sgn_sgn(A,A1),zero_zero(A))
<=> ord_less(A,A1,zero_zero(A)) ) ) ).
tff(fact_56_sgn__greater,axiom,
! [A: $tType] :
( linordered_idom(A)
=> ! [A1: A] :
( ord_less(A,zero_zero(A),sgn_sgn(A,A1))
<=> ord_less(A,zero_zero(A),A1) ) ) ).
tff(fact_57_semigroup_Oassoc,axiom,
! [A: $tType,C: A,B: A,A1: A,F: fun(A,fun(A,A))] :
( semigroup(A,F)
=> ( aa(A,A,aa(A,fun(A,A),F,aa(A,A,aa(A,fun(A,A),F,A1),B)),C) = aa(A,A,aa(A,fun(A,A),F,A1),aa(A,A,aa(A,fun(A,A),F,B),C)) ) ) ).
tff(fact_58_linorder__neqE__linordered__idom,axiom,
! [A: $tType] :
( linordered_idom(A)
=> ! [Y: A,X: A] :
( ( X != Y )
=> ( ~ ord_less(A,X,Y)
=> ord_less(A,Y,X) ) ) ) ).
tff(fact_59_neq0__conv,axiom,
! [N: nat] :
( ( N != zero_zero(nat) )
<=> ord_less(nat,zero_zero(nat),N) ) ).
tff(fact_60_less__nat__zero__code,axiom,
! [N1: nat] : ~ ord_less(nat,N1,zero_zero(nat)) ).
tff(fact_61_less__zeroE,axiom,
! [N1: nat] : ~ ord_less(nat,N1,zero_zero(nat)) ).
tff(fact_62_less__not__refl,axiom,
! [N1: nat] : ~ ord_less(nat,N1,N1) ).
tff(fact_63_nat__neq__iff,axiom,
! [N: nat,M1: nat] :
( ( M1 != N )
<=> ( ord_less(nat,M1,N)
| ord_less(nat,N,M1) ) ) ).
tff(fact_64_linorder__neqE__nat,axiom,
! [Y: nat,X: nat] :
( ( X != Y )
=> ( ~ ord_less(nat,X,Y)
=> ord_less(nat,Y,X) ) ) ).
tff(fact_65_less__irrefl__nat,axiom,
! [N1: nat] : ~ ord_less(nat,N1,N1) ).
tff(fact_66_less__not__refl2,axiom,
! [M: nat,N1: nat] :
( ord_less(nat,N1,M)
=> ( M != N1 ) ) ).
tff(fact_67_less__not__refl3,axiom,
! [T1: nat,S2: nat] :
( ord_less(nat,S2,T1)
=> ( S2 != T1 ) ) ).
tff(fact_68_nat__less__cases,axiom,
! [P1: fun(nat,fun(nat,bool)),N: nat,M1: nat] :
( ( ord_less(nat,M1,N)
=> pp(aa(nat,bool,aa(nat,fun(nat,bool),P1,N),M1)) )
=> ( ( ( M1 = N )
=> pp(aa(nat,bool,aa(nat,fun(nat,bool),P1,N),M1)) )
=> ( ( ord_less(nat,N,M1)
=> pp(aa(nat,bool,aa(nat,fun(nat,bool),P1,N),M1)) )
=> pp(aa(nat,bool,aa(nat,fun(nat,bool),P1,N),M1)) ) ) ) ).
tff(fact_69_gr0I,axiom,
! [N1: nat] :
( ( N1 != zero_zero(nat) )
=> ord_less(nat,zero_zero(nat),N1) ) ).
tff(fact_70_gr__implies__not0,axiom,
! [N1: nat,M: nat] :
( ord_less(nat,M,N1)
=> ( N1 != zero_zero(nat) ) ) ).
tff(fact_71_not__less0,axiom,
! [N1: nat] : ~ ord_less(nat,N1,zero_zero(nat)) ).
tff(fact_72_of__nat__0__less__iff,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ! [N: nat] :
( ord_less(A,zero_zero(A),semiring_1_of_nat(A,N))
<=> ord_less(nat,zero_zero(nat),N) ) ) ).
tff(fact_73_infinite__descent0,axiom,
! [N: nat,P1: fun(nat,bool)] :
( pp(aa(nat,bool,P1,zero_zero(nat)))
=> ( ! [N2: nat] :
( ord_less(nat,zero_zero(nat),N2)
=> ( ~ pp(aa(nat,bool,P1,N2))
=> ? [M2: nat] :
( ord_less(nat,M2,N2)
& ~ pp(aa(nat,bool,P1,M2)) ) ) )
=> pp(aa(nat,bool,P1,N)) ) ) ).
tff(fact_74_ext,axiom,
! [B1: $tType,A: $tType,G: fun(A,B1),F: fun(A,B1)] :
( ! [X2: A] : ( aa(A,B1,F,X2) = aa(A,B1,G,X2) )
=> ( F = G ) ) ).
tff(fact_75_mem__def,axiom,
! [A: $tType,A3: fun(A,bool),X1: A] :
( member(A,X1,A3)
<=> pp(aa(A,bool,A3,X1)) ) ).
tff(fact_76_Collect__def,axiom,
! [A: $tType,P1: fun(A,bool)] : ( collect(A,P1) = P1 ) ).
tff(fact_77_sgn__pos,axiom,
! [A: $tType] :
( linordered_idom(A)
=> ! [A2: A] :
( ord_less(A,zero_zero(A),A2)
=> ( sgn_sgn(A,A2) = one_one(A) ) ) ) ).
tff(fact_78_of__nat__eq__iff,axiom,
! [A: $tType] :
( semiring_char_0(A)
=> ! [N: nat,M1: nat] :
( ( semiring_1_of_nat(A,M1) = semiring_1_of_nat(A,N) )
<=> ( M1 = N ) ) ) ).
tff(fact_79_of__nat__1,axiom,
! [A: $tType] :
( semiring_1(A)
=> ( semiring_1_of_nat(A,one_one(nat)) = one_one(A) ) ) ).
tff(fact_80_of__nat__0,axiom,
! [A: $tType] :
( semiring_1(A)
=> ( semiring_1_of_nat(A,zero_zero(nat)) = zero_zero(A) ) ) ).
tff(fact_81_of__nat__less__iff,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ! [N: nat,M1: nat] :
( ord_less(A,semiring_1_of_nat(A,M1),semiring_1_of_nat(A,N))
<=> ord_less(nat,M1,N) ) ) ).
tff(fact_82_zero__neq__one,axiom,
! [A: $tType] :
( zero_neq_one(A)
=> ( zero_zero(A) != one_one(A) ) ) ).
tff(fact_83_one__neq__zero,axiom,
! [A: $tType] :
( zero_neq_one(A)
=> ( one_one(A) != zero_zero(A) ) ) ).
tff(fact_84_one__reorient,axiom,
! [A: $tType] :
( one(A)
=> ! [X1: A] :
( ( one_one(A) = X1 )
<=> ( X1 = one_one(A) ) ) ) ).
tff(fact_85_zero__less__one,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ord_less(A,zero_zero(A),one_one(A)) ) ).
tff(fact_86_not__one__less__zero,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ~ ord_less(A,one_one(A),zero_zero(A)) ) ).
tff(fact_87_of__nat__less__0__iff,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ! [M: nat] : ~ ord_less(A,semiring_1_of_nat(A,M),zero_zero(A)) ) ).
tff(fact_88_of__nat__less__imp__less,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ! [N1: nat,M: nat] :
( ord_less(A,semiring_1_of_nat(A,M),semiring_1_of_nat(A,N1))
=> ord_less(nat,M,N1) ) ) ).
tff(fact_89_less__imp__of__nat__less,axiom,
! [A: $tType] :
( linordered_semidom(A)
=> ! [N1: nat,M: nat] :
( ord_less(nat,M,N1)
=> ord_less(A,semiring_1_of_nat(A,M),semiring_1_of_nat(A,N1)) ) ) ).
tff(fact_90_sgn__1__pos,axiom,
! [A: $tType] :
( linordered_idom(A)
=> ! [A1: A] :
( ( sgn_sgn(A,A1) = one_one(A) )
<=> ord_less(A,zero_zero(A),A1) ) ) ).
tff(fact_91_zero__less__int__conv,axiom,
! [N: nat] :
( ord_less(int,zero_zero(int),semiring_1_of_nat(int,N))
<=> ord_less(nat,zero_zero(nat),N) ) ).
tff(fact_92_sgn__1__neg,axiom,
! [A: $tType] :
( linordered_idom(A)
=> ! [A1: A] :
( ( sgn_sgn(A,A1) = uminus_uminus(A,one_one(A)) )
<=> ord_less(A,A1,zero_zero(A)) ) ) ).
tff(fact_93_neg__equal__iff__equal,axiom,
! [A: $tType] :
( group_add(A)
=> ! [B: A,A1: A] :
( ( uminus_uminus(A,A1) = uminus_uminus(A,B) )
<=> ( A1 = B ) ) ) ).
tff(fact_94_neg__equal__zero,axiom,
! [A: $tType] :
( linord219039673up_add(A)
=> ! [A1: A] :
( ( uminus_uminus(A,A1) = A1 )
<=> ( A1 = zero_zero(A) ) ) ) ).
tff(fact_95_neg__equal__0__iff__equal,axiom,
! [A: $tType] :
( group_add(A)
=> ! [A1: A] :
( ( uminus_uminus(A,A1) = zero_zero(A) )
<=> ( A1 = zero_zero(A) ) ) ) ).
tff(fact_96_equal__neg__zero,axiom,
! [A: $tType] :
( linord219039673up_add(A)
=> ! [A1: A] :
( ( A1 = uminus_uminus(A,A1) )
<=> ( A1 = zero_zero(A) ) ) ) ).
tff(fact_97_neg__0__equal__iff__equal,axiom,
! [A: $tType] :
( group_add(A)
=> ! [A1: A] :
( ( zero_zero(A) = uminus_uminus(A,A1) )
<=> ( zero_zero(A) = A1 ) ) ) ).
%----Arities (32)
tff(arity_String_Onibble___Enum_Oenum,axiom,
enum(nibble) ).
tff(arity_sum___Enum_Oenum,axiom,
! [T_1: $tType,T_2: $tType] :
( ( enum(T_2)
& enum(T_1) )
=> enum(sum_sum(T_1,T_2)) ) ).
tff(arity_String_Ochar___Enum_Oenum,axiom,
enum(char) ).
tff(arity_HOL_Obool___Enum_Oenum,axiom,
enum(bool) ).
tff(arity_fun___Enum_Oenum,axiom,
! [T_1: $tType,T_2: $tType] :
( ( enum(T_2)
& enum(T_1) )
=> enum(fun(T_1,T_2)) ) ).
tff(arity_fun___HOL_Oequal,axiom,
! [T_1: $tType,T_2: $tType] :
( ( cl_HOL_Oequal(T_2)
& enum(T_1) )
=> cl_HOL_Oequal(fun(T_1,T_2)) ) ).
tff(arity_Com_Ocom___HOL_Oequal,axiom,
cl_HOL_Oequal(com) ).
tff(arity_Int_Oint___Groups_Olinordered__ab__group__add,axiom,
linord219039673up_add(int) ).
tff(arity_Int_Oint___Rings_Olinordered__semidom,axiom,
linordered_semidom(int) ).
tff(arity_Int_Oint___Rings_Olinordered__idom,axiom,
linordered_idom(int) ).
tff(arity_Int_Oint___Nat_Osemiring__char__0,axiom,
semiring_char_0(int) ).
tff(arity_Int_Oint___Rings_Ozero__neq__one,axiom,
zero_neq_one(int) ).
tff(arity_Int_Oint___Rings_Osemiring__1,axiom,
semiring_1(int) ).
tff(arity_Int_Oint___Groups_Ogroup__add,axiom,
group_add(int) ).
tff(arity_Int_Oint___Groups_Osgn__if,axiom,
sgn_if(int) ).
tff(arity_Int_Oint___Groups_Ozero,axiom,
zero(int) ).
tff(arity_Int_Oint___Groups_Oone,axiom,
one(int) ).
tff(arity_Int_Oint___HOL_Oequal,axiom,
cl_HOL_Oequal(int) ).
tff(arity_Nat_Onat___Rings_Olinordered__semidom,axiom,
linordered_semidom(nat) ).
tff(arity_Nat_Onat___Nat_Osemiring__char__0,axiom,
semiring_char_0(nat) ).
tff(arity_Nat_Onat___Rings_Ozero__neq__one,axiom,
zero_neq_one(nat) ).
tff(arity_Nat_Onat___Rings_Osemiring__1,axiom,
semiring_1(nat) ).
tff(arity_Nat_Onat___Groups_Ozero,axiom,
zero(nat) ).
tff(arity_Nat_Onat___Groups_Oone,axiom,
one(nat) ).
tff(arity_Nat_Onat___HOL_Oequal,axiom,
cl_HOL_Oequal(nat) ).
tff(arity_HOL_Obool___HOL_Oequal,axiom,
cl_HOL_Oequal(bool) ).
tff(arity_Com_Ostate___HOL_Oequal,axiom,
cl_HOL_Oequal(state) ).
tff(arity_String_Ochar___HOL_Oequal,axiom,
cl_HOL_Oequal(char) ).
tff(arity_sum___HOL_Oequal,axiom,
! [T_1: $tType,T_2: $tType] : cl_HOL_Oequal(sum_sum(T_1,T_2)) ).
tff(arity_String_Onibble___HOL_Oequal,axiom,
cl_HOL_Oequal(nibble) ).
tff(arity_String_Oliteral___HOL_Oequal,axiom,
cl_HOL_Oequal(literal) ).
tff(arity_Hoare__Mirabelle__vtrypsmcwp_Otriple___HOL_Oequal,axiom,
! [T_1: $tType] : cl_HOL_Oequal(hoare_28830079triple(T_1)) ).
%----Helper facts (8)
tff(help_pp_1_1_U,axiom,
~ pp(fFalse) ).
tff(help_pp_2_1_U,axiom,
pp(fTrue) ).
tff(help_fTrue_1_1_U,axiom,
pp(fTrue) ).
tff(help_fTrue_1_1_T,axiom,
! [P: bool] :
( ( P = fTrue )
| ( P = fFalse ) ) ).
tff(help_fFalse_1_1_U,axiom,
~ pp(fFalse) ).
tff(help_fFalse_1_1_T,axiom,
! [P: bool] :
( ( P = fTrue )
| ( P = fFalse ) ) ).
tff(help_fequal_1_1_T,axiom,
! [A: $tType,Y: A,X: A] :
( ~ pp(aa(A,bool,aa(A,fun(A,bool),fequal(A),X),Y))
| ( X = Y ) ) ).
tff(help_fequal_2_1_T,axiom,
! [A: $tType,Y: A,X: A] :
( ( X != Y )
| pp(aa(A,bool,aa(A,fun(A,bool),fequal(A),X),Y)) ) ).
%----Conjectures (2)
tff(conj_0,hypothesis,
? [S1: state,T: state] : ( S1 != T ) ).
tff(conj_1,conjecture,
! [T: state] :
? [S: state] : ( S != T ) ).
%------------------------------------------------------------------------------