Module library:list
Builds on library:host
e ::= ...
| nil
| cons(e, e)
| null(e)
| head(e)
| tail(e)
ty ::= ...
| list(ty)
s ::= ...
| splitlist(string, string, e)
------------------- [P-null]
|{e}- null(E) ~~> E
------------------- [P-head]
|{e}- head(E) ~~> E
------------------- [P-tail]
|{e}- tail(E) ~~> E
------------------- [P-nil]
|{e}- nil ~~> trueE
--------------------------------- [P-cons]
|{e}- cons(E1, E2) ~~> eq(E1, E2)
Hd != Tl
----------------------------------------- [P-splitlist]
|{s}- splitlist(Hd, Tl, E) ~~>
seq(seq(assign(Hd, E),
assign(Tl, tail(var(Hd)))),
assign(Hd, head(var(Hd))))
---------------------- [P-list]
|{ty}- list(Ty) ~~> Ty
Module library:list ----------- [VR-nil] vars nil [] vars E1 Vr1 vars E2 Vr2 Vr1 ++ Vr2 = V ------------------- [VR-cons] vars cons(E1, E2) V vars E V -------------- [VR-null] vars null(E) V vars E V -------------- [VR-head] vars head(E) V vars E V -------------- [VR-tail] vars tail(E) V
Module library:list ------------------- [T-nil] ty_e G nil list(Ty) ty_e G E1 Ty ty_e G E2 list(Ty) ---------------------------- [T-cons] ty_e G cons(E1, E2) list(Ty) ty_e G E list(Ty) ------------------- [T-null] ty_e G null(E) bool ty_e G E list(Ty) ----------------- [T-head] ty_e G head(E) Ty ty_e G E list(Ty) ----------------------- [T-tail] ty_e G tail(E) list(Ty) ty_e G E list(Ty) lookup G Hd Ty lookup G Tl list(Ty) ----------------------------- [TS-splitlist] ty_s G splitlist(Hd, Tl, E) G
Module library:list
--------- [V-nil]
value nil
value E1
value E2
------------------ [V-cons]
value cons(E1, E2)
---------------- [E-nil]
eval_e G nil nil
eval_e G E1 V1
eval_e G E2 V2
---------------------------------- [E-cons]
eval_e G cons(E1, E2) cons(V1, V2)
eval_e G E nil
---------------------- [E-null-true]
eval_e G null(E) trueE
eval_e G E cons(V1, V2)
----------------------- [E-null-false]
eval_e G null(E) falseE
eval_e G E cons(V1, V2)
----------------------- [E-head]
eval_e G head(E) V1
eval_e G E cons(V1, V2)
----------------------- [E-tail]
eval_e G tail(E) V2
eval_e G E cons(V1, V2)
Hd != Tl /*Need this to prove ext_ind*/
select (Hd, VHd) GHd G
select (Tl, VTl) GTl GHd
----------------------------------------------------- [X-splitlist]
eval_s G splitlist(Hd, Tl, E) (Hd, V1)::(Tl, V2)::GTl
Click on a command or tactic to see a detailed view of its use.
Module library:list. Prove_Constraint library:host:proj_e_unique. [Show Proof] Prove_Constraint library:host:proj_e_is. [Show Proof] Prove_Constraint library:host:proj_s_unique. [Show Proof] Prove_Constraint library:host:proj_s_is. [Show Proof] Prove_Constraint library:host:proj_ty_unique. [Show Proof] Prove_Constraint library:host:proj_ty_is. [Show Proof] Add_Proj_Rel library:host:is_e. Prove_Ext_Ind library:host:is_e. [Show Proof] Prove library:host:is_e_var_or_not. [Show Proof] Prove library:host:is_e_intlit_or_not. [Show Proof] Prove library:host:is_e_trueE_or_not. [Show Proof] Prove library:host:is_e_falseE_or_not. [Show Proof] Prove library:host:is_e_add_or_not. [Show Proof] Prove library:host:is_e_eqC_or_not. [Show Proof] Prove library:host:is_e_gt_or_not. [Show Proof] Prove library:host:is_e_not_or_not. [Show Proof] Extensible_Theorem is_e_nil_or_not : forall E, IsE: is_e E -> E = library:list:nil \/ (E = library:list:nil -> false) on IsE. [Show Proof] Extensible_Theorem is_e_cons_or_not : forall E, IsE: is_e E -> (exists E1 E2, E = cons E1 E2) \/ ((exists E1 E2, E = cons E1 E2) -> false) on IsE. [Show Proof] Extensible_Theorem is_e_null_or_not : forall E, IsE: is_e E -> (exists E', E = null E') \/ ((exists E', E = null E') -> false) on IsE. [Show Proof] Extensible_Theorem is_e_head_or_not : forall E, IsE: is_e E -> (exists E', E = head E') \/ ((exists E', E = head E') -> false) on IsE. [Show Proof] Extensible_Theorem is_e_tail_or_not : forall E, IsE: is_e E -> (exists E', E = tail E') \/ ((exists E', E = tail E') -> false) on IsE. [Show Proof] Prove library:host:is_e_eq_or_not. [Show Proof] Prove library:host:vars_unique. [Show Proof] Prove_Constraint library:host:proj_e_vars_exist. [Show Proof] Prove_Constraint library:host:proj_e_vars. [Show Proof] Prove library:host:vars_is. [Show Proof] Prove library:host:vars_exist. [Show Proof] Prove library:host:value_empty_typable. [Show Proof] Prove library:host:eval_e_is. [Show Proof] Prove library:host:type_preservation_e. [Show Proof] Prove library:host:var_types_maintained. [Show Proof] Prove library:host:type_preservation_s. [Show Proof] Prove_Constraint library:host:proj_eval_e. [Show Proof] Prove library:host:eval_e_unique. [Show Proof] Prove_Constraint library:host:proj_s_eval. [Show Proof] Add_Ext_Size library:host:eval_s. Add_Proj_Rel library:host:eval_s. Prove_Ext_Ind library:host:eval_s. [Show Proof] Prove_Constraint library:host:proj_s_eval_results. [Show Proof] Prove_Constraint library:host:proj_s_eval_results_back. [Show Proof] Prove library:host:eval_e_value. [Show Proof] Prove library:host:eval_s_value. [Show Proof] Prove library:host:vars_eval_same_result. [Show Proof]