(only non hidden objects are presented)
| DISP | mono_df | Mono{ < i:level > }( < b:b-var > , < x:x-var > . < B:B:* > on < T:T:* > ) == Mono{ < i > }( < b > , < x > . < B > on < T > ) |
| ABS | mono | Mono{i}(b,x.B[b; x] on T) ==
|
| THM | mono_wf | |
| DISP | parec_df | parec( < A:A-var > , < x:x-var > . < B:B:* > @ < a:a:* > ) == parec( < A > , < x > . < B > @ < a > ) |
| ABS | parec | parec(A,x.B[A; x] @ a) == !null_abstraction |
| DISP | parec_ind_df | parec_ind( < r:r:* > ; < h:var > , < z:var > . < t:t:* > ) == parec_ind( < r > ; < h > , < z > . < t > ) |
| ABS | parec_ind | parec_ind(r;h,z.t[h; z]) == !null_abstraction |
| RULE | parecEquality | H |
| THM | parec_wf | |
| RULE | parecMemberEquality | H |
| ML | parecEqTypeCD_tac | let ParecEqTypeCD p = let T, (), () = dest_equal (concl p) in (Refine `parecMemberEquality` (infer_level_exp_arg p T . mk_new_var_args [[get_optional_var_arg `v1` p; mkv `z`]] p ) THENL [Id;WFPrettyUp] ) p ;; let ParecMemTypeCD = UnfoldTop `member` 0 THEN ParecEqTypeCD THENL [FoldTop `member` 0;Id] ;; let AbParecMemTypeCD p = let T, () = dest_member (concl p) in let parecid =opid_of_term T in (Unfold parecid 0 THEN ParecMemTypeCD THEN (Fold parecid 0) THEN Reduce 0 ) p ;; |
| RULE | parecUnroll | H, r:parec(b,x.B @ t), J |
| ML | parecTypeHD_tac | let ParecTypeHD i p = let i' = get_pos_hyp_num i p in let v, T = dest_hyp i' p in if not is_term `parec` T then failwith `ParecTypeHD : not parec type` else Refine `parecUnroll` (mk_int_arg i' . mk_new_var_args [[get_optional_var_arg `v1` p; v]; [get_optional_var_arg `v2` p; mkv `z`]; [] ] p ) p ;; let AbParecTypeHD i p = let i' = get_pos_hyp_num i p in let v, T = dest_hyp i' p in let parecid = opid_of_term T in (Unfold parecid i' THEN ParecTypeHD i' THEN Fold parecid i' THEN Reduce (-2) THEN Fold parecid (-2) ) p ;; |
| RULE | parecMemberFormation | H |
| RULE | parecElimination | H, t:T, J, r:parec(b,x.B @ t), J1
|
| ML | parecInd_tac | let ParecInd i j p = let i' = get_pos_hyp_num i p in let j' = get_pos_hyp_num j p in let t, T = dest_hyp i' p in let r, P = dest_hyp j' p in (Refine `parecElimination` (infer_level_exp_arg p T . mk_int_arg i' . mk_int_arg j' . mk_new_var_args [[get_optional_var_arg `v1` p; mkv `Q`]; []; [get_optional_var_arg `v3` p; mkv `v`]; [get_optional_var_arg `v4` p; t]; [get_optional_var_arg `v5` p; r] ] p ) THENL [WFPrettyUp; FoldAtAddr `prop` [2;2] (-4) THEN FoldTop `all` (-3) THEN FoldAtAddr `all` [2] (-3)] ) p ;; let AbParecInd i j p = let i' = get_pos_hyp_num i p in let j' = get_pos_hyp_num j p in let r, P = dest_hyp j' p in let parecid = opid_of_term P in (Unfold parecid j' THEN ParecInd i' j' THEN Fold parecid j' THENL [ Fold parecid 0 ; Fold parecid (-1) THEN Fold parecid (-3) THEN Fold parecid (-4)] ) p ;; |
| RULE | parec_indEquality | H |