TPTP Problem File: ITP046^2.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : ITP046^2 : TPTP v9.0.0. Released v7.5.0.
% Domain : Interactive Theorem Proving
% Problem : Sledgehammer Determinacy problem prob_599__3354110_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 : Determinacy/prob_599__3354110_1 [Des21]
% Status : Theorem
% Rating : 0.33 v8.1.0, 0.50 v7.5.0
% Syntax : Number of formulae : 346 ( 92 unt; 78 typ; 0 def)
% Number of atoms : 922 ( 390 equ; 0 cnn)
% Maximal formula atoms : 13 ( 3 avg)
% Number of connectives : 25058 ( 128 ~; 55 |; 78 &;24368 @)
% ( 0 <=>; 429 =>; 0 <=; 0 <~>)
% Maximal formula depth : 44 ( 14 avg)
% Number of types : 5 ( 4 usr)
% Number of type conns : 2786 (2786 >; 0 *; 0 +; 0 <<)
% Number of symbols : 77 ( 74 usr; 13 con; 0-7 aty)
% Number of variables : 1715 ( 59 ^;1467 !; 77 ?;1715 :)
% ( 112 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TH1_THM_EQU_NAR
% Comments : This file was generated by Sledgehammer 2021-02-23 16:18:36.876
%------------------------------------------------------------------------------
% Could-be-implicit typings (11)
thf(ty_t_Product__Type_Oprod,type,
product_prod: $tType > $tType > $tType ).
thf(ty_t_Sum__Type_Osum,type,
sum_sum: $tType > $tType > $tType ).
thf(ty_t_Option_Ooption,type,
option: $tType > $tType ).
thf(ty_t_Data_Oconst,type,
const: $tType ).
thf(ty_t_Data_Ocntxt,type,
cntxt: $tType > $tType > $tType > $tType ).
thf(ty_t_Data_Oexpr,type,
expr: $tType > $tType > $tType > $tType ).
thf(ty_t_Data_Oval,type,
val: $tType > $tType > $tType > $tType ).
thf(ty_t_Set_Oset,type,
set: $tType > $tType ).
thf(ty_tf_v,type,
v: $tType ).
thf(ty_tf_r,type,
r: $tType ).
thf(ty_tf_l,type,
l: $tType ).
% Explicit typings (67)
thf(sy_cl_HOL_Otype,type,
type:
!>[A: $tType] : $o ).
thf(sy_cl_Orderings_Oorder,type,
order:
!>[A: $tType] : $o ).
thf(sy_cl_Finite__Set_Ofinite,type,
finite_finite:
!>[A: $tType] : $o ).
thf(sy_cl_Nat_Osemiring__char__0,type,
semiring_char_0:
!>[A: $tType] : $o ).
thf(sy_c_Data_Ocombine,type,
combine:
!>[A: $tType,B: $tType] : ( ( A > ( option @ B ) ) > ( A > ( option @ B ) ) > A > ( option @ B ) ) ).
thf(sy_c_Data_Oconst_OF,type,
f: const ).
thf(sy_c_Data_Oconst_OT,type,
t: const ).
thf(sy_c_Data_Oconst_OUnit,type,
unit: const ).
thf(sy_c_Data_Odoms,type,
doms:
!>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > ( set @ L ) ) ).
thf(sy_c_Data_Oexpr_OAssign,type,
assign:
!>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).
thf(sy_c_Data_Oexpr_OIte,type,
ite:
!>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).
thf(sy_c_Data_Oexpr_ORead,type,
read:
!>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).
thf(sy_c_Data_Oexpr_ORef,type,
ref:
!>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).
thf(sy_c_Data_Oexpr_ORfork,type,
rfork:
!>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).
thf(sy_c_Data_Oexpr_ORjoin,type,
rjoin:
!>[R: $tType,L: $tType,V: $tType] : ( ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).
thf(sy_c_Data_Oexpr_OVE,type,
ve:
!>[R: $tType,L: $tType,V: $tType] : ( ( val @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).
thf(sy_c_Data_Oplug,type,
plug:
!>[R: $tType,L: $tType,V: $tType] : ( ( cntxt @ R @ L @ V ) > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) ).
thf(sy_c_Data_Oval_OCV,type,
cv:
!>[R: $tType,L: $tType,V: $tType] : ( const > ( val @ R @ L @ V ) ) ).
thf(sy_c_Data_Oval_OLoc,type,
loc:
!>[L: $tType,R: $tType,V: $tType] : ( L > ( val @ R @ L @ V ) ) ).
thf(sy_c_Data_Oval_ORid,type,
rid:
!>[R: $tType,L: $tType,V: $tType] : ( R > ( val @ R @ L @ V ) ) ).
thf(sy_c_Executions_Osubstitution_Oexecution,type,
execution:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( expr @ R @ L @ V ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_Executions_Osubstitution_Oinductive__invariant,type,
inductive_invariant:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) > $o ) ).
thf(sy_c_Executions_Osubstitution_Omaximal__execution,type,
maximal_execution:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( expr @ R @ L @ V ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_Executions_Osubstitution_Oreachable,type,
reachable:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_Executions_Osubstitution_Osteps,type,
steps:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( set @ ( product_prod @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ).
thf(sy_c_Executions_Osubstitution_Oterminates__in,type,
terminates_in:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > ( expr @ R @ L @ V ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_Finite__Set_Ofinite,type,
finite_finite2:
!>[A: $tType] : ( ( set @ A ) > $o ) ).
thf(sy_c_Fun_Ofun__upd,type,
fun_upd:
!>[A: $tType,B: $tType] : ( ( A > B ) > A > B > A > B ) ).
thf(sy_c_If,type,
if:
!>[A: $tType] : ( $o > A > A > A ) ).
thf(sy_c_Map_Odom,type,
dom:
!>[A: $tType,B: $tType] : ( ( A > ( option @ B ) ) > ( set @ A ) ) ).
thf(sy_c_Occurrences_OLID_092_060_094sub_062G,type,
lID_G:
!>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( set @ L ) ) ).
thf(sy_c_Occurrences_OLID_092_060_094sub_062L,type,
lID_L:
!>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > ( set @ L ) ) ).
thf(sy_c_Occurrences_ORID_092_060_094sub_062G,type,
rID_G:
!>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( set @ R ) ) ).
thf(sy_c_Occurrences_ORID_092_060_094sub_062L,type,
rID_L:
!>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > ( set @ R ) ) ).
thf(sy_c_OperationalSemantics_Osubstitution_Odomains__subsume,type,
domains_subsume:
!>[L: $tType,R: $tType,V: $tType] : ( ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > $o ) ).
thf(sy_c_OperationalSemantics_Osubstitution_Odomains__subsume__globally,type,
domain398919503obally:
!>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_OperationalSemantics_Osubstitution_Orevision__step,type,
revision_step:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > R > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_OperationalSemantics_Osubstitution_Orevision__step__relaxed,type,
revisi1433015572elaxed:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > R > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_OperationalSemantics_Osubstitution_Osubsumes__accessible,type,
subsumes_accessible:
!>[R: $tType,L: $tType,V: $tType] : ( R > R > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_OperationalSemantics_Osubstitution_Osubsumes__accessible__globally,type,
subsum380726323obally:
!>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_Option_Ooption_ONone,type,
none:
!>[A: $tType] : ( option @ A ) ).
thf(sy_c_Option_Ooption_OSome,type,
some:
!>[A: $tType] : ( A > ( option @ A ) ) ).
thf(sy_c_Option_Ooption_Othe,type,
the:
!>[A: $tType] : ( ( option @ A ) > A ) ).
thf(sy_c_Orderings_Oord__class_Oless__eq,type,
ord_less_eq:
!>[A: $tType] : ( A > A > $o ) ).
thf(sy_c_Orderings_Otop__class_Otop,type,
top_top:
!>[A: $tType] : A ).
thf(sy_c_Product__Type_OPair,type,
product_Pair:
!>[A: $tType,B: $tType] : ( A > B > ( product_prod @ A @ B ) ) ).
thf(sy_c_Renaming_Oeq__states,type,
eq_states:
!>[R: $tType,L: $tType,V: $tType] : ( ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o ) ).
thf(sy_c_Set_OCollect,type,
collect:
!>[A: $tType] : ( ( A > $o ) > ( set @ A ) ) ).
thf(sy_c_Substitution_Osubstitution,type,
substitution:
!>[R: $tType,L: $tType,V: $tType] : ( ( ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ) ) > $o ) ).
thf(sy_c_Transitive__Closure_Ortrancl,type,
transitive_rtrancl:
!>[A: $tType] : ( ( set @ ( product_prod @ A @ A ) ) > ( set @ ( product_prod @ A @ A ) ) ) ).
thf(sy_c_member,type,
member:
!>[A: $tType] : ( A > ( set @ A ) > $o ) ).
thf(sy_v__092_060E_062,type,
e: cntxt @ r @ l @ v ).
thf(sy_v__092_060E_062_H____,type,
e2: cntxt @ r @ l @ v ).
thf(sy_v__092_060sigma_062,type,
sigma: l > ( option @ ( val @ r @ l @ v ) ) ).
thf(sy_v__092_060sigma_062_H____,type,
sigma2: l > ( option @ ( val @ r @ l @ v ) ) ).
thf(sy_v__092_060tau_062,type,
tau: l > ( option @ ( val @ r @ l @ v ) ) ).
thf(sy_v__092_060tau_062_H____,type,
tau2: l > ( option @ ( val @ r @ l @ v ) ) ).
thf(sy_v_e,type,
e3: expr @ r @ l @ v ).
thf(sy_v_e_H____,type,
e4: expr @ r @ l @ v ).
thf(sy_v_left__forkee,type,
left_forkee: r ).
thf(sy_v_r,type,
r2: r ).
thf(sy_v_r_H,type,
r3: r ).
thf(sy_v_right__forkee____,type,
right_forkee: r ).
thf(sy_v_s_092_060_094sub_0621,type,
s_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ).
thf(sy_v_s_092_060_094sub_0622,type,
s_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ).
thf(sy_v_s_092_060_094sub_0622_H,type,
s_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ).
thf(sy_v_subst,type,
subst: ( expr @ r @ l @ v ) > v > ( expr @ r @ l @ v ) > ( expr @ r @ l @ v ) ).
% Relevant facts (255)
thf(fact_0_local_Ofork_I3_J,axiom,
~ ( member @ r @ right_forkee @ ( rID_G @ r @ l @ v @ s_1 ) ) ).
% local.fork(3)
thf(fact_1_side,axiom,
~ ( member @ r @ left_forkee @ ( rID_G @ r @ l @ v @ s_1 ) ) ).
% side
thf(fact_2_neq,axiom,
r2 != r3 ).
% neq
thf(fact_3__092_060open_062r_H_A_092_060noteq_062_Aleft__forkee_092_060close_062,axiom,
r3 != left_forkee ).
% \<open>r' \<noteq> left_forkee\<close>
thf(fact_4_r_H__unchanged__left,axiom,
( ( s_2 @ r3 )
= ( s_1 @ r3 ) ) ).
% r'_unchanged_left
thf(fact_5__092_060open_062r_A_092_060noteq_062_Aright__forkee_092_060close_062,axiom,
r2 != right_forkee ).
% \<open>r \<noteq> right_forkee\<close>
thf(fact_6_local_Ofork_I2_J,axiom,
( ( s_1 @ r3 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ tau2 @ ( plug @ r @ l @ v @ e2 @ ( rfork @ r @ l @ v @ e4 ) ) ) ) ) ) ).
% local.fork(2)
thf(fact_7_right,axiom,
revision_step @ r @ l @ v @ subst @ r3 @ s_1 @ s_22 ).
% right
thf(fact_8_local_Ofork_I1_J,axiom,
( s_22
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ s_1 @ r3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ tau2 @ ( plug @ r @ l @ v @ e2 @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ right_forkee ) ) ) ) ) ) ) @ right_forkee
@ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ sigma2 @ tau2 )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
@ ^ [X: l] : ( none @ ( val @ r @ l @ v ) )
@ e4 ) ) ) ) ) ).
% local.fork(1)
thf(fact_9__092_060open_062r_A_092_060noteq_062_Aleft__forkee_092_060close_062,axiom,
r2 != left_forkee ).
% \<open>r \<noteq> left_forkee\<close>
thf(fact_10_r__unchanged__right,axiom,
( ( s_22 @ r2 )
= ( s_1 @ r2 ) ) ).
% r_unchanged_right
thf(fact_11_reach,axiom,
reachable @ r @ l @ v @ subst @ s_1 ).
% reach
thf(fact_12_left__step,axiom,
revision_step @ r @ l @ v @ subst @ r2 @ s_1 @ s_2 ).
% left_step
thf(fact_13_only__fork__introduces__rids_H,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( ! [Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,E2: expr @ r @ l @ v] :
( ( S @ R2 )
!= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ ( plug @ r @ l @ v @ E @ ( rfork @ r @ l @ v @ E2 ) ) ) ) ) )
=> ( ~ ( member @ r @ R3 @ ( rID_G @ r @ l @ v @ S ) )
=> ~ ( member @ r @ R3 @ ( rID_G @ r @ l @ v @ S2 ) ) ) ) ) ).
% only_fork_introduces_rids'
thf(fact_14_revision__step_Ofork,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E4: expr @ r @ l @ v,R3: r] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rfork @ r @ l @ v @ E4 ) ) ) ) ) )
=> ( ~ ( member @ r @ R3 @ ( rID_G @ r @ l @ v @ S ) )
=> ( revision_step @ r @ l @ v @ subst @ R2 @ S
@ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) @ R3
@ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
@ ^ [X: l] : ( none @ ( val @ r @ l @ v ) )
@ E4 ) ) ) ) ) ) ) ).
% revision_step.fork
thf(fact_15_fork__pseudodeterministic,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E4: expr @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rfork @ r @ l @ v @ E4 ) ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
= ( ? [R4: r] :
( ~ ( member @ r @ R4 @ ( rID_G @ r @ l @ v @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rfork @ r @ l @ v @ E4 ) ) ) ) ) ) ) )
& ( S2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R4 ) ) ) ) ) ) ) @ R4
@ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
@ ^ [X: l] : ( none @ ( val @ r @ l @ v ) )
@ E4 ) ) ) ) ) ) ) ) ) ).
% fork_pseudodeterministic
thf(fact_16_substitution__axioms,axiom,
substitution @ r @ l @ v @ subst ).
% substitution_axioms
thf(fact_17_revision__step__relaxed_Ofork,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E4: expr @ r @ l @ v,R3: r] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rfork @ r @ l @ v @ E4 ) ) ) ) ) )
=> ( ~ ( member @ r @ R3 @ ( rID_G @ r @ l @ v @ S ) )
=> ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S
@ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) @ R3
@ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
@ ^ [X: l] : ( none @ ( val @ r @ l @ v ) )
@ E4 ) ) ) ) ) ) ) ).
% revision_step_relaxed.fork
thf(fact_18_local__and__fork__commute,axiom,
! [S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,X2: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ),S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R5: r,E4: expr @ r @ l @ v] :
( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X2 ) ) )
=> ( ( S_22
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) @ R5
@ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
@ ^ [X: l] : ( none @ ( val @ r @ l @ v ) )
@ E4 ) ) ) ) )
=> ( ( ( S_2 @ R3 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rfork @ r @ l @ v @ E4 ) ) ) ) ) )
=> ( ~ ( member @ r @ R5 @ ( rID_G @ r @ l @ v @ S_2 ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22
@ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )
@ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) @ R5
@ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
@ ^ [X: l] : ( none @ ( val @ r @ l @ v ) )
@ E4 ) ) ) )
@ R2
@ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X2 ) ) )
=> ( ( R2 != R3 )
=> ( ( R2 != R5 )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ).
% local_and_fork_commute
thf(fact_19_s_092_060_094sub_0622,axiom,
( s_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ s_1 @ r2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ tau @ ( plug @ r @ l @ v @ e @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ left_forkee ) ) ) ) ) ) ) @ left_forkee
@ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ ( combine @ l @ ( val @ r @ l @ v ) @ sigma @ tau )
@ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v )
@ ^ [X: l] : ( none @ ( val @ r @ l @ v ) )
@ e3 ) ) ) ) ) ).
% s\<^sub>2
thf(fact_20_restrictions__inwards,axiom,
! [A: $tType,B: $tType,X2: A,X3: A,F: A > ( option @ B ),Y: B] :
( ( X2 != X3 )
=> ( ( fun_upd @ A @ ( option @ B ) @ ( fun_upd @ A @ ( option @ B ) @ F @ X2 @ ( some @ B @ Y ) ) @ X3 @ ( none @ B ) )
= ( fun_upd @ A @ ( option @ B ) @ ( fun_upd @ A @ ( option @ B ) @ F @ X3 @ ( none @ B ) ) @ X2 @ ( some @ B @ Y ) ) ) ) ).
% restrictions_inwards
thf(fact_21_empty__upd__none,axiom,
! [B: $tType,A: $tType,X2: A] :
( ( fun_upd @ A @ ( option @ B )
@ ^ [X: A] : ( none @ B )
@ X2
@ ( none @ B ) )
= ( ^ [X: A] : ( none @ B ) ) ) ).
% empty_upd_none
thf(fact_22_RID_092_060_094sub_062GI_I1_J,axiom,
! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R2: B,V2: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) )] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ V2 ) )
=> ( member @ B @ R2 @ ( rID_G @ B @ A @ C @ S ) ) ) ).
% RID\<^sub>GI(1)
thf(fact_23_not__None__eq,axiom,
! [A: $tType,X2: option @ A] :
( ( X2
!= ( none @ A ) )
= ( ? [Y2: A] :
( X2
= ( some @ A @ Y2 ) ) ) ) ).
% not_None_eq
thf(fact_24_not__Some__eq,axiom,
! [A: $tType,X2: option @ A] :
( ( ! [Y2: A] :
( X2
!= ( some @ A @ Y2 ) ) )
= ( X2
= ( none @ A ) ) ) ).
% not_Some_eq
thf(fact_25_s_092_060_094sub_0621__r,axiom,
( ( s_1 @ r2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ tau @ ( plug @ r @ l @ v @ e @ ( rfork @ r @ l @ v @ e3 ) ) ) ) ) ) ).
% s\<^sub>1_r
thf(fact_26_local__steps__commute,axiom,
! [S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,X2: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ),S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,Y: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) )] :
( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X2 ) ) )
=> ( ( S_22
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Y ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X2 ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X2 ) ) @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Y ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Y ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Y ) ) @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ X2 ) ) )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ).
% local_steps_commute
thf(fact_27_only__fork__introduces__rids,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( ! [Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,E2: expr @ r @ l @ v] :
( ( S @ R2 )
!= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ ( plug @ r @ l @ v @ E @ ( rfork @ r @ l @ v @ E2 ) ) ) ) ) )
=> ( ord_less_eq @ ( set @ r ) @ ( rID_G @ r @ l @ v @ S2 ) @ ( rID_G @ r @ l @ v @ S ) ) ) ) ).
% only_fork_introduces_rids
thf(fact_28_local__determinism,axiom,
! [R2: r,S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S_1 @ S_2 )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_1 @ S_22 )
=> ( eq_states @ r @ l @ v @ S_2 @ S_22 ) ) ) ).
% local_determinism
thf(fact_29_SLC__sym,axiom,
! [R3: r,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ? [S_33: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_34: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_33 @ S_34 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_33 )
| ( S_2 = S_33 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_34 )
| ( S_22 = S_34 ) ) )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_3 )
| ( S_22 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_32 )
| ( S_2 = S_32 ) ) ) ) ).
% SLC_sym
thf(fact_30_SLC__commute,axiom,
! [S_35: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_36: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( S_35 = S_36 )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_35 )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_36 )
=> ( ( eq_states @ r @ l @ v @ S_35 @ S_36 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_35 )
| ( S_2 = S_35 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_36 )
| ( S_22 = S_36 ) ) ) ) ) ) ).
% SLC_commute
thf(fact_31_reachability__closed__under__execution__step,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( reachable @ r @ l @ v @ subst @ S2 ) ) ) ).
% reachability_closed_under_execution_step
thf(fact_32_option_Oinject,axiom,
! [A: $tType,X22: A,Y22: A] :
( ( ( some @ A @ X22 )
= ( some @ A @ Y22 ) )
= ( X22 = Y22 ) ) ).
% option.inject
thf(fact_33_transition__relations__equivalent,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
= ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S @ S2 ) ) ) ).
% transition_relations_equivalent
thf(fact_34_in__restricted__global__in__unrestricted__global_I1_J,axiom,
! [C: $tType,B: $tType,A: $tType,R3: A,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
( ( member @ A @ R3 @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) )
=> ( member @ A @ R3 @ ( rID_G @ A @ B @ C @ S ) ) ) ).
% in_restricted_global_in_unrestricted_global(1)
thf(fact_35_in__restricted__global__in__updated__global_I1_J,axiom,
! [C: $tType,A: $tType,B: $tType,R3: A,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
( ( member @ A @ R3 @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) )
=> ( member @ A @ R3 @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) @ Ls ) ) ) ) ) ).
% in_restricted_global_in_updated_global(1)
thf(fact_36_reachable__def,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
= ( ? [E5: expr @ r @ l @ v,S3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] : ( execution @ r @ l @ v @ subst @ E5 @ S3 @ S ) ) ) ).
% reachable_def
thf(fact_37_substitution_Olocal__determinism,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_1 @ S_2 )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_1 @ S_22 )
=> ( eq_states @ R @ L @ V @ S_2 @ S_22 ) ) ) ) ).
% substitution.local_determinism
thf(fact_38_substitution_OSLC__commute,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_35: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_36: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( S_35 = S_36 )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_35 )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_36 )
=> ( ( eq_states @ R @ L @ V @ S_35 @ S_36 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_35 )
| ( S_2 = S_35 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_36 )
| ( S_22 = S_36 ) ) ) ) ) ) ) ).
% substitution.SLC_commute
thf(fact_39_substitution_OSLC__sym,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R3: R,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ? [S_33: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_34: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_33 @ S_34 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_33 )
| ( S_2 = S_33 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_34 )
| ( S_22 = S_34 ) ) )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_3 )
| ( S_22 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_32 )
| ( S_2 = S_32 ) ) ) ) ) ).
% substitution.SLC_sym
thf(fact_40_ID__restricted__global__subset__unrestricted_I2_J,axiom,
! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R2: B] : ( ord_less_eq @ ( set @ B ) @ ( rID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) @ ( rID_G @ B @ A @ C @ S ) ) ).
% ID_restricted_global_subset_unrestricted(2)
thf(fact_41_substitution_Olocal__steps__commute,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,X2: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,Y: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( S_2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X2 ) ) )
=> ( ( S_22
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Y ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X2 ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X2 ) ) @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Y ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Y ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Y ) ) @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X2 ) ) )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ).
% substitution.local_steps_commute
thf(fact_42_substitution_Olocal__and__fork__commute,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,X2: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R5: R,E4: expr @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( S_2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X2 ) ) )
=> ( ( S_22
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) @ R5
@ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
@ ^ [X: L] : ( none @ ( val @ R @ L @ V ) )
@ E4 ) ) ) ) )
=> ( ( ( S_2 @ R3 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rfork @ R @ L @ V @ E4 ) ) ) ) ) )
=> ( ~ ( member @ R @ R5 @ ( rID_G @ R @ L @ V @ S_2 ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22
@ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )
@ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) @ R5
@ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
@ ^ [X: L] : ( none @ ( val @ R @ L @ V ) )
@ E4 ) ) ) )
@ R2
@ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ X2 ) ) )
=> ( ( R2 != R3 )
=> ( ( R2 != R5 )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ) ).
% substitution.local_and_fork_commute
thf(fact_43_combine__options__cases,axiom,
! [A: $tType,B: $tType,X2: option @ A,P: ( option @ A ) > ( option @ B ) > $o,Y: option @ B] :
( ( ( X2
= ( none @ A ) )
=> ( P @ X2 @ Y ) )
=> ( ( ( Y
= ( none @ B ) )
=> ( P @ X2 @ Y ) )
=> ( ! [A2: A,B2: B] :
( ( X2
= ( some @ A @ A2 ) )
=> ( ( Y
= ( some @ B @ B2 ) )
=> ( P @ X2 @ Y ) ) )
=> ( P @ X2 @ Y ) ) ) ) ).
% combine_options_cases
thf(fact_44_mem__Collect__eq,axiom,
! [A: $tType,A3: A,P: A > $o] :
( ( member @ A @ A3 @ ( collect @ A @ P ) )
= ( P @ A3 ) ) ).
% mem_Collect_eq
thf(fact_45_Collect__mem__eq,axiom,
! [A: $tType,A4: set @ A] :
( ( collect @ A
@ ^ [X: A] : ( member @ A @ X @ A4 ) )
= A4 ) ).
% Collect_mem_eq
thf(fact_46_Collect__cong,axiom,
! [A: $tType,P: A > $o,Q: A > $o] :
( ! [X4: A] :
( ( P @ X4 )
= ( Q @ X4 ) )
=> ( ( collect @ A @ P )
= ( collect @ A @ Q ) ) ) ).
% Collect_cong
thf(fact_47_ext,axiom,
! [B: $tType,A: $tType,F: A > B,G: A > B] :
( ! [X4: A] :
( ( F @ X4 )
= ( G @ X4 ) )
=> ( F = G ) ) ).
% ext
thf(fact_48_split__option__all,axiom,
! [A: $tType] :
( ( ^ [P2: ( option @ A ) > $o] :
! [X5: option @ A] : ( P2 @ X5 ) )
= ( ^ [P3: ( option @ A ) > $o] :
( ( P3 @ ( none @ A ) )
& ! [X: A] : ( P3 @ ( some @ A @ X ) ) ) ) ) ).
% split_option_all
thf(fact_49_split__option__ex,axiom,
! [A: $tType] :
( ( ^ [P2: ( option @ A ) > $o] :
? [X5: option @ A] : ( P2 @ X5 ) )
= ( ^ [P3: ( option @ A ) > $o] :
( ( P3 @ ( none @ A ) )
| ? [X: A] : ( P3 @ ( some @ A @ X ) ) ) ) ) ).
% split_option_ex
thf(fact_50_option_Oinducts,axiom,
! [A: $tType,P: ( option @ A ) > $o,Option: option @ A] :
( ( P @ ( none @ A ) )
=> ( ! [X4: A] : ( P @ ( some @ A @ X4 ) )
=> ( P @ Option ) ) ) ).
% option.inducts
thf(fact_51_option_Oexhaust,axiom,
! [A: $tType,Y: option @ A] :
( ( Y
!= ( none @ A ) )
=> ~ ! [X23: A] :
( Y
!= ( some @ A @ X23 ) ) ) ).
% option.exhaust
thf(fact_52_option_OdiscI,axiom,
! [A: $tType,Option: option @ A,X22: A] :
( ( Option
= ( some @ A @ X22 ) )
=> ( Option
!= ( none @ A ) ) ) ).
% option.discI
thf(fact_53_option_Odistinct_I1_J,axiom,
! [A: $tType,X22: A] :
( ( none @ A )
!= ( some @ A @ X22 ) ) ).
% option.distinct(1)
thf(fact_54_map__upd__Some__unfold,axiom,
! [B: $tType,A: $tType,M: B > ( option @ A ),A3: B,B3: A,X2: B,Y: A] :
( ( ( fun_upd @ B @ ( option @ A ) @ M @ A3 @ ( some @ A @ B3 ) @ X2 )
= ( some @ A @ Y ) )
= ( ( ( X2 = A3 )
& ( B3 = Y ) )
| ( ( X2 != A3 )
& ( ( M @ X2 )
= ( some @ A @ Y ) ) ) ) ) ).
% map_upd_Some_unfold
thf(fact_55_map__upd__triv,axiom,
! [A: $tType,B: $tType,T: B > ( option @ A ),K: B,X2: A] :
( ( ( T @ K )
= ( some @ A @ X2 ) )
=> ( ( fun_upd @ B @ ( option @ A ) @ T @ K @ ( some @ A @ X2 ) )
= T ) ) ).
% map_upd_triv
thf(fact_56_map__upd__eqD1,axiom,
! [A: $tType,B: $tType,M: A > ( option @ B ),A3: A,X2: B,N: A > ( option @ B ),Y: B] :
( ( ( fun_upd @ A @ ( option @ B ) @ M @ A3 @ ( some @ B @ X2 ) )
= ( fun_upd @ A @ ( option @ B ) @ N @ A3 @ ( some @ B @ Y ) ) )
=> ( X2 = Y ) ) ).
% map_upd_eqD1
thf(fact_57_map__upd__nonempty,axiom,
! [B: $tType,A: $tType,T: A > ( option @ B ),K: A,X2: B] :
( ( fun_upd @ A @ ( option @ B ) @ T @ K @ ( some @ B @ X2 ) )
!= ( ^ [X: A] : ( none @ B ) ) ) ).
% map_upd_nonempty
thf(fact_58_substitution_Ofork__pseudodeterministic,axiom,
! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E4: expr @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rfork @ R @ L @ V @ E4 ) ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
= ( ? [R4: R] :
( ~ ( member @ R @ R4 @ ( rID_G @ R @ L @ V @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rfork @ R @ L @ V @ E4 ) ) ) ) ) ) ) )
& ( S2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R4 ) ) ) ) ) ) ) @ R4
@ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
@ ^ [X: L] : ( none @ ( val @ R @ L @ V ) )
@ E4 ) ) ) ) ) ) ) ) ) ) ).
% substitution.fork_pseudodeterministic
thf(fact_59_inductive__invariant__is__execution__invariant,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),P: ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) > $o] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( ( inductive_invariant @ r @ l @ v @ subst @ P )
=> ( P @ S ) ) ) ).
% inductive_invariant_is_execution_invariant
thf(fact_60_substitution_Orevision__step__relaxed_Ofork,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E4: expr @ R @ L @ V,R3: R] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rfork @ R @ L @ V @ E4 ) ) ) ) ) )
=> ( ~ ( member @ R @ R3 @ ( rID_G @ R @ L @ V @ S ) )
=> ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S
@ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) @ R3
@ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
@ ^ [X: L] : ( none @ ( val @ R @ L @ V ) )
@ E4 ) ) ) ) ) ) ) ) ).
% substitution.revision_step_relaxed.fork
thf(fact_61_substitution_Orevision__step_Ofork,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E4: expr @ R @ L @ V,R3: R] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rfork @ R @ L @ V @ E4 ) ) ) ) ) )
=> ( ~ ( member @ R @ R3 @ ( rID_G @ R @ L @ V @ S ) )
=> ( revision_step @ R @ L @ V @ Subst @ R2 @ S
@ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) @ R3
@ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 )
@ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V )
@ ^ [X: L] : ( none @ ( val @ R @ L @ V ) )
@ E4 ) ) ) ) ) ) ) ) ).
% substitution.revision_step.fork
thf(fact_62_substitution_Oonly__fork__introduces__rids,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,E2: expr @ R @ L @ V] :
( ( S @ R2 )
!= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ ( plug @ R @ L @ V @ E @ ( rfork @ R @ L @ V @ E2 ) ) ) ) ) )
=> ( ord_less_eq @ ( set @ R ) @ ( rID_G @ R @ L @ V @ S2 ) @ ( rID_G @ R @ L @ V @ S ) ) ) ) ) ).
% substitution.only_fork_introduces_rids
thf(fact_63_reachable__imp___092_060S_062_092_060_094sub_062G,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( domain398919503obally @ r @ l @ v @ S ) ) ).
% reachable_imp_\<S>\<^sub>G
thf(fact_64_substitution_Oonly__fork__introduces__rids_H,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,E2: expr @ R @ L @ V] :
( ( S @ R2 )
!= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ ( plug @ R @ L @ V @ E @ ( rfork @ R @ L @ V @ E2 ) ) ) ) ) )
=> ( ~ ( member @ R @ R3 @ ( rID_G @ R @ L @ V @ S ) )
=> ~ ( member @ R @ R3 @ ( rID_G @ R @ L @ V @ S2 ) ) ) ) ) ) ).
% substitution.only_fork_introduces_rids'
thf(fact_65_SLC__join_092_060_094sub_062_092_060epsilon_062,axiom,
! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R5: r,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) )
=> ( ( S_2
= ( ^ [X: r] : ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) )
=> ( ( ( S_1 @ R5 )
= ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ).
% SLC_join\<^sub>\<epsilon>
thf(fact_66_revision__step__relaxed_Ojoin_092_060_094sub_062_092_060epsilon_062,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R3: r] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) )
=> ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S
@ ^ [X: r] : ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ).
% revision_step_relaxed.join\<^sub>\<epsilon>
thf(fact_67_revision__step_Ojoin_092_060_094sub_062_092_060epsilon_062,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R3: r] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) )
=> ( revision_step @ r @ l @ v @ subst @ R2 @ S
@ ^ [X: r] : ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ).
% revision_step.join\<^sub>\<epsilon>
thf(fact_68_domains__subsume__globally__def,axiom,
( ( domain398919503obally @ r @ l @ v )
= ( ^ [S4: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
! [R6: r,Ls2: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) )] :
( ( ( S4 @ R6 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Ls2 ) )
=> ( domains_subsume @ l @ r @ v @ Ls2 ) ) ) ) ).
% domains_subsume_globally_def
thf(fact_69_rjoin_092_060_094sub_062_092_060epsilon_062__deterministic,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R3: r,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
= ( S2
= ( ^ [X: r] : ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ) ) ).
% rjoin\<^sub>\<epsilon>_deterministic
thf(fact_70_substitution_Orevision__step_Ocong,axiom,
! [V: $tType,L: $tType,R: $tType] :
( ( revision_step @ R @ L @ V )
= ( revision_step @ R @ L @ V ) ) ).
% substitution.revision_step.cong
thf(fact_71_substitution_Orevision__step__relaxed_Ocong,axiom,
! [V: $tType,L: $tType,R: $tType] :
( ( revisi1433015572elaxed @ R @ L @ V )
= ( revisi1433015572elaxed @ R @ L @ V ) ) ).
% substitution.revision_step_relaxed.cong
thf(fact_72_substitution_Orevision__step_Ojoin_092_060_094sub_062_092_060epsilon_062,axiom,
! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R3: R] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) )
=> ( revision_step @ R @ L @ V @ Subst @ R2 @ S
@ ^ [X: R] : ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ).
% substitution.revision_step.join\<^sub>\<epsilon>
thf(fact_73_substitution_Orevision__step__relaxed_Ojoin_092_060_094sub_062_092_060epsilon_062,axiom,
! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R3: R] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) )
=> ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S
@ ^ [X: R] : ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ).
% substitution.revision_step_relaxed.join\<^sub>\<epsilon>
thf(fact_74_substitution_Orjoin_092_060_094sub_062_092_060epsilon_062__deterministic,axiom,
! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R3: R,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
= ( S2
= ( ^ [X: R] : ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ) ) ).
% substitution.rjoin\<^sub>\<epsilon>_deterministic
thf(fact_75_substitution_OSLC__join_092_060_094sub_062_092_060epsilon_062,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R5: R,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) )
=> ( ( S_2
= ( ^ [X: R] : ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) )
=> ( ( ( S_1 @ R5 )
= ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ).
% substitution.SLC_join\<^sub>\<epsilon>
thf(fact_76_nice__ind__inv__is__inductive__invariant,axiom,
( inductive_invariant @ r @ l @ v @ subst
@ ^ [S4: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( domain398919503obally @ r @ l @ v @ S4 )
& ( subsum380726323obally @ r @ l @ v @ S4 ) ) ) ).
% nice_ind_inv_is_inductive_invariant
thf(fact_77_step__preserves___092_060S_062_092_060_094sub_062G__and___092_060A_062_092_060_094sub_062G_I2_J,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( ( domain398919503obally @ r @ l @ v @ S )
=> ( ( subsum380726323obally @ r @ l @ v @ S )
=> ( subsum380726323obally @ r @ l @ v @ S2 ) ) ) ) ).
% step_preserves_\<S>\<^sub>G_and_\<A>\<^sub>G(2)
thf(fact_78_step__preserves___092_060S_062_092_060_094sub_062G__and___092_060A_062_092_060_094sub_062G_I1_J,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( ( domain398919503obally @ r @ l @ v @ S )
=> ( ( subsum380726323obally @ r @ l @ v @ S )
=> ( domain398919503obally @ r @ l @ v @ S2 ) ) ) ) ).
% step_preserves_\<S>\<^sub>G_and_\<A>\<^sub>G(1)
thf(fact_79_substitution_Odomains__subsume__globallyI,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ! [R7: R,Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E2: expr @ R @ L @ V] :
( ( ( S @ R7 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E2 ) ) ) )
=> ( domains_subsume @ L @ R @ V @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E2 ) ) ) )
=> ( domain398919503obally @ R @ L @ V @ S ) ) ) ).
% substitution.domains_subsume_globallyI
thf(fact_80_substitution_Otransition__relations__equivalent,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
= ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S @ S2 ) ) ) ) ).
% substitution.transition_relations_equivalent
thf(fact_81_domains__subsume__globallyI,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ! [R7: r,Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E2: expr @ r @ l @ v] :
( ( ( S @ R7 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ E2 ) ) ) )
=> ( domains_subsume @ l @ r @ v @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ E2 ) ) ) )
=> ( domain398919503obally @ r @ l @ v @ S ) ) ).
% domains_subsume_globallyI
thf(fact_82_substitution_Oreachable__def,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
= ( ? [E5: expr @ R @ L @ V,S3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] : ( execution @ R @ L @ V @ Subst @ E5 @ S3 @ S ) ) ) ) ).
% substitution.reachable_def
thf(fact_83_substitution_Oreachable_Ocong,axiom,
! [V: $tType,L: $tType,R: $tType] :
( ( reachable @ R @ L @ V )
= ( reachable @ R @ L @ V ) ) ).
% substitution.reachable.cong
thf(fact_84_substitution_Oinductive__invariant_Ocong,axiom,
! [V: $tType,L: $tType,R: $tType] :
( ( inductive_invariant @ R @ L @ V )
= ( inductive_invariant @ R @ L @ V ) ) ).
% substitution.inductive_invariant.cong
thf(fact_85_substitution_Oexecution_Ocong,axiom,
! [V: $tType,L: $tType,R: $tType] :
( ( execution @ R @ L @ V )
= ( execution @ R @ L @ V ) ) ).
% substitution.execution.cong
thf(fact_86_substitution_Onice__ind__inv__is__inductive__invariant,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( inductive_invariant @ R @ L @ V @ Subst
@ ^ [S4: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( domain398919503obally @ R @ L @ V @ S4 )
& ( subsum380726323obally @ R @ L @ V @ S4 ) ) ) ) ).
% substitution.nice_ind_inv_is_inductive_invariant
thf(fact_87_substitution_Ostep__preserves___092_060S_062_092_060_094sub_062G__and___092_060A_062_092_060_094sub_062G_I2_J,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( ( domain398919503obally @ R @ L @ V @ S )
=> ( ( subsum380726323obally @ R @ L @ V @ S )
=> ( subsum380726323obally @ R @ L @ V @ S2 ) ) ) ) ) ).
% substitution.step_preserves_\<S>\<^sub>G_and_\<A>\<^sub>G(2)
thf(fact_88_substitution_Ostep__preserves___092_060S_062_092_060_094sub_062G__and___092_060A_062_092_060_094sub_062G_I1_J,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( ( domain398919503obally @ R @ L @ V @ S )
=> ( ( subsum380726323obally @ R @ L @ V @ S )
=> ( domain398919503obally @ R @ L @ V @ S2 ) ) ) ) ) ).
% substitution.step_preserves_\<S>\<^sub>G_and_\<A>\<^sub>G(1)
thf(fact_89_substitution_Odomains__subsume__globally__def,axiom,
! [L: $tType,V: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( domain398919503obally @ R @ L @ V @ S )
= ( ! [R6: R,Ls2: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
( ( ( S @ R6 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Ls2 ) )
=> ( domains_subsume @ L @ R @ V @ Ls2 ) ) ) ) ) ).
% substitution.domains_subsume_globally_def
thf(fact_90_substitution_Oreachability__closed__under__execution__step,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( reachable @ R @ L @ V @ Subst @ S2 ) ) ) ) ).
% substitution.reachability_closed_under_execution_step
thf(fact_91_substitution_Oreachable__imp___092_060S_062_092_060_094sub_062G,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
=> ( domain398919503obally @ R @ L @ V @ S ) ) ) ).
% substitution.reachable_imp_\<S>\<^sub>G
thf(fact_92_substitution_Oinductive__invariant__is__execution__invariant,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),P: ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) > $o] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
=> ( ( inductive_invariant @ R @ L @ V @ Subst @ P )
=> ( P @ S ) ) ) ) ).
% substitution.inductive_invariant_is_execution_invariant
thf(fact_93_substitution_Osubsumes__accessible__globallyI,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ! [R_1: R,Sigma_1: L > ( option @ ( val @ R @ L @ V ) ),Tau_1: L > ( option @ ( val @ R @ L @ V ) ),E_1: expr @ R @ L @ V,R_2: R,Sigma_2: L > ( option @ ( val @ R @ L @ V ) ),Tau_2: L > ( option @ ( val @ R @ L @ V ) ),E_2: expr @ R @ L @ V] :
( ( ( S @ R_1 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma_1 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau_1 @ E_1 ) ) ) )
=> ( ( ( S @ R_2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma_2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau_2 @ E_2 ) ) ) )
=> ( subsumes_accessible @ R @ L @ V @ R_1 @ R_2 @ S ) ) )
=> ( subsum380726323obally @ R @ L @ V @ S ) ) ) ).
% substitution.subsumes_accessible_globallyI
thf(fact_94_join__and__local__commute,axiom,
! [S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R5: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,Ls: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ),Sigma3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v] :
( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) )
=> ( ( S_22
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Ls ) ) )
=> ( ( R2 != R3 )
=> ( ( R3 != R5 )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ R3 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ Ls ) ) )
=> ( ( ( S_22 @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) )
=> ( ( ( S_22 @ R5 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ).
% join_and_local_commute
thf(fact_95_SLC__join,axiom,
! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R5: r,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),Sigma3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v,R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R5 ) ) ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) )
=> ( ( ( S_1 @ R5 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ).
% SLC_join
thf(fact_96_revision__step__relaxed_Ojoin,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R3: r,Sigma3: l > ( option @ ( val @ r @ l @ v ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
=> ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ) ).
% revision_step_relaxed.join
thf(fact_97_reachable__imp__identifiers__finite_I1_J,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( finite_finite2 @ r @ ( rID_G @ r @ l @ v @ S ) ) ) ).
% reachable_imp_identifiers_finite(1)
thf(fact_98_revision__step_Ojoin,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R3: r,Sigma3: l > ( option @ ( val @ r @ l @ v ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
=> ( revision_step @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ) ).
% revision_step.join
thf(fact_99_empty__map__finite_I3_J,axiom,
! [H: $tType,I: $tType,G2: $tType] :
( finite_finite2 @ G2
@ ( rID_G @ G2 @ H @ I
@ ^ [X: G2] : ( none @ ( product_prod @ ( H > ( option @ ( val @ G2 @ H @ I ) ) ) @ ( product_prod @ ( H > ( option @ ( val @ G2 @ H @ I ) ) ) @ ( expr @ G2 @ H @ I ) ) ) ) ) ) ).
% empty_map_finite(3)
thf(fact_100_rid__inf,axiom,
~ ( finite_finite2 @ r @ ( top_top @ ( set @ r ) ) ) ).
% rid_inf
thf(fact_101_RID_092_060_094sub_062G__finite__invariant,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( ( finite_finite2 @ r @ ( rID_G @ r @ l @ v @ S ) )
=> ( finite_finite2 @ r @ ( rID_G @ r @ l @ v @ S2 ) ) ) ) ).
% RID\<^sub>G_finite_invariant
thf(fact_102_finite__state__imp__restriction__finite_I1_J,axiom,
! [C: $tType,A: $tType,B: $tType,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
( ( finite_finite2 @ A @ ( rID_G @ A @ B @ C @ S ) )
=> ( finite_finite2 @ A @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ) ).
% finite_state_imp_restriction_finite(1)
thf(fact_103_subsumes__accessible__globallyI,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ! [R_1: r,Sigma_1: l > ( option @ ( val @ r @ l @ v ) ),Tau_1: l > ( option @ ( val @ r @ l @ v ) ),E_1: expr @ r @ l @ v,R_2: r,Sigma_2: l > ( option @ ( val @ r @ l @ v ) ),Tau_2: l > ( option @ ( val @ r @ l @ v ) ),E_2: expr @ r @ l @ v] :
( ( ( S @ R_1 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma_1 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau_1 @ E_1 ) ) ) )
=> ( ( ( S @ R_2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma_2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau_2 @ E_2 ) ) ) )
=> ( subsumes_accessible @ r @ l @ v @ R_1 @ R_2 @ S ) ) )
=> ( subsum380726323obally @ r @ l @ v @ S ) ) ).
% subsumes_accessible_globallyI
thf(fact_104_rjoin__deterministic,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,R3: r,Sigma3: l > ( option @ ( val @ r @ l @ v ) ),Tau3: l > ( option @ ( val @ r @ l @ v ) ),V2: val @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( rjoin @ r @ l @ v @ ( ve @ r @ l @ v @ ( rid @ r @ l @ v @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma3 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau3 @ ( ve @ r @ l @ v @ V2 ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
= ( S2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Tau2 @ Tau3 ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) ) ) ) ).
% rjoin_deterministic
thf(fact_105_substitution_ORID_092_060_094sub_062G__finite__invariant,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( ( finite_finite2 @ R @ ( rID_G @ R @ L @ V @ S ) )
=> ( finite_finite2 @ R @ ( rID_G @ R @ L @ V @ S2 ) ) ) ) ) ).
% substitution.RID\<^sub>G_finite_invariant
thf(fact_106_substitution_Oreachable__imp__identifiers__finite_I1_J,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
=> ( finite_finite2 @ R @ ( rID_G @ R @ L @ V @ S ) ) ) ) ).
% substitution.reachable_imp_identifiers_finite(1)
thf(fact_107_substitution_Oempty__map__finite_I3_J,axiom,
! [R: $tType,L: $tType,V: $tType,H: $tType,I: $tType,G2: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( finite_finite2 @ G2
@ ( rID_G @ G2 @ H @ I
@ ^ [X: G2] : ( none @ ( product_prod @ ( H > ( option @ ( val @ G2 @ H @ I ) ) ) @ ( product_prod @ ( H > ( option @ ( val @ G2 @ H @ I ) ) ) @ ( expr @ G2 @ H @ I ) ) ) ) ) ) ) ).
% substitution.empty_map_finite(3)
thf(fact_108_substitution_Ofinite__state__imp__restriction__finite_I1_J,axiom,
! [V: $tType,L: $tType,R: $tType,C: $tType,A: $tType,B: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( finite_finite2 @ A @ ( rID_G @ A @ B @ C @ S ) )
=> ( finite_finite2 @ A @ ( rID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ) ) ).
% substitution.finite_state_imp_restriction_finite(1)
thf(fact_109_substitution_Orevision__step_Ojoin,axiom,
! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R3: R,Sigma3: L > ( option @ ( val @ R @ L @ V ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
=> ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ) ).
% substitution.revision_step.join
thf(fact_110_substitution_Orjoin__deterministic,axiom,
! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R3: R,Sigma3: L > ( option @ ( val @ R @ L @ V ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
= ( S2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ) ) ).
% substitution.rjoin_deterministic
thf(fact_111_substitution_Orevision__step__relaxed_Ojoin,axiom,
! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R3: R,Sigma3: L > ( option @ ( val @ R @ L @ V ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R3 ) ) ) ) ) ) ) )
=> ( ( ( S @ R3 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
=> ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R3 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) ) ) ) ).
% substitution.revision_step_relaxed.join
thf(fact_112_substitution_OSLC__join,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R5: R,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),Sigma3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V,R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) )
=> ( ( ( S_1 @ R5 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ).
% substitution.SLC_join
thf(fact_113_substitution_Ojoin__and__local__commute,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),Tau3: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,R5: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,Ls: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ),Sigma3: L > ( option @ ( val @ R @ L @ V ) ),V2: val @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( S_2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) )
=> ( ( S_22
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Ls ) ) )
=> ( ( R2 != R3 )
=> ( ( R3 != R5 )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Tau2 @ Tau3 ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) @ R5 @ ( none @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ R3 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ Ls ) ) )
=> ( ( ( S_22 @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( rjoin @ R @ L @ V @ ( ve @ R @ L @ V @ ( rid @ R @ L @ V @ R5 ) ) ) ) ) ) ) )
=> ( ( ( S_22 @ R5 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma3 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau3 @ ( ve @ R @ L @ V @ V2 ) ) ) ) )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ) ).
% substitution.join_and_local_commute
thf(fact_114_finite__Collect__subsets,axiom,
! [A: $tType,A4: set @ A] :
( ( finite_finite2 @ A @ A4 )
=> ( finite_finite2 @ ( set @ A )
@ ( collect @ ( set @ A )
@ ^ [B4: set @ A] : ( ord_less_eq @ ( set @ A ) @ B4 @ A4 ) ) ) ) ).
% finite_Collect_subsets
thf(fact_115_reachable__imp__identifiers__available_I1_J,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( ~ ( finite_finite2 @ r @ ( top_top @ ( set @ r ) ) )
=> ? [R7: r] :
~ ( member @ r @ R7 @ ( rID_G @ r @ l @ v @ S ) ) ) ) ).
% reachable_imp_identifiers_available(1)
thf(fact_116_finite__Collect__conjI,axiom,
! [A: $tType,P: A > $o,Q: A > $o] :
( ( ( finite_finite2 @ A @ ( collect @ A @ P ) )
| ( finite_finite2 @ A @ ( collect @ A @ Q ) ) )
=> ( finite_finite2 @ A
@ ( collect @ A
@ ^ [X: A] :
( ( P @ X )
& ( Q @ X ) ) ) ) ) ).
% finite_Collect_conjI
thf(fact_117_finite__Collect__disjI,axiom,
! [A: $tType,P: A > $o,Q: A > $o] :
( ( finite_finite2 @ A
@ ( collect @ A
@ ^ [X: A] :
( ( P @ X )
| ( Q @ X ) ) ) )
= ( ( finite_finite2 @ A @ ( collect @ A @ P ) )
& ( finite_finite2 @ A @ ( collect @ A @ Q ) ) ) ) ).
% finite_Collect_disjI
thf(fact_118_local__state__of__finite__restricted__global__state__is__finite_I1_J,axiom,
! [C: $tType,B: $tType,A: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
( ( ( S @ R3 )
= ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
=> ( ( finite_finite2 @ B @ ( rID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) )
=> ( ( R2 != R3 )
=> ( finite_finite2 @ B @ ( rID_L @ A @ B @ C @ Ls ) ) ) ) ) ).
% local_state_of_finite_restricted_global_state_is_finite(1)
thf(fact_119_finite__code,axiom,
! [A: $tType] :
( ( finite_finite @ A )
=> ( ( finite_finite2 @ A )
= ( ^ [A5: set @ A] : $true ) ) ) ).
% finite_code
thf(fact_120_finite__option__UNIV,axiom,
! [A: $tType] :
( ( finite_finite2 @ ( option @ A ) @ ( top_top @ ( set @ ( option @ A ) ) ) )
= ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ).
% finite_option_UNIV
thf(fact_121_finite__Plus__UNIV__iff,axiom,
! [A: $tType,B: $tType] :
( ( finite_finite2 @ ( sum_sum @ A @ B ) @ ( top_top @ ( set @ ( sum_sum @ A @ B ) ) ) )
= ( ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
& ( finite_finite2 @ B @ ( top_top @ ( set @ B ) ) ) ) ) ).
% finite_Plus_UNIV_iff
thf(fact_122_finite__Collect__not,axiom,
! [A: $tType,P: A > $o] :
( ( finite_finite2 @ A @ ( collect @ A @ P ) )
=> ( ( finite_finite2 @ A
@ ( collect @ A
@ ^ [X: A] :
~ ( P @ X ) ) )
= ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ) ).
% finite_Collect_not
thf(fact_123_RID_092_060_094sub_062GI_I2_J,axiom,
! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
( ( ( S @ R3 )
= ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
=> ( ( member @ B @ R2 @ ( rID_L @ A @ B @ C @ Ls ) )
=> ( member @ B @ R2 @ ( rID_G @ B @ A @ C @ S ) ) ) ) ).
% RID\<^sub>GI(2)
thf(fact_124_Finite__Set_Ofinite__set,axiom,
! [A: $tType] :
( ( finite_finite2 @ ( set @ A ) @ ( top_top @ ( set @ ( set @ A ) ) ) )
= ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ).
% Finite_Set.finite_set
thf(fact_125_finite__prod,axiom,
! [A: $tType,B: $tType] :
( ( finite_finite2 @ ( product_prod @ A @ B ) @ ( top_top @ ( set @ ( product_prod @ A @ B ) ) ) )
= ( ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
& ( finite_finite2 @ B @ ( top_top @ ( set @ B ) ) ) ) ) ).
% finite_prod
thf(fact_126_ex__new__if__finite,axiom,
! [A: $tType,A4: set @ A] :
( ~ ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
=> ( ( finite_finite2 @ A @ A4 )
=> ? [A2: A] :
~ ( member @ A @ A2 @ A4 ) ) ) ).
% ex_new_if_finite
thf(fact_127_finite__Prod__UNIV,axiom,
! [B: $tType,A: $tType] :
( ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
=> ( ( finite_finite2 @ B @ ( top_top @ ( set @ B ) ) )
=> ( finite_finite2 @ ( product_prod @ A @ B ) @ ( top_top @ ( set @ ( product_prod @ A @ B ) ) ) ) ) ) ).
% finite_Prod_UNIV
thf(fact_128_finite__fun__UNIVD2,axiom,
! [A: $tType,B: $tType] :
( ( finite_finite2 @ ( A > B ) @ ( top_top @ ( set @ ( A > B ) ) ) )
=> ( finite_finite2 @ B @ ( top_top @ ( set @ B ) ) ) ) ).
% finite_fun_UNIVD2
thf(fact_129_infinite__UNIV__char__0,axiom,
! [A: $tType] :
( ( semiring_char_0 @ A )
=> ~ ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ).
% infinite_UNIV_char_0
thf(fact_130_finite__UNIV,axiom,
! [A: $tType] :
( ( finite_finite @ A )
=> ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) ) ) ).
% finite_UNIV
thf(fact_131_finite,axiom,
! [A: $tType] :
( ( finite_finite @ A )
=> ! [A4: set @ A] : ( finite_finite2 @ A @ A4 ) ) ).
% finite
thf(fact_132_finite__set__choice,axiom,
! [B: $tType,A: $tType,A4: set @ A,P: A > B > $o] :
( ( finite_finite2 @ A @ A4 )
=> ( ! [X4: A] :
( ( member @ A @ X4 @ A4 )
=> ? [X_1: B] : ( P @ X4 @ X_1 ) )
=> ? [F2: A > B] :
! [X6: A] :
( ( member @ A @ X6 @ A4 )
=> ( P @ X6 @ ( F2 @ X6 ) ) ) ) ) ).
% finite_set_choice
thf(fact_133_pigeonhole__infinite__rel,axiom,
! [B: $tType,A: $tType,A4: set @ A,B5: set @ B,R8: A > B > $o] :
( ~ ( finite_finite2 @ A @ A4 )
=> ( ( finite_finite2 @ B @ B5 )
=> ( ! [X4: A] :
( ( member @ A @ X4 @ A4 )
=> ? [Xa: B] :
( ( member @ B @ Xa @ B5 )
& ( R8 @ X4 @ Xa ) ) )
=> ? [X4: B] :
( ( member @ B @ X4 @ B5 )
& ~ ( finite_finite2 @ A
@ ( collect @ A
@ ^ [A6: A] :
( ( member @ A @ A6 @ A4 )
& ( R8 @ A6 @ X4 ) ) ) ) ) ) ) ) ).
% pigeonhole_infinite_rel
thf(fact_134_not__finite__existsD,axiom,
! [A: $tType,P: A > $o] :
( ~ ( finite_finite2 @ A @ ( collect @ A @ P ) )
=> ? [X_12: A] : ( P @ X_12 ) ) ).
% not_finite_existsD
thf(fact_135_substitution_Oreachable__imp__identifiers__available_I1_J,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
=> ( ~ ( finite_finite2 @ R @ ( top_top @ ( set @ R ) ) )
=> ? [R7: R] :
~ ( member @ R @ R7 @ ( rID_G @ R @ L @ V @ S ) ) ) ) ) ).
% substitution.reachable_imp_identifiers_available(1)
thf(fact_136_finite__has__minimal2,axiom,
! [A: $tType] :
( ( order @ A )
=> ! [A4: set @ A,A3: A] :
( ( finite_finite2 @ A @ A4 )
=> ( ( member @ A @ A3 @ A4 )
=> ? [X4: A] :
( ( member @ A @ X4 @ A4 )
& ( ord_less_eq @ A @ X4 @ A3 )
& ! [Xa: A] :
( ( member @ A @ Xa @ A4 )
=> ( ( ord_less_eq @ A @ Xa @ X4 )
=> ( X4 = Xa ) ) ) ) ) ) ) ).
% finite_has_minimal2
thf(fact_137_finite__has__maximal2,axiom,
! [A: $tType] :
( ( order @ A )
=> ! [A4: set @ A,A3: A] :
( ( finite_finite2 @ A @ A4 )
=> ( ( member @ A @ A3 @ A4 )
=> ? [X4: A] :
( ( member @ A @ X4 @ A4 )
& ( ord_less_eq @ A @ A3 @ X4 )
& ! [Xa: A] :
( ( member @ A @ Xa @ A4 )
=> ( ( ord_less_eq @ A @ X4 @ Xa )
=> ( X4 = Xa ) ) ) ) ) ) ) ).
% finite_has_maximal2
thf(fact_138_finite__subset,axiom,
! [A: $tType,A4: set @ A,B5: set @ A] :
( ( ord_less_eq @ ( set @ A ) @ A4 @ B5 )
=> ( ( finite_finite2 @ A @ B5 )
=> ( finite_finite2 @ A @ A4 ) ) ) ).
% finite_subset
thf(fact_139_infinite__super,axiom,
! [A: $tType,S5: set @ A,T2: set @ A] :
( ( ord_less_eq @ ( set @ A ) @ S5 @ T2 )
=> ( ~ ( finite_finite2 @ A @ S5 )
=> ~ ( finite_finite2 @ A @ T2 ) ) ) ).
% infinite_super
thf(fact_140_rev__finite__subset,axiom,
! [A: $tType,B5: set @ A,A4: set @ A] :
( ( finite_finite2 @ A @ B5 )
=> ( ( ord_less_eq @ ( set @ A ) @ A4 @ B5 )
=> ( finite_finite2 @ A @ A4 ) ) ) ).
% rev_finite_subset
thf(fact_141_finite__update__induct,axiom,
! [B: $tType,A: $tType,F: A > B,C2: B,P: ( A > B ) > $o] :
( ( finite_finite2 @ A
@ ( collect @ A
@ ^ [A6: A] :
( ( F @ A6 )
!= C2 ) ) )
=> ( ( P
@ ^ [A6: A] : C2 )
=> ( ! [A2: A,B2: B,F2: A > B] :
( ( finite_finite2 @ A
@ ( collect @ A
@ ^ [C3: A] :
( ( F2 @ C3 )
!= C2 ) ) )
=> ( ( ( F2 @ A2 )
= C2 )
=> ( ( B2 != C2 )
=> ( ( P @ F2 )
=> ( P @ ( fun_upd @ A @ B @ F2 @ A2 @ B2 ) ) ) ) ) )
=> ( P @ F ) ) ) ) ).
% finite_update_induct
thf(fact_142_substitution_Olocal__state__of__finite__restricted__global__state__is__finite_I1_J,axiom,
! [V: $tType,L: $tType,R: $tType,C: $tType,B: $tType,A: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R3 )
= ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
=> ( ( finite_finite2 @ B @ ( rID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) )
=> ( ( R2 != R3 )
=> ( finite_finite2 @ B @ ( rID_L @ A @ B @ C @ Ls ) ) ) ) ) ) ).
% substitution.local_state_of_finite_restricted_global_state_is_finite(1)
thf(fact_143_SLC__ifTrue,axiom,
! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E1: expr @ r @ l @ v,E22: expr @ r @ l @ v,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ite @ r @ l @ v @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ t ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ E1 ) ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ).
% SLC_ifTrue
thf(fact_144_SLC__ifFalse,axiom,
! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E1: expr @ r @ l @ v,E22: expr @ r @ l @ v,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ite @ r @ l @ v @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ f ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ E22 ) ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ).
% SLC_ifFalse
thf(fact_145_expr_Oinject_I7_J,axiom,
! [V: $tType,L: $tType,R: $tType,X7: expr @ R @ L @ V,Y7: expr @ R @ L @ V] :
( ( ( rfork @ R @ L @ V @ X7 )
= ( rfork @ R @ L @ V @ Y7 ) )
= ( X7 = Y7 ) ) ).
% expr.inject(7)
thf(fact_146_val_Oinject_I4_J,axiom,
! [V: $tType,L: $tType,R: $tType,X42: R,Y4: R] :
( ( ( rid @ R @ L @ V @ X42 )
= ( rid @ R @ L @ V @ Y4 ) )
= ( X42 = Y4 ) ) ).
% val.inject(4)
thf(fact_147_expr_Oinject_I1_J,axiom,
! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,Y1: val @ R @ L @ V] :
( ( ( ve @ R @ L @ V @ X1 )
= ( ve @ R @ L @ V @ Y1 ) )
= ( X1 = Y1 ) ) ).
% expr.inject(1)
thf(fact_148_injective__cntxt,axiom,
! [C: $tType,B: $tType,A: $tType,E3: cntxt @ A @ B @ C,E1: expr @ A @ B @ C,E22: expr @ A @ B @ C] :
( ( ( plug @ A @ B @ C @ E3 @ E1 )
= ( plug @ A @ B @ C @ E3 @ E22 ) )
= ( E1 = E22 ) ) ).
% injective_cntxt
thf(fact_149_val_Oinject_I1_J,axiom,
! [V: $tType,L: $tType,R: $tType,X1: const,Y1: const] :
( ( ( cv @ R @ L @ V @ X1 )
= ( cv @ R @ L @ V @ Y1 ) )
= ( X1 = Y1 ) ) ).
% val.inject(1)
thf(fact_150_expr_Oinject_I8_J,axiom,
! [V: $tType,L: $tType,R: $tType,X8: expr @ R @ L @ V,Y8: expr @ R @ L @ V] :
( ( ( rjoin @ R @ L @ V @ X8 )
= ( rjoin @ R @ L @ V @ Y8 ) )
= ( X8 = Y8 ) ) ).
% expr.inject(8)
thf(fact_151_revision__step_OifFalse,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E1: expr @ r @ l @ v,E22: expr @ r @ l @ v] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ite @ r @ l @ v @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ f ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( revision_step @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ E22 ) ) ) ) ) ) ) ).
% revision_step.ifFalse
thf(fact_152_revision__step_OifTrue,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E1: expr @ r @ l @ v,E22: expr @ r @ l @ v] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ite @ r @ l @ v @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ t ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( revision_step @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ E1 ) ) ) ) ) ) ) ).
% revision_step.ifTrue
thf(fact_153_revision__step__relaxed_OifFalse,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E1: expr @ r @ l @ v,E22: expr @ r @ l @ v] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ite @ r @ l @ v @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ f ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ E22 ) ) ) ) ) ) ) ).
% revision_step_relaxed.ifFalse
thf(fact_154_revision__step__relaxed_OifTrue,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E1: expr @ r @ l @ v,E22: expr @ r @ l @ v] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ite @ r @ l @ v @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ t ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ E1 ) ) ) ) ) ) ) ).
% revision_step_relaxed.ifTrue
thf(fact_155_ifFalse__deterministic,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E1: expr @ r @ l @ v,E22: expr @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ite @ r @ l @ v @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ f ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
= ( S2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ E22 ) ) ) ) ) ) ) ) ).
% ifFalse_deterministic
thf(fact_156_ifTrue__deterministic,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,E1: expr @ r @ l @ v,E22: expr @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ite @ r @ l @ v @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ t ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
= ( S2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ E1 ) ) ) ) ) ) ) ) ).
% ifTrue_deterministic
thf(fact_157_expr_Odistinct_I35_J,axiom,
! [V: $tType,L: $tType,R: $tType,X31: expr @ R @ L @ V,X32: expr @ R @ L @ V,X33: expr @ R @ L @ V,X8: expr @ R @ L @ V] :
( ( ite @ R @ L @ V @ X31 @ X32 @ X33 )
!= ( rjoin @ R @ L @ V @ X8 ) ) ).
% expr.distinct(35)
thf(fact_158_expr_Odistinct_I33_J,axiom,
! [V: $tType,L: $tType,R: $tType,X31: expr @ R @ L @ V,X32: expr @ R @ L @ V,X33: expr @ R @ L @ V,X7: expr @ R @ L @ V] :
( ( ite @ R @ L @ V @ X31 @ X32 @ X33 )
!= ( rfork @ R @ L @ V @ X7 ) ) ).
% expr.distinct(33)
thf(fact_159_expr_Odistinct_I3_J,axiom,
! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,X31: expr @ R @ L @ V,X32: expr @ R @ L @ V,X33: expr @ R @ L @ V] :
( ( ve @ R @ L @ V @ X1 )
!= ( ite @ R @ L @ V @ X31 @ X32 @ X33 ) ) ).
% expr.distinct(3)
thf(fact_160_const_Oexhaust,axiom,
! [Y: const] :
( ( Y != unit )
=> ( ( Y != f )
=> ( Y = t ) ) ) ).
% const.exhaust
thf(fact_161_const_Oinduct,axiom,
! [P: const > $o,Const: const] :
( ( P @ unit )
=> ( ( P @ f )
=> ( ( P @ t )
=> ( P @ Const ) ) ) ) ).
% const.induct
thf(fact_162_const_Odistinct_I1_J,axiom,
unit != f ).
% const.distinct(1)
thf(fact_163_const_Odistinct_I3_J,axiom,
unit != t ).
% const.distinct(3)
thf(fact_164_substitution_Orevision__step_OifTrue,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E1: expr @ R @ L @ V,E22: expr @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ite @ R @ L @ V @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ t ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ E1 ) ) ) ) ) ) ) ) ).
% substitution.revision_step.ifTrue
thf(fact_165_substitution_Orevision__step_OifFalse,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E1: expr @ R @ L @ V,E22: expr @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ite @ R @ L @ V @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ f ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ E22 ) ) ) ) ) ) ) ) ).
% substitution.revision_step.ifFalse
thf(fact_166_substitution_OifTrue__deterministic,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E1: expr @ R @ L @ V,E22: expr @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ite @ R @ L @ V @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ t ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
= ( S2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ E1 ) ) ) ) ) ) ) ) ) ).
% substitution.ifTrue_deterministic
thf(fact_167_substitution_OifFalse__deterministic,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E1: expr @ R @ L @ V,E22: expr @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ite @ R @ L @ V @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ f ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
= ( S2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ E22 ) ) ) ) ) ) ) ) ) ).
% substitution.ifFalse_deterministic
thf(fact_168_substitution_Orevision__step__relaxed_OifTrue,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E1: expr @ R @ L @ V,E22: expr @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ite @ R @ L @ V @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ t ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ E1 ) ) ) ) ) ) ) ) ).
% substitution.revision_step_relaxed.ifTrue
thf(fact_169_substitution_Orevision__step__relaxed_OifFalse,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E1: expr @ R @ L @ V,E22: expr @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ite @ R @ L @ V @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ f ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ E22 ) ) ) ) ) ) ) ) ).
% substitution.revision_step_relaxed.ifFalse
thf(fact_170_substitution_OSLC__ifTrue,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E1: expr @ R @ L @ V,E22: expr @ R @ L @ V,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ite @ R @ L @ V @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ t ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ E1 ) ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ).
% substitution.SLC_ifTrue
thf(fact_171_substitution_OSLC__ifFalse,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,E1: expr @ R @ L @ V,E22: expr @ R @ L @ V,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ite @ R @ L @ V @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ f ) ) @ E1 @ E22 ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ E22 ) ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ).
% substitution.SLC_ifFalse
thf(fact_172_combine_Ocases,axiom,
! [B: $tType,A: $tType,X2: product_prod @ ( A > ( option @ B ) ) @ ( product_prod @ ( A > ( option @ B ) ) @ A )] :
~ ! [F2: A > ( option @ B ),G3: A > ( option @ B ),X4: A] :
( X2
!= ( product_Pair @ ( A > ( option @ B ) ) @ ( product_prod @ ( A > ( option @ B ) ) @ A ) @ F2 @ ( product_Pair @ ( A > ( option @ B ) ) @ A @ G3 @ X4 ) ) ) ).
% combine.cases
thf(fact_173_LID__local__store_Ocases,axiom,
! [V: $tType,L: $tType,R: $tType,X2: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
~ ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E2: expr @ R @ L @ V] :
( X2
!= ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E2 ) ) ) ).
% LID_local_store.cases
thf(fact_174_LID__local__store_Oinduct,axiom,
! [V: $tType,R: $tType,L: $tType,P: ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) > $o,A0: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
( ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E2: expr @ R @ L @ V] : ( P @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ E2 ) ) )
=> ( P @ A0 ) ) ).
% LID_local_store.induct
thf(fact_175_expr_Odistinct_I13_J,axiom,
! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,X8: expr @ R @ L @ V] :
( ( ve @ R @ L @ V @ X1 )
!= ( rjoin @ R @ L @ V @ X8 ) ) ).
% expr.distinct(13)
thf(fact_176_expr_Odistinct_I11_J,axiom,
! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,X7: expr @ R @ L @ V] :
( ( ve @ R @ L @ V @ X1 )
!= ( rfork @ R @ L @ V @ X7 ) ) ).
% expr.distinct(11)
thf(fact_177_combine_Oelims,axiom,
! [B: $tType,A: $tType,X2: A > ( option @ B ),Xa2: A > ( option @ B ),Xb: A,Y: option @ B] :
( ( ( combine @ A @ B @ X2 @ Xa2 @ Xb )
= Y )
=> ( ( ( ( Xa2 @ Xb )
= ( none @ B ) )
=> ( Y
= ( X2 @ Xb ) ) )
& ( ( ( Xa2 @ Xb )
!= ( none @ B ) )
=> ( Y
= ( Xa2 @ Xb ) ) ) ) ) ).
% combine.elims
thf(fact_178_combine_Osimps,axiom,
! [B: $tType,A: $tType] :
( ( combine @ A @ B )
= ( ^ [F3: A > ( option @ B ),G4: A > ( option @ B ),X: A] :
( if @ ( option @ B )
@ ( ( G4 @ X )
= ( none @ B ) )
@ ( F3 @ X )
@ ( G4 @ X ) ) ) ) ).
% combine.simps
thf(fact_179_val_Odistinct_I5_J,axiom,
! [L: $tType,V: $tType,R: $tType,X1: const,X42: R] :
( ( cv @ R @ L @ V @ X1 )
!= ( rid @ R @ L @ V @ X42 ) ) ).
% val.distinct(5)
thf(fact_180_expr_Odistinct_I55_J,axiom,
! [V: $tType,L: $tType,R: $tType,X7: expr @ R @ L @ V,X8: expr @ R @ L @ V] :
( ( rfork @ R @ L @ V @ X7 )
!= ( rjoin @ R @ L @ V @ X8 ) ) ).
% expr.distinct(55)
thf(fact_181_empty__map__finite_I4_J,axiom,
! [J: $tType,M2: $tType,K2: $tType] :
( finite_finite2 @ J
@ ( lID_G @ K2 @ J @ M2
@ ^ [X: K2] : ( none @ ( product_prod @ ( J > ( option @ ( val @ K2 @ J @ M2 ) ) ) @ ( product_prod @ ( J > ( option @ ( val @ K2 @ J @ M2 ) ) ) @ ( expr @ K2 @ J @ M2 ) ) ) ) ) ) ).
% empty_map_finite(4)
thf(fact_182_fun__upd__upd,axiom,
! [A: $tType,B: $tType,F: A > B,X2: A,Y: B,Z: B] :
( ( fun_upd @ A @ B @ ( fun_upd @ A @ B @ F @ X2 @ Y ) @ X2 @ Z )
= ( fun_upd @ A @ B @ F @ X2 @ Z ) ) ).
% fun_upd_upd
thf(fact_183_fun__upd__triv,axiom,
! [B: $tType,A: $tType,F: A > B,X2: A] :
( ( fun_upd @ A @ B @ F @ X2 @ ( F @ X2 ) )
= F ) ).
% fun_upd_triv
thf(fact_184_RID_092_060_094sub_062L__finite__invariant,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( ( finite_finite2 @ l @ ( lID_G @ r @ l @ v @ S ) )
=> ( finite_finite2 @ l @ ( lID_G @ r @ l @ v @ S2 ) ) ) ) ).
% RID\<^sub>L_finite_invariant
thf(fact_185_reachable__imp__identifiers__finite_I2_J,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( finite_finite2 @ l @ ( lID_G @ r @ l @ v @ S ) ) ) ).
% reachable_imp_identifiers_finite(2)
thf(fact_186_reachable__imp__identifiers__available_I2_J,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( ~ ( finite_finite2 @ l @ ( top_top @ ( set @ l ) ) )
=> ? [L2: l] :
~ ( member @ l @ L2 @ ( lID_G @ r @ l @ v @ S ) ) ) ) ).
% reachable_imp_identifiers_available(2)
thf(fact_187_fun__upd__apply,axiom,
! [A: $tType,B: $tType] :
( ( fun_upd @ B @ A )
= ( ^ [F3: B > A,X: B,Y2: A,Z2: B] : ( if @ A @ ( Z2 = X ) @ Y2 @ ( F3 @ Z2 ) ) ) ) ).
% fun_upd_apply
thf(fact_188_in__restricted__global__in__unrestricted__global_I2_J,axiom,
! [C: $tType,B: $tType,A: $tType,L3: B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
( ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) )
=> ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ S ) ) ) ).
% in_restricted_global_in_unrestricted_global(2)
thf(fact_189_finite__state__imp__restriction__finite_I2_J,axiom,
! [C: $tType,A: $tType,B: $tType,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
( ( finite_finite2 @ B @ ( lID_G @ A @ B @ C @ S ) )
=> ( finite_finite2 @ B @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ) ).
% finite_state_imp_restriction_finite(2)
thf(fact_190_in__restricted__global__in__updated__global_I2_J,axiom,
! [C: $tType,A: $tType,B: $tType,L3: B,S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A,Ls: product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) )] :
( ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) )
=> ( member @ B @ L3 @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) @ Ls ) ) ) ) ) ).
% in_restricted_global_in_updated_global(2)
thf(fact_191_fun__upd__idem__iff,axiom,
! [A: $tType,B: $tType,F: A > B,X2: A,Y: B] :
( ( ( fun_upd @ A @ B @ F @ X2 @ Y )
= F )
= ( ( F @ X2 )
= Y ) ) ).
% fun_upd_idem_iff
thf(fact_192_fun__upd__twist,axiom,
! [A: $tType,B: $tType,A3: A,C2: A,M: A > B,B3: B,D: B] :
( ( A3 != C2 )
=> ( ( fun_upd @ A @ B @ ( fun_upd @ A @ B @ M @ A3 @ B3 ) @ C2 @ D )
= ( fun_upd @ A @ B @ ( fun_upd @ A @ B @ M @ C2 @ D ) @ A3 @ B3 ) ) ) ).
% fun_upd_twist
thf(fact_193_fun__upd__other,axiom,
! [B: $tType,A: $tType,Z: A,X2: A,F: A > B,Y: B] :
( ( Z != X2 )
=> ( ( fun_upd @ A @ B @ F @ X2 @ Y @ Z )
= ( F @ Z ) ) ) ).
% fun_upd_other
thf(fact_194_fun__upd__same,axiom,
! [B: $tType,A: $tType,F: B > A,X2: B,Y: A] :
( ( fun_upd @ B @ A @ F @ X2 @ Y @ X2 )
= Y ) ).
% fun_upd_same
thf(fact_195_fun__upd__idem,axiom,
! [A: $tType,B: $tType,F: B > A,X2: B,Y: A] :
( ( ( F @ X2 )
= Y )
=> ( ( fun_upd @ B @ A @ F @ X2 @ Y )
= F ) ) ).
% fun_upd_idem
thf(fact_196_fun__upd__eqD,axiom,
! [A: $tType,B: $tType,F: A > B,X2: A,Y: B,G: A > B,Z: B] :
( ( ( fun_upd @ A @ B @ F @ X2 @ Y )
= ( fun_upd @ A @ B @ G @ X2 @ Z ) )
=> ( Y = Z ) ) ).
% fun_upd_eqD
thf(fact_197_fun__upd__def,axiom,
! [B: $tType,A: $tType] :
( ( fun_upd @ A @ B )
= ( ^ [F3: A > B,A6: A,B6: B,X: A] : ( if @ B @ ( X = A6 ) @ B6 @ ( F3 @ X ) ) ) ) ).
% fun_upd_def
thf(fact_198_substitution_ORID_092_060_094sub_062L__finite__invariant,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( ( finite_finite2 @ L @ ( lID_G @ R @ L @ V @ S ) )
=> ( finite_finite2 @ L @ ( lID_G @ R @ L @ V @ S2 ) ) ) ) ) ).
% substitution.RID\<^sub>L_finite_invariant
thf(fact_199_ID__restricted__global__subset__unrestricted_I1_J,axiom,
! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R2: B] : ( ord_less_eq @ ( set @ A ) @ ( lID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) @ ( lID_G @ B @ A @ C @ S ) ) ).
% ID_restricted_global_subset_unrestricted(1)
thf(fact_200_substitution_Oreachable__imp__identifiers__finite_I2_J,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
=> ( finite_finite2 @ L @ ( lID_G @ R @ L @ V @ S ) ) ) ) ).
% substitution.reachable_imp_identifiers_finite(2)
thf(fact_201_substitution_Oempty__map__finite_I4_J,axiom,
! [R: $tType,L: $tType,V: $tType,J: $tType,M2: $tType,K2: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( finite_finite2 @ J
@ ( lID_G @ K2 @ J @ M2
@ ^ [X: K2] : ( none @ ( product_prod @ ( J > ( option @ ( val @ K2 @ J @ M2 ) ) ) @ ( product_prod @ ( J > ( option @ ( val @ K2 @ J @ M2 ) ) ) @ ( expr @ K2 @ J @ M2 ) ) ) ) ) ) ) ).
% substitution.empty_map_finite(4)
thf(fact_202_substitution_Ofinite__state__imp__restriction__finite_I2_J,axiom,
! [V: $tType,L: $tType,R: $tType,C: $tType,A: $tType,B: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: A > ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ),R2: A] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( finite_finite2 @ B @ ( lID_G @ A @ B @ C @ S ) )
=> ( finite_finite2 @ B @ ( lID_G @ A @ B @ C @ ( fun_upd @ A @ ( option @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( product_prod @ ( B > ( option @ ( val @ A @ B @ C ) ) ) @ ( expr @ A @ B @ C ) ) ) ) ) ) ) ) ) ).
% substitution.finite_state_imp_restriction_finite(2)
thf(fact_203_substitution_Oreachable__imp__identifiers__available_I2_J,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( reachable @ R @ L @ V @ Subst @ S )
=> ( ~ ( finite_finite2 @ L @ ( top_top @ ( set @ L ) ) )
=> ? [L2: L] :
~ ( member @ L @ L2 @ ( lID_G @ R @ L @ V @ S ) ) ) ) ) ).
% substitution.reachable_imp_identifiers_available(2)
thf(fact_204_only__new__introduces__lids_H,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),L3: l] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( ! [Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,V3: val @ r @ l @ v] :
( ( S @ R2 )
!= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ ( plug @ r @ l @ v @ E @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V3 ) ) ) ) ) ) )
=> ( ~ ( member @ l @ L3 @ ( lID_G @ r @ l @ v @ S ) )
=> ~ ( member @ l @ L3 @ ( lID_G @ r @ l @ v @ S2 ) ) ) ) ) ).
% only_new_introduces_lids'
thf(fact_205_valid__stepE,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( member @ ( product_prod @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) @ ( product_Pair @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ S @ S2 ) @ ( steps @ r @ l @ v @ subst ) )
=> ? [R7: r] : ( revision_step @ r @ l @ v @ subst @ R7 @ S @ S2 ) ) ).
% valid_stepE
thf(fact_206_local__state__of__finite__restricted__global__state__is__finite_I2_J,axiom,
! [C: $tType,B: $tType,A: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
( ( ( S @ R3 )
= ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
=> ( ( finite_finite2 @ A @ ( lID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) )
=> ( ( R2 != R3 )
=> ( finite_finite2 @ A @ ( lID_L @ A @ B @ C @ Ls ) ) ) ) ) ).
% local_state_of_finite_restricted_global_state_is_finite(2)
thf(fact_207_LID_092_060_094sub_062GI,axiom,
! [C: $tType,A: $tType,B: $tType,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R2: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),L3: A] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
=> ( ( member @ A @ L3 @ ( lID_L @ A @ B @ C @ Ls ) )
=> ( member @ A @ L3 @ ( lID_G @ B @ A @ C @ S ) ) ) ) ).
% LID\<^sub>GI
thf(fact_208_valid__stepI,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( member @ ( product_prod @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) @ ( product_Pair @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ S @ S2 ) @ ( steps @ r @ l @ v @ subst ) ) ) ).
% valid_stepI
thf(fact_209_maximal__execution__def,axiom,
! [E4: expr @ r @ l @ v,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( maximal_execution @ r @ l @ v @ subst @ E4 @ S @ S2 )
= ( ( execution @ r @ l @ v @ subst @ E4 @ S @ S2 )
& ~ ? [S6: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] : ( member @ ( product_prod @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) @ ( product_Pair @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ S2 @ S6 ) @ ( steps @ r @ l @ v @ subst ) ) ) ) ).
% maximal_execution_def
thf(fact_210_only__new__introduces__lids,axiom,
! [R2: r,S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
=> ( ! [Sigma: l > ( option @ ( val @ r @ l @ v ) ),Tau: l > ( option @ ( val @ r @ l @ v ) ),E: cntxt @ r @ l @ v,V3: val @ r @ l @ v] :
( ( S @ R2 )
!= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau @ ( plug @ r @ l @ v @ E @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V3 ) ) ) ) ) ) )
=> ( ord_less_eq @ ( set @ l ) @ ( lID_G @ r @ l @ v @ S2 ) @ ( lID_G @ r @ l @ v @ S ) ) ) ) ).
% only_new_introduces_lids
thf(fact_211_substitution_Osteps_Ocong,axiom,
! [V: $tType,L: $tType,R: $tType] :
( ( steps @ R @ L @ V )
= ( steps @ R @ L @ V ) ) ).
% substitution.steps.cong
thf(fact_212_expr_Odistinct_I5_J,axiom,
! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,X42: expr @ R @ L @ V] :
( ( ve @ R @ L @ V @ X1 )
!= ( ref @ R @ L @ V @ X42 ) ) ).
% expr.distinct(5)
thf(fact_213_expr_Odistinct_I41_J,axiom,
! [V: $tType,L: $tType,R: $tType,X42: expr @ R @ L @ V,X7: expr @ R @ L @ V] :
( ( ref @ R @ L @ V @ X42 )
!= ( rfork @ R @ L @ V @ X7 ) ) ).
% expr.distinct(41)
thf(fact_214_expr_Odistinct_I43_J,axiom,
! [V: $tType,L: $tType,R: $tType,X42: expr @ R @ L @ V,X8: expr @ R @ L @ V] :
( ( ref @ R @ L @ V @ X42 )
!= ( rjoin @ R @ L @ V @ X8 ) ) ).
% expr.distinct(43)
thf(fact_215_LID_092_060_094sub_062GE,axiom,
! [C: $tType,B: $tType,A: $tType,L3: A,S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) )] :
( ( member @ A @ L3 @ ( lID_G @ B @ A @ C @ S ) )
=> ~ ! [R7: B,Ls3: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) )] :
( ( ( S @ R7 )
= ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls3 ) )
=> ~ ( member @ A @ L3 @ ( lID_L @ A @ B @ C @ Ls3 ) ) ) ) ).
% LID\<^sub>GE
thf(fact_216_substitution_Ovalid__stepE,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( member @ ( product_prod @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) @ ( product_Pair @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ S @ S2 ) @ ( steps @ R @ L @ V @ Subst ) )
=> ? [R7: R] : ( revision_step @ R @ L @ V @ Subst @ R7 @ S @ S2 ) ) ) ).
% substitution.valid_stepE
thf(fact_217_substitution_Ovalid__stepI,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( member @ ( product_prod @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) @ ( product_Pair @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ S @ S2 ) @ ( steps @ R @ L @ V @ Subst ) ) ) ) ).
% substitution.valid_stepI
thf(fact_218_substitution_Oonly__new__introduces__lids_H,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),L3: L] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,V3: val @ R @ L @ V] :
( ( S @ R2 )
!= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ ( plug @ R @ L @ V @ E @ ( ref @ R @ L @ V @ ( ve @ R @ L @ V @ V3 ) ) ) ) ) ) )
=> ( ~ ( member @ L @ L3 @ ( lID_G @ R @ L @ V @ S ) )
=> ~ ( member @ L @ L3 @ ( lID_G @ R @ L @ V @ S2 ) ) ) ) ) ) ).
% substitution.only_new_introduces_lids'
thf(fact_219_substitution_Oonly__new__introduces__lids,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),R2: R,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
=> ( ! [Sigma: L > ( option @ ( val @ R @ L @ V ) ),Tau: L > ( option @ ( val @ R @ L @ V ) ),E: cntxt @ R @ L @ V,V3: val @ R @ L @ V] :
( ( S @ R2 )
!= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau @ ( plug @ R @ L @ V @ E @ ( ref @ R @ L @ V @ ( ve @ R @ L @ V @ V3 ) ) ) ) ) ) )
=> ( ord_less_eq @ ( set @ L ) @ ( lID_G @ R @ L @ V @ S2 ) @ ( lID_G @ R @ L @ V @ S ) ) ) ) ) ).
% substitution.only_new_introduces_lids
thf(fact_220_substitution_Olocal__state__of__finite__restricted__global__state__is__finite_I2_J,axiom,
! [V: $tType,L: $tType,R: $tType,C: $tType,B: $tType,A: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: B > ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ),R3: B,Ls: product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ),R2: B] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R3 )
= ( some @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) @ Ls ) )
=> ( ( finite_finite2 @ A @ ( lID_G @ B @ A @ C @ ( fun_upd @ B @ ( option @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) @ S @ R2 @ ( none @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( product_prod @ ( A > ( option @ ( val @ B @ A @ C ) ) ) @ ( expr @ B @ A @ C ) ) ) ) ) ) )
=> ( ( R2 != R3 )
=> ( finite_finite2 @ A @ ( lID_L @ A @ B @ C @ Ls ) ) ) ) ) ) ).
% substitution.local_state_of_finite_restricted_global_state_is_finite(2)
thf(fact_221_domains__subsume__def,axiom,
( ( domains_subsume @ l @ r @ v )
= ( ^ [Ls2: product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) )] : ( ord_less_eq @ ( set @ l ) @ ( lID_L @ l @ r @ v @ Ls2 ) @ ( doms @ l @ r @ v @ Ls2 ) ) ) ) ).
% domains_subsume_def
thf(fact_222_SLC__new,axiom,
! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,V2: val @ r @ l @ v,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),L3: l,R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L3 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) ) ) ) ) ) )
=> ( ~ ( member @ l @ L3 @ ( lID_G @ r @ l @ v @ S_1 ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ( ( reachable @ r @ l @ v @ subst @ S_1 )
=> ( ~ ( finite_finite2 @ l @ ( top_top @ ( set @ l ) ) )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ).
% SLC_new
thf(fact_223_terminates__in__def,axiom,
! [E4: expr @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( terminates_in @ r @ l @ v @ subst @ E4 @ S2 )
= ( ? [S4: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] : ( maximal_execution @ r @ l @ v @ subst @ E4 @ S4 @ S2 ) ) ) ).
% terminates_in_def
thf(fact_224_revision__step_Onew,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,V2: val @ r @ l @ v,L3: l] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
=> ( ~ ( member @ l @ L3 @ ( lID_G @ r @ l @ v @ S ) )
=> ( revision_step @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L3 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) ) ) ) ) ) ) ) ) ).
% revision_step.new
thf(fact_225_new__pseudodeterministic,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,V2: val @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ref @ r @ l @ v @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
= ( ? [L4: l] :
( ~ ( member @ l @ L4 @ ( lID_G @ r @ l @ v @ S ) )
& ( S2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L4 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L4 ) ) ) ) ) ) ) ) ) ) ) ) ).
% new_pseudodeterministic
thf(fact_226_val_Odistinct_I3_J,axiom,
! [R: $tType,V: $tType,L: $tType,X1: const,X34: L] :
( ( cv @ R @ L @ V @ X1 )
!= ( loc @ L @ R @ V @ X34 ) ) ).
% val.distinct(3)
thf(fact_227_val_Odistinct_I15_J,axiom,
! [L: $tType,V: $tType,R: $tType,X34: L,X42: R] :
( ( loc @ L @ R @ V @ X34 )
!= ( rid @ R @ L @ V @ X42 ) ) ).
% val.distinct(15)
thf(fact_228_substitution_Omaximal__execution_Ocong,axiom,
! [V: $tType,L: $tType,R: $tType] :
( ( maximal_execution @ R @ L @ V )
= ( maximal_execution @ R @ L @ V ) ) ).
% substitution.maximal_execution.cong
thf(fact_229_substitution_Odomains__subsume__def,axiom,
! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),Ls: product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( domains_subsume @ L @ R @ V @ Ls )
= ( ord_less_eq @ ( set @ L ) @ ( lID_L @ L @ R @ V @ Ls ) @ ( doms @ L @ R @ V @ Ls ) ) ) ) ).
% substitution.domains_subsume_def
thf(fact_230_substitution_Onew__pseudodeterministic,axiom,
! [V: $tType,R: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,V2: val @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ref @ R @ L @ V @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
= ( ? [L4: L] :
( ~ ( member @ L @ L4 @ ( lID_G @ R @ L @ V @ S ) )
& ( S2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L4 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L4 ) ) ) ) ) ) ) ) ) ) ) ) ) ).
% substitution.new_pseudodeterministic
thf(fact_231_substitution_Orevision__step_Onew,axiom,
! [R: $tType,V: $tType,L: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,V2: val @ R @ L @ V,L3: L] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ref @ R @ L @ V @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
=> ( ~ ( member @ L @ L3 @ ( lID_G @ R @ L @ V @ S ) )
=> ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L3 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L3 ) ) ) ) ) ) ) ) ) ) ) ).
% substitution.revision_step.new
thf(fact_232_substitution_Omaximal__execution__def,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),E4: expr @ R @ L @ V,S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( maximal_execution @ R @ L @ V @ Subst @ E4 @ S @ S2 )
= ( ( execution @ R @ L @ V @ Subst @ E4 @ S @ S2 )
& ~ ? [S6: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] : ( member @ ( product_prod @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) ) @ ( product_Pair @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ ( R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) ) @ S2 @ S6 ) @ ( steps @ R @ L @ V @ Subst ) ) ) ) ) ).
% substitution.maximal_execution_def
thf(fact_233_substitution_OSLC__new,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,V2: val @ R @ L @ V,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),L3: L,R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( ref @ R @ L @ V @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L3 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L3 ) ) ) ) ) ) ) )
=> ( ~ ( member @ L @ L3 @ ( lID_G @ R @ L @ V @ S_1 ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ( ( reachable @ R @ L @ V @ Subst @ S_1 )
=> ( ~ ( finite_finite2 @ L @ ( top_top @ ( set @ L ) ) )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ) ) ).
% substitution.SLC_new
thf(fact_234_revision__step__relaxed_Oset,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,L3: l,V2: val @ r @ l @ v] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( assign @ r @ l @ v @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
=> ( revisi1433015572elaxed @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L3 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) ) ) ).
% revision_step_relaxed.set
thf(fact_235_substitution_Orevision__step__relaxed_Oset,axiom,
! [R: $tType,L: $tType,V: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,L3: L,V2: val @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( assign @ R @ L @ V @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L3 ) ) @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
=> ( revisi1433015572elaxed @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L3 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) ) ) ) ).
% substitution.revision_step_relaxed.set
thf(fact_236_substitution_Oterminates__in_Ocong,axiom,
! [V: $tType,L: $tType,R: $tType] :
( ( terminates_in @ R @ L @ V )
= ( terminates_in @ R @ L @ V ) ) ).
% substitution.terminates_in.cong
thf(fact_237_expr_Odistinct_I9_J,axiom,
! [V: $tType,L: $tType,R: $tType,X1: val @ R @ L @ V,X61: expr @ R @ L @ V,X62: expr @ R @ L @ V] :
( ( ve @ R @ L @ V @ X1 )
!= ( assign @ R @ L @ V @ X61 @ X62 ) ) ).
% expr.distinct(9)
thf(fact_238_expr_Odistinct_I51_J,axiom,
! [V: $tType,L: $tType,R: $tType,X61: expr @ R @ L @ V,X62: expr @ R @ L @ V,X7: expr @ R @ L @ V] :
( ( assign @ R @ L @ V @ X61 @ X62 )
!= ( rfork @ R @ L @ V @ X7 ) ) ).
% expr.distinct(51)
thf(fact_239_expr_Odistinct_I53_J,axiom,
! [V: $tType,L: $tType,R: $tType,X61: expr @ R @ L @ V,X62: expr @ R @ L @ V,X8: expr @ R @ L @ V] :
( ( assign @ R @ L @ V @ X61 @ X62 )
!= ( rjoin @ R @ L @ V @ X8 ) ) ).
% expr.distinct(53)
thf(fact_240_substitution_Oterminates__in__def,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),E4: expr @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( terminates_in @ R @ L @ V @ Subst @ E4 @ S2 )
= ( ? [S4: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] : ( maximal_execution @ R @ L @ V @ Subst @ E4 @ S4 @ S2 ) ) ) ) ).
% substitution.terminates_in_def
thf(fact_241_SLC__set,axiom,
! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,L3: l,V2: val @ r @ l @ v,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( assign @ r @ l @ v @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L3 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) )
=> ( ( member @ l @ L3 @ ( dom @ l @ ( val @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ).
% SLC_set
thf(fact_242_revision__step_Oset,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,L3: l,V2: val @ r @ l @ v] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( assign @ r @ l @ v @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
=> ( ( member @ l @ L3 @ ( dom @ l @ ( val @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 ) ) )
=> ( revision_step @ r @ l @ v @ subst @ R2 @ S @ ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L3 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) ) ) ) ).
% revision_step.set
thf(fact_243_dom__const,axiom,
! [B: $tType,A: $tType,F: A > B] :
( ( dom @ A @ B
@ ^ [X: A] : ( some @ B @ ( F @ X ) ) )
= ( top_top @ ( set @ A ) ) ) ).
% dom_const
thf(fact_244_set__deterministic,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,L3: l,V2: val @ r @ l @ v,S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( assign @ r @ l @ v @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) @ ( ve @ r @ l @ v @ V2 ) ) ) ) ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R2 @ S @ S2 )
= ( ( member @ l @ L3 @ ( dom @ l @ ( val @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 ) ) )
& ( S2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ ( fun_upd @ l @ ( option @ ( val @ r @ l @ v ) ) @ Tau2 @ L3 @ ( some @ ( val @ r @ l @ v ) @ V2 ) ) @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( cv @ r @ l @ v @ unit ) ) ) ) ) ) ) ) ) ) ) ).
% set_deterministic
thf(fact_245_domD,axiom,
! [A: $tType,B: $tType,A3: A,M: A > ( option @ B )] :
( ( member @ A @ A3 @ ( dom @ A @ B @ M ) )
=> ? [B2: B] :
( ( M @ A3 )
= ( some @ B @ B2 ) ) ) ).
% domD
thf(fact_246_domI,axiom,
! [A: $tType,B: $tType,M: B > ( option @ A ),A3: B,B3: A] :
( ( ( M @ A3 )
= ( some @ A @ B3 ) )
=> ( member @ B @ A3 @ ( dom @ B @ A @ M ) ) ) ).
% domI
thf(fact_247_finite__map__freshness,axiom,
! [A: $tType,B: $tType,F: A > ( option @ B )] :
( ( finite_finite2 @ A @ ( dom @ A @ B @ F ) )
=> ( ~ ( finite_finite2 @ A @ ( top_top @ ( set @ A ) ) )
=> ? [X4: A] :
( ( F @ X4 )
= ( none @ B ) ) ) ) ).
% finite_map_freshness
thf(fact_248_dom__def,axiom,
! [B: $tType,A: $tType] :
( ( dom @ A @ B )
= ( ^ [M3: A > ( option @ B )] :
( collect @ A
@ ^ [A6: A] :
( ( M3 @ A6 )
!= ( none @ B ) ) ) ) ) ).
% dom_def
thf(fact_249_domIff,axiom,
! [A: $tType,B: $tType,A3: A,M: A > ( option @ B )] :
( ( member @ A @ A3 @ ( dom @ A @ B @ M ) )
= ( ( M @ A3 )
!= ( none @ B ) ) ) ).
% domIff
thf(fact_250_substitution_Oset__deterministic,axiom,
! [R: $tType,L: $tType,V: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,L3: L,V2: val @ R @ L @ V,S2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( assign @ R @ L @ V @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L3 ) ) @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ S2 )
= ( ( member @ L @ L3 @ ( dom @ L @ ( val @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 ) ) )
& ( S2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L3 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) ) ) ) ) ) ).
% substitution.set_deterministic
thf(fact_251_substitution_Orevision__step_Oset,axiom,
! [R: $tType,L: $tType,V: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,L3: L,V2: val @ R @ L @ V] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( assign @ R @ L @ V @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L3 ) ) @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
=> ( ( member @ L @ L3 @ ( dom @ L @ ( val @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 ) ) )
=> ( revision_step @ R @ L @ V @ Subst @ R2 @ S @ ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L3 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) ) ) ) ) ).
% substitution.revision_step.set
thf(fact_252_substitution_OSLC__set,axiom,
! [V: $tType,L: $tType,R: $tType,Subst: ( expr @ R @ L @ V ) > V > ( expr @ R @ L @ V ) > ( expr @ R @ L @ V ),S_1: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R2: R,Sigma2: L > ( option @ ( val @ R @ L @ V ) ),Tau2: L > ( option @ ( val @ R @ L @ V ) ),E3: cntxt @ R @ L @ V,L3: L,V2: val @ R @ L @ V,S_2: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),R3: R,S_22: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( substitution @ R @ L @ V @ Subst )
=> ( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ Tau2 @ ( plug @ R @ L @ V @ E3 @ ( assign @ R @ L @ V @ ( ve @ R @ L @ V @ ( loc @ L @ R @ V @ L3 ) ) @ ( ve @ R @ L @ V @ V2 ) ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ R @ ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) @ Sigma2 @ ( product_Pair @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) @ ( fun_upd @ L @ ( option @ ( val @ R @ L @ V ) ) @ Tau2 @ L3 @ ( some @ ( val @ R @ L @ V ) @ V2 ) ) @ ( plug @ R @ L @ V @ E3 @ ( ve @ R @ L @ V @ ( cv @ R @ L @ V @ unit ) ) ) ) ) ) ) )
=> ( ( member @ L @ L3 @ ( dom @ L @ ( val @ R @ L @ V ) @ ( combine @ L @ ( val @ R @ L @ V ) @ Sigma2 @ Tau2 ) ) )
=> ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) ),S_32: R > ( option @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( product_prod @ ( L > ( option @ ( val @ R @ L @ V ) ) ) @ ( expr @ R @ L @ V ) ) ) )] :
( ( eq_states @ R @ L @ V @ S_3 @ S_32 )
& ( ( revision_step @ R @ L @ V @ Subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ R @ L @ V @ Subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ) ).
% substitution.SLC_set
thf(fact_253_reachability__closed__under__execution,axiom,
! [S: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( reachable @ r @ l @ v @ subst @ S )
=> ( ( member @ ( product_prod @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) ) @ ( product_Pair @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ S @ S2 ) @ ( transitive_rtrancl @ ( r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) ) @ ( steps @ r @ l @ v @ subst ) ) )
=> ( reachable @ r @ l @ v @ subst @ S2 ) ) ) ).
% reachability_closed_under_execution
thf(fact_254_SLC__get,axiom,
! [S_1: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R2: r,Sigma2: l > ( option @ ( val @ r @ l @ v ) ),Tau2: l > ( option @ ( val @ r @ l @ v ) ),E3: cntxt @ r @ l @ v,L3: l,S_2: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),R3: r,S_22: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( ( S_1 @ R2 )
= ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( read @ r @ l @ v @ ( ve @ r @ l @ v @ ( loc @ l @ r @ v @ L3 ) ) ) ) ) ) ) )
=> ( ( S_2
= ( fun_upd @ r @ ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ) @ S_1 @ R2 @ ( some @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) @ Sigma2 @ ( product_Pair @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) @ Tau2 @ ( plug @ r @ l @ v @ E3 @ ( ve @ r @ l @ v @ ( the @ ( val @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 @ L3 ) ) ) ) ) ) ) ) )
=> ( ( member @ l @ L3 @ ( dom @ l @ ( val @ r @ l @ v ) @ ( combine @ l @ ( val @ r @ l @ v ) @ Sigma2 @ Tau2 ) ) )
=> ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_1 @ S_22 )
=> ( ( R2 != R3 )
=> ? [S_3: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) ),S_32: r > ( option @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( product_prod @ ( l > ( option @ ( val @ r @ l @ v ) ) ) @ ( expr @ r @ l @ v ) ) ) )] :
( ( eq_states @ r @ l @ v @ S_3 @ S_32 )
& ( ( revision_step @ r @ l @ v @ subst @ R3 @ S_2 @ S_3 )
| ( S_2 = S_3 ) )
& ( ( revision_step @ r @ l @ v @ subst @ R2 @ S_22 @ S_32 )
| ( S_22 = S_32 ) ) ) ) ) ) ) ) ).
% SLC_get
% Type constructors (9)
thf(tcon_fun___Finite__Set_Ofinite,axiom,
! [A7: $tType,A8: $tType] :
( ( ( finite_finite @ A7 )
& ( finite_finite @ A8 ) )
=> ( finite_finite @ ( A7 > A8 ) ) ) ).
thf(tcon_fun___Orderings_Oorder,axiom,
! [A7: $tType,A8: $tType] :
( ( order @ A8 )
=> ( order @ ( A7 > A8 ) ) ) ).
thf(tcon_Set_Oset___Finite__Set_Ofinite_1,axiom,
! [A7: $tType] :
( ( finite_finite @ A7 )
=> ( finite_finite @ ( set @ A7 ) ) ) ).
thf(tcon_Set_Oset___Orderings_Oorder_2,axiom,
! [A7: $tType] : ( order @ ( set @ A7 ) ) ).
thf(tcon_HOL_Obool___Finite__Set_Ofinite_3,axiom,
finite_finite @ $o ).
thf(tcon_HOL_Obool___Orderings_Oorder_4,axiom,
order @ $o ).
thf(tcon_Sum__Type_Osum___Finite__Set_Ofinite_5,axiom,
! [A7: $tType,A8: $tType] :
( ( ( finite_finite @ A7 )
& ( finite_finite @ A8 ) )
=> ( finite_finite @ ( sum_sum @ A7 @ A8 ) ) ) ).
thf(tcon_Option_Ooption___Finite__Set_Ofinite_6,axiom,
! [A7: $tType] :
( ( finite_finite @ A7 )
=> ( finite_finite @ ( option @ A7 ) ) ) ).
thf(tcon_Product__Type_Oprod___Finite__Set_Ofinite_7,axiom,
! [A7: $tType,A8: $tType] :
( ( ( finite_finite @ A7 )
& ( finite_finite @ A8 ) )
=> ( finite_finite @ ( product_prod @ A7 @ A8 ) ) ) ).
% Helper facts (3)
thf(help_If_3_1_T,axiom,
! [P: $o] :
( ( P = $true )
| ( P = $false ) ) ).
thf(help_If_2_1_T,axiom,
! [A: $tType,X2: A,Y: A] :
( ( if @ A @ $false @ X2 @ Y )
= Y ) ).
thf(help_If_1_1_T,axiom,
! [A: $tType,X2: A,Y: A] :
( ( if @ A @ $true @ X2 @ Y )
= X2 ) ).
% Conjectures (1)
thf(conj_0,conjecture,
r3 != right_forkee ).
%------------------------------------------------------------------------------